From 1d8ffe35090c3e541dc2e0d9a26a4ef1c853d3b1 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 27 九月 2024 18:10:20 +0800
Subject: [PATCH] UI授权

---
 Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/UIDialog.vue               |  143 ++++++++++++++++++++++++++++
 Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js                                  |   19 +++
 Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue                  |  109 ++++++++++++++++-----
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue                      |   16 ++
 Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue |    4 
 5 files changed, 260 insertions(+), 31 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js b/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js
new file mode 100644
index 0000000..9d3b1dc
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js
@@ -0,0 +1,19 @@
+import request from '@/router/axios';
+
+// 鍔熻兘妯″潡鏌ヨ
+export function getUIAuthor(params) {
+  return request({
+    url: "/api/uiManagerController/getUIAuthor",
+    method: "get",
+    params
+  });
+}
+
+//鎺堟潈
+export const authorizedUI = (params) => {
+  return request({
+    url: '/api/uiManagerController/authorizedUI',
+    method: 'post',
+    data: params
+  })
+}
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/UIDialog.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/UIDialog.vue
new file mode 100644
index 0000000..255cce2
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/UIDialog.vue
@@ -0,0 +1,143 @@
+<template>
+  <el-dialog v-dialogDrag
+             :title="dialog.title"
+             :visible.sync="dialog.showDialog"
+             width="1000px"
+             :append-to-body="true"
+             class="avue-dialog"
+             :destroy-on-close="true"
+             :close-on-click-modal="false"
+             @close="cancelDialog">
+    <el-aside>
+      <basic-container>
+        <avue-tree ref="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-user-solid"></i>
+                {{ (node || {}).label }}
+            </span>
+          </span>
+        </avue-tree>
+      </basic-container>
+    </el-aside>
+
+    <el-main>
+      <basic-container>
+        <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="el-icon-user-solid"></i>
+                {{ (node || {}).label }}
+            </span>
+          </span>
+        </avue-tree>
+      </basic-container>
+    </el-main>
+    <div class="dialog-footer avue-dialog__footer">
+      <el-button type="primary" plain size="small" @click="submitDialog" >鎺堟潈</el-button>
+      <el-button type="primary" plain size="small" @click="clearValue" >閲嶇疆</el-button>
+      <el-button size="small" @click="cancelDialog">鍙� 娑�</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import {gridRoles} from '@/api/system/role/api'
+import {getUIAuthor,authorizedUI} from "@/api/authority/ui/uiAuthor";
+
+export default {
+name: "UIDialog",
+  data() {
+    return {
+      dialog: {
+        showDialog: false,
+        title: "UI鎺堟潈",
+        loading: false,
+        type: "add",
+      },
+      type:'',//涓氬姟绫诲瀷
+      context:'',//UI涓婁笅鏂嘽ode
+      treeOption: {
+        height: '500px',
+        menu: false,
+        addBtn: false,
+        props: {
+          label: 'name',
+          value: 'oid',
+          children: 'children'
+        }
+      },
+      nodeRow: {},
+      treeData: [],
+      uiTreeOption: {
+        height: '500px',
+        menu: false,
+        addBtn: false,
+        filter:false,
+        props: {
+          label: 'name',
+          value: 'oid',
+          children: 'children'
+        }
+      },
+      uiTreeData: [],
+    }
+  },
+  methods:{
+    openDialog(type,context) {
+      this.type=type;
+      this.context=context;
+      this.dialog.showDialog = true;
+      this.getTreeList()
+
+    },
+    cancelDialog() {
+      this.dialog.loading = false;
+      this.dialog.showDialog = false;
+    },
+    getTreeList() {
+      const loading = this.$loading({});
+      gridRoles().then(res => {
+        this.treeData = res.data.data;
+        loading.close();
+      }).catch(error=>{
+        loading.close();
+      })
+    },
+    // 瑙掕壊鐐瑰嚮
+    nodeClick(row) {
+      this.nodeRow = row;
+
+      const loading = this.$loading({});
+      getUIAuthor().then(res => {
+        this.uiTreeData = res.data.data;
+        loading.close();
+      }).catch(error=>{
+        loading.close();
+      })
+    },
+    submitDialog() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          const formData={}
+          authorizedUI(formData).then(res => {
+            if (res.data.success) {
+              this.$message.success("淇濆瓨鎴愬姛");
+              this.cancelDialog();
+            }
+          });
+        } else {
+          return false;
+        }
+      });
+    },
+    clearValue(){
+      this.$refs.uiTree.setCheckedNodes([])
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
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..e29f4a0 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 - 200px);">
             <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>
