From 90b486ba54098be293a256d9313d201a3bd5221f Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 18 十月 2023 21:31:02 +0800
Subject: [PATCH] 1、编码规则增加显示所有者列,高级查询中增加所有者; 2、用户管理界面添加停用启用按钮。

---
 Source/UBCS-WEB/src/views/system/user.vue |  316 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 190 insertions(+), 126 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/system/user.vue b/Source/UBCS-WEB/src/views/system/user.vue
index b69c093..9b3f3a2 100644
--- a/Source/UBCS-WEB/src/views/system/user.vue
+++ b/Source/UBCS-WEB/src/views/system/user.vue
@@ -1,35 +1,39 @@
 <template>
   <el-row>
-    <el-col :span="5">
+    <el-col :span="5" v-if="userflag">
       <div class="box">
-        <el-scrollbar>
+        <el-scrollbar style="height: auto;border-bottom-right-radius:8px ">
           <basic-container>
-            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick"/>
+            <div class="abox">
+              <avue-tree ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick"/>
+            </div>
           </basic-container>
         </el-scrollbar>
       </div>
     </el-col>
-    <el-col :span="19">
+    <el-col :span="usernumber">
       <basic-container>
+        <div class="bbox">
         <avue-crud ref="crud"
-                   v-model="form"
-                   :before-open="beforeOpen"
-                   :data="data"
-                   :option="option"
-                   :page.sync="page"
-                   :permission="permissionList"
-                   :search.sync="search"
-                   :table-loading="loading"
-                   @row-del="rowDel"
-                   @row-update="rowUpdate"
-                   @row-save="rowSave"
-                   @search-change="searchChange"
-                   @search-reset="searchReset"
-                   @selection-change="selectionChange"
-                   @current-change="currentChange"
-                   @size-change="sizeChange"
-                   @refresh-change="refreshChange"
-                   @on-load="onLoad">
+          v-model="form"
+          :before-open="beforeOpen"
+          :data="data"
+          :option="option"
+          :page.sync="page"
+          :permission="permissionList"
+          :search.sync="search"
+          :table-loading="loading"
+          @row-del="rowDel"
+          @row-update="rowUpdate"
+          @row-save="rowSave"
+          @search-change="searchChange"
+          @search-reset="searchReset"
+          @row-click="clickRowChange"
+          @selection-change="selectionChange"
+          @current-change="currentChange"
+          @size-change="sizeChange"
+          @refresh-change="refreshChange"
+          @on-load="onLoad">
           <template slot="menuLeft">
             <el-button v-if="permission.user_delete"
                        icon="el-icon-delete"
@@ -60,25 +64,31 @@
               閰嶇疆瀵嗙爜绛栫暐
             </el-button>
             <el-button v-if="userInfo.role_name.includes('admin')"
-                       icon="el-icon-coordinate"
-                       plain
-                       size="small"
-                       type="info"
-                       @click="handleLock">璐﹀彿瑙e皝
+              icon="el-icon-coordinate"
+              plain
+              size="small"
+              type="info"
+              @click="handleLock">璐﹀彿瑙e皝
             </el-button>
             <el-button v-if="userInfo.role_name.includes('admin')"
-                       icon="el-icon-upload2"
-                       plain
-                       size="small"
-                       type="success"
-                       @click="handleImport">瀵煎叆
+              icon="el-icon-upload2"
+              plain
+              size="small"
+              type="success"
+              @click="handleImport">瀵煎叆
             </el-button>
             <el-button v-if="userInfo.role_name.includes('admin')"
-                       icon="el-icon-download"
-                       plain
-                       size="small"
-                       type="warning"
-                       @click="handleExport">瀵煎嚭
+              icon="el-icon-download"
+              plain
+              size="small"
+              type="warning"
+              @click="handleExport">瀵煎嚭
+            </el-button>
+            <el-button size="small"
+                type="warning"
+                icon="el-icon-setting"
+                @click="updateUserStatus">
+              璐﹀彿鍋�/鍚敤
             </el-button>
           </template>
           <template slot="tenantName"
