♻️ refactor(mes): 优化组件状态管理及注释说明

pull/871/MERGE
YunaiV 2026-04-04 10:54:11 +08:00
parent 7e0c226c24
commit 12566d6860
3 changed files with 36 additions and 38 deletions

View File

@ -117,9 +117,9 @@ const isEditable = computed(
const isConfirmed = computed(() => props.workOrder.status === MesProWorkOrderStatusEnum.CONFIRMED) //
// ==================== BOM ====================
const loading = ref(false)
const bomList = ref<ProWorkOrderBomVO[]>([])
const bomTotal = ref(0)
const loading = ref(false) //
const bomList = ref<ProWorkOrderBomVO[]>([]) //
const bomTotal = ref(0) //
const bomQueryParams = reactive({
pageNo: 1,
pageSize: 10,
@ -155,12 +155,11 @@ const handleDelete = async (id: number) => {
}
// ==================== BOM / ====================
const dialogVisible = ref(false)
const dialogTitle = ref('')
const formLoading = ref(false)
// TODO @AI create | update
const bomFormType = ref<'create' | 'update'>('update')
const formRef = ref()
const dialogVisible = ref(false) //
const formLoading = ref(false) //
const bomFormType = ref('create') //
const dialogTitle = computed(() => bomFormType.value === 'create' ? '添加 BOM 物料' : '编辑 BOM 物料')
const formRef = ref() // Ref
const formData = ref({
id: undefined as number | undefined,
workOrderId: undefined as number | undefined,
@ -190,17 +189,13 @@ const resetForm = () => {
}
/** 打开 BOM 弹窗 */
// TODO @AI create | update
const openForm = (type: 'create' | 'update', row?: any) => {
const openForm = (type: string, row?: any) => {
resetForm()
bomFormType.value = type
dialogVisible.value = true
if (type === 'create') {
// TODO @AIdialogTitle compute
dialogTitle.value = '添加 BOM 物料'
formData.value.workOrderId = props.workOrderId
} else {
dialogTitle.value = '编辑 BOM 物料'
formData.value = { ...row }
}
}

View File

@ -95,7 +95,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="8" v-if="formData.orderSourceType === MesProWorkOrderSourceTypeEnum.ORDER">
<el-form-item label="客户" prop="clientId">
<MdClientSelect v-model="formData.clientId" :disabled="isHeaderReadonly" />
</el-form-item>
@ -211,16 +211,16 @@ import {
defineOptions({ name: 'WorkOrderForm' })
const emit = defineEmits(['success'])
const message = useMessage()
const message = useMessage() //
const dialogVisible = ref(false)
const formLoading = ref(false)
const formType = ref<string>('create') // create / update / confirm / finish / detail
const isEditable = computed(() => ['create', 'update'].includes(formType.value))
const isConfirm = computed(() => formType.value === 'confirm')
const isFinish = computed(() => formType.value === 'finish')
const isDetail = computed(() => ['detail', 'confirm', 'finish'].includes(formType.value))
const isHeaderReadonly = computed(() => ['confirm', 'finish', 'detail'].includes(formType.value))
const dialogVisible = ref(false) //
const formLoading = ref(false) //
const formType = ref<string>('create') // 表单的类型:create / update / confirm / finish / detail
const isEditable = computed(() => ['create', 'update'].includes(formType.value)) //
const isConfirm = computed(() => formType.value === 'confirm') //
const isFinish = computed(() => formType.value === 'finish') //
const isDetail = computed(() => ['detail', 'confirm', 'finish'].includes(formType.value)) //
const isHeaderReadonly = computed(() => ['confirm', 'finish', 'detail'].includes(formType.value)) //
const dialogTitle = computed(() => {
if (['create', 'update'].includes(formType.value) && formData.value.parentId) {
return formType.value === 'create' ? '新增子工单' : '编辑子工单'
@ -234,7 +234,7 @@ const dialogTitle = computed(() => {
}
return titles[formType.value] || formType.value
})
const activeTab = ref('bom')
const activeTab = ref('bom') // Tab
const formData = ref({
id: undefined as number | undefined,
parentId: undefined as number | undefined,
@ -261,7 +261,7 @@ const formRules = reactive({
quantity: [{ required: true, message: '工单数量不能为空', trigger: 'blur' }],
requestDate: [{ required: true, message: '需求日期不能为空', trigger: 'change' }]
})
const formRef = ref()
const formRef = ref() // Ref
const originalFormData = ref<string>('') //
/** 生成工单编码 */
@ -320,14 +320,14 @@ const handleGenerateWorkOrder = (bomRow: any) => {
message.info('已从 BOM 物料预填子工单,请补充工单编码等信息后保存')
}
defineExpose({ open })
/** 工单来源变更:非客户订单时清空来源单据编号 */
/** 工单来源变更:非客户订单时清空来源单据编号和客户 */
watch(
() => formData.value.orderSourceType,
(val) => {
if (val !== MesProWorkOrderSourceTypeEnum.ORDER) {
formData.value.orderSourceCode = undefined
formData.value.clientId = undefined
}
}
)
@ -375,11 +375,12 @@ const handleConfirm = async () => {
try {
await message.confirm('确认要完成工单编制吗?确认后将不能更改。')
formLoading.value = true
//
// 1.
if (isEditable.value && JSON.stringify(formData.value) !== originalFormData.value) {
const data = formData.value as unknown as ProWorkOrderVO
await ProWorkOrderApi.updateWorkOrder(data)
}
// 2.
await ProWorkOrderApi.confirmWorkOrder(formData.value.id!)
message.success('工单已确认')
dialogVisible.value = false
@ -426,4 +427,6 @@ const resetForm = () => {
}
formRef.value?.resetFields()
}
defineExpose({ open })
</script>

View File

@ -253,13 +253,13 @@ import {
defineOptions({ name: 'MesProWorkOrder' })
const message = useMessage()
const { t } = useI18n()
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true)
const list = ref<ProWorkOrderVO[]>([])
const total = ref(0)
const exportLoading = ref(false)
const loading = ref(true) //
const list = ref<ProWorkOrderVO[]>([]) //
const total = ref(0) //
const exportLoading = ref(false) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
@ -271,8 +271,9 @@ const queryParams = reactive({
type: undefined,
requestDate: undefined
})
const queryFormRef = ref()
const formRef = ref()
const queryFormRef = ref() //
const formRef = ref() //
const barcodeDetailRef = ref() //
/** 查询列表(分页 + 前端 handleTree 拼接树) */
const getList = async () => {
@ -329,7 +330,6 @@ const handleDelete = async (id: number) => {
}
/** 查看工单条码 */
const barcodeDetailRef = ref()
const handleBarcode = async (row: ProWorkOrderVO) => {
await barcodeDetailRef.value.openByBusiness(
row.id,