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