From b027a6a6749f51b45fb0593b260a1d4d9cd77932 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 04 十二月 2024 11:40:16 +0800
Subject: [PATCH] 表单定义切换源对象清空选择模板、查询模板&&切换搜索类型清空链接类型、选择模板、查询模板

---
 Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue |  184 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 165 insertions(+), 19 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..fe69008 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>
@@ -53,7 +53,7 @@
                       :formData="form"
                       @getFormData="getFormData">
           </basic-form>
-          <el-container v-if="!readOnly">
+          <el-container v-if="!readOnly && (form.ruleType=='1' || form.ruleType=='3')">
             <el-aside style="width:350px">
               <fieldset>
                 <legend>&nbsp;鍊欓�夋潯浠�&nbsp;</legend>
@@ -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-10)+'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 v-if="0" :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,8 @@
 import formQueryDialog from "@/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue";
 import {queryTemplateListByAttr} from "@/api/queryTemplate/queryDefine";
 import {getCriteria} from "@/api/queryTemplate/linkTypeQuery";
+import {listUserByUserType} from "@/api/system/user/api";
+import {listUserByRoleOid, listUserUnInRoleOid, saveRight} from "@/api/system/role/api";
 
 export default {
   name: "dataView",
@@ -112,7 +136,7 @@
       default: {}
     },
     //閫変腑琛屾暟鎹�
-    data: {
+    selectRow: {
       type: Object,
       default: {}
     },
@@ -124,9 +148,17 @@
       type: Number,
       default: 400
     },
