Просмотр исходного кода

瑞都填报初始化计算时长

Zimo 1 неделя назад
Родитель
Сommit
a1f8ff9a95
1 измененных файлов с 39 добавлено и 26 удалено
  1. 39 26
      src/views/pms/iotrddailyreport/FillDailyReportForm.vue

+ 39 - 26
src/views/pms/iotrddailyreport/FillDailyReportForm.vue

@@ -262,6 +262,31 @@ const initDailyFuel = () => {
   }
 }
 
+function getReportDetailDuration(row: ReportDetail) {
+  if (!row.reportDate || !row.endDateTime || !row.startTime || !row.endTime) {
+    return 0
+  }
+
+  const start = dayjs(row.reportDate)
+    .hour(Number(row.startTime.split(':')[0]))
+    .minute(Number(row.startTime.split(':')[1]))
+    .second(0)
+    .millisecond(0)
+  const end = dayjs(row.endDateTime)
+    .hour(Number(row.endTime.split(':')[0]))
+    .minute(Number(row.endTime.split(':')[1]))
+    .second(0)
+    .millisecond(0)
+
+  let diffMinutes = end.diff(start, 'minute')
+
+  if (diffMinutes < 0) {
+    diffMinutes += 1440
+  }
+
+  return Number((diffMinutes / 60).toFixed(2))
+}
+
 const loading = ref(false)
 let loadDetailVersion = 0
 
@@ -285,19 +310,22 @@ async function loadDetail(id: number) {
     form.value.constructionBrief = data.value.constructionBrief || ''
 
     form.value.reportDetails = (data.value.reportDetails || []).map((item) => {
-      const startTime = formatT(item.startTime)
-      const endTime = formatT(item.endTime)
+      const startTime = formatT(item.startTime) || '08:00'
+      const endTime = formatT(item.endTime) || '08:00'
       const reportDate = item.reportDate ?? data.value.createTime ?? dayjs().valueOf()
       const endDateTime = item.endDateTime ?? dayjs(reportDate).add(1, 'day').valueOf()
 
-      return {
+      const row = {
         reportDate,
         endDateTime,
-        duration: item.duration || 0,
+        duration: 0,
         constructionDetail: item.constructionDetail || '',
         startTime,
         endTime
       }
+
+      row.duration = getReportDetailDuration(row)
+      return row
     })
 
     if (!form.value.reportDetails.length) {
@@ -637,14 +665,16 @@ const addReportDetailRow = () => {
     form.value.reportDetails = []
   }
   const reportDate = data.value.createTime ?? dayjs().valueOf()
-  form.value.reportDetails.push({
+  const row = {
     reportDate,
     endDateTime: dayjs(reportDate).add(1, 'day').valueOf(),
-    startTime: '',
-    endTime: '',
+    startTime: '08:00',
+    endTime: '08:00',
     duration: 0,
     constructionDetail: ''
-  })
+  }
+  row.duration = getReportDetailDuration(row)
+  form.value.reportDetails.push(row)
 }
 
 const removeReportDetailRow = (index: number) => {
@@ -670,24 +700,7 @@ const calculateReportDetailDuration = (row: ReportDetail) => {
     return
   }
 
-  const start = dayjs(row.reportDate)
-    .hour(Number(row.startTime.split(':')[0]))
-    .minute(Number(row.startTime.split(':')[1]))
-    .second(0)
-    .millisecond(0)
-  const end = dayjs(row.endDateTime)
-    .hour(Number(row.endTime.split(':')[0]))
-    .minute(Number(row.endTime.split(':')[1]))
-    .second(0)
-    .millisecond(0)
-
-  let diffMinutes = end.diff(start, 'minute')
-
-  if (diffMinutes < 0) {
-    diffMinutes += 1440
-  }
-
-  row.duration = Number((diffMinutes / 60).toFixed(2))
+  row.duration = getReportDetailDuration(row)
 }
 
 const platformWorkloadData = computed(() => {