全部门店开单记录汇总导出接口说明.md 6.28 KB

全部门店开单记录汇总导出接口

接口地址

GET /api/Extend/lqkdkdjlb/billing-record-summary-export-all-stores

接口说明

按照Excel格式导出全部门店的开单记录汇总,每个品项每个健康师一行。如果某个品项有多个健康师,会展开为多行数据。

请求参数

参数名 类型 必填 说明
StartTime DateTime 开始时间(格式:yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss)
EndTime DateTime 结束时间(格式:yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss)
MemberId string 客户ID(会员ID),筛选指定客户
ItemCategory string 品项分类,筛选指定分类
ItemId string 品项ID,筛选指定品项
HealthCoachId string 健康师ID,筛选指定健康师

请求示例

基础请求(仅时间范围)

// Axios 示例
axios.get('/api/Extend/lqkdkdjlb/billing-record-summary-export-all-stores', {
  params: {
    StartTime: '2026-01-01',
    EndTime: '2026-01-31'
  },
  headers: {
    'Authorization': 'Bearer ' + token
  },
  responseType: 'blob' // 重要:设置为 blob 以接收文件
}).then(response => {
  // 创建下载链接
  const url = window.URL.createObjectURL(new Blob([response.data]));
  const link = document.createElement('a');
  link.href = url;
  link.setAttribute('download', '开单记录汇总.xls');
  document.body.appendChild(link);
  link.click();
  link.remove();
});

完整请求(包含筛选条件)

axios.get('/api/Extend/lqkdkdjlb/billing-record-summary-export-all-stores', {
  params: {
    StartTime: '2026-01-01',
    EndTime: '2026-01-31',
    MemberId: '123456789', // 可选
    ItemCategory: '分类名称', // 可选
    ItemId: '987654321', // 可选
    HealthCoachId: '111222333' // 可选
  },
  headers: {
    'Authorization': 'Bearer ' + token
  },
  responseType: 'blob'
}).then(response => {
  // 处理文件下载
  const url = window.URL.createObjectURL(new Blob([response.data]));
  const link = document.createElement('a');
  link.href = url;
  link.setAttribute('download', '开单记录汇总.xls');
  document.body.appendChild(link);
  link.click();
  link.remove();
});

响应格式

成功响应(200)

{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "name": "开单记录汇总_2026-01-22_152816.xls",
    "url": "/api/File/Download?encryption=..."
  }
}

错误响应(400/500)

{
  "code": 400,
  "msg": "开始时间和结束时间不能为空"
}

Excel 列说明

导出的Excel文件包含以下列(按顺序):

  1. 开单日期 - 开单记录的日期
  2. 单据门店 - 开单门店的中文名称
  3. 客户姓名 - 客户姓名
  4. 客户电话 - 客户电话
  5. 金三角 - 金三角信息
  6. 客户类型 - 客户类型
  7. 健康师 - 健康师姓名
  8. 业绩金额 - 健康师业绩金额(格式:¥0.00)
  9. 相关品项 - 品项名称
  10. 分类 - 品项分类
  11. 类型 - 品项类型(购买/体验/赠送等)
  12. 单价 - 品项单价(格式:¥0.00)
  13. 次数 - 项目次数
  14. 品项金额 - 品项总金额(格式:¥0.00)
  15. 已付金额 - 已付金额(格式:¥0.00)
  16. 欠款金额 - 欠款金额(格式:¥0.00)
  17. 总金额 - 总金额(格式:¥0.00)
  18. 支付方式 - 支付方式
  19. 合作机构 - 合作机构名称
  20. 结算机构 - 结算机构名称
  21. 活动名称 - 活动名称
  22. 备注 - 备注信息
  23. 开单时间 - 开单时间(格式:yyyy/MM/dd HH:mm:ss)

数据展开规则

  • 如果一个开单记录有多个品项,每个品项一行
  • 如果一个品项有多个健康师,每个健康师一行
  • 如果一个品项没有健康师,健康师相关字段显示"无",业绩金额显示"¥0.00"

注意事项

  1. 时间格式:建议使用 yyyy-MM-dd 格式,系统会自动处理时间范围
  2. 文件下载:前端需要设置 responseType: 'blob' 来接收文件
  3. 文件格式:导出文件为 .xls 格式(Excel 97-2003)
  4. 数据量:如果数据量很大,导出可能需要较长时间,建议前端显示加载提示
  5. 权限:需要登录并携带有效的 Authorization token

Vue 2 + Element UI 完整示例

<template>
  <div>
    <el-button 
      type="primary" 
      :loading="exporting"
      @click="handleExport"
    >
      导出全部门店开单记录汇总
    </el-button>
  </div>
</template>

<script>
import { exportBillingRecordSummaryAllStores } from '@/api/billing'

export default {
  data() {
    return {
      exporting: false,
      queryParams: {
        StartTime: '2026-01-01',
        EndTime: '2026-01-31'
      }
    }
  },
  methods: {
    async handleExport() {
      try {
        this.exporting = true
        this.$message.info('正在导出,请稍候...')

        const response = await exportBillingRecordSummaryAllStores(this.queryParams)

        if (response.code === 200 && response.data) {
          // 使用返回的下载URL
          const downloadUrl = this.$store.getters.baseUrl + response.data.url
          window.open(downloadUrl, '_blank')

          this.$message.success('导出成功')
        } else {
          this.$message.error(response.msg || '导出失败')
        }
      } catch (error) {
        console.error('导出失败:', error)
        this.$message.error('导出失败,请稍后重试')
      } finally {
        this.exporting = false
      }
    }
  }
}
</script>

API 封装示例(api/billing.js)

import request from '@/utils/request'

/**
 * 导出全部门店开单记录汇总
 * @param {Object} params 查询参数
 * @param {string} params.StartTime 开始时间
 * @param {string} params.EndTime 结束时间
 * @param {string} [params.MemberId] 客户ID
 * @param {string} [params.ItemCategory] 品项分类
 * @param {string} [params.ItemId] 品项ID
 * @param {string} [params.HealthCoachId] 健康师ID
 * @returns {Promise}
 */
export function exportBillingRecordSummaryAllStores(params) {
  return request({
    url: '/api/Extend/lqkdkdjlb/billing-record-summary-export-all-stores',
    method: 'get',
    params: params
  })
}