From 813837a9555ea9929c64cc5e88ef4a56d2bd7b82 Mon Sep 17 00:00:00 2001
From: 王恒 <318726284@qq.com>
Date: 星期一, 11 八月 2025 18:43:28 +0800
Subject: [PATCH] '调整新增编辑查看功能'
---
src/views/system/user/index.vue | 131 +++++++++++++++++++++++++++++++++----------
1 files changed, 99 insertions(+), 32 deletions(-)
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 2131c45..8ae04a4 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -23,8 +23,8 @@
<!--鐢ㄦ埛鏁版嵁-->
<el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
- <el-form-item label="鐢ㄦ埛鍚嶇О" prop="userName">
- <el-input v-model="queryParams.userName" placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" clearable style="width: 240px" @keyup.enter="handleQuery" />
+ <el-form-item label="濮撳悕" prop="nickName">
+ <el-input v-model="queryParams.nickName" placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" clearable style="width: 240px" @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="鎵嬫満鍙风爜" prop="phonenumber">
<el-input v-model="queryParams.phonenumber" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" clearable style="width: 240px" @keyup.enter="handleQuery" />
@@ -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,23 +86,24 @@
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" align="center" width="180" 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>
- </el-tooltip>
- <el-tooltip content="鍒犻櫎" placement="top" v-if="scope.row.userId !== 1">
- <el-button link type="error" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']"></el-button>
- </el-tooltip>
- <el-tooltip content="閲嶇疆瀵嗙爜" placement="top" v-if="scope.row.userId !== 1">
- <el-button link type="danger" icon="Key" @click="handleResetPwd(scope.row)" v-hasPermi="['system:user:resetPwd']"></el-button>
- </el-tooltip>
- <el-tooltip content="鍒嗛厤瑙掕壊" placement="top" v-if="scope.row.userId !== 1">
- <el-button link type="success" icon="CircleCheck" @click="handleAuthRole(scope.row)" v-hasPermi="['system:user:edit']"></el-button>
- </el-tooltip>
+ <!-- <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>
+ <!-- </el-tooltip> -->
+ <!-- <el-tooltip content="鍒犻櫎" placement="top" v-if="scope.row.userId !== 1"> -->
+ <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">鍒犻櫎</el-button>
+ <!-- </el-tooltip> -->
+ <!-- <el-tooltip content="閲嶇疆瀵嗙爜" placement="top" v-if="scope.row.userId !== 1">
+ <el-button link type="error" icon="Key" @click="handleResetPwd(scope.row)" v-hasPermi="['system:user:resetPwd']"></el-button>
+ </el-tooltip> -->
+ <!-- <el-tooltip content="鍒嗛厤瑙掕壊" placement="top" v-if="scope.row.userId !== 1"> -->
+ <el-button link type="success" icon="CircleCheck" @click="handleAuthRole(scope.row)" v-hasPermi="['system:user:edit']">鍒嗛厤瑙掕壊</el-button>
+ <!-- </el-tooltip> -->
<!-- <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>
@@ -115,7 +116,7 @@
<el-form :model="form" :rules="rules" ref="userRef" label-width="80px">
<el-row>
<el-col :span="12">
- <el-form-item label="鐢ㄦ埛鏄电О" prop="nickName">
+ <el-form-item label="濮撳悕" prop="nickName">
<el-input v-model="form.nickName" placeholder="璇疯緭鍏ョ敤鎴锋樀绉�" maxlength="30" />
</el-form-item>
</el-col>
@@ -145,16 +146,16 @@
</el-col>
</el-row>
<el-row>
- <el-col :span="12">
+ <!-- <el-col :span="12">
<el-form-item v-if="form.userId == undefined" label="鐢ㄦ埛鍚嶇О" prop="userName">
<el-input v-model="form.userName" placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" maxlength="30" />
</el-form-item>
- </el-col>
- <el-col :span="12">
+ </el-col> -->
+ <!-- <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">
@@ -173,13 +174,13 @@
</el-col>
</el-row>
<el-row>
- <el-col :span="12">
+ <!-- <el-col :span="12">
<el-form-item label="宀椾綅">
<el-select v-model="form.postIds" multiple placeholder="璇烽�夋嫨">
<el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId" :disabled="item.status == 1"></el-option>
</el-select>
</el-form-item>
- </el-col>
+ </el-col> -->
<el-col :span="12">
<el-form-item label="瑙掕壊">
<el-select v-model="form.roleIds" multiple placeholder="璇烽�夋嫨">
@@ -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,13 +316,14 @@
{ 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" }],
+ phonenumber: [{ required: true, message: "鎵嬫満鍙风爜涓嶈兘涓虹┖", trigger: "blur" },{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", trigger: "blur" }],
},
});
@@ -338,6 +353,8 @@
function getDeptTree() {
deptTreeSelect().then((response) => {
deptOptions.value = response.data;
+ queryParams.value.deptId = response.data[0].id;
+ getList()
});
}
/** 鏌ヨ鐢ㄦ埛鍒楄〃 */
@@ -352,6 +369,7 @@
/** 鑺傜偣鍗曞嚮浜嬩欢 */
function handleNodeClick(data) {
queryParams.value.deptId = data.id;
+
handleQuery();
}
/** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -363,7 +381,8 @@
function resetQuery() {
dateRange.value = [];
proxy.resetForm("queryRef");
- queryParams.value.deptId = undefined;
+ queryParams.value.nickName = undefined;
+ queryParams.value.deptId = deptOptions.value[0].id;
proxy.$refs.deptTreeRef.setCurrentKey(null);
handleQuery();
}
@@ -524,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;
@@ -548,6 +568,7 @@
function submitForm() {
proxy.$refs["userRef"].validate((valid) => {
if (valid) {
+ form.value.userName = form.value.phonenumber
if (form.value.userId != undefined) {
updateUserProfile(form.value).then((response) => {
proxy.$modal.msgSuccess("淇敼鎴愬姛");
@@ -566,5 +587,51 @@
}
getDeptTree();
-getList();
+// 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