From badf10af5578f3fe4151824670bb7a794efc63dd Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期二, 03 十二月 2024 17:12:04 +0800
Subject: [PATCH] 数据授权

---
 Source/plt-web/plt-web-ui/src/api/system/user/api.js                            |   10 ++
 Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue |  140 ++++++++++++++++++----------
 Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue    |  114 ++++++++++++----------
 3 files changed, 161 insertions(+), 103 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/api/system/user/api.js b/Source/plt-web/plt-web-ui/src/api/system/user/api.js
index cfecaef..47b476b 100644
--- a/Source/plt-web/plt-web-ui/src/api/system/user/api.js
+++ b/Source/plt-web/plt-web-ui/src/api/system/user/api.js
@@ -131,3 +131,13 @@
   });
 }
 
+
+//鑾峰彇鐢ㄦ埛锛屾暟鎹巿鏉冮〉闈㈤�夋嫨鐢ㄦ埛
+export function listUserByUserType(params) {
+  return request({
+    url: "/api/userQueryController/listUserByUserType",
+    method: "get",
+    params
+  });
+}
+
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 cb054cb..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
@@ -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,13 +91,13 @@
       </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;'">
+        <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 :style="'width:99.5%;height: '+(height/2-30)+'px;'">
+        <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>
@@ -123,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 {listUserByUserType} from "@/api/system/user/api";
 import {listUserByRoleOid, listUserUnInRoleOid, saveRight} from "@/api/system/role/api";
 
 export default {
@@ -135,7 +136,7 @@
       default: {}
     },
     //閫変腑琛屾暟鎹�
-    data: {
+    selectRow: {
       type: Object,
       default: {}
     },
@@ -147,7 +148,7 @@
       type: Number,
       default: 400
     },
