feat(mes): 更新条码业务类型和表单逻辑

调整条码业务类型枚举,修改库位和仓库的常量值,优化条码表单组件的选择逻辑,添加库区和设备的选择器,确保用户能够正确选择业务对象。
pull/871/MERGE
YunaiV 2026-03-07 00:49:15 +08:00
parent 00259fd8a2
commit 184009380d
3 changed files with 116 additions and 123 deletions

View File

@ -2,17 +2,17 @@ import request from '@/config/axios'
// MES 条码清单 VO
export interface WmBarcodeVO {
id: number
configId: number
format: number
bizType: number
content: string
bizId: number
bizCode: string
bizName: string
id?: number
configId?: number
format?: number
bizType?: number
content?: string
bizId?: number
bizCode?: string
bizName?: string
status: number
remark: string
createTime: string
createTime?: string
}
// MES 条码 API

View File

@ -363,22 +363,18 @@ export const BARCODE_FORMAT_MAP: Record<BarcodeFormatEnum, string> = {
}
/** MES 条码业务类型枚举(对应后端 BarcodeBizTypeEnum */
// TODO @AI后端的 BizTypeEnum 也搬过来!
export enum BarcodeBizTypeEnum {
// WM 仓库模块 [100, 200)
WAREHOUSE = 102,
AREA = 103,
PACKAGE = 104,
STOCK = 105,
BATCH = 106,
AREA = 104,
PACKAGE = 105,
STOCK = 106,
BATCH = 107,
// PRO 生产模块 [300, 400)
PROCARD = 300,
WORKORDER = 301,
TRANSORDER = 302,
// DV 设备模块 [400, 500)
MACHINERY = 400,
// TM 工装夹具模块 [500, 600)
TOOL = 500,
// MD 主数据模块 [600, 700)
ITEM = 600,
VENDOR = 601,

View File

@ -27,91 +27,83 @@
/>
</el-select>
</el-form-item>
<!-- TODO @AI 判断 formData.bizType === BarcodeBizTypeEnum.ITEM
<el-form-item label="产品物料" prop="bizId">
-->
<!-- TODO @AI 判断 formData.bizType === BarcodeBizTypeEnum.AREA不用 BarcodeBizTypeEnum.WAREHOUSE
使用 WmWarehouseSelect
WmWarehouseLocationSelect
WmWarehouseAreaSelect
-->
<!-- TODO @AI 判断 formData.bizType === BarcodeBizTypeEnum.PACKAGE缺了 package暂时没封装 select跳过先
-->
<!-- TODO @AI 判断 formData.bizType === BarcodeBizTypeEnum.VENDOR
<el-form-item label="供应商" prop="bizId">
-->
<!-- todo @AI判断 WORKSTATION
使用对应的选择器工作站
-->
<!-- TODO @AI判断 STOCK暂时不用
-->
<!-- TODO @AI判断 BATCH暂时不用
-->
<!-- TODO @AI判断 WORKSHOP
车间是不是叫这个
-->
<!-- TODO @AI判断设备 MACHINERY
使用 select
-->
<!-- TODO @AI判断 人员 USER
使用 user select
-->
<!-- TODO @AI判断流转卡PROCARD
使用对应的 select
-->
<el-form-item label="业务对象" prop="bizId">
<!-- 已有 Select 组件的业务类型 -->
<WmWarehouseSelect
v-if="formData.bizType === BarcodeBizTypeEnum.WAREHOUSE"
v-model="formData.bizId"
@change="handleBizSelect"
class="!w-240px"
/>
<WmWarehouseAreaSelect
v-else-if="formData.bizType === BarcodeBizTypeEnum.AREA"
v-model="formData.bizId"
@change="handleBizSelect"
class="!w-240px"
/>
<ProWorkOrderSelect
v-else-if="formData.bizType === BarcodeBizTypeEnum.WORKORDER"
v-model="formData.bizId"
@change="handleBizSelect"
class="!w-240px"
/>
<DvMachinerySelect
v-else-if="formData.bizType === BarcodeBizTypeEnum.MACHINERY"
v-model="formData.bizId"
@change="handleBizSelect"
class="!w-240px"
/>
<MdItemSelect
v-else-if="formData.bizType === BarcodeBizTypeEnum.ITEM"
v-model="formData.bizId"
@change="handleBizSelect"
class="!w-240px"
/>
<MdVendorSelect
v-else-if="formData.bizType === BarcodeBizTypeEnum.VENDOR"
v-model="formData.bizId"
@change="handleBizSelect"
class="!w-240px"
/>
<MdWorkstationSelect
v-else-if="formData.bizType === BarcodeBizTypeEnum.WORKSTATION"
v-model="formData.bizId"
@change="handleBizSelect"
class="!w-240px"
/>
<MdWorkshopSelect
v-else-if="formData.bizType === BarcodeBizTypeEnum.WORKSHOP"
v-model="formData.bizId"
@change="handleBizSelect"
class="!w-240px"
/>
<!-- TODO @芋艿以下业务类型暂无对应的 Select 组件PACKAGE(装箱单)STOCK(库存)BATCH(批次)PROCARD(流转卡)TRANSORDER(流转单)TOOL(工装)USER(人员) -->
<el-form-item v-if="formData.bizType === BarcodeBizTypeEnum.AREA" label="库区" prop="bizId">
<div class="space-y-2">
<WmWarehouseSelect
v-model="areaWarehouseId"
@change="handleAreaWarehouseChange"
class="!w-1/1"
placeholder="请选择仓库"
/>
<WmWarehouseLocationSelect
v-model="areaLocationId"
:warehouse-id="areaWarehouseId"
@change="handleAreaLocationChange"
class="!w-1/1"
placeholder="请选择库位"
/>
<WmWarehouseAreaSelect
v-model="formData.bizId"
:warehouse-id="areaWarehouseId"
@change="handleBizSelect"
class="!w-1/1"
placeholder="请选择库区"
/>
</div>
</el-form-item>
<el-form-item
v-else-if="formData.bizType === BarcodeBizTypeEnum.WORKORDER"
label="工单"
prop="bizId"
>
<ProWorkOrderSelect v-model="formData.bizId" @change="handleBizSelect" class="!w-1//1" />
</el-form-item>
<el-form-item
v-else-if="formData.bizType === BarcodeBizTypeEnum.MACHINERY"
label="设备"
prop="bizId"
>
<DvMachinerySelect v-model="formData.bizId" @change="handleBizSelect" class="!w-1//1" />
</el-form-item>
<el-form-item
v-else-if="formData.bizType === BarcodeBizTypeEnum.ITEM"
label="产品物料"
prop="bizId"
class="!w-1/1"
>
<MdItemSelect v-model="formData.bizId" @change="handleBizSelect" class="!w-1/1" />
</el-form-item>
<el-form-item
v-else-if="formData.bizType === BarcodeBizTypeEnum.VENDOR"
label="供应商"
prop="bizId"
>
<MdVendorSelect v-model="formData.bizId" @change="handleBizSelect" class="!w-1//1" />
</el-form-item>
<el-form-item
v-else-if="formData.bizType === BarcodeBizTypeEnum.WORKSTATION"
label="工作站"
prop="bizId"
>
<MdWorkstationSelect v-model="formData.bizId" @change="handleBizSelect" class="!w-1/1" />
</el-form-item>
<el-form-item
v-else-if="formData.bizType === BarcodeBizTypeEnum.WORKSHOP"
label="车间"
prop="bizId"
>
<MdWorkshopSelect v-model="formData.bizId" @change="handleBizSelect" class="!w-1/1" />
</el-form-item>
<el-form-item
v-else-if="formData.bizType === BarcodeBizTypeEnum.USER"
label="人员"
prop="bizId"
>
<UserSelect v-model="formData.bizId" @change="handleBizSelect" class="!w-1/1" />
</el-form-item>
<!-- TODO @芋艿以下业务类型暂无对应的 Select 组件PACKAGE(装箱单)STOCK(库存)BATCH(批次)PROCARD(流转卡)TRANSORDER(流转单)TOOL(工装) -->
<el-form-item v-else-if="formData.bizType" label="暂未接入" prop="bizId">
<el-input-number
v-else
v-model="formData.bizId"
:min="1"
class="!w-240px"
@ -122,14 +114,14 @@
<el-input
v-model="formData.bizCode"
placeholder="请输入业务编码"
:disabled="hasBizSelect"
disabled
/>
</el-form-item>
<el-form-item label="业务名称" prop="bizName">
<el-input
v-model="formData.bizName"
placeholder="请输入业务名称"
:disabled="hasBizSelect"
disabled
/>
</el-form-item>
<el-form-item label="状态" prop="status">
@ -161,12 +153,14 @@ import { WmBarcodeApi, type WmBarcodeVO } from '@/api/mes/wm/barcode'
import { BarcodeBizTypeEnum } from '@/views/mes/utils/constants'
import WmWarehouseSelect from '@/views/mes/wm/warehouse/components/WmWarehouseSelect.vue'
import WmWarehouseAreaSelect from '@/views/mes/wm/warehouse/components/WmWarehouseAreaSelect.vue'
import WmWarehouseLocationSelect from '@/views/mes/wm/warehouse/components/WmWarehouseLocationSelect.vue'
import ProWorkOrderSelect from '@/views/mes/pro/workorder/components/ProWorkOrderSelect.vue'
import DvMachinerySelect from '@/views/mes/dv/machinery/components/DvMachinerySelect.vue'
import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue'
import MdVendorSelect from '@/views/mes/md/vendor/components/MdVendorSelect.vue'
import MdWorkstationSelect from '@/views/mes/md/workstation/components/MdWorkstationSelect.vue'
import MdWorkshopSelect from '@/views/mes/md/workstation/components/MdWorkshopSelect.vue'
import UserSelect from '@/views/system/user/components/UserSelect.vue'
defineOptions({ name: 'BarcodeForm' })
@ -177,7 +171,7 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
const formData = ref<WmBarcodeVO>({
id: undefined,
format: undefined,
bizType: undefined,
@ -196,23 +190,8 @@ const formRules = reactive({
})
const formRef = ref()
/** 有 Select 组件的业务类型集合 */
const BIZ_TYPES_WITH_SELECT = [
BarcodeBizTypeEnum.WAREHOUSE,
BarcodeBizTypeEnum.AREA,
BarcodeBizTypeEnum.WORKORDER,
BarcodeBizTypeEnum.MACHINERY,
BarcodeBizTypeEnum.ITEM,
BarcodeBizTypeEnum.VENDOR,
BarcodeBizTypeEnum.WORKSTATION,
BarcodeBizTypeEnum.WORKSHOP
] as number[]
/** 当前 bizType 是否有对应的 Select 组件 */
// TODO @AI linter
const hasBizSelect = computed(() =>
BIZ_TYPES_WITH_SELECT.includes(formData.value.bizType as number)
)
const areaWarehouseId = ref<number>() //
const areaLocationId = ref<number>() //
/** 业务 Select 选中回调:自动填充 bizId、bizCode、bizName */
const handleBizSelect = (item: any) => {
@ -223,8 +202,23 @@ const handleBizSelect = (item: any) => {
return
}
formData.value.bizId = item.id
formData.value.bizCode = item.code
formData.value.bizName = item.name
formData.value.bizCode = item.code || item.username
formData.value.bizName = item.name || item.nickname
}
/** 库区仓库选择回调:清空库位和库区 */
const handleAreaWarehouseChange = () => {
areaLocationId.value = undefined
formData.value.bizId = undefined
formData.value.bizCode = undefined
formData.value.bizName = undefined
}
/** 库区库位选择回调:清空库区 */
const handleAreaLocationChange = () => {
formData.value.bizId = undefined
formData.value.bizCode = undefined
formData.value.bizName = undefined
}
/** bizType 切换时,清空业务字段 */
@ -234,6 +228,9 @@ watch(
formData.value.bizId = undefined
formData.value.bizCode = undefined
formData.value.bizName = undefined
//
areaWarehouseId.value = undefined
areaLocationId.value = undefined
}
)