ME 5 днів тому
батько
коміт
ec0d5db5d6

+ 32 - 22
src/views/emergency/inspection-add-or-update.vue

@@ -6,9 +6,9 @@
               <el-option :label="item.dictLabel" :value="item.dictValue" v-for="item in state.getDictByKey('inspectionType')"></el-option>
           </el-select>
       </el-form-item>
-      <el-form-item label="日巡检-巡检日期" prop="startDate">
+      <el-form-item label="日巡检-巡检日期" prop="inspectionDate">
         <el-date-picker
-          v-model="dataForm.startDate"
+          v-model="dataForm.inspectionDate"
           type="date"
           placeholder="选择日期(日巡检)"
           value-format="YYYY-MM-DD"
@@ -93,7 +93,7 @@ const visible = ref(false);
 const dataFormRef = ref();
 
 const dataForm = reactive({
-  id: '',  inspectionType: '',  startDate: '',  endDate: '',  filePath: '',  status: '',  creator: '',  createDate: '',  updater: '',  updateDate: '',  remark: ''});
+  id: '',  inspectionType: '',  inspectionDate: '',  inspectionName: '',  filePath: '',  status: '',  creator: '',  createDate: '',  updater: '',  updateDate: '',  remark: ''});
 
   
 const rules = ref({
@@ -150,14 +150,14 @@ const getInfo = (id: number) => {
     dataForm.status = dataForm.status + '';
     imageUrl.value = dataForm.filePath;
     
-    // if (dataForm.inspectionType === 'weekly' && dataForm.endDate) {
-    // const match = dataForm.endDate.match(/^(\d{4}-\d{2}) 第(\d+)周/);
-    // if (match) {
-    //   selectedMonth.value = match[1];
-    //   updateWeekOptions(match[1]);
-    //   selectedWeek.value = weekOptions.value[Number(match[2]) - 1]?.value || '';
-    // }
-
+    if (dataForm.inspectionType === '1' && dataForm.inspectionName) {
+    const match = dataForm.inspectionName.match(/^(\d{4}-\d{2}) 第(\d+)周/);
+    if (match) {
+      selectedMonth.value = match[1];
+      updateWeekOptions(match[1]);
+      selectedWeek.value = weekOptions.value[Number(match[2]) - 1]?.value || '';
+    }
+  }
   });
 };
 
@@ -167,28 +167,31 @@ const dataFormSubmitHandle = () => {
     if (!valid) {
       return false;
     }
+    console.log(dataForm.inspectionType);
+    console.log(selectedMonth.value);
+    console.log(selectedWeek.value);
     // 判断巡检类型
-    if (dataForm.inspectionType === 'daily') {
-      if (!dataForm.startDate) {
+    if (dataForm.inspectionType === '0') {
+      if (!dataForm.inspectionDate) {
         return ElMessage.error('日巡检需要选择日期');
       }
-      // 日巡检只需要 startDate
-      dataForm.startDate = dataForm.startDate ? parseTime(new Date(dataForm.startDate), '{yy}-{mm}-{dd}') : null;
-      dataForm.endDate = '';
+      // 日巡检只需要 inspectionDate
+      dataForm.inspectionDate = dataForm.inspectionDate ? parseTime(new Date(dataForm.inspectionDate), '{yy}-{mm}-{dd}') : null;
+      dataForm.inspectionName = '';
     }
 
-    if (dataForm.inspectionType === 'weekly') {
+    if (dataForm.inspectionType === '1') {
       if (!selectedMonth.value || !selectedWeek.value) {
         return ElMessage.error('周巡检需要选择月份和周次');
       }
 
-      // 组装格式字符串,例如 "2025-08 第5周"
+      // 组装格式字符串,"2025-08 第5周"
       const monthLabel = dayjs(selectedMonth.value).format('YYYY-MM');
       const weekIndex = weekOptions.value.findIndex(item => item.value === selectedWeek.value);
       const label = `${monthLabel} 第${weekIndex + 1}周`;
 
-      dataForm.endDate = label;
-      dataForm.startDate = ''; 
+      dataForm.inspectionName = label;
+      dataForm.inspectionDate = ''; 
     }
     if(!imageUrl.value) return ElMessage.error('请上传图片');
     dataForm.filePath = imageUrl.value;
@@ -213,6 +216,7 @@ const updateWeekOptions = (val: string) => {
   const firstDay = dayjs(val + '-01');
   const totalDays = firstDay.daysInMonth();
   const weeks: { label: string; value: string }[] = [];
+  const seenWeeks = new Set<string>(); 
 
   for (let d = 1; d <= totalDays; d++) {
     const current = dayjs(`${val}-${String(d).padStart(2, '0')}`);
@@ -220,9 +224,14 @@ const updateWeekOptions = (val: string) => {
     const startOfWeek = current.startOf('week').format('YYYY-MM-DD');
     const endOfWeek = current.endOf('week').format('YYYY-MM-DD');
 
-    if (!weeks.some(w => w.value === String(week))) {
+    // 避免重复添加相同周(跨月导致)
+    if (!seenWeeks.has(startOfWeek)) {
+      seenWeeks.add(startOfWeek);
+
+      const weekNumber = weeks.length + 1;
+
       weeks.push({
-        label: `第 ${week - dayjs(`${val}-01`).startOf('month').isoWeek() + 1} 周(${startOfWeek} ~ ${endOfWeek})`,
+        label: `第 ${weekNumber} 周(${startOfWeek} ~ ${endOfWeek})`,
         value: week.toString(),
       });
     }
@@ -231,6 +240,7 @@ const updateWeekOptions = (val: string) => {
   weekOptions.value = weeks;
 };
 
+
 defineExpose({
   init
 });

+ 5 - 5
src/views/emergency/inspection.vue

@@ -33,13 +33,13 @@
                   {{ state.getDictLabel("inspectionType", scope.row.inspectionType) }}
                 </template>
               </el-table-column>
-                <el-table-column label="巡检日期" header-align="center" align="center">
+                <el-table-column label="巡检日期" header-align="center" align="center" width="130">
                   <template v-slot="scope">
-                    <span v-if="scope.row.inspectionType === 'daily'">
-                      {{ scope.row.startDate }}
+                    <span v-if="scope.row.inspectionType === 0">
+                      {{ scope.row.inspectionDate }}
                     </span>
-                    <span v-else-if="scope.row.inspectionType === 'weekly'">
-                      {{ scope.row.endDate }}
+                    <span v-else-if="scope.row.inspectionType === 1">
+                      {{ scope.row.inspectionName }}
                     </span>
                     <span v-else>-</span>
                   </template>