From 161edfd2a50595021d9bfe303ed7f1b26893b862 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 29 十一月 2024 12:12:15 +0800
Subject: [PATCH] 数据授权

---
 Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 110 insertions(+), 4 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue
index d12fd89..cb054cb 100644
--- a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue
+++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue
@@ -4,7 +4,7 @@
       <el-tab-pane>
         <span slot="label"><i class="el-icon-s-custom"></i> 涓讳綋</span>
         <div v-if="!readOnly" style="margin-bottom: 10px;">
-          <el-button plain size="mini" type="primary" @click="userHandler">閫変腑鐢ㄦ埛</el-button>
+          <el-button plain size="mini" type="primary" @click="userHandler">閫夋嫨鐢ㄦ埛</el-button>
           <el-button plain size="mini" type="primary" @click="roleHandler">閫夋嫨瑙掕壊</el-button>
           <el-button plain size="mini" type="primary" @click="deptHandler">閫夋嫨鐢ㄦ埛缁�</el-button>
         </div>
@@ -91,8 +91,30 @@
       </el-tab-pane>
       <el-tab-pane>
         <span slot="label"><i class="el-icon-s-tools"></i> 鎿嶄綔</span>
+        <fieldset :style="'width:99.5%;height: '+(height/2+20)+'px;margin-bottom:10px;'">
+          <legend>&nbsp;涓�鑸搷浣� </legend>
+          <div>
+            <avue-checkbox :disabled="readOnly" key="actionCheck" :all="!readOnly" v-model="actionForm" placeholder="璇烽�夋嫨鍐呭" :dic="actionDic"></avue-checkbox>
+          </div>
+        </fieldset>
+        <fieldset :style="'width:99.5%;height: '+(height/2-30)+'px;'">
+          <legend>&nbsp;鍏崇郴鍜岃穬杩� </legend>
+          <div>
+            <avue-checkbox :disabled="readOnly" key="linkActionCheck" :all="!readOnly" v-model="linkactionForm" placeholder="璇烽�夋嫨鍐呭" :dic="linkactionDic"></avue-checkbox>
+          </div>
+        </fieldset>
       </el-tab-pane>
     </el-tabs>
+    <!-- 閫夋嫨鐢ㄦ埛绌挎妗�   -->
+    <transfer ref="usertransfer" :left-role-data="leftUserData" :right-role-data="rightUserData"
+              :transferTitle="['鏈�夋嫨鐢ㄦ埛','宸查�夋嫨鐢ㄦ埛']" title="涓讳綋娣诲姞鐢ㄦ埛"
+              @transferSend="userSendHandler">
+    </transfer>
+    <!-- 閫夋嫨鐢ㄦ埛绌挎妗�   -->
+    <transfer ref="roletransfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData"
+              :transferTitle="['鐜版湁瑙掕壊','鎷ユ湁瑙掕壊']" title="娣诲姞瑙掕壊"
+              @transferSend="roleSendHandler">
+    </transfer>
   </div>
 </template>
 
@@ -101,6 +123,7 @@
 import formQueryDialog from "@/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue";
 import {queryTemplateListByAttr} from "@/api/queryTemplate/queryDefine";
 import {getCriteria} from "@/api/queryTemplate/linkTypeQuery";
+import {listUserByRoleOid, listUserUnInRoleOid, saveRight} from "@/api/system/role/api";
 
 export default {
   name: "dataView",
@@ -124,9 +147,17 @@
       type: Number,
       default: 400
     },
