| | |
| | | |
| | | <scroll-view class="task-list-scroll" scroll-y="true"> |
| | | <view class="task-list"> |
| | | <view class="task-item" v-for="task in filteredTaskList" :key="task.id"> |
| | | <view class="task-item" v-for="task in filteredTaskList" :key="task.taskId"> |
| | | <view class="task-main" @click="viewTaskDetail(task)"> |
| | | <!-- 任务头部:标题和状态标签 --> |
| | | <view class="task-header"> |
| | | <view class="task-title">{{ getTaskTypeText(task.taskType) }} - {{ task.vehicle }}</view> |
| | | <view class="task-status" :class="getStatusClass(task.taskStatus)"> |
| | | <view class="task-status" :class="task.taskStatus === 'PENDING' ? 'status-pending' : task.taskStatus === 'DEPARTING' ? 'status-departing' : task.taskStatus === 'ARRIVED' ? 'status-arrived' : task.taskStatus === 'RETURNING' ? 'status-returning' : task.taskStatus === 'COMPLETED' ? 'status-completed' : task.taskStatus === 'CANCELLED' ? 'status-cancelled' : task.taskStatus === 'IN_PROGRESS' ? 'status-in-progress' : 'status-default'"> |
| | | {{ getStatusText(task.taskStatus) }} |
| | | </view> |
| | | </view> |
| | |
| | | import uniDatetimePicker from '@/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue' |
| | | import { listTask, changeTaskStatus } from '@/api/task' |
| | | import { mapState } from 'vuex' |
| | | import { formatDateTime } from '@/utils/common' |
| | | |
| | | export default { |
| | | components: { |
| | |
| | | }, |
| | | onLoad() { |
| | | this.loadTaskList() |
| | | |
| | | // 监听任务列表刷新事件 |
| | | uni.$on('refreshTaskList', this.handleRefreshEvent) |
| | | }, |
| | | onShow() { |
| | | // 页面显示时刷新列表(从其他页面返回时) |
| | | this.loadTaskList() |
| | | }, |
| | | onUnload() { |
| | | // 页面销毁时移除事件监听 |
| | | uni.$off('refreshTaskList', this.handleRefreshEvent) |
| | | }, |
| | | onPullDownRefresh() { |
| | | this.refreshList() |
| | | }, |
| | | methods: { |
| | | // 处理刷新事件 |
| | | handleRefreshEvent() { |
| | | console.log('收到刷新任务列表事件') |
| | | this.refreshList() |
| | | }, |
| | | |
| | | // 加载任务列表 |
| | | loadTaskList() { |
| | | this.loading = true |
| | |
| | | vehicleList: task.assignedVehicles || [], |
| | | startLocation: this.formatAddress(task.departureAddress || task.startLocation || '未设置'), |
| | | endLocation: this.formatAddress(task.destinationAddress || task.endLocation || '未设置'), |
| | | startTime: task.plannedStartTime ? this.formatDateTime(task.plannedStartTime) : '未设置', |
| | | startTime: task.plannedStartTime ? formatDateTime(task.plannedStartTime, 'YYYY-MM-DD HH:mm') : '未设置', |
| | | assignee: task.assigneeName || '未分配' |
| | | } |
| | | }) |
| | |
| | | this.loading = false |
| | | console.error('加载任务列表失败:', error) |
| | | this.$modal.showToast('加载任务列表失败') |
| | | }) |
| | | }, |
| | | |
| | | // 格式化日期时间 |
| | | formatDateTime(dateTime) { |
| | | if (!dateTime) return '' |
| | | const date = new Date(dateTime) |
| | | return date.toLocaleString('zh-CN', { |
| | | year: 'numeric', |
| | | month: '2-digit', |
| | | day: '2-digit', |
| | | hour: '2-digit', |
| | | minute: '2-digit' |
| | | }) |
| | | }, |
| | | |
| | |
| | | |
| | | // 查看任务详情 |
| | | viewTaskDetail(task) { |
| | | // 跳转到任务详情页面 - 修复:使用taskId而不是id |
| | | this.$tab.navigateTo(`/pages/task/detail?id=${task.taskId}`); |
| | | // 防御性检查 |
| | | if (!task || !task.taskId) { |
| | | console.error('任务数据无效:', task) |
| | | this.$modal.showToast('任务数据异常') |
| | | return |
| | | } |
| | | |
| | | // 跳转到任务详情页面 - 使用uni.navigateTo |
| | | uni.navigateTo({ |
| | | url: `/pages/task/detail?id=${task.taskId}` |
| | | }); |
| | | }, |
| | | |
| | | // 处理任务操作 |
| | |
| | | |
| | | changeTaskStatus(taskId, statusData).then(response => { |
| | | that.$modal.showToast('状态更新成功') |
| | | // 刷新任务列表 |
| | | that.loadTaskList() |
| | | }).catch(error => { |
| | | console.error('更新任务状态失败:', error) |
| | |
| | | |
| | | changeTaskStatus(taskId, statusData).then(response => { |
| | | that.$modal.showToast('状态更新成功') |
| | | // 刷新任务列表 |
| | | that.loadTaskList() |
| | | }).catch(error => { |
| | | console.error('更新任务状态失败:', error) |
| | |
| | | 'MAINTENANCE': '维修保养', |
| | | 'FUEL': '加油', |
| | | 'OTHER': '其他', |
| | | 'EMERGENCY_TRANSFER': '急救转运', |
| | | 'EMERGENCY_TRANSFER': '转运任务', |
| | | 'WELFARE': '福祉车' |
| | | } |
| | | return typeMap[type] || '未知类型' |