From c5ac97682e3b4ca748541ace97cb37a2295bd81e Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 19 三月 2026 22:46:29 +0800
Subject: [PATCH] feat: 增加GPS清理后台任务
---
app/pages/index.vue | 177 ++++++++++++++++++++++++++++++++---------------------------
1 files changed, 96 insertions(+), 81 deletions(-)
diff --git a/app/pages/index.vue b/app/pages/index.vue
index ce9d0b4..8d6dd2f 100644
--- a/app/pages/index.vue
+++ b/app/pages/index.vue
@@ -107,24 +107,30 @@
<view
class="task-status"
:class="
- task.taskStatus === 'PENDING'
+ task.taskStatus === TaskStatus.PENDING
? 'status-pending'
- : task.taskStatus === 'DEPARTING'
+ : task.taskStatus === TaskStatus.NOT_CONFIRMED
+ ? 'status-not-confirmed'
+ : task.taskStatus === TaskStatus.NOT_DEPARTED
+ ? 'status-not-departed'
+ : task.taskStatus === TaskStatus.PARTIALLY_CONFIRMED
+ ? 'status-partially-confirmed'
+ : task.taskStatus === TaskStatus.DEPARTING
? 'status-departing'
- : task.taskStatus === 'ARRIVED'
+ : task.taskStatus === TaskStatus.ARRIVED
? 'status-arrived'
- : task.taskStatus === 'RETURNING'
+ : task.taskStatus === TaskStatus.RETURNING
? 'status-returning'
- : task.taskStatus === 'COMPLETED'
+ : task.taskStatus === TaskStatus.COMPLETED
? 'status-completed'
- : task.taskStatus === 'CANCELLED'
+ : task.taskStatus === TaskStatus.CANCELLED
? 'status-cancelled'
- : task.taskStatus === 'IN_PROGRESS'
+ : task.taskStatus === TaskStatus.IN_PROGRESS
? 'status-in-progress'
- : 'status-default'
+ : 'status-pending'
"
>
- {{ getStatusText(task.status) }}
+ {{ getStatusText(task.taskStatus) }}
</view>
</view>
@@ -161,8 +167,8 @@
<!-- 鎿嶄綔鎸夐挳 -->
<view class="task-actions">
- <!-- 寰呭鐞嗙姸鎬�: 鏄剧ず鍑哄彂銆佸彇娑� -->
- <template v-if="task.taskStatus === 'PENDING'">
+ <!-- 寰呭鐞嗙姸鎬侊細鏄剧ず鍑哄彂銆佸彇娑� -->
+ <template v-if="task.taskStatus === TaskStatus.PENDING || task.taskStatus === TaskStatus.NOT_DEPARTED || task.taskStatus === TaskStatus.NOT_CONFIRMED || task.taskStatus === TaskStatus.PARTIALLY_CONFIRMED">
<button
class="action-btn primary"
@click="handleTaskAction(task, 'depart')"
@@ -177,8 +183,8 @@
</button>
</template>
- <!-- 鍑哄彂涓姸鎬�: 鏄剧ず宸插埌杈俱�佸己鍒剁粨鏉� -->
- <template v-else-if="task.taskStatus === 'DEPARTING'">
+ <!-- 鍑哄彂涓姸鎬侊細鏄剧ず宸插埌杈俱�佸己鍒剁粨鏉� -->
+ <template v-else-if="task.taskStatus === TaskStatus.DEPARTING">
<button
class="action-btn primary"
@click="handleTaskAction(task, 'arrive')"
@@ -193,8 +199,8 @@
</button>
</template>
- <!-- 宸插埌杈剧姸鎬�: 鏄剧ず宸茶繑绋� -->
- <template v-else-if="task.taskStatus === 'ARRIVED'">
+ <!-- 宸插埌杈剧姸鎬侊細鏄剧ず宸茶繑绋� -->
+ <template v-else-if="task.taskStatus === TaskStatus.ARRIVED">
<button
class="action-btn primary"
@click="handleTaskAction(task, 'return')"
@@ -203,8 +209,8 @@
</button>
</template>
- <!-- 杩旂▼涓姸鎬�: 鏄剧ず宸插畬鎴� -->
- <template v-else-if="task.taskStatus === 'RETURNING'">
+ <!-- 杩旂▼涓姸鎬侊細鏄剧ず宸插畬鎴� -->
+ <template v-else-if="task.taskStatus === TaskStatus.RETURNING">
<button
class="action-btn primary"
@click="handleTaskAction(task, 'complete')"
@@ -265,10 +271,40 @@
import { formatDateTime } from "@/utils/common";
import subscribeManager from "@/utils/subscribe";
import { checkTaskCanDepart } from "@/utils/taskValidator";
+import { getStatusText as getTaskStatusText, TaskStatus } from "@/utils/TaskUtil";
+
+// 浠诲姟绫诲瀷鏄犲皠锛堜复鏃跺畾涔夛紝閬垮厤瀵煎叆闂锛�
+const TASK_TYPE_MAP = {
+ MAINTENANCE: "缁翠慨淇濆吇",
+ FUEL: "鍔犳补",
+ OTHER: "鍏朵粬",
+ EMERGENCY_TRANSFER: "杞繍浠诲姟",
+ WELFARE: "绂忕杞�",
+ maintenance: "缁翠慨淇濆吇",
+ refuel: "鍔犳补",
+ inspection: "宸℃",
+ emergency: "杞繍浠诲姟",
+ welfare: "绂忕杞�"
+};
+
+// 浠诲姟鐘舵�佹槧灏勶紙涓存椂瀹氫箟锛岄伩鍏嶅鍏ラ棶棰橈級
+const TASK_STATUS_MAP = {
+ PENDING: "寰呭鐞�",
+ NOT_CONFIRMED: "瀹屽叏鏈‘璁�",
+ NOT_DEPARTED: "寰呭嚭鍙�",
+ PARTIALLY_CONFIRMED: "閮ㄥ垎纭",
+ DEPARTING: "鍑哄彂涓�",
+ ARRIVED: "宸插埌杈�",
+ RETURNING: "杩旂▼涓�",
+ COMPLETED: "宸插畬鎴�",
+ CANCELLED: "宸插彇娑�",
+ IN_PROGRESS: "浠诲姟涓�"
+};
export default {
data() {
return {
+ TaskStatus, // 鏆撮湶 TaskStatus 缁欐ā鏉夸娇鐢�
// 鐢ㄦ埛缁戝畾鐨勮溅杈嗕俊鎭�
boundVehicle: "",
boundVehicleId: null,
@@ -307,13 +343,17 @@
runningTasks() {
return this.displayedTaskList.filter((task) => {
// 鍖呭惈寰呭鐞嗐�佸嚭鍙戜腑銆佸凡鍒拌揪銆佽繑绋嬩腑绛夋墍鏈夋湭瀹屾垚鐨勭姸鎬�
- return [
- "PENDING",
- "DEPARTING",
- "ARRIVED",
- "RETURNING",
- "IN_PROGRESS",
- ].includes(task.taskStatus);
+ const activeStatuses = [
+ TaskStatus.NOT_CONFIRMED,
+ TaskStatus.NOT_DEPARTED,
+ TaskStatus.PARTIALLY_CONFIRMED,
+ TaskStatus.PENDING,
+ TaskStatus.DEPARTING,
+ TaskStatus.ARRIVED,
+ TaskStatus.RETURNING,
+ TaskStatus.IN_PROGRESS,
+ ];
+ return activeStatuses.includes(task.taskStatus);
});
},
@@ -651,6 +691,10 @@
convertStatus(dbStatus) {
const statusMap = {
PENDING: "pending",
+ NOT_CONFIRMED: "pending",
+ NOT_DEPARTED: "pending",
+ PARTIALLY_CONFIRMED: "pending",
+
DEPARTING: "processing",
ARRIVED: "processing",
RETURNING: "processing",
@@ -754,7 +798,7 @@
this.$modal
.confirm("纭畾瑕佸嚭鍙戝悧锛�")
.then(() => {
- this.updateTaskStatus(task.taskId, "DEPARTING", "浠诲姟宸插嚭鍙�");
+ this.updateTaskStatus(task.taskId, TaskStatus.DEPARTING, "浠诲姟宸插嚭鍙�");
})
.catch(() => {});
} catch (error) {
@@ -764,7 +808,7 @@
this.$modal
.confirm("妫�鏌ヤ换鍔$姸鎬佸け璐ワ紝鏄惁缁х画鍑哄彂锛�")
.then(() => {
- this.updateTaskStatus(task.taskId, "DEPARTING", "浠诲姟宸插嚭鍙�");
+ this.updateTaskStatus(task.taskId, TaskStatus.DEPARTING, "浠诲姟宸插嚭鍙�");
})
.catch(() => {});
}
@@ -781,7 +825,7 @@
this.$modal
.confirm("纭宸插埌杈剧洰鐨勫湴锛�")
.then(() => {
- this.updateTaskStatus(task.taskId, "ARRIVED", "宸插埌杈剧洰鐨勫湴");
+ this.updateTaskStatus(task.taskId, TaskStatus.ARRIVED, "宸插埌杈剧洰鐨勫湴");
})
.catch(() => {});
break;
@@ -791,7 +835,7 @@
this.$modal
.confirm("纭畾瑕佸己鍒剁粨鏉熸浠诲姟鍚楋紵")
.then(() => {
- this.updateTaskStatus(task.taskId, "CANCELLED", "浠诲姟宸插己鍒剁粨鏉�");
+ this.updateTaskStatus(task.taskId, TaskStatus.CANCELLED, "浠诲姟宸插己鍒剁粨鏉�");
})
.catch(() => {});
break;
@@ -801,7 +845,7 @@
this.$modal
.confirm("纭寮�濮嬭繑绋嬶紵")
.then(() => {
- this.updateTaskStatus(task.taskId, "RETURNING", "宸插紑濮嬭繑绋�");
+ this.updateTaskStatus(task.taskId, TaskStatus.RETURNING, "宸插紑濮嬭繑绋�");
})
.catch(() => {});
break;
@@ -809,7 +853,7 @@
case "complete":
// 宸插畬鎴� -> 鐘舵�佸彉涓哄凡瀹屾垚
// 闇�瑕佹鏌ユ槸鍚︿笂浼犱簡鐭ユ儏鍚屾剰涔�
- this.checkConsentAttachmentAndThen(task.taskId, "COMPLETED", "浠诲姟宸插畬鎴�");
+ this.checkConsentAttachmentAndThen(task.taskId, TaskStatus.COMPLETED, "浠诲姟宸插畬鎴�");
break;
}
},
@@ -919,14 +963,14 @@
getLocationAndUpdateStatus(taskId, status, remark, cancelReason) {
const that = this;
- // 浣跨敤uni.getLocation鑾峰彇GPS浣嶇疆
+ // 浣跨敤 uni.getLocation 鑾峰彇 GPS 浣嶇疆
uni.getLocation({
type: "gcj02",
geocode: true,
altitude: true,
success: function (res) {
- console.log("GPS瀹氫綅鎴愬姛:", res);
-
+ console.log("GPS 瀹氫綅鎴愬姛:", res);
+
const statusData = {
taskStatus: status,
remark: remark,
@@ -990,55 +1034,14 @@
});
},
- // 鑾峰彇鐘舵�佹牱寮忕被
- getStatusClass(status) {
- const statusClassMap = {
- PENDING: "status-pending",
- DEPARTING: "status-departing",
- ARRIVED: "status-arrived",
- RETURNING: "status-returning",
- COMPLETED: "status-completed",
- CANCELLED: "status-cancelled",
- IN_PROGRESS: "status-in-progress",
- };
- return statusClassMap[status] || "status-default";
- },
-
- getStatusText(status) {
- // 鏀寔鏂版棫涓ょ鐘舵�佹牸寮�
- const statusMap = {
- // 鏂版牸寮忥紙鏁版嵁搴撶姸鎬侊級
- PENDING: "寰呭鐞�",
- DEPARTING: "鍑哄彂涓�",
- ARRIVED: "宸插埌杈�",
- RETURNING: "杩旂▼涓�",
- COMPLETED: "宸插畬鎴�",
- CANCELLED: "宸插彇娑�",
- IN_PROGRESS: "澶勭悊涓�",
- // 鏃ф牸寮忥紙UI鐘舵�侊級
- pending: "寰呭鐞�",
- processing: "澶勭悊涓�",
- completed: "宸插畬鎴�",
- };
- return statusMap[status] || "鏈煡";
- },
-
+ // 鑾峰彇浠诲姟绫诲瀷鏂囨湰
getTaskTypeText(type) {
- const typeMap = {
- // 鏂版牸寮忥紙鏁版嵁搴撶被鍨嬶級
- MAINTENANCE: "缁翠慨淇濆吇",
- FUEL: "鍔犳补",
- OTHER: "鍏朵粬",
- EMERGENCY_TRANSFER: "杞繍浠诲姟",
- WELFARE: "绂忕杞�",
- // 鏃ф牸寮忥紙UI绫诲瀷锛�
- maintenance: "缁翠慨淇濆吇",
- refuel: "鍔犳补",
- inspection: "宸℃",
- emergency: "杞繍浠诲姟",
- welfare: "绂忕杞�",
- };
- return typeMap[type] || "鏈煡绫诲瀷";
+ return TASK_TYPE_MAP[type] || "鏈煡绫诲瀷";
+ },
+
+ // 鑾峰彇浠诲姟鐘舵�佹枃鏈�
+ getStatusText(status) {
+ return TASK_STATUS_MAP[status] || "鏈煡";
},
clickConfirmsubscribeTaskNotify() {
@@ -1328,6 +1331,18 @@
background-color: #fff3e0;
color: #ff9500;
}
+ &.status-not-confirmed {
+ background-color: #fff3e0;
+ color: #ff9500;
+ }
+ &.status-not-departed {
+ background-color: #fff3e0;
+ color: #ff9500;
+ }
+ &.status-partially-confirmed {
+ background-color: #fff3e0;
+ color: #ff9500;
+ }
// 鍑哄彂涓� - 钃濊壊
&.status-departing {
--
Gitblit v1.9.1