postdischarge-ui/src/views/system/user/index.vue

1582 lines
48 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">
<el-row :gutter="20">
<!--部门数据-->
<!-- <el-col :span="4" :xs="24">
<div class="head-container">
<el-input
v-model="deptName"
placeholder="请输入部门名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
</div>
<div class="head-container">
<el-tree
:data="deptOptions"
:props="defaultProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
default-expand-all
highlight-current
@node-click="handleNodeClick"
/>
</div>
</el-col> -->
<!--用户数据-->
<!-- <el-col :span="20" :xs="24"> -->
<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>
<el-row :gutter="10" class="mb8">
<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>
<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"
prop="nickName"
v-if="columns[1].visible"
:show-overflow-tooltip="true"
/>
<el-table-column
label="系统账号"
align="center"
prop="userName"
v-if="columns[1].visible"
:show-overflow-tooltip="true"
/>
<el-table-column
label="所属机构"
align="center"
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"
>
<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="center"
prop="createTime"
v-if="columns[6].visible"
width="160"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
width="160"
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>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- </el-col> -->
</el-row>
<!-- 添加或修改用户配置对话框 -->
<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 {
// 右边列表
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;
});
},
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();
},
},
};
</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;
}
</style>