林倩 4 年 前
コミット
d0905a4610

+ 27 - 4
src/api/data-auth.js

@@ -14,7 +14,9 @@ export function getBusinessTagTree(data) {
     return request({
         url: `${baseUrl}/businessTreeList`,
         method: "POST",
-        data
+        data: {
+            name: ""
+        }
     });
 }
 
@@ -46,7 +48,7 @@ export function dataAuthInfoByUserId(params) {
 }
 
 // 业务域标签数据授权
-export function labelDataAuth(data) {
+export function saveLabelDataAuth(data) {
     return request({
         url: `${baseUrl}/labelDataAuth`,
         method: "post",
@@ -55,7 +57,7 @@ export function labelDataAuth(data) {
 }
 
 // 机构数据授权
-export function orgDataAuth(data) {
+export function saveOrgDataAuth(data) {
     return request({
         url: `${baseUrl}/orgDataAuth`,
         method: "post",
@@ -64,7 +66,7 @@ export function orgDataAuth(data) {
 }
 
 // 人员数据授权
-export function userDataAuth(data) {
+export function saveUserDataAuth(data) {
     return request({
         url: `${baseUrl}/userDataAuth`,
         method: "post",
@@ -109,4 +111,25 @@ export function getSecurityLevelsList() {
 }
 
 
+/************************************ 清单  *****************************************/
+
+// 清单列表
+export function getDataDetailList() {
+    return request({
+        url: `${baseUrl}/dataDetailList`,
+        method: "POST",
+    });
+}
+
+// 获取清单搜索下拉表
+export function getSelectList(params) {
+    return request({
+        url: `${baseUrl}/getDataResourceTree`,
+        params: {
+            typeCode: params
+        }
+    })
+}
+
+
 

+ 6 - 1
src/pages/application-manage/app-manage/editor.vue

@@ -394,4 +394,9 @@ export default {
 };
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+/deep/ .el-form-item__content {
+    position: relative;
+    display: flex;
+}
+</style>

+ 1 - 1
src/pages/common/tree/index.vue

@@ -276,7 +276,7 @@ export default {
                         if (that.ifCheckedFirstNode) {
                             that.setCurrentKey(that.rootNode);
                         }
-                        that.$emit("submitRootNode", { id: that.rootNode, name: res[0].name });
+                        that.$emit("submitRootNode", { id: that.rootNode, name: res[0].name, code: res[0].code});
                     }
                 })
                 .catch(() => resolve([]));

+ 103 - 22
src/pages/data-auth-module/data-permission-manage/data-auth-manage/check-list.vue

@@ -12,28 +12,48 @@
                     <!-- 列授权-数据安全级别搜索 -->
                     <template v-if="activeTab == 'sjaqjb'">
                         <el-form-item label="数据安全等级">
-                            <el-input v-model="item.searchCondition.level.value"></el-input>
+                            <dg-select
+                                :data="sjaqjbList"
+                                v-model="item.searchCondition.codeDataTypeStr.value"
+                                value-name="codeDataTypeStr"
+                                label-name="label"
+                            ></dg-select>
                         </el-form-item>
                         <el-form-item label="字段中文名称">
-                            <el-input v-model="item.searchCondition.level.value"></el-input>
+                            <el-input v-model="item.searchCondition.resourceName.value"></el-input>
                         </el-form-item>
                     </template>
                     <!-- 字段分类搜索 -->
                     <template v-if="activeTab == 'zdfl'">
                         <el-form-item label="字段分类">
-                            <dg-cascader :data="options" v-model="item.searchCondition.level.value"> </dg-cascader>
+                            <dg-cascader
+                                :data="zdflList"
+                                v-model="item.searchCondition.codeDataTypeStr.value"
+                                value-name="codeDataTypeStr"
+                                label-name="label"
+                                children-name="child"
+                                filterable
+                                clearable
+                                :show-all-levels="false"
+                            >
+                            </dg-cascader>
                         </el-form-item>
                         <el-form-item label="字段中文名称">
-                            <el-input v-model="item.searchCondition.level.value"></el-input>
+                            <el-input v-model="item.searchCondition.resourceName.value"></el-input>
                         </el-form-item>
                     </template>
                     <!-- 数据分级搜索 -->
                     <template v-if="activeTab == 'sjfj'">
                         <el-form-item label="数据分级">
-                            <el-input v-model="item.searchCondition.level.value"></el-input>
+                            <dg-select
+                                :data="sjfjList"
+                                v-model="item.searchCondition.codeDataTypeStr.value"
+                                value-name="codeDataTypeStr"
+                                label-name="label"
+                            ></dg-select>
                         </el-form-item>
                         <el-form-item label="数据资源名称">
-                            <el-input v-model="item.searchCondition.level.value"></el-input>
+                            <el-input v-model="item.searchCondition.resourceName.value"></el-input>
                         </el-form-item>
                     </template>
                     <!-- 表授权-数据安全级别搜索 -->
@@ -47,15 +67,28 @@
                     </template> -->
                     <!-- 数据资源分类搜索 -->
                     <template v-if="activeTab == 'sjzyfl'">
-                        <el-form-item label="一级分类">
+                        <el-form-item label="数据资源分类">
+                            <dg-cascader
+                                :data="sjzyflList"
+                                v-model="item.searchCondition.codeDataTypeStr.value"
+                                value-name="codeDataTypeStr"
+                                label-name="label"
+                                children-name="child"
+                                filterable
+                                clearable
+                                :show-all-levels="false"
+                            >
+                            </dg-cascader>
+                        </el-form-item>
+                        <!-- <el-form-item label="一级分类">
                             <dg-select :data="[]" v-model="item.searchCondition.level.value"> </dg-select>
                         </el-form-item>
                         <el-form-item label="二级分类">
                             <dg-select :data="[]" v-model="item.searchCondition.level.value"> </dg-select>
-                        </el-form-item>
-                        <!-- <el-form-item label="标签名称">
-                            <el-input v-model="item.searchCondition.level.value"></el-input>
                         </el-form-item> -->
+                        <el-form-item label="标签名称">
+                            <el-input v-model="item.searchCondition.resourceName.value"></el-input>
+                        </el-form-item>
                     </template>
                     <el-form-item>
                         <dg-button type="primary" @click="handleSearch(item.tableRef)" icon="el-icon-search"
@@ -78,6 +111,7 @@
 
 <script>
 import Table from "@/pages/common/table";
+import { getDataDetailList, getSelectList } from "@/api/data-auth.js";
 import {
     sjaqjbTableHeader_column,
     zdflTableHeader,
@@ -87,7 +121,8 @@ import {
 } from "./list-table-header";
 export default {
     props: {
-        type: String
+        type: String,
+        authTree: Array
     },
     components: {
         Table
@@ -112,11 +147,15 @@ export default {
                     tabName: "sjaqjb",
                     tabLabel: "数据安全级别",
                     total: "",
-                    tableUrl: "/appsvr/v2/manufacturers",
+                    tableUrl: "/authsvr/v2/dataauth/dataDetailList",
                     tableRef: "sjaqjbTable",
                     tableHeader: sjaqjbTableHeader_column,
                     searchCondition: {
-                        level: {
+                        codeDataTypeStr: {
+                            value: "",
+                            op: "="
+                        },
+                        resourceName: {
                             value: "",
                             op: "="
                         }
@@ -126,11 +165,15 @@ export default {
                     tabName: "zdfl",
                     tabLabel: "字段分类",
                     total: "",
-                    tableUrl: "/appsvr/v2/manufacturers",
+                    tableUrl: "/authsvr/v2/dataauth/dataDetailList",
                     tableRef: "zdflTable",
                     tableHeader: zdflTableHeader,
                     searchCondition: {
-                        level: {
+                        codeDataTypeStr: {
+                            value: "",
+                            op: "="
+                        },
+                        resourceName: {
                             value: "",
                             op: "="
                         }
@@ -143,11 +186,15 @@ export default {
                     tabName: "sjfj",
                     tabLabel: "数据分级",
                     total: "",
-                    tableUrl: "/appsvr/v2/manufacturers",
+                    tableUrl: "/authsvr/v2/dataauth/dataDetailList",
                     tableRef: "sjfjTable",
                     tableHeader: sjfjTableHeader,
                     searchCondition: {
-                        level: {
+                        codeDataTypeStr: {
+                            value: "",
+                            op: "="
+                        },
+                        resourceName: {
                             value: "",
                             op: "="
                         }
@@ -171,11 +218,15 @@ export default {
                     tabName: "sjzyfl",
                     tabLabel: "数据资源分类",
                     total: "",
-                    tableUrl: "/appsvr/v2/manufacturers",
+                    tableUrl: "/authsvr/v2/dataauth/dataDetailList",
                     tableRef: "sjzyflTable",
                     tableHeader: sjzyflTableHeader,
                     searchCondition: {
-                        level: {
+                        codeDataTypeStr: {
+                            value: "",
+                            op: "="
+                        },
+                        resourceName: {
                             value: "",
                             op: "="
                         }
@@ -185,7 +236,11 @@ export default {
 
             // 实际渲染
             tabList: [],
-            activeTab: []
+            activeTab: [],
+            sjzyflList: [], // 数据资源分类列表
+            sjfjList: [], // 数据分级列表
+            zdflList: [], //字段分类
+            sjaqjbList: [] // 数据安全级别
         };
     },
     computed: {},
@@ -195,24 +250,50 @@ export default {
          * @param table 搜索哪个表格
          */
         handleSearch(table) {
-            this.$refs[table].searchForm();
+            this.$refs[table][0].handleSearchClick();
         },
 
         getTotalElements({ totalElements, tableName }) {
             const index = this.tabList.findIndex((item) => item.tabLabel == tableName);
             if (this.tabList[index].total == "") {
+                this.tabList[index].total = totalElements;
                 this.tabList[index].tabLabel = `${this.tabList[index].tabLabel}(${totalElements})`;
             }
+        },
+     
+        // 获取搜索下拉值
+        initTableSelectList() {
+            // 获取数据资源分级下拉列表
+            getSelectList("DATA_RESOURCE_CLASSIFY").then((res) => {
+                this.sjzyflList = res.data.content.nodes[0].child;
+            });
+            // 获取数据分级下拉列表
+            getSelectList("DATA_CLASSIFY").then((res) => {
+                this.sjfjList = res.data.content.nodes[0].child;
+            });
+        },
+
+        initColumnSelectList() {
+            // 字段分类下拉列表
+            getSelectList("COLUMN_CLASSIFY").then((res) => {
+                this.zdflList = res.data.content.nodes[0].child;
+            });
+            // 获取数据安全级别下拉列表
+            getSelectList("DATA_SECURITY_LEVEL").then((res) => {
+                this.sjaqjbList = res.data.content.nodes[0].child;
+            });
         }
     },
     created() {
-        if (this.type == "tableAuth") {
+        if (this.type == "TABLE") {
             this.tabList = this.tableAuthTabList;
             this.activeTab = "sjfj";
+            this.initTableSelectList();
         } else {
             this.tabList = this.columnAuthTabList;
             this.activeTab = "sjaqjb";
         }
+        this.initTable();
     },
     mounted() {}
 };

+ 11 - 19
src/pages/data-auth-module/data-permission-manage/data-auth-manage/org-auth.vue

@@ -16,13 +16,13 @@
                         :search="true"
                         paddingRight="15px"
                         @handleGetNode="handleGetNode"
-                        @submitRootNode="submitRootNode"
+                        @submitRootNode="handleGetNode"
                     ></propety-tree>
                 </dg-card>
             </dg-col>
             <!-- 权限设置 -->
-            <dg-col :span="19">
-                <set-auth></set-auth>              
+            <dg-col :span="19" :key="key">
+                <set-auth :subId="subId" subType="ORG" saveApi="saveOrgDataAuth"></set-auth>
             </dg-col>
         </dg-row>
     </div>
@@ -30,7 +30,7 @@
 
 <script>
 import propetyTree from "@/pages/common/tree";
-import setAuth from "./set-auth"
+import setAuth from "./set-auth";
 export default {
     components: {
         propetyTree,
@@ -38,19 +38,8 @@ export default {
     },
     data() {
         return {
-            // 激活的tab
-            activeName: "tableAuth",
-            roleTypeList: [
-                {
-                    value: "",
-                    label: "全部"
-                },
-                {
-                    value: "01",
-                    label: "民警"
-                }
-            ],
-            roleType: ""
+            subId: "",
+            key: 0
         };
     },
     computed: {},
@@ -59,8 +48,11 @@ export default {
          * @description: 获取机构节点
          * @param {*} node
          */
-        handleGetNode(node) {},
-        submitRootNode() {},
+        handleGetNode(node) {
+            this.subId = node.code;
+            this.key++;
+        },
+        submitRootNode(node) {}
         /**
          * @description: 获取清单
          */

+ 13 - 21
src/pages/data-auth-module/data-permission-manage/data-auth-manage/person-auth.vue

@@ -30,8 +30,8 @@
                     <el-form-item label="类型">
                         <dg-select
                             style="width: 100px"
-                            :data="userTypeList"
                             v-model="searchPersonCondition.userType.value"
+                            code="DM_USER_TYPE"
                             clearable
                         ></dg-select>
                     </el-form-item>
@@ -63,13 +63,13 @@
                     <dg-table-column type="index" width="70" label="序号"></dg-table-column>
                     <dg-table-column prop="name" label="姓名"></dg-table-column>
                     <dg-table-column prop="idcard" label="身份证"></dg-table-column>
-                    <dg-table-column prop="userType" label="类型"></dg-table-column>
+                    <dg-table-column prop="userType" label="类型" code="DM_USER_TYPE"></dg-table-column>
                 </dg-table>
             </dg-card>
         </dg-col>
         <!-- 权限设置 -->
-        <dg-col :span="12" >
-             <set-auth shadow="always"></set-auth>
+        <dg-col :span="12" :key="key">
+             <set-auth :subId="subId" subType="USER" saveApi="saveUserDataAuth"></set-auth>   
         </dg-col>
     </dg-row>
 </template>
@@ -93,22 +93,9 @@ export default {
                 name: { value: "", op: "like" },
                 userType: { value: "", op: "=" }
             },
-            // 用户类型
-            userTypeList: [
-                {
-                    value: "",
-                    label: "全部"
-                },
-                 {
-                    value: "01",
-                    label: "警员"
-                },
-                 {
-                    value: "02",
-                    label: "辅警"
-                }
-            ],
-            clearSelectedNode: false
+            clearSelectedNode: false,
+            key: 0,
+            subId: ""
         };
     },
     computed: {},
@@ -126,7 +113,10 @@ export default {
          * @description: 点击人员列表
          * @param {*} row
          */
-        handleTableRowClick(row) {},
+        handleTableRowClick(row) {
+            this.subId = row.id;
+            this.key++
+        },
         /**
          * @description: 获取机构节点
          * @param {*} node
@@ -136,6 +126,8 @@ export default {
             if (oldValue !== id) {
                 this.searchPersonCondition.orgId.value = id;
                 this.$refs.personTable.searchForm();
+                this.subId = "";
+                this.key++;
             }
         },
         // 默认获取根节点

+ 12 - 15
src/pages/data-auth-module/data-permission-manage/data-auth-manage/property-auth.vue

@@ -13,8 +13,8 @@
                 </dg-card>
             </dg-col>
             <!-- 权限设置 -->
-            <dg-col :span="19">
-                <set-auth></set-auth>
+            <dg-col :span="19" :key="key">
+                <set-auth :subId="subId" subType="BUSINESS" saveApi="saveLabelDataAuth"></set-auth>
             </dg-col>
         </dg-row>
     </div>
@@ -23,6 +23,7 @@
 <script>
 import businessTagTree from "./business-tag-tree";
 import setAuth from "./set-auth";
+
 export default {
     components: {
         businessTagTree,
@@ -30,17 +31,9 @@ export default {
     },
     data() {
         return {
-            roleTypeList: [
-                {
-                    value: "",
-                    label: "全部"
-                },
-                {
-                    value: "01",
-                    label: "民警"
-                }
-            ],
-            roleType: ""
+            // 主体id
+            subId: "",
+            key: 0
         };
     },
     computed: {},
@@ -49,8 +42,12 @@ export default {
          * @description: 获取机构节点
          * @param {*} node
          */
-        handleGetNode(node) {},
-        submitRootNode() {}
+        handleGetNode(node) {
+            this.subId = node.code;
+            this.key++
+
+        },
+        submitRootNode() {},
     },
     created() {},
     mounted() {}

+ 65 - 44
src/pages/data-auth-module/data-permission-manage/data-auth-manage/set-auth-tree.vue

@@ -4,65 +4,68 @@
 @Date: 2021-04-02 15:48
 -->
 <template>
-    <div class="tree">
-        <p class="tree__title">
-            {{ title }}(<span style="color: red">{{ selectNodesNum }}</span
-            >/{{ total }})
-        </p>
-        <div class="tree__content">
-            <dg-tree
-                ref="authTree"
-                node-key="id"
-                :props="props"
-                :expand-on-click-node="false"
-                show-checkbox
-                v-model="selectNodes"
-                :data="treeData"
-                @node-click="handleNodeClick"
-                @check="handleDataLevelCheckTree"
-            >
-                <span slot-scope="{ node, data }" class="tree-node">
-                    <span>
-                        <i class="el-icon-folder-opened" v-if="data.isParent"></i>
-                        <i class="el-icon-document" v-else></i>
+    <div>
+        <div class="tree">
+            <p class="tree__title">
+                {{ treeData.label }}(<span style="color: red">{{ selectNodesNum }}</span
+                >/{{ treeData.total }})
+            </p>
+            <div class="tree__content">
+                <dg-tree
+                    ref="authTree"
+                    node-key="id"
+                    :props="props"
+                    :expand-on-click-node="false"
+                    show-checkbox
+                    v-model="selectNodes"
+                    :data="treeData.nodes"
+                    @node-click="handleNodeClick"
+                    @check="handleCheckTree"
+                >
+                    <span slot-scope="{ node, data }" class="tree-node">
                         <span>
-                            <span class="tree-node__name">{{ data.name }}</span>
-                            <el-popover placement="top-start" width="400" trigger="hover" :open-delay="1000">
-                                <div class="tip-box">
-                                    <h3>{{ data.name }}</h3>
-                                    <p>{{ data.desc }}</p>
-                                </div>
-                                <span slot="reference" v-if="data.desc"> ({{ data.desc }}</span>
-                            </el-popover>
+                            <i class="el-icon-folder-opened" v-if="data.treeNode"></i>
+                            <i class="el-icon-document" v-else></i>
+                            <span>
+                                <span class="tree-node__name">{{ data.label }}</span>
+                                <el-popover placement="top-start" width="400" trigger="hover" :open-delay="1000">
+                                    <div class="tip-box">
+                                        <h3>{{ data.label }}</h3>
+                                        <p>{{ data.desc }}</p>
+                                    </div>
+                                    <span slot="reference" v-if="data.desc"> ({{ data.desc }}</span>
+                                </el-popover>
+                            </span>
                         </span>
                     </span>
-                </span>
-            </dg-tree>
+                </dg-tree>
+            </div>
         </div>
     </div>
 </template>
 
 <script>
-import tree from "../../set-auth-tree";
 export default {
     props: {
-        title: [String]
+        treeData: {
+            type: Object
+        }
     },
+    activated() {},
     components: {},
     data() {
         return {
             // 节点总数
-            total: 5,
-            treeData: tree,
+
             props: {
                 value: "id",
-                label: "name",
-                children: "children",
+                label: "label",
+                children: "child",
                 isLeaf(data) {
-                    return data.isParent !== true;
+                    return data.treeNode !== true;
                 }
             },
-            selectNodes: ["B726C9CD53794229A03DA42B5B8CE732"],
+            selectNodes: [],
             selectNodesNum: 0
         };
     },
@@ -76,7 +79,7 @@ export default {
          * @description: 点击节点
          * @param {*} node
          */
-        handleNodeClick(node) {
+        handleNodeClick(node, a, b) {
             const { id, isParent, name } = node;
             if (this.selectNodes.includes(id)) {
                 this.$refs.authTree.setChecked(id, false, true);
@@ -90,7 +93,7 @@ export default {
          * @param {object} data 当前选中数据
          * @param {array} checkedKeys 当前选中key集合
          */
-        handleDataLevelCheckTree(data, { checkedKeys }) {
+        handleCheckTree(data, { checkedKeys }) {
             this.getSelectKeys();
         },
         /**
@@ -98,14 +101,32 @@ export default {
          */
         getSelectKeys() {
             this.selectNodes = this.$refs.authTree.getCheckedKeys(true);
-            console.log("选中的节点", this.selectNodes);
+            const selectNodes = this.$refs.authTree.getCheckedNodes(true);
+            console.log("选中的节点", selectNodes);
             this.selectNodesNum = this.selectNodes.length;
-        }
+            const nodes = selectNodes.map((item) => {
+                return {
+                    dataType: item.dataType,
+                    dataId: item.id
+                };
+            });
+            this.$emit("getSelectNodes", {
+                type: this.treeData.id,
+                selectNodes: nodes
+            });
+        },
+
+        // 获取单个主体授权
+        getSubDataAuth() {}
     },
     created() {
+        this.selectNodes = this.treeData.selectNodes ? this.treeData.selectNodes.map(item => item.dataId) : [];
         this.selectNodesNum = this.selectNodes.length;
     },
-    mounted() {}
+    mounted() {
+        // this.$refs.authTree.setCheckedKeys(this.selectNodes, false);
+
+    }
 };
 </script>
 

+ 35 - 72
src/pages/data-auth-module/data-permission-manage/data-auth-manage/set-auth.vue

@@ -7,52 +7,50 @@
     <div class="property-wapper__right">
         <dg-card :shadow="shadow" header="权限设置">
             <el-tabs v-model="activeName" @tab-click="handleClick">
-                <el-tab-pane label="表授权" name="tableAuth">
-                    <div style="height: calc(100vh - 22rem)">
-                        <dg-scrollbar>
-                            <set-auth-tree title="数据分级"></set-auth-tree>
-                            <set-auth-tree title="数据分级"></set-auth-tree>
-                            <set-auth-tree title="数据分级"></set-auth-tree>
-                        </dg-scrollbar>
-                    </div>
+                <el-tab-pane label="表授权" name="TABLE">
+                    <table-column-auth
+                        :subId="subId"
+                        :subType="subType"
+                        :saveApi="saveApi"
+                        tab="TABLE"
+                    ></table-column-auth>
                 </el-tab-pane>
-                <el-tab-pane label="列授权" name="columnAuth">
-                    <div style="height: calc(100vh - 22rem)">
-                        <dg-scrollbar>
-                            <set-auth-tree title="数据分级"></set-auth-tree>
-                            <set-auth-tree title="数据分级"></set-auth-tree>
-                        </dg-scrollbar>
-                    </div>
+                <el-tab-pane label="列授权" name="COLUMN"> 
+                     <table-column-auth
+                        :subId="subId"
+                        :subType="subType"
+                        :saveApi="saveApi"
+                        tab="COLUMN"
+                    ></table-column-auth>
                 </el-tab-pane>
-                <el-row class="property-wapper__right-btn">
-                    <el-button @click="handleViewAuthList">清单</el-button>
-                    <el-button @click="handleReset">重置</el-button>
-                    <el-button type="primary" @click="handleSave">保存</el-button>
-                </el-row>
             </el-tabs>
         </dg-card>
     </div>
 </template>
 
 <script>
-import columnCheckList from "./check-list";
-import setAuthTree from "./set-auth-tree";
-
+import tableColumnAuth from "./table-column-auth";
 export default {
     props: {
-       shadow: {
-           type: String,
-           default: "never"
-       }
+        shadow: {
+            type: String,
+            default: "never"
+        },
+        // 主体id
+        subId: String,
+        // 主体类型
+        subType: String,
+        // 保存接口
+        saveApi: String
     },
     components: {
-        setAuthTree
-
+        tableColumnAuth,
+        
     },
     data() {
         return {
             // 激活的tab
-            activeName: "tableAuth"
+            activeName: "TABLE"
         };
     },
     computed: {},
@@ -61,53 +59,18 @@ export default {
          * @description: 切换tab
          * @param {*} tab
          */
-        handleClick(tab) {},
-        /**
-         * @description: 获取清单
-         */
-        handleViewAuthList() {
-            let layerComponent = "";
-            if (this.activeName == "tableAuth") {
-                layerComponent = columnCheckList;
-            } else {
-                layerComponent = columnCheckList;
-            }
-            const vm = this;
-
-            const layer = this.$dgLayer({
-                title: "授权清单",
-                content: layerComponent,
-                props: {
-                    type: vm.activeName
-                },
-                on: {
-                    success(params) {
-                        layer.close(layer.dialogIndex);
-                    }
-                },
-                cancel: function (index, layero) {
-                    // 关闭对应弹窗的ID
-                    layer.close(index);
-                    return false;
-                },
-                area: ["1150px", "850px"]
-            });
-        },
-        /**
-         * @description: 重置授权
-         */
-        handleReset() {},
-        /**
-         * @description: 保存授权
-         */
-        handleSave() {}
+        handleClick(tab) {
+           
+        }
+    },
+    created() {
+        console.log("权限设置初始化");
     },
-    created() {},
     mounted() {}
 };
 </script>
 
-<style lang='scss' scoped>
+<style lang='scss'>
 .property-wapper__right {
     &-search {
         margin-bottom: 20px;

+ 187 - 0
src/pages/data-auth-module/data-permission-manage/data-auth-manage/table-column-auth.vue

@@ -0,0 +1,187 @@
+<!--
+表授权 - 标签授权、人员授权、机构授权 -公用
+@Author: linqian
+@Date: 2021-04-19 15:46 
+-->
+<template>
+    <div :key="key">
+        <div v-if="subId">
+            <div style="height: calc(100vh - 22rem)">
+                <dg-scrollbar>
+                    <set-auth-tree
+                        :attrType="tab"
+                        v-for="(item, index) in authData"
+                        :key="index"
+                        :treeData="item"
+                        @getSelectNodes="getSelectNodes"
+                    ></set-auth-tree>
+                </dg-scrollbar>
+            </div>
+            <el-row class="property-wapper__right-btn">
+                <el-button @click="handleViewAuthList" v-if="!showCheckListBtn">清单</el-button>
+                <el-button @click="handleReset">重置</el-button>
+                <el-button type="primary" @click="handleSave">保存</el-button>
+            </el-row>
+        </div>
+        <div v-else>无数据,请选中被设置对象。</div>
+    </div>
+</template>
+
+<script>
+import * as api from "@/api/data-auth.js";
+import setAuthTree from "./set-auth-tree";
+import columnCheckList from "./check-list";
+
+export default {
+    props: {
+        subId: String,
+        subType: String,
+        saveApi: String,
+        tab: String
+    },
+    components: {
+        setAuthTree
+    },
+    data() {
+        return {
+            authData: [],
+            showCheckListBtn: false,
+            saveAuthVoList: {},
+            key: 0
+        };
+    },
+    computed: {},
+    methods: {
+        handleViewAuthList() {
+            const vm = this;
+            const layer = this.$dgLayer({
+                title: "授权清单",
+                content: columnCheckList,
+                props: {
+                    type: vm.tab,
+                    authTree: vm.authTree
+                },
+                on: {
+                    success(params) {
+                        layer.close(layer.dialogIndex);
+                    }
+                },
+                cancel: function (index, layero) {
+                    // 关闭对应弹窗的ID
+                    layer.close(index);
+                    return false;
+                },
+                area: ["1150px", "850px"]
+            });
+        },
+        /**
+         * @description: 重置授权
+         */
+        handleReset() {
+            this.key++;
+        },
+        /**
+         * @description: 保存授权
+         */
+        handleSave() {
+            let key = "";
+            if (this.subType == "BUSINESS") {
+                // 业务域
+                key = "businessCode";
+            } else if (this.subType == "ORG") {
+                // 机构
+                key = "orgCode";
+            } else {
+                // 人员
+                key = "idcard";
+            }
+
+            // 保存的树节点
+            let authVoList = [];
+            for (const key in this.saveAuthVoList) {
+                const element = this.saveAuthVoList[key];
+                authVoList = [...authVoList, ...element];
+            }
+            // 数组去重
+            let obj = {};
+            const _authVoList = authVoList.reduce((cur, next) => {
+                obj[next.dataId] ? "" : (obj[next.dataId] = true && cur.push(next));
+                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("保存成功!");
+            });
+        },
+
+        // 获取勾选的节点
+        getSelectNodes({ type, selectNodes }) {
+            this.saveAuthVoList[type] = selectNodes;
+        },
+        // 查询单个主体相关数据权限
+        getSubDataAuth() {
+            return new Promise((resolve) => {
+                const { subId, subType } = this;
+                const params = {
+                    authType: this.tab,
+                    subId,
+                    subType
+                };
+                api.getSubDataAuth(params).then((res) => {
+                    resolve(res.data.content);
+                });
+            });
+        },
+        getAllDataTree() {
+            // 获取表授权
+            return new Promise((resolve) => {
+                api.getAllDataTree({ attrType: this.tab }).then((res) => {
+                    resolve(res.data.content);
+                });
+            });
+        },
+        async initAuthTree() {
+            if (this.subId) {
+                const singleAuthData = await this.getSubDataAuth();
+                let authTree = await this.getAllDataTree();
+                if (singleAuthData.length > 0) {
+                    this.showCheckListBtn = true;
+                    for (let i = 0; i < singleAuthData.length; i++) {
+                        const { id, tickedDatas } = singleAuthData[i];
+                        for (let j = 0; j < authTree.length; j++) {
+                            let element = authTree[j];
+                            if (element.id == id) {
+                                this.saveAuthVoList[id] = element.selectNodes = tickedDatas.map((item) => {
+                                    const { dataId, dataType } = item;
+                                    return {
+                                        dataId,
+                                        dataType
+                                    };
+                                });
+                            }
+                        }
+                    }
+                } else {
+                    this.showCheckListBtn = false;
+                }
+                this.authData = authTree;
+            }
+        }
+    },
+    created() {
+        console.log("初始化");
+        this.initAuthTree();
+    },
+    mounted() {}
+};
+</script>
+
+<style lang='scss'>
+</style>

+ 16 - 4
src/pages/data-auth-module/data-permission-manage/data-auth-search/person-view.vue

@@ -61,8 +61,8 @@
         <dg-col :span="12" class="property-wapper__right">
             <dg-card class="box-card" header="权限设置">
                 <el-tabs v-model="activeName" @tab-click="handleClick">
-                    <el-tab-pane label="表授权" name="tableAuth"></el-tab-pane>
-                    <el-tab-pane label="列授权" name="columnAuth"></el-tab-pane>
+                    <el-tab-pane label="表授权" name="TABLE"></el-tab-pane>
+                    <el-tab-pane label="列授权" name="COLUMN"></el-tab-pane>
                     <dg-scrollbar>
                         <div class="auth-group" style="height: calc(100vh - 19rem)">
                             <div v-for="(item, index) in sortCodeList" :key="index" class="auth-group__item">
@@ -87,12 +87,13 @@ import codeTree from "../../tree.js";
 import detailLayer from "./detail-layer";
 import orgTree from "@/pages/common/tree";
 import { staffUserPage } from "@/api/role-auth-info";
+import { dataAuthInfoByUserId } from "@/api/data-auth.js"
 export default {
     components: { orgTree },
     data() {
         return {
             // 激活的tab
-            activeName: "tableAuth",
+            activeName: "TABLE",
             rowStyle: {
                 cursor: "pointer"
             },
@@ -126,7 +127,9 @@ export default {
          * @description: 点击人员列表
          * @param {*} row
          */
-        handleTableRowClick(row) {},
+        handleTableRowClick(row) {
+           this.getAuthData(row.id);
+        },
         /**
          * @description: 点击码表详情,弹框
          * @param {*} item
@@ -172,6 +175,15 @@ export default {
          */
         getClearNodesFlag(val) {
             this.clearSelectedNode = val;
+        },
+        getAuthData(userId) {
+            const params =  {
+                authType: "TABLE",
+                userId
+            }
+            dataAuthInfoByUserId(params).then(res => {
+                
+            })
         }
     },
     created() {},

+ 11 - 37
src/pages/data-auth-module/set-auth-tree.js

@@ -1,48 +1,22 @@
 const tree = [
     {
-        code: "010000000000",
-        id: "7F08CCC3C4984A2586C9D3F0A6B804E5",
-        isParent: true,
-        name: "全部",
+        code: "DATA_CLASSIFY",
+        id: "DATA_CLASSIFY",
+        treeNode: true,
+        label: "全部",
         path: "",
         pid: null,
-        children: [
+        child: [
             {
-                code: "130000000000",
-                id: "B726C9CD53794229A03DA42B5B8CE732",
+                child: null,
+                code: "01",
+                id: "DATA_CLASSIFY|01",
                 isParent: false,
-                name: "公开",
+                label: "公开",
                 path: "7F08CCC3C4984A2586C9D3F0A6B804E5",
-                pid: "7F08CCC3C4984A2586C9D3F0A6B804E5",
-                desc: "这是描述描述描述描述描述描述这是描述描述描述描述描述描述这是描述描述描描述描述这是描述描述描述描述描述描述这是描述描述描述描述描述描这是描述描述描述描述描述描述这是描述描述描述描述描述描述这是描述描述描描述描述这是描述描述描述描述描述描述这是描述描述描述描述描述描"
+                pid: "DATA_CLASSIFY"
             },
-            {
-                code: "130000000001",
-                id: "B726C9CD53794229A03DA42B5B8CE731",
-                isParent: false,
-                name: "一般",
-                path: "7F08CCC3C4984A2586C9D3F0A6B804E5",
-                pid: "7F08CCC3C4984A2586C9D3F0A6B804E5",
-                desc: "这是描述描述描述描述描述描述这是描述描述描述描述描述描述这是描述描述描描述描述这是描述描述描述描述描述描述这是描述描述描述描述描述描"
-            },
-            {
-                code: "130000000000",
-                id: "B726C9CD53794229A03DA42B5B8CE734",
-                isParent: false,
-                name: "公开",
-                path: "7F08CCC3C4984A2586C9D3F0A6B804E5",
-                pid: "7F08CCC3C4984A2586C9D3F0A6B804E5",
-                desc: "这是描述描述描述描述描述描述这是描述描述描述描述描述描述这是描述描述描描述描述这是描述描述描述描述描述描述这是描述描述描述描述描述描这是描述描述描述描述描述描述这是描述描述描述描述描述描述这是描述描述描描述描述这是描述描述描述描述描述描述这是描述描述描述描述描述描"
-            },
-            {
-                code: "130000000005",
-                id: "B726C9CD53794229A03DA42B5B8CE736",
-                isParent: false,
-                name: "一般",
-                path: "7F08CCC3C4984A2586C9D3F0A6B804E5",
-                pid: "7F08CCC3C4984A2586C9D3F0A6B804E5",
-                desc: "这是描述描述描述描述描述描述这是描述描述描述描述描述描述这是描述描述描描述描述这是描述描述描述描述描述描述这是描述描述描述描述描述描"
-            }
+         
         ]
     }
 ];

+ 2 - 2
src/pages/data-auth-module/sort-code-manage/data-level.vue

@@ -15,9 +15,9 @@
             </el-form-item>
         </el-form>
         <!-- 导入 -->
-        <el-row class="import-btn">
+        <!-- <el-row class="import-btn">
             <dg-button type="primary" @click="handleImport" icon="el-icon-upload">导入</dg-button>
-        </el-row>
+        </el-row> -->
         <!-- 列表 -->
         <dg-table ref="table" :data="tableList" border row-key="id" paging-type="client">
             <dg-table-column type="index" width="75" label="序号"></dg-table-column>

+ 2 - 2
src/pages/data-auth-module/sort-code-manage/field-sort-code.vue

@@ -18,9 +18,9 @@
             </el-form-item>
         </el-form>
         <!-- 导入 -->
-        <el-row class="import-btn">
+        <!-- <el-row class="import-btn">
             <dg-button type="primary" @click="handleImport" icon="el-icon-upload">导入</dg-button>
-        </el-row>
+        </el-row> -->
         <!-- 列表 -->
         <dg-table ref="table" :data="tableList" border row-key="id" paging-type="client">
             <dg-table-column type="index" width="75" label="序号"></dg-table-column>

+ 0 - 1
src/pages/data-auth-module/sort-code-manage/index.scss

@@ -1,5 +1,4 @@
 .search-form {
-    border-bottom: 1px dashed rgba(0, 0, 0, 0.15);
 }
 .import-btn, .add-btn {
     text-align: right;

+ 2 - 2
src/pages/data-auth-module/sort-code-manage/safe-level-code.vue

@@ -15,9 +15,9 @@
             </el-form-item>
         </el-form>
         <!-- 导入 -->
-        <el-row class="import-btn">
+        <!-- <el-row class="import-btn">
             <dg-button type="primary" @click="handleImport" icon="el-icon-upload">导入</dg-button>
-        </el-row>
+        </el-row> -->
         <!-- 列表 -->
         <dg-table ref="table" :data="tableList" border row-key="id" paging-type="client">
             <dg-table-column type="index" width="75" label="序号"></dg-table-column>

+ 2 - 2
src/pages/data-auth-module/sort-code-manage/source-sort-code.vue

@@ -20,9 +20,9 @@
                 <dg-button type="primary" @click="handleSearch" icon="el-icon-search">查询</dg-button>
             </el-form-item>
         </el-form>
-        <el-row class="import-btn">
+        <!-- <el-row class="import-btn">
             <dg-button type="primary" @click="handleImport" icon="el-icon-upload">导入</dg-button>
-        </el-row>
+        </el-row> -->
         <!-- 列表 -->
         <dg-table ref="table" :data="tableList" border row-key="id" paging-type="client">
             <dg-table-column type="index" width="75" label="序号"></dg-table-column>

+ 0 - 15
src/router/index.js

@@ -113,21 +113,6 @@ export const asyncRouterMap = [{
             meta: { title: "动态授权管理", noCache: false, permission: ["YHGLPT_DTSQGL_DTSQGL"] }
         }]
     },
-    // 服务授权管理
-    {
-        path: "/service-delagate-manage",
-        component: Layout,
-        redirect: "/service-delagate",
-        alwaysShow: true,
-        meta: { title: "服务授权管理", icon: "el-icon-time", noCache: true },
-        children: [{
-            path: "service-delagate",
-            component: () =>
-                import ("@/pages/service-delegate"),
-            name: "service-delagate",
-            meta: { title: "服务授权", noCache: false }
-        }]
-    },
     ...dataAuthModuleRouter
 ];
 

+ 1 - 1
src/router/modules/data-auth-module.js

@@ -27,7 +27,7 @@ const componentsRouter = [
         component: Layout,
         redirect: "/data-permission",
         alwaysShow: true,
-        meta: { title: "数据权限管理", icon: "el-icon-goods", noCache: true, permission: ["YHGLPT_YYGL"] },
+        meta: { title: "授权查询", icon: "el-icon-goods", noCache: true, permission: ["YHGLPT_YYGL"] },
         children: [
             {
                 path: "data-auth-search",

+ 18 - 1
src/router/modules/empower-manage.js

@@ -4,7 +4,7 @@
 	@Date:2020-07-28
 */
 import Layout from "@/pages/layout/layout";
-import common from "@/pages/common"
+import common from "@/pages/common";
 
 // const Layout = () => import("@/pages/" + process.env.LAYOUT + "/layout");
 
@@ -55,6 +55,23 @@ const componentRouter = {
                     meta: { title: "人员授权", noCache: false, permission: ["YHGLPT_YYGL_CSGL"], layout: "page" }
                 }
             ]
+        },
+        // 服务授权管理
+        {
+            path: "/service-delagate-manage",
+            component: common,
+            name: "common",
+            redirect: "/service-delagate",
+            alwaysShow: true,
+            meta: { title: "服务授权管理", icon: "el-icon-time", noCache: true },
+            children: [
+                {
+                    path: "service-delagate",
+                    component: () => import("@/pages/service-delegate"),
+                    name: "service-delagate",
+                    meta: { title: "服务授权", noCache: false }
+                }
+            ]
         }
     ]
 };