@@ -98,21 +108,20 @@
             <el-tag>{{ row.userTypeName }}</el-tag>
           </template>
         </avue-crud>
+        </div>
         <el-dialog :visible.sync="roleBox"
-                   append-to-body
-                   title="鐢ㄦ埛瑙掕壊閰嶇疆"
-                   width="345px">
-
+            append-to-body
+            title="鐢ㄦ埛瑙掕壊閰嶇疆"
+            width="345px">
           <el-tree ref="treeRole"
-                   :data="roleGrantList"
-                   :default-checked-keys="roleTreeObj"
-                   :props="props"
-                   check-strictly
-                   default-expand-all
-                   node-key="id"
-                   show-checkbox>
+              :data="roleGrantList"
+              :default-checked-keys="roleTreeObj"
+              :props="props"
+              check-strictly
+              default-expand-all
+              node-key="id"
+              show-checkbox>
           </el-tree>
-
           <span slot="footer" class="dialog-footer">
             <el-button @click="roleBox = false">鍙� 娑�</el-button>
             <el-button type="primary"
@@ -133,13 +142,11 @@
         </el-dialog>
         <!--        璁剧疆瀵嗙爜绛栫暐寮瑰嚭妗�-->
         <el-dialog
-          :before-close="handleClose"
           :visible.sync="passVisible"
           class="passdialog"
           append-to-body
           title="璁剧疆瀵嗙爜绛栫暐"
-          width="30%"
-        >
+          width="30%">
           <el-select v-model="sevalue" placeholder="璇烽�夋嫨"  class="selects" @change="selChange" >
             <el-option
               v-for="item in seoptions"
@@ -148,44 +155,13 @@
               :value="item.id"
               class="seloption"
               >
-
             </el-option>
           </el-select>
             <span slot="footer" class="dialog-footer">
-            <el-button @click="passVisible = false">鍙� 娑�</el-button>
-            <el-button type="primary" @click="passhandle">纭� 瀹�</el-button>
-  </span>
+              <el-button @click="passVisible = false">鍙� 娑�</el-button>
+              <el-button type="primary" @click="passhandle">纭� 瀹�</el-button>
+            </span>
         </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">-->
-        <!--            <template slot-scope="{row}"-->
-        <!--                      slot="tenantName">-->
-        <!--              <el-tag>{{row.tenantName}}</el-tag>-->
-        <!--            </template>-->
-        <!--            <template slot-scope="{row}"-->
-        <!--                      slot="userTypeName">-->
-        <!--              <el-tag>{{row.userTypeName}}</el-tag>-->
-        <!--            </template>-->
-        <!--            -->
-        <!--          </avue-crud>-->
-        <!--        </el-dialog>-->
       </basic-container>
     </el-col>
   </el-row>
@@ -202,7 +178,9 @@
   updatePlatform,
   add,
   grant,
-  resetPassword, unlock
+  resetPassword, 
+  unlock,
+  updateUserStatus
 } from "@/api/system/user";
 import {exportBlob} from "@/api/common";
 import {getDeptTree, getDeptLazyTree} from "@/api/system/dept";
