✨ feat(mes): 更新条码业务类型和表单逻辑
调整条码业务类型枚举,修改库位和仓库的常量值,优化条码表单组件的选择逻辑,添加库区和设备的选择器,确保用户能够正确选择业务对象。pull/871/MERGE
parent
00259fd8a2
commit
184009380d
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
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
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue