@ -8,9 +8,11 @@ import API from '@/util/http'
import { useAdminStore } from "@/store/index.js"
import { useAdminStore } from "@/store/index.js"
import { storeToRefs } from "pinia"
import { storeToRefs } from "pinia"
import { findMenuById , permissionMapping } from "@/utils/menuTreePermission.js"
import { findMenuById , permissionMapping } from "@/utils/menuTreePermission.js"
import { useI18n } from 'vue-i18n'
import BackGroundSvg from '@/assets/SvgIcons/promptBackground.svg'
import BackGroundSvg from '@/assets/SvgIcons/promptBackground.svg'
const { t } = useI18n ( )
const adminStore = useAdminStore ( )
const adminStore = useAdminStore ( )
const { adminData , menuTree } = storeToRefs ( adminStore )
const { adminData , menuTree } = storeToRefs ( adminStore )
@ -50,34 +52,34 @@ const showStatusConfirm = (row, targetStatus) => {
/ / 规 则
/ / 规 则
const addUserRules = {
const addUserRules = {
account : [
account : [
{ required : true , message : '请输入OA号' , trigger : 'blur' } ,
{ pattern : /^\d+$/ , message : 'OA号必须为数字' , trigger : 'blur' } ,
{ max : 20 , message : '长度不能超过20位' , trigger : 'blur' }
{ required : true , message : t ( 'elmessage.inputAccount' ) , trigger : 'blur' } ,
{ pattern : /^\d+$/ , message : t ( 'elmessage.onlyDigits' ) , trigger : 'blur' } ,
{ max : 20 , message : t ( 'elmessage.lengthLimit20' ) , trigger : 'blur' }
] ,
] ,
name : [
name : [
{ required : true , message : '请输入用户名' , trigger : 'blur' } ,
{ max : 20 , message : '长度不能超过20位' , trigger : 'blur' }
{ required : true , message : t ( 'elmessage.inputUserName' ) , trigger : 'blur' } ,
{ max : 20 , message : t ( 'elmessage.lengthLimit20' ) , trigger : 'blur' }
] ,
] ,
market : [
market : [
{ required : true , message : '请选择所属地区' , trigger : 'change' }
{ required : true , message : t ( 'elmessage.selectMarket' ) , trigger : 'change' }
] ,
] ,
permission : [
permission : [
{ required : true , message : '请选择角色名称' , trigger : 'change' }
{ required : true , message : t ( 'elmessage.selectRoleName' ) , trigger : 'change' }
] ,
] ,
postiton : [
postiton : [
{ required : true , message : '请输入职位' , trigger : 'blur' } ,
{ max : 20 , message : '长度不能超过20位' , trigger : 'blur' }
{ required : true , message : t ( 'elmessage.inputPosition' ) , trigger : 'blur' } ,
{ max : 20 , message : t ( 'elmessage.lengthLimit20' ) , trigger : 'blur' }
] ,
] ,
machineIds : [
machineIds : [
{
{
required : true ,
required : true ,
message : '请至少输入一个机器码' ,
message : t ( 'elmessage.inputAtLeastOneMachineCode' ) ,
trigger : 'change' ,
trigger : 'change' ,
validator : ( rule , value , callback ) => {
validator : ( rule , value , callback ) => {
/ / 检 查 是 否 有 非 空 的 机 器 码
/ / 检 查 是 否 有 非 空 的 机 器 码
const hasValid = value . some ( item => item . trim ( ) !== '' ) ;
const hasValid = value . some ( item => item . trim ( ) !== '' ) ;
if ( ! hasValid ) {
if ( ! hasValid ) {
callback ( new Error ( '请至少输入一个机器码' ) ) ;
callback ( new Error ( t ( 'elmessage.inputAtLeastOneMachineCode' ) ) ) ;
} else {
} else {
callback ( ) ;
callback ( ) ;
}
}
@ -117,14 +119,14 @@ const permissionEditObj = ref({
} )
} )
const addMachineIdInput = function ( ) {
const addMachineIdInput = function ( ) {
if ( addAdmin . value . machineIds . length >= 2 ) {
if ( addAdmin . value . machineIds . length >= 2 ) {
ElMessage . warning ( '设备数量已达上限' )
ElMessage . warning ( t ( 'elmessage.deviceLimitReached' ) )
return
return
}
}
addAdmin . value . machineIds . push ( '' )
addAdmin . value . machineIds . push ( '' )
}
}
const UseraddMachineIdInput = function ( ) {
const UseraddMachineIdInput = function ( ) {
if ( permissionEditObj . value . machineIds . length >= 2 ) {
if ( permissionEditObj . value . machineIds . length >= 2 ) {
ElMessage . warning ( '设备数量已达上限' )
ElMessage . warning ( t ( 'elmessage.deviceLimitReached' ) )
return
return
}
}
permissionEditObj . value . machineIds . push ( '' )
permissionEditObj . value . machineIds . push ( '' )
@ -149,7 +151,7 @@ const getPermission = async function (val) {
/ / 检 查 是 否 不 是 数 字
/ / 检 查 是 否 不 是 数 字
if ( ! numberRegex . test ( admin . value . account ) ) {
if ( ! numberRegex . test ( admin . value . account ) ) {
ElMessage . error ( '请检查OA号格式' )
ElMessage . error ( t ( 'elmessage.checkAccountFormat' ) )
/ / 上 面 提 示 过 了
/ / 上 面 提 示 过 了
return
return
}
}
@ -272,7 +274,7 @@ const userAddInit = function () {
/ / 新 增 用 户
/ / 新 增 用 户
const permissionAdd = async function ( ) {
const permissionAdd = async function ( ) {
if ( ! canLook ) {
if ( ! canLook ) {
ElMessage . error ( '无此权限' )
ElMessage . error ( t ( 'elmessage.noPermissionText' ) )
return
return
}
}
try {
try {
@ -281,7 +283,7 @@ const permissionAdd = async function () {
if ( valid ) {
if ( valid ) {
resolve ( ) ; / / 验 证 通 过 , 继 续 执 行 后 续 代 码
resolve ( ) ; / / 验 证 通 过 , 继 续 执 行 后 续 代 码
} else {
} else {
reject ( new Error ( '请检查并完善表单信息' ) ) ; / / 验 证 失 败 , 抛 出 错 误
reject ( new Error ( t ( 'elmessage.checkFormInfo' ) ) ) ; / / 验 证 失 败 , 抛 出 错 误
}
}
} ) ;
} ) ;
} ) ;
} ) ;
@ -307,7 +309,7 @@ const permissionAdd = async function () {
console . log ( addAdmin . value )
console . log ( addAdmin . value )
if ( result . code === 200 ) {
if ( result . code === 200 ) {
ElMessage . success ( '添加成功' )
ElMessage . success ( t ( 'elmessage.addSuccess' ) )
} else {
} else {
ElMessage . error ( result . msg )
ElMessage . error ( result . msg )
}
}
@ -319,7 +321,7 @@ const permissionAdd = async function () {
} catch ( error ) {
} catch ( error ) {
console . log ( '新增用户权限失败' , error )
console . log ( '新增用户权限失败' , error )
ElMessage . error ( '新增用户权限失败' )
ElMessage . error ( t ( 'elmessage.addUserPermissionFailed' ) )
}
}
}
}
/ / 表 单 验 证 r e f
/ / 表 单 验 证 r e f
@ -441,19 +443,19 @@ const getUserLists = async function (selectedRoleId) {
permissionEditObj . value . parentName = '' ;
permissionEditObj . value . parentName = '' ;
permissionEditObj . value . checkedKeys = [ ] ;
permissionEditObj . value . checkedKeys = [ ] ;
parentRoleTip . value = '' ;
parentRoleTip . value = '' ;
const parentRes = await request ( {
url : '/role/selectFather' ,
data : { id : selectedRoleId } / / 用 选 中 的 角 色 I D 请 求
} ) ;
const parentId = parentRes . data . fatherId ;
const parentName = parentRes . data . parentName ;
permissionEditObj . value . parentId = parentId ;
permissionEditObj . value . parentName = parentName ;
if ( parentId == null ) {
/ / 无 上 级 角 色 : 显 示 提 示
parentRoleTip . value = '该角色无上级角色' ;
}
const parentRes = await request ( {
url : '/role/selectFather' ,
data : { id : selectedRoleId } / / 用 选 中 的 角 色 I D 请 求
} ) ;
const parentId = parentRes . data . fatherId ;
const parentName = parentRes . data . parentName ;
permissionEditObj . value . parentId = parentId ;
permissionEditObj . value . parentName = parentName ;
if ( parentId == null ) {
/ / 无 上 级 角 色 : 显 示 提 示
parentRoleTip . value = t ( 'common_add.noParentRole' ) ;
}
let roleId = permissionEditObj . value . roleId
let roleId = permissionEditObj . value . roleId
/ / i f ( p e r m i s s i o n E d i t O b j . v a l u e . p a r e n t I d = = = n u l l | | p e r m i s s i o n E d i t O b j . v a l u e . p a r e n t I d = = = u n d e f i n e d ) {
/ / i f ( p e r m i s s i o n E d i t O b j . v a l u e . p a r e n t I d = = = n u l l | | p e r m i s s i o n E d i t O b j . v a l u e . p a r e n t I d = = = u n d e f i n e d ) {
@ -476,22 +478,22 @@ const getUserLists = async function (selectedRoleId) {
/ / 编 辑 用 户 表 单 校 验
/ / 编 辑 用 户 表 单 校 验
const editAdminRules = {
const editAdminRules = {
market : [
market : [
{ required : true , message : '请选择所属地区' , trigger : 'change' }
{ required : true , message : t ( 'elmessage.selectMarket' ) , trigger : 'change' }
] ,
] ,
postiton : [
postiton : [
{ required : true , message : '请输入职位' , trigger : [ 'blur' , 'change' ] } ,
{ max : 20 , message : '长度不能超过20位' , trigger : [ 'blur' , 'change' ] }
{ required : true , message : t ( 'elmessage.inputPosition' ) , trigger : [ 'blur' , 'change' ] } ,
{ max : 20 , message : t ( 'elmessage.lengthLimit20' ) , trigger : [ 'blur' , 'change' ] }
] ,
] ,
machineIds : [
machineIds : [
{
{
required : true ,
required : true ,
message : '请至少输入一个机器码' ,
message : t ( 'elmessage.inputAtLeastOneMachineCode' ) ,
trigger : 'change' ,
trigger : 'change' ,
validator : ( rule , value , callback ) => {
validator : ( rule , value , callback ) => {
/ / 检 查 是 否 有 非 空 的 机 器 码
/ / 检 查 是 否 有 非 空 的 机 器 码
const hasValid = value . some ( item => item . trim ( ) !== '' ) ;
const hasValid = value . some ( item => item . trim ( ) !== '' ) ;
if ( ! hasValid ) {
if ( ! hasValid ) {
callback ( new Error ( '请至少输入一个机器码' ) ) ;
callback ( new Error ( t ( 'elmessage.inputAtLeastOneMachineCode' ) ) ) ;
} else {
} else {
callback ( ) ;
callback ( ) ;
}
}
@ -502,33 +504,34 @@ const editAdminRules = {
/ / 编 辑 用 户 权 限 提 交
/ / 编 辑 用 户 权 限 提 交
const permissionEdit = async function ( ) {
const permissionEdit = async function ( ) {
if ( ! canEdit ) {
if ( ! canEdit ) {
ElMessage . error ( '无此权限' )
ElMessage . error ( t ( 'elmessage.noPermissionText' ) )
return
return
}
}
let { adminName : userName , roleName : oldRole , roleId : newRoleId } = permissionEditObj . value ;
let { adminName : userName , roleName : oldRole , roleId : newRoleId } = permissionEditObj . value ;
if ( oldRole == null ) {
if ( oldRole == null ) {
oldRole = '暂未分配角色'
oldRole = t ( 'elmessage.noRoleAssigned' )
}
}
const newRole = permissionList . value . find ( item => item . value === newRoleId ) ? . label || '未知角色' ;
const newRole = permissionList . value . find ( item => item . value === newRoleId ) ? . label || t ( 'elmessage.unknownRole' ) ;
const confirmContent = ` ${ t ( 'permission.changeRoleConfirmContent1' ) } ${ userName } ${ t ( 'permission.changeRoleConfirmContent2' ) } ${ oldRole } ${ t ( 'permission.changeRoleConfirmContent3' ) } ${ newRole } ${ t ( 'permission.changeRoleConfirmContent4' ) } `
try {
try {
await new Promise ( ( resolve , reject ) => {
await new Promise ( ( resolve , reject ) => {
Ref . value . validate ( ( valid ) => {
Ref . value . validate ( ( valid ) => {
if ( valid ) {
if ( valid ) {
resolve ( ) ; / / 验 证 通 过 , 继 续 执 行 后 续 代 码
resolve ( ) ; / / 验 证 通 过 , 继 续 执 行 后 续 代 码
} else {
} else {
reject ( new Error ( '请检查并完善表单信息' ) ) ; / / 验 证 失 败 , 抛 出 错 误
reject ( new Error ( t ( 'elmessage.checkFormInfo' ) ) ) ; / / 验 证 失 败 , 抛 出 错 误
}
}
} ) ;
} ) ;
} ) ;
} ) ;
await ElMessageBox . confirm (
await ElMessageBox . confirm (
` 确认修改权限角色?<br>您正在将【 ${ userName } 】的权限角色从【 ${ oldRole } 】修改为【 ${ newRole } 】<br>变更后,该用户的可操作权限将同步更新为新角色配置,涉及数据访问、功能操作等权限变化,请谨慎确认。 ` ,
'警告' ,
confirmContent ,
t ( 'permission.warning' ) ,
{
{
confirmButtonText : '确认' ,
cancelButtonText : '取消' ,
confirmButtonText : t ( 'common.confirm' ) ,
cancelButtonText : t ( 'common.cancel' ) ,
type : "warning" ,
type : "warning" ,
lockScroll : false ,
lockScroll : false ,
dangerouslyUseHTMLString : true / / 允 许 解 析 H T M L 标 签
dangerouslyUseHTMLString : true
}
}
)
)
const result = await request ( {
const result = await request ( {
@ -548,11 +551,11 @@ const permissionEdit = async function () {
console . log ( '编辑最后提交数据' , permissionEditObj . value ) ;
console . log ( '编辑最后提交数据' , permissionEditObj . value ) ;
if ( result . code === 200 ) {
if ( result . code === 200 ) {
await ElMessageBox . alert (
await ElMessageBox . alert (
` 用户 ${ userName } 的权限角色已更改为【 ${ newRole } 】 ` ,
'成功' ,
` ${ t ( 'permission.changeRoleSuccessContent1' ) } ${ userName } ${ t ( 'permission.changeRoleSuccessContent2' ) } ${ newRole } 】 ` ,
t ( 'elmessage.success' ) ,
{
{
confirmButtonText : '确定' ,
type : 'success' / / 设 置 为 s u c c e s s 类 型
confirmButtonText : t ( 'common.confirm' ) ,
type : 'success'
}
}
) ;
) ;
getPermission ( ) ;
getPermission ( ) ;
@ -563,7 +566,7 @@ const permissionEdit = async function () {
} catch ( error ) {
} catch ( error ) {
console . log ( '编辑用户权限失败' , error )
console . log ( '编辑用户权限失败' , error )
ElMessage . error ( '编辑用户权限失败' )
ElMessage . error ( t ( 'elmessage.editFailed' ) || t ( 'elmessage.operationFailed' ) )
}
}
}
}
@ -578,7 +581,7 @@ const del = function (row) {
/ / 删 除 权 限
/ / 删 除 权 限
const delConfirm = async function ( ) {
const delConfirm = async function ( ) {
if ( ! canDel ) {
if ( ! canDel ) {
ElMessage . error ( '无此权限' )
ElMessage . error ( t ( 'elmessage.noPermissionText' ) )
return
return
}
}
try {
try {
@ -589,18 +592,18 @@ const delConfirm = async function () {
console . log ( '看看删除对象' , delObj . value )
console . log ( '看看删除对象' , delObj . value )
console . log ( '请求成功1' , result )
console . log ( '请求成功1' , result )
ElMessage . success ( '删除权限成功' )
ElMessage . success ( t ( 'elmessage.deleteSuccess' ) )
delObj . value = { }
delObj . value = { }
getPermission ( )
getPermission ( )
} catch ( error ) {
} catch ( error ) {
console . log ( '删除权限失败' , error )
console . log ( '删除权限失败' , error )
ElMessage . error ( '删除权限失败' )
ElMessage . error ( t ( 'elmessage.operationFailed' ) )
}
}
}
}
/ / 禁 用 启 用 用 户 权 限
/ / 禁 用 启 用 用 户 权 限
const editStatus = async function ( row ) {
const editStatus = async function ( row ) {
if ( ! change ) {
if ( ! change ) {
ElMessage . error ( '无此权限' )
ElMessage . error ( t ( 'elmessage.noPermissionText' ) )
return
return
}
}
const { id , account , targetStatus , ... restRow } = currentStatusRow . value
const { id , account , targetStatus , ... restRow } = currentStatusRow . value
@ -622,7 +625,7 @@ const editStatus = async function (row) {
console . log ( '请求成功2' , result )
console . log ( '请求成功2' , result )
if ( result . code === 200 ) {
if ( result . code === 200 ) {
ElMessage . success (
ElMessage . success (
permissionEditObj . value . adminStatus === 1 ? '启用成功' : '禁用成功'
permissionEditObj . value . adminStatus === 1 ? t ( 'elmessage.enableSuccess' ) : t ( 'elmessage.disableSuccess' )
)
)
statusLoading . value [ id ] = false
statusLoading . value [ id ] = false
}
}
@ -681,11 +684,11 @@ const handleMarketChangeAddUser = (value) => {
. filter ( Boolean ) ;
. filter ( Boolean ) ;
/ / 检 查 是 否 包 含 总 部
/ / 检 查 是 否 包 含 总 部
const hasHeadquarters = selectedMarkets . includes ( '总部' ) ;
const hasHeadquarters = selectedMarkets . includes ( t ( 'common.markets.headquarters' ) ) ;
if ( hasHeadquarters ) {
if ( hasHeadquarters ) {
/ / 如 果 包 含 总 部 , 只 保 留 总 部
/ / 如 果 包 含 总 部 , 只 保 留 总 部
addAdmin . value . market = [ '总部' ] ;
addAdmin . value . market = [ t ( 'common.markets.headquarters' ) ] ;
} else {
} else {
/ / 不 包 含 总 部 , 保 留 所 有 选 择
/ / 不 包 含 总 部 , 保 留 所 有 选 择
addAdmin . value . market = selectedMarkets ;
addAdmin . value . market = selectedMarkets ;
@ -705,11 +708,11 @@ const handleMarketChangeEditUser = (value) => {
. filter ( Boolean ) ;
. filter ( Boolean ) ;
/ / 检 查 是 否 包 含 总 部
/ / 检 查 是 否 包 含 总 部
const hasHeadquarters = selectedMarkets . includes ( '总部' ) ;
const hasHeadquarters = selectedMarkets . includes ( t ( 'common.markets.headquarters' ) ) ;
if ( hasHeadquarters ) {
if ( hasHeadquarters ) {
/ / 如 果 包 含 总 部 , 只 保 留 总 部
/ / 如 果 包 含 总 部 , 只 保 留 总 部
permissionEditObj . value . market = [ '总部' ] ;
permissionEditObj . value . market = [ t ( 'common.markets.headquarters' ) ] ;
} else {
} else {
/ / 不 包 含 总 部 , 保 留 所 有 选 择
/ / 不 包 含 总 部 , 保 留 所 有 选 择
permissionEditObj . value . market = selectedMarkets ;
permissionEditObj . value . market = selectedMarkets ;
@ -793,7 +796,7 @@ const resetPassword = function (row) {
/ / 确 认 重 置 密 码
/ / 确 认 重 置 密 码
const confirmResetPassword = async function ( ) {
const confirmResetPassword = async function ( ) {
if ( ! canEdit ) {
if ( ! canEdit ) {
ElMessage . error ( '无此权限' )
ElMessage . error ( t ( 'elmessage.noPermission' ) )
return
return
}
}
console . log ( 'adminData' , adminData . value )
console . log ( 'adminData' , adminData . value )
@ -827,20 +830,20 @@ const confirmResetPassword = async function () {
} ) ;
} ) ;
if ( result . code === 200 ) { / / 使 用 严 格 相 等 运 算 符
if ( result . code === 200 ) { / / 使 用 严 格 相 等 运 算 符
ElMessage . success ( '重置密码成功' ) ;
ElMessage . success ( t ( 'elmessage.resetPasswordSuccess' ) ) ;
resetConfirmVisible . value = false ; / / 关 闭 弹 窗
resetConfirmVisible . value = false ; / / 关 闭 弹 窗
await getPermission ( )
await getPermission ( )
} else {
} else {
ElMessage . error ( result . message || '重置密码失败' ) ;
ElMessage . error ( result . message || t ( 'elmessage.resetPasswordFailed' ) ) ;
}
}
} catch ( error ) {
} catch ( error ) {
ElMessage . error ( '重置密码失败' ) ;
ElMessage . error ( t ( 'elmessage.resetPasswordFailed' ) ) ;
console . error ( '请求错误:' , error ) ;
console . error ( '请求错误:' , error ) ;
}
}
} else {
} else {
/ / c o n s o l e . l o g ( " 为 什 么 不 能 重 置 " , a d m i n D a t a . v a l u e . m a r k e t s )
/ / c o n s o l e . l o g ( " 为 什 么 不 能 重 置 " , a d m i n D a t a . v a l u e . m a r k e t s )
ElMessage . error ( '您没有修改' + currentRow . value . market + '地区的用户密码的权限' ) ;
ElMessage . error ( t ( 'elmessage.noPermissionResetMarket1' ) + currentRow . value . market + t ( 'elmessage.noPermissionResetMarket2' ) ) ;
resetConfirmVisible . value = false ; / / 关 闭 弹 窗
resetConfirmVisible . value = false ; / / 关 闭 弹 窗
}
}
@ -918,25 +921,25 @@ onMounted(async function () {
< el -card class = "card1" style = "margin-bottom: 1vh;" >
< el -card class = "card1" style = "margin-bottom: 1vh;" >
< div class = "head-card" >
< div class = "head-card" >
< div class = "head-card-element" >
< div class = "head-card-element" >
< el -text class = "mx-1" size = "large" > OA号 : < / e l - t e x t >
< el -input v -model = " admin.account " style = "width: 240px" placeholder = "请输入OA号 " clearable / >
< el -text class = "mx-1" size = "large" > { { t ( 'common.account' ) } } : < / e l - t e x t >
< el -input v -model = " admin.account " style = "width: 240px" :placeholder ="t('common.accountPlaceholder') " clearable / >
< / div >
< / div >
< div class = "head-card-element" style = "margin-left: 50px" >
< div class = "head-card-element" style = "margin-left: 50px" >
< el -text class = "mx-1" size = "large" > 所属地区 : < / e l - t e x t >
< el -cascader v -model = " admin.market " :options ="marketsTree" placeholder = "请选择所属地区 " clearable style = "width:180px"
< el -text class = "mx-1" size = "large" > { { t ( 'common.market' ) } } : < / e l - t e x t >
< el -cascader v -model = " admin.market " :options ="marketsTree" :placeholder ="t('common.marketPlaceholder') " clearable style = "width:180px"
@ change = "handleMarketChange" / >
@ change = "handleMarketChange" / >
< / div >
< / div >
< div class = "head-card-element" style = "margin-left: 50px" >
< div class = "head-card-element" style = "margin-left: 50px" >
< el -text class = "mx-1" size = "large" > 职位名称 : < / e l - t e x t >
< el -select v -model = " admin.postiton " placeholder = "请选择职位名称 " style = "width: 240px" clearable >
< el -text class = "mx-1" size = "large" > { { t ( 'common.position' ) } } : < / e l - t e x t >
< el -select v -model = " admin.postiton " :placeholder ="t('common.positionPlaceholder') " style = "width: 240px" clearable >
< el -option v -for = " item in postiton " :key ="item" :label ="item" :value ="item" / >
< el -option v -for = " item in postiton " :key ="item" :label ="item" :value ="item" / >
< / e l - s e l e c t >
< / e l - s e l e c t >
< / div >
< / div >
< div class = "head-card-btn" >
< div class = "head-card-btn" >
< el -button type = "primary" @click ="search()" v-if ="canLook" > 查询 < / el -button >
< el -button type = "success" @click ="reset()" > 重置 < / el -button >
< el -button type = "primary" @click ="search()" v-if ="canLook" > {{ t ( ' common.search ' ) }} < / el -button >
< el -button type = "success" @click ="reset()" > {{ t ( ' common.reset ' ) }} < / el -button >
< / div >
< / div >
< / div >
< / div >
< / e l - c a r d >
< / e l - c a r d >
@ -944,14 +947,14 @@ onMounted(async function () {
<!-- 展示表单 -- >
<!-- 展示表单 -- >
< div class = "add-item" >
< div class = "add-item" >
< el -button style = "color: #048efb; border: 1px solid #048efb" :disabled ="!canAdd" v -if = " canAdd "
< el -button style = "color: #048efb; border: 1px solid #048efb" :disabled ="!canAdd" v -if = " canAdd "
@ click = "userAddInit()" > 新增用户
@ click = "userAddInit()" > { { t ( 'common.addUser' ) } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< / div >
< / div >
< div >
< div >
< el -table :data ="tableData" style = "width: 82vw;height:71.3vh" show -overflow -tooltip
< el -table :data ="tableData" style = "width: 82vw;height:71.3vh" show -overflow -tooltip
>
>
< el -table -column type = "index" label = "序号 " width = "100px" fixed = "left" >
< el -table -column type = "index" :label ="t('common_list.id') " width = "100px" fixed = "left" >
< template # default = "scope" >
< template # default = "scope" >
< span > { {
< span > { {
scope . $index + 1 + ( getObj . pageNum - 1 ) * getObj . pageSize
scope . $index + 1 + ( getObj . pageNum - 1 ) * getObj . pageSize
@ -959,39 +962,39 @@ onMounted(async function () {
< / template >
< / template >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
< el -table -column prop = "account" label = "OA号 " / >
< el -table -column prop = "name" label = "姓名 " / >
< el -table -column prop = "market" label = "所属地区 " / >
< el -table -column prop = "postiton" label = "职位 " / >
< el -table -column prop = "roleName" label = "部门权限 ">
< el -table -column prop = "account" :label ="t('common_list.account') " / >
< el -table -column prop = "name" :label ="t('common_list.name') " / >
< el -table -column prop = "market" :label ="t('common_list.market') " / >
< el -table -column prop = "postiton" :label ="t('common_list.position') " / >
< el -table -column prop = "roleName" :label ="t('common_list.departmentPermission') ">
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
< el -table -column prop = "remark" label = "备注 " / >
< el -table -column prop = "operation" label = "操作" width = "2 80px">
< el -table -column prop = "remark" :label ="t('common_list.remark') " / >
< el -table -column prop = "operation" :label ="t('common_list.operation')" align = "center" width = "3 80px">
< template # default = "scope" >
< template # default = "scope" >
< el -button type = "warning" text :disabled ="!canReset" @click ="resetPassword(scope.row)" v-if ="canReset" >
< el -button type = "warning" text :disabled ="!canReset" @click ="resetPassword(scope.row)" v-if ="canReset" >
重置密码
{ { t ( 'common.resetPassword' ) } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< el -button type = "primary" text @click ="permissionEditInit(scope.row)" v -if = " canEdit "
< el -button type = "primary" text @click ="permissionEditInit(scope.row)" v -if = " canEdit "
: disabled = "!canEdit || scope.row.adminStatus === 0 || scope.row.account === adminData.account" >
: disabled = "!canEdit || scope.row.adminStatus === 0 || scope.row.account === adminData.account" >
修改权限
{ { t ( 'common.editPermission' ) } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< el -popconfirm title = "确定将此用户删除吗? " @confirm ="delConfirm" >
< el -popconfirm :title ="t('elmessage.confirmDeleteUser') " @confirm ="delConfirm" >
< template # reference >
< template # reference >
< el -button type = "danger" text @click ="del(scope.row)" v -if = " canDel "
< el -button type = "danger" text @click ="del(scope.row)" v -if = " canDel "
: disabled = "!canDel || scope.row.adminStatus === 0 || scope.row.account === adminData.account" >
: disabled = "!canDel || scope.row.adminStatus === 0 || scope.row.account === adminData.account" >
删除
{ { t ( 'common.delete' ) } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< / template >
< / template >
< template # actions = "{ confirm, cancel }" >
< template # actions = "{ confirm, cancel }" >
< el -button size = "small" @click ="cancel" > 取消 < / el -button >
< el -button size = "small" @click ="cancel" > {{ t ( ' common.cancel ' ) }} < / el -button >
< el -button type = "primary" size = "small" @click ="confirm" >
< el -button type = "primary" size = "small" @click ="confirm" >
确定
{ { t ( 'common.confirm' ) } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< / template >
< / template >
< / e l - p o p c o n f i r m >
< / e l - p o p c o n f i r m >
< / template >
< / template >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
< el -table -column prop = "adminStatus" label = "状态 ">
< el -table -column prop = "adminStatus" :label ="t('common_list.status') ">
< template # default = "scope" >
< template # default = "scope" >
< el -switch :model-value ="scope.row.adminStatus" :active-value ="1" :inactive-value ="0" size = "large"
< el -switch :model-value ="scope.row.adminStatus" :active-value ="1" :inactive-value ="0" size = "large"
v - if = "change"
v - if = "change"
@ -999,7 +1002,7 @@ onMounted(async function () {
@ change = "(targetStatus) => showStatusConfirm(scope.row, targetStatus)" style = "
@ change = "(targetStatus) => showStatusConfirm(scope.row, targetStatus)" style = "
-- el - switch - on - color : # 13 ce66 ;
-- el - switch - on - color : # 13 ce66 ;
-- el - switch - off - color : # ff4949 ;
-- el - switch - off - color : # ff4949 ;
" active-text=" 启用 " inactive-text=" 禁用 " inline - prompt / >
" :active-text=" t ( 'common_list.enable' ) " :inactive-text=" t ( 'common_list.disable' ) " inline - prompt / >
< / template >
< / template >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e - c o l u m n >
< / e l - t a b l e >
< / e l - t a b l e >
@ -1013,106 +1016,106 @@ onMounted(async function () {
< / div >
< / div >
<!-- 新增用户权限 -- >
<!-- 新增用户权限 -- >
< el -dialog v -model = " userAddVisible " title = "新增用户权限 " width = "800px" :close-on-click-modal ="false"
< el -dialog v -model = " userAddVisible " :title ="t('common_add.addUserPermission') " width = "800px" :close-on-click-modal ="false"
@ close = "handleDialogClose" >
@ close = "handleDialogClose" >
< template # footer >
< template # footer >
< el -form ref = "Ref" :rules ="addUserRules" :model ="addAdmin" label -width = " auto "
< el -form ref = "Ref" :rules ="addUserRules" :model ="addAdmin" label -width = " auto "
style = "max-width: 600px; align-items: center" >
style = "max-width: 600px; align-items: center" >
< el -form -item prop = "account" label = "OA号: " required clearable >
< el -input v -model = " addAdmin.account " placeholder = "请输入OA号 " style = "width: 220px" / >
< el -form -item prop = "account" : label = "t('common_add.account') + ':' " required clearable >
< el -input v -model = " addAdmin.account " :placeholder ="t('common_add.accountPlaceholder') " style = "width: 220px" / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "name" label = "用户名: " required clearable >
< el -input v -model = " addAdmin.name " placeholder = "请输入用户名 " style = "width: 220px" / >
< el -form -item prop = "name" : label = "t('common_add.userName') + ':' " required clearable >
< el -input v -model = " addAdmin.name " :placeholder ="t('common_add.userNamePlaceholder') " style = "width: 220px" / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "market" label = "所属地区: " required clearable >
< el -cascader v -model = " addAdmin.market " :options ="marketsTree" placeholder = "请选择所属地区 " clearable collapse -tags
< el -form -item prop = "market" : label = "t('common.market') + ':' " required clearable >
< el -cascader v -model = " addAdmin.market " :options ="marketsTree" :placeholder ="t('common.marketPlaceholder') " clearable collapse -tags
collapse - tags - tooltip style = "width:220px" @ change = "handleMarketChangeAddUser" : max - collapse - tags = "2"
collapse - tags - tooltip style = "width:220px" @ change = "handleMarketChangeAddUser" : max - collapse - tags = "2"
: props = "addUserProps" / >
: props = "addUserProps" / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "permission" label = "角色名称: " required >
< el -select v -model = " addAdmin.permission " placeholder = "请选择角色名称 " style = "width: 220px" clearable >
< el -form -item prop = "permission" : label = "t('common_add.roleName') + ':' " required >
< el -select v -model = " addAdmin.permission " :placeholder ="t('common_add.roleNamePlaceholder') " style = "width: 220px" clearable >
< el -option v -for = " item in permissionList " :key ="item.value" :label ="item.label"
< el -option v -for = " item in permissionList " :key ="item.value" :label ="item.label"
: value = "item.value" > < / e l - o p t i o n >
: value = "item.value" > < / e l - o p t i o n >
< / e l - s e l e c t >
< / e l - s e l e c t >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "postiton" label = "职位: " required >
< el -input v -model = " addAdmin.postiton " placeholder = "请输入职位 " style = "width: 220px" clearable / >
< el -form -item prop = "postiton" : label = "t('common.position') + ':' " required >
< el -input v -model = " addAdmin.postiton " :placeholder ="t('common.positionPlaceholder') " style = "width: 220px" clearable / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "machineIds" label = "机器码: " required >
< el -form -item prop = "machineIds" : label = "t('common_add.machineCode') + ':' " required >
< div style = "display: flex; align-items: center; flex-wrap: wrap; gap: 10px;" >
< div style = "display: flex; align-items: center; flex-wrap: wrap; gap: 10px;" >
<!-- 动态添加的机器码输入框 -- >
<!-- 动态添加的机器码输入框 -- >
< div v-for ="(item, index) in addAdmin.machineIds" :key ="index" >
< div v-for ="(item, index) in addAdmin.machineIds" :key ="index" >
< el -input v -model = " addAdmin.machineIds [ index ] " placeholder = "请输入机器码 "
< el -input v -model = " addAdmin.machineIds [ index ] " :placeholder ="t('common_add.machineCodePlaceholder') "
style = "width: 220px; margin-right: 10px;" / >
style = "width: 220px; margin-right: 10px;" / >
< / div >
< / div >
< el -button type = "primary" @click ="addMachineIdInput" > 添加 < / el -button >
< el -button type = "primary" @click ="addMachineIdInput" > {{ t ( ' common.add ' ) }} < / el -button >
< / div >
< / div >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "remark" label = "备注 ">
< el -form -item prop = "remark" :label ="t('common_add.remark') ">
< el -input v -model = " addAdmin.remark " style = "width: 300px" :rows ="2" maxlength = "100" show -word -limit
< el -input v -model = " addAdmin.remark " style = "width: 300px" :rows ="2" maxlength = "100" show -word -limit
type = "textarea" / >
type = "textarea" / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< / e l - f o r m >
< / e l - f o r m >
< div >
< div >
< el -button @click ="closeUserAddVisible()" > 取消 < / el -button >
< el -button @click ="closeUserAddVisible()" > {{ t ( ' common.cancel ' ) }} < / el -button >
< el -button type = "primary" @click ="throttledPermissionAdd()" >
< el -button type = "primary" @click ="throttledPermissionAdd()" >
提交
{ { t ( 'common.submit' ) } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< / div >
< / div >
< / template >
< / template >
< / e l - d i a l o g >
< / e l - d i a l o g >
<!-- 这是编辑用户权限弹窗 -- >
<!-- 这是编辑用户权限弹窗 -- >
< el -dialog v-model ="userEditVisible" title="编辑用户权限 " width="800px" :close-on-click-modal="false" >
< el -dialog v-model ="userEditVisible" :title="t('common_add.editUserPermission') " width="800px" :close-on-click-modal="false" >
< el -form ref = "Ref" :rules ="editAdminRules" :model ="permissionEditObj" label -width = " auto "
< el -form ref = "Ref" :rules ="editAdminRules" :model ="permissionEditObj" label -width = " auto "
style = "max-width: 600px; align-items: center" >
style = "max-width: 600px; align-items: center" >
< el -form -item prop = "account" label = "用户账号: " clearable >
< el -input v -model = " permissionEditObj.account " placeholder = "请输入OA号 " style = "width: 220px" disabled / >
< el -form -item prop = "account" : label = "t('common.account') + ':' " clearable >
< el -input v -model = " permissionEditObj.account " :placeholder ="t('common.accountPlaceholder') " style = "width: 220px" disabled / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "name" label = "用户名称: " >
< el -input v -model = " permissionEditObj.adminName " placeholder = "请输入用户名 " style = "width: 220px" disabled / >
< el -form -item prop = "name" : label = "t('common_add.userName') + ':' " >
< el -input v -model = " permissionEditObj.adminName " :placeholder ="t('common_add.userNamePlaceholder') " style = "width: 220px" disabled / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "market" label = "所属地区: " clearable >
< el -cascader v -model = " permissionEditObj.market " :options ="marketsTree" placeholder = "请选择所属地区 " clearable
< el -form -item prop = "market" : label = "t('common.market') + ':' " clearable >
< el -cascader v -model = " permissionEditObj.market " :options ="marketsTree" :placeholder ="t('common.marketPlaceholder') " clearable
collapse - tags collapse - tags - tooltip style = "width:220px" @ change = "handleMarketChangeEditUser"
collapse - tags collapse - tags - tooltip style = "width:220px" @ change = "handleMarketChangeEditUser"
: max - collapse - tags = "2" : props = "editUserProps" / >
: max - collapse - tags = "2" : props = "editUserProps" / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "postiton" label = "职位: " >
< el -input v -model = " permissionEditObj.postiton " placeholder = "请输入职位 " style = "width: 220px" clearable / >
< el -form -item prop = "postiton" : label = "t('common.position') + ':' " >
< el -input v -model = " permissionEditObj.postiton " :placeholder ="t('common.positionPlaceholder') " style = "width: 220px" clearable / >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "roleName" label = "角色名称: " >
< el -select v-model ="permissionEditObj.roleId" placeholder="请选择角色 " style="width: 220px" @change="getUserLists" >
< el -form -item prop = "roleName" : label = "t('common_add.roleName') + ':' " >
< el -select v-model ="permissionEditObj.roleId" :placeholder="t('common_add.roleNamePlaceholder') " style="width: 220px" @change="getUserLists" >
< el -option v -for = " item in permissionList " :key ="item.value" :label ="item.label"
< el -option v -for = " item in permissionList " :key ="item.value" :label ="item.label"
: value = "item.value" > < / e l - o p t i o n >
: value = "item.value" > < / e l - o p t i o n >
< / e l - s e l e c t >
< / e l - s e l e c t >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "parentName" label = "上级角色: " >
< el -select v -model = " permissionEditObj.parentId " placeholder = "无上级角色 " :disabled ="!!parentRoleTip"
< el -form -item prop = "parentName" : label = "t('common_add.parentRole') + ':' " >
< el -select v -model = " permissionEditObj.parentId " :placeholder ="t('common_add.noParentRole') " :disabled ="!!parentRoleTip"
style = "width: 220px" >
style = "width: 220px" >
< el -option v -if = " parentRoleTip " :key ="0" :label ="parentRoleTip" :value ="null" disabled / >
< el -option v -if = " parentRoleTip " :key ="0" :label ="parentRoleTip" :value ="null" disabled / >
< el -option v -else v -for = " item in permissionList " :key ="item.value" :label ="item.label" disabled
< el -option v -else v -for = " item in permissionList " :key ="item.value" :label ="item.label" disabled
: value = "item.value" > < / e l - o p t i o n >
: value = "item.value" > < / e l - o p t i o n >
< / e l - s e l e c t >
< / e l - s e l e c t >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "permissionSelect" label = "权限列表: " >
< el -form -item prop = "permissionSelect" : label = "t('common_add.permissionList') + ':' " >
< el -tree v -if = " data.length > 0 " :data=" data " :disabled=" true " show-checkbox node-key=" id "
< el -tree v -if = " data.length > 0 " :data=" data " :disabled=" true " show-checkbox node-key=" id "
: props = "{ label: 'menuName', children: 'children' }" : default - checked - keys = "permissionEditObj.checkedKeys" >
: props = "{ label: 'menuName', children: 'children' }" : default - checked - keys = "permissionEditObj.checkedKeys" >
< / e l - t r e e >
< / e l - t r e e >
< div v -else style = "display: flex; align-items: center; gap: 8px;" >
< div v -else style = "display: flex; align-items: center; gap: 8px;" >
< span style = "color: #999;" > 暂无数据 < / span >
< span style = "color: #999;" > { { t ( 'common.noData' ) } } < / span >
< / div >
< / div >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< el -form -item prop = "machineIds" label = "机器码: " >
< el -form -item prop = "machineIds" : label = "t('common_add.machineCode') + ':' " >
< div style = "display: flex; align-items: center; flex-wrap: wrap; gap: 10px;" >
< div style = "display: flex; align-items: center; flex-wrap: wrap; gap: 10px;" >
<!-- 动态添加的机器码输入框 -- >
<!-- 动态添加的机器码输入框 -- >
< div v-for ="(item, index) in permissionEditObj.machineIds" :key ="index" >
< div v-for ="(item, index) in permissionEditObj.machineIds" :key ="index" >
< el -input v -model = " permissionEditObj.machineIds [ index ] " placeholder = ""
< el -input v -model = " permissionEditObj.machineIds [ index ] " placeholder = ""
style = "width: 220px; margin-right: 10px;" / >
style = "width: 220px; margin-right: 10px;" / >
< / div >
< / div >
< el -button type = "primary" @click ="UseraddMachineIdInput" > 添加 < / el -button >
< el -button type = "primary" @click ="UseraddMachineIdInput" > {{ t ( ' common.add ' ) }} < / el -button >
< / div >
< / div >
< / e l - f o r m - i t e m >
< / e l - f o r m - i t e m >
< / e l - f o r m >
< / e l - f o r m >
@ -1120,9 +1123,9 @@ onMounted(async function () {
< / div >
< / div >
< template # footer >
< template # footer >
< div >
< div >
< el -button @click ="closeUserEditVisible()" > 取消 < / el -button >
< el -button @click ="closeUserEditVisible()" > {{ t ( ' common.cancel ' ) }} < / el -button >
< el -button type = "primary" @click ="throttledPermissionEdit" >
< el -button type = "primary" @click ="throttledPermissionEdit" >
提交
{ { t ( 'common.submit' ) } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< / div >
< / div >
< / template >
< / template >
@ -1138,15 +1141,15 @@ onMounted(async function () {
< / e l - i c o n >
< / e l - i c o n >
< / e l - c o l >
< / e l - c o l >
< el -col :span ="20" >
< el -col :span ="20" >
< h3 > 提示 < / h3 >
< p class = "dialog-title" > 确认重置该账号密码 ? < / p >
< p class = "dialog-desc" > 重置后密码为 : 123456 , 请通知用户及时修改 < / p >
< h3 > { { t ( 'elmessage.prompt' ) } } < / h3 >
< p class = "dialog-title" > { { t ( 'elmessage.resetPasswordConfirm' ) } } < / p >
< p class = "dialog-desc" > { { t ( 'elmessage.resetPasswordDefault' ) } } < / p >
< / e l - c o l >
< / e l - c o l >
< / e l - r o w >
< / e l - r o w >
< template # footer >
< template # footer >
< div style = "display: flex; justify-content: center; gap: 30px" >
< div style = "display: flex; justify-content: center; gap: 30px" >
< el -button @click ="cancelResetPassword" > 取消 < / el -button >
< el -button type = "primary" @click ="confirmResetPassword" > 确定 < / el -button >
< el -button @click ="cancelResetPassword" > {{ t ( ' common.cancel ' ) }} < / el -button >
< el -button type = "primary" @click ="confirmResetPassword" > {{ t ( ' common.confirm ' ) }} < / el -button >
< / div >
< / div >
< / template >
< / template >
< / e l - d i a l o g >
< / e l - d i a l o g >
@ -1159,7 +1162,7 @@ onMounted(async function () {
} "
} "
@ close = "() => { if (currentStatusRow) currentStatusRow.adminStatus = currentStatusRow.adminStatus === 1 ? 0 : 1 }" >
@ close = "() => { if (currentStatusRow) currentStatusRow.adminStatus = currentStatusRow.adminStatus === 1 ? 0 : 1 }" >
< div class = "status-confirm-content" >
< div class = "status-confirm-content" >
将要 { { currentStatusRow ? . adminStatus === 1 ? '禁用' : '启用' } } 该用户
{ { t ( 'common.will' ) } } { { currentStatusRow ? . adminStatus === 1 ? t ( 'common_list.disable' ) : t ( 'common_list.enable' ) } } { { t ( 'permission.user' ) } }
< br >
< br >
< / div >
< / div >
< template # footer >
< template # footer >
@ -1168,13 +1171,13 @@ onMounted(async function () {
currentStatusRow . adminStatus = currentStatusRow . adminStatus === 1 ? 0 : 1
currentStatusRow . adminStatus = currentStatusRow . adminStatus === 1 ? 0 : 1
ackVisible = false
ackVisible = false
} " >
} " >
取消
{ { t ( 'common.cancel' ) } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< el -button round size = "large" type = "primary" @ click = " ( ) = > {
< el -button round size = "large" type = "primary" @ click = " ( ) = > {
editStatus ( currentStatusRow )
editStatus ( currentStatusRow )
ackVisible = false
ackVisible = false
} " >
} " >
确认
{ { t ( 'common.confirm' ) } }
< / e l - b u t t o n >
< / e l - b u t t o n >
< / div >
< / div >
< / template >
< / template >
@ -1241,4 +1244,4 @@ onMounted(async function () {
margin - bottom : 30 px ;
margin - bottom : 30 px ;
font - size : 48 px ;
font - size : 48 px ;
}
}
< / style >
< / style >