postdischarge-ui/src/views/system/user/index.vue
2024-06-17 09:25:43 +08:00

1217 lines
43 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container" ref="layout">
<!--用户数据-->
<div ref="topform" class="form">
<el-form :model="queryParams" ref="queryForm" size="small" :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.native="handleQuery" />
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable style="width: 240px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="用户状态" clearable style="width: 240px">
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div ref="mb8" class="mb8">
<el-row :gutter="10">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:user:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['system:user:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['system:user:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport"
v-hasPermi="['system:user:import']">导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['system:user:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
</div>
<div ref="table">
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"
:max-height="maxTableHeight">
<el-table-column type="selection" width="100" align="left" />
<el-table-column label="姓名" align="left" prop="nickName" width='120' v-if="columns[1].visible"
:show-overflow-tooltip="true" />
<el-table-column label="系统账号" align="left" prop="userName" width='120' v-if="columns[1].visible"
:show-overflow-tooltip="true" />
<el-table-column label="账号状态" align="left" key="status" width='150' v-if="columns[5].visible">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1"
@change="handleStatusChange(scope.row)"></el-switch>
</template>
</el-table-column>
<el-table-column label="所属机构" align="left" prop="nickName" width='170' v-if="columns[2].visible"
:show-overflow-tooltip="true" />
<el-table-column label="手机号码" align="left" key="phonenumber" width='170' prop="phonenumber"
v-if="columns[4].visible" />
<el-table-column label="创建时间" align="left" prop="createTime" width='230' v-if="columns[6].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="left" class-name="small-padding fixed-width">
<template slot-scope="scope" v-if="scope.row.userId !== 1">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:user:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-mobile" @click="handleinnerVisibleshow(scope.row)"
v-hasPermi="['system:user:edit']">设置机构</el-button>
<el-button size="mini" type="text" icon="el-icon-star-on" @click="handleinnerVisibleshowdep(scope.row)"
v-hasPermi="['system:user:edit']">设置科室</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:user:remove']">删除</el-button>
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
<span class="el-dropdown-link">
<i class="el-icon-d-arrow-right el-icon--right"></i>更多
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="handleResetPwd" icon="el-icon-key"
v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item>
<el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check"
v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</div>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<div class="information">基本信息</div>
<div class="systemcontent">
<el-row>
<el-col :span="12">
<el-form-item label="姓名" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" prop="sex">
<el-select v-model="form.sex" placeholder="请选择性别">
<el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出生日期" prop="userBirthDate">
<el-date-picker clearable v-model="form.userBirthDate" type="date" style="width: 250px"
value-format="yyyy-MM-dd" placeholder="请选择出生日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号" prop="userCardNo">
<el-input style="width: 220px" v-model="form.userCardNo" placeholder="请输入身份证号" maxlength="18" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="岗位名称" prop="postName">
<el-select v-model="form.postName" placeholder="请选择岗位名称" style="width: 205px" clearable>
<el-option v-for="item in nodeTypeoptions" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
<!-- <el-select v-model="form.postName" placeholder="请选择岗位名称">
<el-option
v-for="dict in dict.nodeTypeoptions"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select> -->
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="归属部门" prop="deptId">
<treeselect
v-model="form.deptId"
:options="deptOptions"
:show-count="true"
placeholder="请选择归属部门"
/>
</el-form-item>
</el-col> -->
</el-row>
</div>
<div class="information">账号信息</div>
<div class="systemcontent">
<el-row>
<el-col :span="12">
<el-form-item label="系统账号" prop="userName">
<el-input v-model="form.userName" placeholder="请输入系统账号" maxlength="30" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择角色">
<el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId"
:disabled="item.status == 1"></el-option>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="账号类型" prop="email">
<el-input
style="width: 220px"
v-model="form.email"
placeholder="请输入账号类型"
maxlength="50"
/>
</el-form-item>
</el-col> -->
</el-row>
</div>
<el-row>
<!-- <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-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-row>
<el-row>
<!-- <el-col :span="12">
<el-form-item label="用户性别">
<el-select v-model="form.sex" placeholder="请选择性别">
<el-option
v-for="dict in dict.type.sys_user_sex"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item label="账号状态">
<el-radio-group v-model="form.status">
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{
dict.label
}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<!-- <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-row>
<el-row>
<!-- <el-col :span="24">
<el-form-item label="备注">
<el-input
v-model="form.remark"
type="textarea"
placeholder="请输入内容"
></el-input>
</el-form-item>
</el-col> -->
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- 设置机构 -->
<el-dialog :title="title" :visible.sync="innerVisibleshow" width="1200px">
<el-row :gutter="20">
<el-col :span="10">
<div class="table-title">
<span v-if="agencyNum">可设置机构:{{ agencyNum }}条</span>
<span v-else>可设置机构:0条</span>
</div>
<div style="margin-top: 3%">
<el-form ref="queryForm" :model="formmat" :rules="rules" label-width="80px" :inline="true">
<el-form-item label="机构名称" prop="agencyName" label-width="120">
<el-input v-model="formmat.agencyName" placeholder="请输入机构名称" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="info">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="addresetQuerylist">重置</el-button>
</el-form-item>
</el-form>
</div>
<!-- 穿梭框左边 -->
<el-table ref="multipleTable" :data="tableData1" height="300" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChangenleft" class="el-table-dialog" row-key="id">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<!-- <el-table-column type="index" label="序号" align="center">
</el-table-column> -->
<el-table-column label="机构名称" align="center">
<template slot-scope="{ row }">
<span>{{ row.agencyName }}</span>
</template>
</el-table-column>
<el-table-column label="机构编码" align="center">
<template slot-scope="{ row }">
<span>{{ row.agencyCode }}</span>
</template>
</el-table-column>
</el-table>
<pagination :total="totalag" :page.sync="formmat.pageNum" :limit.sync="formmat.pageSize" @pagination="info" />
</el-col>
<el-col :span="4" class="el-btn-dialog">
<el-button @click="leftcontent" type="primary" :disabled="nowSelectRightData.length ? false : true"
icon="el-icon-arrow-left" style="margin-left: 0; margin-top: 10px"></el-button>
<el-button @click="rightcontent()" type="primary" :disabled="nowSelectData.length ? false : true"
icon="el-icon-arrow-right"></el-button>
</el-col>
<el-col :span="10">
<div class="table-title">
<span v-if="belongAgencyNum != ''">已设置机构:{{ belongAgencyNum }}条</span>
<span v-else>已设置机构:0条</span>
</div>
<!-- 穿梭框右边 -->
<div style="margin-top: 5%">
<el-table ref="multipleTables" :data="tableData2" max-height="300" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChangenright" row-key="id" class="el-table-dialog">
<el-table-column type="selection" width="55" align="center"></el-table-column>
<!-- <el-table-column type="index" label="序号" align="center">
</el-table-column> -->
<el-table-column label="机构名称" align="center" width="110">
<template slot-scope="{ row }">
<span>{{ row.agencyName }}</span>
</template>
</el-table-column>
<el-table-column label="机构编码" align="center">
<template slot-scope="{ row }">
<span>{{ row.agencyCode }}</span>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
</el-row>
<!-- <el-transfer
:titles="['可设置机构', '已设置机构']"
:format="{
noChecked: '${total}',
hasChecked: '${checked}/${total}'
}"
filterable
:filter-method="filterMethod"
filter-placeholder="请输入机构名称"
v-model="value"
@change="change"
@left-check-change="handleChange"
@right-check-change="rightchange"
:data="datalist">
</el-transfer> -->
</el-dialog>
<!-- 设置科室 -->
<el-dialog :title="title" :visible.sync="innerVisibleshowdep" width="1200px">
<el-row :gutter="20">
<el-col :span="10">
<div class="table-title">
<span v-if="departmentNum">可设置科室:{{ departmentNum }}条</span>
<span v-else>可设置科室:0条</span>
</div>
<div style="margin-top: 3%">
<el-form ref="queryForm" :model="formmatdep" :rules="rules" label-width="80px" :inline="true">
<el-form-item label="科室名称" prop="departmentName" label-width="120">
<el-input v-model="formmatdep.departmentName" placeholder="请输入科室名称" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="infodep">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="addresetQuerylistdep">重置</el-button>
</el-form-item>
</el-form>
</div>
<!-- 穿梭框左边 -->
<el-table ref="multipleTabledep" :data="tableDatadep1" height="300" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChangendep" class="el-table-dialog" row-key="id">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<!-- <el-table-column type="index" label="序号" align="center">
</el-table-column> -->
<el-table-column label="科室名称" align="center">
<template slot-scope="{ row }">
<span>{{ row.departmentName }}</span>
</template>
</el-table-column>
<el-table-column label="科室编码" align="center">
<template slot-scope="{ row }">
<span>{{ row.departmentCode }}</span>
</template>
</el-table-column>
</el-table>
<pagination :total="totalagdep" :page.sync="formmatdep.pageNum" :limit.sync="formmatdep.pageSize"
@pagination="infodep" />
</el-col>
<el-col :span="4" class="el-btn-dialog">
<el-button @click="leftcontentdep" type="primary" :disabled="nowSelectRightDatadep.length ? false : true"
icon="el-icon-arrow-left" style="margin-left: 0; margin-top: 10px"></el-button>
<el-button @click="rightcontentdep()" type="primary" :disabled="nowSelectDatadep.length ? false : true"
icon="el-icon-arrow-right"></el-button>
</el-col>
<el-col :span="10">
<div class="table-title">
<span v-if="departmentNums != ''">已设置科室:{{ departmentNums }}条</span>
<span v-else>已设置科室:0条</span>
</div>
<!-- 穿梭框右边 -->
<div style="margin-top: 5%">
<el-table ref="multipleTablesdep" :data="tableDatadep2" max-height="300" tooltip-effect="dark"
style="width: 100%" @selection-change="handleSelectionChangenrightdep" row-key="id"
class="el-table-dialog">
<el-table-column type="selection" width="55" align="center"></el-table-column>
<!-- <el-table-column type="index" label="序号" align="center">
</el-table-column> -->
<el-table-column label="科室名称" align="center" width="110">
<template slot-scope="{ row }">
<span>{{ row.departmentName }}</span>
</template>
</el-table-column>
<el-table-column label="科室编码" align="center">
<template slot-scope="{ row }">
<span>{{ row.departmentCode }}</span>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
</el-row>
</el-dialog>
<!-- 用户导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" />
是否更新已经存在的用户数据
</div>
<span>仅允许导入xls、xlsx格式文件。</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">下载模板</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listUser,
getUser,
delUser,
addUser,
updateUser,
editDepartment,
editAgency,
resetUserPwd,
selectUserAgency,
changeUserStatus,
selectUserAgencyleft,
selectUserDepartment,
getBelongDepartment,
} from "@/api/system/user";
import { getToken } from "@/utils/auth";
import { treeselect } from "@/api/system/dept";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { getAgencytype } from "@/api/system/agency";
export default {
name: "User",
dicts: ["sys_normal_disable", "sys_user_sex"],
components: { Treeselect },
data() {
return {
maxTableHeight: undefined,
// 右边列表
formmat: {
pageNum: 1,
pageSize: 10,
agencyName: "",
userId: "",
},
formmatdep: {
pageNum: 1,
pageSize: 10,
departmentName: "",
userId: "",
},
totalag2: 0,
totalagdep: 0,
agencyNum: "",
belongAgencyNum: "",
departmentNum: "",
departmentNums: "",
tableDatadep1: [],
tableDatadep2: [],
tableData1: [],
tableData2: [],
nowSelectDatadep: [], // 左边选中列表数据
nowSelectRightDatadep: [], // 右边选中列表数据
nowSelectRightData: [],
nowSelectData: [], // 左边选中列表数据
innerVisibleshow: false,
innerVisibleshowdep: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 用户表格数据
userList: null,
// 弹出层标题
title: "",
// 部门树选项
deptOptions: undefined,
// 是否显示弹出层
open: false,
// 部门名称
deptName: undefined,
// 默认密码
initPassword: undefined,
// 日期范围
dateRange: [],
// 岗位选项
postOptions: [],
// 角色选项
roleOptions: [],
// 表单参数
form: {},
defaultProps: {
children: "children",
label: "label",
},
// 用户导入参数
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/system/user/importData",
},
totalag: 0,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
userName: undefined,
phonenumber: undefined,
status: undefined,
deptId: undefined,
},
formlist: {
userId: "",
hospitalAgencyId: "",
userName: "",
},
formlistdep: {
userId: "",
departmentId: "",
userName: "",
},
formlistdeps: {
userId: "",
departmentId: "",
userName: "",
},
formlists: {
userId: "",
hospitalAgencyId: "",
userName: "",
},
// 列信息
columns: [
{ key: 0, 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 },
],
userName: undefined,
// 表单校验
rules: {
userName: [
{ required: true, message: "用户名称不能为空", trigger: "blur" },
{
min: 2,
max: 20,
message: "用户名称长度必须介于 2 和 20 之间",
trigger: "blur",
},
],
nickName: [
{ required: true, message: "用户昵称不能为空", trigger: "blur" },
],
password: [
{ required: true, message: "用户密码不能为空", trigger: "blur" },
{
min: 5,
max: 20,
message: "用户密码长度必须介于 5 和 20 之间",
trigger: "blur",
},
],
userCardNo: [
{
pattern:
/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/,
message: "请输入正确的身份证号",
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",
},
],
},
// abc:{}
nodeTypeoptions: [],
};
},
watch: {
// 根据名称筛选部门树
deptName(val) {
this.$refs.tree.filter(val);
},
},
created() {
this.getList();
this.infopostname();
this.getTreeselect();
this.getConfigKey("sys.user.initPassword").then((response) => {
this.initPassword = response.msg;
});
},
mounted() {
this.getMaxTableHeight()
this.screenChange()
},
methods: {
infopostname() {
var dictType = "post_name";
getAgencytype(dictType).then((res) => {
this.nodeTypeoptions = res.data;
});
},
// // 科室左边选中事件
handleSelectionChangendep(selection) {
if (selection.length > 1) {
this.$refs.multipleTabledep.clearselection(); // 清空所有选择
this.$refs.multipleTabledep.toggleRowSelection(selection.pop()); // 设置选择项
}
this.nowSelectDatadep = selection;
if (selection.length > 0) {
this.formlistdep.departmentId = selection[0].departmentId;
}
},
// // 科室右边选中事件
handleSelectionChangenrightdep(selection) {
console.log(selection, "56888");
if (selection.length > 1) {
this.$refs.multipleTablesdep.clearselection(); // 清空所有选择
this.$refs.multipleTablesdep.toggleRowSelection(selection.pop()); // 设置选择项
}
this.nowSelectRightDatadep = selection;
// this.nowSelectData=[]
},
addresetQuerylist() {
this.formmat.agencyName = "";
this.info();
},
// 科室重置
addresetQuerylistdep() {
this.formmatdep.departmentName = "";
this.infodep();
},
// 机构左边选中事件
handleSelectionChangenleft(selection) {
console.log(selection, "55555555");
this.$nextTick(() => {
if (selection.length > 1) {
this.$refs.multipleTable.clearSelection(); // 清空所有选择
this.$refs.multipleTable.toggleRowSelection(selection.pop()); // 设置选择项
}
});
this.nowSelectData = selection;
if (selection.length > 0) {
this.formlist.hospitalAgencyId = selection[0].hospitalAgencyId;
}
},
// 机构右边选中事件
handleSelectionChangenright(selection) {
console.log(selection, "56888");
if (selection.length > 1) {
this.$refs.multipleTables.clearSelection(); // 清空所有选择
this.$refs.multipleTables.toggleRowSelection(selection.pop()); // 设置选择项
}
this.nowSelectRightData = selection;
// this.nowSelectData=[]
},
addresetQuerylist() {
this.formmat.agencyName = "";
this.info();
},
// 科室点击去右边
rightcontentdep() {
// console.log("78798",this.abc);
console.log(this.tableDatadep2, "85");
if (this.tableDatadep2.length == 1) {
this.$message.error("只能选择一个科室");
} else {
editDepartment(this.formlistdep).then((response) => {
if (response.code == 200) {
this.infodep();
this.infodep2();
}
});
}
},
// 科室点击去左边
leftcontentdep() {
console.log(this.formlistdeps, "4578");
// this.formlistdeps.departmentId = "";
editDepartment(this.formlistdeps).then((response) => {
if (response.code == 200) {
console.log(response.code);
this.infodep();
this.infodep2();
}
});
},
// 机构点击去右边
rightcontent() {
// console.log("78798",this.abc);
console.log(this.tableData2, "85");
if (this.tableData2.length == 1) {
this.$message.error("只能选择一个机构");
} else {
updateUser(this.formlist).then((response) => {
if (response.code == 200) {
this.info();
this.info2();
}
});
}
},
// 点击去左边
leftcontent() {
console.log(this.formlists, "4578");
editAgency(this.formlists).then((response) => {
if (response.code == 200) {
console.log(response.code);
this.info();
this.info2();
}
});
},
// // 方法
// handleRemoveTabList(isNeedArr, originalArr) {
// if (isNeedArr.length && originalArr.length) {
// for (let i = 0; i < isNeedArr.length; i++) {
// for (let k = 0; k < originalArr.length; k++) {
// // 注意nickName为唯一值如果不为唯一值那么会出错
// if (isNeedArr[i]["id"] === originalArr[k]["id"]) {
// console.log("-----------1111");
// originalArr.splice(k, 1);
// }
// }
// }
// }
// },
/** 查询用户列表 */
getList() {
this.loading = true;
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(
(response) => {
this.userList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
/** 查询部门下拉树结构 */
getTreeselect() {
treeselect().then((response) => {
this.deptOptions = response.data;
});
},
// 筛选节点
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
// 节点单击事件
handleNodeClick(data) {
this.queryParams.deptId = data.id;
this.handleQuery();
},
// 用户状态修改
handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用";
this.$modal
.confirm('确认要"' + text + '""' + row.userName + '"用户吗?')
.then(function () {
return changeUserStatus(row.userId, row.status);
})
.then(() => {
this.$modal.msgSuccess(text + "成功");
})
.catch(function () {
row.status = row.status === "0" ? "1" : "0";
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
userId: undefined,
deptId: undefined,
userName: undefined,
nickName: undefined,
password: undefined,
phonenumber: undefined,
email: undefined,
userCardNo: undefined,
userBirthDate: undefined,
sex: undefined,
postName: undefined,
status: "0",
remark: undefined,
postIds: [],
roleIds: [],
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
console.log(selection);
this.ids = selection.map((item) => item.userId);
this.single = selection.length != 1;
this.multiple = !selection.length;
},
// 更多操作触发
handleCommand(command, row) {
switch (command) {
case "handleResetPwd":
this.handleResetPwd(row);
break;
case "handleAuthRole":
this.handleAuthRole(row);
break;
default:
break;
}
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.getTreeselect();
getUser().then((response) => {
this.postOptions = response.posts;
this.roleOptions = response.roles;
this.open = true;
this.title = "添加用户";
this.form.password = this.initPassword;
});
},
infodep() {
console.log(this.formmatdep);
selectUserDepartment(this.formmatdep).then((res) => {
this.tableDatadep1 = res.rows;
if (res.rows.length > 0) {
this.departmentNum = res.rows[0].departmentNum;
} else {
this.departmentNum = 0;
}
this.totalagdep = res.total;
});
},
// 机构
info() {
console.log(this.formmat);
selectUserAgencyleft(this.formmat).then((res) => {
this.tableData1 = res.rows;
if (res.rows.length > 0) {
this.agencyNum = res.rows[0].agencyNum;
} else {
this.agencyNum = 0;
}
this.totalag = res.total;
});
},
// 科室右边
infodep2() {
getBelongDepartment(this.userName).then((res) => {
this.tableDatadep2 = res.rows;
if (res.rows.length > 0) {
this.departmentNums = res.rows[0].departmentNum;
} else {
this.departmentNums = 0;
}
});
},
info2() {
selectUserAgency(this.userName).then((res) => {
// console.log(res,"/////////");
// this.agencyNum = res.data.agencyNum;
this.tableData2 = res.rows;
if (res.rows.length > 0) {
this.belongAgencyNum = res.rows[0].agencyNum;
} else {
this.belongAgencyNum = 0;
}
});
},
// 点击设置机构
handleinnerVisibleshow(row) {
console.log(row);
this.title = "设置机构";
this.innerVisibleshow = true;
this.userName = row.userName;
this.formlist.userId = row.userId;
this.formlist.userName = row.userName;
this.formlists.userId = row.userId;
this.formlists.userName = row.userName;
this.formmat.userName = row.userName;
// console.log(this.formmat.userId, "898");
this.info();
this.info2();
// selectUserAgency(this.userName).then((res) => {
// console.log(res);
// this.tableData1 = res.data.agencyList;
// this.agencyNum = res.data.agencyNum;
// this.belongAgencyNum = res.data.belongAgencyNum;
// });
},
// 点击设置科室
handleinnerVisibleshowdep(row) {
this.reset();
console.log(row);
this.title = "设置科室";
selectUserAgency(row.userName).then((res) => {
this.tableData2 = res.rows;
// console.log(this.tableData2,'55899999')
if (this.tableData2.length < 1) {
this.$message.error("当前无科室,请先设置机构");
} else {
this.innerVisibleshowdep = true;
this.userName = row.userName;
this.formlistdep.userId = row.userId;
this.formlistdep.userName = row.userName;
console.log(this.formlistdep, "this.formlistdep");
this.formlistdeps.userId = row.userId;
this.formlistdeps.userName = row.userName;
this.formmatdep.userName = row.userName;
// console.log(this.formmat.userId, "898");
this.infodep();
this.infodep2();
}
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.getTreeselect();
const userId = row.userId || this.ids;
getUser(userId).then((response) => {
this.form = response.data;
this.postOptions = response.posts;
this.roleOptions = response.roles;
this.form.postIds = response.postIds;
this.form.roleIds = response.roleIds;
this.open = true;
this.title = "修改用户";
this.form.password = "";
});
},
/** 重置密码按钮操作 */
handleResetPwd(row) {
this.$prompt('请输入"' + row.userName + '"的新密码', "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
closeOnClickModal: false,
inputPattern: /^.{5,20}$/,
inputErrorMessage: "用户密码长度必须介于 5 和 20 之间",
})
.then(({ value }) => {
resetUserPwd(row.userId, value).then((response) => {
this.$modal.msgSuccess("修改成功,新密码是:" + value);
});
})
.catch(() => { });
},
/** 分配角色操作 */
handleAuthRole: function (row) {
const userId = row.userId;
this.$router.push("/system/user-auth/role/" + userId);
},
/** 提交按钮 */
submitForm: function () {
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();
});
} else {
addUser(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const userIds = row.userId || this.ids;
this.$modal
.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
.then(function () {
return delUser(userIds);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => { });
},
/** 导出按钮操作 */
handleExport() {
this.download(
"system/user/export",
{
...this.queryParams,
},
`user_${new Date().getTime()}.xlsx`
);
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "用户导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
this.download(
"system/user/importTemplate",
{},
`user_template_${new Date().getTime()}.xlsx`
);
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
);
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
// 获取表格最高高度
getMaxTableHeight() {
const windowInnerHeight = window.innerHeight // 屏幕可视高度
const layoutDiv = this.$refs.layout
const formDiv = this.$refs.topform
const mb8Div = this.$refs.mb8
this.maxTableHeight =
windowInnerHeight - 134 -
this.getBoxPadding(layoutDiv) -
this.getBoxHeight(mb8Div) -
this.getBoxHeight(formDiv)
},
// 屏幕resize监听
screenChange() {
// 屏幕resize监听事件一旦屏幕宽高发生变化就会执行resize
window.addEventListener('resize', this.getMaxTableHeight, true)
// 将屏幕监听事件移除
// 这步是必须的。离开页面时不移除,再返回,或者进入到别的有相同元素的页面会报错
// 或者将这里的方法直接写在beforeDestroy函数中也可以
this.$once('hook:beforeDestroy', () => {
window.removeEventListener('resize', this.getMaxTableHeight, true)
})
},
},
};
</script>
<style lang="scss">
.information {
border-left: 3px solid #4d9de7;
width: 85px;
height: 24px;
font-size: 18px;
color: black;
padding-left: 10px;
}
.systemcontent {
margin: 20px 0 0 0;
// width: 200px;
// height: 100px;
// background: red;
}
.el-table__header-wrapper .el-table__header .el-checkbox {
display: none;
}
.table-title {
font-size: 17px;
color: black;
}
.pagination-container {
height: 10vh;
}
</style>