From b452e320ef1f81d4f6b477255930ad8505d29d7b Mon Sep 17 00:00:00 2001 From: hwj Date: Wed, 15 Apr 2026 10:58:06 +0800 Subject: [PATCH] =?UTF-8?q?style=EF=BC=9A=E4=BB=BB=E5=8A=A1=E5=88=B6?= =?UTF-8?q?=E5=8D=95-=E6=96=B0=E5=A2=9E-=E4=BA=A4=E8=B4=A7=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E4=B8=8D=E8=83=BD=E9=80=89=E5=BE=80=E6=97=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mes/task/TaskForm.vue | 22 ++++++++++++++++++- .../mes/task/components/TaskDetailForm.vue | 20 ++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/views/mes/task/TaskForm.vue b/src/views/mes/task/TaskForm.vue index 8eafd6e8..d4b78df9 100644 --- a/src/views/mes/task/TaskForm.vue +++ b/src/views/mes/task/TaskForm.vue @@ -39,6 +39,7 @@ v-model="formData.deliveryDate" type="date" value-format="x" + :disabled-date="disablePastDate" :placeholder="t('ProductionPlan.Task.dialogDeliveryDatePlaceholder')" class="!w-full" /> @@ -107,8 +108,27 @@ const formData = ref({ isEnable: undefined, isCode: undefined }) +const disablePastDate = (date: Date) => { + return date.getTime() < new Date(new Date().setHours(0, 0, 0, 0)).getTime() +} +const validateDeliveryDate = (_rule: any, value: any, callback: (error?: Error) => void) => { + if (!value) { + callback() + return + } + const selected = Number(value) + const todayStart = new Date(new Date().setHours(0, 0, 0, 0)).getTime() + if (Number.isFinite(selected) && selected < todayStart) { + callback(new Error('交货日期不能早于今天')) + return + } + callback() +} const formRules = reactive({ - deliveryDate: [{ required: true, message: t('ProductionPlan.Task.validatorDeliveryDateRequired'), trigger: 'blur' }], + deliveryDate: [ + { required: true, message: t('ProductionPlan.Task.validatorDeliveryDateRequired'), trigger: 'blur' }, + { validator: validateDeliveryDate, trigger: ['change', 'blur'] } + ], taskType: [{ required: true, message: t('ProductionPlan.Task.validatorTaskTypeRequired'), trigger: 'blur' }], isUrgent: [{ required: true, message: t('ProductionPlan.Task.validatorIsUrgentRequired'), trigger: 'change' }] }) diff --git a/src/views/mes/task/components/TaskDetailForm.vue b/src/views/mes/task/components/TaskDetailForm.vue index 55836d0c..bd65e5ea 100644 --- a/src/views/mes/task/components/TaskDetailForm.vue +++ b/src/views/mes/task/components/TaskDetailForm.vue @@ -89,6 +89,7 @@ v-model="formData.finishDate" type="date" value-format="x" + :disabled-date="disablePastDate" :placeholder="t('ProductionPlan.Task.detailFormDeliveryDatePlaceholder')" /> @@ -158,12 +159,29 @@ const formData = ref({ boxingDate: undefined, arriveDate: undefined, }) +const disablePastDate = (date: Date) => { + return date.getTime() < new Date(new Date().setHours(0, 0, 0, 0)).getTime() +} +const validateFinishDate = (_rule: any, value: any, callback: (error?: Error) => void) => { + if (!value) { + callback() + return + } + const selected = Number(value) + const todayStart = new Date(new Date().setHours(0, 0, 0, 0)).getTime() + if (Number.isFinite(selected) && selected < todayStart) { + callback(new Error('交货日期不能早于今天')) + return + } + callback() +} const formRules = reactive({ productId: [{ required: true, message: t('ProductionPlan.Task.validatorDetailProductIdRequired'), trigger: 'blur' }], unitId: [{ required: true, message: t('ProductionPlan.Task.validatorDetailUnitIdRequired'), trigger: 'blur' }], taskId: [{ required: true, message: t('ProductionPlan.Task.validatorDetailTaskIdRequired'), trigger: 'blur' }], number: [{ required: true, message: t('ProductionPlan.Task.validatorDetailNumberRequired'), trigger: 'blur' }], - packageSize: [{ required: true, message: t('ProductionPlan.Task.validatorDetailPackageSizeRequired'), trigger: 'blur' }] + packageSize: [{ required: true, message: t('ProductionPlan.Task.validatorDetailPackageSizeRequired'), trigger: 'blur' }], + finishDate: [{ validator: validateFinishDate, trigger: ['change', 'blur'] }] }) const formRef = ref() // 表单 Ref