1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
| <template>
| <div class="app-container">
| <el-page-header @back="goBack" content="任务详情">
| </el-page-header>
|
| <el-card class="box-card" style="margin-top: 20px;" shadow="hover">
| <div slot="header" class="clearfix">
| <span><i class="el-icon-document"></i> 任务基本信息</span>
| </div>
|
| <el-descriptions :column="2" border>
| <el-descriptions-item label="任务编号">{{ taskInfo.taskCode }}</el-descriptions-item>
| <el-descriptions-item label="任务状态">
| <el-tag :type="getStatusType(taskInfo.taskStatus)">
| {{ getStatusText(taskInfo.taskStatus) }}
| </el-tag>
| </el-descriptions-item>
| <el-descriptions-item label="车牌号">{{ taskInfo.vehicleNo }}</el-descriptions-item>
| <el-descriptions-item label="执行人">{{ taskInfo.assigneeName }}</el-descriptions-item>
| <el-descriptions-item label="计划开始时间">{{ taskInfo.plannedStartTime }}</el-descriptions-item>
| <el-descriptions-item label="计划结束时间">{{ taskInfo.plannedEndTime }}</el-descriptions-item>
| <el-descriptions-item label="实际开始时间">{{ taskInfo.actualStartTime || '-' }}</el-descriptions-item>
| <el-descriptions-item label="实际结束时间">{{ taskInfo.actualEndTime || '-' }}</el-descriptions-item>
| <el-descriptions-item label="出发地址" :span="2">{{ taskInfo.departureAddress }}</el-descriptions-item>
| <el-descriptions-item label="目的地址" :span="2">{{ taskInfo.destinationAddress }}</el-descriptions-item>
| </el-descriptions>
| </el-card>
|
| <!-- GPS里程统计组件 -->
| <task-mileage-detail v-if="taskInfo.taskId" :task-id="taskInfo.taskId" />
| </div>
| </template>
|
| <script>
| import TaskMileageDetail from '@/components/TaskMileageDetail'
| import { getTask } from '@/api/task'
|
| export default {
| name: 'TaskDetail',
| components: {
| TaskMileageDetail
| },
| data() {
| return {
| taskInfo: {
| taskId: null,
| taskCode: '',
| taskStatus: '',
| vehicleNo: '',
| assigneeName: '',
| plannedStartTime: '',
| plannedEndTime: '',
| actualStartTime: '',
| actualEndTime: '',
| departureAddress: '',
| destinationAddress: ''
| }
| }
| },
| created() {
| const taskId = this.$route.params && this.$route.params.taskId
| if (taskId) {
| this.loadTaskInfo(taskId)
| }
| },
| methods: {
| /** 加载任务信息 */
| loadTaskInfo(taskId) {
| getTask(taskId).then(response => {
| this.taskInfo = response.data
| })
| },
|
| /** 返回 */
| goBack() {
| this.$router.go(-1)
| },
|
| /** 获取状态类型 */
| getStatusType(status) {
| const statusMap = {
| 'PENDING': 'info',
| 'DEPARTING': 'warning',
| 'ARRIVED': 'primary',
| 'RETURNING': 'warning',
| 'COMPLETED': 'success',
| 'CANCELLED': 'danger'
| }
| return statusMap[status] || 'info'
| },
|
| /** 获取状态文本 */
| getStatusText(status) {
| const statusMap = {
| 'PENDING': '待出发',
| 'DEPARTING': '出发中',
| 'ARRIVED': '已到达',
| 'RETURNING': '返程中',
| 'COMPLETED': '已完成',
| 'CANCELLED': '已取消'
| }
| return statusMap[status] || status
| }
| }
| }
| </script>
|
| <style scoped>
| .app-container {
| padding: 20px;
| }
| </style>
|
|