From 262319dadcc1c56ca118623cb0a4cb07a4ad8f48 Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期三, 11 五月 2022 14:26:07 +0800 Subject: [PATCH] 角色分配 --- src/views/contractor/userManage/index.vue | 261 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 243 insertions(+), 18 deletions(-) diff --git a/src/views/contractor/userManage/index.vue b/src/views/contractor/userManage/index.vue index f2d7c39..0520578 100644 --- a/src/views/contractor/userManage/index.vue +++ b/src/views/contractor/userManage/index.vue @@ -1,10 +1,19 @@ <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;" @@ -67,6 +76,17 @@ 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> @@ -155,6 +175,11 @@ <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> @@ -175,10 +200,14 @@ <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"> @@ -197,7 +226,7 @@ <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"> @@ -221,6 +250,7 @@ <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>--> @@ -232,6 +262,8 @@ <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> @@ -316,11 +348,11 @@ <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> @@ -328,7 +360,7 @@ </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" @@ -405,11 +437,36 @@ </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 @@ -438,6 +495,39 @@ <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> @@ -446,7 +536,8 @@ <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' @@ -456,8 +547,7 @@ 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: { @@ -485,7 +575,7 @@ if(status === 1){ return "正常" }else if(status === 0){ - return "正常" + return "停用" } }, filterSafety(value) { @@ -564,8 +654,10 @@ tableKey: 0, userData: null, listLoading: true, + isMain:false, iscompanyList:[{id:1,name:'否'},{id:0,name:'是'}], queryForm: { + realname:'', username: '', company:'', department:'', @@ -597,10 +689,18 @@ 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' }], @@ -609,7 +709,8 @@ 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' }], @@ -618,7 +719,8 @@ // 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:'普通用户'}], @@ -630,6 +732,7 @@ userRoleDataFormRules: { userRoles: [{ type: 'array', required: true, message: '角色不能为空', trigger: 'change' }] }, + typeList:[{id:1,name:'超级管理员'},{id:2,name:'管理员'},{id:3,name:'普通用户'}], roleList: [], passwordType: 'password', confirmPasswordType: 'password', @@ -641,7 +744,6 @@ } }, created() { - console.log(this.userType) this.getUserList() this.getProvince() this.getDepartmentData() @@ -660,6 +762,15 @@ 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 = {} @@ -668,6 +779,7 @@ params['pageIndex'] = _this.currentPage params['pageSize'] = _this.pageSize 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() != '') { @@ -900,7 +1012,7 @@ }) _this.getUserList() } else { - parseError({ error: res.data.message, vm: _this }) + parseError({ error: res.message, vm: _this }) } }) } @@ -912,6 +1024,8 @@ 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() }) @@ -970,6 +1084,70 @@ 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') }, @@ -983,7 +1161,7 @@ formData.append('file', files[0]) } formData.append('action', 'import') - importSupplierUser(formData) + importUser(formData) .then((response) => { const res = response.data if (res.code == 200) { @@ -994,7 +1172,7 @@ }) _this.getUserList() } else { - parseError({ error: res.data.message, vm: _this }) + parseError({ error: res.message, vm: _this }) } }) .catch((error) => { @@ -1149,6 +1327,53 @@ } } },//市、镇、街道、委员会 + + 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> -- Gitblit v1.9.2