| | |
| | | <view class="list-content" v-if="list.length > 0"> |
| | | <view class="header"> |
| | | <view class="item"> |
| | | <view class="title">{{accumulatedDuration}}<text class="text">min</text></view> |
| | | <view class="title">{{totalDuration}}<text class="text">min</text></view> |
| | | <view class="text">累计时长</view> |
| | | </view> |
| | | <!-- <view class="item"> |
| | | <view class="title">{{accumulatedMileage}}<text class="text">m</text></view> |
| | | <view class="text">累计里程</view> |
| | | </view> --> |
| | | |
| | | <view class="item"> |
| | | <view class="title">{{cumulativeCount}}</view> |
| | | <view class="title">{{totalCount}}</view> |
| | | <view class="text">累计次数</view> |
| | | </view> |
| | | </view> |
| | | <view class="list"> |
| | | <view class="task-header" v-if="fixedList.length > 0">固定任务</view> |
| | | <template v-for="(group) in fixedList" :key="group.date"> |
| | | <!-- <view class="task-header" v-if="fixedList.length > 0">固定任务</view> --> |
| | | <template v-for="(group) in taskList" :key="group.date"> |
| | | <view class="task-header">{{group.date}}</view> |
| | | <view class="task-list-view"> |
| | | <TaskLogItemView class="list-item" v-for="(item,index) in group.list" :key="index" :taskData="item"> |
| | | <TaskLogItemView class="list-item" v-for="(item,index) in group.list" :key="index" |
| | | :taskData="item"> |
| | | </TaskLogItemView> |
| | | </view> |
| | | </template> |
| | | <view class="task-header" v-if="tempList.length > 0">临时任务</view> |
| | | <!-- <view class="task-header" v-if="tempList.length > 0">临时任务</view> |
| | | <template v-for="(group) in tempList" :key="group.date"> |
| | | <view class="task-header">{{group.date}}</view> |
| | | <view class="task-list-view"> |
| | | <TaskLogItemView class="list-item" v-for="(item,index) in group.list" :key="index" :taskData="item"> |
| | | <TaskLogItemView class="list-item" v-for="(item,index) in group.list" :key="index" |
| | | :taskData="item"> |
| | | |
| | | </TaskLogItemView> |
| | | </view> |
| | | </template> |
| | | </template> --> |
| | | </view> |
| | | </view> |
| | | <view class="list-no-content" v-else> |
| | |
| | | <script> |
| | | import { |
| | | showToast, |
| | | showModal |
| | | showModal, |
| | | showError, |
| | | showInfo |
| | | } from "@/comm/utils.js" |
| | | import TaskLogItemView from "./infos/task-log-item.vue" |
| | | import { |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | ip:"", |
| | | ip: "", |
| | | sceneId: "", |
| | | list: [], |
| | | } |
| | | }, |
| | | computed: { |
| | | taskList() { |
| | | const listRes = [] |
| | | this.list.forEach((ele) => { |
| | | const dateStart = new Date(Number(ele.start_time)) |
| | | const date = `${dateStart.getMonth()}-${dateStart.getDay()}`; |
| | | const curIndex = listRes.findIndex((a) => a.date == date) |
| | | if (curIndex < 0) { |
| | | let group = { |
| | | date, |
| | | list: [ele] |
| | | } |
| | | listRes.push(group) |
| | | } else { |
| | | let group = listRes[curIndex] |
| | | group.list.push(ele) |
| | | } |
| | | |
| | | }) |
| | | listRes.sort((a, b) => { |
| | | return a.date < b.date ? 1 : -1 |
| | | }); |
| | | return listRes |
| | | }, |
| | | fixedList() { |
| | | let list = this.list.filter((a) => a.tasktype == 1) |
| | | let group |
| | |
| | | }) |
| | | return listRes |
| | | }, |
| | | tempList() { |
| | | let list = this.list.filter((a) => a.tasktype == 2) |
| | | let group |
| | | const listRes = [] |
| | | list.sort((a, b) => { |
| | | return a.date > b.date |
| | | }); |
| | | list.forEach((item) => { |
| | | if (group) { |
| | | if (item.date != group.date) { |
| | | group = { |
| | | date: item.date, |
| | | list: [] |
| | | } |
| | | listRes.push(group) |
| | | } |
| | | } else { |
| | | group = { |
| | | date: item.date, |
| | | list: [] |
| | | } |
| | | listRes.push(group) |
| | | } |
| | | group.list.push(item) |
| | | }) |
| | | return listRes |
| | | }, |
| | | accumulatedDuration() { |
| | | let res = 0 |
| | | totalDuration() { |
| | | let d = 0 |
| | | // this.list.forEach((item) => { |
| | | // d += item.duration || 0 |
| | | // }) |
| | | this.list.forEach((item) => { |
| | | res += item.duration || 0 |
| | | d +=( item.end_time - item.start_time) |
| | | }) |
| | | return res |
| | | return Math.ceil(d / (60 * 1000)) |
| | | }, |
| | | accumulatedMileage() { |
| | | let res = 0 |
| | | this.list.forEach((item) => { |
| | | res += item.accumulated_mileage || 0 |
| | | }) |
| | | return res |
| | | }, |
| | | cumulativeCount() { |
| | | let res = 0 |
| | | this.list.forEach((item) => { |
| | | res += item.cycleNumber || 0 |
| | | }) |
| | | return res |
| | | totalCount() { |
| | | let cnt =this.list.length |
| | | // this.list.forEach((item) => { |
| | | // cnt += item.list.length |
| | | // }) |
| | | return cnt |
| | | }, |
| | | }, |
| | | onLoad(option) { |
| | |
| | | }, |
| | | async loadData() { |
| | | try { |
| | | /*this.list = [{ |
| | | type: 0, |
| | | taskButton: 1, |
| | | name: "1号站点到2号站点", |
| | | date: "5-18", |
| | | accumulated_duration: 5693, |
| | | accumulated_mileage: 6421, |
| | | cumulative_number: 55, |
| | | status: 1, |
| | | }, { |
| | | type: 0, |
| | | taskButton: 2, |
| | | name: "2号站点到1号站点", |
| | | date: "5-08", |
| | | accumulated_duration: 888, |
| | | accumulated_mileage: 642, |
| | | cumulative_number: 31, |
| | | status: 2, |
| | | }, { |
| | | type: 0, |
| | | taskButton: 1, |
| | | name: "1号站点到2号站点", |
| | | date: "4-28", |
| | | accumulated_duration: 998, |
| | | accumulated_mileage: 2421, |
| | | cumulative_number: 85, |
| | | status: 2, |
| | | }, { |
| | | type: 0, |
| | | taskButton: 2, |
| | | name: "2号站点到1号站点", |
| | | date: "4-28", |
| | | accumulated_duration: 688, |
| | | accumulated_mileage: 1421, |
| | | cumulative_number: 65, |
| | | status: 4, |
| | | }, { |
| | | type: 1, |
| | | taskButton: 3, |
| | | name: "1号站点到2号站点", |
| | | date: "5-18", |
| | | accumulated_duration: 5693, |
| | | accumulated_mileage: 6421, |
| | | cumulative_number: 55, |
| | | status: 2, |
| | | }, { |
| | | type: 1, |
| | | taskButton: 4, |
| | | name: "2号站点到1号站点", |
| | | date: "5-08", |
| | | accumulated_duration: 888, |
| | | accumulated_mileage: 642, |
| | | cumulative_number: 31, |
| | | status: 2, |
| | | }, { |
| | | type: 1, |
| | | taskButton: 3, |
| | | name: "1号站点到2号站点", |
| | | date: "4-28", |
| | | accumulated_duration: 998, |
| | | accumulated_mileage: 2421, |
| | | cumulative_number: 85, |
| | | status: 2, |
| | | }, { |
| | | type: 1, |
| | | taskButton: 4, |
| | | name: "2号站点到1号站点", |
| | | date: "4-28", |
| | | accumulated_duration: 688, |
| | | accumulated_mileage: 1421, |
| | | cumulative_number: 65, |
| | | status: 2, |
| | | |
| | | }]*/ |
| | | this.list = await this.loadTaskLog() |
| | | } catch (ex) { |
| | | this.showError(ex) |
| | | showError(ex) |
| | | } |
| | | }, |
| | | async loadTaskLog() { |
| | | try { |
| | | |
| | | const now = new Date(); |
| | | const oneWeekAgo = new Date(); |
| | | const endTimeStamp = `${now.getTime()}` |
| | |
| | | const res = await getTaskLog(this.ip, startTimeStamp, endTimeStamp) |
| | | |
| | | const list = res?.task_info || [] |
| | | console.log(list) |
| | | list.forEach((ele) => { |
| | | |
| | | console.log(ele) |
| | | const dateStart = new Date() |
| | | dateStart.setTime(Number(ele.taskStartTimeStamp)) |
| | | ele.date = `${dateStart.getMonth()}-${dateStart.getDay()}`; |
| | | let taskList = ele.taskList || [] |
| | | taskList.sort((a, b) => { |
| | | return a.lastUpdateTimeStamp > b.lastUpdateTimeStamp |
| | | }); |
| | | console.log(taskList) |
| | | ele.startTime = `${dateStart.getHours()}:${dateStart.getMinutes()}`; |
| | | ele.endTime = ele.startTime |
| | | ele.duration = 0; |
| | | ele.status = 0 |
| | | // console.log(ele) |
| | | if (taskList.length > 0) { |
| | | const dateEnd = new Date() |
| | | dateEnd.setTime(Number(taskList[taskList.length - 1].lastUpdateTimeStamp)) |
| | | for (let i in taskList) { |
| | | const ele2 = taskList[i] |
| | | if (ele2.status == 1) { |
| | | ele.status = 1 |
| | | break; |
| | | } else if (ele2.status == 2 || ele2.status == 4 || ele2.status == 5) { |
| | | ele.status = 2 |
| | | break; |
| | | } |
| | | } |
| | | if (!ele.status) { |
| | | if (taskList.filter((a) => a.status != 3).length == 0) { |
| | | ele.status = 3 |
| | | } |
| | | } |
| | | const diffInMs = dateEnd - dateStart; // 或者 Math.abs(date1 - date2) |
| | | ele.endTime = `${dateEnd.getHours()}:${dateEnd.getMinutes()}`; |
| | | ele.duration = Math.round(diffInMs / (1000 * 60)) |
| | | console.log(ele) |
| | | } |
| | | }) |
| | | console.log(list) |
| | | list.sort((a, b) => { |
| | | return a.end_time < b.end_time ? 1 : -1 |
| | | }); |
| | | |
| | | showToast(`装载了${list.length}记录`) |
| | | return list |
| | | } catch (ex) { |
| | | this.showError(ex) |
| | | showError(ex) |
| | | return [] |
| | | } |
| | | } |
| | | }, |
| | | |
| | | clickTask(item) { |
| | |
| | | // url: "/pages/task/index" |
| | | // }) |
| | | }, |
| | | showError(ex) { |
| | | let exStr = JSON.stringify(ex) |
| | | if (exStr == "{}") |
| | | exStr = ex |
| | | let tip = typeof ex.msg == "string" ? ex.msg : exStr |
| | | showModal(tip, "错误", false,"确定") |
| | | }, |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | overflow: auto; |
| | | |
| | | .task-header { |
| | | width: 100% ; |
| | | width: 100%; |
| | | padding: 10rpx; |
| | | font-size: 32rpx; |
| | | } |
| | | |
| | | .task-list-view { |
| | | width: 100% ; |
| | | width: 100%; |
| | | border-radius: 10rpx; |
| | | // padding: 0 10rpx; |
| | | background-color: #fff; |
| | | |
| | | .list-item { |
| | | |
| | | |
| | | border-bottom: 1px solid #ddd; |
| | | } |
| | | |
| | | .list-item:last-child { |
| | | border-bottom: 0; |
| | | /* 右下角 */ |