diff --git a/src/views/mes/orderInfo/editProductPlan.vue b/src/views/mes/orderInfo/editProductPlan.vue index 71d8fab..c0bf2c3 100644 --- a/src/views/mes/orderInfo/editProductPlan.vue +++ b/src/views/mes/orderInfo/editProductPlan.vue @@ -231,7 +231,7 @@ width="150" > + formData.orderStatus!==ORDER_STATUS.DELETED">删除 @@ -278,7 +277,14 @@ import { reactive, onMounted, ref } from 'vue' import { useRouter, useRoute } from 'vue-router' import { ElMessage, ElMessageBox } from 'element-plus' import { getOrderInfo } from '@/api/mes/orderInfo' -import { getBaseRouteProcesses, getDispatchCode, getPlanCode, selectProductPlans, orderAddProductPlanList } from '@/api/mes/planInfo' +import { + getBaseRouteProcesses, + getDispatchCode, + getPlanCode, + selectProductPlans, + orderAddProductPlanList, + orderAddProductPlanJJList +} from '@/api/mes/planInfo'; import { getStationInfoList } from '@/api/mes/baseStationInfo' @@ -305,6 +311,13 @@ const PLAN_STATUS = { FINISHED: '3' // 已完成 } +const planStatusTextMap = { + '0': '待派工', + '1': '已派工', + '2': '已开始', + '3': '已完成' +} + const orderStatusTextMap = { '0': '待生产', '1': '生产中', @@ -360,6 +373,10 @@ const getOrderStatusText = (status) => { return orderStatusTextMap[status] || `未知状态(${status})` } +const getPlanStatusText = (status) => { + return planStatusTextMap[status] || `未知状态(${status})` +} + const fetchOrderInfo = async (productOrderId) => { // console.log('Fetching order info for ID', productOrderId) try { @@ -458,7 +475,7 @@ const groupProductPlans = async (productPlans) => { planBeginTime: productPlan.planBeginTime || formData.value.planBeginTime || '', planEndTime: productPlan.planEndTime || formData.value.planEndTime || '', planStatus: productPlan.planStatus, - materialId: productPlan.materialId || formData.value.materialId, + materialId: formData.value.materialId, materialBomId: productPlan.materialBomId || formData.value.materialBomId, productOrderId: productPlan.productOrderId || formData.value.productOrderId, saleOrderId: productPlan.saleOrderId || formData.value.saleOrderId || null, @@ -583,7 +600,7 @@ const submitForm = async () => { planBeginTime: planBeginTime, planEndTime: planEndTime, planStatus: PLAN_STATUS.TO_DISPATCH, - materialId: Number(formData.value.materialId), + materialId: formData.value.materialId, materialBomId: Number(formData.value.materialBomId), productOrderId: Number(formData.value.productOrderId), saleOrderId: formData.value.saleOrderId ? Number(formData.value.saleOrderId) : null, @@ -622,7 +639,7 @@ const submitForm = async () => { console.log('提交数据:', JSON.stringify(submitData, null, 2)) - const res = await orderAddProductPlanList(submitData); + const res = await orderAddProductPlanJJList(submitData); if (res.code === 200) { ElMessage.success('提交成功'); diff --git a/src/views/mes/orderInfo/index.vue b/src/views/mes/orderInfo/index.vue index 4835970..806fbf0 100644 --- a/src/views/mes/orderInfo/index.vue +++ b/src/views/mes/orderInfo/index.vue @@ -469,15 +469,63 @@ const data = reactive>({ factoryId: undefined, params: {} }, - rules: { - planAmount: [ - { required: true, message: '计划数量不能为空', trigger: 'blur' } - ], - } + rules: {} }); const { queryParams, form, rules } = toRefs(data); +// 设置验证规则 +data.rules = { + planAmount: [ + { required: true, message: '计划数量不能为空', trigger: 'blur' } + ], + planBeginTime: [ + { + validator: (rule: any, value: any, callback: any) => { + if (!value) { + callback(); + return; + } + if (data.form.planEndTime && value > data.form.planEndTime) { + callback(new Error('计划开始时间不能大于计划结束时间')); + } else { + callback(); + } + }, + trigger: 'change' + } + ], + planEndTime: [ + { + validator: (rule: any, value: any, callback: any) => { + if (!value) { + callback(); + return; + } + if (data.form.planBeginTime && value < data.form.planBeginTime) { + callback(new Error('计划结束时间不能小于计划开始时间')); + } else { + callback(); + } + }, + trigger: 'change' + } + ] +}; + +// 监听时间变化,自动触发另一个字段的验证 +watch(() => form.value.planBeginTime, () => { + if (form.value.planEndTime) { + orderInfoFormRef.value?.validateField('planEndTime'); + } +}); + +watch(() => form.value.planEndTime, () => { + if (form.value.planBeginTime) { + orderInfoFormRef.value?.validateField('planBeginTime'); + } +}); + /** 查询生产订单信息列表 */ const getList = async () => { loading.value = true; diff --git a/src/views/mes/planInfo/JJPlanIndex.vue b/src/views/mes/planInfo/JJPlanIndex.vue new file mode 100644 index 0000000..7d5ce68 --- /dev/null +++ b/src/views/mes/planInfo/JJPlanIndex.vue @@ -0,0 +1,861 @@ + + + + diff --git a/src/views/mes/prodReport/components/CurrentTask.vue b/src/views/mes/prodReport/components/CurrentTask.vue new file mode 100644 index 0000000..dbd5006 --- /dev/null +++ b/src/views/mes/prodReport/components/CurrentTask.vue @@ -0,0 +1,446 @@ + + + + + diff --git a/src/views/mes/prodReport/components/PendingTasks.vue b/src/views/mes/prodReport/components/PendingTasks.vue new file mode 100644 index 0000000..232a0aa --- /dev/null +++ b/src/views/mes/prodReport/components/PendingTasks.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/views/mes/prodReport/components/ProcessDocuments.vue b/src/views/mes/prodReport/components/ProcessDocuments.vue new file mode 100644 index 0000000..a71ab5d --- /dev/null +++ b/src/views/mes/prodReport/components/ProcessDocuments.vue @@ -0,0 +1,227 @@ +