【更新】优化人员、机构、职位、角色的前端代码,解决左侧树点击多次后无法折叠展开的情况

pull/150/head
小诺 2023-08-10 01:36:01 +08:00 committed by 俞宝山
parent 8672389da2
commit abd51015c7
7 changed files with 212 additions and 189 deletions

View File

@ -80,11 +80,12 @@
</a-card>
</a-col>
</a-row>
<Form ref="form" @successful="table.refresh(true)" />
<Form ref="form" @successful="table.refresh()" />
</template>
<script setup name="bizOrg">
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import bizOrgApi from '@/api/biz/bizOrgApi'
import Form from './form.vue'
@ -99,7 +100,8 @@
},
{
title: '排序',
dataIndex: 'sortCode'
dataIndex: 'sortCode',
width: 100
}
]
if (hasPerm(['bizOrgEdit', 'bizOrgDelete'])) {
@ -110,13 +112,13 @@
width: '150px'
})
}
let selectedRowKeys = ref([])
const selectedRowKeys = ref([])
//
const options = {
alert: {
show: false,
clear: () => {
selectedRowKeys = ref([])
selectedRowKeys.value = ref([])
}
},
rowSelection: {
@ -130,9 +132,9 @@
const table = ref(null)
const form = ref()
const searchFormRef = ref()
let searchFormState = reactive({})
const searchFormState = ref({})
//
let defaultExpandedKeys = ref([])
const defaultExpandedKeys = ref([])
const treeData = ref([])
// treeNode title,key,children
const treeFieldNames = { children: 'children', title: 'name', key: 'id' }
@ -141,7 +143,7 @@
// Promise
const loadData = (parameter) => {
loadTreeData()
return bizOrgApi.orgPage(Object.assign(parameter, searchFormState)).then((res) => {
return bizOrgApi.orgPage(Object.assign(parameter, searchFormState.value)).then((res) => {
return res
})
}
@ -158,19 +160,21 @@
cardLoading.value = false
if (res !== null) {
treeData.value = res
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
if (isEmpty(defaultExpandedKeys.value)) {
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
}
}
}
})
})
}
}
})
.finally(() => {
@ -180,9 +184,9 @@
//
const treeSelect = (selectedKeys) => {
if (selectedKeys.length > 0) {
searchFormState.parentId = selectedKeys.toString()
searchFormState.value.parentId = selectedKeys.toString()
} else {
delete searchFormState.parentId
delete searchFormState.value.parentId
}
table.value.refresh(true)
}

View File

@ -51,7 +51,7 @@
<a-space>
<a-button
type="primary"
@click="form.onOpen(undefined, searchFormState.orgId)"
@click="formRef.onOpen(undefined, searchFormState.orgId)"
v-if="hasPerm('bizPositionAdd')"
>
<template #icon><plus-outlined /></template>
@ -69,7 +69,7 @@
{{ $TOOL.dictTypeData('POSITION_CATEGORY', record.category) }}
</template>
<template v-if="column.dataIndex === 'action'">
<a @click="form.onOpen(record)" v-if="hasPerm('bizPositionEdit')"></a>
<a @click="formRef.onOpen(record)" v-if="hasPerm('bizPositionEdit')"></a>
<a-divider type="vertical" v-if="hasPerm(['bizPositionEdit', 'bizPositionDelete'], 'and')" />
<a-popconfirm title="确定删除此岗位?" @confirm="removeOrg(record)">
<a-button type="link" danger size="small" v-if="hasPerm('bizPositionDelete')"></a-button>
@ -80,11 +80,12 @@
</a-card>
</a-col>
</a-row>
<Form ref="form" @successful="table.refresh(true)" />
<Form ref="formRef" @successful="table.refresh(true)" />
</template>
<script setup name="bizPosition">
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import bizPositionApi from '@/api/biz/bizPositionApi'
import bizOrgApi from '@/api/biz/bizOrgApi'
import Form from './form.vue'
@ -129,11 +130,11 @@
const toolConfig = { refresh: true, height: true, columnSetting: true }
// tableDOM
const table = ref(null)
const form = ref()
const formRef = ref()
const searchFormRef = ref()
let searchFormState = reactive({})
const searchFormState = ref({})
//
let defaultExpandedKeys = ref([])
const defaultExpandedKeys = ref([])
const treeData = ref([])
// treeNode title,key,children
const treeFieldNames = { children: 'children', title: 'name', key: 'id' }
@ -141,7 +142,7 @@
// Promise
const loadData = (parameter) => {
return bizPositionApi.positionPage(Object.assign(parameter, searchFormState)).then((res) => {
return bizPositionApi.positionPage(Object.assign(parameter, searchFormState.value)).then((res) => {
return res
})
}
@ -157,19 +158,21 @@
cardLoading.value = false
if (res !== null) {
treeData.value = res
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
if (isEmpty(defaultExpandedKeys.value)) {
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
}
}
}
})
})
}
}
})
.finally(() => {
@ -178,9 +181,9 @@
//
const treeSelect = (selectedKeys) => {
if (selectedKeys.length > 0) {
searchFormState.orgId = selectedKeys.toString()
searchFormState.value.orgId = selectedKeys.toString()
} else {
delete searchFormState.orgId
delete searchFormState.value.orgId
}
table.value.refresh(true)
}

View File

@ -63,7 +63,7 @@
<a-space>
<a-button
type="primary"
@click="form.onOpen(undefined, searchFormState.orgId)"
@click="formRef.onOpen(undefined, searchFormState.orgId)"
v-if="hasPerm('bizUserAdd')"
>
<template #icon><plus-outlined /></template>
@ -98,7 +98,7 @@
<span v-else>{{ $TOOL.dictTypeData('COMMON_STATUS', record.userStatus) }}</span>
</template>
<template v-if="column.dataIndex === 'action'">
<a @click="form.onOpen(record)" v-if="hasPerm('bizUserEdit')">{{ $t('common.editButton') }}</a>
<a @click="formRef.onOpen(record)" v-if="hasPerm('bizUserEdit')">{{ $t('common.editButton') }}</a>
<a-divider type="vertical" v-if="hasPerm(['bizUserEdit', 'bizUserDelete'], 'and')" />
<a-popconfirm :title="$t('user.popconfirmDeleteUser')" @confirm="removeUser(record)">
<a-button type="link" danger size="small" v-if="hasPerm('bizUserDelete')">{{
@ -140,9 +140,9 @@
</a-card>
</a-col>
</a-row>
<Form ref="form" @successful="table.refresh(true)" />
<Form ref="formRef" @successful="table.refresh()" />
<role-selector-plus
ref="RoleSelectorPlus"
ref="RoleSelectorPlusRef"
:org-tree-api="selectorApiFunction.orgTreeApi"
:role-page-api="selectorApiFunction.rolePageApi"
:checked-role-list-api="selectorApiFunction.checkedRoleListApi"
@ -152,12 +152,13 @@
</template>
<script setup name="bizUser">
import { message, Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import tool from '@/utils/tool'
import downloadUtil from '@/utils/downloadUtil'
import bizUserApi from '@/api/biz/bizUserApi'
import bizOrgApi from '@/api/biz/bizOrgApi'
import userCenterApi from '@/api/sys/userCenterApi'
import roleSelectorPlus from '@/components/Selector/roleSelectorPlus.vue'
import RoleSelectorPlus from '@/components/Selector/roleSelectorPlus.vue'
import Form from './form.vue'
const columns = [
@ -213,22 +214,20 @@
const toolConfig = { refresh: true, height: true, columnSetting: true }
const statusData = tool.dictList('COMMON_STATUS')
const searchFormRef = ref()
let defaultExpandedKeys = ref([])
let searchFormState = reactive({})
const defaultExpandedKeys = ref([])
const searchFormState = ref({})
const table = ref(null)
const treeData = ref([])
let selectedRowKeys = ref([])
const selectedRowKeys = ref([])
const treeFieldNames = { children: 'children', title: 'name', key: 'id' }
let form = ref(null)
let RoleSelector = ref()
let RoleSelectorPlus = ref()
const formRef = ref(null)
const RoleSelectorPlusRef = ref()
const selectedRecord = ref({})
const loading = ref(false)
const cardLoading = ref(true)
const ImpExpRef = ref()
// Promise
const loadData = (parameter) => {
return bizUserApi.userPage(Object.assign(parameter, searchFormState)).then((res) => {
return bizUserApi.userPage(Object.assign(parameter, searchFormState.value)).then((res) => {
return res
})
}
@ -244,19 +243,21 @@
cardLoading.value = false
if (res !== null) {
treeData.value = res
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
if (isEmpty(defaultExpandedKeys.value)) {
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
}
}
}
})
})
}
}
})
.finally(() => {
@ -267,7 +268,7 @@
alert: {
show: false,
clear: () => {
selectedRowKeys = ref([])
selectedRowKeys.value = ref([])
}
},
rowSelection: {
@ -279,9 +280,9 @@
//
const treeSelect = (selectedKeys) => {
if (selectedKeys.length > 0) {
searchFormState.orgId = selectedKeys.toString()
searchFormState.value.orgId = selectedKeys.toString()
} else {
delete searchFormState.orgId
delete searchFormState.value.orgId
}
table.value.refresh(true)
}
@ -321,7 +322,7 @@
}
//
const exportBatchUserVerify = () => {
if ((selectedRowKeys.value.length < 1) & !searchFormState.searchKey & !searchFormState.userStatus) {
if ((selectedRowKeys.value.length < 1) & !searchFormState.value.searchKey & !searchFormState.value.userStatus) {
message.warning('请输入查询条件或勾选要导出的信息')
}
if (selectedRowKeys.value.length > 0) {
@ -335,10 +336,10 @@
exportBatchUser(params)
return
}
if (searchFormState.searchKey || searchFormState.userStatus) {
if (searchFormState.value.searchKey || searchFormState.value.userStatus) {
const params = {
searchKey: searchFormState.searchKey,
userStatus: searchFormState.userStatus
searchKey: searchFormState.value.searchKey,
userStatus: searchFormState.value.userStatus
}
exportBatchUser(params)
}
@ -364,7 +365,7 @@
id: record.id
}
bizUserApi.userOwnRole(param).then((data) => {
RoleSelectorPlus.value.showRolePlusModal(data)
RoleSelectorPlusRef.value.showRolePlusModal(data)
})
}
//

View File

@ -18,7 +18,7 @@
<a-row :gutter="24">
<a-col :span="8">
<a-form-item name="searchKey" label="名称关键词">
<a-input v-model:value="searchFormState.searchKey" placeholder="请输入组织名称关键词"></a-input>
<a-input v-model:value="searchFormState.searchKey" placeholder="请输入组织名称关键词" />
</a-form-item>
</a-col>
<a-col :span="8">
@ -47,7 +47,7 @@
>
<template #operator class="table-operator">
<a-space>
<a-button type="primary" @click="form.onOpen(undefined, searchFormState.parentId)">
<a-button type="primary" @click="formRef.onOpen(undefined, searchFormState.parentId)">
<template #icon><plus-outlined /></template>
新增
</a-button>
@ -59,7 +59,7 @@
{{ $TOOL.dictTypeData('ORG_CATEGORY', record.category) }}
</template>
<template v-if="column.dataIndex === 'action'">
<a @click="form.onOpen(record)"></a>
<a @click="formRef.onOpen(record)"></a>
<a-divider type="vertical" />
<a-popconfirm title="删除此组织与下级组织吗?" @confirm="removeOrg(record)">
<a-button type="link" danger size="small">删除</a-button>
@ -70,11 +70,12 @@
</a-card>
</a-col>
</a-row>
<Form ref="form" @successful="table.refresh(true)" />
<Form ref="formRef" @successful="table.refresh()" />
</template>
<script setup name="sysOrg">
import { message, Empty } from 'ant-design-vue'
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import orgApi from '@/api/sys/orgApi'
import Form from './form.vue'
@ -89,7 +90,8 @@
},
{
title: '排序',
dataIndex: 'sortCode'
dataIndex: 'sortCode',
width: 100
},
{
title: '操作',
@ -98,13 +100,13 @@
width: '150px'
}
]
let selectedRowKeys = ref([])
const selectedRowKeys = ref([])
//
const options = {
alert: {
show: false,
clear: () => {
selectedRowKeys = ref([])
selectedRowKeys.value = ref([])
}
},
rowSelection: {
@ -115,11 +117,11 @@
}
// tableDOM
const table = ref(null)
const form = ref()
const formRef = ref()
const searchFormRef = ref()
let searchFormState = reactive({})
const searchFormState = ref({})
//
let defaultExpandedKeys = ref([])
const defaultExpandedKeys = ref([])
const treeData = ref([])
// treeNode title,key,children
const treeFieldNames = { children: 'children', title: 'name', key: 'id' }
@ -128,7 +130,7 @@
// Promise
const loadData = (parameter) => {
loadTreeData()
return orgApi.orgPage(Object.assign(parameter, searchFormState)).then((res) => {
return orgApi.orgPage(Object.assign(parameter, searchFormState.value)).then((res) => {
return res
})
}
@ -143,28 +145,30 @@
cardLoading.value = false
if (res !== null) {
treeData.value = res
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
if (isEmpty(defaultExpandedKeys.value)) {
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
}
}
}
})
})
}
}
})
}
//
const treeSelect = (selectedKeys) => {
if (selectedKeys.length > 0) {
searchFormState.parentId = selectedKeys.toString()
searchFormState.value.parentId = selectedKeys.toString()
} else {
delete searchFormState.parentId
delete searchFormState.value.parentId
}
table.value.refresh(true)
}

