|
|
@@ -101,7 +101,7 @@
|
|
|
>
|
|
|
<FieldTimeOutlined
|
|
|
v-if="!isDateDisabled(date.date) && !date.outOfYearRange && !isCalendarDisabled"
|
|
|
- class="time-setting-icon" @click.stop="handleDateDblClick(date.date, true)"
|
|
|
+ class="time-setting-icon" @click.stop="clickSetTimerRange(date.date)"
|
|
|
/>
|
|
|
<span class="day-number">{{ date.day }}</span>
|
|
|
<span v-if="isDateSelected(date.date)" class="check-mark">✓</span>
|
|
|
@@ -258,15 +258,20 @@ const handlePopupScroll = e => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-// 处理选择变化
|
|
|
-const handleSelectChange = values => {
|
|
|
- selectedDevices.value = values;
|
|
|
+const clearAll = () => {
|
|
|
selectedDates.value = [];
|
|
|
preDates.value = [];
|
|
|
canceledDates.value = [];
|
|
|
currentDates.value = [];
|
|
|
selectedTimers.value = [];
|
|
|
dayTimeRanges.value = {};
|
|
|
+ timeRanges.value = [];
|
|
|
+};
|
|
|
+
|
|
|
+// 处理选择变化
|
|
|
+const handleSelectChange = values => {
|
|
|
+ selectedDevices.value = values;
|
|
|
+ clearAll();
|
|
|
if (values && values.length > 0) {
|
|
|
getSelectedDates();
|
|
|
}
|
|
|
@@ -432,7 +437,7 @@ const processSingleClick = date => {
|
|
|
|
|
|
|
|
|
// 处理日期双击事件
|
|
|
-const handleDateDblClick = (date, isDblClick = false) => {
|
|
|
+const clickSetTimerRange = date => {
|
|
|
// 如果日历被禁用,则不执行任何操作
|
|
|
if (isCalendarDisabled.value) {
|
|
|
message.warning('请先选择终端');
|
|
|
@@ -450,8 +455,26 @@ const handleDateDblClick = (date, isDblClick = false) => {
|
|
|
// 检查当前日期是否被选中
|
|
|
isCurrentDateSelected.value = isDateSelected(date);
|
|
|
|
|
|
- // 查询该日期的时间段
|
|
|
- isDblClick && queryDayTimeRanges(currentEditDate.value);
|
|
|
+ // 打开时间段设置窗口,并使用已有的时间段数据
|
|
|
+ // 查询日期的时间段数据,现在直接使用已保存的数据
|
|
|
+ const dateStr = currentEditDate.value;
|
|
|
+ isShowTimerRange.value = true;
|
|
|
+
|
|
|
+ if (dayTimeRanges.value[dateStr] && dayTimeRanges.value[dateStr].length > 0) {
|
|
|
+ // 使用已有的时间段数据
|
|
|
+ timeRanges.value = dayTimeRanges.value[dateStr].map(time => ({
|
|
|
+ startTime: dayjs(time.startTime, 'HH:mm:ss'),
|
|
|
+ endTime: dayjs(time.endTime, 'HH:mm:ss'),
|
|
|
+ }));
|
|
|
+ } else {
|
|
|
+ // 如果没有现有数据,则初始化一个空的时间段
|
|
|
+ timeRanges.value = [
|
|
|
+ {
|
|
|
+ startTime: null,
|
|
|
+ endTime: null,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
// 切换日期选中状态
|
|
|
@@ -673,9 +696,9 @@ const saveSelections = () => {
|
|
|
// 所有的时间段DTO
|
|
|
const allTimeDtos = JSON.parse(JSON.stringify(selectedTimers.value));
|
|
|
|
|
|
-
|
|
|
// 日期的时间段DTO
|
|
|
const dayDtos = finalDates.map(day => {
|
|
|
+ // 使用已经存储的时间段或空数组
|
|
|
const timeDtos = dayTimeRanges.value[day] || [];
|
|
|
return {
|
|
|
day,
|
|
|
@@ -704,7 +727,7 @@ const saveSelections = () => {
|
|
|
notification.open({
|
|
|
message: '注意',
|
|
|
description:
|
|
|
- `选择的日期内存在未设置时间段的日期【 ${dateListText} 】,您可以【点击设置时间段按钮】去设置总时间段,或者【双击以上日期】设置单独的时间段。`,
|
|
|
+ `选择的日期内存在未设置时间段的日期【 ${dateListText} 】,您可以【点击设置时间段按钮】去设置总时间段,或者【点击日期左上角时钟图标】设置单独的时间段。`,
|
|
|
placement: 'topRight',
|
|
|
icon: () =>
|
|
|
h(WarningTwoTone, {
|
|
|
@@ -717,11 +740,6 @@ const saveSelections = () => {
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
- // console.log('合并后的日期数量:', finalDates.length);
|
|
|
- // console.log('取消的日期数量:', validCanceledDates.length);
|
|
|
- // console.log('cancelDtos', cancelDtos);
|
|
|
- // console.log('dayDtos', dayDtos);
|
|
|
- // console.log('allTimeDtos', allTimeDtos);
|
|
|
|
|
|
// 调用保存接口
|
|
|
saveDate(cancelDtos, dayDtos, allTimeDtos);
|
|
|
@@ -857,9 +875,17 @@ const getSelectedDates = () => {
|
|
|
success => {
|
|
|
if (success.errorCode === 0) {
|
|
|
if (success.datas && success.datas.length > 0) {
|
|
|
- selectedDates.value = success.datas;
|
|
|
- preDates.value = success.datas;
|
|
|
+ // 提取日期列表
|
|
|
+ selectedDates.value = success.datas.map(item => item.day);
|
|
|
+ preDates.value = [...selectedDates.value];
|
|
|
canceledDates.value = [];
|
|
|
+
|
|
|
+ // 保存每个日期的时间段数据到dayTimeRanges
|
|
|
+ success.datas.forEach(item => {
|
|
|
+ if (item.times && item.times.length > 0) {
|
|
|
+ dayTimeRanges.value[item.day] = item.times;
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
} else {
|
|
|
message.warning(success.errorMessage);
|
|
|
@@ -905,9 +931,8 @@ const saveDate = (cancelDtos, dayDtos, timeDtos) => {
|
|
|
success => {
|
|
|
if (success.errorCode === 0) {
|
|
|
message.success('保存成功');
|
|
|
-
|
|
|
- // 保存成功后清除本地缓存,下次将从服务器获取最新数据
|
|
|
- dayTimeRanges.value = {};
|
|
|
+ clearAll();
|
|
|
+ getSelectedDates();
|
|
|
} else {
|
|
|
message.warning(success.errorMessage);
|
|
|
}
|