Bläddra i källkod

fix(ticketManagement): 修复不可用日期验证逻辑

- 更新星期和节日字段的联合校验逻辑
- 当不可用类型为2时,确保至少选择一个星期或节日
- 在切换星期或节日时,同时触发两个字段的表单验证
- 优化验证提示信息,明确用户操作指引
congxuesong 3 veckor sedan
förälder
incheckning
1eeca97347
1 ändrade filer med 26 tillägg och 4 borttagningar
  1. 26 4
      src/views/ticketManagement/newVoucher.vue

+ 26 - 4
src/views/ticketManagement/newVoucher.vue

@@ -435,13 +435,33 @@ const rules = reactive({
   unusedType: [{ required: true, message: "请选择不可用日期类型" }],
   unavailableWeekdays: [
     {
-      validator: validateConditionalRequired(() => voucherModel.value.unusedType == 2, "至少需要选择一个星期"),
+      validator: (rule: any, value: any, callback: any) => {
+        if (voucherModel.value.unusedType == 2) {
+          const weekdays = voucherModel.value.unavailableWeekdays || [];
+          const holidays = voucherModel.value.unavailableHolidays || [];
+          if (weekdays.length === 0 && holidays.length === 0) {
+            callback(new Error("至少需要选择一个星期或节日"));
+            return;
+          }
+        }
+        callback();
+      },
       trigger: "change"
     }
   ],
   unavailableHolidays: [
     {
-      validator: validateConditionalRequired(() => voucherModel.value.unusedType == 2, "至少需要选择一个节日"),
+      validator: (rule: any, value: any, callback: any) => {
+        if (voucherModel.value.unusedType == 2) {
+          const weekdays = voucherModel.value.unavailableWeekdays || [];
+          const holidays = voucherModel.value.unavailableHolidays || [];
+          if (weekdays.length === 0 && holidays.length === 0) {
+            callback(new Error("至少需要选择一个星期或节日"));
+            return;
+          }
+        }
+        callback();
+      },
       trigger: "change"
     }
   ],
@@ -887,9 +907,10 @@ const toggleWeekday = (value: string) => {
   } else {
     voucherModel.value.unavailableWeekdays.push(value);
   }
-  // 触发表单验证
+  // 触发表单验证(同时验证星期和节日字段)
   nextTick(() => {
     ruleFormRef.value?.validateField("unavailableWeekdays");
+    ruleFormRef.value?.validateField("unavailableHolidays");
   });
 };
 
@@ -909,8 +930,9 @@ const toggleHoliday = (value: string | number) => {
   } else {
     voucherModel.value.unavailableHolidays.push(valueStr);
   }
-  // 触发表单验证
+  // 触发表单验证(同时验证星期和节日字段)
   nextTick(() => {
+    ruleFormRef.value?.validateField("unavailableWeekdays");
     ruleFormRef.value?.validateField("unavailableHolidays");
   });
 };