限制新增弹框必填项必填,补充KPI国际化

This commit is contained in:
猫猫guowen
2025-08-19 14:40:47 +08:00
parent 0e9da3259f
commit ce3d083c6d
17 changed files with 175 additions and 41 deletions

View File

@@ -77,6 +77,8 @@ public class BasContainerController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody BasContainer basContainer)
{
// 自动获取当前登录用户作为操作人
basContainer.setOperationMan(getUsername());
return toAjax(basContainerService.insertBasContainer(basContainer));
}
@@ -88,6 +90,8 @@ public class BasContainerController extends BaseController
@PutMapping
public AjaxResult edit(@RequestBody BasContainer basContainer)
{
// 自动获取当前登录用户作为操作人
basContainer.setOperationMan(getUsername());
return toAjax(basContainerService.updateBasContainer(basContainer));
}

View File

@@ -250,12 +250,12 @@ public class KpiServiceImpl implements KpiService
roadwayIds.add(roadwayId);
String statusName;
switch (Integer.parseInt(status)) {
case 1: statusName = "空货位"; break;
case 2: statusName = "满货位"; break;
case 3: statusName = "入库分配"; break;
case 4: statusName = "出库分配"; break;
case 5: statusName = "入库需盘点"; break;
case 6: statusName = "出库需盘点"; break;
case 1: statusName = "1"; break; // 空货位
case 2: statusName = "2"; break; // 满货位
case 3: statusName = "3"; break; // 入库分配
case 4: statusName = "4"; break; // 出库分配
case 5: statusName = "5"; break; // 入库需盘点
case 6: statusName = "6"; break; // 出库需盘点
default: continue;
}

View File

