From ed52d8cb0db78eb8bff70329ac01a38d50d7f672 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期三, 04 十二月 2024 16:20:13 +0800
Subject: [PATCH] 数据授权

---
 Source/plt-web/plt-web-ui/src/views/system/user/index.vue |  187 +++++++++++++++++-----------------------------
 1 files changed, 70 insertions(+), 117 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
index 1970aa3..971b60b 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
@@ -2,7 +2,6 @@
   <basic-container>
     <avue-crud
       ref="userCrud"
-      :before-open="beforeOpen"
       :data="tableData"
       :option="option"
       :page.sync="page"
@@ -18,26 +17,6 @@
       @row-save="rowSaveHandler"
       @row-update="rowUpdateHandler"
     >
-      <!-- 閮ㄩ棬澶撮儴鎼滅储鎻掓Ы  -->
-      <template slot-scope="{disabled,size}" slot="pkDepartmentNameSearch">
-        <div style="display: flex;gap: 5px">
-          <el-select v-model="departSearchValue" clearable placeholder="璇烽�夋嫨閮ㄩ棬">
-            <el-option :label="departSearchObj.name" :value="departSearchObj.oid"></el-option>
-          </el-select>
-          <el-button size="small" type="success" @click="dialogDepartSearchHandler">閫夋嫨閮ㄩ棬</el-button>
-        </div>
-      </template>
-
-      <!-- 瀵硅瘽妗嗛儴闂ㄦ彃妲�     -->
-      <template slot="pkDepartmentNameForm" slot-scope="scope">
-        <div style="display: flex;gap: 5px">
-          <el-select v-model="departValue" clearable placeholder="璇烽�夋嫨閮ㄩ棬">
-            <el-option :label="departObj.name" :value="departObj.oid"></el-option>
-          </el-select>
-          <el-button size="small" type="success" @click="dialogDepartHandler">閫夋嫨閮ㄩ棬</el-button>
-        </div>
-      </template>
-
       <template slot="status" slot-scope="{row}">
         <el-tag v-if="row.status === 0" type="success">鍚敤</el-tag>
         <el-tag v-if="row.status === 1" type="danger">鍋滅敤</el-tag>
@@ -53,7 +32,7 @@
         <el-button icon="el-icon-delete" size="small" type="text" @click.stop="rowDeleteHandler(row)">鍒犻櫎</el-button>
         <el-button size="small" type="text" @click.stop="stopUserHandler(row)">
           <span v-if="row.status === 0" style="color: #fa3434"><i class="el-icon-video-pause"></i> 鍋滅敤</span>
-          <span v-if="row.status === 1" style="color: #55b61d"><i class="el-icon-video-pause"></i> 鍚敤</span>
+          <span v-if="row.status === 1" style="color: #55b61d"><i class="el-icon-video-play"></i> 鍚敤</span>
         </el-button>
       </template>
 
@@ -62,7 +41,7 @@
         <el-button icon="el-icon-user" plain size="small" type="primary" @click="roleHandler">鍒嗛厤瑙掕壊</el-button>
         <el-button icon="el-icon-school" plain size="small" type="primary" @click="departmentHandler">鍒嗛厤閮ㄩ棬</el-button>
         <el-button icon="el-icon-key" plain size="small" type="success" @click="setPwsHandler">璁剧疆瀵嗙爜绛栫暐</el-button>
-        <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadRole">瀵煎叆浜哄憳</el-button>
+        <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadUser">瀵煎叆浜哄憳</el-button>
         <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadHandler">涓嬭浇瀵煎叆妯℃澘</el-button>
       </template>
     </avue-crud>
@@ -77,36 +56,34 @@
     <el-dialog
       v-dialogDrag
       v-loading="pwdLoading"
-      :destroy-on-close="true"
       :visible.sync="pwdVisible"
       append-to-body="true"
       class="avue-dialog"
       style="margin-top: -15vh !important;"
       title="璁剧疆瀵嗙爜绛栫暐"
-      width="30%"
+      width="500px"
     >
-
       <div class="password-strategy-container">
