|
|
@@ -154,7 +154,7 @@
|
|
|
|
|
|
<!-- 接单按钮 -->
|
|
|
<view class="accept-button-container" v-if="checkPermi(detailData.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept'] )">
|
|
|
- <button class="accept-button" @click="handleAcceptOrder">接 单</button>
|
|
|
+ <button class="accept-button" @click.stop="handleAcceptOrder">{{ isDealing ? '接单中...' : '接 单' }}</button>
|
|
|
</view>
|
|
|
|
|
|
<!-- 加载中状态 -->
|
|
|
@@ -315,6 +315,8 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ const isDealing = ref(false)
|
|
|
+ const hasDealed = ref(false)
|
|
|
// 处理接单操作
|
|
|
const handleAcceptOrder = async (): Promise<void> => {
|
|
|
if (selectedTeamLeaderName.value.trim() === '') {
|
|
|
@@ -324,7 +326,8 @@
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+ if (isDealing.value || hasDealed.value) return // 双重保险
|
|
|
+ isDealing.value = true
|
|
|
// const subOrder = {
|
|
|
// id: detailData.value.id,
|
|
|
// orderType: detailData.value.orderType,
|
|
|
@@ -334,16 +337,16 @@
|
|
|
// // gxtRepairOrder:
|
|
|
// } as UTSJSONObject
|
|
|
detailData.value.workOrderStatus = 'to_finish'
|
|
|
- try {
|
|
|
- const result = await acceptOrder(detailData.value)
|
|
|
- const resultObj = result as UTSJSONObject
|
|
|
- const code = resultObj['code'] as number
|
|
|
- if (code == 200) {
|
|
|
- uni.showToast({
|
|
|
- title: '接单成功',
|
|
|
- icon: 'success'
|
|
|
- })
|
|
|
-
|
|
|
+ try {
|
|
|
+ const result = await acceptOrder(detailData.value)
|
|
|
+ const resultObj = result as UTSJSONObject
|
|
|
+ const code = resultObj['code'] as number
|
|
|
+ if (code == 200) {
|
|
|
+ uni.showToast({
|
|
|
+ title: '接单成功',
|
|
|
+ icon: 'success'
|
|
|
+ })
|
|
|
+ hasDealed.value = true
|
|
|
// 使用事件总线通知列表页面刷新
|
|
|
uni.$emit('refreshOrderList', {})
|
|
|
// 通知首页刷新待处理工单数量
|
|
|
@@ -354,12 +357,19 @@
|
|
|
// 接单成功后返回上一页
|
|
|
setTimeout(() => {
|
|
|
uni.navigateBack()
|
|
|
- }, 1000)
|
|
|
+ }, 800)
|
|
|
+ } else {
|
|
|
+ // 处理业务错误
|
|
|
+ uni.showToast({
|
|
|
+ title: resultObj['msg'] as string,
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
}
|
|
|
} catch (error) {
|
|
|
- console.error('请求失败:', error);
|
|
|
+ console.error('请求失败:', error);
|
|
|
+ } finally {
|
|
|
+ isDealing.value = false // 无论成功失败都解锁
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|