@@ -237,6 +215,7 @@
       }
     };
     return {
+      tenantId:'',
       form: {},
       seoptions: [],
       sevalue:"",
@@ -274,7 +253,9 @@
       treeDeptId: '',
       treeData: [],
       treeOption: {
+        height:"auto",
         nodeKey: 'id',
+        border: true,
         lazy: true,
         treeLoad: function (node, resolve) {
           const parentId = (node.level === 0) ? 0 : node.data.id;
@@ -298,17 +279,19 @@
         }
       },
       option: {
-        height: 'auto',
+        height:'auto',
         calcHeight: 80,
         tip: false,
         searchShow: true,
         searchMenuSpan: 6,
+        columnBtn:false,
         border: true,
         index: true,
         selection: true,
         viewBtn: true,
         dialogType: 'drawer',
         dialogClickModal: false,
+        highlightCurrentRow: true, //琛岄�変腑鏃堕珮浜�
         column: [
           {
             label: "鐧诲綍璐﹀彿",
@@ -355,7 +338,7 @@
           {
             label: "鐢ㄦ埛骞冲彴",
             type: "select",
-            dicUrl: "/api/blade-system/dict/dictionary?code=user_type",
+            dicUrl: "/api/ubcs-system/dict/dictionary?code=user_type",
             props: {
               label: "dictValue",
               value: "dictKey"
@@ -369,7 +352,17 @@
               required: true,
               message: "璇烽�夋嫨鐢ㄦ埛骞冲彴",
               trigger: "blur"
-            }]
+            }],
+          },
+          {
+            label: "鐘舵��",
+            display: false,
+            sortable:true,
+            html:true,
+            prop: "userStatus",
+            formatter : function (row, column) {
+              return row.userStatus == 0 ? '<i class="el-icon-check" style="color: #32cd32;font-size: 20px;font-weight: 800"></i>' : '<i class="el-icon-close" style="color: #ff0000;font-size: 20px;font-weight: 800"></i>'
+            }
           },
         ],
         group: [
@@ -382,7 +375,7 @@
                 label: "鎵�灞炵鎴�",
                 prop: "tenantId",
                 type: "tree",
-                dicUrl: "/api/blade-system/tenant/select",
+                dicUrl: "/api/ubcs-system/tenant/select",
                 props: {
                   label: "tenantName",
                   value: "tenantId"
@@ -397,6 +390,7 @@
                   trigger: "click"
                 }],
                 span: 24,
