Selaa lähdekoodia

feat(api): 新增确认收货API接口定义

- 添加 xsb.confirmReceipt API 接口定义
- 在 globals.d.ts 中增加对应的类型声明

feat(order): 实现订单确认收货功能

- 在 xsb 和 smqjh 子包的订单页面添加确认收货按钮
- 实现 handleSubmitOrder 方法处理确认收货逻辑
- 根据订单状态显示确认收货按钮

feat(utils): 添加统一确认收货工具函数

- 新增 handleCommonOrderReceive 函数处理确认收货流程
- 包含确认弹窗和API调用逻辑

fix(search): 修复搜索页面店铺ID获取问题

- 从 useSysXsbStore 中获取 SelectShopInfo
- 使用 SelectShopInfo.value.shopId 替代固定值 shopId: 1
- 修复商品点击跳转使用 skuId 而非商品 id 的问题
zhangtao 2 päivää sitten
vanhempi
commit
8c7349ed58

+ 1 - 0
src/api/apiDefinitions.ts

@@ -49,6 +49,7 @@ export default {
   'xsb.skuOrderConfirm':['GET', '/smqjh-oms/api/v1/order/skuOrderConfirm'],
   'xsb.myShoppingCartCategory':['GET', '/smqjh-oms/app-api/v1/shoppingCart/myShoppingCartCategory'],
   'xsb.delivery':['GET', '/smqjh-system/app-api/v1/delivery'],
+  'xsb.confirmReceipt':['GET', '/smqjh-oms/api/v1/order/confirmReceipt'],
 
   'common.myShoppingCart':['GET', '/smqjh-oms/app-api/v1/shoppingCart/myShoppingCart'],
   'common.addShoppingCart':['POST', '/smqjh-oms/app-api/v1/shoppingCart/addShoppingCart'],

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

@@ -357,6 +357,15 @@ declare global {
       >(
         config: Config
       ): Alova2Method<apiResData<{deliveryType:number}>, 'xsb.delivery', Config>;
+      confirmReceipt<
+        Config extends Alova2MethodConfig<any> & {
+          pathParams: {
+            orderNumber: string;
+          }
+        }
+      >(
+        config: Config
+      ): Alova2Method<any, 'xsb.confirmReceipt', Config>;
     }
     common: {
       myShoppingCart<

+ 9 - 3
src/subPack-smqjh/order/index.vue

@@ -65,9 +65,10 @@ async function handlePay(orderNumber: string) {
     refresh()
   }
 }
-// const confirmOrder = await AsyncImport('@/subPack-xsb/utils/confirm-order')
-// const orderData = await AsyncImport('@/subPack-xsb/utils/order-data')
-// console.log(confirmOrder, orderData, '===========orderData')
+async function handleSubmitOrder(order: Api.xsbOrderList) {
+  await subPackOrder.value.handleCommonOrderReceive(order)
+  refresh()
+}
 </script>
 
 <template>
@@ -160,6 +161,11 @@ async function handlePay(orderNumber: string) {
               </wd-button>
             </view>
           </templpate>
+          <template v-if="item.hbOrderStatus === subPackOrder?.OrderStatus.OrderArrived">
+            <wd-button size="small" plain type="info" @click.stop="handleSubmitOrder(item)">
+              确认收货
+            </wd-button>
+          </template>
         </view>
       </view>
       <wd-status-tip v-if="!orderList.length" image="content" tip="暂无内容" />

+ 10 - 1
src/subPack-xsb/order/index.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { getWxCommonPayment, handleCommonPayMent } from '../utils/confirm-order'
-import { OrderStatus, handleCommonCancelOrder, handleCommonDeleteOrder, handleCommonOrderStatusText, navTabTypeList, orderStatusList } from '../utils/order-data'
+import { OrderStatus, handleCommonCancelOrder, handleCommonDeleteOrder, handleCommonOrderReceive, handleCommonOrderStatusText, navTabTypeList, orderStatusList } from '../utils/order-data'
 import { StaticUrl } from '@/config'
 import router from '@/router'
 
@@ -62,6 +62,10 @@ async function handleDel(order: Api.xsbOrderList) {
   await handleCommonDeleteOrder(order)
   refresh()
 }
+async function handleSubmitOrder(order: Api.xsbOrderList) {
+  await handleCommonOrderReceive(order)
+  refresh()
+}
 </script>
 
 <template>
@@ -168,6 +172,11 @@ async function handleDel(order: Api.xsbOrderList) {
               </wd-button>
             </view> -->
           </template>
+          <template v-if="item.hbOrderStatus === OrderStatus.OrderArrived">
+            <wd-button size="small" plain type="info" @click.stop="handleSubmitOrder(item)">
+              确认收货
+            </wd-button>
+          </template>
         </view>
       </view>
     </view>

+ 3 - 3
src/subPack-xsb/search/index.vue

@@ -8,7 +8,7 @@ definePage({
     navigationBarTitleText: '搜索',
   },
 })
-const { searchList } = storeToRefs(useSysXsbStore())
+const { searchList, SelectShopInfo } = storeToRefs(useSysXsbStore())
 const searchText = ref()
 const tabbarlist = ref([
   { name: '综合', id: 0 },
@@ -25,7 +25,7 @@ const { data, send, isLastPage, page, error } = usePagination((pageNum, pageSize
   pageSize,
   priceSort: activeTab.value === 2 ? 'DESC' : '',
   salesNum: activeTab.value === 1 ? 'DESC' : '',
-  shopId: 1,
+  shopId: SelectShopInfo.value.shopId,
   channelId: userInfo.value.channelId || 1,
 } }), {
   immediate: false,
@@ -150,7 +150,7 @@ function handleSearchText(text: string) {
       </view>
     </view>
     <view v-if="isSearch" class="px24rpx pt20rpx">
-      <view v-for="item in data" :key="item.id" class="mb20rpx box-border flex items-center justify-between rounded-16rpx bg-white p24rpx" @click="router.push({ name: 'xsb-goods', params: { id: String(item.id) } })">
+      <view v-for="item in data" :key="item.id" class="mb20rpx box-border flex items-center justify-between rounded-16rpx bg-white p24rpx" @click="router.push({ name: 'xsb-goods', params: { id: String(item.skuList[0].skuId) } })">
         <image
           :src="item.pic"
           class="h200rpx w200rpx flex-shrink-0 rounded-16rpx"

+ 22 - 0
src/subPack-xsb/utils/order-data.ts

@@ -132,3 +132,25 @@ export function handleCommonDeleteOrder(order: Api.xsbOrderList) {
     })
   })
 }
+
+/**
+ * 统一确认收货
+ */
+export function handleCommonOrderReceive(order: Api.xsbOrderList) {
+  return new Promise((resolve, reject) => {
+    useGlobalMessage().confirm({
+      title: '确认收货',
+      msg: '确定要确认收货吗?',
+      success: async () => {
+        uni.showLoading({ mask: true })
+        await Apis.xsb.confirmReceipt({
+          pathParams: {
+            orderNumber: String(order.orderNumber),
+          },
+        })
+        resolve(1)
+      },
+      fail: err => reject(err),
+    })
+  })
+}