View File

@ -76,6 +76,7 @@
<script setup name="sysPosition">
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import positionApi from '@/api/sys/positionApi'
import orgApi from '@/api/sys/orgApi'
import Form from './form.vue'
@ -91,7 +92,8 @@
},
{
title: '排序',
dataIndex: 'sortCode'
dataIndex: 'sortCode',
width: 100
},
{
title: '操作',
@ -100,13 +102,13 @@
width: '150px'
}
]
let selectedRowKeys = ref([])
const selectedRowKeys = ref([])
//
const options = {
alert: {
show: false,
clear: () => {
selectedRowKeys = ref([])
selectedRowKeys.value = ref([])
}
},
rowSelection: {
@ -119,9 +121,9 @@
const table = ref(null)
const form = ref()
const searchFormRef = ref()
let searchFormState = reactive({})
const searchFormState = ref({})
//
let defaultExpandedKeys = ref([])
const defaultExpandedKeys = ref([])
const treeData = ref([])
// treeNode title,key,children
const treeFieldNames = { children: 'children', title: 'name', key: 'id' }
@ -129,7 +131,7 @@
// Promise
const loadData = (parameter) => {
return positionApi.positionPage(Object.assign(parameter, searchFormState)).then((res) => {
return positionApi.positionPage(Object.assign(parameter, searchFormState.value)).then((res) => {
return res
})
}
@ -143,27 +145,29 @@
cardLoading.value = false
if (res !== null) {
treeData.value = res
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
if (isEmpty(defaultExpandedKeys.value)) {
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
}
}
}
})
})
}
}
})
//
const treeSelect = (selectedKeys) => {
if (selectedKeys.length > 0) {
searchFormState.orgId = selectedKeys.toString()
searchFormState.value.orgId = selectedKeys.toString()
} else {
delete searchFormState.orgId
delete searchFormState.value.orgId
}
table.value.refresh(true)
}

