From c10b1e130ccbc94e6481a43e8e2d35cfc8fcf83b Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期五, 26 十二月 2025 18:05:06 +0800
Subject: [PATCH] feat:显示问题
---
app/pages/index.vue | 245 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 220 insertions(+), 25 deletions(-)
diff --git a/app/pages/index.vue b/app/pages/index.vue
index 7f37adb..ce9d0b4 100644
--- a/app/pages/index.vue
+++ b/app/pages/index.vue
@@ -153,7 +153,7 @@
<view class="info-item">
<view class="label">鎵ц浜哄憳:</view>
- <view class="value">{{ task.assignee }}</view>
+ <view class="value">{{ getAssigneesDisplay(task) }}</view>
</view>
</view>
</view>
@@ -232,6 +232,26 @@
</view>
</view>
</scroll-view>
+
+ <!-- 鍙栨秷鍘熷洜閫夋嫨瀵硅瘽妗� -->
+ <uni-popup ref="cancelPopup" type="center" :is-mask-click="false">
+ <view class="cancel-dialog">
+ <view class="dialog-title">璇烽�夋嫨鍙栨秷鍘熷洜</view>
+ <picker mode="selector" :range="cancelReasonList" range-key="label" @change="selectCancelReason">
+ <view class="reason-picker">
+ <view class="picker-label">鍙栨秷鍘熷洜</view>
+ <view class="picker-value">
+ {{ selectedCancelReasonLabel }}
+ </view>
+ <uni-icons type="arrowright" size="16"></uni-icons>
+ </view>
+ </picker>
+ <view class="dialog-buttons">
+ <button class="cancel-btn" @click="closeCancelDialog">鍙栨秷</button>
+ <button class="confirm-btn" @click="confirmCancelTask">纭畾</button>
+ </view>
+ </view>
+ </uni-popup>
</view>
</template>
@@ -241,6 +261,7 @@
import { getUserProfile } from "@/api/system/user";
import { getUserBoundVehicle } from "@/api/vehicle";
import { getUnreadCount } from "@/api/message";
+import { getDicts } from "@/api/dict";
import { formatDateTime } from "@/utils/common";
import subscribeManager from "@/utils/subscribe";
import { checkTaskCanDepart } from "@/utils/taskValidator";
@@ -268,6 +289,12 @@
currentPage: 1,
pageSize: 10,
hasMore: true,
+
+ // 鍙栨秷鍘熷洜鐩稿叧
+ cancelReasonList: [], // 鍙栨秷鍘熷洜鍒楄〃
+ showCancelDialog: false, // 鏄剧ず鍙栨秷鍘熷洜瀵硅瘽妗�
+ selectedCancelReason: '', // 閫変腑鐨勫彇娑堝師鍥�
+ currentCancelTask: null // 褰撳墠瑕佸彇娑堢殑浠诲姟
};
},
computed: {
@@ -288,6 +315,15 @@
"IN_PROGRESS",
].includes(task.taskStatus);
});
+ },
+
+ // 鑾峰彇閫変腑鐨勫彇娑堝師鍥犳爣绛撅紙鐢ㄤ簬寮圭獥鏄剧ず锛�
+ selectedCancelReasonLabel() {
+ if (!this.selectedCancelReason || !this.cancelReasonList.length) {
+ return '璇烽�夋嫨'
+ }
+ const reason = this.cancelReasonList.find(r => r.value === this.selectedCancelReason)
+ return reason ? reason.label : '璇烽�夋嫨'
},
},
onLoad() {
@@ -310,6 +346,8 @@
this.loadRunningTasks();
// 鍔犺浇鏈娑堟伅鏁伴噺
this.loadUnreadMessageCount();
+ // 鍔犺浇鍙栨秷鍘熷洜瀛楀吀
+ this.loadCancelReasonDict();
},
onShow() {
// 妫�鏌ョ敤鎴锋槸鍚﹀凡鐧诲綍
@@ -569,18 +607,44 @@
// 鑾峰彇鐩殑鍦版樉绀哄唴瀹癸紙杞繍浠诲姟鏄剧ず杞叆鍖婚櫌鍚嶇О鎴栬缁嗗湴鍧�锛�
getEndLocationDisplay(task) {
// 濡傛灉鏄浆杩愪换鍔′笖鏈塭mergencyInfo淇℃伅
+ // console.log("get end location display",task.taskType,task.emergencyInfo.hospitalInAddress,task.showTaskCode);
if (task.taskType === 'EMERGENCY_TRANSFER' && task.emergencyInfo) {
+ // console.log('杞繍浠诲姟 - 绱ф�ヤ俊鎭�:', task.emergencyInfo)
// 浼樺厛鏄剧ず杞叆鍖婚櫌鍚嶇О
- if (task.emergencyInfo.hospitalInName) {
- if(task.emergencyInfo.hospitalInName.includes("瀹朵腑")){
- return task.emergencyInfo.destinationAddress;
- }
- return task.emergencyInfo.hospitalInName;
- }
-
+ // console.log("get end local",task.emergencyInfo.hospitalInAddress);
+ return task.emergencyInfo.hospitalInAddress;
+ // if (task.emergencyInfo.hospitalInName) {
+ // if(task.emergencyInfo.hospitalInName.includes("瀹朵腑")){
+ // return task.emergencyInfo.destinationAddress;
+ // }
+ // return task.emergencyInfo.hospitalInName;
+ // }
+ // // 濡傛灉娌℃湁杞叆鍖婚櫌鍚嶇О锛屼絾鏈夎浆鍏ュ尰闄㈠湴鍧�锛屽垯鏄剧ず鍦板潃
+ // if (task.emergencyInfo.hospitalInAddress) {
+ // return task.emergencyInfo.hospitalInAddress;
+ // }
}
// 鍏朵粬鎯呭喌浣跨敤鍘熸潵鐨別ndLocation
return this.formatAddress(task.endLocation || "鏈缃�");
+ },
+
+ // 鑾峰彇鎵ц浜哄憳鏄剧ず锛堜粠 assignees 鏁扮粍涓彁鍙� userName锛�
+ getAssigneesDisplay(task) {
+ // 濡傛灉鏈� assignees 鏁扮粍涓斾笉涓虹┖
+ if (task.assignees && task.assignees.length > 0) {
+ // 鎻愬彇鎵�鏈� userName锛岃繃婊ゆ帀绌哄��
+ const userNames = task.assignees
+ .map(assignee => assignee.userName)
+ .filter(name => name); // 杩囨护鎺� null/undefined/绌哄瓧绗︿覆
+
+ // 濡傛灉鏈夋湁鏁堢殑鐢ㄦ埛鍚嶏紝鐢ㄩ�楀彿杩炴帴
+ if (userNames.length > 0) {
+ return userNames.join('銆�');
+ }
+ }
+
+ // 濡傛灉娌℃湁 assignees 鏁扮粍锛屼娇鐢ㄦ棫鐨� assigneeName 鎴� assignee 瀛楁
+ return task.assigneeName || task.assignee || '鏈垎閰�';
},
// 杞崲鐘舵�佹牸寮忥紙灏嗘暟鎹簱鐘舵�佽浆鎹负UI浣跨敤鐨勭姸鎬侊級
@@ -707,13 +771,9 @@
break;
case "cancel":
- // 鍙栨秷 -> 浜屾纭鍚庣姸鎬佸彉涓哄凡鍙栨秷
- this.$modal
- .confirm("纭畾瑕佸彇娑堟浠诲姟鍚楋紵")
- .then(() => {
- this.updateTaskStatus(task.taskId, "CANCELLED", "浠诲姟宸插彇娑�");
- })
- .catch(() => {});
+ // 鍙栨秷 -> 鏄剧ず鍙栨秷鍘熷洜閫夋嫨瀵硅瘽妗�
+ this.currentCancelTask = task;
+ this.showCancelReasonDialog();
break;
case "arrive":
@@ -760,6 +820,56 @@
this.getLocationAndUpdateStatus(taskId, status, remark);
},
+ // 鍔犺浇鍙栨秷鍘熷洜瀛楀吀
+ loadCancelReasonDict() {
+ getDicts('task_cancel_reason').then(response => {
+ if (response.code === 200 && response.data) {
+ this.cancelReasonList = response.data.map(item => ({
+ value: item.dictValue,
+ label: item.dictLabel
+ }))
+ }
+ }).catch(error => {
+ console.error('鍔犺浇鍙栨秷鍘熷洜瀛楀吀澶辫触:', error)
+ })
+ },
+
+ // 鏄剧ず鍙栨秷鍘熷洜瀵硅瘽妗�
+ showCancelReasonDialog() {
+ this.selectedCancelReason = ''
+ this.$refs.cancelPopup.open()
+ },
+
+ // 纭鍙栨秷浠诲姟
+ confirmCancelTask() {
+ if (!this.selectedCancelReason) {
+ this.$modal.showToast('璇烽�夋嫨鍙栨秷鍘熷洜')
+ return
+ }
+
+ this.$refs.cancelPopup.close()
+
+ // 璋冪敤鏇存柊鐘舵�佹柟娉曪紝浼犻�掑彇娑堝師鍥�
+ this.updateTaskStatusWithCancelReason(this.currentCancelTask.taskId, 'CANCELLED', '浠诲姟宸插彇娑�', this.selectedCancelReason)
+ },
+
+ // 鍙栨秷瀵硅瘽妗嗗叧闂�
+ closeCancelDialog() {
+ this.$refs.cancelPopup.close()
+ this.selectedCancelReason = ''
+ this.currentCancelTask = null
+ },
+
+ // 閫夋嫨鍙栨秷鍘熷洜
+ selectCancelReason(e) {
+ this.selectedCancelReason = this.cancelReasonList[e.detail.value].value
+ },
+
+ // 甯﹀彇娑堝師鍥犵殑鐘舵�佹洿鏂�
+ updateTaskStatusWithCancelReason(taskId, status, remark, cancelReason) {
+ this.getLocationAndUpdateStatus(taskId, status, remark, cancelReason)
+ },
+
// 妫�鏌ョ煡鎯呭悓鎰忎功闄勪欢骞舵洿鏂扮姸鎬�
async checkConsentAttachmentAndThen(taskId, status, remark) {
try {
@@ -767,12 +877,19 @@
title: '妫�鏌ラ檮浠�...'
});
- const response = await checkTaskConsentAttachment(taskId);
+ // 娉ㄦ剰锛氳繖閲屼細琚姹傛嫤鎴櫒澶勭悊锛宑ode !== 200 鏃朵細 reject
+ const response = await checkTaskConsentAttachment(taskId).catch(err => {
+ // 鎷︽埅鍣� reject 鐨勬儏鍐碉紝杩斿洖涓�涓粯璁ゅ璞�
+ console.log('璇锋眰琚嫤鎴櫒 reject锛宔rr:', err);
+ return { code: -1, msg: '鏈笂浼犵煡鎯呭悓鎰忎功' };
+ });
uni.hideLoading();
+ console.log('妫�鏌ラ檮浠剁粨鏋�:', response);
- if (response.code === 200) {
+ if (response && response.code === 200) {
// 宸蹭笂浼犵煡鎯呭悓鎰忎功锛岀户缁洿鏂扮姸鎬�
+ console.log('宸蹭笂浼犵煡鎯呭悓鎰忎功锛岀户缁畬鎴愪换鍔�');
this.$modal
.confirm("纭浠诲姟宸插畬鎴愶紵")
.then(() => {
@@ -780,25 +897,26 @@
})
.catch(() => {});
} else {
- // 鏈笂浼犵煡鎯呭悓鎰忎功锛屾樉绀烘彁绀�
- this.$modal.confirm('浠诲姟鏈笂浼犵煡鎯呭悓鎰忎功锛屾棤娉曞畬鎴愪换鍔°�傛槸鍚︾幇鍦ㄥ幓涓婁紶锛�').then(() => {
+ // 鏈笂浼犵煡鎯呭悓鎰忎功鎴栧叾浠栭敊璇紝闃绘瀹屾垚
+ const message = (response && response.msg) || '浠诲姟鏈笂浼犵煡鎯呭悓鎰忎功锛屾棤娉曞畬鎴愪换鍔�';
+ console.log('鏈笂浼犵煡鎯呭悓鎰忎功锛岄樆姝㈠畬鎴�');
+
+ this.$modal.confirm(message + '銆傛槸鍚︾幇鍦ㄥ幓涓婁紶锛�').then(() => {
// 璺宠浆鍒颁换鍔¤鎯呴〉涓婁紶闄勪欢
this.$tab.navigateTo(`/pagesTask/detail?id=${taskId}`);
}).catch(() => {});
}
} catch (error) {
uni.hideLoading();
- console.error('妫�鏌ラ檮浠跺け璐�:', error);
+ console.error('妫�鏌ラ檮浠跺紓甯�:', error);
- // 濡傛灉妫�鏌ュけ璐ワ紝璇㈤棶鐢ㄦ埛鏄惁缁х画
- this.$modal.confirm('妫�鏌ラ檮浠剁姸鎬佸け璐ワ紝鏄惁缁х画瀹屾垚浠诲姟锛�').then(() => {
- this.updateTaskStatus(taskId, status, remark);
- }).catch(() => {});
+ // 濡傛灉妫�鏌ュけ璐ワ紙缃戠粶寮傚父绛夛級锛屼笉鍏佽瀹屾垚浠诲姟
+ this.$modal.showToast('妫�鏌ラ檮浠剁姸鎬佸け璐ワ紝鏃犳硶瀹屾垚浠诲姟');
}
},
// 鑾峰彇浣嶇疆淇℃伅骞舵洿鏂扮姸鎬�
- getLocationAndUpdateStatus(taskId, status, remark) {
+ getLocationAndUpdateStatus(taskId, status, remark, cancelReason) {
const that = this;
// 浣跨敤uni.getLocation鑾峰彇GPS浣嶇疆
@@ -825,6 +943,11 @@
speed: res.speed,
heading: res.direction || res.heading,
};
+
+ // 濡傛灉鏈夊彇娑堝師鍥狅紝娣诲姞鍒拌姹傛暟鎹腑
+ if (cancelReason) {
+ statusData.cancelReason = cancelReason
+ }
changeTaskStatus(taskId, statusData)
.then((response) => {
@@ -846,6 +969,11 @@
taskStatus: status,
remark: remark,
};
+
+ // 濡傛灉鏈夊彇娑堝師鍥狅紝娣诲姞鍒拌姹傛暟鎹腑
+ if (cancelReason) {
+ statusData.cancelReason = cancelReason
+ }
changeTaskStatus(taskId, statusData)
.then((response) => {
@@ -1292,6 +1420,10 @@
font-size: 26rpx;
flex: 1;
word-break: break-all;
+ overflow-wrap: break-word;
+ line-height: 1.5;
+ max-height: none;
+ overflow: visible;
}
}
}
@@ -1383,4 +1515,67 @@
}
}
}
+
+// 鍙栨秷鍘熷洜瀵硅瘽妗嗘牱寮�
+.cancel-dialog {
+ width: 600rpx;
+ background-color: white;
+ border-radius: 20rpx;
+ padding: 40rpx;
+
+ .dialog-title {
+ font-size: 32rpx;
+ font-weight: bold;
+ text-align: center;
+ margin-bottom: 30rpx;
+ color: #333;
+ }
+
+ .reason-picker {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 20rpx 30rpx;
+ background-color: #f5f5f5;
+ border-radius: 10rpx;
+ margin-bottom: 30rpx;
+
+ .picker-label {
+ font-size: 28rpx;
+ color: #666;
+ }
+
+ .picker-value {
+ flex: 1;
+ text-align: right;
+ margin: 0 20rpx;
+ font-size: 28rpx;
+ color: #333;
+ }
+ }
+
+ .dialog-buttons {
+ display: flex;
+ gap: 20rpx;
+
+ button {
+ flex: 1;
+ height: 80rpx;
+ line-height: 80rpx;
+ border-radius: 10rpx;
+ font-size: 28rpx;
+ border: none;
+ }
+
+ .cancel-btn {
+ background-color: #f5f5f5;
+ color: #666;
+ }
+
+ .confirm-btn {
+ background-color: #007AFF;
+ color: white;
+ }
+ }
+}
</style>
\ No newline at end of file
--
Gitblit v1.9.1