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

电签监控、用户管理合同段角色优化

duy 5 днів тому
батько
коміт
45be6daefd
3 змінених файлів з 125 додано та 299 видалено
  1. 2 2
      src/config/index.json
  2. 1 1
      src/views/monitor/certificate.vue
  3. 122 296
      src/views/system/user.vue

+ 2 - 2
src/config/index.json

@@ -3,8 +3,8 @@
 
 
   "target22": "http://39.108.216.210:8090",
-  "target33": "http://192.168.0.109:8090",
-  "target11": "http://219.151.181.73:8090",
+  "target11": "http://192.168.0.109:8090",
+  "target33": "http://219.151.181.73:8090",
   "target3": "http://183.247.216.148:28090",
   "dev": {
     "port": 1888

+ 1 - 1
src/views/monitor/certificate.vue

@@ -89,7 +89,7 @@
       class="martop20 tableList"
       :data="tableData"
       style="width: 100%"
-      max-height="550"
+      max-height="calc(100vh - 350px)"
     >
       <el-table-column type="index" label="序号" width="80"> </el-table-column>
       <el-table-column prop="type" label="所属系统" width="100">

+ 122 - 296
src/views/system/user.vue

@@ -4,179 +4,76 @@
       <div class="h-100p">
         <el-scrollbar>
           <basic-container class="my-basic-con">
-            <avue-tree
-              :option="treeOption"
-              :data="treeData"
-              @node-click="nodeClick"
-            />
+            <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick" />
           </basic-container>
         </el-scrollbar>
       </div>
     </el-col>
     <el-col :span="19">
       <basic-container>
-        <avue-crud
-          :option="option"
-          :search.sync="search"
-          :table-loading="loading"
-          :data="data"
-          ref="crud"
-          :before-close="beforeClose"
-          v-model="form"
-          :permission="permissionList"
-          @row-del="rowDel"
-          @row-update="rowUpdate"
-          @row-save="rowSave"
-          :before-open="beforeOpen"
-          :page.sync="page"
-          @search-change="searchChange"
-          @search-reset="searchReset"
-          @selection-change="selectionChange"
-          @current-change="currentChange"
-          @size-change="sizeChange"
-          @refresh-change="refreshChange"
-          @on-load="onLoad"
-        >
+        <avue-crud :option="option" :search.sync="search" :table-loading="loading" :data="data" ref="crud"
+          :before-close="beforeClose" v-model="form" :permission="permissionList" @row-del="rowDel"
+          @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" :page.sync="page"
+          @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+          @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
           <!-- 自 定义按钮 -->
           <template slot-scope="{ row, index }" slot="menu">
-            <el-link
-              class="marleft10"
-              :underline="false"
-              type="primary"
-              icon="el-icon-edit"
-              size="small"
-              @click="editKJ(row, index)"
-              >编辑
+            <el-link class="marleft10" :underline="false" type="primary" icon="el-icon-edit" size="small"
+              @click="editKJ(row, index)">编辑
             </el-link>
-            <el-link
-              class="marleft10"
-              :underline="false"
-              type="primary"
-              icon="el-icon-delete"
-              size="small"
-              @click="$refs.crud.rowDel(row, index)"
-              >删除
+            <el-link class="marleft10" :underline="false" type="primary" icon="el-icon-delete" size="small"
+              @click="$refs.crud.rowDel(row, index)">删除
             </el-link>
           </template>
 
           <!-- 参建项目 -->
           <template slot-scope="{ type }" slot="projectAndUserListForm">
-            <div
-              class="flexStar marbottom10"
-              v-for="(el, key) in fromss.projectAndUserList"
-              :key="key"
-            >
+            <div class="flexStar marbottom10" v-for="(el, key) in fromss.projectAndUserList" :key="key">
               <el-input v-model="el.projectName" :disabled="true"></el-input>
-              <el-select
-                class="marleft10"
-                v-model="el.contractName"
-                placeholder="请选择"
-                @change="contractChange(key)"
-              >
-                <el-option
-                  v-for="(item, index) in fromss.projectAndUserList[key]
-                    .dataInfo"
-                  :key="item.id"
-                  :label="item.contractName"
-                  :value="item.id"
-                >
+              <el-select class="marleft10" v-model="el.contractName" placeholder="请选择" @change="contractChange(key)">
+                <el-option v-for="(item, index) in fromss.projectAndUserList[key]
+                  .dataInfo" :key="item.id" :label="item.contractName" :value="item.id">
                   <span style="float: left">{{ item.contractName }}</span>
-                  <el-button
-                    @click.stop="deleteProject(key, type, index)"
-                    style="float: right; margin-right: 5px; margin-top: 3px"
-                    type="danger"
-                    size="mini"
-                    icon="el-icon-delete"
-                    circle
-                  ></el-button>
+                  <el-button @click.stop="deleteProject(key, type, index)"
+                    style="float: right; margin-right: 5px; margin-top: 3px" type="danger" size="mini"
+                    icon="el-icon-delete" circle></el-button>
                 </el-option>
               </el-select>
               <!-- 是否可以编辑合同段角色 -->
               <template v-if="!el.isCanEditProjectRole">
-                <el-input
-                  class="marleft10"
-                  v-model="el.roleName"
-                  :disabled="true"
-                ></el-input>
+                <el-input class="marleft10" v-model="el.roleName" :disabled="true"></el-input>
 
-                <el-button
-                  @click="el.isCanEditProjectRole = true"
-                  class="marleft10"
-                  type="warning"
-                  icon="el-icon-edit"
-                  :disabled="deletexiangmu"
-                  circle
-                ></el-button>
+                <el-button @click="el.isCanEditProjectRole = true" class="marleft10" type="warning" icon="el-icon-edit"
+                  :disabled="deletexiangmu" circle></el-button>
               </template>
               <template v-else>
-                <el-select
-                  :disabled="type == 'view'"
-                  class="marleft10"
-                  v-model="el.roleId"
-                  filterable
-                  placeholder="请选择"
-                  @change="(e) => contractRoleChange(key, el.contractId, e)"
-                >
-                  <el-option
-                    v-for="item in roleIdsData"
-                    :key="item.roleId"
-                    :label="item.roleName"
-                    :value="item.roleId"
-                  >
+                <el-select :disabled="type == 'view'" class="marleft10" v-model="el.roleId" filterable placeholder="请选择"
+                  @change="(e) => contractRoleChange(key, el.contractId, e)">
+                  <el-option v-for="item in roleIdsData" :key="item.roleId" :label="item.roleName" :value="item.roleId">
                   </el-option>
                 </el-select>
 
-                <el-button
-                  @click="updateContractRole(key, el.contractId, el.roleId)"
-                  class="marleft10"
-                  type="primary"
-                  icon="el-icon-document-checked"
-                  :disabled="deletexiangmu"
-                  circle
-                ></el-button>
+                <el-button @click="updateContractRole(key)" class="marleft10" type="primary"
+                  icon="el-icon-document-checked" :disabled="deletexiangmu" circle></el-button>
               </template>
 
-              <el-button
-                @click="deleteProject2(key, type)"
-                class="marleft10"
-                type="danger"
-                icon="el-icon-delete"
-                :disabled="deletexiangmu"
-                circle
-              ></el-button>
+              <el-button @click="deleteProject2(key, type)" class="marleft10" type="danger" icon="el-icon-delete"
+                :disabled="deletexiangmu" circle></el-button>
             </div>
           </template>
 
           <!-- 参与项目自定义表单 -->
           <template slot="projectIdForm" slot-scope="{ type }">
-            <el-select
-              v-model="fromss.projectId"
-              :disabled="type == 'view'"
-              placeholder="请选择"
-            >
-              <el-option
-                v-for="item in projectData"
-                :key="item.id"
-                :label="item.projectName"
-                :value="item.id"
-              >
+            <el-select v-model="fromss.projectId" :disabled="type == 'view'" placeholder="请选择">
+              <el-option v-for="item in projectData" :key="item.id" :label="item.projectName" :value="item.id">
               </el-option>
             </el-select>
           </template>
 
           <!-- 合同段自定义表单 -->
           <template slot="contractIdForm" slot-scope="{ type }">
-            <el-select
-              :disabled="type == 'view'"
-              v-model="fromss.contractId"
-              placeholder="请选择"
-            >
-              <el-option
-                v-for="item in contractData"
-                :key="item.id"
-                :label="item.contractName"
-                :value="item.id"
-              >
+            <el-select :disabled="type == 'view'" v-model="fromss.contractId" placeholder="请选择">
+              <el-option v-for="item in contractData" :key="item.id" :label="item.contractName" :value="item.id">
               </el-option>
             </el-select>
           </template>
@@ -184,110 +81,42 @@
           <!-- 用户类型自定义表单 -->
           <template slot-scope="{ type }" slot="roleIdsForm">
             <div class="flexStar">
-              <el-select
-                :disabled="type == 'view'"
-                v-model="fromss.roleIds"
-                filterable
-                placeholder="请选择"
-              >
-                <el-option
-                  v-for="item in roleIdsData"
-                  :key="item.roleId"
-                  :label="item.roleName"
-                  :value="item.roleId"
-                >
+              <el-select :disabled="type == 'view'" v-model="fromss.roleIds" filterable placeholder="请选择">
+                <el-option v-for="item in roleIdsData" :key="item.roleId" :label="item.roleName" :value="item.roleId">
                 </el-option>
               </el-select>
-              <el-button
-                v-show="type !== 'view'"
-                class="marleft10"
-                type="warning"
-                size="mini"
-                @click="addProject(type)"
-                >确认添加
+              <el-button v-show="type !== 'view'" class="marleft10" type="warning" size="mini"
+                @click="addProject(type)">确认添加
               </el-button>
             </div>
           </template>
 
           <template slot="menuLeft">
-            <el-button
-              type="primary"
-              size="small"
-              icon="el-icon-plus"
-              @click="addKJ()"
-              >新 增
+            <el-button type="primary" size="small" icon="el-icon-plus" @click="addKJ()">新 增
             </el-button>
-            <el-button
-              type="danger"
-              size="small"
-              plain
-              icon="el-icon-delete"
-              v-if="permission.user_delete"
-              @click="handleDelete"
-              >删 除
+            <el-button type="danger" size="small" plain icon="el-icon-delete" v-if="permission.user_delete"
+              @click="handleDelete">删 除
             </el-button>
-            <el-button
-              type="info"
-              size="small"
-              plain
-              v-if="permission.user_role"
-              icon="el-icon-user"
-              @click="handleGrant"
-              >角色配置
+            <el-button type="info" size="small" plain v-if="permission.user_role" icon="el-icon-user"
+              @click="handleGrant">角色配置
             </el-button>
-            <el-button
-              type="info"
-              size="small"
-              plain
-              v-if="permission.user_reset"
-              icon="el-icon-refresh"
-              @click="handleReset"
-              >密码重置
+            <el-button type="info" size="small" plain v-if="permission.user_reset" icon="el-icon-refresh"
+              @click="handleReset">密码重置
             </el-button>
-            <el-button
-              type="info"
-              size="small"
-              plain
-              v-if="userInfo.role_name.includes('admin')"
-              icon="el-icon-setting"
-              @click="handlePlatform"
-              >平台配置
+            <el-button type="info" size="small" plain v-if="userInfo.role_name.includes('admin')" icon="el-icon-setting"
+              @click="handlePlatform">平台配置
             </el-button>
-            <el-button
-              type="info"
-              size="small"
-              plain
-              v-if="userInfo.role_name.includes('admin')"
-              icon="el-icon-coordinate"
-              @click="handLock"
-              >账号封禁
+            <el-button type="info" size="small" plain v-if="userInfo.role_name.includes('admin')"
+              icon="el-icon-coordinate" @click="handLock">账号封禁
             </el-button>
-            <el-button
-              type="info"
-              size="small"
-              plain
-              v-if="userInfo.role_name.includes('admin')"
-              icon="el-icon-coordinate"
-              @click="handleLock"
-              >账号解封
+            <el-button type="info" size="small" plain v-if="userInfo.role_name.includes('admin')"
+              icon="el-icon-coordinate" @click="handleLock">账号解封
             </el-button>
-            <el-button
-              type="success"
-              size="small"
-              plain
-              v-if="userInfo.role_name.includes('admin')"
-              icon="el-icon-upload2"
-              @click="handleImport"
-              >导入
+            <el-button type="success" size="small" plain v-if="userInfo.role_name.includes('admin')"
+              icon="el-icon-upload2" @click="handleImport">导入
             </el-button>
-            <el-button
-              type="warning"
-              size="small"
-              plain
-              v-if="userInfo.role_name.includes('admin')"
-              icon="el-icon-download"
-              @click="handleExport"
-              >导出
+            <el-button type="warning" size="small" plain v-if="userInfo.role_name.includes('admin')"
+              icon="el-icon-download" @click="handleExport">导出
             </el-button>
           </template>
           <template slot-scope="{ row }" slot="tenantName">
@@ -303,23 +132,9 @@
             <el-tag>{{ row.userTypeName }}</el-tag>
           </template>
         </avue-crud>
-        <el-dialog
-          title="用户角色配置"
-          append-to-body
-          :visible.sync="roleBox"
-          width="345px"
-        >
-          <el-tree
-            :data="roleGrantList"
-            show-checkbox
-            check-strictly
-            default-expand-all
-            node-key="id"
-            ref="treeRole"
-            :default-checked-keys="roleTreeObj"
-            :props="props"
-            style="max-height: 400px; overflow-y: auto"
-          >
+        <el-dialog title="用户角色配置" append-to-body :visible.sync="roleBox" width="345px">
+          <el-tree :data="roleGrantList" show-checkbox check-strictly default-expand-all node-key="id" ref="treeRole"
+            :default-checked-keys="roleTreeObj" :props="props" style="max-height: 400px; overflow-y: auto">
           </el-tree>
 
           <span slot="footer" class="dialog-footer">
@@ -327,18 +142,8 @@
             <el-button type="primary" @click="submitRole">确 定</el-button>
           </span>
         </el-dialog>
-        <el-dialog
-          title="用户数据导入"
-          append-to-body
-          :visible.sync="excelBox"
-          width="555px"
-        >
-          <avue-form
-            :option="excelOption"
-            v-model="excelForm"
-            :upload-after="uploadAfter"
-            ref="excelForm"
-          >
+        <el-dialog title="用户数据导入" append-to-body :visible.sync="excelBox" width="555px">
+          <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter" ref="excelForm">
             <template slot="excelTemplate">
               <el-button type="primary" @click="handleTemplate">
                 点击下载<i class="el-icon-download el-icon--right"></i>
@@ -346,29 +151,13 @@
             </template>
           </avue-form>
         </el-dialog>
-        <el-dialog
-          title="用户平台配置"
-          append-to-body
-          :visible.sync="platformBox"
-        >
-          <avue-crud
-            :option="platformOption"
-            :table-loading="platformLoading"
-            :data="platformData"
-            ref="platformCrud"
-            v-model="platformForm"
-            :before-open="platformBeforeOpen"
-            :page.sync="platformPage"
-            :permission="platformPermissionList"
-            @row-update="platformRowUpdate"
-            @search-change="platformSearchChange"
-            @search-reset="platformSearchReset"
-            @selection-change="platformSelectionChange"
-            @current-change="platformCurrentChange"
-            @size-change="platformSizeChange"
-            @refresh-change="platformRefreshChange"
-            @on-load="platformOnLoad"
-          >
+        <el-dialog title="用户平台配置" append-to-body :visible.sync="platformBox">
+          <avue-crud :option="platformOption" :table-loading="platformLoading" :data="platformData" ref="platformCrud"
+            v-model="platformForm" :before-open="platformBeforeOpen" :page.sync="platformPage"
+            :permission="platformPermissionList" @row-update="platformRowUpdate" @search-change="platformSearchChange"
+            @search-reset="platformSearchReset" @selection-change="platformSelectionChange"
+            @current-change="platformCurrentChange" @size-change="platformSizeChange"
+            @refresh-change="platformRefreshChange" @on-load="platformOnLoad">
             <template slot-scope="{ row }" slot="tenantName">
               <el-tag>{{ row.tenantName }}</el-tag>
             </template>
@@ -1232,7 +1021,7 @@ export default {
           this.fromss.projectAndUserList[key].contractId = val.id;
           if (val.roleType) {
             this.fromss.projectAndUserList[key].roleName =
-              val.roleType + "|" + val.roleName;
+              val.roleType + " | " + val.roleName;
           } else {
             this.fromss.projectAndUserList[key].roleName = val.roleName;
           }
@@ -1383,7 +1172,7 @@ export default {
 
           if (val.dataInfo[0].roleType) {
             val.roleName =
-              val.dataInfo[0].roleType + "|" + val.dataInfo[0].roleName;
+              val.dataInfo[0].roleType + " | " + val.dataInfo[0].roleName;
           } else {
             val.roleName = val.dataInfo[0].roleName;
           }
@@ -1409,21 +1198,49 @@ export default {
     },
     //#endregion
 
-    async updateContractRole(index) {
-      const arr = this.fromss.projectAndUserList[index].dataInfo.map((el) => {
-        return { id: el.id, roleId: el.roleId };
-      });
-
-      const { data: res } = await updateBatchUserRole(arr);
-      if (res.code == 200) {
-        this.$message({
-          type: "success",
-          message: "修改成功!",
+    async updateContractRole(index = -1) {
+      let array = [];
+      if (index >= 0) {
+        this.fromss.projectAndUserList[index].isCanEditProjectRole = false;
+        array = this.fromss.projectAndUserList[index].dataInfo.map((el) => {
+          return { id: el.id, roleId: el.roleId };
+        });
+      } else {
+        console.log(this.fromss.projectAndUserList);
+        this.fromss.projectAndUserList.forEach((el) => {
+          if (el.isCanEditProjectRole) {
+            array = array.concat(el.dataInfo.map((subEl) => ({ id: subEl.id, roleId: subEl.roleId })))
+          }
         });
-        await this.findProjectAndContractList(this.fromss.userId);
       }
 
-      console.log(res);
+
+
+      const { data: res } = await updateBatchUserRole(array);
+      if (res.code == 200) {
+
+        if (index >= 0) {
+          this.$message({
+            type: "success",
+            message: "修改成功!",
+          });
+          const el = { ...this.fromss.projectAndUserList[index] }
+          console.log(el.dataInfo[0].roleName);
+          const dataInfo = el.dataInfo.map((item) => ({
+            ...item,
+            roleName: item.roleName.split('|').length > 1 ? item.roleName.split(' | ')[1] : item.roleName.split(' | ')[0],
+            roleType: item.roleName.split('|').length > 1 ? item.roleName.split(' | ')[0] : null
+          }))
+
+          this.$set(this.fromss.projectAndUserList, index, {
+            ...el,
+            dataInfo: [...dataInfo],
+            contractName: el.dataInfo[0].id,
+            contractId: el.dataInfo[0].id,
+            roleName: dataInfo[0].roleType ? dataInfo[0].roleType + " | " + dataInfo[0].roleName : dataInfo[0].roleName
+          })
+        }
+      }
     },
 
     //#region 甘云杰
@@ -1491,6 +1308,17 @@ export default {
     rowUpdate(row, index, done, loading) {
       //修改按钮
       // row.roleId = row.roleId.join(",");
+      // let array = []
+      // let roleName = ""
+      // this.fromss.projectAndUserList.forEach((el) => {
+      //   if (el.isCanEditProjectRole) {
+      //     console.log("111111",el.dataInfo);
+      //     array = array.concat(el.dataInfo.map((subEl) => ({ id: subEl.id, roleId: subEl.roleId })))
+      //   }
+      // });
+
+
+
       console.log(row, "row");
       if (row.postId) {
         row.postId = row.postId.join(",");
@@ -1509,7 +1337,8 @@ export default {
         .toString();
       ks.userType = userTypeArray.toString();
       update({ ...ks }).then(
-        () => {
+        async () => {
+          await this.updateContractRole();
           this.initFlag = false;
           this.onLoad(this.page);
           this.$message({
@@ -1687,10 +1516,8 @@ export default {
       }).then(() => {
         NProgress.start();
         exportBlob(
-          `/api/blade-user/export-user?${
-            this.website.tokenHeader
-          }=${getToken()}&account=${this.search.account}&realName=${
-            this.search.realName
+          `/api/blade-user/export-user?${this.website.tokenHeader
+          }=${getToken()}&account=${this.search.account}&realName=${this.search.realName
           }`
         ).then((res) => {
           downloadXls(res.data, `用户数据表${dateNow()}.xlsx`);
@@ -1700,8 +1527,7 @@ export default {
     },
     handleTemplate() {
       exportBlob(
-        `/api/blade-user/export-template?${
-          this.website.tokenHeader
+        `/api/blade-user/export-template?${this.website.tokenHeader
         }=${getToken()}`
       ).then((res) => {
         downloadXls(res.data, "用户数据模板.xlsx");