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 // MES 条码清单 VO
export interface WmBarcodeVO { export interface WmBarcodeVO {
id: number id?: number
configId: number configId?: number
format: number format?: number
bizType: number bizType?: number
content: string content?: string
bizId: number bizId?: number
bizCode: string bizCode?: string
bizName: string bizName?: string
status: number status: number
remark: string remark: string
createTime: string createTime?: string
} }
// MES 条码 API // MES 条码 API

View File

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

View File

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