|
@@ -76,7 +76,7 @@
|
|
|
<el-form-item class="activity-time-item" label="报名时间" prop="signupTimeRange">
|
|
<el-form-item class="activity-time-item" label="报名时间" prop="signupTimeRange">
|
|
|
<el-date-picker
|
|
<el-date-picker
|
|
|
v-model="activityModel.signupTimeRange"
|
|
v-model="activityModel.signupTimeRange"
|
|
|
- :disabled-date="disabledDate"
|
|
|
|
|
|
|
+ :disabled-date="disabledSignupDate"
|
|
|
class="form-input"
|
|
class="form-input"
|
|
|
end-placeholder="结束日期"
|
|
end-placeholder="结束日期"
|
|
|
format="YYYY/MM/DD"
|
|
format="YYYY/MM/DD"
|
|
@@ -428,19 +428,25 @@ const rules = reactive({
|
|
|
callback(new Error("报名开始时间必须早于报名结束时间"));
|
|
callback(new Error("报名开始时间必须早于报名结束时间"));
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- // 检查报名结束时间是否在活动开始时间之前
|
|
|
|
|
|
|
+ // 检查报名时间是否在活动开始时间之前
|
|
|
if (
|
|
if (
|
|
|
activityModel.value.activityTimeRange &&
|
|
activityModel.value.activityTimeRange &&
|
|
|
Array.isArray(activityModel.value.activityTimeRange) &&
|
|
Array.isArray(activityModel.value.activityTimeRange) &&
|
|
|
activityModel.value.activityTimeRange.length === 2
|
|
activityModel.value.activityTimeRange.length === 2
|
|
|
) {
|
|
) {
|
|
|
- const [activityStartTime] = activityModel.value.activityTimeRange;
|
|
|
|
|
- if (activityStartTime) {
|
|
|
|
|
- const activityStart = new Date(activityStartTime);
|
|
|
|
|
- if (end >= activityStart) {
|
|
|
|
|
- callback(new Error("报名结束时间必须在活动开始时间之前"));
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const activityStartTime = new Date(activityModel.value.activityTimeRange[0]);
|
|
|
|
|
+ activityStartTime.setHours(0, 0, 0, 0);
|
|
|
|
|
+ start.setHours(0, 0, 0, 0);
|
|
|
|
|
+ end.setHours(0, 0, 0, 0);
|
|
|
|
|
+
|
|
|
|
|
+ // 报名开始时间和结束时间都必须在活动开始时间之前(不能等于)
|
|
|
|
|
+ if (start >= activityStartTime) {
|
|
|
|
|
+ callback(new Error("报名开始时间必须在活动开始时间之前"));
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (end >= activityStartTime) {
|
|
|
|
|
+ callback(new Error("报名结束时间必须在活动开始时间之前"));
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -561,6 +567,27 @@ const disabledDate = (time: Date) => {
|
|
|
return time.getTime() < today.getTime();
|
|
return time.getTime() < today.getTime();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+// 禁用报名日期(不能早于今天,且不能晚于或等于活动开始时间)
|
|
|
|
|
+const disabledSignupDate = (time: Date) => {
|
|
|
|
|
+ const today = new Date();
|
|
|
|
|
+ today.setHours(0, 0, 0, 0);
|
|
|
|
|
+
|
|
|
|
|
+ // 不能早于今天
|
|
|
|
|
+ if (time.getTime() < today.getTime()) {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 如果已选择活动时间,报名时间不能晚于或等于活动开始时间
|
|
|
|
|
+ if (activityModel.value.activityTimeRange && activityModel.value.activityTimeRange.length === 2) {
|
|
|
|
|
+ const activityStartTime = new Date(activityModel.value.activityTimeRange[0]);
|
|
|
|
|
+ activityStartTime.setHours(0, 0, 0, 0);
|
|
|
|
|
+ // 报名时间必须早于活动开始时间(不能等于)
|
|
|
|
|
+ return time.getTime() >= activityStartTime.getTime();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return false;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
// ==================== 图片参数转换函数 ====================
|
|
// ==================== 图片参数转换函数 ====================
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1018,21 +1045,44 @@ watch(
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 监听活动时间变化,重新验证报名时间
|
|
|
|
|
|
|
+ * 监听活动时间变化,如果报名时间不符合要求则清空并提示
|
|
|
*/
|
|
*/
|
|
|
watch(
|
|
watch(
|
|
|
() => activityModel.value.activityTimeRange,
|
|
() => activityModel.value.activityTimeRange,
|
|
|
- () => {
|
|
|
|
|
- // 当活动时间改变时,如果已设置报名时间,重新验证报名时间
|
|
|
|
|
|
|
+ (newVal, oldVal) => {
|
|
|
|
|
+ // 初始化时不处理
|
|
|
|
|
+ if (oldVal === undefined || oldVal === null) return;
|
|
|
|
|
+
|
|
|
|
|
+ // 只有营销活动才需要检查报名时间
|
|
|
|
|
+ if (activityModel.value.activityType !== 1) return;
|
|
|
|
|
+
|
|
|
|
|
+ // 如果活动时间已选择且报名时间已选择
|
|
|
if (
|
|
if (
|
|
|
- activityModel.value.activityType === 1 &&
|
|
|
|
|
|
|
+ newVal &&
|
|
|
|
|
+ newVal.length === 2 &&
|
|
|
activityModel.value.signupTimeRange &&
|
|
activityModel.value.signupTimeRange &&
|
|
|
- Array.isArray(activityModel.value.signupTimeRange) &&
|
|
|
|
|
activityModel.value.signupTimeRange.length === 2
|
|
activityModel.value.signupTimeRange.length === 2
|
|
|
) {
|
|
) {
|
|
|
- nextTick(() => {
|
|
|
|
|
- ruleFormRef.value?.validateField("signupTimeRange");
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ const activityStartTime = new Date(newVal[0]);
|
|
|
|
|
+ activityStartTime.setHours(0, 0, 0, 0);
|
|
|
|
|
+ const signupStartTime = new Date(activityModel.value.signupTimeRange[0]);
|
|
|
|
|
+ signupStartTime.setHours(0, 0, 0, 0);
|
|
|
|
|
+ const signupEndTime = new Date(activityModel.value.signupTimeRange[1]);
|
|
|
|
|
+ signupEndTime.setHours(0, 0, 0, 0);
|
|
|
|
|
+
|
|
|
|
|
+ // 如果报名开始时间或结束时间晚于或等于活动开始时间,清空报名时间并提示
|
|
|
|
|
+ if (signupStartTime >= activityStartTime || signupEndTime >= activityStartTime) {
|
|
|
|
|
+ activityModel.value.signupTimeRange = [];
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ ruleFormRef.value?.clearValidate("signupTimeRange");
|
|
|
|
|
+ ElMessage.warning("活动时间已调整,报名时间必须在活动开始时间之前,请重新选择报名时间");
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 如果报名时间符合要求,重新验证
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ ruleFormRef.value?.validateField("signupTimeRange");
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
);
|
|
);
|