From 91f78c7a3c325b7627f269524cdf92f006948cdf Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期一, 20 十月 2025 17:37:35 +0800
Subject: [PATCH] 景宁电话接入
---
src/views/system/user/index.vue | 249 ++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 210 insertions(+), 39 deletions(-)
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index d31eecf..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"
@@ -228,7 +238,7 @@
width="160"
>
<template slot-scope="scope">
- <span>{{ parseTime(scope.row.createTime) }}</span>
+ <span>{{ formatTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
@@ -305,17 +315,54 @@
</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-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-row>
+ <el-form-item label="閫傜敤绉戝" prop="region">
+ <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">
@@ -340,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>
@@ -392,6 +439,7 @@
</el-form-item>
</el-col>
</el-row>
+
<el-row>
<el-col :span="12">
<el-form-item label="宀椾綅">
@@ -498,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",
@@ -528,7 +579,8 @@
// 寮瑰嚭灞傛爣棰�
title: "",
// 閮ㄩ棬鏍戦�夐」
- deptOptions: undefined,
+ deptOptionsks: undefined,
+ deptOptionsbq: undefined,
// 鏄惁鏄剧ず寮瑰嚭灞�
open: false,
// 閮ㄩ棬鍚嶇О
@@ -548,6 +600,7 @@
children: "children",
label: "label",
},
+ props: { multiple: true, value: "deptCode", label: "label" },
// 鐢ㄦ埛瀵煎叆鍙傛暟
upload: {
// 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
@@ -572,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",
},
],
@@ -635,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() {
@@ -650,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) {
@@ -699,6 +775,8 @@
remark: undefined,
postIds: [],
roleIds: [],
+ deptCodes: [],
+ wardCodes: [],
};
this.resetForm("form");
},
@@ -737,14 +815,15 @@
/** 鏂板鎸夐挳鎿嶄綔 */
handleAdd() {
this.reset();
- getUser().then((response) => {
- this.postOptions = response.posts;
- this.roleOptions = response.roles;
- this.open = true;
- this.title = "娣诲姞鐢ㄦ埛";
- this.form.password = this.initPassword;
- this.form.depts = [];
- });
+ this.open = true;
+ this.title = "娣诲姞鐢ㄦ埛";
+ this.form.password = this.initPassword;
+ this.form.depts = [];
+ // getUser().then((response) => {
+ // this.postOptions = response.posts;
+ // this.roleOptions = response.roles;
+
+ // });
},
/** 淇敼鎸夐挳鎿嶄綔 */
handleUpdate(row) {
@@ -753,7 +832,20 @@
const userId = row.userId || this.ids;
getUser(userId).then((response) => {
this.form = response.data;
-
+ 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);
@@ -761,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) {
+ }
});
},
/** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
@@ -786,23 +888,83 @@
},
/** 鎻愪氦鎸夐挳 */
submitForm: function () {
+ 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) {
if (this.form.userId != undefined) {
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) {
@@ -836,7 +998,7 @@
/** 涓嬭浇妯℃澘鎿嶄綔 */
importTemplate() {
this.download(
- "system/user/importTemplate",
+ "smartor/import/getImportPatTemplate",
{},
`user_template_${new Date().getTime()}.xlsx`
);
@@ -866,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