| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div> |
| | | <div class="filter-container"> |
| | | <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.realname" |
| | | class="filter-item" |
| | | placeholder="" |
| | | style="width: 150px;" |
| | |
| | | icon="el-icon-upload2" |
| | | @click="showImportHandle" |
| | | >导入</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | | v-if="getBtnPermission('export')" |
| | | v-show="userType != 3" |
| | | class="filter-item" |
| | | style="margin-left: 10px;" |
| | | type="primary" |
| | | icon="el-icon-upload2" |
| | | @click="showExportHandle" |
| | | >导出</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | |
| | | <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> |
| | |
| | | <span>{{ scope.row.roles | parseRoles }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="人脸数据" prop="code" align="center" width="100px"> |
| | | <!-- <el-table-column label="人员MAC地址" prop="deviceNo" align="center" width="100px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.code == null || scope.row.code === '' ?"":"已采集" }}</span> |
| | | <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"> |
| | |
| | | <span>{{ scope.row.endtime}}</span> |
| | | </template> |
| | | |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | <el-table-column label="是否单位负责人" prop="iscompany" align="center" width="100px"> |
| | | <template slot-scope="scope"> |
| | | <div v-for="item in isList"> |
| | |
| | | <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>--> |
| | |
| | | <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> |
| | |
| | | <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-select v-model.trim="dataForm.company" value-key="item" auto-complete="on" style="width:100%;" @change="companyChange"> |
| | | <el-option |
| | | v-for="item in companyList" |
| | | :key="item.id" |
| | | :value="item.company" |
| | | :value="item" |
| | | :label="item.company" |
| | | > |
| | | </el-option> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="部门:" prop="department"> |
| | | <el-form-item label="部门:" prop="department" v-if="isMain"> |
| | | <el-select v-model.trim="dataForm.department" auto-complete="on" style="width:100%;"> |
| | | <el-option |
| | | v-for="item in departmentList" |
| | |
| | | </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 |
| | |
| | | <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> |
| | |
| | | <script> |
| | | import workLicense from './components/workLicense/index' |
| | | import { mapGetters } from 'vuex' |
| | | import { userList, createUser, deleteUser, updateUser, importUser, importDistrict,getDistrict,getDistrictByName,updateUserRole} from '@/api/user' |
| | | 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 {getCityListData, getProvinceListData} from "@/api/area"; |
| | | import { getAllCompany } from '../../../api/unitManage' |
| | | import { getAllDepartment } from '../../../api/departmentManage' |
| | | import { importSupplierUser } from '../../../api/user' |
| | | const exampleFile = require('@/assets/example/contractoruser.xlsx') |
| | | const exampleFile = require('@/assets/example/user.xlsx') |
| | | export default { |
| | | name: 'UserTable', |
| | | filters: { |
| | |
| | | if(status === 1){ |
| | | return "正常" |
| | | }else if(status === 0){ |
| | | return "正常" |
| | | return "停用" |
| | | } |
| | | }, |
| | | filterSafety(value) { |
| | |
| | | tableKey: 0, |
| | | userData: null, |
| | | listLoading: true, |
| | | isMain:false, |
| | | iscompanyList:[{id:1,name:'否'},{id:0,name:'是'}], |
| | | queryForm: { |
| | | realname:'', |
| | | username: '', |
| | | company:'', |
| | | department:'', |
| | |
| | | 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' }], |
| | |
| | | password: [{ required: true, message: '密码不能为空', trigger: 'blur' }], |
| | | confirmPassword: [{ required: true, message: '确认密码不能为空', trigger: 'blur' }], |
| | | type: [{ required: true, message: '用户类型不能为空', trigger: 'change' }], |
| | | status: [{ required: true, message: '状态不能为空', trigger: 'change' }] |
| | | status: [{ required: true, message: '状态不能为空', trigger: 'change' }], |
| | | isanalysis: [{ required: true, message: '是否气体检测中心不能为空', trigger: 'change' }] |
| | | }, |
| | | rules: { |
| | | username: [{ required: true, message: '用户名不能为空', 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' }] |
| | | 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:'普通用户'}], |
| | |
| | | userRoleDataFormRules: { |
| | | userRoles: [{ type: 'array', required: true, message: '角色不能为空', trigger: 'change' }] |
| | | }, |
| | | typeList:[{id:1,name:'超级管理员'},{id:2,name:'管理员'},{id:3,name:'普通用户'}], |
| | | roleList: [], |
| | | passwordType: 'password', |
| | | confirmPasswordType: 'password', |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | console.log(this.userType) |
| | | this.getUserList() |
| | | this.getProvince() |
| | | this.getDepartmentData() |
| | |
| | | this.order = param.order; |
| | | this.getUserList() |
| | | }, |
| | | companyChange(val){ |
| | | this.dataForm.company = val.company |
| | | if (val.ismain === 1) { |
| | | this.isMain = true; |
| | | }else{ |
| | | this.isMain = false; |
| | | this.dataForm.department = '' |
| | | } |
| | | }, |
| | | getUserList() { |
| | | const _this = this |
| | | const params = {} |
| | |
| | | params['pageIndex'] = _this.currentPage |
| | | params['pageSize'] = _this.pageSize |
| | | params['type'] = _this.userType |
| | | params['isMain'] = false |
| | | params['realname'] = _this.realname |
| | | params['isMain'] = true |
| | | for (const i in _this.queryForm) { |
| | | if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') { |
| | | params[i] = _this.queryForm[i] |
| | |
| | | this.dataForm.password = null |
| | | this.dialogStatus = 'update' |
| | | this.dialogFormVisible = true |
| | | let ismain = this.companyList.find(item=>item.company === row.company).ismain |
| | | this.isMain = ismain === 1; |
| | | this.$nextTick(() => { |
| | | this.$refs['dataForm'].clearValidate() |
| | | }) |
| | |
| | | this.importDisabled = false |
| | | this.importDialogFormVisible = true |
| | | }, |
| | | |
| | | |
| | | showExportHandle() { |
| | | const _this = this |
| | | const params = {} |
| | | params['sort'] = _this.sort |
| | | params['order'] = _this.order |
| | | params['pageIndex'] = 0 |
| | | params['pageSize'] = 99999 |
| | | params['type'] = _this.userType |
| | | params['realname'] = _this.realname |
| | | params['isMain'] = false |
| | | for (const i in _this.queryForm) { |
| | | if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') { |
| | | params[i] = _this.queryForm[i] |
| | | } |
| | | } |
| | | userList(params) |
| | | .then((response) => { |
| | | const res = response.data |
| | | if (res.code == 200) { |
| | | const allData = res.result.result |
| | | if (allData.length == 0) { |
| | | parseError({ error: '没有录入数据', vm: _this }) |
| | | return |
| | | } |
| | | import('@/vendor/Export2Excel').then((excel) => { |
| | | const tHeader = [ |
| | | '用户名', |
| | | '真实姓名', |
| | | '身份证号', |
| | | '单位', |
| | | '部门', |
| | | '职位', |
| | | '用户类型', |
| | | '角色', |
| | | ] |
| | | |
| | | const data = allData.map(v=>{ |
| | | return [ |
| | | v.username, |
| | | v.realname, |
| | | v.idcard, |
| | | v.company, |
| | | v.department, |
| | | v.job, |
| | | this.typeList.find(item=>item.id === v.type).name, |
| | | v.roles.map(item=>item.name).join(","), |
| | | ] |
| | | }) |
| | | excel.export_json_to_excel({ |
| | | header: tHeader, |
| | | data, |
| | | filename: '用户' |
| | | }) |
| | | }) |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | parseError({ error: error, vm: _this }) |
| | | }) |
| | | }, |
| | | viewHandle() { |
| | | window.open(exampleFile, '_blank') |
| | | }, |
| | |
| | | formData.append('file', files[0]) |
| | | } |
| | | formData.append('action', 'import') |
| | | importSupplierUser(formData) |
| | | importUser(formData) |
| | | .then((response) => { |
| | | const res = response.data |
| | | if (res.code == 200) { |
| | |
| | | }) |
| | | _this.getUserList() |
| | | } else { |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | parseError({ error: res.message, vm: _this }) |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | |
| | | } |
| | | } |
| | | },//市、镇、街道、委员会 |
| | | |
| | | 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 |
| | | 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> |