From dc2d2f1e26a84d5600051c0ed086027a28b71162 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 26 十月 2023 11:31:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/views/system/user.vue |  224 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 163 insertions(+), 61 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/system/user.vue b/Source/UBCS-WEB/src/views/system/user.vue
index d1ccf6a..8eb6b6f 100644
--- a/Source/UBCS-WEB/src/views/system/user.vue
+++ b/Source/UBCS-WEB/src/views/system/user.vue
@@ -35,54 +35,61 @@
           @refresh-change="refreshChange"
           @on-load="onLoad">
           <template slot="menuLeft">
-            <el-button v-if="permission.user_delete"
+            <el-button v-if="permissionList.delBtn"
                        icon="el-icon-delete"
                        plain
                        size="small"
                        type="danger"
                        @click="handleDelete">鍒� 闄�
             </el-button>
-            <el-button v-if="permission.user_role"
+            <el-button v-if="permissionList.roleBtn"
                        icon="el-icon-user"
                        plain
                        size="small"
                        type="info"
                        @click="handleGrant">瑙掕壊閰嶇疆
             </el-button>
-            <el-button v-if="permission.user_reset"
+            <el-button v-if="permissionList.resetBtn"
                        icon="el-icon-refresh"
                        plain
                        size="small"
                        type="info"
                        @click="handleReset">瀵嗙爜閲嶇疆
             </el-button>
-            <el-button size="small"
-                       v-if="userInfo.role_name.includes('admin')"
+            <el-button v-if="permissionList.pwdStrategyBtn"
+                        size="small"
                        type="success"
                        icon="el-icon-setting"
                        @click="handlepass">
               閰嶇疆瀵嗙爜绛栫暐
             </el-button>
-            <el-button v-if="userInfo.role_name.includes('admin')"
-                       icon="el-icon-coordinate"
-                       plain
-                       size="small"
-                       type="info"
-                       @click="handleLock">璐﹀彿瑙e皝
+            <el-button v-if="permissionList.unsealBtn"
+              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">瀵煎叆
+            <el-button v-if="permissionList.importBtn"
+              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">瀵煎嚭
+            <el-button v-if="permissionList.exportBtn"
+              icon="el-icon-download"
+              plain
+              size="small"
+              type="warning"
+              @click="handleExport">瀵煎嚭
+            </el-button>
+            <el-button v-if="permissionList.deactEnBtn"
+                size="small"
+                type="warning"
+                icon="el-icon-setting"
+                @click="updateUserStatus">
+              璐﹀彿鍋�/鍚敤
             </el-button>
           </template>
           <template slot="tenantName"
@@ -116,7 +123,6 @@
               node-key="id"
               show-checkbox>
           </el-tree>
-
           <span slot="footer" class="dialog-footer">
             <el-button @click="roleBox = false">鍙� 娑�</el-button>
             <el-button type="primary"
@@ -137,7 +143,6 @@
         </el-dialog>
         <!--        璁剧疆瀵嗙爜绛栫暐寮瑰嚭妗�-->
         <el-dialog
-          :before-close="handleClose"
           :visible.sync="passVisible"
           class="passdialog"
           append-to-body
@@ -154,9 +159,9 @@
             </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>
       </basic-container>
     </el-col>
@@ -174,7 +179,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";
@@ -209,6 +216,7 @@
       }
     };
     return {
+      tenantId:'',
       form: {},
       seoptions: [],
       sevalue:"",
@@ -277,10 +285,15 @@
         tip: false,
         searchShow: true,
         searchMenuSpan: 6,
+        columnBtn:false,
         border: true,
         index: true,
         selection: true,
+        /* 涓嬮潰杩欎笁涓睘鎬ч粯璁よ缃负true锛�
+          瀹為檯鏍规嵁permissionList涓鐓х殑灞炴�ц繘琛屾帶鍒剁殑 */
         viewBtn: true,
+        editBtn: true,
+        delBtn: true,
         dialogType: 'drawer',
         dialogClickModal: false,
         highlightCurrentRow: true, //琛岄�変腑鏃堕珮浜�
@@ -344,7 +357,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: [
@@ -372,6 +395,7 @@
                   trigger: "click"
                 }],
                 span: 24,
+                value:""
               },
               {
                 label: "鐧诲綍璐﹀彿",
@@ -390,6 +414,7 @@
                   label: "dictValue",
                   value: "dictKey"
                 },
+                value:'1',
                 dataType: "number",
                 slot: true,
                 prop: "userType",
@@ -402,6 +427,7 @@
               {
                 label: '瀵嗙爜',
                 prop: 'password',
+                type: "password",
                 hide: true,
                 editDisplay: false,
                 viewDisplay: false,
@@ -411,6 +437,7 @@
                 label: '纭瀵嗙爜',
                 prop: 'password2',
                 hide: true,
+                type: "password",
                 editDisplay: false,
                 viewDisplay: false,
                 rules: [{required: true, validator: validatePass2, trigger: 'blur'}]
@@ -546,7 +573,7 @@
                   value: "id"
                 },
                 rules: [{
-                  required: true,
+                  required: false,
                   message: "璇烽�夋嫨鎵�灞炲矖浣�",
                   trigger: "click"
                 }],
