From 5405f2d0bc548c6dd3e192d5380771643326e55a Mon Sep 17 00:00:00 2001
From: wjt <1797368093@qq.com>
Date: 星期三, 26 六月 2024 10:54:21 +0800
Subject: [PATCH] 用户管理联动修改

---
 src/views/system/user/index.vue |   86 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 75 insertions(+), 11 deletions(-)

diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 8b0202f..770329f 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -72,8 +72,8 @@
         <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="50" align="center" />
           <el-table-column label="鐢ㄦ埛缂栧彿" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
-          <el-table-column label="鐢ㄦ埛鍚嶇О" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="鐢ㄦ埛鏄电О" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
+          <!-- <el-table-column label="鐢ㄦ埛鍚嶇О" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> -->
+          <el-table-column label="濮撳悕" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
           <el-table-column label="閮ㄩ棬" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
           <el-table-column label="鎵嬫満鍙风爜" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
           <el-table-column label="鐘舵��" align="center" key="status" v-if="columns[5].visible">
@@ -86,7 +86,7 @@
               <span>{{ parseTime(scope.row.createTime) }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="鎿嶄綔" align="center" width="280" class-name="small-padding fixed-width">
+          <el-table-column label="鎿嶄綔" align="center" width="380" class-name="small-padding fixed-width">
             <template #default="scope">
               <!-- <el-tooltip content="淇敼" placement="top" v-if="scope.row.userId !== 1"> -->
                 <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">淇敼</el-button>
@@ -103,6 +103,7 @@
               <!-- <el-tooltip content="閲嶇疆鏀粯瀵嗙爜" placement="top" v-if="scope.row.userId !== 1">
                 <el-button link type="danger" icon="Key" @click="handlePayPwd(scope.row)" v-hasPermi="['system:user:resetPwd']"></el-button>
               </el-tooltip> -->
+              <el-button link type="success" icon="Key" @click="handlerDept(scope.row)" v-hasPermi="['system:user:resetPwd']">鍒嗙鏈烘瀯</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -150,11 +151,11 @@
               <el-input v-model="form.userName" placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" maxlength="30" />
             </el-form-item>
           </el-col> -->
-          <el-col :span="12">
+          <!-- <el-col :span="12">
             <el-form-item v-if="form.userId == undefined" label="鐢ㄦ埛瀵嗙爜" prop="password">
               <el-input v-model="form.password" placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�" type="password" maxlength="20" show-password />
             </el-form-item>
-          </el-col>
+          </el-col> -->
         </el-row>
         <el-row>
           <el-col :span="12">
@@ -235,13 +236,26 @@
         </div>
       </template>
     </el-dialog>
+    <!-- 澶氭満鏋勭粦瀹� -->
+     <el-dialog title="鍒嗙鏈烘瀯"  v-model="openDialog" width="400px" append-to-body>
+        <el-tree :data="treeData" ref="depttree" :default-expanded-keys="defaultKeys" :props="{label: 'deptName', value: 'deptId', children: 'child' }" node-key="deptId" :default-checked-keys="defaultKeys" show-checkbox>
+
+        </el-tree>
+        <template #footer>
+          <div class="dialog-footer">
+            <el-button type="primary" @click="submitFileFormSave">纭� 瀹�</el-button>
+            <el-button @click="openDialog = false">鍙� 娑�</el-button>
+          </div>
+        </template>
+     </el-dialog>
   </div>
 </template>
 
 <script setup name="User">
 import { getToken } from "@/utils/auth";
 import { changeUserStatus, listUser, resetUserPwd, delUser, getUser, updateUser, addUser, deptTreeSelect, resetPayPwd,updateUserProfile } from "@/api/system/user";
-
+import { batchUserDeptView,batchUserDeptTree,batchUserDeptSave  } from '@/api/system/company/company'
+import { ElMessage } from "element-plus";
 const router = useRouter();
 const { proxy } = getCurrentInstance();
 const { sys_normal_disable, sys_user_sex } = proxy.useDict("sys_normal_disable", "sys_user_sex");
@@ -302,11 +316,12 @@
       { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
       { min: 2, max: 20, message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", trigger: "blur" },
     ],
+    deptId: [{ required: true, message: "閮ㄩ棬涓嶈兘涓虹┖", trigger: "blur" }],
     nickName: [{ required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }],
-    password: [
-      { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
-      { min: 5, max: 20, message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", trigger: "blur" },
-    ],
+    // password: [
+    //   { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+    //   { min: 5, max: 20, message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", trigger: "blur" },
+    // ],
     email: [{ type: "email", message: "璇疯緭鍏ユ纭殑閭鍦板潃", trigger: ["blur", "change"] }],
     phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", trigger: "blur" }],
   },
@@ -354,6 +369,7 @@
 /** 鑺傜偣鍗曞嚮浜嬩欢 */
 function handleNodeClick(data) {
   queryParams.value.deptId = data.id;
+  
   handleQuery();
 }
 /** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -365,7 +381,8 @@
 function resetQuery() {
   dateRange.value = [];
   proxy.resetForm("queryRef");
-  queryParams.value.deptId = undefined;
+  // queryParams.value.deptId = undefined;
+  queryParams.value.deptId = deptOptions.value[0].id;
   proxy.$refs.deptTreeRef.setCurrentKey(null);
   handleQuery();
 }
@@ -526,6 +543,7 @@
   getUser().then((response) => {
     postOptions.value = response.posts;
     roleOptions.value = response.roles;
+    form.value.deptId =  queryParams.value.deptId 
     open.value = true;
     title.value = "娣诲姞鐢ㄦ埛";
     form.value.password = initPassword.value;
@@ -570,4 +588,50 @@
 
 getDeptTree();
 // getList();
+const openDialog = ref(false)
+const userInfo = reactive({
+  userId: "",
+
+})
+const treeData = ref([])
+const defaultKeys = ref([])
+const depttree = ref()
+function handlerDept(item) {
+  userInfo.userId = item.userId
+  openDialog.value = true
+  batchUserDeptTreeHttp(item.deptId)
+  batchUserDeptViewHttp(userInfo.userId)
+}
+function batchUserDeptViewHttp(userId) {
+  batchUserDeptView({userId}).then(val => {
+    defaultKeys.value = val.data.deptIds
+  })
+}
+function batchUserDeptTreeHttp(deptId) {
+  batchUserDeptTree({deptId}).then(val => {
+    if(val.data.deptId == deptId) {
+      val.data.disabled = true
+      val.data.child.forEach(item => {
+      item.disabled = true
+      
+    })
+    }
+    val.data.child.forEach(item => {
+      // item.disabled = true
+      if(item.deptId == deptId) {
+        item.disabled = true
+      }
+    })
+    treeData.value = [val.data]
+  })
+}
+function submitFileFormSave() {
+  userInfo.deptIds = depttree.value.getCheckedKeys()
+  batchUserDeptSave(userInfo).then(val => {
+    if(val.code == 200){
+      ElMessage.success('鎿嶄綔鎴愬姛')
+      openDialog.value = false
+    }
+  })
+}
 </script>

--
Gitblit v1.9.1