|
|
@@ -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(() => {
|