View File

@ -49,7 +49,7 @@
>
<template #operator class="table-operator">
<a-space>
<a-button type="primary" @click="form.onOpen(undefined, searchFormState.category, searchFormState.orgId)">
<a-button type="primary" @click="formRef.onOpen(undefined, searchFormState.category, searchFormState.orgId)">
<template #icon><plus-outlined /></template>
新增角色
</a-button>
@ -61,7 +61,7 @@
{{ $TOOL.dictTypeData('ROLE_CATEGORY', record.category) }}
</template>
<template v-if="column.dataIndex === 'action'">
<a @click="form.onOpen(record)"></a>
<a @click="formRef.onOpen(record)"></a>
<a-divider type="vertical" />
<a-popconfirm title="确定删除此角色?" @confirm="removeOrg(record)">
<a-button type="link" danger size="small">删除</a-button>
@ -95,10 +95,10 @@
</a-card>
</a-col>
</a-row>
<grantResourceForm ref="GrantResourceForm" @successful="table.refresh(true)" />
<grantMobileResourceForm ref="GrantMobileResourceForm" @successful="table.refresh(true)" />
<grantPermissionForm ref="GrantPermissionForm" @successful="table.refresh(true)" />
<Form ref="form" @successful="table.refresh(true)" />
<grantResourceForm ref="GrantResourceForm" @successful="table.refresh()" />
<grantMobileResourceForm ref="GrantMobileResourceForm" @successful="table.refresh()" />
<grantPermissionForm ref="GrantPermissionForm" @successful="table.refresh()" />
<Form ref="formRef" @successful="table.refresh()" />
<user-selector-plus
ref="userselectorPlusRef"
:org-tree-api="selectorApiFunction.orgTreeApi"
@ -110,13 +110,14 @@
<script setup name="sysRole">
import { Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import roleApi from '@/api/sys/roleApi'
import orgApi from '@/api/sys/orgApi'
import userCenterApi from '@/api/sys/userCenterApi'
import grantResourceForm from './grantResourceForm.vue'
import grantMobileResourceForm from './grantMobileResourceForm.vue'
import grantPermissionForm from './grantPermissionForm.vue'
import userSelectorPlus from '@/components/Selector/userSelectorPlus.vue'
import GrantResourceForm from './grantResourceForm.vue'
import GrantMobileResourceForm from './grantMobileResourceForm.vue'
import GrantPermissionForm from './grantPermissionForm.vue'
import UserSelectorPlus from '@/components/Selector/userSelectorPlus.vue'
import Form from './form.vue'
const columns = [
@ -132,7 +133,8 @@
},
{
title: '排序',
dataIndex: 'sortCode'
dataIndex: 'sortCode',
width: 100
},
{
title: '操作',
@ -141,13 +143,13 @@
width: '200px'
}
]
let selectedRowKeys = ref([])
const selectedRowKeys = ref([])
//
const options = {
alert: {
show: false,
clear: () => {
selectedRowKeys = ref([])
selectedRowKeys.value = ref([])
}
},
rowSelection: {
@ -158,15 +160,15 @@
}
// tableDOM
const table = ref()
const form = ref()
const formRef = ref()
const GrantResourceForm = ref()
const GrantMobileResourceForm = ref()
const GrantPermissionForm = ref()
const userselectorPlusRef = ref()
const searchFormRef = ref()
let searchFormState = reactive({})
const searchFormState = ref({})
//
let defaultExpandedKeys = ref([])
const defaultExpandedKeys = ref([])
const treeData = ref([])
// treeNode title,key,children
const treeFieldNames = { children: 'children', title: 'name', key: 'id' }
@ -176,7 +178,7 @@
// Promise
const loadData = (parameter) => {
let param = Object.assign(parameter, searchFormState)
let param = Object.assign(parameter, searchFormState.value)
return roleApi.rolePage(param).then((res) => {
return res
})
@ -199,34 +201,36 @@
}
]
treeData.value = globalRoleType.concat(res)
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
if (isEmpty(defaultExpandedKeys.value)) {
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
}
}
}
})
})
}
}
})
//
const treeSelect = (selectedKeys) => {
if (selectedKeys.length > 0) {
if (selectedKeys[0] === 'GLOBAL') {
searchFormState.category = selectedKeys[0]
delete searchFormState.orgId
searchFormState.value.category = selectedKeys[0]
delete searchFormState.value.orgId
} else {
searchFormState.orgId = selectedKeys.toString()
delete searchFormState.category
searchFormState.value.orgId = selectedKeys.toString()
delete searchFormState.value.category
}
} else {
delete searchFormState.category
delete searchFormState.orgId
delete searchFormState.value.category
delete searchFormState.value.orgId
}
table.value.refresh(true)
}

