|
@@ -23,11 +23,11 @@
|
|
|
|
|
|
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange" :header-cell-style="{ background: 'linear-gradient(white, #ccebf9)'}">
|
|
|
<!-- <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="deptName" prop="dept.deptName" v-if="columns[4].visible" width="120" />
|
|
|
+ <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="deptName" prop="dept.deptName" 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
|
|
@@ -56,23 +56,27 @@
|
|
|
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-button>
|
|
|
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)">
|
|
|
<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>
|
|
|
+ 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>
|
|
|
+ v-hasPermi="['system:user:edit']">分配角色
|
|
|
+ </el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
|
</el-dropdown>
|
|
|
</template>
|
|
@@ -95,36 +99,36 @@
|
|
|
<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="请选择归属部门" />
|
|
|
+ <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<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-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" />
|
|
|
+ <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -148,7 +152,8 @@
|
|
|
v-for="dict in statusOptions"
|
|
|
:key="dict.dictValue"
|
|
|
:label="dict.dictValue"
|
|
|
- >{{dict.dictLabel}}</el-radio>
|
|
|
+ >{{ dict.dictLabel }}
|
|
|
+ </el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
@@ -215,7 +220,8 @@
|
|
|
<em>点击上传</em>
|
|
|
</div>
|
|
|
<div class="el-upload__tip" slot="tip">
|
|
|
- <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
|
|
|
+ <el-checkbox v-model="upload.updateSupport"/>
|
|
|
+ 是否更新已经存在的用户数据
|
|
|
<el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
|
|
|
</div>
|
|
|
<div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
|
|
@@ -229,15 +235,15 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { listUser, getUser, delUser, addUser, updateUser, exportUser, resetUserPwd, changeUserStatus, importTemplate } from "@/api/system/user";
|
|
|
-import { getToken } from "@/utils/auth";
|
|
|
-import { treeselect } from "@/api/system/dept";
|
|
|
+import {addUser, changeUserStatus, delUser, exportUser, getUser, importTemplate, listUser, resetUserPwd, updateUser} 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";
|
|
|
|
|
|
export default {
|
|
|
name: "User",
|
|
|
- components: { Treeselect },
|
|
|
+ components: {Treeselect},
|
|
|
data() {
|
|
|
return {
|
|
|
// 遮罩层
|
|
@@ -293,7 +299,7 @@ export default {
|
|
|
// 是否更新已经存在的用户数据
|
|
|
updateSupport: 0,
|
|
|
// 设置上传的请求头部
|
|
|
- headers: { Authorization: "Bearer " + getToken() },
|
|
|
+ headers: {Authorization: "Bearer " + getToken()},
|
|
|
// 上传的地址
|
|
|
url: process.env.VUE_APP_BASE_API + "/system/user/importData"
|
|
|
},
|
|
@@ -308,25 +314,25 @@ export default {
|
|
|
},
|
|
|
// 列信息
|
|
|
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 }
|
|
|
+ {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}
|
|
|
],
|
|
|
// 表单校验
|
|
|
rules: {
|
|
|
userName: [
|
|
|
- { required: true, message: "用户名称不能为空", trigger: "blur" }
|
|
|
+ {required: true, message: "用户名称不能为空", 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' }
|
|
|
+ {required: true, message: "用户密码不能为空", trigger: "blur"},
|
|
|
+ {min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur'}
|
|
|
],
|
|
|
email: [
|
|
|
{
|
|
@@ -395,16 +401,16 @@ export default {
|
|
|
handleStatusChange(row) {
|
|
|
let text = row.status === "0" ? "启用" : "停用";
|
|
|
this.$confirm('确认要"' + text + '""' + row.userName + '"用户吗?', "警告", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- }).then(function() {
|
|
|
- return changeUserStatus(row.userId, row.status);
|
|
|
- }).then(() => {
|
|
|
- this.msgSuccess(text + "成功");
|
|
|
- }).catch(function() {
|
|
|
- row.status = row.status === "0" ? "1" : "0";
|
|
|
- });
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(function () {
|
|
|
+ return changeUserStatus(row.userId, row.status);
|
|
|
+ }).then(() => {
|
|
|
+ this.msgSuccess(text + "成功");
|
|
|
+ }).catch(function () {
|
|
|
+ row.status = row.status === "0" ? "1" : "0";
|
|
|
+ });
|
|
|
},
|
|
|
// 取消按钮
|
|
|
cancel() {
|
|
@@ -495,19 +501,20 @@ export default {
|
|
|
closeOnClickModal: false,
|
|
|
inputPattern: /^.{5,20}$/,
|
|
|
inputErrorMessage: "用户密码长度必须介于 5 和 20 之间",
|
|
|
- }).then(({ value }) => {
|
|
|
- resetUserPwd(row.userId, value).then(response => {
|
|
|
- this.msgSuccess("修改成功,新密码是:" + value);
|
|
|
- });
|
|
|
- }).catch(() => {});
|
|
|
+ }).then(({value}) => {
|
|
|
+ resetUserPwd(row.userId, value).then(response => {
|
|
|
+ this.msgSuccess("修改成功,新密码是:" + value);
|
|
|
+ });
|
|
|
+ }).catch(() => {
|
|
|
+ });
|
|
|
},
|
|
|
/** 分配角色操作 */
|
|
|
- handleAuthRole: function(row) {
|
|
|
+ handleAuthRole: function (row) {
|
|
|
const userId = row.userId;
|
|
|
this.$router.push("/auth/role/" + userId);
|
|
|
},
|
|
|
/** 提交按钮 */
|
|
|
- submitForm: function() {
|
|
|
+ submitForm: function () {
|
|
|
this.$refs["form"].validate(valid => {
|
|
|
if (valid) {
|
|
|
if (this.form.userId != undefined) {
|
|
@@ -530,30 +537,32 @@ export default {
|
|
|
handleDelete(row) {
|
|
|
const userIds = row.userId || this.ids;
|
|
|
this.$confirm('是否确认删除用户编号为"' + userIds + '"的数据项?', "警告", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- }).then(function() {
|
|
|
- return delUser(userIds);
|
|
|
- }).then(() => {
|
|
|
- this.getList();
|
|
|
- this.msgSuccess("删除成功");
|
|
|
- }).catch(() => {});
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(function () {
|
|
|
+ return delUser(userIds);
|
|
|
+ }).then(() => {
|
|
|
+ this.getList();
|
|
|
+ this.msgSuccess("删除成功");
|
|
|
+ }).catch(() => {
|
|
|
+ });
|
|
|
},
|
|
|
/** 导出按钮操作 */
|
|
|
handleExport() {
|
|
|
const queryParams = this.queryParams;
|
|
|
this.$confirm('是否确认导出所有用户数据项?', "警告", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- }).then(() => {
|
|
|
- this.exportLoading = true;
|
|
|
- return exportUser(queryParams);
|
|
|
- }).then(response => {
|
|
|
- this.download(response.msg);
|
|
|
- this.exportLoading = false;
|
|
|
- }).catch(() => {});
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(() => {
|
|
|
+ this.exportLoading = true;
|
|
|
+ return exportUser(queryParams);
|
|
|
+ }).then(response => {
|
|
|
+ this.download(response.msg);
|
|
|
+ this.exportLoading = false;
|
|
|
+ }).catch(() => {
|
|
|
+ });
|
|
|
},
|
|
|
/** 导入按钮操作 */
|
|
|
handleImport() {
|
|
@@ -575,7 +584,7 @@ export default {
|
|
|
this.upload.open = false;
|
|
|
this.upload.isUploading = false;
|
|
|
this.$refs.upload.clearFiles();
|
|
|
- this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
|
|
|
+ this.$alert(response.msg, "导入结果", {dangerouslyUseHTMLString: true});
|
|
|
this.getList();
|
|
|
},
|
|
|
// 提交上传文件
|