From 2e61dd380b8a0f94f386684060af91b79e4d45f0 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 09 十月 2024 17:23:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue | 225 ++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 200 insertions(+), 25 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 308c333..a1d02f2 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
@@ -1,33 +1,17 @@
<template>
<el-container>
-
<el-aside>
<basic-container>
- <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
- <div class="headerCon">
- <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓
- </el-button>
- <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼
- </el-button>
- <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delClickHandler">鍒犻櫎
- </el-button>
- <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭
- </el-button>
- <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">瀵煎叆
- </el-button>
- <el-button class="smallBtn" plain size="small" type="primary"
- @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿
- </el-button>
- </div>
+ <div ref="TreeBox" style="height: calc(100vh - 154px);!important;">
<!-- 宸︿晶鏍� -->
- <div style="height: calc(100vh - 280px);">
+ <div style="height: calc(100vh - 195px);">
<avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
- <span slot-scope="{ node, data }" class="el-tree-node__label">
- <span style="font-size: 15px">
- <i class="el-icon-s-promotion"></i>
- {{ (node || {}).label }}
- </span>
- </span>
+ <span slot-scope="{ node, data }" class="el-tree-node__label">
+ <span style="font-size: 15px">
+ <i class="el-icon-user-solid"></i>
+ {{ (node || {}).label }}
+ </span>
+ </span>
</avue-tree>
</div>
</div>
@@ -36,6 +20,37 @@
<el-main>
<basic-container>
+ <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>
+ <el-button icon="el-icon-close" plain size="small" type="primary" @click="clearValue" style="margin-right: 40px;">閲嶇疆</el-button>
+ 涓氬姟绫诲瀷锛�<el-select v-model="type" placeholder="璇烽�夋嫨" size="small" :clearable="true" @change="typeChange" style="width: 300px;margin-right: 20px;">
+ <el-option
+ v-for="item in typeData"
+ :key="item.oid"
+ :label="item.text"
+ :value="item.attributes.name">
+ </el-option>
+ </el-select>
+ UI涓婁笅鏂囷細<el-select v-model="context" placeholder="璇烽�夋嫨" size="small" :clearable="true" @change="contextChange" style="width: 350px;">
+ <el-option
+ v-for="item in contextData"
+ :key="item.oid"
+ :label="item.plCode+' '+item.plName"
+ :value="item.plCode">
+ </el-option>
+ </el-select>
+ </div>
+ <div style="height: calc(100vh - 232px);margin-top: 10px;">
+ <avue-tree ref="uiTree" :data="uiTreeData" :option="uiTreeOption">
+ <span slot-scope="{ node, data }" class="el-tree-node__label">
+ <span style="font-size: 15px">
+ <i :class="data.icon"></i>
+ {{ (node || {}).label }}
+ </span>
+ </span>
+ </avue-tree>
+ </div>
</basic-container>
</el-main>
@@ -43,8 +58,168 @@
</template>
<script>
+import {gridRoles} from "@/api/system/role/api";
+import {getUIAuthor,authorizedUI} from "@/api/authority/ui/uiAuthor";
+import {getBizTree, gridUIContextData} from "@/api/UI/uiDefine";
+
export default {
- name: "index"
+ name: "index",
+ data() {
+ return {
+ type:'',//涓氬姟绫诲瀷
+ context:'',//UI涓婁笅鏂嘽ode
+ treeOption: {
+ menu: false,
+ addBtn: false,
+ props: {
+ label: 'name',
+ value: 'oid',
+ children: 'children'
+ }
+ },
+ nodeRow: {},
+ treeData: [],
+ defaultExpandKeys:[],
+ uiTreeOption: {
+ defaultExpandedKeys:this.defaultExpandKeys,
+ multiple: true,
+ menu: false,
+ addBtn: false,
+ filter:false,
+ props: {
+ label: 'label',
+ value: 'oid',
+ children: 'children'
+ }
+ },
+ uiTreeData: [],
+ typeData:[],
+ contextData:[]
+ }
+ },
+ created() {
+ this.getTreeList();
+ this.getTypeList()
+ },
+ methods:{
+ getTreeList() {
+ const loading = this.$loading({});
+ gridRoles().then(res => {
+ this.treeData = res.data.data;
+ loading.close();
+ }).catch(error=>{
+ loading.close();
+ })
+ },
+ // 瑙掕壊鐐瑰嚮
+ nodeClick(row) {
+ this.nodeRow = row;
+ this.getUITree();
+ },
+ 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
+ }
+ 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();
+ })
+ }
+ },
+ //澶勭悊鏍�
+ processChildren(item) {
+ if (item.children && item.children.length > 0) {
+ item.children = item.children.map(child => {
+ if(child.level<4){
+ this.defaultExpandKeys.push(child.oid)
+ }
+ if(child.level==1){
+ child.icon='el-icon-s-promotion';
+ child.label=child.data.label+'锛�'+child.data.name+'锛�'
+ }else if(child.level==2){
+ child.icon='el-icon-s-order';
+ child.label=child.text
+ }else if(child.level==3){
+ child.icon='el-icon-office-building';
+ child.label=child.text
+ }else if(child.level==4){
+ child.icon='el-icon-document';
+ child.label=child.text
+ }else if(child.level==5){
+ child.icon='el-icon-s-tools';
+ child.label=child.text
+ }
+ this.processChildren(child); // 閫掑綊澶勭悊姣忎釜瀛愯妭鐐�
+ return child; // 鍙繑鍥炲瓙鑺傜偣鐨� attributes
+ });
+ }
+ },
+ getTypeList() {
+ getBizTree().then(res => {
+ this.typeData=res.data.obj.children;
+ })
+ },
+ typeChange(data){
+ this.contextData=[];
+ this.type=data;
+ if(data){
+ const params = {
+ 'conditionMap[btmName]': data,
+ }
+ gridUIContextData(1, 500, params).then(res => {
+ this.contextData = res.data.data;
+ })
+ }else {
+ this.contextData = [];
+ }
+ this.getUITree();
+ },
+ contextChange(data){
+ this.context=data;
+ this.getUITree();
+ },
+ saveHandler() {
+ const selectTreeList = this.$refs.uiTree.getCheckedNodes();
+ if (selectTreeList.length == 0) {
+ this.$message.error("璇烽�夋嫨鍔熻兘妯″潡");
+ return;
+ }
+ const formData = {
+ roleId: this.nodeRow.oid,
+ type: this.type,
+ context: this.context,
+ selectTreeList: selectTreeList
+ }
+ authorizedUI(formData).then(res => {
+ if (res.data.success) {
+ this.$message.success("鎺堟潈鎴愬姛");
+ this.cancelDialog();
+ }
+ });
+ },
+ clearValue(){
+ this.$refs.uiTree.setCheckedNodes([])
+ }
+ }
}
</script>
--
Gitblit v1.10.0