|
@@ -443,28 +443,29 @@ const rules = reactive({
|
|
|
}
|
|
}
|
|
|
const start = new Date(startTime);
|
|
const start = new Date(startTime);
|
|
|
const end = new Date(endTime);
|
|
const end = new Date(endTime);
|
|
|
- if (start >= end) {
|
|
|
|
|
|
|
+ start.setHours(0, 0, 0, 0);
|
|
|
|
|
+ end.setHours(0, 0, 0, 0);
|
|
|
|
|
+ if (start.getTime() >= end.getTime()) {
|
|
|
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 = 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("报名开始时间必须在活动开始时间之前"));
|
|
|
|
|
|
|
+ const activityStart = new Date(activityModel.value.activityTimeRange[0]);
|
|
|
|
|
+ activityStart.setHours(0, 0, 0, 0);
|
|
|
|
|
+ const activityEnd = new Date(activityModel.value.activityTimeRange[1]);
|
|
|
|
|
+ activityEnd.setHours(0, 0, 0, 0);
|
|
|
|
|
+
|
|
|
|
|
+ if (start.getTime() < activityStart.getTime()) {
|
|
|
|
|
+ callback(new Error("报名开始时间必须在活动时间范围内"));
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- if (end >= activityStartTime) {
|
|
|
|
|
- callback(new Error("报名结束时间必须在活动开始时间之前"));
|
|
|
|
|
|
|
+ if (end.getTime() > activityEnd.getTime()) {
|
|
|
|
|
+ callback(new Error("报名结束时间必须在活动时间范围内"));
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -594,24 +595,24 @@ const disabledDate = (time: Date) => {
|
|
|
return time.getTime() < today.getTime();
|
|
return time.getTime() < today.getTime();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-// 禁用报名日期(不能早于今天,且不能晚于或等于活动开始时间)
|
|
|
|
|
|
|
+// 禁用报名日期:只能选择活动时间范围内的日期(在活动开始日期与结束日期之间)
|
|
|
const disabledSignupDate = (time: Date) => {
|
|
const disabledSignupDate = (time: Date) => {
|
|
|
- const today = new Date();
|
|
|
|
|
- today.setHours(0, 0, 0, 0);
|
|
|
|
|
|
|
+ const t = new Date(time);
|
|
|
|
|
+ t.setHours(0, 0, 0, 0);
|
|
|
|
|
|
|
|
- // 不能早于今天
|
|
|
|
|
- if (time.getTime() < today.getTime()) {
|
|
|
|
|
|
|
+ // 未选择活动时间时,不允许选择报名日期
|
|
|
|
|
+ if (!activityModel.value.activityTimeRange || activityModel.value.activityTimeRange.length !== 2) {
|
|
|
return true;
|
|
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();
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const activityStart = new Date(activityModel.value.activityTimeRange[0]);
|
|
|
|
|
+ activityStart.setHours(0, 0, 0, 0);
|
|
|
|
|
+ const activityEnd = new Date(activityModel.value.activityTimeRange[1]);
|
|
|
|
|
+ activityEnd.setHours(0, 0, 0, 0);
|
|
|
|
|
|
|
|
|
|
+ // 只能选择活动时间区域内的日期:早于活动开始或晚于活动结束的日期禁用
|
|
|
|
|
+ if (t.getTime() < activityStart.getTime()) return true;
|
|
|
|
|
+ if (t.getTime() > activityEnd.getTime()) return true;
|
|
|
return false;
|
|
return false;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -1158,7 +1159,7 @@ watch(
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 监听活动时间变化,如果报名时间不符合要求则清空并提示
|
|
|
|
|
|
|
+ * 监听活动时间变化,如果报名时间不在新的活动时间范围内则清空并提示
|
|
|
*/
|
|
*/
|
|
|
watch(
|
|
watch(
|
|
|
() => activityModel.value.activityTimeRange,
|
|
() => activityModel.value.activityTimeRange,
|
|
@@ -1176,22 +1177,24 @@ watch(
|
|
|
activityModel.value.signupTimeRange &&
|
|
activityModel.value.signupTimeRange &&
|
|
|
activityModel.value.signupTimeRange.length === 2
|
|
activityModel.value.signupTimeRange.length === 2
|
|
|
) {
|
|
) {
|
|
|
- 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) {
|
|
|
|
|
|
|
+ const activityStart = new Date(newVal[0]);
|
|
|
|
|
+ activityStart.setHours(0, 0, 0, 0);
|
|
|
|
|
+ const activityEnd = new Date(newVal[1]);
|
|
|
|
|
+ activityEnd.setHours(0, 0, 0, 0);
|
|
|
|
|
+ const signupStart = new Date(activityModel.value.signupTimeRange[0]);
|
|
|
|
|
+ signupStart.setHours(0, 0, 0, 0);
|
|
|
|
|
+ const signupEnd = new Date(activityModel.value.signupTimeRange[1]);
|
|
|
|
|
+ signupEnd.setHours(0, 0, 0, 0);
|
|
|
|
|
+
|
|
|
|
|
+ // 报名时间必须在活动时间范围内,否则清空报名时间并提示
|
|
|
|
|
+ const outOfRange = signupStart.getTime() < activityStart.getTime() || signupEnd.getTime() > activityEnd.getTime();
|
|
|
|
|
+ if (outOfRange) {
|
|
|
activityModel.value.signupTimeRange = [];
|
|
activityModel.value.signupTimeRange = [];
|
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
|
ruleFormRef.value?.clearValidate("signupTimeRange");
|
|
ruleFormRef.value?.clearValidate("signupTimeRange");
|
|
|
- ElMessage.warning("活动时间已调整,报名时间必须在活动开始时间之前,请重新选择报名时间");
|
|
|
|
|
|
|
+ ElMessage.warning("活动时间已调整,报名时间必须在活动时间范围内,请重新选择报名时间");
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
|
- // 如果报名时间符合要求,重新验证
|
|
|
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
|
ruleFormRef.value?.validateField("signupTimeRange");
|
|
ruleFormRef.value?.validateField("signupTimeRange");
|
|
|
});
|
|
});
|
|
@@ -1388,7 +1391,10 @@ const handleSubmit = async () => {
|
|
|
|
|
|
|
|
await ruleFormRef.value.validate(async valid => {
|
|
await ruleFormRef.value.validate(async valid => {
|
|
|
if (valid) {
|
|
if (valid) {
|
|
|
- const [startTime, endTime] = activityModel.value.activityTimeRange || [];
|
|
|
|
|
|
|
+ const [activityStartDate, activityEndDate] = activityModel.value.activityTimeRange || [];
|
|
|
|
|
+ // 活动时间:开始日期传当天 00:00:00,结束日期传当天 23:59:59
|
|
|
|
|
+ const startTime = activityStartDate ? `${activityStartDate} 00:00:00` : "";
|
|
|
|
|
+ const endTime = activityEndDate ? `${activityEndDate} 23:59:59` : "";
|
|
|
const auditParam = {
|
|
const auditParam = {
|
|
|
text: `${activityModel.value.activityName}, ${activityModel.value.imgDescribe || ""}`,
|
|
text: `${activityModel.value.activityName}, ${activityModel.value.imgDescribe || ""}`,
|
|
|
image_urls: [titleImageUrl.value, detailImageUrl.value]
|
|
image_urls: [titleImageUrl.value, detailImageUrl.value]
|
|
@@ -1396,8 +1402,8 @@ const handleSubmit = async () => {
|
|
|
const params: any = {
|
|
const params: any = {
|
|
|
activityType: activityModel.value.activityType,
|
|
activityType: activityModel.value.activityType,
|
|
|
activityName: activityModel.value.activityName,
|
|
activityName: activityModel.value.activityName,
|
|
|
- startTime: startTime,
|
|
|
|
|
- endTime: endTime,
|
|
|
|
|
|
|
+ startTime,
|
|
|
|
|
+ endTime,
|
|
|
uploadImgType: activityModel.value.uploadImgType,
|
|
uploadImgType: activityModel.value.uploadImgType,
|
|
|
storeId: localGet("createdId"),
|
|
storeId: localGet("createdId"),
|
|
|
groupType: localGet("businessSection"),
|
|
groupType: localGet("businessSection"),
|
|
@@ -1407,10 +1413,10 @@ const handleSubmit = async () => {
|
|
|
|
|
|
|
|
// 根据活动类型添加不同的字段,确保只提交对应类型的字段
|
|
// 根据活动类型添加不同的字段,确保只提交对应类型的字段
|
|
|
if (activityModel.value.activityType === "MARKETING") {
|
|
if (activityModel.value.activityType === "MARKETING") {
|
|
|
- // 营销活动:只添加营销活动相关字段
|
|
|
|
|
- const [signupStartTime, signupEndTime] = activityModel.value.signupTimeRange || [];
|
|
|
|
|
- params.signupStartTime = signupStartTime;
|
|
|
|
|
- params.signupEndTime = signupEndTime;
|
|
|
|
|
|
|
+ // 营销活动:只添加营销活动相关字段;报名时间开始传当天 00:00:00,结束传当天 23:59:59
|
|
|
|
|
+ const [signupStartDate, signupEndDate] = activityModel.value.signupTimeRange || [];
|
|
|
|
|
+ params.signupStartTime = signupStartDate ? `${signupStartDate} 00:00:00` : "";
|
|
|
|
|
+ params.signupEndTime = signupEndDate ? `${signupEndDate} 23:59:59` : "";
|
|
|
params.activityLimitPeople = activityModel.value.activityLimitPeople;
|
|
params.activityLimitPeople = activityModel.value.activityLimitPeople;
|
|
|
params.activityDetails = activityModel.value.activityDetails;
|
|
params.activityDetails = activityModel.value.activityDetails;
|
|
|
// 确保不包含评论有礼的字段
|
|
// 确保不包含评论有礼的字段
|