Files
mp-vue/src/api/sdy/sdyDealerOrder/index.ts
赵忠林 3ecfaeae87 feat(sdy): 更新经销商订单模型和导入功能
- 将 orderId 字段更改为 orderNo,类型从 number 改为 string
- 更新经销商资本模型中的 describe 字段为 comments- 在 shopDealerOrder 模型中添加 settledPrice 和 payPrice 字段
- 修改导入接口 URL,使用 MODULES_API_URL 前缀- 在用户验证页面添加权限控制
- 移除订单状态和结算状态的搜索选项
- 添加新的经销商订单编辑组件和相关功能
- 创建新的经销商订单管理页面,包含完整的CRUD操作- 添加批量删除和订单结算功能- 更新表格列配置,展示更多订单详情信息
2025-10-13 23:03:44 +08:00

136 lines
3.6 KiB
TypeScript

import request from '@/utils/request';
import type {ApiResult} from '@/api';
import type {ShopDealerOrder, ShopDealerOrderParam} from './model';
import {utils, writeFile} from 'xlsx';
import {message} from 'ant-design-vue';
import {getTenantId} from '@/utils/domain';
import {listShopDealerOrder} from "@/api/shop/shopDealerOrder";
import {MODULES_API_URL} from "@/config/setting";
/**
* 导入分销商订单
*/
export async function importSdyDealerOrder(file: File) {
const formData = new FormData();
formData.append('file', file);
const res = await request.post<ApiResult<unknown>>(
MODULES_API_URL + '/sdy/sdy-dealer-order/import',
formData
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导出分销商订单
*/
export async function exportSdyDealerOrder(params?: ShopDealerOrderParam) {
// 显示导出加载提示
message.loading('正在准备导出数据...', 0);
try {
// 获取数据
const list = await listShopDealerOrder(params);
if (!list || list.length === 0) {
message.destroy();
message.warning('没有数据可以导出');
return;
}
// 构建导出数据
const array: (string | number)[][] = [
[
'订单ID',
'买家用户ID',
'订单总金额',
'一级分销商ID',
'一级佣金',
'二级分销商ID',
'二级佣金',
'三级分销商ID',
'三级佣金',
'订单状态',
'结算状态',
'结算时间',
'创建时间'
]
];
list.forEach((order: ShopDealerOrder) => {
array.push([
order.orderNo || '',
order.userId || '',
order.orderPrice || '0',
order.firstUserId || '',
order.firstMoney || '0',
order.secondUserId || '',
order.secondMoney || '0',
order.thirdUserId || '',
order.thirdMoney || '0',
order.isInvalid === 0 ? '有效' : '失效',
order.isSettled === 0 ? '未结算' : '已结算',
order.settleTime ? new Date(order.settleTime).toLocaleString() : '',
order.createTime || ''
]);
});
// 创建工作簿
const sheetName = `shop_dealer_order_${getTenantId()}`;
const workbook = {
SheetNames: [sheetName],
Sheets: {}
};
const sheet = utils.aoa_to_sheet(array);
workbook.Sheets[sheetName] = sheet;
// 设置列宽
sheet['!cols'] = [
{wch: 15}, // 订单ID
{wch: 12}, // 买家用户ID
{wch: 12}, // 订单总金额
{wch: 15}, // 一级分销商ID
{wch: 12}, // 一级佣金
{wch: 15}, // 二级分销商ID
{wch: 12}, // 二级佣金
{wch: 15}, // 三级分销商ID
{wch: 12}, // 三级佣金
{wch: 10}, // 订单状态
{wch: 10}, // 结算状态
{wch: 20}, // 结算时间
{wch: 20} // 创建时间
];
message.destroy();
message.loading('正在生成Excel文件...', 0);
// 延迟写入文件,确保消息提示显示
setTimeout(() => {
writeFile(workbook, `${sheetName}.xlsx`);
message.destroy();
message.success(`成功导出 ${list.length} 条记录`);
}, 1000);
} catch (error: any) {
message.destroy();
message.error(error.message || '导出失败,请重试');
}
}
/**
* 结算订单
*/
export async function updateSdyDealerOrder(data: ShopDealerOrder) {
const res = await request.put<ApiResult<unknown>>(
'/sdy/sdy-dealer-order',
data
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}