From 6c170b6b427f0882da35957e73f385d318970a06 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 25 十月 2024 17:59:19 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue | 129 ++++++++++++++++++++++++++++++++-----------
1 files changed, 96 insertions(+), 33 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
index 3fb919b..a77bb26 100644
--- a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
@@ -19,7 +19,7 @@
</el-aside>
<el-main>
- <basic-container>
+ <basic-container v-loading="treeLoading">
<h3 style="margin: 0 0 10px 0">UI鏉冮檺閰嶇疆</h3>
<div>
<el-button icon="el-icon-place" plain size="small" type="primary" @click="saveHandler">鎺堟潈</el-button>
@@ -49,7 +49,7 @@
</el-select>
</div>
<div style="height: calc(100vh - 232px);margin-top: 10px;">
- <avue-tree ref="uiTree" :data="uiTreeData" :option="uiTreeOption">
+ <avue-tree ref="uiTree" :data="uiTreeData" :node-key="oid" :option="uiTreeOption">
<span slot-scope="{ node, data }" class="el-tree-node__label">
<span style="font-size: 15px">
<i :class="data.icon"></i>
@@ -65,7 +65,7 @@
</template>
<script>
-import {gridRoles} from "@/api/system/role/api";
+import {gridRoles, getRightListByRoleId} from "@/api/system/role/api";
import {getUIAuthor, authorizedUI} from "@/api/authority/ui/uiAuthor";
import {getBizTree, gridUIContextData} from "@/api/UI/uiDefine";
@@ -73,6 +73,7 @@
name: "index",
data() {
return {
+ treeLoading: false,
type: '',//涓氬姟绫诲瀷
context: '',//UI涓婁笅鏂嘽ode
treeOption: {
@@ -106,7 +107,8 @@
},
created() {
this.getTreeList();
- this.getTypeList()
+ // this.getUITree();
+ this.getTypeList();
},
methods: {
getTreeList() {
@@ -118,46 +120,72 @@
loading.close();
})
},
+
// 瑙掕壊鐐瑰嚮
nodeClick(row) {
this.nodeRow = row;
this.getUITree();
+ // const params = {
+ // roleId: row.oid
+ // }
+ // getRightListByRoleId(params).then(res => {
+ // const data = res.data.data.map(item => item.funcId);
+ // console.log(data);
+ // this.$refs.uiTree.setCheckedKeys(data);
+ // })
},
+
getUITree() {
- if (this.nodeRow && this.nodeRow.oid) {
- const loading = this.$loading({});
- const params = {
- 'conditionMap[roleId]': this.nodeRow.oid,
- 'conditionMap[type]': this.type,
- 'conditionMap[context]': this.context,
- 'conditionMap[showCheckbox]': true
- }
- this.defaultExpandKeys = ['root'];
- getUIAuthor(params).then(res => {
- this.processChildren(res.data.data[0]); // 澶勭悊姣忎釜鑺傜偣
- this.uiTreeOption.defaultExpandedKeys = this.defaultExpandKeys;
- this.uiTreeData = [{
- attributes: {},
- checked: false,
- expanded: true,
- data: "root",
- level: 0,
- icon: 'el-icon-s-home',
- oid: res.data.data[0].oid,
- label: res.data.data[0].text,
- children: res.data.data[0].children
- }];
- loading.close();
- }).catch(error => {
- loading.close();
- })
+ this.treeLoading = true;
+ const params = {
+ 'conditionMap[roleId]': this.nodeRow.oid,
+ 'conditionMap[type]': this.type,
+ 'conditionMap[context]': this.context,
+ 'conditionMap[showCheckbox]': true
}
+ this.defaultExpandKeys = ['root'];
+ getUIAuthor(params).then(res => {
+ this.processChildren(res.data.data[0]); // 澶勭悊姣忎釜鑺傜偣
+ this.uiTreeOption.defaultExpandedKeys = this.defaultExpandKeys;
+ this.uiTreeData = [{
+ attributes: {},
+ checked: false,
+ expanded: true,
+ data: "root",
+ level: 0,
+ icon: 'el-icon-s-home',
+ oid: res.data.data[0].oid,
+ label: res.data.data[0].text,
+ children: res.data.data[0].children
+ }];
+ const checkedData = this.findCheckedOids(res.data.data[0]);
+ this.$refs.uiTree.setCheckedKeys(checkedData);
+
+ this.treeLoading = false;
+ }).catch(error => {
+ this.treeLoading = false;
+ })
},
+
+ // 鏌ユ壘宸查�夋嫨鑺傜偣
+ findCheckedOids(obj, result = []) {
+ if (obj.checked === true) {
+ result.push(obj.oid);
+ }
+ // 濡傛灉鏈� children锛屽垯缁х画閬嶅巻
+ if (obj.children && obj.children.length > 0) {
+ obj.children.forEach(child => {
+ this.findCheckedOids(child, result);
+ });
+ }
+ return result;
+ },
+
//澶勭悊鏍�
processChildren(item) {
if (item.children && item.children.length > 0) {
item.children = item.children.map(child => {
- if (child.level < 2) {
+ if (child.level < 3) {
// 榛樿鏍戣妭鐐瑰睍寮�涓ゅ眰鏁堟灉
this.defaultExpandKeys.push(child.oid)
}
@@ -182,11 +210,13 @@
});
}
},
+
getTypeList() {
getBizTree().then(res => {
this.typeData = res.data.obj.children;
})
},
+
typeChange(data) {
this.contextData = [];
this.type = data;
@@ -202,21 +232,53 @@
}
this.getUITree();
},
+
contextChange(data) {
this.context = data;
this.getUITree();
},
+
saveHandler() {
const selectTreeList = this.$refs.uiTree.getCheckedNodes();
+ const selectParentList = this.$refs.uiTree.getHalfCheckedNodes();
if (selectTreeList.length == 0) {
this.$message.error("璇烽�夋嫨鍔熻兘妯″潡");
return;
}
+ const selectTreeData = selectTreeList.map(item => {
+ return {
+ checked: true,
+ expanded: true,
+ data:item.data,
+ parentId:item.parentId,
+ level: item.level,
+ leaf:item.leaf,
+ oid: item.oid,
+ text: item.text
+ }
+ })
+
+ const parentData = selectParentList.map(item => {
+ return {
+ checked: false,
+ expanded: true,
+ data:item.data,
+ parentId:item.parentId,
+ level: item.level,
+ leaf:item.leaf,
+ oid: item.oid,
+ text: item.text
+ }
+ })
+ // 鍦ㄥ崐閫夌姸鎬佷腑杩囨护鎺夐《绾ц妭鐐� oid 涓� root
+ const filterSelectTreeData = parentData.filter(item => item.oid !== 'root');
+
+ const data = [...selectTreeData,...filterSelectTreeData];
const formData = {
roleId: this.nodeRow.oid,
type: this.type,
context: this.context,
- selectTreeList: selectTreeList
+ selectTreeList: data
}
authorizedUI(formData).then(res => {
if (res.data.success) {
@@ -225,6 +287,7 @@
}
});
},
+
clearValue() {
this.$refs.uiTree.setCheckedNodes([]);
}
--
Gitblit v1.9.3