|
@@ -529,13 +529,15 @@ let event = reactive({
|
|
|
});
|
|
|
|
|
|
let eventType = ref(""); // 課程類型
|
|
|
-let isOneDay = ref(true); // 是否為一日課程
|
|
|
+let isOneDay = ref(null); // 是否為一日課程
|
|
|
|
|
|
watch(eventType, (val) => {
|
|
|
+ console.log("eventType", val);
|
|
|
if (val === "週期課程(例:2023/10/1~2023/10/30 每週一三上課)") {
|
|
|
isOneDay.value = false;
|
|
|
} else {
|
|
|
isOneDay.value = true;
|
|
|
+ date.end_date = date.start_date;
|
|
|
}
|
|
|
});
|
|
|
|
|
@@ -553,7 +555,7 @@ watch(event, (data) => {
|
|
|
|
|
|
let date = reactive({
|
|
|
start_date: "", // 起始日期
|
|
|
- start_time: { hours: 13, minutes: 20, seconds: 0 }, // 起始時間
|
|
|
+ start_time: "", // 起始時間
|
|
|
end_date: "", // 結束日期
|
|
|
end_time: "", // 結束時間
|
|
|
registration_start_date: "", // 報名起始日期
|
|
@@ -584,29 +586,30 @@ async function editEvent(id) {
|
|
|
// 處理時間
|
|
|
if (key === "start_time") {
|
|
|
date.start_time = dateToObject(classes[key]);
|
|
|
- date.start_date = classes[key].split("T")[0];
|
|
|
+ date.start_date = store.convertUTCtoTaiwanTime(classes[key]);
|
|
|
}
|
|
|
|
|
|
if (key === "end_time") {
|
|
|
+ console.log("date.end_date !!!", date.end_date);
|
|
|
date.end_time = dateToObject(classes[key]);
|
|
|
- date.end_date = classes[key].split("T")[0];
|
|
|
+ date.end_date = store.convertUTCtoTaiwanTime(classes[key]);
|
|
|
+ console.log("date.end_date >>>", date.end_date);
|
|
|
}
|
|
|
|
|
|
if (key === "registration_start") {
|
|
|
date.registration_start_time = dateToObject(classes[key]);
|
|
|
- date.registration_start_date = classes[key].split("T")[0];
|
|
|
+ date.registration_start_date = store.convertUTCtoTaiwanTime(
|
|
|
+ classes[key]
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
if (key === "registration_end") {
|
|
|
date.registration_end_time = dateToObject(classes[key]);
|
|
|
- date.registration_end_date = classes[key].split("T")[0];
|
|
|
+ date.registration_end_date = store.convertUTCtoTaiwanTime(classes[key]);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ console.log("處理完時間後>", date);
|
|
|
getAssignSession(event.id); // 取得課堂
|
|
|
- console.log("date", date);
|
|
|
-
|
|
|
- console.log("event", event);
|
|
|
} catch (error) {
|
|
|
console.error(error);
|
|
|
}
|
|
@@ -666,6 +669,22 @@ async function getAssignSession(eventId) {
|
|
|
} else {
|
|
|
isOneDay.value = false;
|
|
|
eventType.value = "週期課程(例:2023/10/1~2023/10/30 每週一三上課)";
|
|
|
+
|
|
|
+ selectedWeek.value = response.data.data_form.week_day;
|
|
|
+ console.log("selectedWeek.value", selectedWeek.value);
|
|
|
+
|
|
|
+ // 週期起始時間
|
|
|
+ sessionTime.start_week_time = convertTimeArrays(
|
|
|
+ response.data.data_form.start_week_time
|
|
|
+ );
|
|
|
+
|
|
|
+ // 週期結束時間
|
|
|
+ sessionTime.end_week_time = convertTimeArrays(
|
|
|
+ response.data.data_form.end_week_time
|
|
|
+ );
|
|
|
+
|
|
|
+ console.log("週期起始時間", sessionTime.start_week_time);
|
|
|
+ console.log("週期結束時間", sessionTime.end_week_time);
|
|
|
}
|
|
|
console.log("event", event);
|
|
|
console.log("是否為一日課程", isOneDay.value);
|
|
@@ -675,6 +694,30 @@ async function getAssignSession(eventId) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// 若為一日課程則起始日期 = 結束日期
|
|
|
+watch(date, (val) => {
|
|
|
+ if (isOneDay.value && val.start_date) {
|
|
|
+ date.end_date = val.start_date;
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+// 轉換週期時間格式
|
|
|
+function convertTimeArrays(timeArrays) {
|
|
|
+ return timeArrays.map((timeString) => {
|
|
|
+ if (timeString === null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ const [hours, minutes] = timeString.split(":").map(Number);
|
|
|
+
|
|
|
+ return {
|
|
|
+ hours,
|
|
|
+ minutes,
|
|
|
+ seconds: 0,
|
|
|
+ };
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
// 更新課堂
|
|
|
async function updateSession() {
|
|
|
console.log("更新課堂");
|
|
@@ -688,6 +731,44 @@ async function updateSession() {
|
|
|
|
|
|
console.log("oneDayData", oneDayData);
|
|
|
|
|
|
+ // 週期課程(課堂資訊)
|
|
|
+ const weekString = `[${selectedWeek.value.join(",")}]`;
|
|
|
+ session.week_day_str = weekString;
|
|
|
+
|
|
|
+ console.log("weekString", weekString);
|
|
|
+
|
|
|
+ selectedWeek.value.map((item, index) => {
|
|
|
+ if (item) {
|
|
|
+ console.log("index", index);
|
|
|
+ // 開始時間
|
|
|
+ sessionStartTimeList.value[index] = `"${
|
|
|
+ sessionTime.start_week_time[index].hours < 10 ? "0" : ""
|
|
|
+ }${sessionTime.start_week_time[index].hours}:${
|
|
|
+ sessionTime.start_week_time[index].minutes === 0
|
|
|
+ ? "00"
|
|
|
+ : sessionTime.start_week_time[index].minutes
|
|
|
+ }:00"`;
|
|
|
+
|
|
|
+ // 結束時間
|
|
|
+ sessionEndTimeList.value[index] = `"${
|
|
|
+ sessionTime.end_week_time[index].hours
|
|
|
+ }:${
|
|
|
+ sessionTime.end_week_time[index].minutes === 0
|
|
|
+ ? "00"
|
|
|
+ : sessionTime.end_week_time[index].minutes
|
|
|
+ }:00"`;
|
|
|
+ } else {
|
|
|
+ sessionStartTimeList.value[index] = '""';
|
|
|
+ sessionEndTimeList.value[index] = '""';
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ session.start_week_time = `[${sessionStartTimeList.value}]`;
|
|
|
+ session.end_week_time = `[${sessionEndTimeList.value}]`;
|
|
|
+ session.class_event_id = event.id;
|
|
|
+
|
|
|
+ console.log("session", session);
|
|
|
+
|
|
|
try {
|
|
|
if (isOneDay.value) {
|
|
|
const oneDayFormData = new FormData();
|
|
@@ -714,19 +795,39 @@ async function updateSession() {
|
|
|
);
|
|
|
console.log("新增課堂(週期) response", response);
|
|
|
}
|
|
|
- // const response = await axios.post(
|
|
|
- // "https://cmm.ai:8088/api/auto_create_session",
|
|
|
- // formData
|
|
|
- // );
|
|
|
- // console.log("新增課堂 response", response);
|
|
|
} catch (error) {
|
|
|
console.error(error);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+let dateReminder = ref(false);
|
|
|
+
|
|
|
+// 判斷兩組日期是否相同
|
|
|
+function isSameDay(date1, date2) {
|
|
|
+ const year1 = date1.getFullYear();
|
|
|
+ const month1 = date1.getMonth() + 1;
|
|
|
+ const day1 = date1.getDate();
|
|
|
+
|
|
|
+ const year2 = date2.getFullYear();
|
|
|
+ const month2 = date2.getMonth() + 1;
|
|
|
+ const day2 = date2.getDate();
|
|
|
+
|
|
|
+ return `${year1}${month1}${day1}` === `${year2}${month2}${day2}`;
|
|
|
+}
|
|
|
+
|
|
|
// 更新場次
|
|
|
async function updateEvent() {
|
|
|
+ console.log("date", date);
|
|
|
+
|
|
|
+ let isSame = isSameDay(date.start_date, date.end_date);
|
|
|
+ // 起始日期不可等於結束日期(週期課程)
|
|
|
+ if (!isOneDay.value && isSame) {
|
|
|
+ dateReminder.value = true;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ dateReminder.value = false;
|
|
|
saveLoading.value = true;
|
|
|
+
|
|
|
// 處理時間格式
|
|
|
event.start_time = store.mergeAndFormatDateTime(
|
|
|
date.start_date,
|
|
@@ -760,10 +861,6 @@ async function updateEvent() {
|
|
|
store.setAlert("儲存成功");
|
|
|
}, 1000);
|
|
|
|
|
|
- // setTimeout(() => {
|
|
|
- // // sessionsDialog.value = false;
|
|
|
- // }, 1500);
|
|
|
-
|
|
|
console.log("更新場次", response);
|
|
|
} catch (error) {
|
|
|
console.error(error);
|
|
@@ -1157,21 +1254,13 @@ async function closeClass(id) {
|
|
|
未審核
|
|
|
</v-chip>
|
|
|
<v-chip
|
|
|
- v-else-if="item.is_check === 1 && item.state !== '課程已關閉'"
|
|
|
+ v-else-if="item.is_check === 1"
|
|
|
color="green"
|
|
|
text-color="white"
|
|
|
>
|
|
|
已審核
|
|
|
</v-chip>
|
|
|
|
|
|
- <v-chip
|
|
|
- v-else-if="item.is_check === 1 && item.state === '課程已關閉'"
|
|
|
- variant="flat"
|
|
|
- color="grey-darken-1"
|
|
|
- >
|
|
|
- 已關閉
|
|
|
- </v-chip>
|
|
|
-
|
|
|
<v-chip
|
|
|
v-else-if="item.is_check === 2"
|
|
|
color="error"
|
|
@@ -1179,6 +1268,14 @@ async function closeClass(id) {
|
|
|
>
|
|
|
已駁回
|
|
|
</v-chip>
|
|
|
+
|
|
|
+ <v-chip
|
|
|
+ v-else-if="item.is_check === 3"
|
|
|
+ variant="flat"
|
|
|
+ color="grey-darken-1"
|
|
|
+ >
|
|
|
+ 已關閉
|
|
|
+ </v-chip>
|
|
|
</td>
|
|
|
<td>{{ item.name }}</td>
|
|
|
<td>
|
|
@@ -1197,7 +1294,7 @@ async function closeClass(id) {
|
|
|
v-bind="props"
|
|
|
color="purple"
|
|
|
variant="outlined"
|
|
|
- :disabled="item.state === '課程已關閉'"
|
|
|
+ :disabled="item.is_check === 3"
|
|
|
>
|
|
|
<p>課程管理</p>
|
|
|
</v-btn>
|
|
@@ -1854,7 +1951,10 @@ async function closeClass(id) {
|
|
|
cols="12"
|
|
|
class="d-flex py-0"
|
|
|
>
|
|
|
- <p class="pt-1 pe-3">
|
|
|
+ <p
|
|
|
+ class="pt-1 pe-3"
|
|
|
+ style="width: 100px"
|
|
|
+ >
|
|
|
重複週期<span class="mark pb-4"
|
|
|
>*</span
|
|
|
>
|
|
@@ -1934,7 +2034,11 @@ async function closeClass(id) {
|
|
|
/>
|
|
|
</v-col>
|
|
|
|
|
|
- <v-col cols="12" sm="6" class="date-item">
|
|
|
+ <v-col
|
|
|
+ cols="12"
|
|
|
+ sm="6"
|
|
|
+ class="date-item position-relative"
|
|
|
+ >
|
|
|
<p class="mb-0 pe-3">
|
|
|
結束日期<span class="mark">*</span>
|
|
|
</p>
|
|
@@ -1944,7 +2048,13 @@ async function closeClass(id) {
|
|
|
:enable-time-picker="false"
|
|
|
:format="store.datePickerFormat"
|
|
|
locale="cn"
|
|
|
+ :disabled="isOneDay"
|
|
|
></VueDatePicker>
|
|
|
+ <span
|
|
|
+ v-if="dateReminder"
|
|
|
+ class="date-reminder text-error"
|
|
|
+ >選擇週期課程時,起始日期與結束日期不可為同一天</span
|
|
|
+ >
|
|
|
</v-col>
|
|
|
|
|
|
<v-col cols="12" sm="6" class="date-item">
|
|
@@ -2491,11 +2601,19 @@ async function closeClass(id) {
|
|
|
</v-card>
|
|
|
</template>
|
|
|
|
|
|
-<style lang="scss">
|
|
|
+<style lang="scss" scoped>
|
|
|
.user-courses {
|
|
|
p,
|
|
|
a {
|
|
|
font-size: 0.8em;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.date-reminder {
|
|
|
+ position: absolute;
|
|
|
+ bottom: -25px;
|
|
|
+ left: 100px;
|
|
|
+ font-size: 0.75em;
|
|
|
+ line-height: 1.2;
|
|
|
+}
|
|
|
</style>
|