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