|  |  | 
 |  |  |   <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" | 
 |  |  | 
 |  |  |             @node-click="handleNodeClick" | 
 |  |  |           /> | 
 |  |  |         </div> | 
 |  |  |       </el-col> | 
 |  |  |       </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-col :span="24" :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="请输入用户名称" | 
 |  |  |               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" | 
 |  |  | 
 |  |  |               /> | 
 |  |  |             </el-select> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="创建时间"> | 
 |  |  |  | 
 |  |  |           <!-- <el-form-item label="创建时间"> | 
 |  |  |             <el-date-picker | 
 |  |  |               v-model="dateRange" | 
 |  |  |               style="width: 240px" | 
 |  |  | 
 |  |  |               start-placeholder="开始日期" | 
 |  |  |               end-placeholder="结束日期" | 
 |  |  |             ></el-date-picker> | 
 |  |  |           </el-form-item> | 
 |  |  |           </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-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> | 
 |  |  |  | 
 |  |  | 
 |  |  |               size="mini" | 
 |  |  |               @click="handleAdd" | 
 |  |  |               v-hasPermi="['system:user:add']" | 
 |  |  |             >新增</el-button> | 
 |  |  |               >新增</el-button | 
 |  |  |             > | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="1.5"> | 
 |  |  |             <el-button | 
 |  |  | 
 |  |  |               :disabled="single" | 
 |  |  |               @click="handleUpdate" | 
 |  |  |               v-hasPermi="['system:user:edit']" | 
 |  |  |             >修改</el-button> | 
 |  |  |               >修改</el-button | 
 |  |  |             > | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="1.5"> | 
 |  |  |             <el-button | 
 |  |  | 
 |  |  |               :disabled="multiple" | 
 |  |  |               @click="handleDelete" | 
 |  |  |               v-hasPermi="['system:user:remove']" | 
 |  |  |             >删除</el-button> | 
 |  |  |               >删除</el-button | 
 |  |  |             > | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="1.5"> | 
 |  |  |             <el-button | 
 |  |  | 
 |  |  |               size="mini" | 
 |  |  |               @click="handleImport" | 
 |  |  |               v-hasPermi="['system:user:import']" | 
 |  |  |             >导入</el-button> | 
 |  |  |               >导入</el-button | 
 |  |  |             > | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="1.5"> | 
 |  |  |             <el-button | 
 |  |  | 
 |  |  |               size="mini" | 
 |  |  |               @click="handleExport" | 
 |  |  |               v-hasPermi="['system:user:export']" | 
 |  |  |             >导出</el-button> | 
 |  |  |               >导出</el-button | 
 |  |  |             > | 
 |  |  |           </el-col> | 
 |  |  |           <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> | 
 |  |  |           <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 | 
 |  |  |           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="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"> | 
 |  |  |           <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="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" | 
 |  |  | 
 |  |  |               ></el-switch> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160"> | 
 |  |  |           <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> | 
 |  |  |               <span>{{ formatTime(scope.row.createTime) }}</span> | 
 |  |  |             </template> | 
 |  |  |           </el-table-column> | 
 |  |  |           <el-table-column | 
 |  |  | 
 |  |  |                 icon="el-icon-edit" | 
 |  |  |                 @click="handleUpdate(scope.row)" | 
 |  |  |                 v-hasPermi="['system:user:edit']" | 
 |  |  |               >修改</el-button> | 
 |  |  |                 >修改</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']"> | 
 |  |  |                 <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button> | 
 |  |  |                 >删除</el-button | 
 |  |  |               > | 
 |  |  |               <el-dropdown | 
 |  |  |                 size="mini" | 
 |  |  |                 @command="(command) => handleCommand(command, scope.row)" | 
 |  |  |                 v-hasPermi="['system:user:resetPwd', 'system:user:edit']" | 
 |  |  |               > | 
 |  |  |                 <el-button size="mini" type="text" icon="el-icon-d-arrow-right" | 
 |  |  |                   >更多</el-button | 
 |  |  |                 > | 
 |  |  |                 <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-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> | 
 |  |  |  | 
 |  |  |         <pagination | 
 |  |  |           v-show="total>0" | 
 |  |  |           v-show="total > 0" | 
 |  |  |           :total="total" | 
 |  |  |           :page.sync="queryParams.pageNum" | 
 |  |  |           :limit.sync="queryParams.pageSize" | 
 |  |  | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="用户昵称" prop="nickName"> | 
 |  |  |               <el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" /> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.nickName" | 
 |  |  |                 placeholder="请输入用户昵称" | 
 |  |  |                 maxlength="30" | 
 |  |  |               /> | 
 |  |  |             </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 label="患者范围" prop="status"> | 
 |  |  |               <el-select | 
 |  |  |                 v-model="form.searchscope" | 
 |  |  |                 placeholder="患者范围" | 
 |  |  |                 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"> | 
 |  |  |               <el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" /> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.phonenumber" | 
 |  |  |                 placeholder="请输入手机号码" | 
 |  |  |                 maxlength="11" | 
 |  |  |               /> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="邮箱" prop="email"> | 
 |  |  |               <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" /> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.email" | 
 |  |  |                 placeholder="请输入邮箱" | 
 |  |  |                 maxlength="50" | 
 |  |  |               /> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  |         <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 | 
 |  |  |               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 | 
 |  |  |               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> | 
 |  |  | 
 |  |  |                   v-for="dict in dict.type.sys_normal_disable" | 
 |  |  |                   :key="dict.value" | 
 |  |  |                   :label="dict.value" | 
 |  |  |                 >{{dict.label}}</el-radio> | 
 |  |  |                   >{{ 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-select | 
 |  |  |                 v-model="form.postIds" | 
 |  |  |                 multiple | 
 |  |  |                 placeholder="请选择岗位" | 
 |  |  |               > | 
 |  |  |                 <el-option | 
 |  |  |                   v-for="item in postOptions" | 
 |  |  |                   :key="item.postId" | 
 |  |  | 
 |  |  |           </el-col> | 
 |  |  |           <el-col :span="12"> | 
 |  |  |             <el-form-item label="角色"> | 
 |  |  |               <el-select v-model="form.roleIds" multiple placeholder="请选择角色"> | 
 |  |  |               <el-select | 
 |  |  |                 v-model="form.roleIds" | 
 |  |  |                 multiple | 
 |  |  |                 placeholder="请选择角色" | 
 |  |  |               > | 
 |  |  |                 <el-option | 
 |  |  |                   v-for="item in roleOptions" | 
 |  |  |                   :key="item.roleId" | 
 |  |  | 
 |  |  |         <el-row> | 
 |  |  |           <el-col :span="24"> | 
 |  |  |             <el-form-item label="备注"> | 
 |  |  |               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input> | 
 |  |  |               <el-input | 
 |  |  |                 v-model="form.remark" | 
 |  |  |                 type="textarea" | 
 |  |  |                 placeholder="请输入内容" | 
 |  |  |               ></el-input> | 
 |  |  |             </el-form-item> | 
 |  |  |           </el-col> | 
 |  |  |         </el-row> | 
 |  |  | 
 |  |  |     </el-dialog> | 
 |  |  |  | 
 |  |  |     <!-- 用户导入对话框 --> | 
 |  |  |     <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> | 
 |  |  |     <el-dialog | 
 |  |  |       :title="upload.title" | 
 |  |  |       :visible.sync="upload.open" | 
 |  |  |       width="400px" | 
 |  |  |       append-to-body | 
 |  |  |     > | 
 |  |  |       <el-upload | 
 |  |  |         ref="upload" | 
 |  |  |         :limit="1" | 
 |  |  | 
 |  |  |         <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" /> 是否更新已经存在的用户数据 | 
 |  |  |             <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> | 
 |  |  |           <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"> | 
 |  |  | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user"; | 
 |  |  | import { | 
 |  |  |   listUser, | 
 |  |  |   getUser, | 
 |  |  |   delUser, | 
 |  |  |   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", | 
 |  |  |   dicts: ['sys_normal_disable', 'sys_user_sex'], | 
 |  |  |   dicts: ["sys_normal_disable", "sys_user_sex"], | 
 |  |  |   components: { Treeselect }, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  | 
 |  |  |       // 弹出层标题 | 
 |  |  |       title: "", | 
 |  |  |       // 部门树选项 | 
 |  |  |       deptOptions: undefined, | 
 |  |  |       deptOptionsks: undefined, | 
 |  |  |       deptOptionsbq: undefined, | 
 |  |  |       // 是否显示弹出层 | 
 |  |  |       open: false, | 
 |  |  |       // 部门名称 | 
 |  |  | 
 |  |  |       initPassword: undefined, | 
 |  |  |       // 日期范围 | 
 |  |  |       dateRange: [], | 
 |  |  |       deptIds: [], | 
 |  |  |       // 岗位选项 | 
 |  |  |       postOptions: [], | 
 |  |  |       // 角色选项 | 
 |  |  | 
 |  |  |       form: {}, | 
 |  |  |       defaultProps: { | 
 |  |  |         children: "children", | 
 |  |  |         label: "label" | 
 |  |  |         label: "label", | 
 |  |  |       }, | 
 |  |  |       props: { multiple: true, value: "deptCode", label: "label" }, | 
 |  |  |       // 用户导入参数 | 
 |  |  |       upload: { | 
 |  |  |         // 是否显示弹出层(用户导入) | 
 |  |  | 
 |  |  |         // 设置上传的请求头部 | 
 |  |  |         headers: { Authorization: "Bearer " + getToken() }, | 
 |  |  |         // 上传的地址 | 
 |  |  |         url: process.env.VUE_APP_BASE_API + "/system/user/importData" | 
 |  |  |         url: process.env.VUE_APP_BASE_API + "/system/user/importData", | 
 |  |  |       }, | 
 |  |  |       // 查询参数 | 
 |  |  |       queryParams: { | 
 |  |  | 
 |  |  |         userName: undefined, | 
 |  |  |         phonenumber: undefined, | 
 |  |  |         status: undefined, | 
 |  |  |         deptId: 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 } | 
 |  |  |         { key: 6, label: `创建时间`, visible: true }, | 
 |  |  |       ], | 
 |  |  |  | 
 |  |  |       // 表单校验 | 
 |  |  |       rules: { | 
 |  |  |         userName: [ | 
 |  |  |           { required: true, message: "用户名称不能为空", trigger: "blur" }, | 
 |  |  |           { min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' } | 
 |  |  |           { required: true, message: "用户工号不能为空", trigger: "blur" }, | 
 |  |  |           { | 
 |  |  |             min: 2, | 
 |  |  |             max: 20, | 
 |  |  |             message: "用户工号长度必须介于 2 和 20 之间", | 
 |  |  |             trigger: "blur", | 
 |  |  |           }, | 
 |  |  |         ], | 
 |  |  |         nickName: [ | 
 |  |  |           { required: true, message: "用户昵称不能为空", trigger: "blur" } | 
 |  |  |           { required: true, message: "用户昵称不能为空", trigger: "blur" }, | 
 |  |  |         ], | 
 |  |  |         password: [ | 
 |  |  |           { required: true, message: "用户密码不能为空", trigger: "blur" }, | 
 |  |  |           { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' } | 
 |  |  |           { | 
 |  |  |             min: 5, | 
 |  |  |             max: 20, | 
 |  |  |             message: "用户密码长度必须介于 5 和 20 之间", | 
 |  |  |             trigger: "blur", | 
 |  |  |           }, | 
 |  |  |         ], | 
 |  |  |         email: [ | 
 |  |  |           { | 
 |  |  |             type: "email", | 
 |  |  |             message: "请输入正确的邮箱地址", | 
 |  |  |             trigger: ["blur", "change"] | 
 |  |  |           } | 
 |  |  |             trigger: ["blur", "change"], | 
 |  |  |           }, | 
 |  |  |         ], | 
 |  |  |         phonenumber: [ | 
 |  |  |           { | 
 |  |  |             pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, | 
 |  |  |             message: "请输入正确的手机号码", | 
 |  |  |             trigger: "blur" | 
 |  |  |           } | 
 |  |  |         ] | 
 |  |  |       } | 
 |  |  |             trigger: "blur", | 
 |  |  |           }, | 
 |  |  |         ], | 
 |  |  |       }, | 
 |  |  |     }; | 
 |  |  |   }, | 
 |  |  |   watch: { | 
 |  |  |     // 根据名称筛选部门树 | 
 |  |  |     deptName(val) { | 
 |  |  |       this.$refs.tree.filter(val); | 
 |  |  |     } | 
 |  |  |     }, | 
 |  |  |   }, | 
 |  |  |   created() { | 
 |  |  |     this.getList(); | 
 |  |  |     this.getDeptTree(); | 
 |  |  |     this.getConfigKey("sys.user.initPassword").then(response => { | 
 |  |  |     this.getConfigKey("sys.user.initPassword").then((response) => { | 
 |  |  |       this.initPassword = response.msg; | 
 |  |  |     }); | 
 |  |  |   }, | 
 |  |  |   mounted() { | 
 |  |  |     this.$nextTick(() => { | 
 |  |  |       const menuWrap = document.querySelector('.el-cascader-menu__wrap'); | 
 |  |  |       if (menuWrap) { | 
 |  |  |         menuWrap.style.height = '404px'; | 
 |  |  |       } | 
 |  |  |     }); | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     /** 查询用户列表 */ | 
 |  |  |     getList() { | 
 |  |  |       this.loading = true; | 
 |  |  |       listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => { | 
 |  |  |       console.log(this.queryParams); | 
 |  |  |       listUser(this.addDateRange(this.queryParams, this.dateRange)).then( | 
 |  |  |         (response) => { | 
 |  |  |           this.userList = response.rows; | 
 |  |  |           this.total = response.total; | 
 |  |  |           this.loading = false; | 
 |  |  | 
 |  |  |     }, | 
 |  |  |     /** 查询部门下拉树结构 */ | 
 |  |  |     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) { | 
 |  |  | 
 |  |  |     // 用户状态修改 | 
 |  |  |     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"; | 
 |  |  |       }); | 
 |  |  |       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() { | 
 |  |  | 
 |  |  |         status: "0", | 
 |  |  |         remark: undefined, | 
 |  |  |         postIds: [], | 
 |  |  |         roleIds: [] | 
 |  |  |         roleIds: [], | 
 |  |  |         deptCodes: [], | 
 |  |  |         wardCodes: [], | 
 |  |  |       }; | 
 |  |  |       this.resetForm("form"); | 
 |  |  |     }, | 
 |  |  | 
 |  |  |     }, | 
 |  |  |     // 多选框选中数据 | 
 |  |  |     handleSelectionChange(selection) { | 
 |  |  |       this.ids = selection.map(item => item.userId); | 
 |  |  |       this.ids = selection.map((item) => item.userId); | 
 |  |  |       this.single = selection.length != 1; | 
 |  |  |       this.multiple = !selection.length; | 
 |  |  |     }, | 
 |  |  | 
 |  |  |     /** 新增按钮操作 */ | 
 |  |  |     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.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) { | 
 |  |  |       this.reset(); | 
 |  |  |       this.deptIds = []; | 
 |  |  |       const userId = row.userId || this.ids; | 
 |  |  |       getUser(userId).then(response => { | 
 |  |  |       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); | 
 |  |  | 
 |  |  |         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) { | 
 |  |  |         } | 
 |  |  |       }); | 
 |  |  |     }, | 
 |  |  |     /** 重置密码按钮操作 */ | 
 |  |  |     handleResetPwd(row) { | 
 |  |  |       this.$prompt('请输入"' + row.userName + '"的新密码', "提示", { | 
 |  |  | 
 |  |  |         cancelButtonText: "取消", | 
 |  |  |         closeOnClickModal: false, | 
 |  |  |         inputPattern: /^.{5,20}$/, | 
 |  |  |         inputErrorMessage: "用户密码长度必须介于 5 和 20 之间" | 
 |  |  |       }).then(({ value }) => { | 
 |  |  |           resetUserPwd(row.userId, value).then(response => { | 
 |  |  |         inputErrorMessage: "用户密码长度必须介于 5 和 20 之间", | 
 |  |  |       }) | 
 |  |  |         .then(({ value }) => { | 
 |  |  |           resetUserPwd(row.userId, value).then((response) => { | 
 |  |  |             this.$modal.msgSuccess("修改成功,新密码是:" + value); | 
 |  |  |           }); | 
 |  |  |         }).catch(() => {}); | 
 |  |  |         }) | 
 |  |  |         .catch(() => {}); | 
 |  |  |     }, | 
 |  |  |     /** 分配角色操作 */ | 
 |  |  |     handleAuthRole: function(row) { | 
 |  |  |     handleAuthRole: function (row) { | 
 |  |  |       const userId = row.userId; | 
 |  |  |       this.$router.push("/system/user-auth/role/" + userId); | 
 |  |  |     }, | 
 |  |  |     /** 提交按钮 */ | 
 |  |  |     submitForm: function() { | 
 |  |  |       this.$refs["form"].validate(valid => { | 
 |  |  |     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 => { | 
 |  |  |             updateUser(this.form).then((response) => { | 
 |  |  |               this.$modal.msgSuccess("修改成功"); | 
 |  |  |               this.open = false; | 
 |  |  |               this.getList(); | 
 |  |  |               this.adduserdept(); | 
 |  |  |             }); | 
 |  |  |           } else { | 
 |  |  |             addUser(this.form).then(response => { | 
 |  |  |             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) => { | 
 |  |  |           const 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) => { | 
 |  |  |           const 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) { | 
 |  |  |       const userIds = row.userId || this.ids; | 
 |  |  |       this.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(function() { | 
 |  |  |         return delUser(userIds); | 
 |  |  |       }).then(() => { | 
 |  |  |         this.getList(); | 
 |  |  |         this.$modal.msgSuccess("删除成功"); | 
 |  |  |       }).catch(() => {}); | 
 |  |  |       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`) | 
 |  |  |       this.download( | 
 |  |  |         "system/user/export", | 
 |  |  |         { | 
 |  |  |           ...this.queryParams, | 
 |  |  |         }, | 
 |  |  |         `user_${new Date().getTime()}.xlsx` | 
 |  |  |       ); | 
 |  |  |     }, | 
 |  |  |     /** 导入按钮操作 */ | 
 |  |  |     handleImport() { | 
 |  |  | 
 |  |  |     }, | 
 |  |  |     /** 下载模板操作 */ | 
 |  |  |     importTemplate() { | 
 |  |  |       this.download('system/user/importTemplate', { | 
 |  |  |       }, `user_template_${new Date().getTime()}.xlsx`) | 
 |  |  |       this.download( | 
 |  |  |         "smartor/import/getImportPatTemplate", | 
 |  |  |         {}, | 
 |  |  |         `user_template_${new Date().getTime()}.xlsx` | 
 |  |  |       ); | 
 |  |  |     }, | 
 |  |  |     // 文件上传中处理 | 
 |  |  |     handleFileUploadProgress(event, 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.$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> | 
 |  |  | </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> |