View File

@ -60,7 +60,7 @@
>
<template #operator class="table-operator">
<a-space>
<a-button type="primary" @click="form.onOpen(undefined, searchFormState.orgId)">
<a-button type="primary" @click="formRef.onOpen(undefined, searchFormState.orgId)">
<template #icon><plus-outlined /></template>
<span>{{ $t('common.addButton') }}{{ $t('model.user') }}</span>
</a-button>
@ -90,7 +90,7 @@
<a-switch :loading="loading" :checked="record.userStatus === 'ENABLE'" @change="editStatus(record)" />
</template>
<template v-if="column.dataIndex === 'action'">
<a @click="form.onOpen(record)">{{ $t('common.editButton') }}</a>
<a @click="formRef.onOpen(record)">{{ $t('common.editButton') }}</a>
<a-divider type="vertical" />
<a-popconfirm :title="$t('user.popconfirmDeleteUser')" placement="topRight" @confirm="removeUser(record)">
<a-button type="link" danger size="small">
@ -135,31 +135,32 @@
</a-card>
</a-col>
</a-row>
<Form ref="form" @successful="table.refresh(true)" />
<Form ref="formRef" @successful="table.refresh()" />
<role-selector-plus
ref="RoleSelectorPlus"
ref="RoleSelectorPlusRef"
:org-tree-api="selectorApiFunction.orgTreeApi"
:role-page-api="selectorApiFunction.rolePageApi"
:checked-role-list-api="selectorApiFunction.checkedRoleListApi"
@onBack="roleBack"
/>
<ImpExp ref="ImpExpRef" />
<grantResourceForm ref="grantResourceFormRef" @successful="table.refresh(true)" />
<grantPermissionForm ref="grantPermissionFormRef" @successful="table.refresh(true)" />
<grantResourceForm ref="grantResourceFormRef" @successful="table.refresh()" />
<grantPermissionForm ref="grantPermissionFormRef" @successful="table.refresh()" />
</template>
<script setup name="sysUser">
import { message, Empty } from 'ant-design-vue'
import { isEmpty } from 'lodash-es'
import tool from '@/utils/tool'
import downloadUtil from '@/utils/downloadUtil'
import userApi from '@/api/sys/userApi'
import orgApi from '@/api/sys/orgApi'
import userCenterApi from '@/api/sys/userCenterApi'
import roleSelectorPlus from '@/components/Selector/roleSelectorPlus.vue'
import RoleSelectorPlus from '@/components/Selector/roleSelectorPlus.vue'
import Form from './form.vue'
import ImpExp from './impExp.vue'
import grantResourceForm from './grantResourceForm.vue'
import grantPermissionForm from './grantPermissionForm.vue'
import GrantResourceForm from './grantResourceForm.vue'
import GrantPermissionForm from './grantPermissionForm.vue'
const columns = [
{
@ -211,14 +212,14 @@
]
const statusData = tool.dictList('COMMON_STATUS')
const searchFormRef = ref()
let defaultExpandedKeys = ref([])
let searchFormState = reactive({})
const defaultExpandedKeys = ref([])
const searchFormState = ref({})
const table = ref(null)
const treeData = ref([])
const selectedRowKeys = ref([])
const treeFieldNames = { children: 'children', title: 'name', key: 'id' }
let form = ref(null)
let RoleSelectorPlus = ref()
const formRef = ref(null)
const RoleSelectorPlusRef = ref()
const selectedRecord = ref({})
const loading = ref(false)
const cardLoading = ref(true)
@ -227,7 +228,7 @@
const grantPermissionFormRef = ref()
// Promise
const loadData = (parameter) => {
return userApi.userPage(Object.assign(parameter, searchFormState)).then((res) => {
return userApi.userPage(Object.assign(parameter, searchFormState.value)).then((res) => {
return res
})
}
@ -236,19 +237,21 @@
cardLoading.value = false
if (res !== null) {
treeData.value = res
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
if (isEmpty(defaultExpandedKeys.value)) {
// 2
treeData.value.forEach((item) => {
// 0
if (item.parentId === '0') {
defaultExpandedKeys.value.push(item.id)
// ID
if (item.children) {
item.children.forEach((items) => {
defaultExpandedKeys.value.push(items.id)
})
}
}
}
})
})
}
}
})
//
@ -273,9 +276,9 @@
//
const treeSelect = (selectedKeys) => {
if (selectedKeys.length > 0) {
searchFormState.orgId = selectedKeys.toString()
searchFormState.value.orgId = selectedKeys.toString()
} else {
delete searchFormState.orgId
delete searchFormState.value.orgId
}
table.value.refresh(true)
}
@ -315,7 +318,7 @@
}
//
const exportBatchUserVerify = () => {
if ((selectedRowKeys.value.length < 1) & !searchFormState.searchKey & !searchFormState.userStatus) {
if ((selectedRowKeys.value.length < 1) & !searchFormState.value.searchKey & !searchFormState.value.userStatus) {
message.warning('请输入查询条件或勾选要导出的信息')
}
if (selectedRowKeys.value.length > 0) {
@ -329,10 +332,10 @@
exportBatchUser(params)
return
}
if (searchFormState.searchKey || searchFormState.userStatus) {
if (searchFormState.value.searchKey || searchFormState.value.userStatus) {
const params = {
searchKey: searchFormState.searchKey,
userStatus: searchFormState.userStatus
searchKey: searchFormState.value.searchKey,
userStatus: searchFormState.value.userStatus
}
exportBatchUser(params)
}
@ -358,7 +361,7 @@
id: record.id
}
userApi.userOwnRole(param).then((data) => {
RoleSelectorPlus.value.showRolePlusModal(data)
RoleSelectorPlusRef.value.showRolePlusModal(data)
})
}
//