@@ -43,8 +27,83 @@
 </template>
 
 <script>
+import {gridRoles} from "@/api/system/role/api";
+import {getUIAuthor,authorizedUI} from "@/api/authority/ui/uiAuthor";
+
 export default {
-  name: "index"
+  name: "index",
+  data() {
+    return {
+      type:'',//涓氬姟绫诲瀷
+      treeOption: {
+        height: '500px',
+        menu: false,
+        addBtn: false,
+        props: {
+          label: 'name',
+          value: 'oid',
+          children: 'children'
+        }
+      },
+      nodeRow: {},
+      treeData: [],
+      uiTreeOption: {
+        height: '500px',
+        menu: false,
+        addBtn: false,
+        filter:false,
+        props: {
+          label: 'name',
+          value: 'oid',
+          children: 'children'
+        }
+      },
+      uiTreeData: [],
+    }
+  },
+  created() {
+    this.getTreeList()
+  },
+  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;
+      const loading = this.$loading({});
+      getUIAuthor().then(res => {
+        this.uiTreeData = res.data.data;
+        loading.close();
+      }).catch(error=>{
+        loading.close();
+      })
+    },
+    saveHandler() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          const formData={}
+          authorizedUI(formData).then(res => {
+            if (res.data.success) {
+              this.$message.success("淇濆瓨鎴愬姛");
+              this.cancelDialog();
+            }
+          });
+        } else {
+          return false;
+        }
+      });
+    },
+    clearValue(){
+      this.$refs.uiTree.setCheckedNodes([])
+    }
+  }
 }
 </script>
 
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue
index 3490a9d..23931d1 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue
@@ -98,15 +98,11 @@
       dialog: {
         showDialog: false,
         title: "鍒涘缓",
-        submitTxt: "淇濆瓨",
-        submitIcon: "el-icon-check",
         loading: false,
         type: "add",
       },
       crudDialog: {
         showDialog: false,
-        submitTxt: "淇濆瓨",
-        submitIcon: "el-icon-check",
       },
       formItems:[{
         label: '鏌ヨ妯℃澘鍚嶇О',
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue
index 4870af7..9a6bc20 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue
@@ -38,7 +38,7 @@
             <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">鍒犻櫎</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 icon="el-icon-place" plain size="small" type="primary" @click="">鎺堟潈</el-button>
+            <el-button icon="el-icon-place" plain size="small" type="primary" @click="uiAuthorHandler">鎺堟潈</el-button>
           </template>
           <template slot="menu" slot-scope="scope">
             <el-button icon="el-icon-edit" size="small" type="text" @click="rowEditBtnClick(scope.row)">缂栬緫
@@ -126,6 +126,7 @@
       <!-- 瀵煎叆 -->
       <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" :fileData="fileData" title="瀵煎叆"
                    @updata="getTableList" @upfaildata="upFail"></upload-file>
+      <!--椤电绐楀彛-->
       <el-dialog v-dialogDrag
                  :title="dialog.title"
                  :visible.sync="dialog.showDialog"
@@ -137,6 +138,8 @@
                  @close="dialog.showDialog=false">
           <pl-show :uiDefineData="dialog.uiDefineData"></pl-show>
       </el-dialog>
+      <!--ui鎺堟潈-->
+      <ui-author ref="uiAuthor"></ui-author>
     </el-main>
 
   </el-container>
@@ -147,9 +150,10 @@
 import basicOption from "@/util/basic-option";
 import func from "@/util/func";
 import plShow from "@/views/modelingMenu/ui/uiDefine/rightRegion/plShow";
+import uiAuthor from "@/views/authority/ui/uiAuthorization/UIDialog"
 export default {
   name: "index",
-  components:{plShow},
+  components:{plShow,uiAuthor},
   data() {
     return {
       dialog: {
@@ -581,6 +585,14 @@
     upFail(response){
 
     },
+    //ui鎺堟潈
+    uiAuthorHandler(){
+      if (this.selectList.length!=1) {
+        this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
+        return;
+      }
+      this.$refs.uiAuthor.openDialog(this.nodeRow.attributes.name,this.selectList[0].plCode);
+    },
     // 缂栬緫鎸夐挳
     rowEditBtnClick(row) {
       this.form={

--
Gitblit v1.9.3