修改国际化配置

This commit is contained in:
lsymicc
2025-06-10 17:33:41 +08:00
parent ee0eeabcc8
commit b80c625e11
15 changed files with 721 additions and 412 deletions

View File

@@ -1026,6 +1026,20 @@ export default {
//缓存列表 //缓存列表
SystemMonitor_CacheList: 'CacheList', SystemMonitor_CacheList: 'CacheList',
//********************KPI分析********************
KPIAnalysis: 'KPI Analysis',
// 入库分析
KPIAnalysis_StockIn: 'StockIn Analysis',
// 出库分析
KPIAnalysis_StockOut: 'StockOut Analysis',
// 巷道分布
KPIAnalysis_Roadway: 'Roadway Distribution',
// 货位分析
KPIAnalysis_CargoSpace: 'Cargo Analysis',
// 库存平面图
KPIAnalysis_CargoPlan: 'Cargo Plan',
// ****************盘点管理****************** // ****************盘点管理******************
inventoryManagement: 'inventoryManagement', inventoryManagement: 'inventoryManagement',
createNewInventoryDocument: 'createNewInventoryDocument', createNewInventoryDocument: 'createNewInventoryDocument',
@@ -1209,7 +1223,7 @@ export default {
deptName: 'DeptName', deptName: 'DeptName',
phoneNumber: 'PhoneNumber', phoneNumber: 'PhoneNumber',
status: 'Status', status: 'Status',
creatTime: 'CreatTime', createTime: 'CreatTime',
operation: 'Operation', operation: 'Operation',
email: 'Email', email: 'Email',
post: 'Post', post: 'Post',
@@ -1245,8 +1259,12 @@ export default {
btnSubmit: 'Submit', btnSubmit: 'Submit',
btnCancel: 'Cancel', btnCancel: 'Cancel',
btnMore: 'More', btnMore: 'More',
btnBack: 'Back',
btnResetPassword: 'Reset Password', btnResetPassword: 'Reset Password',
btnAssignRole: 'Assign Role', btnAssignRole: 'Assign Role',
btnSave: 'Save',
btnClose: 'Close',
btnSelect: 'Select',
//--------------二级窗口标题-------------- //--------------二级窗口标题--------------
addUserItem: 'Add User', addUserItem: 'Add User',
@@ -1285,13 +1303,13 @@ export default {
//---函数:textUploadTitle--- //---函数:textUploadTitle---
textImportResult: 'Result', textImportResult: 'Result',
//--------------操作提示-------------- //--------------操作提示--------------
addSuccessInfo: 'Add Success', addSuccessInfo: 'Add Success',
editSuccessInfo: 'Edit Success', editSuccessInfo: 'Edit Success',
deleteSuccessInfo: 'Delete Success', deleteSuccessInfo: 'Delete Success',
resetPasswordSuccessInfo: 'Reset Password Success', resetPasswordSuccessInfo: 'Reset Password Success',
assignRoleSuccessInfo: 'Assign Role Success', assignRoleSuccessInfo: 'Assign Role Success',
authorizeSuccessInfo: 'Authorize Success',
//--------------校验提示-------------- //--------------校验提示--------------
checkUserNameIsNull: 'UserName cannot be null!', checkUserNameIsNull: 'UserName cannot be null!',
@@ -1300,12 +1318,55 @@ export default {
checkPasswordIsNull: 'Password cannot be null!', checkPasswordIsNull: 'Password cannot be null!',
checkPasswordLength: 'Password length must be between 5-20 characters!', checkPasswordLength: 'Password length must be between 5-20 characters!',
checkPasswordCharacter: "Password cannot contain illegal characters: < > \" \' \\\ |", checkPasswordCharacter: "Password cannot contain illegal characters: < > \" \' \\\ |",
checkEmailIsNull: 'Email cannot be null!',
checkEmailFormat: 'Please enter a valid email address!', checkEmailFormat: 'Please enter a valid email address!',
checkPhoneNumberIsNull: 'Phone number cannot be null!',
checkPhoneNumberFormat: 'Please enter a valid phone number!', checkPhoneNumberFormat: 'Please enter a valid phone number!',
//--------------其他-------------- //--------------其他--------------
lblWidthUserName: '80px', lblWidthUserName: '80px',
lblWidthPhoneNumber: '90px', lblWidthPhoneNumber: '90px',
lblWidthDialog: '110px',
lblWidthPassword: '147px',
//------------------------------------------------------------------------
//分配角色
basInfo:'Basic Infomation',
roleInfo:'Role Info',
roleId:'Role Id',
roleName:'Role Name',
roleKey:'Role Key',
//个人信息
userInfo:'User Info',
roleGroup:'Role Group',
basDetail:'Basic Detail',
resetPwd:'Reset Password',
//基本资料---用户信息
male:'Male',
female:'Female',
//基本资料---修改密码
oldPassword:'Old Password',
newPassword:'New Password',
confirmPassword:'Confirm Password',
placecholderOldPassword:'Enter Old Password',
placecholderNewPassword:'Enter New Password',
placecholderConfirmPassword:'Confirm Password',
checkPasswordIsSame:'Fail:Different passwords entered twice',
oldPasswordIsNull:'Old Password cannot be null',
newPasswordIsNull:'New Password cannot be null',
passwordFormat1:"Password must be 6-20 characters long",
passwordFormat2:"Can't contain special characters:< > \" ' \\\ |",
confirmPasswordIsNull:'Confirm Password cannot be null',
//上传头像
avatarTitle:'Click to upload',
updateAvatar:'Update Avatar',
errorMessage:'The file format is wrong, please upload the image type, such as: JPG, PNG suffix file.'
}, },
@@ -1352,6 +1413,7 @@ export default {
btnMore: 'More', btnMore: 'More',
btnDataPermission: 'Data Permission', btnDataPermission: 'Data Permission',
btnAssignRole: 'Assign Role', btnAssignRole: 'Assign Role',
btnClose: 'Close',
//--------------二级窗口标题-------------- //--------------二级窗口标题--------------
addRoleItem: 'Add Role', addRoleItem: 'Add Role',
@@ -1404,6 +1466,32 @@ export default {
//--------------其他-------------- //--------------其他--------------
lblWidthUserName: '68px', lblWidthUserName: '68px',
lblWidthPhoneNumber: '68px', lblWidthPhoneNumber: '68px',
//-----------------------------------------------------------------
//选择用户
selectUserTitle: 'Select User',
userName: 'UserName',
nickName: 'NickName',
email: 'Email',
phoneNumber: 'PhoneNumber',
textSelectRole:'Select Assigned Role',
placeholderUserName: 'Enter UserName',
placeholderPhoneNumber: 'Enter PhoneNumber',
//分配角色
btnAddUserItem: 'Add User',
btnCancelAuthorizations: 'Cancel Authorizations',
btnCancelAuthorization: 'Cancel Authorization',
//---cancelAuthUser---
textConfirmCancelRole1: 'Sure you want to cancel the "',
textConfirmCancelRole2: '" role for this user?',
cancelSuccessInfo: '取消授权成功',
//---cancelAuthUserAll---
textConfirmCancelSelectedRole: 'Sure you want to uncheck the user authorization data item?',
}, },
@@ -2178,6 +2266,118 @@ export default {
}, },
// ***************KPI分析:入库分析***************
KPIAnalysis_StockIn:{
warehouse: 'Warehouse',
yearMonth: 'Year Month',
placeholderWarehouse: 'Select Warehouse',
placeholderYearMonth: 'Select Year&Month',
btnSearch: 'Search',
btnReset: 'Reset',
textChartStockIn: 'Stock In Analysis',
textYAxisName: 'Value',
lblWidthSearch:'90px'
},
// ***************KPI分析:出库分析***************
KPIAnalysis_StockOut:{
warehouse: 'Warehouse',
yearMonth: 'YearMonth',
placeholderWarehouse: 'Select Warehouse',
placeholderYearMonth: 'Select YearMonth',
btnSearch: 'Search',
btnReset: 'Reset',
textChartStockOut: 'Stock Out Analysis',
textYAxisName: 'Value',
lblWidthSearch:'90px'
},
// ***************KPI分析:巷道分析***************
KPIAnalysis_Roadway:{
warehouse: 'Warehouse',
dateStart: 'DateStart',
dateEnd: 'DateEnd',
placeholderWarehouse: 'Select Warehouse',
placeholderDateStart: 'Select DateStart',
placeholderDateEnd: 'Select DateEnd',
btnSearch: 'Search',
btnReset: 'Reset',
textChartRoadway: 'Roadway Analysis',
textValue: 'Value',
quantityOfStockIn: 'Stock In',
quantityOfStockOut: 'Stock Out',
lblWidthSearch:'90px'
},
// ***************KPI分析:货位分析***************
KPIAnalysis_CargoSpace:{
warehouse: 'Warehouse',
placeholderWarehouse: 'Select Warehouse',
btnSearch: 'Search',
btnReset: 'Reset',
//---handleQuery---
errorGetData: 'Error: Failed to get data',
//---updateChart---
warnInvalidChartData: 'Warning: Invalid chart data',
roadway: 'Roadway',
roadway1: 'Roadway-1',
roadway2: 'Roadway-2',
roadway3: 'Roadway-3',
roadway4: 'Roadway-4',
config:'Serise Configuration',
textChartCargoSpace: 'CargoSpace Analysis',
textValue: 'Value',
lblWidthSearch:'90px'
},
// ***************KPI分析:库存平面图***************
KPIAnalysis_CargoPlan:{
warehouse: 'Warehouse',
raodway: 'Roadway',
row: 'Row',
column: 'Column',
floor: 'Floor',
placeholderWarehouse: 'Select warehouse',
//---updateNormalChart---
title: 'Cargo Plan',
legendEmpty: 'Empty',
legendOccupied: 'Occupied',
legendStockInAssigned: 'Stock In Assigned',
legendStockOutAssigned: 'Stock Out Assigned',
legendStockInException:'Stock In Exception',
legendStockOutException:'Stock Out Exception',
//---formatTooltip---
failGetCargoSpace: 'Fail to get CargoSpace.',
lblWidthSearch:'90px'
},
// ***************出库作业流水查询************* // ***************出库作业流水查询*************
searchViewOutJobFlow: { searchViewOutJobFlow: {

View File

@@ -632,218 +632,6 @@ export default {
}, },
searchViewStockSecure: {
stockId: '库存ID',
cargoSpaceId: '货位ID',
stockStatus: '库存状态',
productStatus: '物料状态',
lotNo: '批次号',
inDate: '入库时间',
backDate: '回流时间',
productGuid: '物料GUID',
quantity: '库存数量',
jobId: '作业ID',
trayCode: '托盘条码',
outQuantity: '出库数量',
stockinDetailId: '入库子单ID',
stockinId: '入库主单',
inType: '入库类型',
inputStockId: '请输入库存ID',
inputCargoSpaceId: '请输入货位ID',
selectStockStatus: '请选择库存状态',
selectProductStatus: '请选择物料状态',
inputLotNo: '请输入批次号',
inputInDate: '请输入入库时间',
inputBackDate: '请输入回流时间',
inputProductGuid: '请输入物料GUID',
inputContent: '请输入内容',
inputJobId: '请输入作业ID',
inputTrayCode: '请输入托盘条码',
inputStockinDetailId: '请输入入库子单ID',
inputStockinId: '请输入入库主单',
selectInType: '请选择入库类型',
confirm: '确定',
cancel: '取消',
stockIdRequired: '库存ID不能为空',
addTitle: '添加安全库存查询',
editTitle: '修改安全库存查询',
addSuccess: '新增成功',
editSuccess: '修改成功',
deleteSuccess: '删除成功',
deleteConfirm: '是否确认删除安全库存查询编号为"{stockIds}"的数据项?'
},
// *************供应商管理***************
BasSupplier: {
// 字段
supplierNo: '供应商编号',
supplierGroupNo: '供应商组编号',
supplierName: '供应商名称',
simpleName: '简称',
useable: '是否可用',
remark: '备注',
supplierArae: '地区分类',
taxpayerRegistrationNumber: '纳税人登记号',
country: '国家',
timeZone: '时区',
dataFormat: '数据格式',
receivingCountry: '收货国家',
taxCategory: '税类',
legalPerson: '法人',
registeredCapital: '注册资金',
address: '企业地址',
contactName: '联系人姓名',
contactNumber: '联系电话',
operation: '操作',
// 输入框提示
inputSupplierNo: '请输入供应商编号',
inputSupplierGroupNo: '请输入供应商组编号',
inputSupplierName: '请输入供应商名称',
inputSimpleName: '请输入简称',
inputUseable: '请输入是否可用',
inputRemark: '请输入备注',
inputSupplierArae: '请输入地区分类',
inputTaxpayerRegistrationNumber: '请输入纳税人登记号',
inputCountry: '请输入国家',
inputTimeZone: '请输入时区',
inputDataFormat: '请输入数据格式',
inputReceivingCountry: '请输入收货国家',
inputTaxCategory: '请输入税类',
inputLegalPerson: '请输入法人',
inputRegisteredCapital: '请输入注册资金',
inputAddress: '请输入企业地址',
inputContactName: '请输入联系人姓名',
inputContactNumber: '请输入联系电话',
// 按钮文本
search: '搜索',
reset: '重置',
add: '新增',
edit: '修改',
delete: '删除',
export: '导出',
confirm: '确定',
cancel: '取消',
// 对话框标题
addTitle: '添加供应商管理',
editTitle: '修改供应商管理',
// 成功提示
addSuccess: '新增成功',
editSuccess: '修改成功',
deleteSuccess: '删除成功',
// 删除确认提示
deleteConfirm: '是否确认删除供应商管理编号为{ids}的数据项?',
// 表单校验提示
fidRequired: 'fid不能为空',
useableRequired: '是否可用不能为空'
},
// *************物料管理***************
BasProduct: {
productId: '物料编码',
inputProductId: '请输入物料编码',
productName: '物料名称',
inputProductName: '请输入物料名称',
spare1: '英文描述',
inputSpare1: '请输入英文描述',
unit: '单位',
inputUnit: '请输入单位',
spare2: '单件净重KG',
inputSpare2: '请输入单件净重',
spare3: '箱号',
inputSpare3: '请输入箱号',
spare4: '包装方式',
inputSpare4: '请输入包装方式',
spare5: '长MM',
inputSpare5: '请输入长度',
spare6: '宽MM',
inputSpare6: '请输入宽度',
spare7: '高MM',
inputSpare7: '请输入高度',
spare8: '体积m³',
inputSpare8: '请输入体积m³',
price: '价格',
inputPrice: '请输入价格',
remark: '描述',
inputRemark: '请输入描述',
search: '搜索',
reset: '重置',
add: '新增',
edit: '修改',
delete: '删除',
export: '导出',
confirm: '确定',
cancel: '取消',
operation: '操作',
addTitle: '添加物料管理',
editTitle: '修改物料管理',
deleteConfirm: '是否确认删除物料管理编号为"{productGuids}"的数据项?',
addSuccess: '新增成功',
editSuccess: '修改成功',
deleteSuccess: '删除成功',
productIdRequired: '物料编码不能为空',
productNameRequired: '物料名称不能为空',
unitRequired: '单位不能为空',
priceRequired: '价格不能为空'
},
// *************供应商管理***************
BasPort: {
portName: '点位名称',
inputPortName: '请输入点位名称',
portType: '点位分类',
inputPortType: '请输入点位分类',
portDesc: '点位描述',
inputPortDesc: '请输入点位描述',
search: '搜索',
reset: '重置',
add: '新增',
edit: '修改',
delete: '删除',
export: '导出',
id: 'ID',
createMan: '创建人',
createTime: '创建时间',
operation: '操作',
confirm: '确定',
cancel: '取消',
addTitle: '添加基础点位',
editTitle: '修改基础点位',
addSuccess: '新增成功',
editSuccess: '修改成功',
deleteSuccess: '删除成功',
deleteConfirm: '是否确认删除基础点位编号为"{ids}"的数据项?',
productCode: '物料编码',
inputProductCode: '请输入物料编码',
productName: '物料名称',
inputProductName: '请输入物料名称',
bindStatus: '是否绑定',
selectBindStatus: '请选择状态',
batchBind: '批量绑定',
batchUnbind: '批量解绑',
productEnDesc: '英文描述',
unit: '单位',
netWeight: '单件净重KG',
boxNo: '箱号',
packWay: '包装方式',
length: '长MM',
width: '宽MM',
height: '高MM',
volume: '体积m³',
price: '价格',
description: '描述',
bindProduct: '绑定物料',
unbindProduct: '删除物料',
bindSuccess: '绑定成功',
unbindSuccess: '解绑成功',
selectProduct: '选择物料'
},
// *************库存操作记录*************** // *************库存操作记录***************
stockRecord: { stockRecord: {
stockId: '库存编码', stockId: '库存编码',
@@ -1028,14 +816,25 @@ export default {
SystemMonitor_ScheduledTask: '定时任务', SystemMonitor_ScheduledTask: '定时任务',
// 数据监控 // 数据监控
SystemMonitor_DataMonitor: '数据监控', SystemMonitor_DataMonitor: '数据监控',
//服务监控 // 服务监控
SystemMonitor_ServiceMonitor: '服务监控', SystemMonitor_ServiceMonitor: '服务监控',
//缓存监控 // 缓存监控
SystemMonitor_CacheMonitor: '缓存监控', SystemMonitor_CacheMonitor: '缓存监控',
//缓存列表 // 缓存列表
SystemMonitor_CacheList: '缓存列表', SystemMonitor_CacheList: '缓存列表',
//********************KPI分析********************
KPIAnalysis: 'KPI分析',
// 入库分析
KPIAnalysis_StockIn: '入库分析',
// 出库分析
KPIAnalysis_StockOut: '出库分析',
// 巷道分布
KPIAnalysis_Roadway: '巷道分布',
// 货位分析
KPIAnalysis_CargoSpace: '货位分析',
// 库存平面图
KPIAnalysis_CargoPlan: '库存平面图',
// ****************盘点管理****************** // ****************盘点管理******************
@@ -1055,20 +854,7 @@ export default {
customerManagement:'客户管理', customerManagement:'客户管理',
supplierManagement:'供应商管理', supplierManagement:'供应商管理',
materialManagement:'物料管理', materialManagement:'物料管理',
basicPointLocation:'基础点位', basicPointLocation:'基础点位'
//*************** 查询统计*************
queryStatistics:'查询统计',
inventoryDetailQuery:'库存明细查询',
inventorySummaryQuery:'库存汇总查询',
inboundDocumentHistory:'入库单据历史',
outboundDocumentHistory:'出库单据历史',
inboundTaskFlow:'入库作业流水',
outboundTaskFlow:'出库作业流水',
flatInventoryFlow:'平库入库流水',
flatOutboundFlow:'平库出库流水',
safetyStockInquiry:'安全库存查询',
warningInventoryInquiry:'预警库存查询'
}, },
@@ -1222,7 +1008,7 @@ export default {
deptName: '部门', deptName: '部门',
phoneNumber: '手机号', phoneNumber: '手机号',
status: '状态', status: '状态',
creatTime: '创建时间', createTime: '创建时间',
operation: '操作', operation: '操作',
email: '邮箱', email: '邮箱',
post: '岗位', post: '岗位',
@@ -1258,8 +1044,12 @@ export default {
btnSubmit: '确定', btnSubmit: '确定',
btnCancel: '取消', btnCancel: '取消',
btnMore: '更多', btnMore: '更多',
btnBack: '返回',
btnResetPassword: '重置密码', btnResetPassword: '重置密码',
btnAssignRole: '分配角色', btnAssignRole: '分配角色',
btnSave: '保存',
btnClose: '关闭',
btnSelect: '选择',
//--------------二级窗口标题-------------- //--------------二级窗口标题--------------
addUserItem: '添加用户', addUserItem: '添加用户',
@@ -1298,13 +1088,13 @@ export default {
//---函数:textUploadTitle--- //---函数:textUploadTitle---
textImportResult: '导入结果', textImportResult: '导入结果',
//--------------操作提示-------------- //--------------操作提示--------------
addSuccessInfo: '新增成功', addSuccessInfo: '新增成功',
editSuccessInfo: '编辑成功', editSuccessInfo: '编辑成功',
deleteSuccessInfo: '删除成功', deleteSuccessInfo: '删除成功',
resetPasswordSuccessInfo: '重置密码成功', resetPasswordSuccessInfo: '重置密码成功',
assignRoleSuccessInfo: '分配角色成功', assignRoleSuccessInfo: '分配角色成功',
authorizeSuccessInfo: '授权成功',
//--------------校验提示-------------- //--------------校验提示--------------
checkUserNameIsNull: '用户名称不能为空', checkUserNameIsNull: '用户名称不能为空',
@@ -1313,13 +1103,55 @@ export default {
checkPasswordIsNull: '密码不能为空', checkPasswordIsNull: '密码不能为空',
checkPasswordLength: '密码长度必须介于5-20个字符', checkPasswordLength: '密码长度必须介于5-20个字符',
checkPasswordCharacter: "不能包含非法字符:< > \" ' \\\ |", checkPasswordCharacter: "不能包含非法字符:< > \" ' \\\ |",
checkEmailIsNull: '邮箱地址不能为空',
checkEmailFormat: '请输入正确的邮箱地址', checkEmailFormat: '请输入正确的邮箱地址',
checkPhoneNumberIsNull: '手机号不能为空',
checkPhoneNumberFormat: '请输入正确的手机号', checkPhoneNumberFormat: '请输入正确的手机号',
//--------------其他-------------- //--------------其他--------------
lblWidthUserName: '68px', lblWidthUserName: '68px',
lblWidthPhoneNumber: '68px', lblWidthPhoneNumber: '68px',
lblWidthDialog: '80px', lblWidthDialog: '80px',
lblWidthPassword: '80px',
//------------------------------------------------------------------------
//分配角色
basInfo:'基本信息',
roleInfo:'角色信息',
roleId:'角色编号',
roleName:'角色名称',
roleKey:'权限字符',
//个人信息
userInfo:'个人信息',
roleGroup:'所属角色',
basDetail:'基本资料',
resetPwd:'修改密码',
//基本资料---用户信息
male:'男',
female:'女',
//基本资料---修改密码
oldPassword:'旧密码',
newPassword:'新密码',
confirmPassword:'确认密码',
placecholderOldPassword:'请输入旧密码',
placecholderNewPassword:'请输入新密码',
placecholderConfirmPassword:'再次确认密码',
checkPasswordIsSame:'两次输入的密码不一致',
oldPasswordIsNull:'旧密码不能为空',
newPasswordIsNull:'新密码不能为空',
passwordFormat1:"长度在 6 到 20 个字符",
passwordFormat2:"不能包含非法字符:< > \" ' \\\ |",
confirmPasswordIsNull:'确认密码不能为空',
//上传头像
avatarTitle:'点击上传头像',
updateAvatar:'修改头像',
errorMessage:'文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。'
}, },
@@ -1366,6 +1198,7 @@ export default {
btnMore: '更多', btnMore: '更多',
btnDataPermission: '数据权限', btnDataPermission: '数据权限',
btnAssignRole: '分配角色', btnAssignRole: '分配角色',
btnClose: '关闭',
//--------------二级窗口标题-------------- //--------------二级窗口标题--------------
addRoleItem: '添加角色', addRoleItem: '添加角色',
@@ -1418,6 +1251,32 @@ export default {
//--------------其他-------------- //--------------其他--------------
lblWidthUserName: '68px', lblWidthUserName: '68px',
lblWidthPhoneNumber: '68px', lblWidthPhoneNumber: '68px',
//-----------------------------------------------------------------
//选择用户
selectUserTitle: '选择用户',
userName: '用户名称',
nickName: '用户昵称',
email: '邮箱',
phoneNumber: '手机号码',
textSelectRole:'请选择要分配的用户',
placeholderUserName: '用户名称',
placeholderPhoneNumber: '手机号码',
//分配角色
btnAddUserItem: '添加用户',
btnCancelAuthorizations: '批量取消授权',
btnCancelAuthorization: '取消授权',
//---cancelAuthUser---
textConfirmCancelRole1: '确认要取消该用户"',
textConfirmCancelRole2: '"角色吗?',
cancelSuccessInfo: '取消授权成功',
//---cancelAuthUserAll---
textConfirmCancelSelectedRole: '是否取消选中用户授权数据项?',
}, },
@@ -2204,6 +2063,117 @@ export default {
}, },
// ***************KPI分析:入库分析***************
KPIAnalysis_StockIn:{
warehouse: '仓库',
yearMonth: '年月',
placeholderWarehouse: '请选择仓库',
placeholderYearMonth: '选择年月',
btnSearch: '查询',
btnReset: '重置',
textChartStockIn: '入库分析',
textYAxisName: '数量',
lblWidthSearch:'68px'
},
// ***************KPI分析:出库分析***************
KPIAnalysis_StockOut:{
warehouse: '仓库',
yearMonth: '年月',
placeholderWarehouse: '请选择仓库',
placeholderYearMonth: '选择年月',
btnSearch: '查询',
btnReset: '重置',
textChartStockOut: '出库分析',
textYAxisName: '数量',
lblWidthSearch:'68px'
},
// ***************KPI分析:巷道分析***************
KPIAnalysis_Roadway:{
warehouse: '仓库',
dateStart: '开始时间',
dateEnd: '结束时间',
placeholderWarehouse: '请选择仓库',
placeholderDateStart: '请选择开始时间',
placeholderDateEnd: '请选择结束时间',
btnSearch: '查询',
btnReset: '重置',
textChartRoadway: '巷道分布分析',
textValue: '数量',
quantityOfStockIn: '入库数量',
quantityOfStockOut: '出库数量',
lblWidthSearch:'68px'
},
// ***************KPI分析:货位分析***************
KPIAnalysis_CargoSpace:{
warehouse: '仓库',
placeholderWarehouse: '请选择仓库',
btnSearch: '查询',
btnReset: '重置',
//---handleQuery---
errorGetData: '获取数据失败',
//---updateChart---
warnInvalidChartData: '无效的图表数据',
roadway: '巷道',
roadway1: '巷道1',
roadway2: '巷道2',
roadway3: '巷道3',
roadway4: '巷道4',
config:'生成的系列配置',
textChartCargoSpace: '货位分析',
textValue: '数量',
lblWidthSearch:'68px'
},
// ***************KPI分析:库存平面图***************
KPIAnalysis_CargoPlan:{
warehouse: '仓库',
raodway: '巷道',
row: '排',
column: '列',
floor: '层',
placeholderWarehouse: '请选择仓库',
//---updateNormalChart---
title: '库位分布平面图',
legendEmpty: '空位',
legendOccupied: '满位',
legendStockInAssigned: '入库已分配',
legendStockOutAssigned: '出库已分配',
legendStockInException:'入库需盘点',
legendStockOutException:'出库需盘点',
//---formatTooltip---
failGetCargoSpace: '获取货位信息失败',
lblWidthSearch:'68px'
},
// ***************出库作业流水查询************* // ***************出库作业流水查询*************

View File

@@ -1,8 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" :label-width="$t('KPIAnalysis_StockIn.lblWidthSearch')">
<el-form-item label="仓库" prop="warehouseId"> <!-- 仓库 -->
<el-select v-model="queryParams.warehouseId" placeholder="请选择仓库" clearable> <el-form-item :label="this.$t('KPIAnalysis_StockIn.warehouse')" prop="warehouseId">
<el-select v-model="queryParams.warehouseId" :placeholder="this.$t('KPIAnalysis_StockIn.placeholderWarehouse')" clearable>
<el-option <el-option
v-for="dict in warehouseOptions" v-for="dict in warehouseOptions"
:key="dict.warehouseId" :key="dict.warehouseId"
@@ -11,19 +12,22 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="年月" prop="yearMonth"> <!-- 年月 -->
<el-form-item :label="this.$t('KPIAnalysis_StockIn.yearMonth')" prop="yearMonth">
<el-date-picker <el-date-picker
v-model="queryParams.yearMonth" v-model="queryParams.yearMonth"
type="month" type="month"
placeholder="选择年月" :placeholder="this.$t('KPIAnalysis_StockIn.placeholderYearMonth')"
value-format="yyyy-MM" value-format="yyyy-MM"
format="yyyy-MM" format="yyyy-MM"
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <!-- 【查询】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('KPIAnalysis_StockIn.btnSearch') }}</el-button>
<!-- 【重置】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('KPIAnalysis_StockIn.btnReset') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -108,7 +112,8 @@ export default {
updateChart() { updateChart() {
const option = { const option = {
title: { title: {
text: '入库均匀分析', // 标题:入库均匀分析
text: this.$t('KPIAnalysis_StockIn.textChartStockIn'),
left: 'center' left: 'center'
}, },
tooltip: { tooltip: {
@@ -127,7 +132,8 @@ export default {
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
name: '数量' // 数量
name: this.$t('KPIAnalysis_StockIn.textYAxisName')
}, },
series: [{ series: [{
data: this.chartData.counts, data: this.chartData.counts,

View File

@@ -1,8 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" :label-width="$t('KPIAnalysis_StockIn.lblWidthSearch')">
<el-form-item label="仓库" prop="warehouseId"> <!-- 仓库 -->
<el-select v-model="queryParams.warehouseId" placeholder="请选择仓库" clearable> <el-form-item :label="$t('KPIAnalysis_StockOut.warehouse')" prop="warehouseId">
<el-select v-model="queryParams.warehouseId" :placeholder="$t('KPIAnalysis_StockOut.placeholderWarehouse')" clearable>
<el-option <el-option
v-for="dict in warehouseOptions" v-for="dict in warehouseOptions"
:key="dict.warehouseId" :key="dict.warehouseId"
@@ -11,19 +12,22 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="年月" prop="yearMonth"> <!-- 年月 -->
<el-form-item :label="$t('KPIAnalysis_StockOut.yearMonth')" prop="yearMonth">
<el-date-picker <el-date-picker
v-model="queryParams.yearMonth" v-model="queryParams.yearMonth"
type="month" type="month"
placeholder="选择年月" :placeholder="$t('KPIAnalysis_StockOut.placeholderYearMonth')"
value-format="yyyy-MM" value-format="yyyy-MM"
format="yyyy-MM" format="yyyy-MM"
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <!-- 【查询】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('KPIAnalysis_StockOut.btnSearch') }}</el-button>
<!-- 【重置】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('KPIAnalysis_StockOut.btnReset') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -108,7 +112,8 @@ export default {
updateChart() { updateChart() {
const option = { const option = {
title: { title: {
text: '出库均匀分析', // 标题:出库均匀分析
text: this.$t('KPIAnalysis_StockOut.textChartStockOut'),
left: 'center' left: 'center'
}, },
tooltip: { tooltip: {
@@ -127,7 +132,8 @@ export default {
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
name: '数量' // 数量
name: this.$t('KPIAnalysis_StockOut.textYAxisName')
}, },
series: [{ series: [{
data: this.chartData.counts, data: this.chartData.counts,

View File

@@ -1,8 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" :label-width="$t('KPIAnalysis_Roadway.lblWidthSearch')">
<el-form-item label="仓库" prop="warehouseId"> <!-- 仓库 -->
<el-select v-model="queryParams.warehouseId" placeholder="请选择仓库" clearable> <el-form-item :label="$t('KPIAnalysis_Roadway.warehouse')" prop="warehouseId">
<el-select v-model="queryParams.warehouseId" :placeholder="$t('KPIAnalysis_Roadway.placeholderWarehouse')" clearable>
<el-option <el-option
v-for="dict in warehouseOptions" v-for="dict in warehouseOptions"
:key="dict.warehouseId" :key="dict.warehouseId"
@@ -11,29 +12,33 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="开始时间" prop="startTime"> <!-- 开始时间 -->
<el-form-item :label="$t('KPIAnalysis_Roadway.dateStart')" prop="startTime">
<el-date-picker <el-date-picker
v-model="queryParams.startTime" v-model="queryParams.startTime"
type="datetime" type="datetime"
placeholder="选择开始时间" :placeholder="$t('KPIAnalysis_Roadway.placeholderDateStart')"
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item label="结束时间" prop="endTime"> <!-- 结束时间 -->
<el-form-item :label="$t('KPIAnalysis_Roadway.dateEnd')" prop="endTime">
<el-date-picker <el-date-picker
v-model="queryParams.endTime" v-model="queryParams.endTime"
type="datetime" type="datetime"
placeholder="选择结束时间" :placeholder="$t('KPIAnalysis_Roadway.placeholderDateEnd')"
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <!-- 【搜索】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('KPIAnalysis_Roadway.btnSearch') }}</el-button>
<!-- 【重置】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('KPIAnalysis_Roadway.btnReset') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -119,7 +124,8 @@ export default {
updateChart() { updateChart() {
const option = { const option = {
title: { title: {
text: '巷道均匀分析', // 巷道均匀分析
text: this.$t('KPIAnalysis_Roadway.textChartRoadway'),
left: 'center' left: 'center'
}, },
tooltip: { tooltip: {
@@ -129,7 +135,8 @@ export default {
} }
}, },
legend: { legend: {
data: ['入库数量', '出库数量'], // 【入库数量】、【出库数量】
data: [this.$t('KPIAnalysis_Roadway.quantityOfStockIn'), this.$t('KPIAnalysis_Roadway.quantityOfStockOut')],
top: '30px' top: '30px'
}, },
xAxis: { xAxis: {
@@ -142,11 +149,13 @@ export default {
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
name: '数量' // 数量
name: this.$t('KPIAnalysis_Roadway.textValue')
}, },
series: [ series: [
{ {
name: '入库数量', // 入库数量
name: this.$t('KPIAnalysis_Roadway.quantityOfStockIn'),
data: this.chartData.inCounts, data: this.chartData.inCounts,
type: 'bar', type: 'bar',
barWidth: '30%', barWidth: '30%',
@@ -159,7 +168,8 @@ export default {
} }
}, },
{ {
name: '出库数量', // 出库数量
name: this.$t('KPIAnalysis_Roadway.quantityOfStockOut'),
data: this.chartData.outCounts, data: this.chartData.outCounts,
type: 'bar', type: 'bar',
barWidth: '30%', barWidth: '30%',

View File

@@ -1,8 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" :label-width="$t('KPIAnalysis_CargoSpace.lblWidthSearch')">
<el-form-item label="仓库" prop="warehouseId"> <!-- 仓库 -->
<el-select v-model="queryParams.warehouseId" placeholder="请选择仓库" clearable> <el-form-item :label="$t('KPIAnalysis_CargoSpace.warehouse')" prop="warehouseId">
<el-select v-model="queryParams.warehouseId" :placeholder="$t('KPIAnalysis_CargoSpace.placeholderWarehouse')" clearable>
<el-option <el-option
v-for="dict in warehouseOptions" v-for="dict in warehouseOptions"
:key="dict.warehouseId" :key="dict.warehouseId"
@@ -12,8 +13,10 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <!-- 【搜索】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('KPIAnalysis_CargoSpace.btnSearch') }}</el-button>
<!-- 【重置】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('KPIAnalysis_CargoSpace.btnReset') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -85,8 +88,9 @@ export default {
this.$message.error(response.msg); this.$message.error(response.msg);
} }
}).catch(error => { }).catch(error => {
console.error('获取数据失败:', error); // 提示:获取数据失败
this.$message.error('获取数据失败'); console.error(this.$t('KPIAnalysis_CargoSpace.errorGetData') + ':', error);
this.$message.error(this.$t('KPIAnalysis_CargoSpace.errorGetData'));
}); });
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
@@ -106,12 +110,14 @@ export default {
updateChart() { updateChart() {
console.log('chartData:', this.chartData); console.log('chartData:', this.chartData);
if (!this.chartData || !this.chartData.data || this.chartData.data.length === 0) { if (!this.chartData || !this.chartData.data || this.chartData.data.length === 0) {
console.warn('无效的图表数据'); // 提示:无效的图表数据
console.warn(this.$t('KPIAnalysis_CargoSpace.warnInvalidChartData'));
return; return;
} }
// 获取数据中所有的巷道字段 // 获取数据中所有的巷道字段
const firstItem = this.chartData.data[0]; const firstItem = this.chartData.data[0];
// 巷道
const roadwayFields = Object.keys(firstItem).filter(key => key.startsWith('巷道')); const roadwayFields = Object.keys(firstItem).filter(key => key.startsWith('巷道'));
// 准备系列配置 // 准备系列配置
@@ -121,6 +127,7 @@ export default {
data: this.chartData.data.map(item => item[roadway]), data: this.chartData.data.map(item => item[roadway]),
barWidth: '30%', barWidth: '30%',
itemStyle: { itemStyle: {
// 巷道1-4
color: roadway === '巷道1' ? '#1890ff' : color: roadway === '巷道1' ? '#1890ff' :
roadway === '巷道2' ? '#52c41a' : roadway === '巷道2' ? '#52c41a' :
roadway === '巷道3' ? '#1890ff' : roadway === '巷道3' ? '#1890ff' :
@@ -131,11 +138,13 @@ export default {
position: 'top' position: 'top'
} }
})); }));
console.log('生成的系列配置:', series); // 提示:生成的系列配置
console.log(this.$t('KPIAnalysis_CargoSpace.config'), series);
const option = { const option = {
title: { title: {
text: '货位状态分析', // 货位状态分析
text: this.$t('KPIAnalysis_CargoSpace.textChartCargoSpace'),
left: 'center' left: 'center'
}, },
tooltip: { tooltip: {
@@ -161,7 +170,8 @@ export default {
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
name: '数量' // 数量
name: this.$t('KPIAnalysis_CargoSpace.textValue')
}, },
series: series series: series
}; };

View File

@@ -2,8 +2,9 @@
<div class="app-container"> <div class="app-container">
<div class="search-box"> <div class="search-box">
<el-form :model="queryParams" ref="queryForm" :inline="true"> <el-form :model="queryParams" ref="queryForm" :inline="true">
<el-form-item label="仓库" prop="warehouseId"> <!-- 仓库 -->
<el-select v-model="queryParams.warehouseId" placeholder="请选择仓库" clearable @change="handleWarehouseChange"> <el-form-item :label="$t('KPIAnalysis_CargoPlan.warehouse')" prop="warehouseId">
<el-select v-model="queryParams.warehouseId" :placeholder="$t('KPIAnalysis_CargoPlan.placeholderWarehouse')" clearable @change="handleWarehouseChange">
<el-option <el-option
v-for="dict in warehouseOptions" v-for="dict in warehouseOptions"
:key="dict.warehouseId" :key="dict.warehouseId"
@@ -12,12 +13,14 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="巷道"> <!-- 巷道 -->
<el-form-item :label="$t('KPIAnalysis_CargoPlan.raodway')">
<el-select v-model="queryParams.roadwayId" style="width: 150px" @change="handleRoadwayChange"> <el-select v-model="queryParams.roadwayId" style="width: 150px" @change="handleRoadwayChange">
<el-option v-for="item in roadwayOptions" :key="item.value" :label="item.label" :value="item.value"/> <el-option v-for="item in roadwayOptions" :key="item.value" :label="item.label" :value="item.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="排"> <!-- 排 -->
<el-form-item :label="$t('KPIAnalysis_CargoPlan.row')">
<el-select v-model="queryParams.thePlatoon" style="width: 150px" @change="handlePlatoonChange"> <el-select v-model="queryParams.thePlatoon" style="width: 150px" @change="handlePlatoonChange">
<el-option v-for="item in platoonOptions" :key="item.value" :label="item.label" :value="item.value"/> <el-option v-for="item in platoonOptions" :key="item.value" :label="item.label" :value="item.value"/>
</el-select> </el-select>
@@ -35,6 +38,7 @@
import * as echarts from 'echarts' import * as echarts from 'echarts'
import {getRoadways, getPlatoons, getChartData, getChartMag} from "@/api/kpi/spacePlan" import {getRoadways, getPlatoons, getChartData, getChartMag} from "@/api/kpi/spacePlan"
import {listWarehouse} from "@/api/bas/warehouse"; import {listWarehouse} from "@/api/bas/warehouse";
import VueI18n from 'vue-i18n';
export default { export default {
name: 'SpacePlan', name: 'SpacePlan',
@@ -169,8 +173,10 @@ this.getWarehouseList()
} }
}, },
title: { title: {
text: '库位分布平面图', // 标题:库位分布平面图
subtext: this.queryParams.thePlatoon + '排' text: this.$t('KPIAnalysis_CargoPlan.title'),
// 子标题:排
subtext: this.queryParams.thePlatoon + this.$t('KPIAnalysis_CargoPlan.row')
}, },
grid: { grid: {
width: '90%', width: '90%',
@@ -202,27 +208,33 @@ this.getWarehouseList()
legend: { legend: {
data: [ data: [
{ {
name: '空位', // 图例:空位
name: this.$t('KPIAnalysis_CargoPlan.legendEmpty'),
itemStyle: { color: '#AEEEEE' } itemStyle: { color: '#AEEEEE' }
}, },
{ {
name: '满位', // 图例:满位
name: this.$t('KPIAnalysis_CargoPlan.legendOccupied'),
itemStyle: { color: '#FF9900' } itemStyle: { color: '#FF9900' }
}, },
{ {
name: '入库分配', // 图例:入库分配
name: this.$t('KPIAnalysis_CargoPlan.legendStockInAssigned'),
itemStyle: { color: '#FFFF00' } itemStyle: { color: '#FFFF00' }
}, },
{ {
name: '出库分配', // 图例:出库分配
itemStyle: { color: '#00CC00' } name: this.$t('KPIAnalysis_CargoPlan.legendStockOutAssigned'),
},
{
name: '入库需盘点',
itemStyle: { color: '#FF0000' } itemStyle: { color: '#FF0000' }
}, },
{ {
name: '出库需盘点', // 图例:入库需盘点
name: this.$t('KPIAnalysis_CargoPlan.legendStockInException'),
itemStyle: { color: '#FF0000' }
},
{
// 图例:出库需盘点
name: this.$t('KPIAnalysis_CargoPlan.legendStockOutException'),
itemStyle: { color: '#0000FF' } itemStyle: { color: '#0000FF' }
} }
], ],
@@ -232,7 +244,8 @@ this.getWarehouseList()
}, },
series: [ series: [
{ {
name: '空位', // 空位
name: this.$t('KPIAnalysis_CargoPlan.legendEmpty'),
type: 'heatmap', type: 'heatmap',
data: this.chartData.empty, data: this.chartData.empty,
itemStyle: { itemStyle: {
@@ -241,7 +254,8 @@ this.getWarehouseList()
} }
}, },
{ {
name: '满位', // 满位
name: this.$t('KPIAnalysis_CargoPlan.legendOccupied'),
type: 'heatmap', type: 'heatmap',
data: this.chartData.full, data: this.chartData.full,
itemStyle: { itemStyle: {
@@ -250,7 +264,8 @@ this.getWarehouseList()
} }
}, },
{ {
name: '入库分配', // 入库分配
name: this.$t('KPIAnalysis_CargoPlan.legendStockInAssigned'),
type: 'heatmap', type: 'heatmap',
data: this.chartData.inAllot, data: this.chartData.inAllot,
itemStyle: { itemStyle: {
@@ -259,7 +274,8 @@ this.getWarehouseList()
} }
}, },
{ {
name: '出库分配', // 出库分配
name: this.$t('KPIAnalysis_CargoPlan.legendStockOutAssigned'),
type: 'heatmap', type: 'heatmap',
data: this.chartData.outAllot, data: this.chartData.outAllot,
itemStyle: { itemStyle: {
@@ -268,7 +284,8 @@ this.getWarehouseList()
} }
}, },
{ {
name: '入库需盘点', // 入库需盘点
name: this.$t('KPIAnalysis_CargoPlan.legendStockInException'),
type: 'heatmap', type: 'heatmap',
data: this.chartData.inCheck, data: this.chartData.inCheck,
itemStyle: { itemStyle: {
@@ -277,7 +294,8 @@ this.getWarehouseList()
} }
}, },
{ {
name: '出库需盘点', // 出库需盘点
name: this.$t('KPIAnalysis_CargoPlan.legendStockOutException'),
type: 'heatmap', type: 'heatmap',
data: this.chartData.outCheck, data: this.chartData.outCheck,
itemStyle: { itemStyle: {
@@ -302,8 +320,15 @@ this.getWarehouseList()
// 格式化普通仓库提示信息 // 格式化普通仓库提示信息
formatTooltip(params) { formatTooltip(params) {
if (params.seriesName !== '满位') { if (params.seriesName !== '满位') {
// 排
if (this.$i18n.locale ==='zh-cn') {
return params.seriesName + '<br>' + this.queryParams.thePlatoon + '排' + (params.data[0] + 1) + '列' + (params.data[1] + 1) + '层'; return params.seriesName + '<br>' + this.queryParams.thePlatoon + '排' + (params.data[0] + 1) + '列' + (params.data[1] + 1) + '层';
} }
else{
return params.seriesName + '<br>' + this.$t('KPIAnalysis_CargoPlan.row') + ':' + this.queryParams.thePlatoon + ' ' + this.$t('KPIAnalysis_CargoPlan.column') + ':' + (params.data[0] + 1) + ' ' + this.$t('KPIAnalysis_CargoPlan.floor') + ': ' + (params.data[1] + 1);
}
}
const returnData = { const returnData = {
"thePlatoon": this.queryParams.thePlatoon, "thePlatoon": this.queryParams.thePlatoon,
@@ -347,7 +372,8 @@ this.getWarehouseList()
}); });
}) })
.catch(error => { .catch(error => {
console.error('获取货位信息失败:', error); // 提示:获取货位信息失败
console.error(this.$t('KPIAnalysis_CargoPlan.failGetCargoSpace') + ':', error);
}) })
.finally(() => { .finally(() => {
// 清除加载状态 // 清除加载状态

View File

@@ -1,32 +1,39 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 搜索表单 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="用户名称" prop="userName"> <!-- 用户名称:请输入用户名称 -->
<el-form-item :label="$t('systemManagement_RoleManagement.userName')" prop="userName">
<el-input <el-input
v-model="queryParams.userName" v-model="queryParams.userName"
placeholder="请输入用户名称" :placeholder="$t('systemManagement_RoleManagement.placeholderUserName')"
clearable clearable
style="width: 240px" style="width: 240px"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <!-- 手机号码:请输入手机号码 -->
<el-form-item :label="$t('systemManagement_RoleManagement.phoneNumber')" prop="phonenumber">
<el-input <el-input
v-model="queryParams.phonenumber" v-model="queryParams.phonenumber"
placeholder="请输入手机号码" :placeholder="$t('systemManagement_RoleManagement.placeholderUserName')"
clearable clearable
style="width: 240px" style="width: 240px"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <!-- 搜索按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('systemManagement_RoleManagement.btnSearch') }}</el-button>
<!-- 重置按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('systemManagement_RoleManagement.btnReset') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<!-- 添加用户按钮 -->
<el-button <el-button
type="primary" type="primary"
plain plain
@@ -34,9 +41,10 @@
size="mini" size="mini"
@click="openSelectUser" @click="openSelectUser"
v-hasPermi="['system:role:add']" v-hasPermi="['system:role:add']"
>添加用户</el-button> >{{ $t('systemManagement_RoleManagement.btnAddUserItem') }}</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<!-- 批量取消授权按钮 -->
<el-button <el-button
type="danger" type="danger"
plain plain
@@ -45,49 +53,60 @@
:disabled="multiple" :disabled="multiple"
@click="cancelAuthUserAll" @click="cancelAuthUserAll"
v-hasPermi="['system:role:remove']" v-hasPermi="['system:role:remove']"
>批量取消授权</el-button> >{{ $t('systemManagement_RoleManagement.btnCancelAuthorizations') }}</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<!-- 关闭按钮 -->
<el-button <el-button
type="warning" type="warning"
plain plain
icon="el-icon-close" icon="el-icon-close"
size="mini" size="mini"
@click="handleClose" @click="handleClose"
>关闭</el-button> >{{ $t('systemManagement_RoleManagement.btnClose') }}</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<!-- 用户列表表格 -->
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" /> <!-- 用户名称列 -->
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" /> <el-table-column :label="$t('systemManagement_RoleManagement.userName')" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" /> <!-- 用户昵称列 -->
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" /> <el-table-column :label="$t('systemManagement_RoleManagement.nickName')" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status"> <!-- 邮箱列 -->
<el-table-column :label="$t('systemManagement_RoleManagement.email')" prop="email" :show-overflow-tooltip="true" />
<!-- 手机号列 -->
<el-table-column :label="$t('systemManagement_RoleManagement.phoneNumber')" prop="phonenumber" :show-overflow-tooltip="true" />
<!-- 状态列 -->
<el-table-column :label="$t('systemManagement_RoleManagement.status')" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <!-- 创建时间列 -->
<el-table-column :label="$t('systemManagement_RoleManagement.createTime')" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <!-- 操作列 -->
<el-table-column :label="$t('systemManagement_RoleManagement.operation')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 取消授权按钮 -->
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-circle-close" icon="el-icon-circle-close"
@click="cancelAuthUser(scope.row)" @click="cancelAuthUser(scope.row)"
v-hasPermi="['system:role:remove']" v-hasPermi="['system:role:remove']"
>取消授权</el-button> >{{ $t('systemManagement_RoleManagement.btnCancelAuthorization') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 -->
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"
@@ -95,6 +114,8 @@
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<!-- 引入选择用户弹窗组件 -->
<select-user ref="select" :roleId="queryParams.roleId" @ok="handleQuery" /> <select-user ref="select" :roleId="queryParams.roleId" @ok="handleQuery" />
</div> </div>
</template> </template>
@@ -109,19 +130,19 @@ export default {
components: { selectUser }, components: { selectUser },
data() { data() {
return { return {
// 遮罩层 // 遮罩层加载状态
loading: true, loading: true,
// 选中用户组 // 选中的用户ID集合
userIds: [], userIds: [],
// 非多个禁用 // 是否禁用批量操作
multiple: true, multiple: true,
// 显示搜索条件 // 是否显示搜索区域
showSearch: true, showSearch: true,
// 总条数 // 总条数
total: 0, total: 0,
// 用户表格数据 // 用户表格数据
userList: [], userList: [],
// 查询参数 // 查询参数对象
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
@@ -132,6 +153,7 @@ export default {
} }
}, },
created() { created() {
// 获取路由传参中的角色ID
const roleId = this.$route.params && this.$route.params.roleId const roleId = this.$route.params && this.$route.params.roleId
if (roleId) { if (roleId) {
this.queryParams.roleId = roleId this.queryParams.roleId = roleId
@@ -149,7 +171,7 @@ export default {
} }
) )
}, },
// 返回按钮 // 返回按钮点击事件
handleClose() { handleClose() {
const obj = { path: "/system/role" } const obj = { path: "/system/role" }
this.$tab.closeOpenPage(obj) this.$tab.closeOpenPage(obj)
@@ -164,7 +186,7 @@ export default {
this.resetForm("queryForm") this.resetForm("queryForm")
this.handleQuery() this.handleQuery()
}, },
// 多选框选中数据 // 多选框选中数据变化时触发
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.userIds = selection.map(item => item.userId) this.userIds = selection.map(item => item.userId)
this.multiple = !selection.length this.multiple = !selection.length
@@ -176,22 +198,26 @@ export default {
/** 取消授权按钮操作 */ /** 取消授权按钮操作 */
cancelAuthUser(row) { cancelAuthUser(row) {
const roleId = this.queryParams.roleId const roleId = this.queryParams.roleId
this.$modal.confirm('确认要取消该用户"' + row.userName + '"角色吗?').then(function() { // 提示:确认要取消该用户 + row.userName + '"角色吗?
this.$modal.confirm(this.$t('systemManagement_RoleManagement.textConfirmCancelRole1') + row.userName + this.$t('systemManagement_RoleManagement.textConfirmCancelRole2')).then(function() {
return authUserCancel({ userId: row.userId, roleId: roleId }) return authUserCancel({ userId: row.userId, roleId: roleId })
}).then(() => { }).then(() => {
this.getList() this.getList()
this.$modal.msgSuccess("取消授权成功") // 提示:取消授权成功
this.$modal.msgSuccess(this.$t('systemManagement_RoleManagement.cancelSuccessInfo'))
}).catch(() => {}) }).catch(() => {})
}, },
/** 批量取消授权按钮操作 */ /** 批量取消授权按钮操作 */
cancelAuthUserAll(row) { cancelAuthUserAll(row) {
const roleId = this.queryParams.roleId const roleId = this.queryParams.roleId
const userIds = this.userIds.join(",") const userIds = this.userIds.join(",")
this.$modal.confirm('是否取消选中用户授权数据项?').then(function() { // 是否取消选中用户授权数据项?
this.$modal.confirm(this.$t('systemManagement_RoleManagement.textConfirmCancelSelectedRole')).then(function() {
return authUserCancelAll({ roleId: roleId, userIds: userIds }) return authUserCancelAll({ roleId: roleId, userIds: userIds })
}).then(() => { }).then(() => {
this.getList() this.getList()
this.$modal.msgSuccess("取消授权成功") // 取消授权成功
this.$modal.msgSuccess(this.$t('systemManagement_RoleManagement.cancelSuccessInfo'))
}).catch(() => {}) }).catch(() => {})
} }
} }

View File

@@ -1,41 +1,52 @@
<template> <template>
<!-- 授权用户 --> <!-- 授权用户 -->
<el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body> <!-- 选择用户 -->
<el-dialog :title="$t('systemManagement_RoleManagement.selectUserTitle')" :visible.sync="visible" width="800px" top="5vh" append-to-body>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
<el-form-item label="用户名称" prop="userName"> <!-- 用户名称 -->
<el-form-item :label="$t('systemManagement_RoleManagement.userName')" prop="userName">
<el-input <el-input
v-model="queryParams.userName" v-model="queryParams.userName"
placeholder="请输入用户名称" :placeholder="$t('systemManagement_RoleManagement.placeholderUserName')"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <!-- 手机号码 -->
<el-form-item :label="$t('systemManagement_RoleManagement.phoneNumber')" prop="phonenumber">
<el-input <el-input
v-model="queryParams.phonenumber" v-model="queryParams.phonenumber"
placeholder="请输入手机号码" :placeholder="$t('systemManagement_RoleManagement.placeholderPhoneNumber')"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <!-- 【查询】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('systemManagement_RoleManagement.btnSearch') }}</el-button>
<!-- 【重置】按钮 -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('systemManagement_RoleManagement.btnReset') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row> <el-row>
<el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange" height="260px"> <el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange" height="260px">
<el-table-column type="selection" width="55"></el-table-column> <el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" /> <!-- 用户名称 -->
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" /> <el-table-column :label="$t('systemManagement_RoleManagement.userName')" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" /> <!-- 用户昵称 -->
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" /> <el-table-column :label="$t('systemManagement_RoleManagement.nickName')" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status"> <!-- 邮箱 -->
<el-table-column :label="$t('systemManagement_RoleManagement.email')" prop="email" :show-overflow-tooltip="true" />
<!-- 手机号码 -->
<el-table-column :label="$t('systemManagement_RoleManagement.phoneNumber')" prop="phonenumber" :show-overflow-tooltip="true" />
<!-- 状态 -->
<el-table-column :label="$t('systemManagement_RoleManagement.status')" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <!-- 创建时间 -->
<el-table-column :label="$t('systemManagement_RoleManagement.createTime')" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
@@ -50,8 +61,10 @@
/> />
</el-row> </el-row>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSelectUser">确 定</el-button> <!-- 【确定】按钮 -->
<el-button @click="visible = false">取 消</el-button> <el-button type="primary" @click="handleSelectUser">{{ $t('systemManagement_RoleManagement.btnSubmit') }}</el-button>
<!-- 【取消】按钮 -->
<el-button @click="visible = false">{{ $t('systemManagement_RoleManagement.btnCancel') }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
@@ -122,7 +135,8 @@ export default {
const roleId = this.queryParams.roleId const roleId = this.queryParams.roleId
const userIds = this.userIds.join(",") const userIds = this.userIds.join(",")
if (userIds == "") { if (userIds == "") {
this.$modal.msgError("请选择要分配的用户") // 提示:请选择要分配的用户
this.$modal.msgError(this.$t('systemManagement_RoleManagement.textSelectRole'))
return return
} }
authUserSelectAll({ roleId: roleId, userIds: userIds }).then(res => { authUserSelectAll({ roleId: roleId, userIds: userIds }).then(res => {

View File

@@ -1,22 +1,22 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<h4 class="form-header h4">基本信息</h4> <h4 class="form-header h4">{{ $t('systemManagement_UserManagement.basInfo') }}</h4>
<el-form ref="form" :model="form" label-width="80px"> <el-form ref="form" :model="form" label-width="80px">
<el-row> <el-row>
<el-col :span="8" :offset="2"> <el-col :span="8" :offset="2">
<el-form-item label="用户昵称" prop="nickName"> <el-form-item :label="$t('systemManagement_UserManagement.nickName')" prop="nickName">
<el-input v-model="form.nickName" disabled /> <el-input v-model="form.nickName" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" :offset="2"> <el-col :span="8" :offset="2">
<el-form-item label="登录账号" prop="userName"> <el-form-item :label="$t('systemManagement_UserManagement.userName')" prop="userName">
<el-input v-model="form.userName" disabled /> <el-input v-model="form.userName" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<!-- 角色信息 -->
<h4 class="form-header h4">角色信息</h4> <h4 class="form-header h4">{{ $t('systemManagement_UserManagement.roleInfo') }}</h4>
<el-table v-loading="loading" :row-key="getRowKey" @row-click="clickRow" ref="table" @selection-change="handleSelectionChange" :data="roles.slice((pageNum-1)*pageSize,pageNum*pageSize)"> <el-table v-loading="loading" :row-key="getRowKey" @row-click="clickRow" ref="table" @selection-change="handleSelectionChange" :data="roles.slice((pageNum-1)*pageSize,pageNum*pageSize)">
<el-table-column label="序号" type="index" align="center"> <el-table-column label="序号" type="index" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
@@ -24,10 +24,14 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column type="selection" :reserve-selection="true" :selectable="checkSelectable" width="55" /> <el-table-column type="selection" :reserve-selection="true" :selectable="checkSelectable" width="55" />
<el-table-column label="角色编号" align="center" prop="roleId" /> <!-- 角色编号 -->
<el-table-column label="角色名称" align="center" prop="roleName" /> <el-table-column :label="$t('systemManagement_UserManagement.roleId')" align="center" prop="roleId" />
<el-table-column label="权限字符" align="center" prop="roleKey" /> <!-- 角色名称 -->
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column :label="$t('systemManagement_UserManagement.roleName')" align="center" prop="roleName" />
<!-- 权限字符 -->
<el-table-column :label="$t('systemManagement_UserManagement.roleKey')" align="center" prop="roleKey" />
<!-- 创建时间 -->
<el-table-column :label="$t('systemManagement_UserManagement.createTime')" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
@@ -38,8 +42,10 @@
<el-form label-width="100px"> <el-form label-width="100px">
<el-form-item style="text-align: center;margin-left:-120px;margin-top:30px;"> <el-form-item style="text-align: center;margin-left:-120px;margin-top:30px;">
<el-button type="primary" @click="submitForm()">提交</el-button> <!-- 【提交】按钮 -->
<el-button @click="close()">返回</el-button> <el-button type="primary" @click="submitForm()">{{ $t('systemManagement_UserManagement.btnSubmit') }}</el-button>
<!-- 【返回】按钮 -->
<el-button @click="close()">{{ $t('systemManagement_UserManagement.btnBack') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@@ -109,7 +115,8 @@ export default {
const userId = this.form.userId const userId = this.form.userId
const roleIds = this.roleIds.join(",") const roleIds = this.roleIds.join(",")
updateAuthRole({ userId: userId, roleIds: roleIds }).then((response) => { updateAuthRole({ userId: userId, roleIds: roleIds }).then((response) => {
this.$modal.msgSuccess("授权成功") // 授权成功
this.$modal.msgSuccess(this.$t('systemManagement_UserManagement.authorizeSuccessInfo'))
this.close() this.close()
}) })
}, },

View File

@@ -34,7 +34,7 @@
</el-form-item> </el-form-item>
<el-form> <el-form>
<!-- 创建时间 --> <!-- 创建时间 -->
<el-form-item :label="$t('systemManagement_UserManagement.creatTime')"> <el-form-item :label="$t('systemManagement_UserManagement.createTime')">
<el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" :start-placeholder="$t('systemManagement_UserManagement.placeholderDateStart')" :end-placeholder="$t('systemManagement_UserManagement.placeholderDateEnd')"></el-date-picker> <el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" :start-placeholder="$t('systemManagement_UserManagement.placeholderDateStart')" :end-placeholder="$t('systemManagement_UserManagement.placeholderDateEnd')"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@@ -91,7 +91,7 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- 创建时间 --> <!-- 创建时间 -->
<el-table-column :label="$t('systemManagement_UserManagement.creatTime')" align="center" prop="createTime" v-if="columns[6].visible" width="160"> <el-table-column :label="$t('systemManagement_UserManagement.createTime')" align="center" prop="createTime" v-if="columns[6].visible" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
@@ -110,7 +110,7 @@
<!-- 人工操作---更多---【重置密码】按钮 --> <!-- 人工操作---更多---【重置密码】按钮 -->
<el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">{{ $t('systemManagement_UserManagement.btnResetPassword') }}</el-dropdown-item> <el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">{{ $t('systemManagement_UserManagement.btnResetPassword') }}</el-dropdown-item>
<!-- 人工操作---更多---【分配角色】按钮 --> <!-- 人工操作---更多---【分配角色】按钮 -->
<el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">{{ $t('systemManagement_UserManagement.AssignRole') }}</el-dropdown-item> <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">{{ $t('systemManagement_UserManagement.btnAssignRole') }}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
@@ -124,8 +124,8 @@
</el-row> </el-row>
<!-- 添加或修改用户配置对话框 --> <!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="650px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" :label-width="$t('systemManagement_UserManagement.lblWidthDialog')">
<el-row> <el-row>
<!-- 用户昵称 --> <!-- 用户昵称 -->
<el-col :span="12"> <el-col :span="12">

View File

@@ -4,7 +4,8 @@
<el-col :span="6" :xs="24"> <el-col :span="6" :xs="24">
<el-card class="box-card"> <el-card class="box-card">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>个人信息</span> <!-- 个人信息 -->
<span>{{ $t('systemManagement_UserManagement.userInfo') }}</span>
</div> </div>
<div> <div>
<div class="text-center"> <div class="text-center">
@@ -12,27 +13,33 @@
</div> </div>
<ul class="list-group list-group-striped"> <ul class="list-group list-group-striped">
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="user" />用户名称 <!-- 用户名称 -->
<svg-icon icon-class="user" />{{ $t('systemManagement_UserManagement.userName') }}
<div class="pull-right">{{ user.userName }}</div> <div class="pull-right">{{ user.userName }}</div>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="phone" />手机号码 <!-- 手机号码 -->
<svg-icon icon-class="phone" />{{ $t('systemManagement_UserManagement.phoneNumber') }}
<div class="pull-right">{{ user.phonenumber }}</div> <div class="pull-right">{{ user.phonenumber }}</div>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="email" />用户邮箱 <!-- 邮箱 -->
<svg-icon icon-class="email" />{{ $t('systemManagement_UserManagement.email') }}
<div class="pull-right">{{ user.email }}</div> <div class="pull-right">{{ user.email }}</div>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="tree" />所属部门 <!-- 部门 -->
<svg-icon icon-class="tree" />{{ $t('systemManagement_UserManagement.deptName') }}
<div class="pull-right" v-if="user.dept">{{ user.dept.deptName }} / {{ postGroup }}</div> <div class="pull-right" v-if="user.dept">{{ user.dept.deptName }} / {{ postGroup }}</div>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="peoples" />所属角色 <!-- 角色 -->
<svg-icon icon-class="peoples" />{{ $t('systemManagement_UserManagement.roleGroup') }}
<div class="pull-right">{{ roleGroup }}</div> <div class="pull-right">{{ roleGroup }}</div>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="date" />创建日期 <!-- 创建日期 -->
<svg-icon icon-class="date" />{{ $t('systemManagement_UserManagement.createTime') }}
<div class="pull-right">{{ user.createTime }}</div> <div class="pull-right">{{ user.createTime }}</div>
</li> </li>
</ul> </ul>
@@ -42,13 +49,16 @@
<el-col :span="18" :xs="24"> <el-col :span="18" :xs="24">
<el-card> <el-card>
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>基本资料</span> <!-- 基本资料 -->
<span>{{ $t('systemManagement_UserManagement.userInfo') }}</span>
</div> </div>
<el-tabs v-model="activeTab"> <el-tabs v-model="activeTab">
<el-tab-pane label="基本资料" name="userinfo"> <!-- 基本资料 -->
<el-tab-pane :label="$t('systemManagement_UserManagement.userInfo')" name="userinfo">
<userInfo :user="user" /> <userInfo :user="user" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="修改密码" name="resetPwd"> <!-- 修改密码 -->
<el-tab-pane :label="$t('systemManagement_UserManagement.resetPwd')" name="resetPwd">
<resetPwd /> <resetPwd />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>

View File

@@ -1,17 +1,22 @@
<template> <template>
<el-form ref="form" :model="user" :rules="rules" label-width="80px"> <el-form ref="form" :model="user" :rules="rules" :label-width="$t('systemManagement_UserManagement.lblWidthPassword')">
<el-form-item label="旧密码" prop="oldPassword"> <!-- 旧密码 -->
<el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password/> <el-form-item :label="$t('systemManagement_UserManagement.oldPassword')" prop="oldPassword">
<el-input v-model="user.oldPassword" :placeholder="$t('systemManagement_UserManagement.placecholderOldPassword')" type="password" show-password/>
</el-form-item> </el-form-item>
<el-form-item label="新密码" prop="newPassword"> <!-- 新密码 -->
<el-input v-model="user.newPassword" placeholder="请输入新密码" type="password" show-password/> <el-form-item :label="$t('systemManagement_UserManagement.newPassword')" prop="newPassword">
<el-input v-model="user.newPassword" :placeholder="$t('systemManagement_UserManagement.placecholderNewPassword')" type="password" show-password/>
</el-form-item> </el-form-item>
<el-form-item label="确认密码" prop="confirmPassword"> <!-- 确认密码 -->
<el-input v-model="user.confirmPassword" placeholder="请确认新密码" type="password" show-password/> <el-form-item :label="$t('systemManagement_UserManagement.confirmPassword')" prop="confirmPassword">
<el-input v-model="user.confirmPassword" :placeholder="$t('systemManagement_UserManagement.placecholderConfirmPassword')" type="password" show-password/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" size="mini" @click="submit">保存</el-button> <!-- 【保存】按钮 -->
<el-button type="danger" size="mini" @click="close">关闭</el-button> <el-button type="primary" size="mini" @click="submit">{{ $t('systemManagement_UserManagement.btnSave') }}</el-button>
<!-- 【关闭】按钮 -->
<el-button type="danger" size="mini" @click="close">{{ $t('systemManagement_UserManagement.btnClose') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
@@ -23,7 +28,8 @@ export default {
data() { data() {
const equalToPassword = (rule, value, callback) => { const equalToPassword = (rule, value, callback) => {
if (this.user.newPassword !== value) { if (this.user.newPassword !== value) {
callback(new Error("两次输入的密码不一致")) // 两次输入的密码不一致
callback(new Error(this.$t('systemManagement_UserManagement.checkPasswordIsSame')))
} else { } else {
callback() callback()
} }
@@ -37,15 +43,20 @@ export default {
// 表单校验 // 表单校验
rules: { rules: {
oldPassword: [ oldPassword: [
{ required: true, message: "旧密码不能为空", trigger: "blur" } // 旧密码不能为空
{ required: true, message: this.$t('systemManagement_UserManagement.oldPasswordIsNull'), trigger: "blur" }
], ],
newPassword: [ newPassword: [
{ required: true, message: "新密码不能为空", trigger: "blur" }, // 新密码不能为空
{ min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" }, { required: true, message: this.$t('systemManagement_UserManagement.newPasswordIsNull'), trigger: "blur" },
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" } // 长度在 6 到 20 个字符
{ min: 6, max: 20, message: this.$t('systemManagement_UserManagement.passwordFormat1'), trigger: "blur" },
// 不能包含非法字符:< > \" ' \\\ |
{ pattern: /^[^<>"'|\\]+$/, message: this.$t('systemManagement_UserManagement.passwordFormat2'), trigger: "blur" }
], ],
confirmPassword: [ confirmPassword: [
{ required: true, message: "确认密码不能为空", trigger: "blur" }, // 校验:确认密码不能为空
{ required: true, message: this.$t('systemManagement_UserManagement.confirmPasswordIsNull'), trigger: "blur" },
{ required: true, validator: equalToPassword, trigger: "blur" } { required: true, validator: equalToPassword, trigger: "blur" }
] ]
} }
@@ -56,7 +67,8 @@ export default {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => { updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => {
this.$modal.msgSuccess("修改成功") // 提示信息:修改成功
this.$modal.msgSuccess(this.$t('systemManagement_UserManagement.editSuccessInfo'))
}) })
} }
}) })

View File

@@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div> <div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" :title="$t('systemManagement_UserManagement.avatarTitle')" class="img-circle img-lg" /></div>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog"> <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog">
<el-row> <el-row>
<el-col :xs="24" :md="12" :style="{height: '350px'}"> <el-col :xs="24" :md="12" :style="{height: '350px'}">
@@ -28,7 +28,7 @@
<el-col :lg="2" :sm="3" :xs="3"> <el-col :lg="2" :sm="3" :xs="3">
<el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload"> <el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
<el-button size="small"> <el-button size="small">
选择 {{ $t('systemManagement_UserManagement.btnSelect') }}
<i class="el-icon-upload el-icon--right"></i> <i class="el-icon-upload el-icon--right"></i>
</el-button> </el-button>
</el-upload> </el-upload>
@@ -46,7 +46,7 @@
<el-button icon="el-icon-refresh-right" size="small" @click="rotateRight()"></el-button> <el-button icon="el-icon-refresh-right" size="small" @click="rotateRight()"></el-button>
</el-col> </el-col>
<el-col :lg="{span: 2, offset: 6}" :sm="2" :xs="2"> <el-col :lg="{span: 2, offset: 6}" :sm="2" :xs="2">
<el-button type="primary" size="small" @click="uploadImg()">提 交</el-button> <el-button type="primary" size="small" @click="uploadImg()">{{ $t('systemManagement_UserManagement.btnSubmit') }}</el-button>
</el-col> </el-col>
</el-row> </el-row>
</el-dialog> </el-dialog>
@@ -68,7 +68,7 @@ export default {
// 是否显示cropper // 是否显示cropper
visible: false, visible: false,
// 弹出层标题 // 弹出层标题
title: "修改头像", title: this.$t('systemManagement_UserManagement.updateAvatar'),
options: { options: {
img: store.getters.avatar, //裁剪图片的地址 img: store.getters.avatar, //裁剪图片的地址
autoCrop: true, // 是否默认生成截图框 autoCrop: true, // 是否默认生成截图框
@@ -120,7 +120,7 @@ export default {
// 上传预处理 // 上传预处理
beforeUpload(file) { beforeUpload(file) {
if (file.type.indexOf("image/") == -1) { if (file.type.indexOf("image/") == -1) {
this.$modal.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。") this.$modal.msgError(this.$t('systemManagement_UserManagement.errorMessage'))
} else { } else {
const reader = new FileReader() const reader = new FileReader()
reader.readAsDataURL(file) reader.readAsDataURL(file)
@@ -139,7 +139,7 @@ export default {
this.open = false this.open = false
this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl
store.commit('SET_AVATAR', this.options.img) store.commit('SET_AVATAR', this.options.img)
this.$modal.msgSuccess("修改成功") this.$modal.msgSuccess(this.$t('systemManagement_UserManagement.editSuccessInfo'))
this.visible = false this.visible = false
}) })
}) })

View File

@@ -1,23 +1,29 @@
<template> <template>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" :label-width="$t('systemManagement_UserManagement.lblWidthDialog')">
<el-form-item label="用户昵称" prop="nickName"> <!-- 用户昵称 -->
<el-form-item :label="$t('systemManagement_UserManagement.nickName')" prop="nickName">
<el-input v-model="form.nickName" maxlength="30" /> <el-input v-model="form.nickName" maxlength="30" />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <!-- 手机号码 -->
<el-form-item :label="$t('systemManagement_UserManagement.phoneNumber')" prop="phonenumber">
<el-input v-model="form.phonenumber" maxlength="11" /> <el-input v-model="form.phonenumber" maxlength="11" />
</el-form-item> </el-form-item>
<el-form-item label="邮箱" prop="email"> <!-- 邮箱 -->
<el-form-item :label="$t('systemManagement_UserManagement.email')" prop="email">
<el-input v-model="form.email" maxlength="50" /> <el-input v-model="form.email" maxlength="50" />
</el-form-item> </el-form-item>
<el-form-item label="性别"> <!-- 性别:0男 1女 -->
<el-form-item :label="$t('systemManagement_UserManagement.gender')">
<el-radio-group v-model="form.sex"> <el-radio-group v-model="form.sex">
<el-radio label="0">男</el-radio> <el-radio label="0">{{ $t('systemManagement_UserManagement.male') }}</el-radio>
<el-radio label="1">女</el-radio> <el-radio label="1">{{ $t('systemManagement_UserManagement.female') }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" size="mini" @click="submit">保存</el-button> <!-- 【保存】按钮 -->
<el-button type="danger" size="mini" @click="close">关闭</el-button> <el-button type="primary" size="mini" @click="submit">{{ $t('systemManagement_UserManagement.btnSave') }}</el-button>
<!-- 【关闭】按钮 -->
<el-button type="danger" size="mini" @click="close">{{ $t('systemManagement_UserManagement.btnClose') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
@@ -37,21 +43,26 @@ export default {
// 表单校验 // 表单校验
rules: { rules: {
nickName: [ nickName: [
{ required: true, message: "用户昵称不能为空", trigger: "blur" } // 用户昵称不能为空
{ required: true, message: this.$t('systemManagement_UserManagement.checkNickNameIsNull'), trigger: "blur" }
], ],
email: [ email: [
{ required: true, message: "邮箱地址不能为空", trigger: "blur" }, // 邮箱地址不能为空
{ required: true, message: this.$t('systemManagement_UserManagement.checkEmailIsNull'), trigger: "blur" },
{ {
type: "email", type: "email",
message: "请输入正确的邮箱地址", // 请输入正确的邮箱地址
message: this.$t('systemManagement_UserManagement.checkEmailFormat'),
trigger: ["blur", "change"] trigger: ["blur", "change"]
} }
], ],
phonenumber: [ phonenumber: [
{ required: true, message: "手机号码不能为空", trigger: "blur" }, // 手机号码不能为空
{ required: true, message: this.$t('systemManagement_UserManagement.checkPhoneNumberIsNull'), trigger: "blur" },
{ {
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码", // 请输入正确的手机号码
message: this.$t('systemManagement_UserManagement.checkPhoneNumberFormat'),
trigger: "blur" trigger: "blur"
} }
] ]
@@ -73,7 +84,8 @@ export default {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
updateUserProfile(this.form).then(response => { updateUserProfile(this.form).then(response => {
this.$modal.msgSuccess("修改成功") // 提示信息:修改成功
this.$modal.msgSuccess(this.$t('systemManagement_UserManagement.EditSuccessInfo'))
this.user.phonenumber = this.form.phonenumber this.user.phonenumber = this.form.phonenumber
this.user.email = this.form.email this.user.email = this.form.email
}) })