+                value:""
               },
               {
                 label: "鐧诲綍璐﹀彿",
@@ -410,11 +404,12 @@
               {
                 label: "鐢ㄦ埛骞冲彴",
                 type: "select",
-                dicUrl: "/api/blade-system/dict/dictionary?code=user_type",
+                dicUrl: "/api/ubcs-system/dict/dictionary?code=user_type",
                 props: {
                   label: "dictValue",
                   value: "dictKey"
                 },
+                value:'1',
                 dataType: "number",
                 slot: true,
                 prop: "userType",
@@ -427,6 +422,7 @@
               {
                 label: '瀵嗙爜',
                 prop: 'password',
+                type: "password",
                 hide: true,
                 editDisplay: false,
                 viewDisplay: false,
@@ -436,6 +432,7 @@
                 label: '纭瀵嗙爜',
                 prop: 'password2',
                 hide: true,
+                type: "password",
                 editDisplay: false,
                 viewDisplay: false,
                 rules: [{required: true, validator: validatePass2, trigger: 'blur'}]
@@ -571,7 +568,7 @@
                   value: "id"
                 },
                 rules: [{
-                  required: true,
+                  required: false,
                   message: "璇烽�夋嫨鎵�灞炲矖浣�",
                   trigger: "click"
                 }],
@@ -625,7 +622,7 @@
           {
             label: "鐢ㄦ埛骞冲彴",
             type: "select",
-            dicUrl: "/api/blade-system/dict/dictionary?code=user_type",
+            dicUrl: "/api/ubcs-system/dict/dictionary?code=user_type",
             props: {
               label: "dictValue",
               value: "dictKey"
@@ -669,7 +666,7 @@
               res: 'data'
             },
             tip: '璇蜂笂浼� .xls,.xlsx 鏍囧噯鏍煎紡鏂囦欢',
-            action: "/api/blade-user/import-user"
+            action: "/api/ubcs-user/import-user"
           },
           {
             label: "鏁版嵁瑕嗙洊",
@@ -709,19 +706,22 @@
       UserPwdstrategyVO:{
         userIds:[],
         pwdstrategyId:''
-      }
+      },
+      userflag:true,
+      usernumber:0
     };
   },
   watch: {
     'form.tenantId'() {
       if (this.form.tenantId !== '' && this.initFlag) {
         this.initData(this.form.tenantId);
+        console.log('this.form.tenantId',this.form.tenantId)
       }
     },
     'excelForm.isCovered'() {
       if (this.excelForm.isCovered !== '') {
         const column = this.findObject(this.excelOption.column, "excelFile");
-        column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`;
+        column.action = `/api/ubcs-user/import-user?isCovered=${this.excelForm.isCovered}`;
       }
     }
   },
@@ -759,10 +759,50 @@
   },
   created() {
     this.selecload()
+    const arr=JSON.parse(localStorage.getItem("updataid"))
+    if(arr.user_id != '0' && arr.tenant_id !== '000000'){
+      this.userflag=false
+      this.usernumber=24
+    }else {
+      this.userflag=true
+      this.usernumber=19
+    }
   },
   methods: {
+
+    // beOpen(done,type){
+    //   console.log(done,type)
+    // },
+    // 鐢ㄦ埛鍋滅敤鍚敤鐘舵��
+    /** 淇敼鐢ㄦ埛鐘舵�� */
+    updateUserStatus(){
+      let list = this.selectionList;
+      if(func.isEmpty(list)){
+        this.$message({
+          type: "warning",
+          message: "璇疯嚦灏戦�夋嫨涓�鏉$敤鎴锋暟鎹紒"
+        });
+        return;
+      }
+      if(func.isAttrInconsistent(list,"userStatus")){
+        this.$message({
+          type: "warning",
+          message: "鎵归噺鎿嶄綔鐢ㄦ埛鐘舵�佹椂锛岃閫夋嫨鐢ㄦ埛鐘舵�佷竴鑷寸殑鏁版嵁锛�"
+        });
+        return;
+      }
+      let userIds = func.joinedString(list,"id");
+      let status = list[0].userStatus == 1 ? true:false;
+      updateUserStatus(userIds,status).then(res=>{
+        this.$message({
+          type: "success",
+          message: "鎿嶄綔鎴愬姛!"
+        });
+        this.onLoad(this.page);
+      })
+    },
     //esc鍙栨秷閿搷浣�
-    handleClose(done) {
+    /*handleClose(done) {
       this.$confirm('纭鍏抽棴锛�')
         .then(() => {
           done();
@@ -771,7 +811,7 @@
           done();
         });
 
-    },
+    },*/
     //鐐瑰嚮閰嶇疆瀵嗙爜绛栫暐
     handlepass(){
       if (this.selectionList.length === 0) {
@@ -780,7 +820,6 @@
       }else {
         this.passVisible=true;
       }
-      console.log("selectionList",this.selectionList)
     },
     // 璁剧疆瀵嗙爜绛栫暐锛屼紶閫掍笅鎷夋鐨刬d鍜屽閫夋鐨刬d
     passhandle(){
@@ -791,7 +830,7 @@
        //瑕佷紶閫掔殑id锛屼竴涓槸鏁扮粍鍙︿竴涓槸瀛楃涓�
        this.UserPwdstrategyVO.userIds=this.selid;
        this.UserPwdstrategyVO.pwdstrategyId=this.id
-      console.log(this.UserPwdstrategyVO)
+
       //璇锋眰
       insert(this.UserPwdstrategyVO).then(()=>{
         this.passVisible=false
@@ -799,10 +838,10 @@
           type: "success",
           message: "閰嶇疆鎴愬姛!"
         });
-        this.selectionList=[]
         this.onLoad(this.page)
-        console.log("selectionList",this.selectionList)
+        this.selid=[]
       }).catch(res=>{
+        this.selid=[]
         this.$message({
           type: "warning",
           message: res
@@ -814,13 +853,15 @@
     selChange(row){
       this.id=row
     },
-    selecload(page, params = {}) {
-      getPage(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res => {
-        console.log(res)
-        this.seoptions=res.data.data.content
+    selecload() {
+      getPage(1, -1).then(res => {
+        // console.log(res)
+        this.seoptions=res.data.data.records
       });
     },
     nodeClick(data) {
+      console.log(data)
+      console.log(this.form.tenantId)
       this.treeDeptId = data.id;
       this.page.currentPage = 1;
       this.onLoad(this.page);
@@ -853,21 +894,22 @@
       });
     },
     rowSave(row, done, loading) {
-      row.deptId = row.deptId.join(",");
-      row.roleId = row.roleId.join(",");
-      row.postId = row.postId.join(",");
-      add(row).then(() => {
-        this.initFlag = false;
-        this.onLoad(this.page);
-        this.$message({
-          type: "success",
-          message: "鎿嶄綔鎴愬姛!"
+        row.deptId = row.deptId.join(",");
+        row.roleId = row.roleId.join(",");
+        row.postId = row.postId.join(",");
+        console.log('3',row)
+        add(row).then(() => {
+          this.initFlag = false;
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "鎿嶄綔鎴愬姛!"
+          });
+          done();
+        }, error => {
+          window.console.log(error);
+          loading();
         });
-        done();
-      }, error => {
-        window.console.log(error);
-        loading();
-      });
     },
     rowUpdate(row, index, done, loading) {
       row.deptId = row.deptId.join(",");
@@ -914,8 +956,15 @@
       this.onLoad(this.page, params);
       done();
     },
+    clickRowChange(row){
+      this.$refs.crud.toggleSelection();
+      this.selectionList = row;
+      this.$refs.crud.setCurrentRow(row);
+      this.$refs.crud.toggleRowSelection(row); //閫変腑褰撳墠琛�
+    },
     selectionChange(list) {
       this.selectionList = list;
+      this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]);
     },
     selectionClear() {
       this.selectionList = [];
@@ -973,7 +1022,7 @@
       if (this.selectionList.length === 1) {
         this.roleTreeObj = this.selectionList[0].roleId.split(",");
       }
-      getRoleTree().then(res => {
+      getRoleTree(this.selectionList[0].tenantId).then(res => {
         this.roleGrantList = res.data.data;
         this.roleBox = true;
 
@@ -1020,18 +1069,24 @@
         type: "warning"
       }).then(() => {
         NProgress.start();
-        exportBlob(`/api/blade-user/export-user?${this.website.tokenHeader}=${getToken()}&account=${account}&realName=${realName}`).then(res => {
+        exportBlob(`/api/ubcs-user/export-user?${this.website.tokenHeader}=${getToken()}&account=${account}&realName=${realName}`).then(res => {
           downloadXls(res.data, `鐢ㄦ埛鏁版嵁琛�${dateNow()}.xlsx`);
           NProgress.done();
         })
       });
     },
     handleTemplate() {
-      exportBlob(`/api/blade-user/export-template?${this.website.tokenHeader}=${getToken()}`).then(res => {
+      exportBlob(`/api/ubcs-user/export-template?${this.website.tokenHeader}=${getToken()}`).then(res => {
         downloadXls(res.data, "鐢ㄦ埛鏁版嵁妯℃澘.xlsx");
       })
     },
     beforeOpen(done, type) {
+      //console.log(type)
+      // console.log('this.tenantId',this.tenantId)
+      // const column = this.findObject(this.option.group,'tenantId');
+      // column.value=this.tenantId;
+      // console.log('column',column)
+      // if(this.treeDeptId){
       if (["edit", "view"].includes(type)) {
         getUser(this.form.id).then(res => {
           this.form = res.data.data;
@@ -1046,8 +1101,13 @@
           }
         });
       }
+      const prop = this.findObject(this.option.group, 'tenantId');
+      //console.log('1',prop)
       this.initFlag = true;
       done();
+      // }else {
+      //   this.$message.warning('璇烽�夋嫨涓�鏉℃墍灞炵鎴�')
+      // }
     },
     currentChange(currentPage) {
       this.page.currentPage = currentPage;
@@ -1065,6 +1125,7 @@
         this.page.total = data.total;
         this.data = data.records;
         this.loading = false;
+        this.tenantId=data.records[0].tenantId
         this.selectionClear();
       });
     },
@@ -1142,10 +1203,13 @@
   overflow: scroll;
 }
 .selects{
-  width: 400px;
-  margin-left: 92px;
+  width: 100%;
 }
 .seloption{
   margin-left: 10px;
 }
+.abox{
+  height: 771px;
+}
+
 </style>

--
Gitblit v1.9.3