From 1c3919f11f5eb5b3c2ba74d95ca6fcdf11ce9bf9 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 25 一月 2024 10:17:35 +0800
Subject: [PATCH] Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs
---
Source/UBCS-WEB/src/views/integration/systemInfo.vue | 227 ++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 170 insertions(+), 57 deletions(-)
diff --git a/Source/UBCS-WEB/src/views/integration/systemInfo.vue b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
index d816c87..0b13756 100644
--- a/Source/UBCS-WEB/src/views/integration/systemInfo.vue
+++ b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
@@ -1,13 +1,16 @@
<template>
<basic-container>
- <avue-crud ref="crud" :data="data" :option="option" :page.sync="page" :search.sync="search" :table-loading="loading"
+ <avue-crud ref="crud" :data="data" :option="option" :page.sync="page" :permission="permissionList"
+ :search.sync="search"
+ :table-loading="loading"
@on-load="getDataList" @row-save="handleSave" @row-del="handleDelete" @row-update="handleEdit"
@refresh-change="handleRefresh" @size-change="handleSizePage" @current-change="handleCurrentPage"
@selection-change="selectionChange" @row-click="handleRowClick">
<template slot="menuLeft">
<!-- <el-button icon="el-icon-search" size="small" type="primary" @click="handleStatus">鏌� 璇�
</el-button> -->
- <el-button icon="el-icon-delete" size="small" type="danger" @click="handleDeleteByIds">鍒� 闄�
+ <el-button v-if="permissionList.delBtn" icon="el-icon-delete" size="small" type="danger"
+ @click="handleDeleteByIds">鍒� 闄�
</el-button>
</template>
<template slot="search" slot-scope="{row,size}">
@@ -19,10 +22,11 @@
:size="size" clearable style="width:300px;margin-left: 10px;"
@clear="handleClear" @keyup.enter.native="handleEnter"></el-input>
</template>
- <template #menu="{row,index,size}">
+ <template v-if="permissionList.empower" #menu="{row,index,size}">
<el-button icon="el-icon-menu" size="small" type="text" @click="classifyHandler(row)">鍒嗙被鎺堟潈</el-button>
-
</template>
+
+
</avue-crud>
<el-dialog :visible.sync="dialogVisible" append-to-body class="avue-dialog avue-dialog--top" title="鍒嗙被鎺堟潈"
top="-50px">
@@ -37,9 +41,10 @@
</avue-tree>
</el-col>
</el-row>
+
<div slot="footer" class="dialog-footer" style="height: 50px;line-height: 50px">
<el-button icon="el-icon-plus" size="small" type="primary" @click="empower">鎺� 鏉�</el-button>
- <el-button icon="el-icon-close" size="small" type="danger">閲� 缃�</el-button>
+ <el-button icon="el-icon-close" size="small" type="danger" @click="resetting">閲� 缃�</el-button>
</div>
</el-dialog>
</basic-container>
@@ -53,12 +58,14 @@
sysInfoTree,
batchAddSave
} from '@/api/integration/sysInfo.js'
+import {mapGetters} from "vuex";
export default {
data() {
return {
checkAll: {},
ParentList: [],
+ ParentRemoveList: [],
//閬垮厤缂撳瓨
reload: Math.random(),
TreeLoading: false,
@@ -88,8 +95,25 @@
search: {},
delIds: [],
data: [],
- option: {
+
+ }
+ },
+ created() {
+ },
+ computed: {
+ ...mapGetters(["permission"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(this.permission.systemInfo.systemInfo_add, false),
+ editBtn: this.vaildData(this.permission.systemInfo.systemInfo_edit, false),
+ delBtn: this.vaildData(this.permission.systemInfo.systemInfo_delete, false),
+ empower: this.vaildData(this.permission.systemInfo.systemInfo_empower, false),
+ }
+ },
+ option() {
+ return {
height: "auto",
+ calcHeight: 20,
tip: false,
border: true,
align: 'center',
@@ -132,71 +156,157 @@
type: 'textarea'
}
]
- },
+ }
}
},
-
methods: {
+ //閲嶇疆
+ resetting() {
+ this.$refs.tree.setCheckedKeys([])
+ // console.log(this.ParentList)
+ },
empower() {
batchAddSave(this.checkAll.oid, this.checkAll.id, this.ParentList).then(res => {
- console.log(res)
+ // console.log(res.data)
+ if (res.data.code === 200) {
+ this.$message.success(res.data.msg)
+ this.dialogVisible = false;
+ }
})
},
//鍒嗙被鎺堟潈澶氶�夊洖璋�
checkChange(row, checked) {
if (checked) {
- if (!row.parentId && row.children) {
- const parentRecord = {
- oid: row.oid,
- classifyId: row.attributes.classifyId,
- classifyOid: row.attributes.classifyOid,
- classParentOid: row.parentId,
- };
- this.ParentList.push(parentRecord);
- // 濡傛灉row鐨刢hildren涓嶄负绌猴紝缁х画寰幆children涓殑姣忎釜瀵硅薄
- if (row.children && row.children.length > 0) {
- for (let child of row.children) {
- const childRecord = {
- oid: child.oid,
- classifyId: child.attributes.classifyId,
- classifyOid: child.attributes.classifyOid,
- classParentOid: child.parentId,
- };
- this.ParentList.push(childRecord);
- // 濡傛灉瀛愬璞$殑children涓嶄负绌猴紝缁х画寰幆鑾峰彇鏁版嵁
- if (child.children && child.children.length > 0) {
- for (let subChild of child.children) {
- const subRecord = {
- oid: subChild.oid,
- classifyId: subChild.attributes.classifyId,
- classifyOid: subChild.attributes.classifyOid,
- classParentOid: subChild.parentId,
- };
- this.ParentList.push(subRecord);
- }
- }
- }
- }
- console.log(this.ParentList);
- }
- }else {
- this.ParentList = this.ParentList.filter(res => res.classifyId !== row.classifyId);
- console.log(this.ParentList);
+ this.addAllChildren(row.children);
+ this.addToParentList(row);
+ // 鍕鹃�夎鏃跺皢鎵�鏈夎妭鐐规坊鍔犲埌ParentList涓�
+ } else {
+ this.removeAllChildren(row.children);
+ this.removeFromParentList(row);
+ // 鍙栨秷鍕鹃�夊皢鎵�鏈夎妭鐐规坊鍔犱粠ParentList涓Щ闄�
}
+ // console.table(this.ParentList);
+ },
+ //瀛愯妭鐐规坊鍔�
+ addAllChildren(children) {
+ for (let child of children) {
+ this.addToParentList(child);
+ // 灏嗗瓙鑺傜偣娣诲姞鍒� ParentList 涓�
+ if (child.children && child.children.length > 0) {
+ this.addAllChildren(child.children);
+ }
+ }
+ },
+ //瀛愯妭鐐圭Щ闄�
+ removeAllChildren(children) {
+ for (let child of children) {
+ this.removeFromParentList(child);
+ // 灏嗗瓙鑺傜偣浠� ParentList 涓Щ闄�
+ if (child.children && child.children.length > 0) {
+ this.removeAllChildren(child.children);
+ }
+ }
+ },
+ //褰撳墠鐖惰妭鐐规坊鍔�
+ addToParentList(item) {
+ const classifyOid = item.attributes.classifyOid;
+ if (!this.isClassifyOidExists(classifyOid)) {
+ const record = {
+ oid: item.oid,
+ classifyId: item.attributes.classifyId,
+ classifyOid: classifyOid,
+ };
+ this.ParentList.push(record);
+ }
+ },
+ //褰撳墠鐖惰妭鐐圭Щ闄�
+ removeFromParentList(item) {
+ const classifyOid = item.attributes.classifyOid;
+ if (this.isClassifyOidExists(classifyOid)) {
+ const index = this.findIndexByClassifyOid(classifyOid);
+ if (index !== -1) {
+ this.ParentList.splice(index, 1);
+ }
+ }
+ },
+ //鍒ら噸-ParentList
+ isClassifyOidExists(classifyOid) {
+ return this.ParentList.some(item => item.classifyOid === classifyOid);
+ },
+ //鏌ユ壘index浣嶇疆
+ findIndexByClassifyOid(classifyOid) {
+ return this.ParentList.findIndex(item => item.classifyOid === classifyOid);
},
//鍒嗙被鎺堟潈
classifyHandler(row) {
this.loading = true;
this.checkAll = row
sysInfoTree({systemOid: row.oid, systemId: row.id}).then(res => {
- this.TreeData = res.data;
- this.ModifyProperties(this.TreeData, 'text', 'label');
- // 鏍规嵁 this.TreeData 鐨勯暱搴﹁绠楀欢杩熸椂闂�
+ let List = [];
+ let value = 0;
+ let NumberList = [];
+
+ function traverse(obj, parent) {
+ //閲嶆柊鏋勫缓涓�娆¢�変腑褰撳墠row鐨勬暟鎹�
+ const record = {
+ label: obj.text,
+ oid: obj.oid,
+ attributes: {
+ classifyId: obj.attributes.classifyId,
+ classifyOid: obj.attributes.classifyOid,
+ selected: obj.attributes.selected
+ },
+ classParentOid: obj.parentId,
+ value: value,
+ children: []
+ };
+ //褰撳墠宸查�夋嫨鏁版嵁鍥炲~
+ if (record.attributes.selected == 'true') {
+ NumberList.push(record.value);
+ }
+ if (parent) {
+ const stingChild = parent.children.find(child => child.label === record.label);
+ if (stingChild) {
+ record.value = stingChild.value; // 浣跨敤宸插瓨鍦ㄧ殑瀛愯妭鐐圭殑value鍊�
+ } else {
+ parent.children.push(record);
+ value++;
+ }
+ } else {
+ const stingRecord = List.find(item => item.label === record.label);
+ if (stingRecord) {
+ record.value = stingRecord.value; // 浣跨敤宸插瓨鍦ㄧ殑椤跺眰鑺傜偣鐨剉alue鍊�
+ } else {
+ List.push(record);
+ value++;
+ }
+ }
+ if (obj.children && obj.children.length > 0) {
+ for (let child of obj.children) {
+ traverse(child, record);
+ }
+ }
+ }
+
+ for (let item of res.data) {
+ traverse(item, null);
+ }
+ // console.log('list', List);
+ this.TreeData = List;
+ // this.ModifyProperties(this.TreeData, 'text', 'label');
+ // 鏍规嵁this.TreeData鐨勯暱搴﹁绠楀欢杩熸椂闂�
const delayTime = this.TreeData.length * 1;
+ console.log(delayTime)
setTimeout(() => {
this.loading = false;
- this.reload = Math.random()
+ this.reload = Math.random();
this.dialogVisible = true;
+
+ this.$nextTick(() => {
+ if (this.$refs.tree) {
+ this.$refs.tree.setCheckedKeys(NumberList);
+ }
+ });
}, delayTime);
});
},
@@ -214,7 +324,6 @@
},
async getDataList() {
this.loading = true;
- console.log(this.search);
const {pageSize, currentPage} = this.page;
const conditions = {};
if (Object.keys(this.search).length > 0) {
@@ -226,7 +335,7 @@
}
const response = await getSysInfoList(pageSize, currentPage, conditions);
if (response.status === 200) {
- console.log(response);
+ // console.log(response);
this.loading = false;
const data = response.data.data;
this.data = data.records;
@@ -245,6 +354,7 @@
message: '鏂板鏁版嵁鎴愬姛锛�'
})
done(row)
+ await this.getDataList();
// this.$refs.crud.refreshTable()
// this.getDataList()
}
@@ -265,6 +375,7 @@
})
done(row)
}
+ await this.getDataList();
} catch {
loading()
}
@@ -295,12 +406,12 @@
}).then(async () => {
const response = await sysInfoDel(param)
if (response.status === 200) {
- console.log(response)
+ // console.log(response)
this.$message({
type: 'success',
message: '鍒犻櫎鎴愬姛!'
});
- this.getDataList()
+ await this.getDataList()
}
})
},
@@ -351,7 +462,9 @@
}
</script>
<style lang="scss" scoped>
-::v-deep(.avue-crud .el-select) {
- width: 100px !important;
-}
+ ::v-deep{
+ .avue-crud .el-select {
+ width: 100px !important;
+ }
+ }
</style>
--
Gitblit v1.9.3