From 09e6dc3fb7266620fafb5e341808a8eb36e080a1 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 13 十二月 2025 22:51:52 +0800
Subject: [PATCH] feat:增加企业微信消息提醒
---
app/pages/task/index.vue | 123 +++++++++++++++++++++++++++++++++++++---
1 files changed, 113 insertions(+), 10 deletions(-)
diff --git a/app/pages/task/index.vue b/app/pages/task/index.vue
index c80265c..c1b7a0d 100644
--- a/app/pages/task/index.vue
+++ b/app/pages/task/index.vue
@@ -108,7 +108,7 @@
<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">
@@ -120,7 +120,7 @@
<!-- 浠诲姟缂栧彿鍗曠嫭涓�琛� -->
<view class="task-code-row">
- <text class="task-code">{{ task.taskCode }}</text>
+ <text class="task-code">{{ task.showTaskCode }}</text>
</view>
<!-- 浠诲姟璇︾粏淇℃伅 -->
@@ -221,6 +221,7 @@
import { listTask, changeTaskStatus } from '@/api/task'
import { mapState } from 'vuex'
import { formatDateTime } from '@/utils/common'
+ import { checkTaskCanDepart } from '@/utils/taskValidator'
export default {
components: {
@@ -296,7 +297,7 @@
// 搴旂敤浠诲姟缂栧彿绛涢�� - 浣跨敤taskCode鑰屼笉鏄痶askNo
if (this.searchForm.taskNo) {
filtered = filtered.filter(task =>
- task.taskCode && task.taskCode.includes(this.searchForm.taskNo)
+ task.showTaskCode && task.showTaskCode.includes(this.searchForm.taskNo)
);
}
@@ -323,11 +324,28 @@
},
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
@@ -417,7 +435,7 @@
this.loadTaskList()
setTimeout(() => {
this.refreshing = false
- this.$modal.showToast('鍒楄〃宸插埛鏂�');
+ // this.$modal.showToast('鍒楄〃宸插埛鏂�');
// 鍋滄涓嬫媺鍒锋柊
uni.stopPullDownRefresh()
}, 1000)
@@ -430,18 +448,101 @@
// 鏌ョ湅浠诲姟璇︽儏
viewTaskDetail(task) {
- // 璺宠浆鍒颁换鍔¤鎯呴〉闈� - 淇:浣跨敤taskId鑰屼笉鏄痠d
- 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: `/pagesTask/detail?id=${task.taskId}`
+ });
},
// 澶勭悊浠诲姟鎿嶄綔
- handleTaskAction(task, action) {
+ async handleTaskAction(task, action) {
switch (action) {
case 'depart':
// 鍑哄彂 -> 鐘舵�佸彉涓哄嚭鍙戜腑
- this.$modal.confirm('纭畾瑕佸嚭鍙戝悧锛�').then(() => {
- this.updateTaskStatus(task.taskId, 'DEPARTING', '浠诲姟宸插嚭鍙�')
- }).catch(() => {});
+ // 鏄剧ず鍔犺浇鎻愮ず
+ uni.showLoading({
+ title: '妫�鏌ヤ换鍔$姸鎬�...'
+ });
+
+ try {
+ // 璋冪敤宸ュ叿绫绘鏌ヤ换鍔℃槸鍚﹀彲浠ュ嚭鍙戯紙鍖呭惈鍩烘湰鏍¢獙鍜屽啿绐佹鏌ワ級
+ const checkResult = await checkTaskCanDepart(task)
+
+ uni.hideLoading();
+
+ console.log('鍑哄彂妫�鏌ョ粨鏋�:', checkResult);
+ console.log('valid:', checkResult.valid);
+ console.log('conflicts:', checkResult.conflicts);
+
+ if (!checkResult.valid) {
+ // 鏍¢獙澶辫触锛屾樉绀烘彁绀轰俊鎭苟鎻愪緵璺宠浆閫夐」
+ const conflicts = checkResult.conflicts || [];
+ const conflictInfo = conflicts.length > 0 ? conflicts[0] : null;
+
+ console.log('鍐茬獊淇℃伅:', conflictInfo);
+
+ // 濡傛灉鏈夊啿绐佷换鍔′俊鎭紝鎻愪緵璺宠浆鎸夐挳
+ if (conflictInfo && conflictInfo.taskId) {
+ console.log('鏄剧ず甯﹁烦杞寜閽殑寮圭獥锛屼换鍔D:', conflictInfo.taskId);
+
+ const conflictTaskId = conflictInfo.taskId;
+ const message = checkResult.message || conflictInfo.message || '瀛樺湪鍐茬獊浠诲姟';
+
+ uni.showModal({
+ title: '鎻愮ず',
+ content: message,
+ confirmText: '鍘诲鐞�',
+ cancelText: '鐭ラ亾浜�',
+ success: function(res) {
+ console.log('寮圭獥鐐瑰嚮缁撴灉:', res);
+ if (res.confirm) {
+ // 鐢ㄦ埛鐐瑰嚮"鐜板湪鍘诲鐞�"锛岃烦杞埌鍐茬獊浠诲姟璇︽儏椤�
+ console.log('鍑嗗璺宠浆鍒颁换鍔¤鎯呴〉:', conflictTaskId);
+ uni.navigateTo({
+ url: `/pagesTask/detail?id=${conflictTaskId}`
+ });
+ }
+ },
+ fail: function(err) {
+ console.error('鏄剧ず寮圭獥澶辫触:', err);
+ }
+ });
+ } else {
+ // 娌℃湁鍐茬獊浠诲姟ID锛屽彧鏄剧ず鎻愮ず
+ console.log('鏄剧ず鏅�氭彁绀哄脊绐�');
+ uni.showModal({
+ title: '鎻愮ず',
+ content: checkResult.message || '浠诲姟鏍¢獙澶辫触',
+ showCancel: false,
+ confirmText: '鐭ラ亾浜�',
+ fail: function(err) {
+ console.error('鏄剧ず寮圭獥澶辫触:', err);
+ }
+ });
+ }
+ return;
+ }
+
+ // 鎵�鏈夋鏌ラ�氳繃锛屽彲浠ュ嚭鍙�
+ this.$modal.confirm('纭畾瑕佸嚭鍙戝悧锛�').then(() => {
+ this.updateTaskStatus(task.taskId, 'DEPARTING', '浠诲姟宸插嚭鍙�')
+ }).catch(() => {});
+
+ } catch (error) {
+ uni.hideLoading();
+ console.error('妫�鏌ヤ换鍔$姸鎬佸け璐�:', error);
+ // 妫�鏌ュけ璐ユ椂锛屼粛鐒跺厑璁稿嚭鍙�
+ this.$modal.confirm('妫�鏌ヤ换鍔$姸鎬佸け璐ワ紝鏄惁缁х画鍑哄彂锛�').then(() => {
+ this.updateTaskStatus(task.taskId, 'DEPARTING', '浠诲姟宸插嚭鍙�')
+ }).catch(() => {});
+ }
break;
case 'cancel':
@@ -516,6 +617,7 @@
changeTaskStatus(taskId, statusData).then(response => {
that.$modal.showToast('鐘舵�佹洿鏂版垚鍔�')
+ // 鍒锋柊浠诲姟鍒楄〃
that.loadTaskList()
}).catch(error => {
console.error('鏇存柊浠诲姟鐘舵�佸け璐�:', error)
@@ -533,6 +635,7 @@
changeTaskStatus(taskId, statusData).then(response => {
that.$modal.showToast('鐘舵�佹洿鏂版垚鍔�')
+ // 鍒锋柊浠诲姟鍒楄〃
that.loadTaskList()
}).catch(error => {
console.error('鏇存柊浠诲姟鐘舵�佸け璐�:', error)
--
Gitblit v1.9.1