+    actionDic:{
+      type: Object,
+      default: {}
+    }
   },
   data() {
     return {
+      leftUserData: [],  // 閫夋嫨鎴愬憳绌挎妗嗗乏渚у垵濮嬫暟鎹�
+      rightUserData: [], // 閫夋嫨鎴愬憳绌挎妗嗗彸渚у垵濮嬫暟鎹�
+      leftRoleData: [],  // 閫夋嫨瑙掕壊绌挎妗嗗乏渚у垵濮嬫暟鎹�
+      rightRoleData: [], // 閫夋嫨瑙掕壊绌挎妗嗗彸渚у垵濮嬫暟鎹�
       mainData:[],
       tableLoading: false,
       mainOption: {
@@ -255,6 +286,16 @@
       queryTree:{},
       //鏅�氭煡璇㈡潯浠�
       queryCondition:[],
+      actionForm:[],//涓�鑸搷浣滈�変腑鍊�
+      actionDic:[],//涓�鑸搷浣滈�変腑椤�
+      linkactionForm:[],//鍏崇郴鍜岃穬杩侀�変腑鍊�
+      linkactionDic:[{
+        label:'閫夐」111',
+        value:0
+      },{
+        label:'閫夐」222',
+        value:1
+      }]//鍏崇郴鍜岃穬杩侀�変腑椤�
     }
   },
   created() {
@@ -270,16 +311,81 @@
       },
       immediate: true,
       deep: true
-    }
+    },
+    actionMap:{
+      handler(val) {
+        this.actionDic=[{
+          label:'閫夐」1',
+          value:0
+        },{
+          label:'閫夐」2',
+          value:1
+        }];
+      },
+      immediate: true,
+      deep: true
+    },
   },
   methods: {
     //閫変腑鐢ㄦ埛
     userHandler(){
+      Promise.all([
+        listUserUnInRoleOid({pkRole: this.selectList.oid}),
+        listUserByRoleOid({pkRole: this.selectList.oid})
+      ]).then(([unInRoleRes, byRoleRes]) => {
+        if (unInRoleRes.data.code === 200 && byRoleRes.data.code === 200) {
+          const leftData = [...unInRoleRes.data.data, ...byRoleRes.data.data];
+          // 缁勮濂界┛姊鍙敤鏁版嵁
+          this.leftUserData = leftData.map(item => {
+            return {
+              name: item.name + `(${item.id})`,
+              oid: item.oid
+            }
+          })
+          this.rightUserData = byRoleRes.data.data.map(item => item.oid);
+          this.$refs.usertransfer.visible = true;
+        }
+      });
 
+    },
+
+    // 閫変腑鐢ㄦ埛绌挎妗嗗洖濉�
+    userSendHandler(row) {
+      row.forEach((item,index)=>{
+        this.authData.push({
+          type:'user',
+          ...item
+        })
+      })
     },
     //閫夋嫨瑙掕壊
     roleHandler(){
-
+      Promise.all([
+        listUserUnInRoleOid({pkRole: this.selectList.oid}),
+        listUserByRoleOid({pkRole: this.selectList.oid})
+      ]).then(([unInRoleRes, byRoleRes]) => {
+        if (unInRoleRes.data.code === 200 && byRoleRes.data.code === 200) {
+          const leftData = [...unInRoleRes.data.data, ...byRoleRes.data.data];
+          // 缁勮濂界┛姊鍙敤鏁版嵁
+          this.leftRoleData = leftData.map(item => {
+            return {
+              name: item.name + `(${item.id})`,
+              oid: item.oid
+            }
+          })
+          this.rightRoleData = byRoleRes.data.data.map(item => item.oid);
+          this.$refs.transfer.visible = true;
+        }
+      });
+    },
+    // 閫夋嫨瑙掕壊绌挎妗嗗洖濉�
+    roleSendHandler(row) {
+      row.forEach((item,index)=>{
+        this.authData.push({
+          type:'role',
+          ...item
+        })
+      })
     },
     //閫夋嫨鐢ㄦ埛缁�
     deptHandler(){
@@ -430,7 +536,7 @@
 
 <style lang="scss" scoped>
 ::v-deep {
-  .el-radio {
+  .el-radio ,.el-checkbox{
     margin-right: 30px;
   }
 }

--
Gitblit v1.9.3