From e8c62bd430b9697d3f954125b7ec9f61f18347a2 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期一, 20 十月 2025 11:19:34 +0800
Subject: [PATCH] 测试完成
---
src/views/system/user/index.vue | 281 ++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 203 insertions(+), 78 deletions(-)
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 23cce5e..71bb1b1 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -2,7 +2,7 @@
<div class="app-container">
<el-row :gutter="20">
<!--閮ㄩ棬鏁版嵁-->
- <el-col :span="4" :xs="24">
+ <!-- <el-col :span="4" :xs="24">
<div class="head-container">
<el-input
v-model="deptName"
@@ -26,9 +26,9 @@
@node-click="handleNodeClick"
/>
</div>
- </el-col>
+ </el-col> -->
<!--鐢ㄦ埛鏁版嵁-->
- <el-col :span="20" :xs="24">
+ <el-col :span="24" :xs="24">
<el-form
:model="queryParams"
ref="queryForm"
@@ -37,10 +37,19 @@
v-show="showSearch"
label-width="68px"
>
- <el-form-item label="鐢ㄦ埛鍚嶇О" prop="userName">
+ <el-form-item label="鐢ㄦ埛宸ュ彿" prop="userName">
<el-input
v-model="queryParams.userName"
- placeholder="璇疯緭鍏ョ敤鎴峰悕绉�"
+ placeholder="璇疯緭鍏ョ敤鎴峰伐鍙�"
+ clearable
+ style="width: 240px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="鐢ㄦ埛鏄电О" prop="nickName">
+ <el-input
+ v-model="queryParams.nickName"
+ placeholder="璇疯緭鍏ョ敤鎴锋樀绉�"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
@@ -70,7 +79,8 @@
/>
</el-select>
</el-form-item>
- <el-form-item label="鍒涘缓鏃堕棿">
+
+ <!-- <el-form-item label="鍒涘缓鏃堕棿">
<el-date-picker
v-model="dateRange"
style="width: 240px"
@@ -80,7 +90,7 @@
start-placeholder="寮�濮嬫棩鏈�"
end-placeholder="缁撴潫鏃ユ湡"
></el-date-picker>
- </el-form-item>
+ </el-form-item> -->
<el-form-item>
<el-button
type="primary"
@@ -174,7 +184,7 @@
v-if="columns[0].visible"
/>
<el-table-column
- label="鐢ㄦ埛鍚嶇О"
+ label="鐢ㄦ埛宸ュ彿"
align="center"
key="userName"
prop="userName"
@@ -189,14 +199,14 @@
v-if="columns[2].visible"
:show-overflow-tooltip="true"
/>
- <el-table-column
+ <!-- <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"
@@ -304,52 +314,55 @@
/>
</el-form-item>
</el-col>
- <!-- <el-col :span="12">
- <el-form-item label="褰掑睘閮ㄩ棬" prop="deptId">
- <treeselect
- v-model="form.depts"
- :options="deptOptions"
- :multiple="true"
- :show-count="true"
- placeholder="璇烽�夋嫨褰掑睘閮ㄩ棬"
- />
+ <el-col :span="12">
+ <el-form-item label="鎮h�呰寖鍥�" prop="status">
+ <el-select
+ v-model="form.searchscope"
+ placeholder="鎮h�呰寖鍥�"
+ clearable
+ >
+ <el-option
+ v-for="dict in searchscopelist"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
</el-form-item>
- </el-col> -->
+ </el-col>
</el-row>
<el-form-item label="閫傜敤绉戝" prop="region">
- <el-cascader
- style="width: 478px"
- v-model="form.leaveldeptcodes"
- :options="deptOptions"
- :props="props"
- :show-all-levels="false"
- clearable
- >
- <template slot-scope="{ node, data }">
- <span>{{ data.label }}</span>
- <span v-if="!node.isLeaf">
- ({{ data.children.length }})
- </span>
- </template>
- </el-cascader>
- </el-form-item>
- <el-form-item label="閫傜敤闄㈠尯" prop="region">
- <el-cascader
- style="width: 478px"
- v-model="form.leavehospitaldistrictcodes"
- :options="deptOptions"
- :props="props"
- :show-all-levels="false"
- clearable
- >
- <template slot-scope="{ node, data }">
- <span>{{ data.label }}</span>
- <span v-if="!node.isLeaf">
- ({{ data.children.length }})
- </span>
- </template>
- </el-cascader>
- </el-form-item>
+ <el-cascader
+ style="width: 478px"
+ v-model="form.deptCodes"
+ @remove-tag="removehpsp"
+ :options="deptOptionsks"
+ :props="props"
+ filterable
+ clearable
+ >
+ <template slot-scope="{ node, data }">
+ <span>{{ data.label }}</span>
+ <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
+ </template>
+ </el-cascader>
+ </el-form-item>
+ <el-form-item label="閫傜敤鐥呭尯" prop="region">
+ <el-cascader
+ style="width: 478px"
+ @remove-tag="removehpsp"
+ v-model="form.wardCodes"
+ :options="deptOptionsbq"
+ :props="props"
+ filterable
+ clearable
+ >
+ <template slot-scope="{ node, data }">
+ <span>{{ data.label }}</span>
+ <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
+ </template>
+ </el-cascader>
+ </el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="鎵嬫満鍙风爜" prop="phonenumber">
@@ -374,12 +387,12 @@
<el-col :span="12">
<el-form-item
v-if="form.userId == undefined"
- label="鐢ㄦ埛鍚嶇О"
+ label="鐢ㄦ埛宸ュ彿"
prop="userName"
>
<el-input
v-model="form.userName"
- placeholder="璇疯緭鍏ョ敤鎴峰悕绉�"
+ placeholder="璇疯緭鍏ョ敤鎴峰伐鍙�"
maxlength="30"
/>
</el-form-item>
@@ -426,6 +439,7 @@
</el-form-item>
</el-col>
</el-row>
+
<el-row>
<el-col :span="12">
<el-form-item label="宀椾綅">
@@ -532,12 +546,15 @@
addUser,
updateUser,
resetUserPwd,
+ adduserdept,
+ removeusertd,
changeUserStatus,
deptTreeSelect,
} from "@/api/system/user";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import { type } from "jquery";
export default {
name: "User",
@@ -562,7 +579,8 @@
// 寮瑰嚭灞傛爣棰�
title: "",
// 閮ㄩ棬鏍戦�夐」
- deptOptions: undefined,
+ deptOptionsks: undefined,
+ deptOptionsbq: undefined,
// 鏄惁鏄剧ず寮瑰嚭灞�
open: false,
// 閮ㄩ棬鍚嶇О
@@ -582,7 +600,7 @@
children: "children",
label: "label",
},
- props: { multiple: true, value: "id", label: "label" },
+ props: { multiple: true, value: "deptCode", label: "label" },
// 鐢ㄦ埛瀵煎叆鍙傛暟
upload: {
// 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
@@ -607,24 +625,31 @@
status: undefined,
deptId: undefined,
},
+ searchscopelist: [
+ { value: "1", label: "绉戝" },
+ { value: "2", label: "鐥呭尯" },
+ { value: "0", label: "鍏ㄩ儴" },
+ { value: "9", label: "鏃�" },
+ ],
// 鍒椾俊鎭�
columns: [
{ key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
- { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
+ { key: 1, label: `鐢ㄦ埛宸ュ彿`, visible: true },
{ key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
{ key: 3, label: `閮ㄩ棬`, visible: true },
{ key: 4, label: `鎵嬫満鍙风爜`, visible: true },
{ key: 5, label: `鐘舵�乣, visible: true },
{ key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
],
+
// 琛ㄥ崟鏍¢獙
rules: {
userName: [
- { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+ { required: true, message: "鐢ㄦ埛宸ュ彿涓嶈兘涓虹┖", trigger: "blur" },
{
min: 2,
max: 20,
- message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+ message: "鐢ㄦ埛宸ュ彿闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
trigger: "blur",
},
],
@@ -670,6 +695,14 @@
this.initPassword = response.msg;
});
},
+ mounted() {
+ this.$nextTick(() => {
+ const menuWrap = document.querySelector('.el-cascader-menu__wrap');
+ if (menuWrap) {
+ menuWrap.style.height = '404px';
+ }
+ });
+ },
methods: {
/** 鏌ヨ鐢ㄦ埛鍒楄〃 */
getList() {
@@ -685,9 +718,17 @@
},
/** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */
getDeptTree() {
- deptTreeSelect().then((response) => {
- this.deptOptions = response.data;
+ // 绉戝鍒楄〃
+ deptTreeSelect(1).then((response) => {
+ this.deptOptionsks = response.data;
});
+ deptTreeSelect(2).then((response) => {
+ this.deptOptionsbq = response.data;
+ });
+ // 闄㈠尯鍒楄〃
+ // deptTreeSelect().then((response) => {
+ // this.deptOptions = response.data;
+ // });
},
// 绛涢�夎妭鐐�
filterNode(value, data) {
@@ -734,6 +775,8 @@
remark: undefined,
postIds: [],
roleIds: [],
+ deptCodes: [],
+ wardCodes: [],
};
this.resetForm("form");
},
@@ -773,9 +816,9 @@
handleAdd() {
this.reset();
this.open = true;
- this.title = "娣诲姞鐢ㄦ埛";
- this.form.password = this.initPassword;
- this.form.depts = [];
+ this.title = "娣诲姞鐢ㄦ埛";
+ this.form.password = this.initPassword;
+ this.form.depts = [];
// getUser().then((response) => {
// this.postOptions = response.posts;
// this.roleOptions = response.roles;
@@ -789,8 +832,20 @@
const userId = row.userId || this.ids;
getUser(userId).then((response) => {
this.form = response.data;
- this.form.leaveldeptcodes = JSON.parse(this.form.hospInfo);
- this.form.leavehospitaldistrictcodes = JSON.parse(this.form.deptInfo);
+ this.belongDepts = response.belongDepts;
+ this.belongWards = response.belongWards;
+ if (this.form.hospInfo) {
+ this.form.deptCodes = JSON.parse(this.form.hospInfo);
+ } else {
+ this.form.deptCodes = [];
+ }
+ if (this.form.deptInfo) {
+ this.form.wardCodes = JSON.parse(this.form.deptInfo);
+ } else {
+ this.form.wardCodes = [];
+ }
+ console.log(this.form.wardCodes, "wardCodes");
+ console.log(this.form.deptCodes, "deptCodes");
this.postOptions = response.posts;
this.roleOptions = response.roles;
this.$set(this.form, "postIds", response.postIds);
@@ -798,6 +853,16 @@
this.open = true;
this.title = "淇敼鐢ㄦ埛";
this.form.password = "";
+ });
+ },
+ // 鍒犻櫎绉戝
+ removehpsp(valueArray) {
+ console.log(valueArray, "鍒犻櫎绉戝");
+ console.log(this.form.userId, "鍒犻櫎");
+ let code = valueArray[valueArray.length - 1];
+ removeusertd(this.form.userId, code).then((res) => {
+ if (res.code) {
+ }
});
},
/** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
@@ -823,14 +888,18 @@
},
/** 鎻愪氦鎸夐挳 */
submitForm: function () {
- this.form.hospInfo = JSON.stringify(this.form.leaveldeptcodes);
- this.form.deptInfo = JSON.stringify(this.form.leavehospitaldistrictcodes);
- this.form.leaveldeptcodes = this.form.leaveldeptcodes.map(
- (subArr) => subArr[subArr.length - 1]
- );
- this.form.leavehospitaldistrictcodes = this.form.leavehospitaldistrictcodes.map(
- (subArr) => subArr[subArr.length - 1]
- );
+ this.form.hospInfo = JSON.stringify(this.form.deptCodes);
+ this.form.deptInfo = JSON.stringify(this.form.wardCodes);
+ if (this.form.deptCodes.length)
+ this.form.deptCodes = this.form.deptCodes.map(
+ (subArr) => subArr[subArr.length - 1]
+ );
+ if (this.form.wardCodes.length)
+ this.form.wardCodes = this.form.wardCodes.map(
+ (subArr) => subArr[subArr.length - 1]
+ );
+ console.log(this.form.wardCodes, "wardCodes");
+ console.log(this.form.deptCodes, "deptCodes");
this.$refs["form"].validate((valid) => {
if (valid) {
@@ -838,17 +907,64 @@
updateUser(this.form).then((response) => {
this.$modal.msgSuccess("淇敼鎴愬姛");
this.open = false;
- this.getList();
+ this.adduserdept();
});
} else {
addUser(this.form).then((response) => {
this.$modal.msgSuccess("鏂板鎴愬姛");
this.open = false;
- this.getList();
+ this.form.userId = response.data;
+ console.log("寮�濮嬪姞閮ㄩ棬");
+
+ this.adduserdept();
});
}
}
});
+ },
+ // 鏂板鏁版嵁
+ adduserdept() {
+ if (this.form.wardCodes[0]) {
+ this.form.wardCodes.forEach((dept) => {
+ let containsId8 = null;
+ if (this.belongWards) {
+ containsId8 = this.belongWards.some(
+ (item) => item.deptCode == dept
+ );
+ }
+
+ if (!containsId8) {
+ adduserdept({
+ deptCode: dept,
+ deptType: 2,
+ userId: this.form.userId,
+ }).then((response) => {
+ this.open = false;
+ this.getList();
+ });
+ }
+ });
+ }
+ if (this.form.deptCodes[0]) {
+ this.form.deptCodes.forEach((dept) => {
+ let containsId8 = null;
+ if (this.belongDepts) {
+ containsId8 = this.belongDepts.some(
+ (item) => item.deptCode == dept
+ );
+ }
+ if (!containsId8) {
+ adduserdept({
+ deptCode: dept,
+ deptType: 1,
+ userId: this.form.userId,
+ }).then((response) => {
+ this.open = false;
+ this.getList();
+ });
+ }
+ });
+ }
},
/** 鍒犻櫎鎸夐挳鎿嶄綔 */
handleDelete(row) {
@@ -882,7 +998,7 @@
/** 涓嬭浇妯℃澘鎿嶄綔 */
importTemplate() {
this.download(
- "system/user/importTemplate",
+ "smartor/import/getImportPatTemplate",
{},
`user_template_${new Date().getTime()}.xlsx`
);
@@ -912,3 +1028,12 @@
},
};
</script>
+<style lang="scss" >
+// ::v-deep .el-cascader-menu__wrap{
+// min-height: 404px ;
+// }
+// ::v-deep.el-cascader-panel .el-cascader-menu__wrap {
+// height: 404px !important;
+// }
+
+</style>
--
Gitblit v1.9.3