소스 검색

Merge branch 'feature/data-auth' of 192.168.0.144:xj-aks/dcuc/auth-web into feature/data-auth

林倩 2 년 전
부모
커밋
e1047005fa

+ 1 - 1
config/btn-icon-config.js

@@ -6,7 +6,7 @@ const btnAttr = [
     ['功能配置', 'el-icon-menu'],
     ['导入', 'el-icon-upload2'],
     ['新增', 'el-icon-circle-plus-outline'],
-    ['同步', 'el-icon-refresh'],
+    ['同步,同步数据资源', 'el-icon-refresh'],
     ['权限变更申请', 'el-icon-circle-plus-outline'],
     ['批量添加', 'el-icon-circle-plus-outline'],
     ['批量设置名单级别', 'el-icon-setting'],

+ 10 - 2
src/filters/index.js

@@ -1,6 +1,6 @@
 import utils from '@/common/utils';
 const { ztMoment } = utils;
-import iconMap from "../../config/btn-icon-config"
+import iconMap from '../../config/btn-icon-config';
 
 function pluralize(time, label) {
   if (time === 1) {
@@ -55,7 +55,15 @@ export function optIcon(type, defaultIcon) {
   if (defaultIcon) {
     return defaultIcon;
   }
-  const icon = iconMap.get(type);
+  let icon = '';
+  for (const item of iconMap) {
+    const texts = item[0].split(',').map(ele => ele.trim());
+    if (texts.includes(type)) {
+      icon = item[1];
+      break;
+    }
+  }
+  // const icon = iconMap.get(type);
   return icon ? icon : 'el-icon-edit';
 }
 

+ 3 - 1
src/pages/auth-object-manage/sort-code-manage/field-sort-code.vue

@@ -41,7 +41,7 @@ export default {
       tableHeader: fieldSortConfig,
       fieldSortConditionForm,
       tableOptList: tableOptList.slice(1, 3),
-      pageOptList
+      pageOptList: ["新增", "同步", "同步数据资源"],
     };
   },
   computed: {},
@@ -66,6 +66,8 @@ export default {
         this.handleSync(fieldSortSyncUrl);
       } else if (opt == '导入') {
         // this.handleImport(dataLevelImportUrl, 'dataLevel', '数据资源分类表码导入');
+      } else if (opt == '同步数据资源') {
+        
       }
     },
     /**

+ 60 - 0
src/pages/auth-object-manage/sort-code-manage/filed-rel-sort-form.vue

@@ -0,0 +1,60 @@
+<!--
+字段关系分类表单
+@Author: linqian
+ * @date: 2022-09-29  14:35
+ */
+-->
+<template>
+  <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+    <dg-row>
+      <el-form-item label="字段分类一" prop="sort1">
+        <dg-select v-model="form.sort1" placeholder="请选择字段分类一" :data="[]"> </dg-select>
+      </el-form-item>
+      <el-form-item label="字段分类二" prop="sort2">
+        <dg-select v-model="form.sort2" placeholder="请选择字段分类二" :data="[]"> </dg-select>
+      </el-form-item>
+      <el-form-item label="字段关系分类" prop="label">
+        <el-input v-model="form.label" placeholder="请选择字段分类一和字段分类二" disabled> </el-input>
+      </el-form-item>
+    </dg-row>
+    <div v-footer>
+        <dg-button @click="$emit('close')">取消</dg-button>
+        <dg-button @click="handleSave" type="primary">保存</dg-button>
+    </div>
+  </el-form>
+</template>
+
+<script>
+export default {
+  components: {},
+  data() {
+    return {
+      form: {
+        sort1: "",
+        sort2: "",
+        label: ""
+      },
+      rules: {
+        sort1: [{ required: true, message: "请选择字段分类一", trigger: "blur" }],
+        sort2: [{ required: true, message: "请选择字段分类二", trigger: "blur" }],
+        label: [{ required: true, message: "请选择字段分类一和分类二", trigger: "blur" }],
+      }
+    };
+  },
+  computed: {},
+  methods: {
+    handleSave() {
+        this.$refs.form.validate(valid => {
+            if (valid) {
+             
+            }
+        })
+    }
+  },
+  created() {},
+  mounted() {}
+};
+</script>
+
+<style lang='scss'>
+</style>

+ 100 - 0
src/pages/auth-object-manage/sort-code-manage/filed-rel-sort.vue

@@ -0,0 +1,100 @@
+<!--
+字段关系分类表码列表
+@Author: linqian
+@Date: 2022-09-29 13:57
+-->
+<template>
+    <div>
+      <!-- 搜索栏 -->
+      <search-bar :conditionForm="conditionForm" @submitSearch="receiveSearch"></search-bar>
+      <!-- 操作栏 -->
+      <operate-bar :pageOptList="pageOptList" @submitPageOpt="receviceOpt"></operate-bar>
+      <!-- 列表 -->
+      <new-table
+        ref="table"
+        :tableUrl="tableUrl"
+        :tableHeader="tableHeader"
+        :condition="condition"
+        :tableOptList="tableOptList"
+        @submitTableOpt="receviceOpt"
+      >
+      </new-table>
+    </div>
+  </template>
+  <script>
+    import searchBar from '@/components/search-bar';
+  import operateBar from '@/components/operate-bar';
+  import newTable from '@/components/new-table';
+  import { fieldSortSyncUrl } from '@/api/sync';
+  import { searchOpt, syncOpt } from '@/mixins/page-opt';
+  import { fieldClassifyTableUrl } from "@/api/data-auth"
+  export default {
+    components: { searchBar, operateBar, newTable },
+    mixins: [searchOpt, syncOpt],
+    data() {
+      return {
+        tableUrl: fieldClassifyTableUrl,
+        tableHeader: [{
+           label: "字段关系分类",
+           prop: "name"
+        },{
+           label: "代码",
+           prop: "code"
+        }],
+        tableOptList: ["编辑", "删除"],
+        pageOptList: ["新增", "同步"],
+        conditionForm: [
+          {
+           label: '字段关系分类',
+            name: 'firName',
+            op: 'like',
+           value: '',
+           component: 'ElInput'
+  },
+        ]
+      };
+    },
+    computed: {},
+    methods: {
+       receviceOpt(opt, row) {    
+        if (opt == '新增') {
+            this.handleEdit({});
+        } else if (opt == '修改') {
+            this.handleEdit(row);
+        } else if (opt == '删除') {
+          this.handleDelete(row);
+        } else if (opt == '同步') {
+          this.handleSync(fieldSortSyncUrl);
+        } 
+      },
+      handleEdit(row) {
+        const vm = this;
+        const layer = this.$dgLayer({
+            title: '修改',
+            area: ['700px', '500px'],
+            content: require("./filed-rel-sort-form.vue"),
+            props: {
+              id: row.id
+            },
+            on: {
+              success() {
+                layer.close(layer.dialogIndex);
+                vm.handleSearch();
+               
+              }
+            }
+          });
+
+      },
+      handleDelete(row) {
+        this.$dgConfirm(`是否确定删除这条数据!`, '提示', {}).then(() => {});
+      }
+   
+    },
+    created() {},
+    mounted() {}
+  };
+  </script>
+  
+  <style lang='scss'>
+  </style>

+ 4 - 1
src/pages/auth-object-manage/sort-code-manage/index.vue

@@ -10,6 +10,7 @@
             <el-tab-pane label="数据安全级别表码" name="safeLevelCode"></el-tab-pane>
             <el-tab-pane label="数据资源分类表码" name="sourceSortCode"></el-tab-pane>
             <el-tab-pane label="字段分类表码" name="fieldSortCode"></el-tab-pane>
+            <el-tab-pane label="字段关系分类表码" name="fieldRelSort"></el-tab-pane>
         </el-tabs>
         <keep-alive>
            <component :is="activeName"></component>         
@@ -22,12 +23,14 @@ import dataLevel from "./data-level.vue";
 import fieldSortCode from "./field-sort-code";
 import safeLevelCode from "./safe-level-code";
 import sourceSortCode from "./source-sort-code";
+import fieldRelSort from "./filed-rel-sort.vue"
 export default {
     components: {
         dataLevel,
         fieldSortCode,
         safeLevelCode,
-        sourceSortCode
+        sourceSortCode,
+        fieldRelSort
     },
     data() {
         return {

+ 1 - 1
src/pages/auth-object-manage/sort-code-manage/safe-level-code.vue

@@ -1,7 +1,7 @@
 <!--
 数据安全级别表码列表
 @Author: linqian
-@Date: 2021-03-31 15:30:11
+@Date: 2021-03-31 15:30:
 -->
 <template>
   <div>

+ 3 - 1
src/pages/auth-object-manage/sort-code-manage/source-sort-code.vue

@@ -46,7 +46,7 @@ export default {
       dataSourceClaTableUrl,
       sourceSortConditionForm,
       tableHeader: sourceSortConfig.slice(0, -1),
-      pageOptList,
+      pageOptList: ["新增", "同步", "同步数据资源"],
       tableOptList,
       optList: [
         { icon: 'el-icon-edit', tooltip: '修改', on: this.handleEdit },
@@ -76,6 +76,8 @@ export default {
         this.handleSync(dataSourceSyncUrl);
       } else if (opt == '导入') {
         // this.handleImport(dataLevelImportUrl, 'dataLevel', '数据资源分类表码导入');
+      } else if (opt == '同步数据资源') {
+        
       }
     },
     /**

+ 1 - 1
src/pages/data-auth-manage/components/business-tag-tree.vue

@@ -106,7 +106,7 @@ export default {
         }
     }
     &__content {
-        height: calc(100vh - 19rem);
+        height: calc(100vh - 17.6rem);
     }
 }
 </style>

+ 5 - 0
src/pages/data-auth-manage/components/set-auth-tree.vue

@@ -27,6 +27,7 @@
                     :highlight-current="false"
                     :default-expanded-keys="defaultExpandKeys"
                     @check="handleCheckTree"
+                    @check-change="handleCheckChange"
                 >
                     <span slot-scope="{ data }" class="tree-node">
                         <span>
@@ -115,7 +116,11 @@ export default {
          * @param {array} checkedKeys 当前选中key集合
          */
         handleCheckTree(data, { checkedKeys }) {
+
             this.getSelectKeys();
+        },
+        handleCheckChange(data,nodeCheck,childNodeCheck) {
+
         },
         /**
          * @description: 获取选中的节点key

+ 48 - 10
src/pages/data-auth-manage/components/set-auth.vue

@@ -9,31 +9,38 @@
             <el-tabs v-model="activeName" @tab-click="handleClick">
                 <el-tab-pane label="表授权" name="TABLE">
                     <table-column-auth
-                        :key="tableKey"
+                         ref="tableAuth"
+                        :key="key"
                         :subId="subId"
                         :subType="subType"
                         :saveApi="saveApi"
                         tab="TABLE"
-                        @submitReset="submitReset"
                     ></table-column-auth>
                 </el-tab-pane>
                 <el-tab-pane label="列授权" name="COLUMN">
                     <table-column-auth
-                        :key="columnKey"
+                         ref="columnAuth"
+                        :key="key"
                         :subId="subId"
                         :subType="subType"
                         :saveApi="saveApi"
                         tab="COLUMN"
-                        @submitReset="submitReset"
                     ></table-column-auth>
                 </el-tab-pane>
             </el-tabs>
+            <el-row class="property-wapper__right-btn">
+                <!-- <el-button @click="handleViewAuthList" v-if="showCheckListBtn">清单</el-button> -->
+                <dg-button v-if="subId" @click="handleReset" :icon="'重置' | optIcon">重置</dg-button>
+                <dg-button v-if="subId" type="primary" @click="handleSave" :icon="'保存' | optIcon">保存</dg-button>
+            </el-row>
         </dg-card>
     </div>
 </template>
 
 <script>
 import tableColumnAuth from "./table-column-auth";
+import * as api from "@/api/data-auth.js";
+
 export default {
     props: {
         shadow: {
@@ -54,8 +61,8 @@ export default {
         return {
             // 激活的tab
             activeName: "TABLE",
-            tableKey: 0,
-            columnKey: 0
+            key: 0,
+         
         };
     },
     computed: {},
@@ -69,13 +76,44 @@ export default {
          * @description: 重置
          * @param {*} tab
          */
-        submitReset(tab) {
-            if (tab == "TABLE") {
-                this.tableKey++;
+         handleReset() {
+          this.key++;
+        },
+        handleSave() {
+            let key = "";
+            if (this.subType == "BUSINESS") {
+                // 业务域
+                key = "businessCode";
+            } else if (this.subType == "ORG") {
+                // 机构
+                key = "orgCode";
             } else {
-                this.columnKey++;
+                // 人员
+                key = "idcard";
             }
+            let params1 = this.$refs.tableAuth.handleSave();
+            let params2 = this.$refs.columnAuth.handleSave();
+            let params = {
+                authVoList: [...params1, ...params2]
+            }
+            params[key] = this.subId;  
+            console.log("最终保存的参数", params);
+            let obj = {};
+             for (let i = 0; i < params.authVoList.length; i++) {
+                const element = params.authVoList[i];
+                if (!obj[element.dataType]) {
+                    obj[element.dataType] = [element.dataId];
+                } else {
+                    obj[element.dataType].push(element.dataId)
+                }
+                
+             }
+             console.log("勾选联动接口参数",obj);
+            api[this.saveApi](params).then((res) => {
+                this.$message.success("保存成功!");
+            });
         }
+
     },
     created() {
         console.log("权限设置初始化");

+ 5 - 28
src/pages/data-auth-manage/components/table-column-auth.vue

@@ -17,11 +17,7 @@
                     ></set-auth-tree>
                 </dg-scrollbar>
             </div>
-            <el-row class="property-wapper__right-btn">
-                <!-- <el-button @click="handleViewAuthList" v-if="showCheckListBtn">清单</el-button> -->
-                <dg-button @click="handleReset" :icon="'重置' | optIcon">重置</dg-button>
-                <dg-button type="primary" @click="handleSave" :icon="'保存' | optIcon">保存</dg-button>
-            </el-row>
+         
         </div>
         <div v-else>
             <p v-if="subType == 'BUSINESS'">请选择标签。</p>
@@ -86,19 +82,7 @@ export default {
         /**
          * @description: 保存授权
          */
-        handleSave() {
-            let key = "";
-            if (this.subType == "BUSINESS") {
-                // 业务域
-                key = "businessCode";
-            } else if (this.subType == "ORG") {
-                // 机构
-                key = "orgCode";
-            } else {
-                // 人员
-                key = "idcard";
-            }
-
+        handleSave() {        
             // 保存的树节点
             let authVoList = [];
             for (const key in this.saveAuthVoList) {
@@ -112,16 +96,9 @@ export default {
                 return cur;
             }, []);
 
-            let params = {
-                authType: this.tab,
-                authVoList: _authVoList
-            };
-            params[key] = this.subId;
-            console.log("保存的参数", params);
-
-            api[this.saveApi](params).then((res) => {
-                this.$message.success("保存成功!");
-            });
+            console.log("保存的参数", _authVoList);
+             return _authVoList
+           
         },
 
         // 获取勾选的节点

+ 1 - 1
src/pages/data-auth-manage/org-auth.vue

@@ -12,7 +12,7 @@
                     <org-tree
                         ref="tree"
                         class="u-pm__left"
-                        treeHeight="calc(100vh - 19rem)"
+                        treeHeight="calc(100vh - 17.6rem)"
                         :search="true"
                         paddingRight="15px"
                         @handleGetNode="handleGetNode"

+ 13 - 13
src/router/index.js

@@ -140,19 +140,19 @@ export const asyncRouterMap = [
     ]
   },
   // 权限综合查询
-  {
-    path: '/permission-to-searchS',
-    component: Layout,
-    meta: { title: '权限综合查询', icon: 'icon-othersearch', noCache: true, permission: ['QXGL_SQCX'] },
-    children: [
-      {
-        path: 'data-auth-search',
-        component: () => import('@/pages/permission-to-search/data-auth-search.vue'),
-        name: 'data-auth-search',
-        meta: { title: '数据权限查询', noCache: true, layout: 'page',  permission: ['QXGL_SQCX_SJSQCX'] }
-      }
-    ]
-  },
+  // {
+  //   path: '/permission-to-searchS',
+  //   component: Layout,
+  //   meta: { title: '权限综合查询', icon: 'icon-othersearch', noCache: true, permission: ['QXGL_SQCX'] },
+  //   children: [
+  //     {
+  //       path: 'data-auth-search',
+  //       component: () => import('@/pages/permission-to-search/data-auth-search.vue'),
+  //       name: 'data-auth-search',
+  //       meta: { title: '数据权限查询', noCache: true, layout: 'page',  permission: ['QXGL_SQCX_SJSQCX'] }
+  //     }
+  //   ]
+  // },
   listManageRouter,
   ...logManage,
   statisticsManageRouter