@@ -1,205 +1,97 @@
< 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"
node -key = " id "
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 >
< splitpanes class = "default-theme" >
<!-- 部门数据 -- >
< pane size = "16 ">
< el-col >
< 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" node -key = " id " default -expand -all highlight -current @ node -click = " handleNodeClick " / >
< / div >
< / el-col >
< / pane >
<!-- 用户数据 -- >
< pane >
< el-col size = "84" >
< 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-i con-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-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" 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"
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-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-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 >
< 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" >
< 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-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-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 >
< pagination v-show = "total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" / >
< / el-col >
< / pane >
< / splitpanes >
< / el-row >
<!-- 添加或修改用户配置对话框 -- >
@@ -237,7 +129,7 @@
< / 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 -input v-model = "form.password" placeholder="请输入用户密码" type="password" maxlength="20" show -password / >
< / el-form-item >
< / el-col >
< / el-row >
@@ -245,23 +137,14 @@
< 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 -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 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 >
@@ -270,26 +153,14 @@
< 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 -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-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 -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 >
@@ -310,26 +181,15 @@
<!-- 用户导入对话框 -- >
< 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
>
< 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" / > 是否更新已经存在的用户数据
< 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" >
@@ -345,11 +205,13 @@ import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUs
import { getToken } from "@/utils/auth" ;
import Treeselect from "@riophae/vue-treeselect" ;
import "@riophae/vue-treeselect/dist/vue-treeselect.css" ;
import { Splitpanes , Pane } from "splitpanes" ;
import "splitpanes/dist/splitpanes.css" ;
export default {
name : "User" ,
dicts : [ 'sys_normal_disable' , 'sys_user_sex' ] ,
components : { Treeselect } ,
components : { Treeselect , Splitpanes , Pane } ,
data ( ) {
return {
// 遮罩层