Переглянути джерело

用户机构属性管理,服务资源管理接口联调

林倩 4 роки тому
батько
коміт
a28d9db4a4

+ 2 - 1
config/dev.env.js

@@ -41,7 +41,8 @@ module.exports = merge(prodEnv, {
             // target: "http://10.254.10.15:8861" // 傅志强
             // target: "http://10.11.1.164:8861"
             // target: "http://10.11.0.48:8861",// 邱宇
-            target: "http://10.254.11.203:8861"
+            // target: "http://10.254.11.203:8861"
+            target: "http://10.11.1.237:8861"
 
         }
     })

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

@@ -144,10 +144,22 @@ export function userDataTreeByIdcard(authType, idcard) {
     })
 }
 
-/****************************** 服务资源管理 ************************************ */
+/****************************** 用户属性管理 ************************************ */
 
-import { restApi } from "@/utils/req";
-// 服务资源
-export const serResourceRestApi = restApi("/authsvr/v2/resource");
+const authUserBaseUrl = "/authsvr/v2/authuserinfo"
+export  const authUserTableUrl = `${authUserBaseUrl}/page`
+export function getAuthUserDetail(id) {
+    return request({
+        url: `${authUserBaseUrl}/detail/`+id,
+        method: "GET"
+    })
+}
 
+/****************************** 机构属性管理 ************************************ */
+export function orgInfoDetail(id) {
+    return request({
+        url: `/authsvr/v2/authorginfo/detail/`+id,
+        method: "GET"
+    })
+}
 

+ 2 - 2
src/api/jz-base/index.js