+    actionMap:{
+      type: Object,
+      default: {}
+    }
   },
   data() {
     return {
+      leftUserData: [],  // 閫夋嫨鎴愬憳绌挎妗嗗乏渚у垵濮嬫暟鎹�
+      rightUserData: [], // 閫夋嫨鎴愬憳绌挎妗嗗彸渚у垵濮嬫暟鎹�
+      leftRoleData: [],  // 閫夋嫨瑙掕壊绌挎妗嗗乏渚у垵濮嬫暟鎹�
+      rightRoleData: [], // 閫夋嫨瑙掕壊绌挎妗嗗彸渚у垵濮嬫暟鎹�
       mainData:[],
       tableLoading: false,
       mainOption: {
@@ -141,6 +173,7 @@
         height: this.height-80,
         tip:false,
         size:'mini',
+        highlightCurrentRow:true,
         column: [{
           label: ' 鍒嗙被',
           prop: 'type',
@@ -168,6 +201,8 @@
         tip:false,
         showHeader:false,
         size:'mini',
+        highlightCurrentRow:true,
+        align:'left',
         column: [{
           label: '鍚嶇О',
           prop: 'name'
@@ -175,7 +210,7 @@
       },
       formItems:[{
         label: '瑙勫垯鍚嶇О',
-        prop: 'qtName',
+        prop: 'ruleName',
         type: 'input',
         span:8,
         labelWidth: 100,
@@ -187,31 +222,47 @@
         }]
       }, {
         label: '瑙勫垯绫诲瀷',
-        prop: 'version',
+        prop: 'ruleType',
         type: 'select',
         span:6,
         labelWidth:110,
         disabled:this.readOnly,
         dicData: [{
           label: '鍏ㄩ儴鍏佽',
-          value: 1
+          value: '0'
         }, {
           label: '鍏佽鏉冮檺',
-          value: 2
+          value: '1',
+          disabled:true
         }, {
           label: '鍏ㄩ儴鎷掔粷',
-          value: 3
+          value: '2'
         }, {
           label: '鎷掔粷鏉冮檺',
-          value: 7
+          value: '3',
+          disabled:true
         }],
-        value: 1
+        value: '0'
       }],
       form:{
         btmName:'',
         qtName: '',
         levelFlag:0,//0:鏅�氭煡璇㈡ā鏉�; 1:楂樼骇鏌ヨ妯℃澘"
-        queryTemplate:{}
+        queryTemplate:{},//瀹綋涓煡璇㈡潯浠�
+        "ID": "",//鏁版嵁鐨処D
+        "roles": "",//鏄剧ず鍒版巿鏉冧富浣撶晫闈紝瑙掕壊鍚嶇О锛屽涓娇鐢ㄩ�楀彿鍒嗛殧
+        "userGroups": "",//鏄剧ず鍒版巿鏉冧富浣撶晫闈紝閮ㄩ棬鍚嶇О锛屽涓娇鐢ㄩ�楀彿鍒嗛殧
+        "users": "",//鏄剧ず鍒版巿鏉冧富浣撶晫闈紝鐢ㄦ埛鍚嶇О锛屽涓娇鐢ㄩ�楀彿鍒嗛殧
+        "expToSQL": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲
+        "identifier": "terminology_query",//涓氬姟绫诲瀷锛坱erminology锛�+涓嬪垝绾匡紙_锛�+鎿嶄綔鍖虹殑涓�鑸搷浣滅殑鎸夐挳鑻辨枃鍚嶇О锛坬uery锛�,澶氫釜鎸夐挳鐨勮瘽鏄鏉℃暟鎹笉鏄娇鐢ㄩ�楀彿鍒嗛殧
+        "isGrand": 49, //姝ゅ涓烘搷浣滃尯鐨勪竴鑸搷浣滅殑鎸夐挳鏄惁涓洪�夋嫨鎯呭喌锛屾湭閫変腑鍊间负48锛岄�変腑涓�49锛岃繖閲屾槸灏�0鍜�1杞负浜哹yte鍊硷紝鎵�浠ヤ负48锛�49
+        "lexpToSQL": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲
+        "lruleText": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲
+        "lseniorRuleText": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲
+        "ruleName": "assssss",//瑙勫垯鍚嶇О
+        "ruleText": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲
+        "ruleType": "2",//0鍏ㄩ儴鍏佽锛�1鍏佽鏉冮檺锛�2鍏ㄩ儴鎷掔粷锛�3鎷掔粷鏉冮檺锛岀敱浜庢殏鏃跺彧鍋氬叏閮ㄥ厑璁镐笌鍏ㄩ儴鎷掔粷锛屾墍浠ユ殏鏃跺彲浠ヤ笉鐢ㄧ
+        "seniorRuleText": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲
       },
       radioForm:0,
       radioDic:[{
@@ -255,31 +306,126 @@
       queryTree:{},
       //鏅�氭煡璇㈡潯浠�
       queryCondition:[],
+      actionForm:[],//涓�鑸搷浣滈�変腑鍊�
+      actionDic:[],//涓�鑸搷浣滈�変腑椤�
+      linkactionForm:[],//鍏崇郴鍜岃穬杩侀�変腑鍊�
+      linkactionDic:[]//鍏崇郴鍜岃穬杩侀�変腑椤�
     }
   },
   created() {
-
+    listUserByUserType().then(res => {
+      if(typeof res.data == 'string'){
+        res.data=eval('('+res.data +')')
+      }
+      // 缁勮濂界┛姊鍙敤鏁版嵁
+      this.leftUserData = res.data.data.map(item => {
+        return {
+          name: item.name + `(${item.id})`,
+          oid: item.oid
+        }
+      })
+      this.rightUserData = [];
+    })
   },
   watch: {
-    data:{
+    selectRow:{
       handler(val) {
-        if(val && val.oid){
-          this.getTemp(true);
-          this.getTemp(false)
+        this.authData=[];
+        if(val && val.rules){
+          //this.getTemp(true);
+          //this.getTemp(false)
+          //鏋勫缓鎺堟潈涓讳綋鏁版嵁
+          if(val.rules.users){
+            val.rules.users.split(',').forEach((item,i)=>{
+              if(item){
+                this.authData.push({
+                  name:'{'+item+', '+item+', user}'
+                })
+              }
+            })
+          }
+          if(val.rules.roles){
+            val.rules.roles.split(',').forEach((item,i)=>{
+              if(item){
+                this.authData.push({
+                  name:'{'+item+', '+item+', role}'
+                })
+              }
+            })
+          }
+          if(val.rules.userGroups){
+            val.rules.userGroups.split(',').forEach((item,i)=>{
+              if(item){
+                this.authData.push({
+                  name:'{'+item+', '+item+', userGroup}'
+                })
+              }
+            })
+          }
         }
       },
       immediate: true,
       deep: true
-    }
+    },
+    actionMap:{
+      handler(val) {
+        this.actionDic=[];
+        if(val){
+          for(var i in val){
+            this.actionDic.push({
+              label:i,
+              value:val[i]
+            })
+          }
+        };
+      },
+      immediate: true,
+      deep: true
+    },
   },
   methods: {
     //閫変腑鐢ㄦ埛
     userHandler(){
+      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 +576,7 @@
 
 <style lang="scss" scoped>
 ::v-deep {
-  .el-radio {
+  .el-radio ,.el-checkbox{
     margin-right: 30px;
   }
 }

--
Gitblit v1.9.3