Преглед изворни кода

feat(refueling): 添加取消油卡订单功能

- 新增 refueling.cancelOrder API定义及类型声明
- 在加油订单列表页增加取消订单按钮及相关交互
- 取消订单时弹出确认框,确认后调用取消接口
- 显示取消成功或失败的消息提示
- 调整 OrderRenderer 组件,支持 JY 业务类型刷新事件传递
zhangtao пре 11 часа
родитељ
комит
79190a7c73

+ 2 - 1
src/api/apiDefinitions.ts

@@ -130,5 +130,6 @@ export default {
   'djk.addWelfareOrder':['POST', '/smqjh-oms/api/v1/djkOrder/addWelfareOrder'],
   'djk.submitRefund': ['POST', '/smqjh-oms/api/v1/djkOrder/submitRefund'],
 
-  'refueling.getPayCode':['POST','/smqjh-pms/api/v1/refueling/generateQrCode']
+  'refueling.getPayCode':['POST','/smqjh-pms/api/v1/refueling/generateQrCode'],
+  'refueling.cancelOrder': ['POST', '/smqjh-oms/api/v1/oil/order/cancel'],
 };

+ 12 - 0
src/api/globals.d.ts

@@ -1291,6 +1291,18 @@ declare global {
       >(
         config: Config
       ): Alova2Method<apiResData<string>, 'refueling.getPayCode', Config>;
+      cancelOrder<
+        Config extends Alova2MethodConfig<apiResData<any>> & {
+         params: {
+            /**
+             * 订单ID
+             */
+            orderId: string;
+          };
+        }
+      >(
+        config: Config
+      ): Alova2Method<apiResData<any>, 'refueling.cancelOrder', Config>;
     }
   }
 }

+ 25 - 4
src/subPack-smqjh/components/refueling-order/index.vue

@@ -28,6 +28,27 @@ function getCountdownTime(expireTime?: string): number {
   const remaining = expire - Date.now()
   return remaining > 0 ? remaining : 0
 }
+function handleCancelOrder(order: Api.xsbOrderList) {
+  useGlobalMessage().confirm({
+    title: '提示',
+    msg: '确定要取消该订单吗?',
+    zIndex: 9999,
+    success: async () => {
+      uni.showLoading({ mask: true })
+      try {
+        await Apis.refueling.cancelOrder({ params: { orderId: String(order.orderNumber) } })
+        useGlobalToast().show('取消成功')
+        _emit('refresh')
+      }
+      catch {
+        useGlobalToast().show('取消失败')
+      }
+      finally {
+        uni.hideLoading()
+      }
+    },
+  })
+}
 </script>
 
 <template>
@@ -96,15 +117,15 @@ function getCountdownTime(expireTime?: string): number {
       </view>
     </view>
     <!-- 操作按钮 -->
-    <!-- <view v-if="order.oilOrderStatus === 1" class="mt20rpx flex items-center justify-end gap-20rpx">
+    <view v-if="order.oilOrderStatus === 1" class="mt20rpx flex items-center justify-end gap-20rpx">
       <wd-button plain size="small" custom-class="action-btn" @click="handleCancelOrder(order)">
         取消订单
       </wd-button>
-      <wd-button plain size="small" custom-class="action-btn" @click="handlePay(order)">
+      <!-- <wd-button plain size="small" custom-class="action-btn" @click="handlePay(order)">
         付款
-      </wd-button>
+      </wd-button> -->
     </view>
-    <view v-else-if="order.oilOrderStatus === 2" class="mt20rpx flex items-center justify-end">
+    <!-- <view v-else-if="order.oilOrderStatus === 2" class="mt20rpx flex items-center justify-end">
       <wd-button plain size="small" custom-class="action-btn" @click="handleInvoice(order)">
         申请开票
       </wd-button>

+ 1 - 1
src/subPack-smqjh/order/components/OrderRenderer.vue

@@ -33,6 +33,6 @@ defineEmits<{
       @refresh="$emit('refresh')"
     />
     <videoRightsList v-else-if="orderList.businessType === 'XNSP' || orderList.businessType === 'all'" :order="orderList" />
-    <Jy v-else-if="orderList.businessType === 'JY' || orderList.businessType === 'all'" :order="orderList" />
+    <Jy v-else-if="orderList.businessType === 'JY' || orderList.businessType === 'all'" :order="orderList" @refresh="$emit('refresh')" />
   </block>
 </template>