-        <div><i class="el-icon-setting"/>璁剧疆瀵嗙爜绛栫暐锛�</div>
-        <el-select v-model="pwdValue" placeholder="璇烽�夋嫨瀵嗙爜绛栫暐">
+        <div style="width:115px;"><i class="el-icon-setting"/>璁剧疆瀵嗙爜绛栫暐锛�</div>
+        <el-select v-model="pwdValue" placeholder="璇烽�夋嫨瀵嗙爜绛栫暐" style="width: 330px;">
           <el-option v-for="(item,index) in pwdList" :key="index" :label="item.name" :value="item.id"></el-option>
         </el-select>
       </div>
 
       <div slot="footer" class="dialog-footer">
-        <el-button size="small" @click="pwdVisible = false">鍙� 娑�</el-button>
         <el-button size="small" type="primary" @click="savePwdHandler">纭� 瀹�</el-button>
+        <el-button size="small" @click="pwdVisible = false">鍙� 娑�</el-button>
       </div>
     </el-dialog>
 
     <!-- 瀵煎叆浜哄憳   -->
-    <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" title="瀵煎叆浜哄憳"></upload-file>
+    <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="瀵煎叆浜哄憳"
+                 @updata="getTableList"></upload-file>
 
     <!-- 鍒嗛厤閮ㄩ棬瀵硅瘽妗�    -->
     <el-dialog
       v-dialogDrag
       v-loading="departLoading"
-      :destroy-on-close="true"
       :visible.sync="departVisible"
       append-to-body="true"
       class="avue-dialog"
@@ -121,8 +98,8 @@
       >
       </avue-crud>
       <div slot="footer" class="dialog-footer">
-        <el-button size="small" @click="departVisible = false">鍙� 娑�</el-button>
         <el-button size="small" type="primary" @click="saveDepartHandler">纭� 瀹�</el-button>
+        <el-button size="small" @click="departVisible = false">鍙� 娑�</el-button>
       </div>
     </el-dialog>
   </basic-container>
@@ -152,15 +129,14 @@
   name: "userManage",
   data: function () {
     return {
-      departSearchObj:{},
-      departSearchValue:'',
+      departSearchObj: {},
+      departSearchValue: '',
       loadKey: 0,
       departStatus: '', // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗�
-      departValue: '', // 閮ㄩ棬瀵硅瘽妗嗕笅鎷夋缁戝畾鍊�
-      departObj: {},  // 閮ㄩ棬瀵硅瘽妗嗕笅鎷夋閫夐」缁戝畾鍊�
       departCurrenRow: {},
       departOption: {
         ...basicOption,
+        addBtn: false,
         rowKey: 'oid',
         rowParentKey: 'parentId',
         selection: false,
@@ -169,10 +145,12 @@
         menu: false,
         refreshBtn: false,
         gridBtn: false,
+        header: false,
         column: [
           {
             label: '鍚嶇О',
             prop: 'name',
+            align: 'left'
           },
           {
             label: '缂栧彿',
@@ -213,20 +191,14 @@
       selectList: [],
       leftRoleData: [],  // 鍒嗛厤瑙掕壊绌挎妗嗗乏渚у垵濮嬫暟鎹�
       rightRoleData: [], // 鍒嗛厤瑙掕壊绌挎妗嗗彸渚у垵濮嬫暟鎹�
-      transferTitle: ['鐜版湁瑙掕壊', '鎷ユ湁瑙掕壊']
+      transferTitle: ['鐜版湁瑙掕壊', '鎷ユ湁瑙掕壊'],
+      tipList: ["瀵煎叆妯℃澘涓爣鏄庣孩鑹插瓧浣撶殑涓哄繀杈撻」", "閮ㄩ棬鍒椾笂涓嬬骇鍏崇郴蹇呴』鎸夌収鍙嶆枩鏉犻殧寮�(/)"],
+      lastIndex: null,
     }
   },
   created() {
   },
   methods: {
-    // 鏂板鎴栦慨鏀瑰璇濇鎵撳紑鍓�
-    beforeOpen(done, type) {
-      if(type == 'add'){
-        this.departObj = {};
-        this.departValue = "";
-      }
-      done();
-    },
     // 琛ㄦ牸璇锋眰
     getTableList() {
       this.tableLoading = true;
@@ -235,9 +207,8 @@
         this.tableData = data;
         this.page.total = res.data.total;
         this.tableLoading = false;
-      }).catch(err => {
-        this.$message.error(err)
-      });
+      })
+      this.departmentQueryOnLoad()
     },
 
     // 琛ㄦ牸鍙充晶鍒锋柊鍥炬爣