@@ -693,6 +720,7 @@
     'form.tenantId'() {
       if (this.form.tenantId !== '' && this.initFlag) {
         this.initData(this.form.tenantId);
+        // console.log('this.form.tenantId',this.form.tenantId)
       }
     },
     'excelForm.isCovered'() {
@@ -704,22 +732,37 @@
   },
   computed: {
     ...mapGetters(["userInfo", "permission"]),
+    /** 鎸夐挳鏄剧ず闅愯棌鎺у埗 */
     permissionList() {
       return {
-        addBtn: this.vaildData(this.permission.user_add, false),
-        viewBtn: this.vaildData(this.permission.user_view, false),
-        delBtn: this.vaildData(this.permission.user_delete, false),
-        editBtn: this.vaildData(this.permission.user_edit, false)
+        addBtn: this.vaildData(this.permission.user.user_add, false),
+        viewBtn: this.vaildData(this.permission.user.user_view, false),
+        delBtn: this.vaildData(this.permission.user.user_delete, false),
+        editBtn: this.vaildData(this.permission.user.user_edit, false),
+        deactEnBtn: this.vaildData(this.permission.user.user_deact_en,false),
+        exportBtn: this.vaildData(this.permission.user.user_export,false),
+        pwdStrategyBtn: this.vaildData(this.permission.user.user_pwd_strategy,false),
+        importBtn: this.vaildData(this.permission.user.user_import,false),
+        resetBtn: this.vaildData(this.permission.user.user_reset,false),
+        roleBtn: this.vaildData(this.permission.user.user_role,false),
+        unsealBtn: this.vaildData(this.permission.user.user_unseal,false),
       };
     },
-    platformPermissionList() {
-      return {
-        addBtn: false,
-        viewBtn: false,
-        delBtn: false,
-        editBtn: this.vaildData(this.permission.user_edit, false)
-      };
-    },
+    // platformPermissionList() {
+    //   return {
+    //     addBtn: this.vaildData(this.permission.user.user_add, false),
+    //     viewBtn: this.vaildData(this.permission.user.user_view, false),
+    //     delBtn: this.vaildData(this.permission.user.user_delete, false),
+    //     editBtn: this.vaildData(this.permission.user.user_edit, false),
+    //     deactEnBtn: this.vaildData(this.permission.user.user_deact_en,false),
+    //     exportBtn: this.vaildData(this.permission.user.user_export,false),
+    //     pwdStrategyBtn: this.vaildData(this.permission.user.user_pwd_strategy,false),
+    //     importBtn: this.vaildData(this.permission.user.user_import,false),
+    //     resetBtn: this.vaildData(this.permission.user.user_reset,false),
+    //     roleBtn: this.vaildData(this.permission.user.user_role,false),
+    //     unsealBtn: this.vaildData(this.permission.user.user_unseal,false),
+    //   };
+    // },
     ids() {
       let ids = [];
       this.selectionList.forEach(ele => {
@@ -746,8 +789,54 @@
     }
   },
   methods: {
+
+    // beOpen(done,type){
+    //   console.log(done,type)
+    // },
+    // 鐢ㄦ埛鍋滅敤鍚敤鐘舵��
+    /** 淇敼鐢ㄦ埛鐘舵�� */
+    updateUserStatus(){
+      let list = this.selectionList;
+      if(list.length < 1){
+        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;
+      let msg = status ? "纭畾灏嗛�夋嫨璐﹀彿鍚敤":"纭畾灏嗛�夋嫨璐﹀彿鍋滅敤"+"锛�";
+      // console.log(msg);
+      this.$confirm(msg, {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      })
+        .then(() => {
+          return updateUserStatus(userIds,status);
+        })
+        .then(() => {
+          this.$message({
+            type: "success",
+            message: "鎿嶄綔鎴愬姛!",
+            duration: 1000,// 璁剧疆娑堟伅鏄剧ず3绉掑悗鑷姩鍏抽棴
+            onClose: () => {
+              // 鍦ㄦ秷鎭叧闂椂閲嶆柊鍔犺浇鏁版嵁
+              this.onLoad(this.page);
+            }
+          });
+        });
+    },
     //esc鍙栨秷閿搷浣�
-    handleClose(done) {
+    /*handleClose(done) {
       this.$confirm('纭鍏抽棴锛�')
         .then(() => {
           done();
@@ -756,7 +845,7 @@
           done();
         });
 
-    },
+    },*/
     //鐐瑰嚮閰嶇疆瀵嗙爜绛栫暐
     handlepass(){
       if (this.selectionList.length === 0) {
@@ -765,8 +854,6 @@
       }else {
         this.passVisible=true;
       }
-      //console.log("selectionList",this.selectionList)
-      //console.log(this.UserPwdstrategyVO)
     },
     // 璁剧疆瀵嗙爜绛栫暐锛屼紶閫掍笅鎷夋鐨刬d鍜屽閫夋鐨刬d
     passhandle(){
@@ -807,6 +894,8 @@
       });
     },
     nodeClick(data) {
+      // console.log(data)
+      // console.log(this.form.tenantId)
       this.treeDeptId = data.id;
       this.page.currentPage = 1;
       this.onLoad(this.page);
@@ -839,21 +928,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(",");
@@ -1025,6 +1115,12 @@
       })
     },
     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;
@@ -1039,8 +1135,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;
@@ -1058,6 +1159,7 @@
         this.page.total = data.total;
         this.data = data.records;
         this.loading = false;
+        this.tenantId=data.records[0].tenantId
         this.selectionClear();
       });
     },

--
Gitblit v1.9.3