From da5b9bd790876c66b3b0a376fce3fde1ffaf2199 Mon Sep 17 00:00:00 2001 From: easy <1358086367@qq.com> Date: Tue, 14 Feb 2023 17:52:59 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E9=83=A8=E9=97=A8=E7=AE=A1=E7=90=86o?= =?UTF-8?q?ver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/department.ts | 15 +- .../components/AddDeviceOrProductDialog.vue | 12 +- .../components/EditDepartmentDialog.vue | 4 +- .../components/EditPermissionDialog.vue | 1 - .../system/Department/components/LeftTree.vue | 36 ++- .../Department/components/NextDialog.vue | 33 +++ src/views/system/Department/device/index.vue | 85 +++++-- src/views/system/Department/index.vue | 18 +- src/views/system/Department/product/index.vue | 78 +++--- .../user/components/AddBindUserDialog.vue | 165 +++++++++++++ src/views/system/Department/user/index.vue | 223 +++++++++++++++++- 11 files changed, 596 insertions(+), 74 deletions(-) create mode 100644 src/views/system/Department/components/NextDialog.vue create mode 100644 src/views/system/Department/user/components/AddBindUserDialog.vue diff --git a/src/api/system/department.ts b/src/api/system/department.ts index e61b4de0..565db91f 100644 --- a/src/api/system/department.ts +++ b/src/api/system/department.ts @@ -10,12 +10,14 @@ export const updateDepartment_api = (data: object) => server.patch(`/organizatio export const delDepartment_api = (id: string) => server.remove(`/organization/${id}`); +// 获取所属产品列表 +export const getDeviceProduct_api = (data: object) => server.get(`/device/product/_query/no-paging`, data); // 获取产品列表 export const getDeviceOrProductList_api = (data: object) => server.post(`/device-product/_query`, data); // 获取设备列表 export const getDeviceList_api = (data: object) => server.post(`/device/instance/_query`, data); // 根据产品的id获取产品的权限 -export const getPermission_api = (type:'device' | 'product',ids: object, id: string) => server.post(`/assets/bindings/${type}/org/${id}/_query`, ids); +export const getPermission_api = (type: 'device' | 'product', ids: object, id: string) => server.post(`/assets/bindings/${type}/org/${id}/_query`, ids); // 获取产品的权限字典 export const getPermissionDict_api = () => server.get(`/assets/bindings/product/permissions`); @@ -24,4 +26,13 @@ export const bindDeviceOrProductList_api = (type: 'device' | 'product', data: ob // 批量解绑 export const unBindDeviceOrProduct_api = (type: 'device' | 'product', data: object) => server.post(`/assets/unbind/${type}`, data); // 批量更新权限 -export const updatePermission_api = (type: 'device' | 'product', parentId: string, data: object) => server.put(`/assets/permission/${type}/org/${parentId}/_batch`, data); \ No newline at end of file +export const updatePermission_api = (type: 'device' | 'product', parentId: string, data: object) => server.put(`/assets/permission/${type}/org/${parentId}/_batch`, data); + + +// 用户相关 +// 获取绑定用户列表 +export const getBindUserList_api = (data: object) => server.post(`/user/_query`, data); +// 绑定用户 +export const bindUser_api = (parentId:string,data: object) => server.post(`/organization/${parentId}/users/_bind`, data); +// 解绑用户 +export const unBindUser_api = (parentId:string,data: object) => server.post(`/organization/${parentId}/users/_unbind`, data); diff --git a/src/views/system/Department/components/AddDeviceOrProductDialog.vue b/src/views/system/Department/components/AddDeviceOrProductDialog.vue index 512c387c..8f60be9a 100644 --- a/src/views/system/Department/components/AddDeviceOrProductDialog.vue +++ b/src/views/system/Department/components/AddDeviceOrProductDialog.vue @@ -28,7 +28,7 @@ - + { @@ -334,6 +334,14 @@ const table: any = { data.forEach((item) => { item.permissionList = permissionObj[item.id]; item.selectPermissions = ['read']; + + // 产品的状态进行转换处理 + if(props.assetType === 'product') { + item.state = { + value: item.state === 1 ? 'online': item.state === 0 ? 'offline': '', + text: item.state === 1 ? '正常': item.state === 0 ? '禁用': '' + } + } }); resolve({ diff --git a/src/views/system/Department/components/EditDepartmentDialog.vue b/src/views/system/Department/components/EditDepartmentDialog.vue index de11577a..0f8483af 100644 --- a/src/views/system/Department/components/EditDepartmentDialog.vue +++ b/src/views/system/Department/components/EditDepartmentDialog.vue @@ -117,8 +117,8 @@ const form = reactive({ form.loading = true; const api = form.data.id ? updateDepartment_api : addDepartment_api; api(form.data) - .then(() => { - emits('refresh'); + .then((resp:any) => { + emits('refresh',resp.result.id); dialog.changeVisible(false); }) .finally(() => (form.loading = false)); diff --git a/src/views/system/Department/components/EditPermissionDialog.vue b/src/views/system/Department/components/EditPermissionDialog.vue index 7e91284c..3a32b6a2 100644 --- a/src/views/system/Department/components/EditPermissionDialog.vue +++ b/src/views/system/Department/components/EditPermissionDialog.vue @@ -46,7 +46,6 @@ const dialog = { }, // 控制弹窗的打开与关闭 changeVisible: (ids: string[], permissionList: string[]) => { - console.log(ids, permissionList); form.permission = [...permissionList]; form.assetIdList = ids; options.value = setOptions(permissionList); diff --git a/src/views/system/Department/components/LeftTree.vue b/src/views/system/Department/components/LeftTree.vue index 8493f81c..6b59a391 100644 --- a/src/views/system/Department/components/LeftTree.vue +++ b/src/views/system/Department/components/LeftTree.vue @@ -10,7 +10,7 @@ - + 新增 @@ -84,19 +84,15 @@ import { } from '@ant-design/icons-vue'; import { message } from 'ant-design-vue'; +const save = useRoute().query.save; const emits = defineEmits(['change']); -const searchValue = ref('');// 搜索内容 +const searchValue = ref(''); // 搜索内容 const loading = ref(false); // 数据加载状态 const sourceTree = ref([]); // 源数据 const treeMap = new Map(); // 数据的map版本 const treeData = ref([]); // 展示的数据 const selectedKeys = ref([]); // 当前选中的项 -getTree(); -watch(selectedKeys, (n) => { - emits('change', n[0]); -}); - function getTree() { loading.value = true; const params = { @@ -119,7 +115,7 @@ function getTree() { .finally(() => { loading.value = false; }); -}; +} const search = debounce(() => { const key = searchValue.value; const treeArray = new Map(); @@ -167,14 +163,30 @@ function delDepartment(id: string) { getTree(); }); } - +function refresh(id: string) { + // @ts-ignore + window?.onSaveSuccess && window.onSaveSuccess('department', id); + window.close(); + getTree(); +} // 弹窗 const editDialogRef = ref(); // 新增弹窗实例 const openDialog = (row: any = {}) => { editDialogRef.value.openDialog(true, row); }; - +init(); +function init() { + getTree(); + watch(selectedKeys, (n) => { + emits('change', n[0]); + }); + if (save) { + nextTick(() => { + openDialog(); + }); + } +} diff --git a/src/views/system/Department/device/index.vue b/src/views/system/Department/device/index.vue index 021b0fa4..b4cdf49a 100644 --- a/src/views/system/Department/device/index.vue +++ b/src/views/system/Department/device/index.vue @@ -125,6 +125,7 @@
(); const query = { columns: [ @@ -186,6 +190,41 @@ const query = { type: 'string', }, }, + { + title: '所属产品', + dataIndex: 'productId$product-info', + key: 'productId$product-info', + ellipsis: true, + fixed: 'left', + search: { + type: 'select', + options: () => + new Promise((resolve) => { + const params = { + paging: false, + 'sorts[0].name': 'createTime', + 'sorts[0].order': 'desc', + }; + getDeviceProduct_api(params).then((resp: any) => { + const result = resp.result.map((item: any) => ({ + label: item.name, + value: item.id, + })); + resolve(result); + }); + }), + }, + }, + { + title: '注册时间', + dataIndex: 'registryTime', + key: 'registryTime', + ellipsis: true, + fixed: 'left', + search: { + type: 'date', + }, + }, { title: '状态', dataIndex: 'state', @@ -279,26 +318,30 @@ const table = { const { pageIndex, pageSize, total, data } = resp.result as resultType; const ids = data.map((item) => item.id); - getPermission_api('device',ids, parentId).then((perResp: any) => { - const permissionObj = {}; - perResp.result.forEach((item: any) => { - permissionObj[item.assetId] = item.grantedPermissions; - }); - data.forEach( - (item) => (item.permission = permissionObj[item.id]), - ); + getPermission_api('device', ids, parentId).then( + (perResp: any) => { + const permissionObj = {}; + perResp.result.forEach((item: any) => { + permissionObj[item.assetId] = + item.grantedPermissions; + }); + data.forEach( + (item) => + (item.permission = permissionObj[item.id]), + ); - resolve({ - code: 200, - result: { - data: data, - pageIndex, - pageSize, - total, - }, - status: 200, - }); - }); + resolve({ + code: 200, + result: { + data: data, + pageIndex, + pageSize, + total, + }, + status: 200, + }); + }, + ); }); }), // 整理参数并获取数据 @@ -393,6 +436,10 @@ const addDialogRef = ref(); const editDialogRef = ref(); table.init(); +nextTick(() => { + props.bindBool && table.clickAdd(); + emits('update:bindBool', false); +}); diff --git a/src/views/system/Department/user/index.vue b/src/views/system/Department/user/index.vue index 540ef6e1..c0a51ca9 100644 --- a/src/views/system/Department/user/index.vue +++ b/src/views/system/Department/user/index.vue @@ -1,13 +1,226 @@ - - \ No newline at end of file +