feat(mes): 新增盘点方案保存数据校验逻辑,优化动态盘点时间处理

pull/871/MERGE
YunaiV 2026-03-31 18:31:53 +08:00
parent abe63d39db
commit 55ca892c9c
1 changed files with 36 additions and 40 deletions

View File

@ -112,36 +112,26 @@
<template v-else-if="formData.type === MesWmStockTakingParamTypeEnum.ITEM"> <template v-else-if="formData.type === MesWmStockTakingParamTypeEnum.ITEM">
<MdItemSelect v-model="formData.valueId" @change="handleSelectorChange" /> <MdItemSelect v-model="formData.valueId" @change="handleSelectorChange" />
</template> </template>
<template v-else-if="formData.type === MesWmStockTakingParamTypeEnum.BATCH">
<!-- DONE 后续接入批次选择器和质量状态选择器 -->
<WmBatchSelect v-model="formData.valueId" @change="handleBatchChange" />
</template>
<template <template
v-else-if=" v-else-if="formData.type === MesWmStockTakingParamTypeEnum.QUALITY_STATUS"
formData.type === MesWmStockTakingParamTypeEnum.BATCH ||
formData.type === MesWmStockTakingParamTypeEnum.QUALITY_STATUS
"
> >
<!-- TODO @芋艿后续来跟进 --> <el-select
<el-row :gutter="8" class="w-full"> v-model="formData.valueCode"
<el-col :span="8"> placeholder="请选择质量状态"
<el-input class="!w-full"
v-model="formData.valueId" @change="handleQualityStatusChange"
placeholder="值ID" >
@change="handleManualChange" <el-option
/> v-for="dict in getStrDictOptions(DICT_TYPE.MES_WM_QUALITY_STATUS)"
</el-col> :key="dict.value"
<el-col :span="8"> :label="dict.label"
<el-input :value="dict.value"
v-model="formData.valueCode" />
placeholder="值编码" </el-select>
@change="handleManualChange"
/>
</el-col>
<el-col :span="8">
<el-input
v-model="formData.valueName"
placeholder="值名称"
@change="handleManualChange"
/>
</el-col>
</el-row>
</template> </template>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -160,7 +150,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
import { import {
StockTakingPlanParamApi, StockTakingPlanParamApi,
type StockTakingPlanParamVO type StockTakingPlanParamVO
@ -170,6 +160,7 @@ import WmWarehouseSelect from '@/views/mes/wm/warehouse/components/WmWarehouseSe
import WmWarehouseLocationSelect from '@/views/mes/wm/warehouse/components/WmWarehouseLocationSelect.vue' import WmWarehouseLocationSelect from '@/views/mes/wm/warehouse/components/WmWarehouseLocationSelect.vue'
import WmWarehouseAreaSelect from '@/views/mes/wm/warehouse/components/WmWarehouseAreaSelect.vue' import WmWarehouseAreaSelect from '@/views/mes/wm/warehouse/components/WmWarehouseAreaSelect.vue'
import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue' import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue'
import WmBatchSelect from '@/views/mes/wm/batch/components/WmBatchSelect.vue'
import { WmWarehouseLocationApi } from '@/api/mes/wm/warehouse/location' import { WmWarehouseLocationApi } from '@/api/mes/wm/warehouse/location'
import { WmWarehouseAreaApi } from '@/api/mes/wm/warehouse/area' import { WmWarehouseAreaApi } from '@/api/mes/wm/warehouse/area'
@ -269,7 +260,7 @@ const submitForm = async () => {
const data = { const data = {
...formData.value, ...formData.value,
planId: props.planId, planId: props.planId,
valueId: Number(formData.value.valueId) valueId: formData.value.valueId != null ? Number(formData.value.valueId) : undefined
} as StockTakingPlanParamVO } as StockTakingPlanParamVO
if (formType.value === 'create') { if (formType.value === 'create') {
await StockTakingPlanParamApi.createStockTakingPlanParam(data) await StockTakingPlanParamApi.createStockTakingPlanParam(data)
@ -322,18 +313,23 @@ const handleSelectorChange = (item?: any) => {
formData.value.valueName = item?.name || item?.nickname || '' formData.value.valueName = item?.name || item?.nickname || ''
} }
/** 手动输入变化 */ /** 批次选择器变化 */
const handleManualChange = () => { const handleBatchChange = (batch?: any) => {
if ( formData.value.valueId = batch?.id
formData.value.valueId !== undefined && formData.value.valueCode = batch?.code || ''
formData.value.valueId !== null && formData.value.valueName = batch?.code || ''
formData.value.valueId !== ''
) {
const num = Number(formData.value.valueId)
formData.value.valueId = Number.isNaN(num) ? formData.value.valueId : num
}
} }
/** 质量状态选择器变化 */
const handleQualityStatusChange = (val: string) => {
const dictOptions = getStrDictOptions(DICT_TYPE.MES_WM_QUALITY_STATUS)
const selected = dictOptions.find((d) => d.value === val)
formData.value.valueId = val // ID valueCode
formData.value.valueCode = val
formData.value.valueName = selected?.label || ''
}
/** 库区仓库选择回调:清空库区 */ /** 库区仓库选择回调:清空库区 */
const handleLocationWarehouseChange = () => { const handleLocationWarehouseChange = () => {
formData.value.valueId = undefined formData.value.valueId = undefined