<template>
|
<section>
|
<!--工具条-->
|
<toolbar :buttonList="buttonList" @callFunction="callFunction"></toolbar>
|
|
<!--列表-->
|
<el-table
|
:data="users"
|
highlight-current-row
|
@current-change="selectCurrentRow"
|
v-loading="listLoading"
|
@selection-change="selsChange"
|
style="width: 100%"
|
>
|
<el-table-column type="selection" width="50"></el-table-column>
|
<el-table-column type="index" width="80"></el-table-column>
|
<el-table-column
|
prop="uRealName"
|
label="昵称"
|
width
|
sortable
|
></el-table-column>
|
<el-table-column
|
prop="uLoginName"
|
label="登录名"
|
width
|
sortable
|
></el-table-column>
|
<el-table-column prop="JobNo" label="工号" width></el-table-column>
|
<el-table-column
|
prop="DepartMentName"
|
label="部门"
|
width
|
></el-table-column>
|
<el-table-column prop="RoleNames" label="角色" width sortable>
|
<template slot-scope="scope">
|
<el-tag v-for="item in scope.row.RoleNames" :key="item.Id">{{
|
item
|
}}</el-tag>
|
</template>
|
</el-table-column>
|
<!--<el-table-column prop="name" label="姓名" width="" sortable>-->
|
<!--</el-table-column>-->
|
<el-table-column
|
prop="sex"
|
label="性别"
|
width
|
:formatter="formatSex"
|
sortable
|
></el-table-column>
|
<el-table-column
|
prop="uCreateTime"
|
label="创建时间"
|
:formatter="formatBirth"
|
width
|
sortable
|
></el-table-column>
|
<el-table-column prop="tdIsDelete" label="状态" width sortable>
|
<template slot-scope="scope">
|
<el-tag
|
:type="scope.row.tdIsDelete == 0 ? 'success' : 'danger'"
|
disable-transitions
|
>{{ scope.row.tdIsDelete == 0 ? "启用" : "禁用" }}</el-tag
|
>
|
</template>
|
</el-table-column>
|
<!-- <el-table-column label="操作" width="150">
|
<template scope="scope">
|
<el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
|
<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
|
</template>
|
</el-table-column>-->
|
</el-table>
|
|
<!--工具条-->
|
<el-col :span="24" class="toolbar">
|
<el-button
|
type="danger"
|
@click="batchRemove"
|
:disabled="this.sels.length === 0"
|
>批量删除</el-button
|
>
|
<el-pagination
|
layout="prev, pager, next"
|
@current-change="handleCurrentChange"
|
:page-size="20"
|
:total="total"
|
style="float: right"
|
></el-pagination>
|
</el-col>
|
|
<!--编辑界面-->
|
<el-dialog
|
title="编辑"
|
:visible.sync="editFormVisible"
|
v-model="editFormVisible"
|
:close-on-click-modal="false"
|
>
|
<el-form
|
:model="editForm"
|
label-width="80px"
|
:rules="editFormRules"
|
ref="editForm"
|
>
|
<el-form-item label="昵称" prop="uRealName">
|
<el-input v-model="editForm.uRealName" auto-complete="off"></el-input>
|
</el-form-item>
|
<el-form-item label="登录名" prop="uLoginName">
|
<el-input
|
v-model="editForm.uLoginName"
|
auto-complete="off"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="密码" prop="uLoginPWD">
|
<el-input
|
v-model="editForm.uLoginPWD"
|
show-password
|
auto-complete="off"
|
value=""
|
></el-input>
|
</el-form-item>
|
<el-form-item label="工号" prop="JobNo">
|
<el-input
|
v-model="editForm.JobNo"
|
auto-complete="off"
|
minlength="3"
|
maxlength="10"
|
></el-input>
|
</el-form-item>
|
<!-- <el-form-item label="部门" prop="DepartmentId">
|
<el-select
|
style="width: 100%"
|
v-model="editForm.DepartmentId"
|
placeholder="请选择"
|
clearable
|
>
|
<el-option
|
v-for="item in deptModules"
|
:key="item.Id"
|
:value="item.Id"
|
:label="item.Name"
|
>
|
<span style="float: left">{{ item.Name }}</span>
|
</el-option>
|
</el-select>
|
</el-form-item> -->
|
<el-form-item prop="ParentIdArr" label="部门" width sortable>
|
<el-cascader
|
placeholder="请选择部门,支持搜索功能"
|
style="width: 100%"
|
v-model="editForm.ParentIdArr"
|
:options="options"
|
filterable
|
clearable
|
change-on-select
|
>
|
</el-cascader>
|
</el-form-item>
|
<el-form-item label="主体" prop="SysOrgIds" filterable>
|
<el-select multiple v-model="editForm.SysOrgIds" placeholder="请选择">
|
<el-option
|
v-for="item in SysOrgId"
|
:key="item.Value"
|
:label="item.Text"
|
:value="item.Value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="角色" prop="RIDs">
|
<el-select multiple v-model="editForm.RIDs" placeholder="请选择角色">
|
<el-option :key="0" :label="'未选择角色'" :value="0"></el-option>
|
<el-option
|
v-for="item in roles"
|
:key="item.Id"
|
:label="item.Name"
|
:value="item.Id"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
|
<el-form-item label="性别">
|
<el-radio-group v-model="editForm.sex">
|
<el-radio class="radio" :label="1">男</el-radio>
|
<el-radio class="radio" :label="0">女</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="年龄">
|
<el-input-number
|
v-model="editForm.age"
|
:min="0"
|
:max="200"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="生日">
|
<el-date-picker
|
type="date"
|
placeholder="选择日期"
|
v-model="editForm.birth"
|
></el-date-picker>
|
</el-form-item>
|
<el-form-item label="手机">
|
<el-input
|
v-model="editForm.Mobile"
|
placeholder="请输入手机"
|
oninput="value=value.replace(/[^\d]/g,'')"
|
maxlength="11"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="地址">
|
<el-input type="textarea" v-model="editForm.addr"></el-input>
|
</el-form-item>
|
<el-form-item label="状态" prop="tdIsDelete">
|
<el-radio-group v-model="editForm.tdIsDelete">
|
<el-radio class="radio" :label="false">启用</el-radio>
|
<el-radio class="radio" :label="true">禁用</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click.native="editFormVisible = false">取消</el-button>
|
<el-button
|
type="primary"
|
@click.native="editSubmit"
|
:loading="editLoading"
|
>提交</el-button
|
>
|
</div>
|
</el-dialog>
|
|
<!--新增界面-->
|
<el-dialog
|
title="新增"
|
:visible.sync="addFormVisible"
|
v-model="addFormVisible"
|
:close-on-click-modal="false"
|
>
|
<el-form
|
:model="addForm"
|
label-width="80px"
|
:rules="addFormRules"
|
ref="addForm"
|
>
|
<el-form-item label="昵称" prop="uRealName">
|
<el-input
|
v-model="addForm.uRealName"
|
auto-complete="off"
|
placeholder="请输入昵称"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="登录名" prop="uLoginName">
|
<el-input
|
v-model="addForm.uLoginName"
|
auto-complete="off"
|
placeholder="请输入登录名"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="密码" prop="uLoginPWD">
|
<el-input
|
v-model="addForm.uLoginPWD"
|
show-password
|
auto-complete="off"
|
placeholder="请输入密码"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="工号" prop="JobNo">
|
<el-input
|
v-model="addForm.JobNo"
|
auto-complete="off"
|
minlength="3"
|
maxlength="10"
|
placeholder="请输入工号"
|
></el-input>
|
</el-form-item>
|
<!--<el-form-item label="姓名" prop="name">-->
|
<!--<el-input v-model="addForm.name" auto-complete="off"></el-input>-->
|
<!--</el-form-item>-->
|
<!-- <el-form-item label="部门" prop="DepartmentId">
|
<el-select
|
style="width: 100%"
|
v-model="addForm.DepartmentId"
|
placeholder="请选择"
|
clearable
|
>
|
<el-option
|
v-for="item in deptModules"
|
:key="item.Id"
|
:value="item.Id"
|
:label="item.Name"
|
>
|
<span style="float: left">{{ item.Name }}</span>
|
</el-option>
|
</el-select>
|
</el-form-item> -->
|
<el-form-item prop="ParentIdArr" label="部门" width sortable>
|
<el-cascader
|
placeholder="请选择部门,支持搜索功能"
|
style="width: 100%"
|
v-model="addForm.ParentIdArr"
|
:options="options"
|
filterable
|
change-on-select
|
>
|
|
</el-cascader>
|
</el-form-item>
|
<el-form-item label="主体" prop="SysOrgIds" filterable>
|
<el-select multiple v-model="addForm.SysOrgIds" placeholder="请选择">
|
<el-option
|
v-for="item in SysOrgId"
|
:key="item.Value"
|
:label="item.Text"
|
:value="item.Value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="性别">
|
<el-radio-group v-model="addForm.sex">
|
<el-radio class="radio" :label="1">男</el-radio>
|
<el-radio class="radio" :label="0">女</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="年龄">
|
<el-input-number
|
v-model="addForm.age"
|
:min="0"
|
:max="200"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="生日">
|
<el-date-picker
|
type="date"
|
placeholder="选择日期"
|
v-model="addForm.birth"
|
></el-date-picker>
|
</el-form-item>
|
<el-form-item label="手机" prop="Mobile">
|
<el-input
|
v-model="addForm.Mobile"
|
placeholder="请输入手机"
|
oninput="value=value.replace(/[^\d]/g,'')"
|
maxlength="11"
|
@change="teltest"
|
|
></el-input>
|
<span v-show="telShow" style="color:red;">{{tel}}</span>
|
</el-form-item>
|
<el-form-item label="地址">
|
<el-input
|
type="textarea"
|
v-model="addForm.addr"
|
placeholder="请输入地址"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="状态" prop="tdIsDelete">
|
<el-radio-group v-model="addForm.tdIsDelete">
|
<el-radio class="radio" :label="false">启用</el-radio>
|
<el-radio class="radio" :label="true">禁用</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click.native="addFormVisible = false">取消</el-button>
|
<el-button
|
type="primary"
|
@click.native="addSubmit"
|
:loading="addLoading"
|
>提交</el-button
|
>
|
</div>
|
</el-dialog>
|
|
<!--导入界面-->
|
<el-dialog
|
title="导入"
|
:visible.sync="importFormVisible"
|
v-model="importFormVisible"
|
:close-on-click-modal="false"
|
>
|
<el-upload
|
class="upload-demo"
|
ref="upload"
|
action="/api/User/ImportUserInfo"
|
:on-preview="handlePreview"
|
:on-remove="handleRemove"
|
:on-change="handleChange"
|
:file-list="fileList"
|
:auto-upload="false"
|
>
|
<el-button slot="trigger" size="small" type="primary"
|
>选取用户表格</el-button
|
>
|
<el-button
|
style="margin-left: 10px"
|
size="small"
|
type="success"
|
@click="submitUpload"
|
>批量导入表格</el-button
|
>
|
</el-upload>
|
</el-dialog>
|
</section>
|
</template>
|
|
<script>
|
import util from "../../../util/date";
|
import {
|
testapi,
|
getUserListPage,
|
getRoleListPage,
|
removeUser,
|
batchRemoveUser,
|
editUser,
|
addUser,
|
getDepartmentListPage,
|
WMPurchaseQuoteDetailGetParams,
|
getDepartmentListTree,
|
} from "../../api/api";
|
import { getButtonList } from "../../promissionRouter";
|
import Toolbar from "../../components/Toolbar";
|
import date from '../../../util/date';
|
|
export default {
|
components: { Toolbar },
|
data() {
|
|
return {
|
filters: {
|
name: "",
|
},
|
users: [],
|
roles: [],
|
options: [],
|
total: 0,
|
buttonList: [],
|
SysOrgId: [],
|
currentRow: null,
|
page: 1,
|
listLoading: false,
|
sels: [], //列表选中列
|
addDialogFormVisible: false,
|
editFormVisible: false, //编辑界面是否显示
|
editLoading: false,
|
telShow: false, // 提示语显示
|
tel:'',//提示语
|
editFormRules: {
|
uLoginName: [
|
{ required: true, message: "请输入登录名", trigger: "blur" },
|
],
|
uRealName: [{ required: true, message: "请输入昵称", trigger: "blur" }],
|
birth: [{ required: true, message: "请填写生日", trigger: "blur" }],
|
SysOrgIds: [{ required: true, message: "请选择主体", trigger: "blur" }],
|
JobNo: [{ required: true, message: "请选择工号", trigger: "blur" }],
|
},
|
deptModules: [],
|
//编辑界面数据
|
editForm: {
|
id: 0,
|
uID: 0,
|
RIDs: 0,
|
uLoginName: "",
|
uRealName: "",
|
name: "",
|
sex: -1,
|
age: 0,
|
birth: "",
|
addr: "",
|
uLoginPWD: "",
|
ParentIdArr:[],
|
},
|
|
addFormVisible: false, //新增界面是否显示
|
addLoading: false,
|
addFormRules: {
|
uLoginName: [
|
{ required: true, message: "请输入登录名", trigger: "blur" },
|
],
|
uRealName: [{ required: true, message: "请输入昵称", trigger: "blur" }],
|
uLoginPWD: [{ required: true, message: "请输入密码", trigger: "blur" }],
|
birth: [{ required: true, message: "请填写生日", trigger: "blur" }],
|
SysOrgIds: [{ required: true, message: "请选择主体", trigger: "blur" }],
|
|
},
|
//新增界面数据
|
addForm: {
|
name: "",
|
uLoginName: "",
|
uRealName: "",
|
uLoginPWD: "",
|
sex: -1,
|
age: 0,
|
birth: "",
|
addr: "",
|
},
|
//导入
|
importFormVisible: false, //导入界面是否显示
|
fileList: [],
|
};
|
},
|
methods: {
|
selectCurrentRow(val) {
|
this.currentRow = val;
|
},
|
callFunction(item) {
|
this.filters = {
|
name: item.search,
|
};
|
this[item.Func].apply(this, item);
|
},
|
//性别显示转换
|
formatSex: function (row, column) {
|
return row.sex == 1 ? "男" : row.sex == 0 ? "女" : "未知";
|
},
|
formatBirth: function (row, column) {
|
return !row.birth || row.birth == ""
|
? ""
|
: util.formatDate.format(new Date(row.birth), "yyyy-MM-dd");
|
},
|
handleCurrentChange(val) {
|
this.page = val;
|
this.getUsers();
|
},
|
//手机号合法验证
|
teltest(){
|
|
const regMobile = /^(0|86|17951)?(13[0-9]|15[012356789]|17[3678]|18[0-9]|14[57])[0-9]{8}$/;
|
debugger
|
if (!regMobile.test(this.addForm.Mobile))
|
{
|
this.telShow=true;
|
this.tel='请输入合法的手机号!';
|
return false;
|
}else
|
{
|
|
this.telShow=false;
|
return true;
|
}
|
},
|
//获取用户列表
|
getUsers() {
|
let para = {
|
page: this.page,
|
key: this.filters.name,
|
};
|
this.listLoading = true;
|
|
testapi();
|
//NProgress.start();
|
getUserListPage(para).then((res) => {
|
this.total = res.data.response.dataCount;
|
this.users = res.data.response.data;
|
this.listLoading = false;
|
//NProgress.done();
|
});
|
},
|
|
//删除
|
handleDel() {
|
let row = this.currentRow;
|
if (!row) {
|
this.$message({
|
message: "请选择要删除的一行数据!",
|
type: "error",
|
});
|
|
return;
|
}
|
this.$confirm("确认删除该记录吗?", "提示", {
|
type: "warning",
|
})
|
.then(() => {
|
this.listLoading = true;
|
//NProgress.start();
|
let para = { id: row.uID };
|
removeUser(para).then((res) => {
|
if (util.isEmt.format(res)) {
|
this.listLoading = false;
|
return;
|
}
|
this.listLoading = false;
|
//NProgress.done();
|
if (res.data.success) {
|
this.$message({
|
message: "删除成功",
|
type: "success",
|
});
|
} else {
|
this.$message({
|
message: res.data.msg,
|
type: "error",
|
});
|
}
|
|
this.getUsers();
|
});
|
})
|
.catch(() => {});
|
},
|
//显示编辑界面
|
handleEdit() {
|
let row = this.currentRow;
|
if (!row) {
|
this.$message({
|
message: "请选择要编辑的一行数据!",
|
type: "error",
|
});
|
|
return;
|
}
|
this.editFormVisible = true;
|
|
getRoleListPage().then((res) => {
|
this.roles = res.data.response.data;
|
});
|
let para = { parentId: row.DepartmentId };
|
getDepartmentListTree(para).then((res) => {
|
this.editForm = Object.assign({}, row);
|
this.editForm.ParentIdArr=res.data.response.ParentIdArr;
|
this.options=res.data.response.children;
|
|
});
|
|
// this.editForm.ParentIdArr=[0,1,2,38,127];
|
console.log("部门id是");
|
console.log(row.DepartmentId);
|
console.log("options是");
|
console.log(this.options);
|
console.log("ParentIdArr是");
|
console.log(this.editForm.ParentIdArr);
|
},
|
//显示新增界面
|
handleAdd() {
|
this.addFormVisible = true;
|
this.addForm = {
|
uLoginName: "",
|
uRealName: "",
|
uLoginPWD: "",
|
name: "",
|
sex: 1,
|
age: 0,
|
birth: "",
|
addr: "",
|
tdIsDelete: false,
|
ParentIdArr: [],
|
};
|
let para = { parentId: 0 };
|
getDepartmentListTree(para).then((res) => {
|
this.options=res.data.response.children;
|
});
|
},
|
//编辑
|
editSubmit: function () {
|
this.$refs.editForm.validate((valid) => {
|
if (valid) {
|
this.$confirm("确认提交吗?", "提示", {}).then(() => {
|
this.editLoading = true;
|
//NProgress.start();
|
let para = Object.assign({}, this.editForm);
|
para.DepartmentId = para.ParentIdArr.pop();
|
console.log("提交的部门id是");
|
console.log(para.DepartmentId);
|
para.birth =
|
!para.birth || para.birth == ""
|
? util.formatDate.format(new Date(), "yyyy-MM-dd")
|
: util.formatDate.format(new Date(para.birth), "yyyy-MM-dd");
|
|
editUser(para).then((res) => {
|
if (util.isEmt.format(res)) {
|
this.editLoading = false;
|
return;
|
}
|
if (res.data.success) {
|
this.editLoading = false;
|
//NProgress.done();
|
this.$message({
|
message: res.data.msg,
|
type: "success",
|
});
|
this.$refs["editForm"].resetFields();
|
this.editFormVisible = false;
|
this.getUsers();
|
} else {
|
this.$message({
|
message: res.data.msg,
|
type: "error",
|
});
|
this.editLoading = false;
|
}
|
});
|
});
|
}
|
});
|
},
|
//新增
|
addSubmit: function () {
|
this.$refs.addForm.validate((valid) => {
|
if (valid) {
|
this.$confirm("确认提交吗?", "提示", {}).then(() => {
|
this.addLoading = true;
|
//NProgress.start();
|
let para = Object.assign({}, this.addForm);
|
para.DepartmentId = para.ParentIdArr.pop();
|
console.log("树形拉拉");
|
console.log(para.DepartmentId);
|
para.birth =
|
!para.birth || para.birth == ""
|
? util.formatDate.format(new Date(), "yyyy-MM-dd")
|
: util.formatDate.format(new Date(para.birth), "yyyy-MM-dd");
|
addUser(para).then((res) => {
|
if (util.isEmt.format(res)) {
|
this.addLoading = false;
|
return;
|
}
|
console.log(para);
|
if (res.data.success) {
|
this.addLoading = false;
|
//NProgress.done();
|
this.$message({
|
message: res.data.msg,
|
type: "success",
|
});
|
this.$refs["addForm"].resetFields();
|
this.addFormVisible = false;
|
this.getUsers();
|
} else {
|
this.$message({
|
message: res.data.msg,
|
type: "error",
|
});
|
this.addLoading = false;
|
}
|
});
|
});
|
}
|
});
|
},
|
selsChange: function (sels) {
|
this.sels = sels;
|
},
|
//批量删除
|
batchRemove: function () {
|
// return;
|
|
var ids = this.sels.map((item) => item.uID).toString();
|
this.$confirm("确认删除选中记录吗?", "提示", {
|
type: "warning",
|
})
|
.then(() => {
|
this.listLoading = true;
|
//NProgress.start();
|
let para = { ids: ids };
|
|
batchRemoveUser(para).then((res) => {
|
this.listLoading = false;
|
//NProgress.done();
|
this.$message({
|
message: "该功能未开放",
|
type: "warning",
|
});
|
console.log(res);
|
});
|
})
|
.catch(() => {});
|
},
|
//显示导入界面
|
handleImport() {
|
this.importFormVisible = true;
|
},
|
//导入表格
|
submitUpload() {
|
if (this.fileList.length == 0) {
|
this.$message({
|
message: "请先选取要上传的用户表格!",
|
type: "error",
|
});
|
return;
|
}
|
this.$refs.upload.submit();
|
},
|
//移除表格
|
handleRemove(file, fileList) {
|
console.log(file, fileList);
|
},
|
//预览表格
|
handlePreview(file) {
|
console.log(file);
|
},
|
handleChange(file, fileList) {
|
this.fileList = fileList;
|
},
|
},
|
mounted() {
|
this.getUsers();
|
let prmsdepart = { PageSize: 99999 };
|
//获取部门列表
|
getDepartmentListPage(prmsdepart).then((res) => {
|
this.deptModules = res.data.response.data;
|
});
|
|
let routers = window.localStorage.router
|
? JSON.parse(window.localStorage.router)
|
: [];
|
this.buttonList = getButtonList(this.$route.path, routers);
|
//获取枚举状态类
|
WMPurchaseQuoteDetailGetParams({}).then((res) => {
|
if (!res.data.success) {
|
this.$message({
|
message: res.data.msg,
|
type: "error",
|
});
|
}
|
var info = res.data.response;
|
let tSysOrgId = [];
|
for (var i = 0, c = info.dicSysOrgId.length; i < c; i++) {
|
var it = info.dicSysOrgId[i];
|
tSysOrgId.push({ Value: it.Id, Text: it.ShortName || "" });
|
}
|
|
this.SysOrgId = tSysOrgId;
|
});
|
},
|
};
|
</script>
|
|
<style scoped>
|
</style>
|