@@ -248,10 +219,6 @@
     // 鎼滅储鏌ヨ
     handleSearch(params, done) {
       this.searchParams = {};
-      if(this.departSearchObj && this.departSearchValue){
-        this.searchParams['conditionMap["pkDepartment"]'] = this.departSearchValue;
-      }
-
       if (!func.isEmptyObject(params)) {
         for (let key in params) {
           if (params.hasOwnProperty(key)) {
@@ -262,7 +229,7 @@
         }
       }
 
-      if (func.isEmptyObject(params) && !this.departSearchValue) {
+      if (func.isEmptyObject(params)) {
         this.searchParams = {};
       }
 
@@ -272,8 +239,6 @@
 
     // 閲嶇疆鎼滅储鏉′欢
     handleReset() {
-      this.departSearchObj = {};
-      this.departSearchValue = "";
       this.searchParams = {};
       this.getTableList();
     },
@@ -310,7 +275,17 @@
 
     // 鐐瑰嚮琛�
     rowClickHandler(row) {
-      this.$refs.userCrud.toggleRowSelection(row);
+      func.rowClickHandler(
+        row,
+        this.$refs.userCrud,
+        this.lastIndex,
+        (newIndex) => {
+          this.lastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [];
+        }
+      );
     },
 
     // 鍒嗛厤瑙掕壊
@@ -387,51 +362,42 @@
     },
 
     // 鏂板
-    rowSaveHandler(row, done) {
+    rowSaveHandler(row, done, loading) {
       if (row.password != row.confirmPassword) {
         this.$message.error('璇锋鏌ヤ袱娆″瘑鐮佹槸鍚﹁緭鍏ヤ竴鑷达紒')
         return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
       }
-      row.pkDepartment = this.departValue; // 灏嗗綋鍓嶈鐨勯儴闂ㄥ弬鏁皃kDepartment 璧嬪�间负涓嬫媺妗嗙粦瀹氱殑鍊�
       addUser(row).then(res => {
         if (res.data.code === 200) {
           this.$message.success(res.data.obj);
           this.getTableList();
+          done();
         }
       }).catch(err => {
-        console.log(err);
+        loading()
       })
-      done()
     },
 
     // 鎿嶄綔鏍忕紪杈�
     rowEditHandler(row, index) {
-      let obj = { name: row.pkDepartmentName, oid: row.pkDepartment, rowOid: row.oid };
-      this.departValue = row.pkDepartment;
-      this.departObj = obj;
-
-      if (this.departObj.rowOid) {
-        this.$refs.userCrud.rowEdit(row, index);
-      }
-
+      this.$refs.userCrud.rowEdit(row, index);
     },
 
     // 缂栬緫
-    rowUpdateHandler(row, index, done) {
+    rowUpdateHandler(row, index, done, loading) {
       if (row.password != row.confirmPassword) {
         this.$message.error('璇锋鏌ヤ袱娆″瘑鐮佹槸鍚﹁緭鍏ヤ竴鑷达紒')
         return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
       }
-      row.pkDepartment = this.departValue; // 灏嗗綋鍓嶈鐨勯儴闂ㄥ弬鏁皃kDepartment 璧嬪�间负涓嬫媺妗嗙粦瀹氱殑鍊�
       updateUser(row).then(res => {
         if (res.data.code === 200) {
           this.$message.success(res.data.obj);
           this.getTableList();
+          done()
         }
       }).catch(err => {
-        console.log(err);
+        loading()
       });
-      done()
     },
 
     // 鍒犻櫎
@@ -439,14 +405,24 @@
       let params = {
         ids: row.oid
       }
-      deleteUser(params).then(res => {
-        if (res.data.code === 200) {
-          this.$message.success(res.data.obj);
-          this.getTableList();
-        }
-      }).catch(err => {
-        console.log(err);
-      })
+
+      this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎褰撳墠鐨勬垚鍛樺悧锛�', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        deleteUser(params).then(res => {
+          if (res.data.code === 200) {
+            this.$message.success(res.data.obj);
+            this.getTableList();
+          }
+        });
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      });
     },
 
     // 澶氶�夊垹闄�
@@ -480,27 +456,24 @@
     // 涓嬭浇瀵煎叆妯℃澘
     downloadHandler() {
       download().then(res => {
-        console.log(res);
         func.downloadFileByBlobHandler(res);
-        this.$message.success('涓嬭浇鎴愬姛')
-      }).catch(err => {
-        this.$message.error(err);
+        this.$message.success('涓嬭浇鎴愬姛');
       })
     },
 
     // 瀵煎叆浜哄憳
-    uploadRole() {
+    uploadUser() {
       this.$refs.upload.visible = true;
     },
 
     // 鍒嗛厤閮ㄩ棬
     departmentHandler() {
       if (this.selectList.length <= 0) {
-        this.$message.warning('娓呭厛閫夋嫨浜哄憳鍐嶈繘琛屾搷浣滐紒')
+        this.$message.warning('娓呭厛閫夋嫨浜哄憳鍐嶈繘琛屾搷浣滐紒');
         return;
       }
       this.departStatus = 'default'; // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗�
-      this.departmentQueryOnLoad();
+      this.departVisible = true;
     },
 
     // 鍒嗛厤閮ㄩ棬琛ㄦ牸鍒濆鍖栬姹�
@@ -508,7 +481,14 @@
       departmentQueryController({queryAllLevel: true}).then(res => {
         const data = res.data.treeData;
         this.departData = this.departDtaFormAtter(data);
-        this.departVisible = true;
+        this.option.column[7].dicData = [{
+          oid: 'ALLDept',
+          name: '鎵�鏈夐儴闂�',
+          expand: true,
+          disabled: true,
+          children: this.departData
+        }]
+        this.option.column[7].defaultExpandedKeys = ['ALLDept'];
       }).catch(err => {
         this.$message.error(err);
       })
@@ -545,6 +525,7 @@
         return;
       }
 
+      //鍒嗛厤閮ㄩ棬
       if (this.departStatus == 'default') {
         let params = {
           userOIds: this.selectList.map(item => item.oid).join(','),
@@ -556,37 +537,9 @@
             this.getTableList();
             this.$message.success('鍒嗛厤鎴愬姛锛�')
           }
-        }).catch(err => {
-          console.log(err);
         })
         return;
       }
-
-      if (this.departStatus == 'handle') {
-        this.departObj = this.departCurrenRow;
-        this.departValue = this.departCurrenRow.oid;
-        this.departVisible = false;
-        return;;
-      }
-
-      if(this.departStatus == 'search'){
-        this.departSearchObj =  this.departCurrenRow;
-        this.departSearchValue =  this.departCurrenRow.oid;
-        this.departVisible = false;
-        return;
-      }
-    },
-
-    // 瀵硅瘽妗嗗垎閰嶉儴闂ㄦ寜閽�
-    dialogDepartHandler() {
-      this.departmentQueryOnLoad();
-      this.departStatus = 'handle'; // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗�
-    },
-
-    // 鎼滅储瀵硅瘽妗嗗垎閰嶉儴闂ㄦ寜閽�
-    dialogDepartSearchHandler(){
-      this.departmentQueryOnLoad();
-      this.departStatus = 'search'; // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗�
     },
   }
 
@@ -595,7 +548,7 @@
 
 <style lang="scss" scoped>
 .password-strategy-container {
-  padding-left: 20px;
+  margin-bottom: 20px;
   display: flex;
   //justify-content: center;
   align-items: center;

--
Gitblit v1.9.3