@@ -10,7 +10,7 @@ const { getSetting } = window.systemParamsUtils;
 const baseApi = {
     fetchCode: function(codeName, module) {
         return request({
-            url: "/api/codelist/code/" + codeName,
+            url: "/duceap/v2/resource/codelist/code/" + codeName,
             method: "get",
             baseURL: this._getBaseURL(module)
         });
@@ -18,7 +18,7 @@ const baseApi = {
 
     fetchEnum: function(enumName, module) {
         return request({
-            url: "/api/codelist/enum/" + enumName,
+            url: "/duceap/v2/resource/codelist/enum/" + enumName,
             method: "get",
             baseURL: this._getBaseURL(module)
         });

+ 31 - 0
src/api/ser-resource-manage.js

@@ -0,0 +1,31 @@
+/****************************** 服务资源管理 ************************************ */
+import request from "@/utils/request";
+
+const baseUrl = "/authsvr/v2/resource"
+export const tableUrl = baseUrl+"/search"
+export function save(data) {
+    return request({
+        url: `${baseUrl}/save`,
+        method: "POST",
+        data
+    })
+}
+export function update(data) {
+    return request({
+        url: `${baseUrl}/update`,
+        method: "PUT",
+        data
+    })
+}
+export function detail(id) {
+    return request({
+        url: `${baseUrl}/`+id,
+        method: "GET",
+    })
+}
+export function del(id) {
+    return request({
+        url: `${baseUrl}/`+id,
+        method: "DELETE",
+    })
+}

+ 10 - 5
src/mixins/transfer-business-tag.js

@@ -1,7 +1,9 @@
 import { getBusinessTagTree } from "@/api/data-auth";
 export default {
     data() {
-        return {}
+        return {
+            tagTree: []
+        };
     },
     methods: {
         // 构建新的一级标签树
@@ -33,12 +35,15 @@ export default {
         },
         // 获取业务域标签树
         getTagTree() {
-            getBusinessTagTree().then(res => {
-                this.tagTree = res.data.content;
+            return new Promise(resolve => {
+                getBusinessTagTree().then(res => {
+                    this.tagTree = res.data.content;
+                    resolve(res);
+                });
             });
         }
     },
-    created() {
-        this.getTagTree();
+    async created() {
+        await this.getTagTree();
     }
 };

+ 3 - 1
src/pages/common/import/index.vue

@@ -35,7 +35,9 @@ const dd = {
     govUser: "政府人员模版.xls",
     apply: "应用资源模板.xls",
     appFun: "功能资源模板.xls",
-    serviceResource: "服务资源模板.xls"
+    serviceResource: "服务资源模板.xls",
+    org: "机构模板.xls",
+    user: "人员模板.xls",
 };
 
 export default {

+ 20 - 14
src/pages/common/tree/index.vue

@@ -12,10 +12,12 @@
                 size="mini"
                 @keyup.enter.native="handleSearch"
             ></el-input>
-            <dg-button type="primary" @click="handleSearch" icon="el-icon-search" class="u-tree__search-btn" size="mini">查询</dg-button>
+            <dg-button type="primary" @click="handleSearch" icon="el-icon-search" class="u-tree__search-btn" size="mini"
+                >查询</dg-button
+            >
         </div>
         <div v-if="searchResultList.length == 0 && isclickSearch && !loading" class="no-search-data">暂无数据</div>
-        <div class="u-tree__bar" :style="{ height: treeHeight}">
+        <div class="u-tree__bar" :style="{ height: treeHeight }">
             <dg-scrollbar v-show="!isclickSearch" :key="key">
                 <dg-tree
                     ref="tree"
@@ -41,7 +43,12 @@
             </dg-scrollbar>
             <dg-scrollbar load-distance @scroll-bottom="handleScrollToBottomLoading" v-loading="loading">
                 <ul class="search-result" v-show="searchResultList.length > 0">
-                    <li :class="{'is-active': item.selected}" v-for="(item, index) in searchResultList" :key="index" @click="doClickSearchItem(item,index)">
+                    <li
+                        :class="{ 'is-active': item.selected }"
+                        v-for="(item, index) in searchResultList"
+                        :key="index"
+                        @click="doClickSearchItem(item, index)"
+                    >
                         {{ item.fullName }}
                     </li>
                 </ul>
@@ -176,7 +183,7 @@ export default {
                 return;
             }
             this.loading = true;
-            setTimeout(function () {
+            setTimeout(() => {
                 this.searchForm.pageNum++;
                 this.treeMatch();
             }, 500);
@@ -187,7 +194,7 @@ export default {
             commonApi.treeMatch(searchForm).then((res) => {
                 let { content, totalElements } = res.data;
                 for (let i = 0; i < content.length; i++) {
-                    content[i].selected = false;                    
+                    content[i].selected = false;
                 }
                 this.searchResultList = [...this.searchResultList, ...content];
                 this.isLast = this.searchResultList.length == totalElements;
@@ -210,7 +217,7 @@ export default {
         doClickSearchItem(item, index) {
             // 清空选中效果
             for (let i = 0; i < this.searchResultList.length; i++) {
-                this.searchResultList[i].selected = false;               
+                this.searchResultList[i].selected = false;
             }
             // 设置选中效果
             this.searchResultList[index].selected = true;
@@ -323,17 +330,16 @@ export default {
     .dg-tree-node .el-tree-node__content > .el-tree-node__expand-icon {
         margin-left: 7px;
     }
-
 }
 
-  .u-tree__search {
-        margin-bottom: 8px;
-        display: flex;
-        align-items: center;
-        &-btn {
-            margin-left: 5px;
-        }
+.u-tree__search {
+    margin: 8px;
+    display: flex;
+    align-items: center;
+    &-btn {
+        margin-left: 5px;
     }
+}
 
 .no-search-data {
     text-align: center;

+ 1 - 1
src/pages/data-auth-module/auth-object-manage/appfun-resource-manage/add-func-form.vue

@@ -20,7 +20,7 @@
                     <span v-else>{{ form.appName }}</span>
                 </el-form-item>
                 <el-form-item label="设计安全隐私类别:" prop="designSecureType">
-                    <el-input v-model="form.designSecureType" placeholder="" v-if="!isDetail"></el-input>
+                    <dg-select v-model="form.designSecureType" placeholder="" enum="SecurityPrivacyEnum" v-if="!isDetail"></dg-select>
                     <span v-else>{{ form.designSecureType }}</span>
                 </el-form-item>
             </dg-col>

+ 1 - 11
src/pages/data-auth-module/auth-object-manage/appfun-resource-manage/app-list.vue

@@ -23,7 +23,7 @@
         <dg-row zebra="10px">
             <dg-button type="primary" icon="el-icon-upload2" @click="handleImport">导入</dg-button>
             <dg-button type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd">新增</dg-button>
-            <dg-button type="primary" icon="el-icon-refresh" @click="handleSync">同步</dg-button>
+            <!-- <dg-button type="primary" icon="el-icon-refresh" @click="handleSync">同步</dg-button> -->
         </dg-row>
         <!-- 表格 -->
         <dg-table
@@ -89,16 +89,6 @@ export default {
                 { icon: "el-icon-document", tooltip: "详情", on: this.handleViewDetail },
                 { icon: "el-icon-delete", tooltip: "删除", on: this.handleDelete }
             ],
-            applyStatusList: [
-                {
-                    value: "0",
-                    label: "禁用"
-                },
-                {
-                    value: "1",
-                    label: "启用"
-                }
-            ],
             rowStyle: {
                 cursor: "pointer"
             }

+ 19 - 13
src/pages/data-auth-module/auth-object-manage/service-resource-manage/add-form.vue

@@ -5,19 +5,19 @@
 -->
 <template>
     <dg-row>
-        <el-form ref="form" :model="form" :rules="rules" label-width="140px">
+        <el-form ref="form" :model="form" :rules="rules" label-width="180px">
             <dg-col :span="12">
                 <el-form-item label="服务资源标识符:" prop="serviceCode">
                     <el-input v-model="form.serviceCode" placeholder="" v-if="!isDetail"></el-input>
                     <span v-else>{{ form.serviceCode }}</span>
                 </el-form-item>
                 <el-form-item label="服务类型:" prop="serviceType">
-                    <dg-select v-model="form.serviceType" v-if="!isDetail"></dg-select>
-                    <span v-else>{{ form.serviceType }}</span>
+                    <dg-select v-model="form.serviceType" enum="ServiceResourceTypeEnum" v-if="!isDetail"></dg-select>
+                    <div v-else v-translate="{ enum: 'ServiceResourceTypeEnum' }">{{ form.serviceType }}</div>
                 </el-form-item>
                 <el-form-item label="是否自用服务:" prop="mustSelf">
-                    <dg-select v-model="form.mustSelf" v-if="!isDetail"></dg-select>
-                    <span v-else>{{ form.mustSelf }}</span>
+                    <dg-select v-model="form.mustSelf" enum="BooleanEnum" v-if="!isDetail"></dg-select>
+                    <div v-else  v-translate="{ enum: 'BooleanEnum' }">{{ form.mustSelf }}</div>
                 </el-form-item>
             </dg-col>
             <dg-col :span="12">
@@ -26,9 +26,15 @@
                     <span v-else>{{ form.serviceName }}</span>
                 </el-form-item>
                 <el-form-item label="服务提供方式:" prop="serviceProvideWay">
-                    <dg-select v-model="form.serviceProvideWay" v-if="!isDetail"></dg-select>
-                    <span v-else>{{ form.serviceProvideWay }}</span>
+                    <dg-select
+                        v-model="form.serviceProvideWay"
+                        enum="ServiceProvideWayEnum"
+                        v-if="!isDetail"
+                    ></dg-select>
+                    <div v-else v-translate="{ enum: 'ServiceProvideWayEnum' }">{{ form.serviceProvideWay }}</div>
                 </el-form-item>
+            </dg-col>
+            <dg-col :span="24">
                 <el-form-item label="服务访问地址:" prop="serviceUrl">
                     <el-input
                         v-model="form.serviceUrl"
@@ -61,7 +67,7 @@
 </template>
 
 <script>
-import { serResourceRestApi } from "@/api/data-auth";
+import * as Api from "@/api/ser-resource-manage";
 export default {
     props: {
         id: String,
@@ -74,9 +80,9 @@ export default {
     data() {
         return {
             form: {
-                appCode: "",
+                appCode: "Y-120000000000-0047",
                 appName: "",
-                mustSelf: "",
+                mustSelf: "1",
                 remark: "",
                 serviceCode: "",
                 serviceName: "",
@@ -101,7 +107,7 @@ export default {
                 this.$refs.form.validate((valid) => {
                     if (valid) {
                         const api = this.id ? "update" : "save";
-                        serResourceRestApi[api](this.form)
+                        Api[api](this.form)
                             .then((res) => {
                                 this.$message.success("保存成功!");
                                 resolve("成功");
@@ -117,8 +123,8 @@ export default {
          * 获取详情
          */
         getDetail() {
-            serResourceRestApi.detail(this.id).then((res) => {
-                this.form = res;
+            Api.detail(this.id).then((res) => {
+                this.form = res.data.content;
             });
         }
     },

+ 25 - 16
src/pages/data-auth-module/auth-object-manage/service-resource-manage/index.vue

@@ -8,13 +8,13 @@
         <!-- 搜索项 -->
         <el-form :inline="true" class="search-form">
             <el-form-item label="数据资源名称">
-                <el-input v-model="form.name.value" clearable></el-input>
+                <el-input v-model="form.serviceName.value" clearable></el-input>
             </el-form-item>
             <el-form-item label="数据提供方式">
-                <dg-select v-model="form.name.value" clearable></dg-select>
+                <dg-select v-model="form.serviceProvideWay.value" enum="ServiceProvideWayEnum" clearable></dg-select>
             </el-form-item>
             <el-form-item label="数据提供应用系统名称">
-                <el-input v-model="form.name.value" clearable></el-input>
+                <el-input v-model="form.appName.value" clearable></el-input>
             </el-form-item>
             <el-form-item>
                 <dg-button type="primary" @click="handleSearch" icon="el-icon-search">查询</dg-button>
@@ -25,17 +25,17 @@
         <dg-row zebra="10px">
             <dg-button type="primary" icon="el-icon-upload2" @click="handleImport">导入</dg-button>
             <dg-button type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd">新增</dg-button>
-            <dg-button type="primary" icon="el-icon-refresh" @click="handleSync">同步</dg-button>
+            <!-- <dg-button type="primary" icon="el-icon-refresh" @click="handleSync">同步</dg-button> -->
         </dg-row>
         <!-- 表格 -->
         <dg-table ref="table" :url="tableUrl" :condition="form" border row-key="id">
             <dg-table-column type="index" width="75" label="序号" align="center"></dg-table-column>
-            <dg-table-column prop="levelCode" label="服务资源标识符" align="center"></dg-table-column>
-            <dg-table-column prop="levelName" label="服务资源名称" align="center"></dg-table-column>
-            <dg-table-column prop="levelName" label="服务类型" align="center"></dg-table-column>
-            <dg-table-column prop="levelName" label="服务提供方式" align="center"></dg-table-column>
-            <dg-table-column prop="levelName" label="是否自用服务" align="center"></dg-table-column>
-            <dg-table-column prop="levelName" label="服务提供应用系统名称" align="center"></dg-table-column>
+            <dg-table-column prop="serviceCode" label="服务资源标识符" align="center"></dg-table-column>
+            <dg-table-column prop="serviceName" label="服务资源名称" align="center"></dg-table-column>
+            <dg-table-column prop="serviceType" label="服务类型" align="center" enum="ServiceResourceTypeEnum"></dg-table-column>
+            <dg-table-column prop="serviceProvideWay" label="服务提供方式" align="center" enum="ServiceProvideWayEnum"></dg-table-column>
+            <dg-table-column prop="mustSelf" label="是否自用服务" align="center" enum="BooleanEnum"></dg-table-column>
+            <dg-table-column prop="appName" label="服务提供应用系统名称" align="center"></dg-table-column>
             <dg-table-column label="操作" align="center">
                 <template slot-scope="scope">
                     <div class="u-table__operation">
@@ -58,7 +58,7 @@
 <script>
 import importFile from "@/pages/common/import";
 import addForm from "./add-form";
-import { serResourceRestApi } from "@/api/data-auth";
+import * as Api from "@/api/ser-resource-manage";
 export default {
     components: {
         addForm
@@ -66,9 +66,17 @@ export default {
     data() {
         return {
             form: {
-                name: {
+                serviceProvideWay: {
                     value: "",
                     op: "="
+                },
+                 serviceName: {
+                    value: "",
+                    op: "like"
+                },
+                 appName: {
+                    value: "",
+                    op: "like"
                 }
             },
             optList: [
@@ -76,7 +84,7 @@ export default {
                 { icon: "el-icon-document", tooltip: "详情", on: this.handleViewDetail },
                 { icon: "el-icon-delete", tooltip: "删除", on: this.handleDelete }
             ],
-            tableUrl: serResourceRestApi.base + "/search"
+            tableUrl: Api.tableUrl
         };
     },
     computed: {},
@@ -98,8 +106,9 @@ export default {
          */
         handleDelete(row) {
             this.$dgConfirm(`是否确认删除该条服务资源!`, "提示", {}).then(() => {
-                serResourceRestApi.del(row.id).then((res) => {
-                    this.$message.success(res);
+                Api.del(row.id).then((res) => {
+                    const msg = res.data.content || '删除成功!';
+                    this.$message.success(msg);
                     this.handleSearch();
                 });
             });
@@ -168,7 +177,7 @@ export default {
                     });
                 },
 
-                area: ["800px", "500px"]
+                area: ["800px", "550px"]
             });
         },
         /**

+ 1 - 1
src/pages/data-auth-module/data-permission-manage/index.scss

@@ -3,7 +3,7 @@
 }
 /deep/ .org-card {
     .el-card__body {
-        padding: 20px 5px 20px 20px;
+        padding: 8px 5px 20px 20px;
         .el-tree-node__content {
             // margin-right: 20px;
         }

+ 42 - 38
src/pages/data-auth-module/property-management/DataConfig.js

@@ -9,32 +9,35 @@
 const UserTableData = [
     {
         label: "用户类型",
-        prop: ""
+        prop: "userType",
+        enum: "UserTypeEnum"
     },
     {
         label: "姓名",
-        prop: ""
+        prop: "userName"
     },
     {
         label: "身份证号码",
-        prop: ""
+        prop: "idcard"
     },
     {
         label: "编号",
-        prop: ""
+        prop: "policeNumber"
     },
     {
         label: "所属机构",
-        custom: true, // 如果需要自定义请加上这个属性,插槽名称为prop
-        prop: ""
+        // custom: true, // 如果需要自定义请加上这个属性,插槽名称为prop
+        prop: "orgName"
     },
     {
         label: "人员类型",
-        prop: ""
+        prop: "manType",
+        code: "DM_MAN_TYPE"
     },
     {
         label: "警种",
-        prop: ""
+        prop: "policeCategory",
+        code: "T_MD_POLICE_TYPE"
     }
 ];
 const ApplicationTableData = [
@@ -65,35 +68,36 @@ const ApplicationTableData = [
     }
 ];
 const typeData = {
-    jy: [
-        { label: "姓名", value: "name" },
-        { label: "性别", value: "sex" },
-        { label: "身份证号码", value: "idCard" },
-        { label: "省份", value: "province" },
-        { label: "编号", value: "number" },
-        { label: "人员类型", value: "typePersonnel" },
-        { label: "职级", value: "rank" },
-        { label: "人员类别", value: "categoryPersonnel" },
-        { label: "业务域", value: "businessDomain" },
-        { label: "警种", value: "policeClassification" }
+    10: [
+        { label: "姓名", value: "userName" },
+        { label: "性别", value: "sex", code: "DM_SEX" },
+        { label: "身份证号码", value: "idcard" },
+        { label: "省份", value: "area", code: "DM_AREA_CODE" },
+        { label: "编号", value: "policeNumber" },
+        { label: "人员类型", value: "manType", code: "DM_MAN_TYPE" },
+        { label: "职级", value: "title", code: "DM_CERT_DUTY_LEVEL" },
+        { label: "用户类别", value: "userType", enum: "UserTypeEnum" },
+        { label: "业务域", value: "policeBusiness" },
+        { label: "警种", value: "policeCategory", code: "T_MD_POLICE_TYPE" }
     ],
-    fj: [
-        { label: "姓名", value: "name" },
-        { label: "性别", value: "sex" },
-        { label: "身份证号码", value: "idCard" },
-        { label: "编号", value: "number" },
-        { label: "所属", value: "institution" },
-        { label: "人员类型", value: "typePersonnel" },
-        { label: "人员类别", value: "categoryPersonnel" },
-        { label: "业务域", value: "businessDomain" },
-        { label: "警种", value: "policeClassification" }
+    20: [
+        { label: "姓名", value: "userName" },
+        { label: "性别", value: "sex", code: "DM_SEX" },
+        { label: "身份证号码", value: "idcard" },
+        { label: "编号", value: "policeNumber" },
+        { label: "所属", value: "orgName" },
+        { label: "人员类型", value: "manType", code: "DM_MAN_TYPE" },
+        { label: "用户类别", value: "userType", enum: "UserTypeEnum" },
+        { label: "业务域", value: "policeBusiness" },
+        { label: "警种", value: "policeCategory", code: "T_MD_POLICE_TYPE" }
     ],
-    sgry: [
-        { label: "姓名", value: "name" },
-        { label: "性别", value: "sex" },
-        { label: "身份证号码", value: "idCard" },
-        { label: "编号", value: "number" },
-        { label: "人员类型", value: "typePersonnel" }
+    30: [
+        { label: "姓名", value: "userName" },
+        { label: "性别", value: "sex", code: "DM_SEX" },
+        { label: "身份证号码", value: "idcard" },
+        { label: "编号", value: "policeNumber" },
+        { label: "人员类型", value: "manType", code: "DM_MAN_TYPE" },
+        { label: "用户类别", value: "userType", enum: "UserTypeEnum" }
     ]
 };
 const institutionField = [
@@ -101,17 +105,17 @@ const institutionField = [
     { label: "机构类型", value: "orgType" },
     { label: "机构名称", value: "fullName" },
     { label: "行政区划", value: "areaCode" },
-    { label: "机构代码", value: "upGovCode" },
+    { label: "机构代码", value: "orgCode" },
     { label: "机构类别", value: "unitClass" },
     { label: "单位层级", value: "orgLevel" },
-    { label: "单位级别", value: "orgCode" },
+    { label: "单位级别", value: "orgRank" },
     { label: "单位类别", value: "orgKind" }
 ];
 const applicationField = [
     { label: "应用系统名称", value: "applyName" },
     { label: "应用系统编号", value: "applyCode" },
     { label: "应用英文名称", value: "appEnglishName" },
-    { label: "应用在用标识", value: "applyStatus" },
+    { label: "应用在用标识", value: "applyStatus", code: "DM_APPLY_STATUS" },
     { label: "上线日期", value: "lineTime" },
     { label: "应用系统事权单位代码", value: "managerOrgCode" },
     { label: "应用负责人", value: "fzr" },

+ 56 - 82
src/pages/data-auth-module/property-management/application-management/application-properties.vue

@@ -13,11 +13,13 @@
                 <el-input v-model="form.name" placeholder="请输入应用系统名称"></el-input>
             </el-form-item>
             <el-form-item label="应用在用标识">
-                <el-select v-model="form.userType" placeholder="请选择应用在用标识" style="width:13rem">
-                    <el-option label="全部" value="all"></el-option>
-                    <el-option label="启用" value="1"></el-option>
-                    <el-option label="停用" value="0"></el-option>
-                </el-select>
+                <dg-select
+                    v-model="form.userType"
+                    placeholder="请选择应用在用标识"
+                    code="DM_APPLY_STATUS"
+                    style="width: 13rem"
+                >
+                </dg-select>
             </el-form-item>
             <el-form-item label="应用系统事权单位代码">
                 <el-input v-model="form.name" placeholder="请输入应用系统事权单位代码"></el-input>
@@ -25,20 +27,23 @@
             <el-form-item>
                 <dg-button type="primary" @click="handleSearch" icon="el-icon-search">查询</dg-button>
             </el-form-item>
-            <el-form-item label="最近同步时间:" style="float:right">
+            <el-form-item label="最近同步时间:" style="float: right">
                 <span>2021-04-08 12:00:00</span>
             </el-form-item>
         </el-form>
         <div class="buttonGroup">
-            <dg-button type="primary" @click="handleLeading" icon="el-icon-upload2">导入</dg-button>
-            <dg-button type="primary" @click="handleSynchro" icon="el-icon-refresh">同步</dg-button>
-            <dg-button type="text" @click="handleInfo">详情</dg-button>
+            <dg-button type="primary" @click="handleImport" icon="el-icon-upload2">导入</dg-button>
+            <!-- <dg-button type="primary" @click="handleSynchro" icon="el-icon-refresh">同步</dg-button> -->
         </div>
 
-        <Table ref="myTable" :url="tableUrl" :headerData="ApplicationTableData" :condition="reportForm">
+        <Table ref="myTable" :url="tableUrl" :headerData="ApplicationTableData" :condition="form">
             <dg-table-column fixed="right" label="操作" align="center">
-                <template>
-                    <dg-button type="text" @click="handleInfo">详情</dg-button>
+                <template slot-scope="scope">
+                    <div class="u-table__operation">
+                        <el-tooltip content="详情" effect="dark" placement="top-end">
+                            <i class="el-icon-document" @click="handleViewDetail(scope.row)"></i>
+                        </el-tooltip>
+                    </div>
                 </template>
             </dg-table-column>
         </Table>
@@ -48,9 +53,10 @@
 <script>
 import Table from "@/pages/common/table";
 import { ApplicationTableData } from "../DataConfig";
-import * as dynamicManageApi from "@/api/dynamic-manage";
-import detail from "./detail";
-const editorArea = ["900px", "660px"];
+// import detail from "./detail";
+import detail from "../../auth-object-manage/appfun-resource-manage/add-app-form";
+import importFile from "@/pages/common/import";
+import { appRestApi } from "@/api/application";
 export default {
     name: "application-properties", // 组件名称
     props: {
@@ -61,62 +67,8 @@ export default {
         return {
             // 参数名称及默认值
             form: {},
-            rules: {},
-            options: [
-                {
-                    id: "fruits",
-                    label: "Fruits",
-                    children: [
-                        {
-                            id: "apple",
-                            label: "Apple",
-                            isNew: true
-                        },
-                        {
-                            id: "grapes",
-                            label: "Grapes",
-                            disabled: true
-                        },
-                        {
-                            id: "pear",
-                            label: "Pear"
-                        },
-                        {
-                            id: "strawberry",
-                            label: "Strawberry 🍓"
-                        },
-                        {
-                            id: "watermelon",
-                            label: "Watermelon 🍉"
-                        }
-                    ]
-                },
-                {
-                    id: "vegetables",
-                    label: "Vegetables",
-                    children: [
-                        {
-                            id: "corn",
-                            label: "Corn 🌽"
-                        },
-                        {
-                            id: "carrot",
-                            label: "Carrot 🥕"
-                        },
-                        {
-                            id: "eggplant",
-                            label: "Eggplant 🍆"
-                        },
-                        {
-                            id: "tomato",
-                            label: "Tomato 🍅"
-                        }
-                    ]
-                }
-            ],
             ApplicationTableData,
-            tableUrl: dynamicManageApi.tableUrl,
-            reportForm: {}
+            tableUrl: appRestApi.table
         };
     },
     computed: {}, // 计算属性
@@ -130,7 +82,32 @@ export default {
         /**
          * @description:导入方法
          */
-        handleLeading() {},
+        handleImport() {
+            const vm = this;
+            const layer = this.$dgLayer({
+                title: "导入",
+                content: importFile,
+                props: {
+                    temp: "apply",
+                    action: "/appsvr/v2/app/import"
+                },
+                on: {
+                    success(params) {
+                        layer.close(layer.dialogIndex);
+                    },
+                    close() {
+                        vm.handleSearch();
+                        layer.close(layer.dialogIndex);
+                    }
+                },
+                cancel: function (index, layero) {
+                    // 关闭对应弹窗的ID
+                    layer.close(index);
+                    return false;
+                },
+                area: ["550px", "500px"]
+            });
+        },
         /**
          * @description:同步方法
          */
@@ -138,29 +115,26 @@ export default {
         /**
          * @description:详情
          */
-        handleInfo() {
+        handleViewDetail(row) {
             const layer = this.$dgLayer({
                 title: "详情",
                 shade: [0.4, "#FFF"],
                 content: detail,
-                props: {},
+                props: {
+                    id: row.id,
+                    isDetail: true
+                },
                 on: {
                     success() {
                         layer.close(layer.dialogIndex);
                     }
                 },
-                area: editorArea
+                area: ["900px", "660px"]
             });
         }
-    }, // 内部方法
-    beforeCreate() {}, // 组件创建前
+    },
     created() {}, // 组件创建完成后
-    beforeMount() {}, // 组件挂载前
-    mounted() {}, // 组件挂载完成后
-    beforeUpdate() {}, // 组件更新前
-    updated() {}, // 组件挂载完成后
-    beforeDestroy() {}, // 组件销毁前
-    destroyed() {} // 组件销毁完成后
+    mounted() {} // 组件挂载完成后
 };
 </script>
 <style lang="scss" scoped>

+ 53 - 56
src/pages/data-auth-module/property-management/institutional-attributes.vue

@@ -8,22 +8,15 @@
 -->
 <template>
     <main class="institutional-attributes">
-        <el-form ref="ruleForm" inline :rules="rules" :model="form">
-            <el-form-item label="机构名称">
-                <el-input v-model="form.name" placeholder="请输入机构名称"></el-input>
-            </el-form-item>
-            <el-form-item>
-                <dg-button type="primary" @click="handleSearch" icon="el-icon-search">查询</dg-button>
-            </el-form-item>
-
-            <el-form-item label="最近同步时间:" style="float:right">
-                <span>2021-04-08 12:00:00</span>
+        <el-form ref="ruleForm" inline>
+            <el-form-item label="最近同步时间:" style="float: right">
+                <span>2021o-04-08 12:00:00</span>
             </el-form-item>
         </el-form>
 
         <div class="buttonGroup">
-            <dg-button type="primary" @click="handleLeading" icon="el-icon-upload2">导入</dg-button>
-            <dg-button type="primary" @click="handleSynchro" icon="el-icon-refresh">同步</dg-button>
+            <dg-button type="primary" @click="handleImport" icon="el-icon-upload2">导入</dg-button>
+            <!-- <dg-button type="primary" @click="handleSynchro" icon="el-icon-refresh">同步</dg-button> -->
         </div>
 
         <dg-row :gutter="20">
@@ -32,6 +25,7 @@
                     ref="tree"
                     class="u-pm__left"
                     title="机构列表"
+                    :search="true"
                     @handleGetNode="handleGetNode"
                     @submitRootNode="submitRootNode"
                 />
@@ -55,35 +49,18 @@
 <script>
 import Tree from "@/pages/common/tree";
 import { institutionField } from "./DataConfig";
-import * as empowMegApi from "@/api/empower-manage";
+import { orgInfoDetail } from "@/api/data-auth";
+import importFile from "@/pages/common/import";
 export default {
     name: "institutional-attributes", // 组件名称
-    props: {
-        // 接收父组件的数据
-    },
+    props: {},
     data() {
-        // 组件内部参数
         return {
             // 参数名称及默认值
             institutionField,
-            form: {},
-            formInfo: {
-                upGovName: "测试",
-                orgType: "测试",
-                fullName: "测试",
-                areaCode: "测试",
-                upGovCode: "测试",
-                unitClass: "测试",
-                orgLevel: "测试",
-                orgCode: "测试",
-                orgKind: "测试"
-            },
-            rules: {},
-            tableUrl: empowMegApi.tableUrl,
-            reportPersionForm: {
-                applyName: { value: "", op: "like" },
-                orgId: { value: "", op: "=" }
-            }
+            formInfo: {},
+            keyword: "",
+            currentId: ""
         };
     },
     computed: {}, // 计算属性
@@ -93,7 +70,32 @@ export default {
         /**
          * @description:导入方法
          */
-        handleLeading() {},
+        handleImport() {
+            const vm = this;
+            const layer = this.$dgLayer({
+                title: "导入",
+                content: importFile,
+                props: {
+                    temp: "org",
+                    action: "/authsvr/v2/authorginfo/import"
+                },
+                on: {
+                    success(params) {
+                        layer.close(layer.dialogIndex);
+                    },
+                    close() {
+                        vm.handleSearch();
+                        layer.close(layer.dialogIndex);
+                    }
+                },
+                cancel: function (index, layero) {
+                    // 关闭对应弹窗的ID
+                    layer.close(index);
+                    return false;
+                },
+                area: ["550px", "500px"]
+            });
+        },
         /**
          * @description:同步方法
          */
@@ -102,35 +104,30 @@ export default {
          * @description:树方法
          */
         handleGetNode({ id }) {
-            const that = this;
-            const oldVal = that.reportPersionForm.orgId.value;
-            if (oldVal != id) {
-                that.reportPersionForm.orgId.value = id;
-                that.handleSearch();
+            if (this.currentId != id) {
+                this.currentId = id;
+                this.getDetail();
             }
         },
         /**
-         * @description: 默认查询跟节点
+         * 获取机构详情
          */
-        submitRootNode({ id, name }) {
-            const that = this;
-            this.$nextTick(() => {
-                that.handleGetNode({ id, name });
+        getDetail() {
+            orgInfoDetail(this.currentId).then((res) => {
+                this.formInfo = res.data;
             });
         },
         /**
-         * @description: 表单查询
+         * @description: 默认查询跟节点
          */
-        handleSearch() {}
-    }, // 内部方法
-    beforeCreate() {}, // 组件创建前
+        submitRootNode({ id, name }) {
+            this.$nextTick(() => {
+                this.handleGetNode({ id, name });
+            });
+        }
+    },
     created() {}, // 组件创建完成后
-    beforeMount() {}, // 组件挂载前
-    mounted() {}, // 组件挂载完成后
-    beforeUpdate() {}, // 组件更新前
-    updated() {}, // 组件挂载完成后
-    beforeDestroy() {}, // 组件销毁前
-    destroyed() {} // 组件销毁完成后
+    mounted() {} // 组件挂载完成后
 };
 </script>
 <style lang="scss" scoped>

+ 49 - 42
src/pages/data-auth-module/property-management/user-management/detail.vue

@@ -7,77 +7,84 @@
 -->
 <template>
     <main class="user-attributes-detail">
-        <el-form ref="ruleForm" :model="data" label-width="120px">
+        <el-form ref="ruleForm" :model="detailInfo" label-width="120px" v-if="detailInfo.id" label-suffix=":">
             <el-row>
-                <el-col :span="12" v-for="(item, index) in typeData[infoType]" :key="index">
+                <el-col :span="12" v-for="(item, index) in typeData[userInfo.userType]" :key="index">
                     <el-form-item :label="item.label">
-                        <span>{{ data[item.value] }}</span>
+                        <!-- 业务域翻译 -->
+                        <template v-if="item.value == 'policeBusiness' && showTagTree">
+                            {{ transferBusinessTag(detailInfo[item.value]) }}
+                        </template>
+                        <template v-else>
+                            <!-- 表码翻译 -->
+                            <template v-if="item.code">
+                                <div class="u-detail__text" v-translate="{ code: item.code }">
+                                    {{ detailInfo[item.value] }}
+                                </div>
+                            </template>
+                            <!-- 枚举翻译 -->
+                            <template v-else-if="item.enum">
+                                <div class="u-detail__text" v-translate="{ enum: item.enum }">
+                                    {{ detailInfo[item.value] }}
+                                </div>
+                            </template>
+                            <!-- 普通文本 -->
+                            <div v-else>{{ detailInfo[item.value] }}</div>
+                        </template>
                     </el-form-item>
                 </el-col>
             </el-row>
         </el-form>
-        <Table
+        <!-- <Table
             ref="myTable"
             :url="tableUrl"
             :headerData="UserTableData"
             :condition="reportForm"
-            v-if="infoType == 'jy'"
-        />
+            v-if="userInfo.userType == '10'"
+        /> -->
     </main>
 </template>
 
 <script>
 import Table from "@/pages/common/table";
 import { UserTableData, typeData } from "../DataConfig";
-import * as dynamicManageApi from "@/api/dynamic-manage";
+import { getAuthUserDetail } from "@/api/data-auth";
+import transferBusinessTagMixin from "@/mixins/transfer-business-tag";
+
 export default {
     name: "user-attributes-detail", // 组件名称
     props: {
         // 接收父组件的数据
-        infoType: {
-            type: [String, Number],
-            default: "jy"
-        },
-        data: {
-            type: Object,
-            default() {
-                return {
-                    name: "测试数据中",
-                    sex: "测试数据中",
-                    idCard: "测试数据中",
-                    province: "测试数据中",
-                    number: "测试数据中",
-                    typePersonnel: "测试数据中",
-                    rank: "测试数据中",
-                    categoryPersonnel: "测试数据中",
-                    businessDomain: "测试数据中",
-                    policeClassification: "测试数据中"
-                };
-            }
-        }
+        userInfo: Object
     },
+    mixins: [transferBusinessTagMixin],
     data() {
         // 组件内部参数
         return {
-            // 参数名称及默认值
             UserTableData,
             typeData,
-            tableUrl: dynamicManageApi.tableUrl,
-            reportForm: {}
+            detailInfo: {}
         };
     },
-    computed: {}, // 计算属性
-    watch: {}, // 侦听器(扩展的计算属性)
     components: { Table }, // 注册局部组件
-    methods: {}, // 内部方法
-    beforeCreate() {}, // 组件创建前
-    created() {}, // 组件创建完成后
-    beforeMount() {}, // 组件挂载前
-    mounted() {}, // 组件挂载完成后
-    beforeUpdate() {}, // 组件更新前
-    updated() {}, // 组件挂载完成后
-    beforeDestroy() {}, // 组件销毁前
-    destroyed() {} // 组件销毁完成后
+    computed: {
+        showTagTree() {
+           return this.tagTree.length > 0
+        }
+    },
+    methods: {
+        getDetail() {
+            return new Promise((resolve) => {
+                getAuthUserDetail(this.userInfo.id).then((res) => {
+                    this.detailInfo = res.data;
+                    resolve(res.data);
+                });
+            });
+        }
+    }, // 内部方法
+    async created() {
+        await this.getDetail();
+    }
 };
 </script>
 <style lang="scss" scoped></style>

+ 79 - 87
src/pages/data-auth-module/property-management/user-management/user-attributes.vue

@@ -9,17 +9,14 @@
     <main class="user-attributes">
         <el-form ref="ruleForm" inline :rules="rules" :model="form">
             <el-form-item label="用户类别">
-                <el-select v-model="form.userType" placeholder="请选择用户类别">
-                    <el-option label="警员" value="shanghai"></el-option>
-                    <el-option label="辅警" value="beijing"></el-option>
-                    <el-option label="施工人员" value="beijing"></el-option>
-                </el-select>
+                <dg-select v-model="form.userType.value" placeholder="请选择用户类别" enum="UserTypeEnum" clearable>
+                </dg-select>
             </el-form-item>
             <el-form-item label="姓名">
-                <el-input v-model="form.name" placeholder="请输入姓名"></el-input>
+                <el-input v-model="form.userName.value" placeholder="请输入姓名" clearable></el-input>
             </el-form-item>
             <el-form-item label="身份证号">
-                <el-input v-model="form.idCard" placeholder="请输入身份证号"></el-input>
+                <el-input v-model="form.idcard.value" placeholder="请输入身份证号" clearable></el-input>
             </el-form-item>
 
             <el-form-item label="所属机构">
@@ -36,21 +33,23 @@
             <el-form-item>
                 <dg-button type="primary" @click="handleSearch" icon="el-icon-search">查询</dg-button>
             </el-form-item>
-            
-            <el-form-item label="最近同步时间:" style="float:right">
+
+            <el-form-item label="最近同步时间:" style="float: right">
                 <span>2021-04-08 12:00:00</span>
             </el-form-item>
         </el-form>
         <div class="buttonGroup">
-            <dg-button type="primary" @click="handleLeading" icon="el-icon-upload2">导入</dg-button>
-            <dg-button type="primary" @click="handleSynchro" icon="el-icon-refresh">同步</dg-button>
-            <dg-button type="text" @click="handleInfo">详情</dg-button>
+            <dg-button type="primary" @click="handleImport" icon="el-icon-upload2">导入</dg-button>
+            <!-- <dg-button type="primary" @click="handleSynchro" icon="el-icon-refresh">同步</dg-button> -->
         </div>
-
-        <Table ref="myTable" :url="tableUrl" :headerData="UserTableData" :condition="reportForm">
+        <Table ref="myTable" :url="tableUrl" :headerData="UserTableData" :condition="form">
             <dg-table-column fixed="right" label="操作" align="center">
-                <template>
-                    <dg-button type="text" @click="handleInfo">详情</dg-button>
+                <template slot-scope="scope">
+                    <div class="u-table__operation">
+                        <el-tooltip content="详情" effect="dark" placement="top-end">
+                            <i class="el-icon-document" @click="handleViewDetail(scope.row)"></i>
+                        </el-tooltip>
+                    </div>
                 </template>
             </dg-table-column>
         </Table>
@@ -60,9 +59,10 @@
 <script>
 import Table from "@/pages/common/table";
 import { UserTableData } from "../DataConfig";
-import * as dynamicManageApi from "@/api/dynamic-manage";
+import { authUserTableUrl } from "@/api/data-auth";
+import baseApi from "@/api/jz-base";
 import detail from "./detail";
-const editorArea = ["900px", "660px"];
+import importFile from "@/pages/common/import";
 export default {
     name: "user-attributes", // 组件名称
     props: {
@@ -72,63 +72,28 @@ export default {
         // 组件内部参数
         return {
             // 参数名称及默认值
-            form: {},
-            rules: {},
-            options: [
-                {
-                    id: "fruits",
-                    label: "Fruits",
-                    children: [
-                        {
-                            id: "apple",
-                            label: "Apple",
-                            isNew: true
-                        },
-                        {
-                            id: "grapes",
-                            label: "Grapes",
-                            disabled: true
-                        },
-                        {
-                            id: "pear",
-                            label: "Pear"
-                        },
-                        {
-                            id: "strawberry",
-                            label: "Strawberry 🍓"
-                        },
-                        {
-                            id: "watermelon",
-                            label: "Watermelon 🍉"
-                        }
-                    ]
+            form: {
+                userName: {
+                    value: "",
+                    op: "like"
+                },
+                idcard: {
+                    value: "",
+                    op: "like"
+                },
+                userType: {
+                    value: "",
+                    op: "="
                 },
-                {
-                    id: "vegetables",
-                    label: "Vegetables",
-                    children: [
-                        {
-                            id: "corn",
-                            label: "Corn 🌽"
-                        },
-                        {
-                            id: "carrot",
-                            label: "Carrot 🥕"
-                        },
-                        {
-                            id: "eggplant",
-                            label: "Eggplant 🍆"
-                        },
-                        {
-                            id: "tomato",
-                            label: "Tomato 🍅"
-                        }
-                    ]
+                orgCode: {
+                    value: "",
+                    op: "="
                 }
-            ],
+            },
+            rules: {},
+            options: [],
             UserTableData,
-            tableUrl: dynamicManageApi.tableUrl,
-            reportForm: {}
+            tableUrl: authUserTableUrl
         };
     },
     computed: {}, // 计算属性
@@ -138,11 +103,38 @@ export default {
         /**
          * @description:表单查询方法
          */
-        handleSearch() {},
+        handleSearch() {
+            this.$refs.myTable.handleSearchClick();
+        },
         /**
          * @description:导入方法
          */
-        handleLeading() {},
+          handleImport() {
+            const vm = this;
+            const layer = this.$dgLayer({
+                title: "导入",
+                content: importFile,
+                props: {
+                    temp: "user",
+                    action: "/authsvr/v2/authuserinfo/import"
+                },
+                on: {
+                    success(params) {
+                        layer.close(layer.dialogIndex);
+                    },
+                    close() {
+                        vm.handleSearch();
+                        layer.close(layer.dialogIndex);
+                    }
+                },
+                cancel: function (index, layero) {
+                    // 关闭对应弹窗的ID
+                    layer.close(index);
+                    return false;
+                },
+                area: ["550px", "500px"]
+            });
+        },
         /**
          * @description:同步方法
          */
@@ -150,29 +142,29 @@ export default {
         /**
          * @description:详情
          */
-        handleInfo() {
+        handleViewDetail(row) {
+            const userTypeName = this.userType.find((item) => item.value == row.userType).label;
             const layer = this.$dgLayer({
-                title: "警员详情",
+                title: `${userTypeName}详情`,
                 shade: [0.4, "#FFF"],
                 content: detail,
-                props: {},
+                props: {
+                    userInfo: row
+                },
                 on: {
                     success() {
                         layer.close(layer.dialogIndex);
                     }
                 },
-                area: editorArea
+                area: ["900px", "660px"]
             });
         }
-    }, // 内部方法
-    beforeCreate() {}, // 组件创建前
-    created() {}, // 组件创建完成后
-    beforeMount() {}, // 组件挂载前
-    mounted() {}, // 组件挂载完成后
-    beforeUpdate() {}, // 组件更新前
-    updated() {}, // 组件挂载完成后
-    beforeDestroy() {}, // 组件销毁前
-    destroyed() {} // 组件销毁完成后
+    },
+    created() {
+        baseApi.fetchEnum("UserTypeEnum").then((res) => {
+            this.userType = res.data;
+        });
+    } // 组件创建完成后
 };
 </script>
 <style lang="scss" scoped>