Browse Source

3.1.4-sfc.9 修改日历查询结构

liuyanpeng 1 year ago
parent
commit
9501ee92df
3 changed files with 49 additions and 24 deletions
  1. 1 1
      package.json
  2. 44 19
      src/shelf/DeviceTimingSwitcher.vue
  3. 4 4
      src/shelf/ShelfBoard.vue

+ 1 - 1
package.json

@@ -1,7 +1,7 @@
 {
   "name": "client-wms-v3",
   "description": "Leanwo Prodog Client",
-  "version": "3.1.4-sfc.5",
+  "version": "3.1.4-sfc.9",
   "author": "yangzhijie1488 <yangzhijie1488@163.com>",
   "scripts": {
     "dev": "cross-env webpack serve --config ./webpack.dev.js",

+ 44 - 19
src/shelf/DeviceTimingSwitcher.vue

@@ -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);
       }

+ 4 - 4
src/shelf/ShelfBoard.vue

@@ -100,11 +100,11 @@ const getClientList = () => {
 
 const openBoard = () => {
   if(!shelfInfo.value.client) {
-    message.warning('请选择客户');
+    message.warning('请选择客户');
     return;
   }
-  if (!shelfInfo.value.no || !shelfInfo.value.name) {
-    message.warning('请选择货架编号或填写货架标题');
+  if (!shelfInfo.value.no ) {
+    message.warning('请选择货架编号');
     return;
   }
   let type = 'shelfOne.html';
@@ -113,7 +113,7 @@ const openBoard = () => {
   // } else if (shelfInfo.value.name === '总装紧固件(取货区)') {
   //   type = 'shelfTwo.html';
   // }
-  const url = `/shelfBoard/html/${type}?client=${shelfInfo.value.client}&shelfNumber=${shelfInfo.value.no}&shelfName=${shelfInfo.value.name}`;
+  const url = `/shelfBoard/html/${type}?client=${shelfInfo.value.client}&shelfNumber=${shelfInfo.value.no}`;
   window.open(url);
 };
 </script>