@@ -25,7 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectBasContainerList" parameterType="BasContainer" resultMap="BasContainerResult">
<include refid="selectBasContainerVo"/>
<where>
<if test="containerId != null and containerId != ''"> and container_id = #{containerId}</if>
<if test="containerId != null and containerId != ''"> and container_id like concat('%', #{containerId}, '%')</if>
<if test="portName != null and portName != ''"> and port_name = #{portName}</if>
<if test="status != null "> and status = #{status}</if>
<if test="productTypeQuantity != null "> and product_type_quantity = #{productTypeQuantity}</if>

View File

@@ -26,12 +26,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectBasTraycodeFormatList" parameterType="BasTraycodeFormat" resultMap="BasTraycodeFormatResult">
<include refid="selectBasTraycodeFormatVo"/>
<where>
<if test="barcodeFormat != null and barcodeFormat != ''"> and barcode_format = #{barcodeFormat}</if>
<if test="serialRule != null and serialRule != ''"> and serial_rule = #{serialRule}</if>
<if test="serialExample != null and serialExample != ''"> and serial_example = #{serialExample}</if>
<if test="remarks != null and remarks != ''"> and remarks = #{remarks}</if>
<if test="minNum != null "> and min_num = #{minNum}</if>
<if test="maxNum != null "> and max_num = #{maxNum}</if>
<if test="barcodeFormat != null and barcodeFormat != ''"> and barcode_format like concat('%', #{barcodeFormat}, '%')</if>
<if test="serialRule != null and serialRule != ''"> and serial_rule like concat('%',#{serialRule}, '%')</if>
<if test="serialExample != null and serialExample != ''"> and serial_example like concat('%',#{serialExample}, '%')</if>
<if test="remarks != null and remarks != ''"> and remarks like concat('%',#{remarks}, '%')</if>
<if test="minNum != null "> and min_num like concat('%',#{minNum}, '%')</if>
<if test="maxNum != null "> and max_num like concat('%',#{maxNum}, '%')</if>
<if test="spare1 != null and spare1 != ''"> and spare1 = #{spare1}</if>
<if test="spare2 != null and spare2 != ''"> and spare2 = #{spare2}</if>
<if test="spare3 != null and spare3 != ''"> and spare3 = #{spare3}</if>

View File

@@ -27,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectBasTraycodeVo"/>
<where>
<if test="formatId != null "> and bt.format_id = #{formatId}</if>
<if test="trayCode != null and trayCode != ''"> and bt.tray_code = #{trayCode}</if>
<if test="trayCode != null and trayCode != ''"> and bt.tray_code like concat('%',#{trayCode}, '%')</if>
<if test="spare1 != null and spare1 != ''"> and bt.spare1 = #{spare1}</if>
<if test="spare2 != null and spare2 != ''"> and bt.spare2 = #{spare2}</if>
<if test="spare3 != null and spare3 != ''"> and bt.spare3 = #{spare3}</if>

View File

@@ -34,7 +34,10 @@ export default {
placeholder: {
formatId: '请输入条码类型id',
trayCode: '请输入条码'
}
},
// 表单验证提示
formatIdRequired: '条码类型不能为空', // 条码类型不能为空
trayCodeRequired: '条码不能为空' // 条码不能为空
},
traycodeFormat: {
id: 'ID',
@@ -1006,7 +1009,9 @@ export default {
// 表单校验提示
fidRequired: 'fid不能为空',
useableRequired: '是否可用不能为空'
useableRequired: '是否可用不能为空',
supplierNoRequired: '供应商编号不能为空',
supplierNameRequired: '供应商名称不能为空'
},
// *************物料管理***************
@@ -1107,7 +1112,9 @@ export default {
unbindProduct: '删除物料',
bindSuccess: '绑定成功',
unbindSuccess: '解绑成功',
selectProduct: '选择物料'
selectProduct: '选择物料',
portNameRequired: '点位名称不能为空', // 点位名称不能为空
portTypeRequired: '点位分类不能为空' // 点位分类不能为空
},
// *************库存操作记录***************
@@ -1948,6 +1955,11 @@ export default {
textDeleteDetailsConfirm1: '是否确认删除容器物料明细编号为"',
textDeleteDetailsConfirm2: '"的数据项?',
//--------------表单验证提示--------------
containerIdRequired: '容器编号不能为空', // 容器编号不能为空
portNameRequired: '点位名称不能为空', // 点位名称不能为空
statusRequired: '容器状态不能为空', // 容器状态不能为空
//--------------其他--------------
lblWidthSearch: '68px',
lblWidthDialog: '80px',
@@ -3176,6 +3188,14 @@ export default {
textChartCargoSpace: '货位分析',
textValue: '数量',
// 货位状态国际化 - 对应后台返回的中文状态
statusEmpty: '空货位', // 空货位
statusFull: '满货位', // 满货位
statusInboundAllocated: '入库分配', // 入库分配
statusOutboundAllocated: '出库分配', // 出库分配
statusInboundNeedCheck: '入库需盘点', // 入库需盘点
statusOutboundNeedCheck: '出库需盘点', // 出库需盘点
lblWidthSearch: '68px'
},
@@ -3846,7 +3866,9 @@ export default {
addSuccess: '新增成功',
editSuccess: '修改成功',
deleteSuccess: '删除成功',
deleteConfirm: '是否确认删除客户编号为"{ids}"的数据项?'
deleteConfirm: '是否确认删除客户编号为"{ids}"的数据项?',
customerNameRequired: '客户名称不能为空', // 客户名称不能为空
useableRequired: '是否可用不能为空' // 是否可用不能为空
},
viewsMain: {
systemTitle: '福莱瑞达管理系统',

View File

@@ -34,7 +34,10 @@ export default {
placeholder: {
formatId: '请输入条码类型id',
trayCode: '请输入条码'
}
},
// 表单验证提示
formatIdRequired: '条码类型不能为空', // 条码类型不能为空
trayCodeRequired: '条码不能为空' // 条码不能为空
},
traycodeFormat: {
id: 'ID',
@@ -1006,7 +1009,9 @@ export default {
// 表单校验提示
fidRequired: 'fid不能为空',
useableRequired: '是否可用不能为空'
useableRequired: '是否可用不能为空',
supplierNoRequired: '供应商编号不能为空',
supplierNameRequired: '供应商名称不能为空'
},
// *************物料管理***************
@@ -1107,7 +1112,9 @@ export default {
unbindProduct: '删除物料',
bindSuccess: '绑定成功',
unbindSuccess: '解绑成功',
selectProduct: '选择物料'
selectProduct: '选择物料',
portNameRequired: '点位名称不能为空', // 点位名称不能为空
portTypeRequired: '点位分类不能为空' // 点位分类不能为空
},
// *************库存操作记录***************
@@ -1948,6 +1955,11 @@ export default {
textDeleteDetailsConfirm1: '是否确认删除容器物料明细编号为"',
textDeleteDetailsConfirm2: '"的数据项?',
//--------------表单验证提示--------------
containerIdRequired: '容器编号不能为空', // 容器编号不能为空
portNameRequired: '点位名称不能为空', // 点位名称不能为空
statusRequired: '容器状态不能为空', // 容器状态不能为空
//--------------其他--------------
lblWidthSearch: '68px',
lblWidthDialog: '80px',
@@ -3176,6 +3188,14 @@ export default {
textChartCargoSpace: '货位分析',
textValue: '数量',
// 货位状态国际化 - 对应后台返回的中文状态
statusEmpty: '空货位', // 空货位
statusFull: '满货位', // 满货位
statusInboundAllocated: '入库分配', // 入库分配
statusOutboundAllocated: '出库分配', // 出库分配
statusInboundNeedCheck: '入库需盘点', // 入库需盘点
statusOutboundNeedCheck: '出库需盘点', // 出库需盘点
lblWidthSearch: '68px'
},
@@ -3846,7 +3866,9 @@ export default {
addSuccess: '新增成功',
editSuccess: '修改成功',
deleteSuccess: '删除成功',
deleteConfirm: '是否确认删除客户编号为"{ids}"的数据项?'
deleteConfirm: '是否确认删除客户编号为"{ids}"的数据项?',
customerNameRequired: '客户名称不能为空', // 客户名称不能为空
useableRequired: '是否可用不能为空' // 是否可用不能为空
},
viewsMain: {
systemTitle: '福莱瑞达管理系统',

View File

@@ -34,7 +34,10 @@ export default {
placeholder: {
formatId: '请输入条码类型id',
trayCode: '请输入条码'
}
},
// 表单验证提示
formatIdRequired: '条码类型不能为空', // 条码类型不能为空
trayCodeRequired: '条码不能为空' // 条码不能为空
},
traycodeFormat: {
id: 'ID',
@@ -1006,7 +1009,9 @@ export default {
// 表单校验提示
fidRequired: 'fid不能为空',
useableRequired: '是否可用不能为空'
useableRequired: '是否可用不能为空',
supplierNoRequired: '供应商编号不能为空',
supplierNameRequired: '供应商名称不能为空'
},
// *************物料管理***************
@@ -1107,7 +1112,9 @@ export default {
unbindProduct: '删除物料',
bindSuccess: '绑定成功',
unbindSuccess: '解绑成功',
selectProduct: '选择物料'
selectProduct: '选择物料',
portNameRequired: '点位名称不能为空', // 点位名称不能为空
portTypeRequired: '点位分类不能为空' // 点位分类不能为空
},
// *************库存操作记录***************
@@ -1948,6 +1955,11 @@ export default {
textDeleteDetailsConfirm1: '是否确认删除容器物料明细编号为"',
textDeleteDetailsConfirm2: '"的数据项?',
//--------------表单验证提示--------------
containerIdRequired: '容器编号不能为空', // 容器编号不能为空
portNameRequired: '点位名称不能为空', // 点位名称不能为空
statusRequired: '容器状态不能为空', // 容器状态不能为空
//--------------其他--------------
lblWidthSearch: '68px',
lblWidthDialog: '80px',
@@ -3176,6 +3188,14 @@ export default {
textChartCargoSpace: '货位分析',
textValue: '数量',
// 货位状态国际化 - 对应后台返回的中文状态
statusEmpty: '空货位', // 空货位
statusFull: '满货位', // 满货位
statusInboundAllocated: '入库分配', // 入库分配
statusOutboundAllocated: '出库分配', // 出库分配
statusInboundNeedCheck: '入库需盘点', // 入库需盘点
statusOutboundNeedCheck: '出库需盘点', // 出库需盘点
lblWidthSearch: '68px'
},
@@ -3846,7 +3866,9 @@ export default {
addSuccess: '新增成功',
editSuccess: '修改成功',
deleteSuccess: '删除成功',
deleteConfirm: '是否确认删除客户编号为"{ids}"的数据项?'
deleteConfirm: '是否确认删除客户编号为"{ids}"的数据项?',
customerNameRequired: '客户名称不能为空', // 客户名称不能为空
useableRequired: '是否可用不能为空' // 是否可用不能为空
},
viewsMain: {
systemTitle: '福莱瑞达管理系统',

View File

@@ -129,7 +129,7 @@
<!-- 添加或修改客户管理对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<!-- <el-form-item label="ID" prop="id">
<el-input v-model="form.id" placeholder="请输入ID" />
</el-form-item> -->
@@ -266,6 +266,12 @@ export default {
customerNo: [
{ required: true, message: this.$t('basCustomer.customerNoRequired'), trigger: "blur" }
],
customerName: [
{ required: true, message: this.$t('basCustomer.customerNameRequired'), trigger: "blur" } // 客户名称不能为空
],
useable: [
{ required: true, message: this.$t('basCustomer.useableRequired'), trigger: "blur" } // 是否可用不能为空
],
}
}
},
@@ -385,3 +391,10 @@ export default {
}
}
</script>
<style scoped>
/* 统一表单控件宽度 */
.el-select,
.el-input {
width: 100%;
}
</style>

View File

@@ -144,7 +144,7 @@
<!-- 添加或修改物料管理对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px" style="max-height: 500px; overflow-y: auto;">
<el-form ref="form" :model="form" :rules="rules" label-width="100px" style="max-height: 500px; overflow-y: auto;">
<el-form-item :label="$t('BasProduct.productId')" prop="productId"> <!-- 物料编码 -->
<el-input v-model="form.productId" :placeholder="$t('BasProduct.inputProductId')" />
</el-form-item>

View File

@@ -372,6 +372,12 @@ export default {
id: [
{ required: true, message: this.$t('BasSupplier.fidRequired'), trigger: "blur" } // fid不能为空
],
supplierNo: [
{ required: true, message: this.$t('BasSupplier.supplierNoRequired'), trigger: "blur" } // 供应商编号不能为空
],
supplierName: [
{ required: true, message: this.$t('BasSupplier.supplierNameRequired'), trigger: "blur" } // 供应商名称不能为空
],
useable: [
{ required: true, message: this.$t('BasSupplier.useableRequired'), trigger: "blur" } // 是否可用不能为空
],

View File

@@ -217,7 +217,7 @@
<!-- 添加或修改库存信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<!-- 货位ID -->
<el-form-item :label="$t('cargoSpace.cargoSpaceId')" prop="cargoSpaceId">
<el-input v-model="form.cargoSpaceId" :placeholder="$t('cargoSpace.placeholderCargoSpaceId')" />
@@ -554,4 +554,4 @@ export default {
.el-input {
width: 100%;
}
</style>
</style>

View File

@@ -93,7 +93,11 @@
<!-- 点位名称 -->
<el-table-column :label="$t('bas_ContainerManagement.portName')" align="left" prop="portName" />
<!-- 容器状态 -->
<el-table-column :label="$t('bas_ContainerManagement.status')" align="left" prop="status" />
<el-table-column :label="$t('bas_ContainerManagement.status')" align="left" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.stock_status" :value="scope.row.status"/>
</template>
</el-table-column>
<!-- 物料种类 -->
<el-table-column :label="$t('bas_ContainerManagement.productTypeQuantity')" align="right" prop="productTypeQuantity" />
<!-- 容量 -->
@@ -162,7 +166,7 @@
</el-select>
</el-form-item>
<!-- 状态 -->
<el-form-item :label="$t('bas_ContainerManagement.status')" prop="portName">
<el-form-item :label="$t('bas_ContainerManagement.status')" prop="status">
<el-select v-model="form.status" :placeholder="$t('bas_ContainerManagement.placeholderStatus')" clearable>
<el-option
v-for="status in dict.type.stock_status.slice(0, 2)"
@@ -172,10 +176,7 @@
</el-option>
</el-select>
</el-form-item>
<!-- 操作人 -->
<el-form-item :label="$t('bas_ContainerManagement.operationMan')" prop="operationMan">
<el-input v-model="form.operationMan" :placeholder="$t('bas_ContainerManagement.placeholderOperationMan')" />
</el-form-item>
<!-- 操作人字段已移除,由后台自动获取当前登录用户 -->
</el-form>
<div slot="footer" class="dialog-footer">
<!-- 【确定】按钮 -->
@@ -235,6 +236,15 @@ export default {
form: {},
// 表单校验
rules: {
containerId: [
{ required: true, message: this.$t('bas_ContainerManagement.containerIdRequired'), trigger: "blur" } // 容器编号不能为空
],
portName: [
{ required: true, message: this.$t('bas_ContainerManagement.portNameRequired'), trigger: "blur" } // 点位名称不能为空
],
status: [
{ required: true, message: this.$t('bas_ContainerManagement.statusRequired'), trigger: "blur" } // 容器状态不能为空
]
},
// 弹出框容器编号是否可编辑
containerIdIsEnabled: true,
@@ -347,6 +357,8 @@ export default {
if (valid) {
// 标题:修改容器管理
if (this.title === this.$t('bas_ContainerManagement.editContainerItem')) {
// 移除操作人字段,由后台自动获取当前登录用户
delete this.form.operationMan;
updateContainer(this.form).then(response => {
// 提示信息:修改成功
this.$modal.msgSuccess(this.$t('bas_ContainerManagement.editSuccessInfo'))
@@ -357,10 +369,11 @@ export default {
//@@@
this.form.productTypeQuantity = '3';
this.form.capacity = 10;
// 移除操作人字段,由后台自动获取当前登录用户
delete this.form.operationMan;
addContainer(this.form).then(response => {
// 提示信息:新增成功
this.$modal.msgSuccess(this.$t('bas_ContainerManagement.addSuccessInfo'))
// console.log(this.form.containerId + this.form.portName +this.form.operationMan);
this.open = false
this.getList()
})
@@ -389,3 +402,10 @@ export default {
}
}
</script>
<style scoped>
/* 统一表单控件宽度 */
.el-select,
.el-input {
width: 100%;
}
</style>

View File

@@ -323,7 +323,14 @@ export default {
// 表单参数
form: {},
// 表单校验
rules: {}
rules: {
portName: [
{ required: true, message: this.$t('BasPort.portNameRequired'), trigger: "blur" } // 点位名称不能为空
],
portType: [
{ required: true, message: this.$t('BasPort.portTypeRequired'), trigger: "blur" } // 点位分类不能为空
]
}
}
},
created() {

View File

@@ -214,6 +214,12 @@ export default {
form: {},
// 表单校验
rules: {
formatId: [
{ required: true, message: this.$t('traycode.formatIdRequired'), trigger: "blur" } // 条码类型不能为空
],
trayCode: [
{ required: true, message: this.$t('traycode.trayCodeRequired'), trigger: "blur" } // 条码不能为空
]
}
}
},

View File

@@ -178,7 +178,7 @@
<!-- 添加或修改条码生成规则对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item :label="$t('traycodeFormat.barcodeFormat')" prop="barcodeFormat">
<el-input v-model="form.barcodeFormat" :placeholder="$t('traycodeFormat.placeholder.barcodeFormat')" />
</el-form-item>
@@ -446,4 +446,4 @@ export default {
.el-input {
width: 100%;
}
</style>
</style>

View File

@@ -111,6 +111,18 @@ export default {
this.updateChart();
}
,
/** 状态码转换为国际化文本 */
getStatusText(statusCode) {
const statusMap = {
'1': this.$t('KPIAnalysis_CargoSpace.statusEmpty'),
'2': this.$t('KPIAnalysis_CargoSpace.statusFull'),
'3': this.$t('KPIAnalysis_CargoSpace.statusInboundAllocated'),
'4': this.$t('KPIAnalysis_CargoSpace.statusOutboundAllocated'),
'5': this.$t('KPIAnalysis_CargoSpace.statusInboundNeedCheck'),
'6': this.$t('KPIAnalysis_CargoSpace.statusOutboundNeedCheck')
};
return statusMap[statusCode] || statusCode;
},
/** 更新图表数据 */
updateChart() {
console.log('chartData:', this.chartData);
@@ -167,7 +179,7 @@ export default {
},
xAxis: {
type: 'category',
data: this.chartData.data.map(item => item.status),
data: this.chartData.data.map(item => this.getStatusText(item.status)),
axisLabel: {
interval: 0,
rotate: 0