zjk
2026-06-02 f93f751182a1fc48a299caf8f022bfeb976c0800
feat(活动订单管理): 新增活动订单Excel导出功能并优化导出逻辑

新增专用API接口用于导出活动订单Excel文件
为导出按钮添加未选中订单时的禁用状态
简化导出逻辑,修复成功提示的数量统计错误
调整页面头部操作栏元素间距至8px
2个文件已修改
52 ■■■■■ 已修改文件
src/service/api/transaction.ts 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userContent/active/activityManagement/components/ActivityOrderList.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/service/api/transaction.ts
@@ -20,6 +20,13 @@
  return method
}
// 导出活动订单Excel
export function exportActivityOrderExcel(params: any) {
  const method = request.Post<Service.ResponseResult<any>>('/order/api/v1/order/exportActivityOrderExcel', params, { responseType: 'blob' })
  method.meta = { ...method.meta, isBlob: true }
  return method
}
// 改派订单
export function reassignOrder(params: any) {
  return request.Post<Service.ResponseResult<any>>('/order/api/v1/order/reassignById', params)
src/views/userContent/active/activityManagement/components/ActivityOrderList.vue
@@ -11,7 +11,7 @@
  useMessage,
} from 'naive-ui'
import type { DataTableColumns } from 'naive-ui'
import { exportOrderExcel, getFleetList, getOrderList } from '@/service/api/transaction'
import { exportActivityOrderExcel, getFleetList, getOrderList } from '@/service/api/transaction'
import { operationPageList } from '@/service/api/vehicleConvoy'
import SearchPanel from '@/components/custom/SearchPanel.vue'
import Pagination from '@/components/common/Pagination.vue'
@@ -449,31 +449,28 @@
async function handleExport() {
  let params: any = {}
  if (checkedRowKeys.value.length > 0) {
    params.ids = checkedRowKeys.value
    params.activityId = props.activityId
  if (!checkedRowKeys.value.length) {
    return
  }
  else {
    params = {
      pageNum: currentPage.value,
      pageSize: pageSize.value,
      activityId: props.activityId,
      status: searchModel.value.status,
      orderNumber: searchModel.value.orderNumber,
      nickName: searchModel.value.nickName,
      plateNumber: searchModel.value.plateNumber,
      fleetId: searchModel.value.fleetId,
      orderSource: searchModel.value.orderSource,
      cityCode: searchModel.value.cityCode,
      orderTime: searchModel.value.orderTime,
      startTime: searchModel.value.orderTime ? dayjs(searchModel.value.orderTime?.[0]).format('YYYY-MM-DD') : null,
      endTime: searchModel.value.orderTime ? dayjs(searchModel.value.orderTime?.[1]).format('YYYY-MM-DD') : null,
    }
  params = {
    pageNum: currentPage.value,
    pageSize: pageSize.value,
    activityId: props.activityId,
    status: searchModel.value.status,
    orderNumber: searchModel.value.orderNumber,
    nickName: searchModel.value.nickName,
    plateNumber: searchModel.value.plateNumber,
    fleetId: searchModel.value.fleetId,
    orderSource: searchModel.value.orderSource,
    cityCode: searchModel.value.cityCode,
    orderTime: searchModel.value.orderTime,
    startTime: searchModel.value.orderTime ? dayjs(searchModel.value.orderTime?.[0]).format('YYYY-MM-DD') : null,
    endTime: searchModel.value.orderTime ? dayjs(searchModel.value.orderTime?.[1]).format('YYYY-MM-DD') : null,
  }
  const response = await exportOrderExcel(params)
  const response = await exportActivityOrderExcel(params)
  if (response instanceof Blob) {
    downloadFile(response, `活动订单列表_${new Date().getTime()}.xlsx`)
    message.success(`导出成功,共${checkedRowKeys.value.length > 0 ? checkedRowKeys.value.length : total.value}条数据`)
    message.success(`导出成功,共${checkedRowKeys.value.length}条数据`)
  }
}
@@ -570,7 +567,7 @@
    <NCard class="flex-1 robotaxi-table-card" :bordered="false">
      <template #header>
        <div class="flex items-center gap-16px">
          <div class="flex gap-2px items-center">
          <div class="flex gap-8px items-center">
            <span
              v-if="checkedRowKeys.length > 0"
              style="color: rgba(23, 31, 38, 0.6); font-weight: 400"
@@ -581,7 +578,7 @@
                })
              }}
            </span>
            <NButton @click="handleExport">
            <NButton :disabled="checkedRowKeys.length === 0" @click="handleExport">
              批量导出订单
            </NButton>
          </div>