Files
yl/MacroinfManage_MES/src/views/SystemMaintenance/PersonnelManagement/index.vue
2026-05-23 14:07:11 +08:00

526 lines
21 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<el-card>
<span class="show-text">姓名:</span>
<el-input id="inputPersonalName" v-model="PersonalName" class="personal-name" clearable placeholder="请输入姓名"
style="width: 200px;margin-right: 26px" />
<span class="show-text">角色:</span>
<el-select id="selectPersonalRoleValue" v-model="PersonalroleValue" class="personal-role-value" clearable
placeholder="请选择角色" style="width:200px;margin-right: 14px">
<el-option v-for="item in Personalrole" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-button :disabled="loading" icon="el-icon-search" plain type="primary" @click="searchTable()">查询</el-button>
<el-button icon="el-icon-circle-plus-outline" plain style="margin-left: 14px" type="success"
@click="addType('form')">
新增
</el-button>
<div style="margin-top: 10px">
<el-table v-loading="loading" :data="tableData" border element-loading-background="rgba(0, 0, 0, 0.2)"
element-loading-spinner="el-icon-loading" element-loading-text="数据加载中" height="76vh" highlight-current-row
size="mini" stripe style="width: 1580px;" tooltip-effect="dark">
<el-table-column align="center" label=" " type="index" width="100" />
<el-table-column align="left" label="姓名" show-overflow-tooltip width="320">
<template slot-scope="scope">
<template v-if="scope.row.edit">
<el-input v-model="scope.row.personnel_name" clearable size="mini" style="width:200px;margin-right:3px"
width="120" />
</template>
<span v-else>{{ scope.row.personnel_name }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="工号" min-width="180" show-overflow-tooltip>
<template slot-scope="scope">
<template v-if="scope.row.edit">
<el-input v-model="scope.row.account" clearable size="mini" style="width:200px;margin-right:3px"
width="120" />
</template>
<span v-else>{{ scope.row.account }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="密码" min-width="180" show-overflow-tooltip>
<template slot-scope="scope">
<template v-if="scope.row.edit">
<el-input v-model="scope.row.password" clearable size="mini" style="width:200px;margin-right:3px"
width="120" />
</template>
<!-- <span v-else>{{ scope.row.password }}</span>-->
<span v-else>******</span>
</template>
</el-table-column>
<el-table-column align="center" label="角色" min-width="180" show-overflow-tooltip>
<template slot-scope="scope">
<span type="success">{{ scope.row.roles_function }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作" min-width="450">
<template slot-scope="scope">
<el-button icon="el-icon-refresh-right" style="font-family: MiSans Regular,serif;color: #4d77d6"
type="text" @click="resetPassword(scope.row)">重置密码
</el-button>
<el-button icon="el-icon-edit" style="font-family: MiSans Regular,serif;color: #4d77d6" type="text"
@click="editType('form1', scope.row)">编辑
</el-button>
<el-button icon="el-icon-delete"
style="font-family: MiSans Regular,serif;color: #c61a1a;padding: 0;margin: 0" type="text"
@click="openDelete(scope.row)">删除&nbsp;&nbsp;
</el-button>
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top: 10px;">
<el-pagination v-if="!loading" :current-page="pageList" :page-size="pageSize" :page-sizes="[10, 20, 30, 40]"
:total="total" background layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
@current-change="handleCurrentChange" />
</div>
</div>
</el-card>
<el-dialog :show-close="false" :title="title" :visible.sync="dialogFormVisible" center width="440px">
<el-divider style="margin: 0" />
<el-form ref="form" :model="form" :rules="rules" label-position="right" label-width="100px">
<el-form-item label="姓名" prop="PersonalName">
<el-input v-model="form.PersonalName" clearable placeholder="请输入姓名" style="width: 240px;border-radius: 4px" />
</el-form-item>
<el-form-item label="工号" prop="account">
<el-input v-model="form.account" clearable placeholder="请输入工号" style="width: 240px;border-radius: 4px" />
</el-form-item>
<!-- <el-form-item label="密码" prop="password">-->
<!-- <el-input v-model="form.password" clearable placeholder="请输入密码" style="width: 240px;border-radius: 4px"/>-->
<!-- </el-form-item>-->
<el-form-item label="角色" prop="PersonalroleValue">
<el-select v-model="form.PersonalroleValue" clearable filterable placeholder="请选择角色"
style="width:240px;border-radius: 4px">
<el-option v-for="item in Personalrole" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-row>
<el-col :span="14" />
<el-form-item>
<el-button style="width: 80px;height: 40px" type="primary" @click="submit('form')"> </el-button>
<el-button style="width: 80px;height: 40px" @click="callOff('form')">取消</el-button>
</el-form-item>
</el-row>
</el-form>
</el-dialog>
<el-dialog :show-close="false" :title="title1" :visible.sync="dialogFormVisible1" center width="440px">
<el-divider style="margin: 0" />
<el-form ref="form1" :model="form1" :rules="rules1" label-position="right" label-width="100px">
<el-form-item label="姓名" prop="PersonalName">
<el-input v-model="form1.PersonalName" clearable placeholder="请输入姓名"
style="width: 240px;border-radius: 4px" />
</el-form-item>
<el-form-item label="工号" prop="account">
<el-input v-model="form1.account" placeholder="请输入工号" readonly style="width: 240px;border-radius: 4px" />
</el-form-item>
<!-- <el-form-item label="密码" prop="password">-->
<!-- <el-input-->
<!-- v-model="form1.password"-->
<!-- clearable-->
<!-- placeholder="请输入密码"-->
<!-- style="width: 240px;border-radius: 4px"/>-->
<!-- </el-form-item>-->
<el-form-item label="角色" prop="PersonalroleValue">
<el-select v-model="form1.PersonalroleValue" clearable filterable placeholder="请选择角色"
style="width:240px;border-radius: 4px">
<el-option v-for="item in Personalrole" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-row>
<el-col :span="14" />
<el-form-item>
<el-button style="width: 80px;height: 40px" type="primary" @click="confirmEdit('form1')"> </el-button>
<el-button style="width: 80px;height: 40px" @click="callOff1('form1')">取消</el-button>
</el-form-item>
</el-row>
</el-form>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
PersonalName: '', // 姓名
PersonalroleValue: '', // 角色
Personalrole: [],
title: '',
title1: '',
dialogFormVisible: false,
dialogFormVisible1: false,
isShowSearchOpNamePermission: false,
clickOpNamePermissionList: [],
isShowCameraPermission: false, // 摄像头权限
cameraPermissionList: [],
form: {
PersonalName: '',
account: '',
password: '',
PersonalroleValue: ''
},
rules: {
PersonalName: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
account: [{ required: true, message: '请输入账号', trigger: 'change' }],
password: [{ required: true, message: '请输入密码', trigger: 'change' }],
PersonalroleValue: [{ required: true, message: '请选择角色', trigger: 'blur' }]
},
form1: {
PersonalName: '',
account: '',
password: '',
PersonalroleValue: ''
},
rules1: {
PersonalName: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
account: [{ required: true, message: '请输入账号', trigger: 'change' }],
password: [{ required: true, message: '请输入密码', trigger: 'change' }],
PersonalroleValue: [{ required: true, message: '请选择角色', trigger: 'blur' }]
},
loading: false,
tableData: [],
total: 0, // 总条数
pageSize: 10, // 每页显示条数
pageList: 1 // 后台获取页
}
},
created() {
this.getPersonalrole()
this.searchTable()
},
methods: {
// 初始化获取角色信息
getPersonalrole() {
this.Personalrole = []
var Data = this.CreateData('11', '人员管理_角色信息初始化查询_查询')
this.ExecDatabase(Data).then(response => {
for (let i = 0; i < response.data.length; i++) {
this.Personalrole.push({
label: response.data[i].Roles_Function,
value: response.data[i].Roles_number
})
}
})
},
changeIsClient(row) {
var param = []
param[0] = ['Personnel_Number', row.personnel_number]
param[1] = ['value', row.isClient]
var Data = this.CreateData('12', '登录基础数据_人员信息_切换是否用户', param)
this.ExecDatabase(Data).then(response => {
if (response.data[0].result === '1') {
this.$message({
message: '修改成功',
type: 'success'
})
this.searchTable()
} else {
this.$message.error('修改失败')
}
})
},
// 查询
searchTable() {
if (this.PersonalName === '' || this.PersonalName === null) {
this.PersonalName_check = 0
} else {
this.PersonalName_check = 1
}
if (this.PersonalroleValue === '' || this.PersonalroleValue === null) {
this.PersonalroleValue_check = 0
} else {
this.PersonalroleValue_check = 1
}
this.loading = true
this.tableData = []
var param = []
param[0] = ['姓名_check', this.PersonalName_check]
param[1] = ['姓名', this.PersonalName]
param[2] = ['角色代码_check', this.PersonalroleValue_check]
param[3] = ['角色代码', this.PersonalroleValue]
param[4] = ['PageCurrent', this.pageList]
param[5] = ['PageSize', this.pageSize]
param[6] = ['PageCount', '1111', 'int', '1']
param[7] = ['ItemCount', '1111', 'int', '1']
var Data = this.CreateData('11', '人员管理_人员信息查询_查询', param)
this.ExecDatabase(Data).then(response => {
if (response.data.result.length !== 0) {
for (let i = 0; i < response.data.result.length; i++) {
this.tableData.push({
personnel_number: response.data.result[i].Personnel_Number,
personnel_name: response.data.result[i].Personnel_Name,
account: response.data.result[i].account,
password: response.data.result[i].password,
roles_number: parseInt(response.data.result[i].Roles_number),
roles_function: response.data.result[i].Roles_Function,
isClient: response.data.result[i].isClient
})
}
}
this.total = parseInt(response.data.output[0].ItemCount)
this.loading = false
})
},
// 点击编辑
editType(formName, row) {
if (this.$refs[formName] !== undefined) {
this.$refs[formName].resetFields()
}
this.form1.PersonalName = row.personnel_name
this.form1.personnel_number = row.personnel_number
this.form1.account = row.account
this.form1.password = row.password
this.form1.PersonalroleValue = row.roles_number
this.title1 = '编辑人员'
this.dialogFormVisible1 = true
},
// 确定编辑
confirmEdit(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
var param = []
param[0] = ['Personnel_Number', this.form1.personnel_number]
param[1] = ['account', this.form1.account]
param[2] = ['password', this.form1.password]
param[3] = ['Personnel_Name', this.form1.PersonalName]
param[4] = ['Roles_number', this.form1.PersonalroleValue]
if (this.form1.account === '' || this.form1.account === null) {
this.$message.error('请输入工号')
} else if (this.form1.password === '' || this.form1.password === null) {
this.$message.error('请输入密码')
} else if (this.form1.personnel_name === '' || this.form1.personnel_name === null) {
this.$message.error('请输入姓名')
} else if (this.form1.PersonalroleValue === '' || this.form1.PersonalroleValue === null) {
this.$message.error('请选择角色')
} else {
var Data = this.CreateData('12', '人员管理_人员信息修改_编辑', param)
this.ExecDatabase(Data).then(response => {
if (response.data[0].result === '1') {
this.$message({
message: '信息编辑成功',
type: 'success'
})
this.searchTable()
this.dialogFormVisible1 = false
} else {
this.$message.error('信息编辑失败')
}
})
}
}
})
},
// 删除
openDelete(row) {
this.$confirm('当前人员将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
confirmButtonClass: 'confirm-confirm-button',
cancelButtonClass: 'confirm-cancel-button',
type: 'warning'
}).then(() => {
var param = []
param[0] = ['Personnel_Number', row.personnel_number]
var Data = this.CreateData('12', '人员管理_人员信息修改_删除', param)
this.ExecDatabase(Data).then(response => {
if (response.data[0].result === '1') {
this.$message({
message: '人员离职成功',
type: 'success'
})
this.searchTable()
} else {
this.$message.error('人员离职失败')
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
// 点击增加
addType(formName) {
if (this.$refs[formName] !== undefined) {
this.$refs[formName].resetFields()
}
this.form.PersonalName = ''
this.form.account = ''
this.form.password = '123456'
this.form.PersonalroleValue = ''
this.title = '增加人员'
this.dialogFormVisible = true
},
// 增加确定
submit(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
// 验证密码复杂性 最小六位 并且必须存在数字 与 字母
// 复杂度校验放在第二次手动设置密码中了
// if (this.form.password.length < 6 || !/[0-9]/.test(this.form.password) || !/[a-zA-Z]/.test(this.form.password)) {
// this.$message.error('密码复杂度不符合要求,最小六位且必须数字与字母同时存在')
// return false
// }
var param = []
param[0] = ['Personnel_Name', this.form.PersonalName]
param[1] = ['account', this.form.account]
param[2] = ['password', this.form.password]
param[3] = ['Roles_number', this.form.PersonalroleValue]
var Data = this.CreateData('11', '人员管理_人员信息新增_新增', param)
this.ExecDatabase(Data).then(response => {
if (response.data[0].result === '1') {
this.$message({
message: '信息增加成功',
type: 'success'
})
this.pageList = 1
this.pageSize = 10
this.searchTable()
} else {
this.$message.error('信息增加失败')
}
})
this.dialogFormVisible = false
} else {
return false
}
})
},
// 查看设备权限
searchOpNamePermission(row) {
console.log(row)
this.isShowSearchOpNamePermission = true
this.getUserOpNameList(row.personnel_number)
},
// 摄像头权限
searchCameraPermission(row) {
console.log(row)
this.isShowCameraPermission = true
this.getCameraPermission(row.personnel_number)
},
getCameraPermission(personnel_number) {
this.cameraPermissionList = []
var param = []
param[0] = ['Personnel_Number', personnel_number]
var Data = this.CreateData('11', 'WEB_摄像头查看权限_查询', param)
this.ExecDatabase(Data).then(response => {
if (response.data.length != 0) {
this.cameraPermissionList = response.data
}
})
},
// 重置密码
resetPassword(row) {
this.$confirm('是否重置此用户的登陆密码为初始密码?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
confirmButtonClass: 'confirm-confirm-button',
cancelButtonClass: 'confirm-cancel-button',
type: 'warning'
}).then(() => {
this.clickOpNamePermissionList = []
var param = []
param[0] = ['Personnel_Number', row.personnel_number]
var Data = this.CreateData('12', 'WEB_登录基础数据_人员信息_重置密码', param)
this.ExecDatabase(Data).then(response => {
if (response.data[0].result == 1) {
this.$message.success('密码重置成功初始密码为123456')
}
})
})
},
getUserOpNameList(personnel_number) {
this.clickOpNamePermissionList = []
var param = []
param[0] = ['Personnel_Number', personnel_number]
var Data = this.CreateData('11', 'WEB_人员设备查看权限_查询', param)
this.ExecDatabase(Data).then(response => {
if (response.data[0].length != 0) {
this.clickOpNamePermissionList = response.data
}
})
},
updateOpNamePermission(row, type) {
console.log(row)
this.$confirm('是否确认切换设权限', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
var param = []
param[0] = ['设备AID', row.设备AID]
param[1] = ['Personnel_Number', row.Personnel_Number]
param[2] = ['type', type]
var Data = this.CreateData('12', 'WEB_人员设备查看权限_权限切换', param)
this.ExecDatabase(Data).then(response => {
if (response.data[0].result == '1') {
this.$message.success('权限切换成功')
this.getUserOpNameList(row.Personnel_Number)
}
})
})
},
updateCameraPermission(row, type) {
console.log(row)
this.$confirm('是否确认切换摄像头权限', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
var param = []
param[0] = ['摄像头AID', row.AID]
param[1] = ['Personnel_Number', row.Personnel_Number]
param[2] = ['type', type]
var Data = this.CreateData('12', 'WEB_人员摄像头查看权限_权限切换', param)
this.ExecDatabase(Data).then(response => {
if (response.data[0].result == '1') {
this.$message.success('权限切换成功')
this.getCameraPermission(row.Personnel_Number)
}
})
})
},
tableRowClassName({ row }) {
if (row.是否授权 == 1) {
return 'success'
} else {
return 'no-success'
}
},
// 重置表单
callOff(formName) {
this.dialogFormVisible = false
this.$refs[formName].resetFields()
},
// 重置表单
callOff1(formName) {
this.dialogFormVisible1 = false
this.$refs[formName].resetFields()
},
// 分页
handleSizeChange(val) {
this.pageList = 1
this.pageSize = val
this.searchTable()
},
handleCurrentChange(val) {
this.pageList = val
this.searchTable()
}
}
}
</script>
<style scoped>
::v-deep.el-table .success {}
::v-deep.el-table .no-success {}
</style>