<template>
|
<div class="app-container">
|
<div>
|
<el-form :inline="true" :model="queryForm">
|
<el-form-item label="用户名">
|
<el-input
|
v-model="queryForm.username"
|
class="filter-item"
|
placeholder=""
|
style="width: 150px;"
|
@keyup.enter.native="queryHandle"
|
/>
|
</el-form-item>
|
<el-form-item label="单位">
|
<el-input
|
v-model="queryForm.company"
|
class="filter-item"
|
placeholder=""
|
style="width: 200px;"
|
@keyup.enter.native="queryHandle"
|
/>
|
</el-form-item>
|
<el-form-item label="部门">
|
<el-input
|
v-model="queryForm.department"
|
class="filter-item"
|
placeholder=""
|
style="width: 150px;"
|
@keyup.enter.native="queryHandle"
|
/>
|
</el-form-item>
|
<el-form-item label="职务">
|
<el-input
|
v-model="queryForm.job"
|
class="filter-item"
|
placeholder=""
|
style="width: 150px;"
|
@keyup.enter.native="queryHandle"
|
/>
|
</el-form-item>
|
<el-form-item>
|
<el-button
|
class="filter-item"
|
type="primary"
|
icon="el-icon-search"
|
@click="queryHandle"
|
/>
|
</el-form-item>
|
<el-form-item>
|
<el-button
|
v-if="getBtnPermission('add')"
|
v-show="userType != 3"
|
class="filter-item"
|
style="margin-left: 10px;"
|
type="primary"
|
icon="el-icon-plus"
|
@click="showCreateHandle"
|
>新增</el-button>
|
</el-form-item>
|
<el-form-item>
|
<el-button
|
v-if="getBtnPermission('import')"
|
v-show="userType != 3"
|
class="filter-item"
|
style="margin-left: 10px;"
|
type="primary"
|
icon="el-icon-upload2"
|
@click="showImportHandle"
|
>导入</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
<!-- <div style="display: block;margin-top: -10px;margin-bottom: 10px">-->
|
<!-- <div class="basic_search">-->
|
<!-- <span>区域:</span>-->
|
<!-- <el-select v-model="queryForm.province" clearable filterable @change="changeArea('province')">-->
|
<!-- <el-option-->
|
<!-- v-for="item in provinceList"-->
|
<!-- :key="item.id"-->
|
<!-- :label="item.name"-->
|
<!-- :value="item.name"-->
|
<!-- >-->
|
<!-- </el-option>-->
|
<!-- </el-select>-->
|
<!-- </div>-->
|
<!-- <div class="basic_search">-->
|
<!-- <el-select v-model="queryForm.city" prop="city" clearable filterable @change="changeArea('city')">-->
|
<!-- <el-option-->
|
<!-- v-for="item in cityList"-->
|
<!-- :key="item.id"-->
|
<!-- :label="item.name"-->
|
<!-- :value="item.name"-->
|
<!-- >-->
|
<!-- </el-option>-->
|
<!-- </el-select>-->
|
<!-- </div>-->
|
<!-- <div class="basic_search">-->
|
<!-- <el-select v-model="queryForm.area" clearable filterable @change="changeArea('area')">-->
|
<!-- <el-option-->
|
<!-- v-for="item in districtList"-->
|
<!-- :key="item.id"-->
|
<!-- :label="item.name"-->
|
<!-- :value="item.name"-->
|
<!-- >-->
|
<!-- </el-option>-->
|
<!-- </el-select>-->
|
<!-- </div>-->
|
<!-- <div class="basic_search">-->
|
<!-- <el-select v-model="queryForm.town" clearable filterable @change="changeArea('town')" >-->
|
<!-- <el-option-->
|
<!-- v-for="item in streetList"-->
|
<!-- :key="item.id"-->
|
<!-- :label="item.name"-->
|
<!-- :value="item.name"-->
|
<!-- >-->
|
<!-- </el-option>-->
|
<!-- </el-select>-->
|
<!-- </div>-->
|
<!-- <div class="basic_search">-->
|
<!-- <el-select v-model="queryForm.community" clearable filterable>-->
|
<!-- <el-option-->
|
<!-- v-for="item in committeeList"-->
|
<!-- :key="item.id"-->
|
<!-- :label="item.name"-->
|
<!-- :value="item.name"-->
|
<!-- >-->
|
<!-- </el-option>-->
|
<!-- </el-select>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<div class="table_content">
|
<el-table
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="userData"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
@sort-change="sortUserChange"
|
>
|
<el-table-column type="index" label="" align="center" width="60"/>
|
<el-table-column label="用户名" prop="username" align="center" sortable="custom" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.username }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="真实姓名" prop="realname" align="center" sortable="custom" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.realname }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="身份证号" prop="idcard" align="center" sortable="custom" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.idcard }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="单位" prop="company" align="center" sortable="custom" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.company }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="部门" prop="department" align="center" sortable="custom" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.department }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="职位" prop="job" align="center" sortable="custom" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.job }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="用户类型" prop="type" align="center" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.type | parseType}}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="角色" prop="role" align="center" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.roles | parseRoles }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="人员MAC地址" prop="deviceNo" align="center" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.deviceNo}}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="人脸数据" prop="role" align="center" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.code == null || scope.row.code === '' ?"":"已采集" }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="是否通过考试" prop="ispass" align="center" width="100px">
|
<template slot-scope="scope">
|
<div v-for="item in isList">
|
<div v-if="item.id === scope.row.ispass">
|
<span>{{item.name}}</span>
|
</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column label="考试合格有效期" prop="starttime" align="center" width="300px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.starttime}}</span>
|
<span>-</span>
|
<span>{{ scope.row.endtime}}</span>
|
</template>
|
|
</el-table-column>
|
<el-table-column label="是否单位负责人" prop="iscompany" align="center" width="100px">
|
<template slot-scope="scope">
|
<div v-for="item in isList">
|
<div v-if="item.id === scope.row.iscompany">
|
<span>{{item.name}}</span>
|
</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column label="是否部门负责人" prop="isdepartment" align="center" width="100px">
|
<template slot-scope="scope">
|
<div v-for="item in isList">
|
<div v-if="item.id === scope.row.isdepartment">
|
<span>{{item.name}}</span>
|
</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column label="状态" prop="status" align="center" width="100px">
|
<template slot-scope="scope">
|
<span>{{ scope.row.status | parseStatus }}</span>
|
</template>
|
</el-table-column>
|
|
<!-- <el-table-column label="更新时间" prop="lastmodifieddate" align="center" sortable="custom">-->
|
<!-- <template slot-scope="scope">-->
|
<!-- <span>{{ scope.row.lastmodifieddate | parseTime('{y}-{m}-{d}') }}</span>-->
|
<!-- </template>-->
|
<!-- </el-table-column>-->
|
<el-table-column label="操作" align="center" width="250" class-name="small-padding fixed-width" fixed="right">
|
<template slot-scope="scope">
|
<el-button type="text" @click="showEditHandle(scope.row)">编辑</el-button>
|
<el-button v-show="userType != 3" :disabled="disableRole(scope.row)" type="text" align="center" @click="showAssignRole(scope.row)">分配角色</el-button>
|
<el-button type="text" @click="showWorkLicense(scope.row)">查看工作证</el-button>
|
<el-button v-show="userType != 3" :disabled="scope.row.type==1" type="text" style="color:red;" @click="deleteHandle(scope.row)">删除</el-button>
|
<el-button v-if="scope.row.cardId === ''" v-show="userType !== 3" :disabled="scope.row.type===1" type="text" @click="bindCardHandle(scope.row)">绑定人员卡</el-button>
|
<el-button v-else v-show="userType !== 3" :disabled="scope.row.type===1" type="text" style="color:red;" @click="setInvalidDel(scope.row)">删除人员卡</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<br>
|
<el-pagination
|
v-show="recordTotal>0"
|
:current-page="currentPage"
|
:page-sizes="[10, 20, 30, 50]"
|
:page-size="pageSize"
|
:total="recordTotal"
|
layout="total, sizes, prev, pager, next, jumper"
|
background
|
style="float:right;"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
</div>
|
<el-dialog :title="dialogStatus==='create'?'新增':'编辑'" :visible.sync="dialogFormVisible" :modal-append-to-body="false" :close-on-click-modal="false" width="50%">
|
<el-form ref="dataForm" :rules="dialogStatus==='create'?dataFormRules:rules" :model="dataForm" label-position="right" label-width="150px" style="padding-right: 50px" element-loading-text="保存中...">
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="用户名(手机号):" prop="username">
|
<el-input v-model.trim="dataForm.username"/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="真实姓名:" prop="realname">
|
<el-input v-model.trim="dataForm.realname"/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<div v-if="dialogStatus=='create'">
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="密码:" prop="password">
|
<el-input v-model.trim="dataForm.password" :type="passwordType" placeholder="请输入密码">
|
<el-button slot="append" icon="el-icon-view" @click="showPwd"/>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="确认密码:" prop="confirmPassword">
|
<el-input v-model.trim="dataForm.confirmPassword" :type="confirmPasswordType" placeholder="请输入确认密码" @change="passwordChangeEvent">
|
<el-button slot="append" icon="el-icon-view" @click="showConfirmPwd"/>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
</div>
|
<div v-else>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="密码:" prop="password">
|
<el-input v-model.trim="dataForm.password" :type="passwordType" placeholder="请输入密码">
|
<el-button slot="append" icon="el-icon-view" @click="showPwd"/>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="确认密码:" prop="confirmPassword">
|
<el-input v-model.trim="dataForm.confirmPassword" :type="confirmPasswordType" placeholder="请输入确认密码" @change="passwordChangeEvent">
|
<el-button slot="append" icon="el-icon-view" @click="showConfirmPwd"/>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</div>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="身份证号:" prop="idcard">
|
<el-input v-model.trim="dataForm.idcard"/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="邮箱:" prop="email">
|
<el-input v-model.trim="dataForm.email"/>
|
</el-form-item>
|
</el-col>
|
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="单位:" prop="company">
|
<el-select v-model.trim="dataForm.company" auto-complete="on" style="width:100%;">
|
<el-option
|
v-for="item in companyList"
|
:key="item.id"
|
:value="item.company"
|
:label="item.company"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="部门:" prop="department">
|
<el-select v-model.trim="dataForm.department" auto-complete="on" style="width:100%;">
|
<el-option
|
v-for="item in departmentList"
|
:key="item.id"
|
:value="item.department"
|
:label="item.department"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="职务:" prop="job">
|
<el-input v-model.trim="dataForm.job"/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="用户类型:" prop="type">
|
<el-select v-model.trim="dataForm.type" placeholder="请选择用户类型" auto-complete="on" style="width:100%;">
|
<el-option
|
v-for="item in typeList"
|
:key="item.id"
|
:value="item.id"
|
:label="item.name"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="是否单位负责人:" prop="iscompany">
|
<el-select v-model.trim="dataForm.iscompany" style="width:100%;">
|
<el-option
|
v-for="item in isList"
|
:key="item.id"
|
:value="item.id"
|
:label="item.name"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="是否部门负责人:" prop="isdepartment">
|
<el-select v-model.trim="dataForm.isdepartment" style="width:100%;">
|
<el-option
|
v-for="item in isList"
|
:key="item.id"
|
:value="item.id"
|
:label="item.name"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="状态:" prop="status">
|
<el-select v-model.trim="dataForm.status" auto-complete="on" style="width:100%;">
|
<el-option
|
v-for="item in statusList"
|
:key="item.id"
|
:value="item.id"
|
:label="item.name"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="定位卡编号:" prop="empNo">
|
<el-input v-model.trim="dataForm.empNo"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="定位卡MAC地址:" prop="deviceNo">
|
<el-input v-model.trim="dataForm.deviceNo"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="dialogFormVisible = false">取消</el-button>
|
<el-button type="primary" @click="dialogStatus==='create'?createHandle():updateHandle()">确认</el-button>
|
</div>
|
</el-dialog>
|
<el-dialog :visible.sync="dialogUserRoleFormVisible" :modal-append-to-body="false" :close-on-click-modal="false" title="分配角色">
|
<el-form ref="userRoleDataForm" :rules="userRoleDataFormRules" :model="userRoleDataForm" label-position="left" label-width="100px" style="margin-left:30px;">
|
<el-form-item label="角色:" prop="userRoles">
|
<el-select v-model="userRoleDataForm.userRoles" placeholder="请选择用户角色" style="width:100%;" multiple>
|
<el-option v-for="(item,index) in roleList" :value="item.id" :key="index" :label="getRoleInfo(item)"/>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="dialogUserRoleFormVisible = false">取消</el-button>
|
<el-button type="primary" @click="assignUserRoleHandle">确认</el-button>
|
</div>
|
</el-dialog>
|
<el-dialog
|
:visible.sync="importDialogFormVisible"
|
:modal-append-to-body="false"
|
:close-on-click-modal="false"
|
title="用户导入"
|
width="700px"
|
>
|
<el-form
|
ref="importForm"
|
label-position="right"
|
label-width="120px"
|
style="margin-left:50px;width:500px;"
|
element-loading-text="导入中..."
|
>
|
<el-form-item label="导入文件:">
|
<input ref="importLabInput" type="file" accept=".xls, .xlsx" >
|
</el-form-item>
|
<el-form-item label="excel参考模板:">
|
<el-button type="text" @click="viewHandle">下载模板</el-button>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="importDialogFormVisible = false">取消</el-button>
|
<el-button :disabled="importDisabled" type="primary" @click="importHandle()">导入</el-button>
|
</div>
|
</el-dialog>
|
<el-dialog
|
:visible.sync="bindDialogFormVisible"
|
:modal-append-to-body="false"
|
:close-on-click-modal="false"
|
title="绑定人员卡"
|
width="550px"
|
>
|
<el-form
|
ref="importForm"
|
label-position="right"
|
label-width="120px"
|
style="margin-left:30px;width:400px;">
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="定位卡编号:" prop="empNo">
|
<el-input v-model.trim="cardDataForm.empNo"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="定位卡MAC地址:" prop="deviceNo">
|
<el-input v-model.trim="cardDataForm.deviceNo"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="bindDialogFormVisible = false">取消</el-button>
|
<el-button type="primary" @click="bindCard()">确认</el-button>
|
</div>
|
</el-dialog>
|
<div style="clear: both;"/>
|
<workLicense ref="workLicense"></workLicense>
|
</div>
|
</template>
|
|
<script>
|
import workLicense from './components/workLicense/index'
|
import { mapGetters } from 'vuex'
|
import { userList, createUser, deleteUser, updateUser, importUser,
|
importDistrict,getDistrict,getDistrictByName,updateUserRole,setInvalidDel,bindCard} from '@/api/user'
|
import { checkBtnPermission } from '@/utils/permission'
|
import { roleList } from '@/api/role'
|
import { parseTime, computePageCount, parseUserType } from '@/utils'
|
import { parseError } from '@/utils/messageDialog'
|
import Cookies from 'js-cookie'
|
import { Message, MessageBox } from 'element-ui'
|
import {getCityListData, getProvinceListData} from "@/api/area";
|
import { getAllCompany } from '../../../api/unitManage'
|
import { getAllDepartment } from '../../../api/departmentManage'
|
const exampleFile = require('@/assets/example/user.xlsx')
|
export default {
|
name: 'UserTable',
|
filters: {
|
parseRoles(roles) {
|
if (!roles) {
|
return
|
}
|
let message = ''
|
for (const role of roles) {
|
message += role.name + ','
|
}
|
if (message) {
|
message = message.substring(0, message.lastIndexOf(','))
|
}
|
return message
|
},
|
parseType(type){
|
let typeList = [{id:1,name:'超级管理员'},{id:2,name:'管理员'},{id:3,name:'普通用户'}]
|
if(type){
|
let a = typeList.find(item => item.id === type)
|
return a.name
|
}
|
},
|
parseStatus(status){
|
if(status === 1){
|
return "正常"
|
}else if(status === 0){
|
return "停用"
|
}
|
},
|
filterSafety(value) {
|
if (value) {
|
return '是'
|
} else {
|
return '否'
|
}
|
},
|
filterUserType(value) {
|
return parseUserType(value)
|
},
|
parseGX(value){
|
let arr = value.split('-');
|
let guanxia='';
|
for (let i = 0; i < arr.length; i++){
|
if (arr[i] == null || arr[i] == '' || arr[i] == 'null'){
|
if (i == 0){
|
guanxia = '全部省份';
|
}
|
if (i == 1){
|
guanxia += '-全部城市';
|
}
|
if (i == 2){
|
guanxia += '-全部区县';
|
}
|
if (i == 3){
|
guanxia += '-全部街道';
|
}
|
if (i == 4){
|
guanxia += '-全部居委会';
|
}
|
}else {
|
if (i == 0){
|
guanxia = arr[i];
|
}else {
|
guanxia += '-'+arr[i];
|
}
|
}
|
}
|
return guanxia;
|
}
|
},
|
computed: {
|
...mapGetters([
|
'userType',
|
'username'
|
])
|
},
|
components:{
|
workLicense
|
},
|
data() {
|
let _ref = this;
|
const validateEmail = (rule, value, callback) => {
|
|
if (value == null || value == '') {
|
callback()
|
} else {
|
// 对电子邮件的验证
|
const myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/
|
if (!myreg.test(value)) {
|
return callback(new Error('请输入有效的邮箱格式'))
|
}
|
callback()
|
}
|
}
|
|
return {
|
sort:'username',
|
order:'asc',
|
pageSize: 10,
|
recordTotal: 0,
|
currentPage: 1,
|
pageTotal: 0,
|
tableKey: 0,
|
userData: null,
|
listLoading: true,
|
iscompanyList:[{id:1,name:'否'},{id:0,name:'是'}],
|
queryForm: {
|
username: '',
|
company:'',
|
department:'',
|
job:'',
|
province:'',
|
city:'',
|
area:'',
|
town:'',
|
community:'',
|
},
|
dataForm: {
|
id: '',
|
username: '',
|
password: '',
|
realname:'',
|
idcard:'',
|
email:'',
|
company:'',
|
department:'',
|
job:'',
|
type:'',
|
iscompany:'',
|
isdepartment:'',
|
ispass:'',
|
starttime:'',
|
endtime:'',
|
status:'',
|
createdby:'',
|
createddate:'',
|
lastmodifiedby:'',
|
lastmodifieddate:'',
|
empNo:'',
|
deviceNo:'',
|
},
|
cardDataForm:{
|
username:'',
|
empNo:'',
|
deviceNo:''
|
},
|
importDialogFormVisible: false,
|
importDisabled: false,
|
dialogFormVisible: false,
|
bindDialogFormVisible: false,
|
dialogStatus: '',
|
dataFormRules: {
|
username: [{ required: true, message: '用户名不能为空', trigger: 'blur' }],
|
realname: [{ required: true, message: '真实姓名不能为空', trigger: 'blur' }],
|
// email: [{ validator: validateEmail, trigger: 'blur' }],
|
password: [{ required: true, message: '密码不能为空', trigger: 'blur' }],
|
confirmPassword: [{ required: true, message: '确认密码不能为空', trigger: 'blur' }],
|
type: [{ required: true, message: '用户类型不能为空', trigger: 'change' }],
|
status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
|
isanalysis: [{ required: true, message: '是否气体检测中心不能为空', trigger: 'change' }]
|
},
|
rules: {
|
username: [{ required: true, message: '用户名不能为空', trigger: 'blur' }],
|
realname: [{ required: true, message: '真实姓名不能为空', trigger: 'blur' }],
|
// email: [{ validator: validateEmail, trigger: 'blur' }],
|
// password: [{ required: true, message: '密码不能为空', trigger: 'blur' }],
|
// confirmPassword: [{ required: true, message: '确认密码不能为空', trigger: 'blur' }],
|
type: [{ required: true, message: '用户类型不能为空', trigger: 'change' }],
|
status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
|
isanalysis: [{ required: true, message: '是否气体检测中心不能为空', trigger: 'change' }]
|
},
|
isList:[{id:1,name:'是'},{id:0,name:'否'}],
|
typeList:[{id:1,name:'超级管理员'},{id:2,name:'管理员'},{id:3,name:'普通用户'}],
|
dialogUserRoleFormVisible: false,
|
userRoleDataForm: {
|
userRoles: [],
|
userId: ''
|
},
|
userRoleDataFormRules: {
|
userRoles: [{ type: 'array', required: true, message: '角色不能为空', trigger: 'change' }]
|
},
|
roleList: [],
|
passwordType: 'password',
|
confirmPasswordType: 'password',
|
templateRadio: '',
|
instituteList: [],
|
departmentList: [],
|
companyList:[],
|
statusList:[{id:1,name:'正常'},{id:0,name:'停用'}],
|
}
|
},
|
created() {
|
this.getUserList()
|
this.getProvince()
|
this.getDepartmentData()
|
this.getCompanyData()
|
},
|
methods: {
|
refreshHandle: function() {
|
this.getUserList()
|
},
|
queryHandle: function() {
|
this.currentPage = 1
|
this.getUserList()
|
},
|
sortUserChange: function(param) {
|
this.sort = param.prop;
|
this.order = param.order;
|
this.getUserList()
|
},
|
getUserList() {
|
const _this = this
|
const params = {}
|
params['sort'] = _this.sort
|
params['order'] = _this.order
|
params['pageIndex'] = _this.currentPage
|
params['pageSize'] = _this.pageSize
|
params['type'] = _this.userType
|
params['isMain'] = true
|
for (const i in _this.queryForm) {
|
if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
|
params[i] = _this.queryForm[i]
|
}
|
}
|
_this.listLoading = true
|
userList(params).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
const result = res.result
|
_this.recordTotal = result.totalCount
|
_this.pageSize = result.pageSize
|
_this.pageTotal = computePageCount(result.totalCount, result.pageSize)
|
_this.currentPage = result.pageIndex
|
_this.userData = result.result
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
_this.listLoading = false
|
}).catch(error => {
|
_this.listLoading = false
|
parseError({ error: error, vm: _this })
|
})
|
},
|
|
showWorkLicense(row){
|
this.$refs.workLicense.openWorkLicense(row)
|
},
|
|
createHandle: function() {
|
this.$refs['dataForm'].validate((valid) => {
|
const _this = this
|
if (valid) {
|
if (_this.dataForm.password != _this.dataForm.confirmPassword) {
|
parseError({ error: '密码输入不一致', vm: _this })
|
return
|
}
|
const userName = Cookies.get('userName')
|
_this.dataForm['operator'] = userName
|
createUser(_this.dataForm).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.dialogFormVisible = false
|
_this.$message({
|
message: '创建成功',
|
type: 'success'
|
})
|
_this.getUserList()
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
}).catch(error => {
|
parseError({ error: error, vm: _this })
|
})
|
}
|
})
|
},
|
deleteHandle: function(row) {
|
const _this = this
|
MessageBox.confirm('确定删除用户' + row.username + '信息', '确定删除', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
_this.deleteAction(row)
|
}).catch(() => {
|
console.log('已取消删除')
|
})
|
},
|
deleteAction: function(row) {
|
const _this = this
|
const params = {}
|
params['id'] = row.id
|
const userName = Cookies.get('userName')
|
const name = Cookies.get('name')
|
params['operator'] = name + '(' + userName + ')'
|
deleteUser(params).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.$message({
|
message: '删除成功',
|
type: 'success'
|
})
|
_this.getUserList()
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
}).catch(error => {
|
parseError({ error: error, vm: _this })
|
})
|
},
|
resetDataForm() {
|
this.dataForm = {
|
id: '',
|
username: '',
|
password: '',
|
realname:'',
|
idcard:'',
|
email:'',
|
company:'',
|
department:'',
|
job:'',
|
type:'',
|
iscompany:'',
|
isdepartment:'',
|
ispass:'',
|
starttime:'',
|
endtime:'',
|
status:'',
|
createdby:'',
|
createddate:'',
|
lastmodifiedby:'',
|
lastmodifieddate:'',
|
}
|
},
|
getDepartmentData(){
|
getAllDepartment().then(res=>{
|
if(res.data.code === '200'){
|
this.departmentList = res.data.result
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message
|
})
|
}
|
}).catch(error =>{
|
parseError({error:error,vm:this})
|
})
|
},
|
getCompanyData(){
|
getAllCompany().then(res=>{
|
if(res.data.code === '200'){
|
this.companyList = res.data.result
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message
|
})
|
}
|
}).catch(error =>{
|
parseError({error:error,vm:this})
|
})
|
},
|
showCreateHandle() {
|
this.resetDataForm()
|
this.dialogStatus = 'create'
|
this.dialogFormVisible = true
|
this.$nextTick(() => {
|
this.$refs['dataForm'].clearValidate()
|
})
|
},
|
updateHandle() {
|
this.$refs['dataForm'].validate((valid) => {
|
const _this = this
|
if (valid) {
|
if (_this.dataForm.password || _this.dataForm.confirmPassword) {
|
if (_this.dataForm.password != _this.dataForm.confirmPassword) {
|
parseError({ error: '密码输入不一致', vm: _this })
|
return
|
}
|
}
|
const userName = Cookies.get('userName')
|
_this.dataForm['lastmodifiedby'] = userName
|
updateUser(_this.dataForm).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.dialogFormVisible = false
|
_this.$message({
|
message: '更新成功',
|
type: 'success'
|
})
|
_this.getUserList()
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
}).catch(error => {
|
parseError({ error: error, vm: _this })
|
})
|
}
|
})
|
},
|
getRoleList: async function() {
|
const _this = this
|
const params = {}
|
roleList(params).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
const roleList = res.result
|
_this.roleList = roleList
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
})
|
},
|
showAssignRole: async function(row) {
|
await this.getRoleList()
|
|
this.userRoleDataForm.userId = row.id
|
|
this.$nextTick(() => {
|
const assigedRoles = []
|
if (row.roles) {
|
for (const role of row.roles) {
|
assigedRoles.push(role.id)
|
}
|
}
|
this.userRoleDataForm.userRoles = assigedRoles
|
})
|
this.dialogUserRoleFormVisible = true
|
this.$nextTick(() => {
|
this.$refs['userRoleDataForm'].clearValidate()
|
})
|
},
|
assignUserRoleHandle: function() {
|
const _this = this
|
this.$refs['userRoleDataForm'].validate((valid) => {
|
if (valid) {
|
const userName = Cookies.get('userName')
|
const params = {}
|
params['id'] = _this.userRoleDataForm.userId
|
params['roles'] = _this.userRoleDataForm.userRoles
|
updateUserRole(params).then(response => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.dialogUserRoleFormVisible = false
|
_this.$message({
|
message: '角色分配成功',
|
type: 'success'
|
})
|
_this.getUserList()
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
})
|
}
|
})
|
},
|
showEditHandle: function(row) {
|
this.resetDataForm()
|
this.dataForm = row
|
this.dataForm.password = null
|
this.dialogStatus = 'update'
|
this.dialogFormVisible = true
|
this.$nextTick(() => {
|
this.$refs['dataForm'].clearValidate()
|
})
|
|
},
|
passwordChangeEvent: function(value) {
|
if (this.dataForm.password != value) {
|
parseError({ error: '密码输入不一致', vm: this })
|
}
|
},
|
showPwd() {
|
if (this.passwordType === 'password') {
|
this.passwordType = ''
|
} else {
|
this.passwordType = 'password'
|
}
|
},
|
showConfirmPwd() {
|
if (this.confirmPasswordType === 'password') {
|
this.confirmPasswordType = ''
|
} else {
|
this.confirmPasswordType = 'password'
|
}
|
},
|
handleSizeChange: function(val) {
|
this.pageSize = val
|
this.currentPage = 1
|
this.getUserList()
|
},
|
handleCurrentChange: function(val) {
|
this.currentPage = val
|
this.getUserList()
|
},
|
getTemplateRow(row) {
|
console.log(row, '22222')
|
},
|
handleInstituteChange(value) {
|
if (value) {
|
this.dataForm.departmentId = ''
|
}
|
},
|
disableRole(row) {
|
if (row.type == 1) {
|
return true
|
} else {
|
return false
|
}
|
},
|
getRoleInfo(role) {
|
return role.name
|
},
|
getBtnPermission(btnType) {
|
return checkBtnPermission(this.userType, btnType)
|
},
|
showImportHandle() {
|
this.importDisabled = false
|
this.importDialogFormVisible = true
|
},
|
viewHandle() {
|
window.open(exampleFile, '_blank')
|
},
|
importHandle() {
|
const _this = this
|
const formData = new FormData()
|
const userName = Cookies.get('userName')
|
formData.append('operator', userName)
|
const files = this.$refs['importLabInput'].files
|
if (files && files.length > 0) {
|
formData.append('file', files[0])
|
}
|
formData.append('action', 'import')
|
importUser(formData)
|
.then((response) => {
|
const res = response.data
|
if (res.code == 200) {
|
_this.importDialogFormVisible = false
|
_this.$message({
|
message: '导入成功',
|
type: 'success'
|
})
|
_this.getUserList()
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
})
|
.catch((error) => {
|
parseError({ error: error, vm: _this })
|
})
|
},
|
getProvince(){
|
const _this = this
|
const params = {}
|
params['parenttype'] = 0
|
params['type'] = 1
|
getDistrict(params).then(response => {
|
const res = response.data
|
if (res.code == 200){
|
this.provinceList = res.result;
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
}).catch(error => {
|
})
|
},
|
resetCity(name){
|
const _this = this
|
const params = {}
|
params['parentname'] = name
|
params['parenttype'] = 1
|
params['type'] = 2
|
getDistrict(params).then(response => {
|
const res = response.data
|
if (res.code == 200){
|
this.cityList = res.result;
|
this.areaList = [];
|
this.townList = [];
|
this.communityList = [];
|
this.dataForm.city = '';
|
this.dataForm.area = '';
|
this.dataForm.town = '';
|
this.dataForm.community = '';
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
}).catch(error => {
|
})
|
},
|
resetArea(name){
|
const _this = this
|
const params = {}
|
params['parentname'] = name
|
params['parenttype'] = 2
|
params['type'] = 3
|
getDistrict(params).then(response => {
|
const res = response.data
|
if (res.code == 200){
|
this.areaList = res.result;
|
this.townList = [];
|
this.communityList = [];
|
this.dataForm.area = '';
|
this.dataForm.town = '';
|
this.dataForm.community = '';
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
}).catch(error => {
|
})
|
},
|
resetTown(name){
|
const _this = this
|
const params = {}
|
params['parentname'] = name
|
params['parenttype'] = 3
|
params['type'] = 4
|
getDistrict(params).then(response => {
|
const res = response.data
|
if (res.code == 200){
|
this.townList = res.result;
|
this.communityList = [];
|
this.dataForm.town = '';
|
this.dataForm.community = '';
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
}).catch(error => {
|
})
|
},
|
resetCommunity(name){
|
const _this = this
|
const params = {}
|
params['parentname'] = name
|
params['parenttype'] = 4
|
params['type'] = 5
|
getDistrict(params).then(response => {
|
const res = response.data
|
if (res.code == 200){
|
this.communityList = res.result;
|
this.dataForm.community = '';
|
} else {
|
parseError({ error: res.data.message, vm: _this })
|
}
|
}).catch(error => {
|
})
|
},
|
async changeArea(value){
|
if(value === 'province'){
|
this.queryForm.city = ''
|
this.queryForm.area = ''
|
this.queryForm.town = ''
|
this.queryForm.community = ''
|
this.areaListQuery = {
|
type: 2,
|
parenttype: 1,
|
parentname: this.queryForm.province,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.cityList = res.data.result
|
}
|
}else if(value === 'city'){
|
this.queryForm.area = ''
|
this.queryForm.town = ''
|
this.queryForm.community = ''
|
this.areaListQuery = {
|
type: 3,
|
parenttype: 2,
|
parentname: this.queryForm.city,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.districtList = res.data.result
|
}
|
}else if(value === 'area'){
|
this.queryForm.town = ''
|
this.queryForm.community = ''
|
this.areaListQuery = {
|
type: 4,
|
parenttype: 3,
|
parentname: this.queryForm.area,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.streetList = res.data.result
|
}
|
}else if(value === 'town'){
|
this.queryForm.community = ''
|
this.areaListQuery = {
|
type: 5,
|
parenttype: 4,
|
parentname: this.queryForm.town,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.committeeList = res.data.result
|
}
|
}
|
},//市、镇、街道、委员会
|
|
bindCardHandle(row){
|
this.cardDataForm = {
|
username:'',
|
empNo:'',
|
deviceNo:''
|
};
|
|
this.cardDataForm.username = row.username;
|
this.bindDialogFormVisible = true;
|
},
|
|
bindCard(){
|
const _this = this;
|
bindCard(_this.cardDataForm).then(response => {
|
const res = response.data
|
debugger
|
if (res.code === '200'){
|
_this.$message({
|
message: '绑定成功',
|
type: 'success'
|
})
|
this.bindDialogFormVisible = false;
|
_this.getUserList();
|
} else {
|
parseError({ error: res.message, vm: _this })
|
}
|
}).catch(error => {
|
|
})
|
},
|
setInvalidDel(row){
|
const _this = this;
|
setInvalidDel(row).then(response => {
|
const res = response.data
|
if (res.code === '200'){
|
_this.$message({
|
message: '删除成功',
|
type: 'success'
|
})
|
_this.getUserList();
|
} else {
|
parseError({ error: res.message, vm: _this })
|
}
|
}).catch(error => {
|
})
|
|
},
|
}
|
}
|
</script>
|
<style lang="scss" scoped>
|
.basic_search{
|
display:inline-block;
|
}
|
</style>
|