mirror of
				https://gitee.com/hhyykk/ipms-sjy-ui.git
				synced 2025-11-04 04:08:44 +08:00 
			
		
		
		
	交易:核销
This commit is contained in:
		@@ -139,3 +139,8 @@ export const updateOrderPrice = async (data: any) => {
 | 
			
		||||
export const updateOrderAddress = async (data: any) => {
 | 
			
		||||
  return await request.put({ url: `/trade/order/update-address`, data })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 订单核销
 | 
			
		||||
export const pickUpOrder = async (id: number) => {
 | 
			
		||||
  return await request.put({ url: `/trade/order/pick-up?id=${id}` })
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -389,3 +389,28 @@ export const DeliveryTypeEnum = {
 | 
			
		||||
    name: '到店自提'
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * 交易订单 - 状态
 | 
			
		||||
 */
 | 
			
		||||
export const TradeOrderStatusEnum = {
 | 
			
		||||
  UNPAID: {
 | 
			
		||||
    status: 0,
 | 
			
		||||
    name: '待支付'
 | 
			
		||||
  },
 | 
			
		||||
  UNDELIVERED: {
 | 
			
		||||
    status: 10,
 | 
			
		||||
    name: '待发货'
 | 
			
		||||
  },
 | 
			
		||||
  DELIVERED: {
 | 
			
		||||
    status: 20,
 | 
			
		||||
    name: '已发货'
 | 
			
		||||
  },
 | 
			
		||||
  COMPLETED: {
 | 
			
		||||
    status: 30,
 | 
			
		||||
    name: '已完成'
 | 
			
		||||
  },
 | 
			
		||||
  CANCELED: {
 | 
			
		||||
    status: 40,
 | 
			
		||||
    name: '已取消'
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,24 +27,40 @@
 | 
			
		||||
        <dict-tag :type="DICT_TYPE.TRADE_ORDER_STATUS" :value="formData.status!" />
 | 
			
		||||
      </el-descriptions-item>
 | 
			
		||||
      <el-descriptions-item label-class-name="no-colon">
 | 
			
		||||
        <el-button v-if="formData.status! === 0" type="primary" @click="updatePrice">
 | 
			
		||||
        <el-button
 | 
			
		||||
          v-if="formData.status! === TradeOrderStatusEnum.UNPAID.status"
 | 
			
		||||
          type="primary"
 | 
			
		||||
          @click="updatePrice"
 | 
			
		||||
        >
 | 
			
		||||
          调整价格
 | 
			
		||||
        </el-button>
 | 
			
		||||
        <el-button type="primary" @click="remark">备注</el-button>
 | 
			
		||||
        <el-button
 | 
			
		||||
          v-if="formData.status! === 10 && formData.deliveryType === DeliveryTypeEnum.EXPRESS.type"
 | 
			
		||||
          type="primary"
 | 
			
		||||
          @click="delivery"
 | 
			
		||||
        >
 | 
			
		||||
          发货
 | 
			
		||||
        </el-button>
 | 
			
		||||
        <el-button
 | 
			
		||||
          v-if="formData.status! === 10 && formData.deliveryType === DeliveryTypeEnum.EXPRESS.type"
 | 
			
		||||
          type="primary"
 | 
			
		||||
          @click="updateAddress"
 | 
			
		||||
        >
 | 
			
		||||
          修改地址
 | 
			
		||||
        </el-button>
 | 
			
		||||
        <!-- 待发货 -->
 | 
			
		||||
        <template v-if="formData.status! === TradeOrderStatusEnum.UNDELIVERED.status">
 | 
			
		||||
          <!-- 快递发货 -->
 | 
			
		||||
          <el-button
 | 
			
		||||
            v-if="formData.deliveryType === DeliveryTypeEnum.EXPRESS.type"
 | 
			
		||||
            type="primary"
 | 
			
		||||
            @click="delivery"
 | 
			
		||||
          >
 | 
			
		||||
            发货
 | 
			
		||||
          </el-button>
 | 
			
		||||
          <el-button
 | 
			
		||||
            v-if="formData.deliveryType === DeliveryTypeEnum.EXPRESS.type"
 | 
			
		||||
            type="primary"
 | 
			
		||||
            @click="updateAddress"
 | 
			
		||||
          >
 | 
			
		||||
            修改地址
 | 
			
		||||
          </el-button>
 | 
			
		||||
          <!-- 到店自提 -->
 | 
			
		||||
          <el-button
 | 
			
		||||
            v-if="formData.deliveryType === DeliveryTypeEnum.PICK_UP.type"
 | 
			
		||||
            type="primary"
 | 
			
		||||
            @click="handlePickUp"
 | 
			
		||||
          >
 | 
			
		||||
            核销
 | 
			
		||||
          </el-button>
 | 
			
		||||
        </template>
 | 
			
		||||
      </el-descriptions-item>
 | 
			
		||||
      <el-descriptions-item>
 | 
			
		||||
        <template #label><span style="color: red">提醒: </span></template>
 | 
			
		||||
@@ -168,7 +184,7 @@
 | 
			
		||||
      <!-- 自提门店 -->
 | 
			
		||||
      <div v-if="formData.deliveryType === DeliveryTypeEnum.PICK_UP.type">
 | 
			
		||||
        <el-descriptions-item label="自提门店: " v-if="formData.pickUpStoreId">
 | 
			
		||||
          {{ pickUpStore.name }}
 | 
			
		||||
          {{ pickUpStore?.name }}
 | 
			
		||||
        </el-descriptions-item>
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-descriptions>
 | 
			
		||||
@@ -217,7 +233,7 @@ import OrderUpdateAddressForm from '@/views/mall/trade/order/form/OrderUpdateAdd
 | 
			
		||||
import OrderUpdatePriceForm from '@/views/mall/trade/order/form/OrderUpdatePriceForm.vue'
 | 
			
		||||
import * as DeliveryExpressApi from '@/api/mall/trade/delivery/express'
 | 
			
		||||
import { useTagsViewStore } from '@/store/modules/tagsView'
 | 
			
		||||
import { DeliveryTypeEnum } from '@/utils/constants'
 | 
			
		||||
import { DeliveryTypeEnum, TradeOrderStatusEnum } from '@/utils/constants'
 | 
			
		||||
import * as DeliveryPickUpStoreApi from '@/api/mall/trade/delivery/pickUpStore'
 | 
			
		||||
 | 
			
		||||
defineOptions({ name: 'TradeOrderDetail' })
 | 
			
		||||
@@ -263,6 +279,19 @@ const updatePrice = () => {
 | 
			
		||||
  updatePriceFormRef.value?.open(formData.value)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 核销 */
 | 
			
		||||
const handlePickUp = async () => {
 | 
			
		||||
  try {
 | 
			
		||||
    // 二次确认
 | 
			
		||||
    await message.confirm('确认核销订单吗?')
 | 
			
		||||
    // 提交
 | 
			
		||||
    await TradeOrderApi.pickUpOrder(formData.value.id!)
 | 
			
		||||
    message.success('核销成功')
 | 
			
		||||
    // 刷新列表
 | 
			
		||||
    await getDetail()
 | 
			
		||||
  } catch {}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 获得详情 */
 | 
			
		||||
const { params } = useRoute() // 查询参数
 | 
			
		||||
const getDetail = async () => {
 | 
			
		||||
 
 | 
			
		||||
@@ -74,7 +74,11 @@
 | 
			
		||||
          />
 | 
			
		||||
        </el-select>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-form-item v-if="queryParams.deliveryType === 1" label="快递公司">
 | 
			
		||||
      <el-form-item
 | 
			
		||||
        v-if="queryParams.deliveryType === DeliveryTypeEnum.EXPRESS.type"
 | 
			
		||||
        label="快递公司"
 | 
			
		||||
        prop="logisticsId"
 | 
			
		||||
      >
 | 
			
		||||
        <el-select v-model="queryParams.logisticsId" class="!w-280px" clearable placeholder="全部">
 | 
			
		||||
          <el-option
 | 
			
		||||
            v-for="item in deliveryExpressList"
 | 
			
		||||
@@ -84,7 +88,11 @@
 | 
			
		||||
          />
 | 
			
		||||
        </el-select>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-form-item v-if="queryParams.deliveryType === 2" label="自提门店">
 | 
			
		||||
      <el-form-item
 | 
			
		||||
        v-if="queryParams.deliveryType === DeliveryTypeEnum.PICK_UP.type"
 | 
			
		||||
        label="自提门店"
 | 
			
		||||
        prop="pickUpStoreId"
 | 
			
		||||
      >
 | 
			
		||||
        <el-select
 | 
			
		||||
          v-model="queryParams.pickUpStoreId"
 | 
			
		||||
          class="!w-280px"
 | 
			
		||||
@@ -100,6 +108,19 @@
 | 
			
		||||
          />
 | 
			
		||||
        </el-select>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-form-item
 | 
			
		||||
        v-if="queryParams.deliveryType === DeliveryTypeEnum.PICK_UP.type"
 | 
			
		||||
        label="核销码"
 | 
			
		||||
        prop="pickUpVerifyCode"
 | 
			
		||||
      >
 | 
			
		||||
        <el-input
 | 
			
		||||
          v-model="queryParams.pickUpVerifyCode"
 | 
			
		||||
          class="!w-280px"
 | 
			
		||||
          clearable
 | 
			
		||||
          placeholder="请输入自提核销码"
 | 
			
		||||
          @keyup.enter="handleQuery"
 | 
			
		||||
        />
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <!-- TODO puhui 聚合搜索等售后结束后实现-->
 | 
			
		||||
      <!-- TODO puhui999:尽量不要用 .k 这样的参数,完整拼写,有完整的业务含义 -->
 | 
			
		||||
      <el-form-item label="聚合搜索">
 | 
			
		||||
@@ -234,7 +255,10 @@
 | 
			
		||||
            <el-table-column label="买家/收货人" min-width="160">
 | 
			
		||||
              <template #default>
 | 
			
		||||
                <!-- 快递发货  -->
 | 
			
		||||
                <div v-if="scope.row.deliveryType === 1" class="flex flex-col">
 | 
			
		||||
                <div
 | 
			
		||||
                  v-if="scope.row.deliveryType === DeliveryTypeEnum.EXPRESS.type"
 | 
			
		||||
                  class="flex flex-col"
 | 
			
		||||
                >
 | 
			
		||||
                  <span>买家:{{ scope.row.user.nickname }}</span>
 | 
			
		||||
                  <span>
 | 
			
		||||
                    收货人:{{ scope.row.receiverName }} {{ scope.row.receiverMobile }}
 | 
			
		||||
@@ -242,7 +266,10 @@
 | 
			
		||||
                  </span>
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- 自提  -->
 | 
			
		||||
                <div v-if="scope.row.deliveryType === 2" class="flex flex-col">
 | 
			
		||||
                <div
 | 
			
		||||
                  v-if="scope.row.deliveryType === DeliveryTypeEnum.PICK_UP.type"
 | 
			
		||||
                  class="flex flex-col"
 | 
			
		||||
                >
 | 
			
		||||
                  <span>
 | 
			
		||||
                    门店名称:
 | 
			
		||||
                    {{ pickUpStoreList.find((p) => p.id === scope.row.pickUpStoreId)?.name }}
 | 
			
		||||
@@ -273,7 +300,7 @@
 | 
			
		||||
            <el-table-column align="center" fixed="right" label="操作" width="160">
 | 
			
		||||
              <template #default>
 | 
			
		||||
                <!-- TODO 权限后续补齐 -->
 | 
			
		||||
                <div class="flex justify-center items-center">
 | 
			
		||||
                <div class="flex items-center justify-center">
 | 
			
		||||
                  <el-button link type="primary" @click="openDetail(scope.row.id)">
 | 
			
		||||
                    <Icon icon="ep:notification" />
 | 
			
		||||
                    详情
 | 
			
		||||
@@ -287,7 +314,10 @@
 | 
			
		||||
                      <el-dropdown-menu>
 | 
			
		||||
                        <!-- 如果是【快递】,并且【未发货】,则展示【发货】按钮 -->
 | 
			
		||||
                        <el-dropdown-item
 | 
			
		||||
                          v-if="scope.row.deliveryType === 1 && scope.row.status === 10"
 | 
			
		||||
                          v-if="
 | 
			
		||||
                            scope.row.deliveryType === DeliveryTypeEnum.EXPRESS.type &&
 | 
			
		||||
                            scope.row.status === TradeOrderStatusEnum.UNDELIVERED.status
 | 
			
		||||
                          "
 | 
			
		||||
                          command="delivery"
 | 
			
		||||
                        >
 | 
			
		||||
                          <Icon icon="ep:takeaway-box" />
 | 
			
		||||
@@ -332,6 +362,7 @@ import { formatDate } from '@/utils/formatTime'
 | 
			
		||||
import { floatToFixed2 } from '@/utils'
 | 
			
		||||
import { createImageViewer } from '@/components/ImageViewer'
 | 
			
		||||
import * as DeliveryExpressApi from '@/api/mall/trade/delivery/express'
 | 
			
		||||
import { DeliveryTypeEnum, TradeOrderStatusEnum } from '@/utils/constants'
 | 
			
		||||
 | 
			
		||||
defineOptions({ name: 'TradeOrder' })
 | 
			
		||||
 | 
			
		||||
@@ -352,7 +383,8 @@ const queryParams = ref({
 | 
			
		||||
  type: null, // 订单类型
 | 
			
		||||
  deliveryType: null, // 配送方式
 | 
			
		||||
  logisticsId: null, // 快递公司
 | 
			
		||||
  pickUpStoreId: null // 自提门店
 | 
			
		||||
  pickUpStoreId: null, // 自提门店
 | 
			
		||||
  pickUpVerifyCode: null // 自提核销码
 | 
			
		||||
})
 | 
			
		||||
const queryType = reactive({ k: '' }) // 订单搜索类型 k
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user