-    actionDic:{
+    actionMap:{
       type: Object,
       default: {}
     }
@@ -172,6 +173,7 @@
         height: this.height-80,
         tip:false,
         size:'mini',
+        highlightCurrentRow:true,
         column: [{
           label: ' 鍒嗙被',
           prop: 'type',
@@ -199,6 +201,8 @@
         tip:false,
         showHeader:false,
         size:'mini',
+        highlightCurrentRow:true,
+        align:'left',
         column: [{
           label: '鍚嶇О',
           prop: 'name'
@@ -206,7 +210,7 @@
       },
       formItems:[{
         label: '瑙勫垯鍚嶇О',
-        prop: 'qtName',
+        prop: 'ruleName',
         type: 'input',
         span:8,
         labelWidth: 100,
@@ -218,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:[{
@@ -289,24 +309,59 @@
       actionForm:[],//涓�鑸搷浣滈�変腑鍊�
       actionDic:[],//涓�鑸搷浣滈�変腑椤�
       linkactionForm:[],//鍏崇郴鍜岃穬杩侀�変腑鍊�
-      linkactionDic:[{
-        label:'閫夐」111',
-        value:0
-      },{
-        label:'閫夐」222',
-        value:1
-      }]//鍏崇郴鍜岃穬杩侀�変腑椤�
+      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,
@@ -314,13 +369,15 @@
     },
     actionMap:{
       handler(val) {
-        this.actionDic=[{
-          label:'閫夐」1',
-          value:0
-        },{
-          label:'閫夐」2',
-          value:1
-        }];
+        this.actionDic=[];
+        if(val){
+          for(var i in val){
+            this.actionDic.push({
+              label:i,
+              value:val[i]
+            })
+          }
+        };
       },
       immediate: true,
       deep: true
@@ -329,24 +386,7 @@
   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;
-        }
-      });
-
+      this.$refs.usertransfer.visible = true;
     },
 
     // 閫変腑鐢ㄦ埛绌挎妗嗗洖濉�
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue
index 3ed864f..f8c8799 100644
--- a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue
@@ -26,16 +26,16 @@
           :option="option"
           :table-loading="tableLoading"
           @refresh-change="handleRefresh"
-          @selection-change="selectChange"
-          @row-click="rowClickHandler">
+          @current-row-change="rowClickHandler">
           <template slot="menuLeft">
             <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">娣诲姞</el-button>
+            <el-button icon="el-icon-plus" size="small" type="primary" @click="editHandler">淇敼</el-button>
             <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">鍒犻櫎</el-button>
             <el-button icon="el-icon-view" plain size="small" type="primary" @click="chekView">鏌ョ湅鎺堟潈缁撴灉</el-button>
           </template>
         </avue-crud>
         <div style="margin-top: 15px;">
-          <data-view key="dataView" :btmNode="nodeRow" :data="viewData" :actionDic="actionMap" :readOnly="true" :height="clientHeight-260-220"></data-view>
+          <data-view key="dataView" :btmNode="nodeRow" :selectRow="selectRow" :actionMap="actionMap" :readOnly="true" :height="clientHeight-260-220"></data-view>
         </div>
         <!-- 鏂板 && 缂栬緫 -->
         <el-dialog
@@ -47,7 +47,7 @@
           width="70%"
           @close="addDialogClose">
             <div>
-              <data-view ref="editView" key="editView" :btmNode="nodeRow" :data="viewData" :actionDic="actionMap" :readOnly="false" :height="clientHeight-340"></data-view>
+              <data-view ref="editView" key="editView" :btmNode="nodeRow" :selectRow="selectRow" :actionMap="actionMap" :readOnly="false" :height="clientHeight-340"></data-view>
             </div>
             <span slot="footer" class="dialog-footer">
                <el-button size="small" type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button>
@@ -107,10 +107,11 @@
       nodeRow: {},
       treeData: [],
       tableLoading: false,
-      selectList: [],
+      selectRow: {},
       option: {
         ...basicOption,
         height:280,
+        highlightCurrentRow:true,
         addBtn: false,
         editBtn: false,
         delBtn: false,
@@ -118,27 +119,32 @@
         columnBtn:false,
         gridBtn:false,
         tip: false,
-        align: 'left',
+        index:false,
+        selection:false,
         menu:false,
-        column: [
-          {
-            label: '瑙勫垯鍚嶇О',
-            prop: 'plCode',
-            overHidden: true
-          },
-          {
-            label: '瑙勫垯绫诲瀷',
-            prop: 'plName',
-            overHidden: true
-          }
-        ]
+        align:'center',
+        column: [{
+          label: '瑙勫垯鍚嶇О',
+          prop: 0,
+          overHidden: true
+        },{
+          label: '瑙勫垯绫诲瀷',
+          prop: 1,
+          overHidden: true
+        }]
       },
       data: [],
-      viewData:{},
       title: '',
       visible: false,
       form:{},
-      actionMap:{}
+      actionMap:{},
+      switchDic:[{
+        label:'',
+        value:false
+      },{
+        label:'',
+        value:true
+      }]
     }
   },
   created() {
@@ -163,13 +169,40 @@
       }
     },
     getTableList() {
-      getData({
-        'typeName': this.nodeRow.attributes.name,
-      }).then(res => {
+      getData(this.nodeRow.attributes.name).then(res => {
+        /*if(typeof res.data == 'string'){
+          res.data=eval('('+res.data +')')
+        }*/
+        if(res.data.obj.tableHeader){
+          this.option.column=[ {
+            label: '瑙勫垯鍚嶇О',
+            prop: 0,
+            overHidden: true
+          },{
+              label: '瑙勫垯绫诲瀷',
+              prop: 1,
+              overHidden: true
+            }];
+          res.data.obj.tableHeader.forEach((item,i)=>{
+            if(i<=1) return;
+            if(i=='rules') return;
+            this.option.column.push({
+              label: item,
+              prop: i,
+              overHidden: true,
+              width:'auto',
+              html:true,
+              formatter:(val)=> {
+                return '<label class="el-checkbox is-disabled ' + (val[i] == true ? 'is-checked' : '') + '"><span class="el-checkbox__input is-disabled ' + (val[i] == true ? 'is-checked' : '') + '"><span class="el-checkbox__inner"></span><input type="checkbox" aria-hidden="false" class="el-checkbox__original" value="' + val[i] + '"></span></label>'
+              }
+            })
+          })
+        }
         this.data = res.data.obj.rowList;
         this.$refs.crud.clearSelection();
         this.tableLoading = false;
-        this.actionMap=res.data.obj.actionMap
+        this.actionMap=res.data.obj.actionMap;
+        this.selectRow={}
       })
     },
     handleRefresh() {
@@ -177,41 +210,16 @@
     },
     // 琛岀偣鍑�
     rowClickHandler(row) {
-      func.rowClickHandler(
-        row,
-        this.$refs.crud,
-        this.lastIndex,
-        (newIndex) => {
-          this.lastIndex = newIndex;
-        },
-        () => {
-          this.selectList = [row];
-        }
-      );
-      this.getViewData(row)
-    },
-    // 閫夋嫨妗�
-    selectChange(row) {
-      this.selectList = row;
-    },
-    //鑾峰彇涓嬫柟鏁版嵁
-    getViewData(row){
-      this.viewData={
-        oid:row.plOId
-      };
+      this.selectRow=row
     },
     // 鏌ョ湅鎺堟潈缁撴灉
     chekView() {
-      if (this.selectList.length <= 0) {
-        this.$message.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
-        return;
-      }
-      if (this.selectList.length > 1) {
-        this.$message.warning('鍙兘閫夋嫨涓�鏉℃暟鎹繘琛屾煡鐪�');
+      if (this.selectRow=={}) {
+        this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�');
         return;
       }
 
-      getUsedEnumList({enumName: this.selectList[0].id}).then(res => {
+      getUsedEnumList({enumName: this.selectRow.id}).then(res => {
         if (res.data.code === 200) {
           this.checkViewVisible = true;
           this.checkViewData = res.data.data;

--
Gitblit v1.9.3