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 @@
-
+
新增
{{ name }}
-
+ e.stopPropagation()">
编辑
@@ -65,7 +65,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
+