This commit is contained in:
hw
2025-11-20 16:31:23 +08:00
96 changed files with 969 additions and 1361 deletions

View File

@@ -12,24 +12,24 @@ export namespace MallMemberStatisticsApi {
times: Date[] | Dayjs[]; // 时间范围
}
/** 会员分析 Response */
export interface AnalyseRespVO {
visitUserCount: number; // 访问用户数
orderUserCount: number; // 下单用户数
payUserCount: number; // 支付用户数
atv: number; // 平均客单价
comparison: DataComparisonRespVO<AnalyseDataRespVO>; // 对照数据
}
/** 会员分析对照数据 Response */
export interface AnalyseComparison {
export interface AnalyseDataRespVO {
registerUserCount: number; // 注册用户数
visitUserCount: number; // 访问用户数
rechargeUserCount: number; // 充值用户数
}
/** 会员分析 Response */
export interface Analyse {
visitUserCount: number; // 访问用户数
orderUserCount: number; // 下单用户数
payUserCount: number; // 支付用户数
atv: number; // 平均客单价
comparison: DataComparisonRespVO<AnalyseComparison>; // 对照数据
}
/** 会员地区统计 Response */
export interface AreaStatistics {
export interface AreaStatisticsRespVO {
areaId: number; // 地区ID
areaName: string; // 地区名称
userCount: number; // 用户数
@@ -39,13 +39,13 @@ export namespace MallMemberStatisticsApi {
}
/** 会员性别统计 Response */
export interface SexStatistics {
export interface SexStatisticsRespVO {
sex: number; // 性别
userCount: number; // 用户数
}
/** 会员统计 Response */
export interface Summary {
export interface SummaryRespVO {
userCount: number; // 用户数
rechargeUserCount: number; // 充值用户数
rechargePrice: number; // 充值金额
@@ -53,7 +53,7 @@ export namespace MallMemberStatisticsApi {
}
/** 会员终端统计 Response */
export interface TerminalStatistics {
export interface TerminalStatisticsRespVO {
terminal: number; // 终端
userCount: number; // 用户数
}
@@ -65,7 +65,7 @@ export namespace MallMemberStatisticsApi {
}
/** 会员注册数量 Response */
export interface RegisterCount {
export interface RegisterCountRespVO {
date: string; // 日期
count: number; // 数量
}
@@ -73,7 +73,7 @@ export namespace MallMemberStatisticsApi {
/** 查询会员统计 */
export function getMemberSummary() {
return requestClient.get<MallMemberStatisticsApi.Summary>(
return requestClient.get<MallMemberStatisticsApi.SummaryRespVO>(
'/statistics/member/summary',
);
}
@@ -82,7 +82,7 @@ export function getMemberSummary() {
export function getMemberAnalyse(
params: MallMemberStatisticsApi.MemberAnalyseReqVO,
) {
return requestClient.get<MallMemberStatisticsApi.Analyse>(
return requestClient.get<MallMemberStatisticsApi.AnalyseRespVO>(
'/statistics/member/analyse',
{
params: {
@@ -97,21 +97,21 @@ export function getMemberAnalyse(
/** 按照省份,查询会员统计列表 */
export function getMemberAreaStatisticsList() {
return requestClient.get<MallMemberStatisticsApi.AreaStatistics[]>(
return requestClient.get<MallMemberStatisticsApi.AreaStatisticsRespVO[]>(
'/statistics/member/area-statistics-list',
);
}
/** 按照性别,查询会员统计列表 */
export function getMemberSexStatisticsList() {
return requestClient.get<MallMemberStatisticsApi.SexStatistics[]>(
return requestClient.get<MallMemberStatisticsApi.SexStatisticsRespVO[]>(
'/statistics/member/sex-statistics-list',
);
}
/** 按照终端,查询会员统计列表 */
export function getMemberTerminalStatisticsList() {
return requestClient.get<MallMemberStatisticsApi.TerminalStatistics[]>(
return requestClient.get<MallMemberStatisticsApi.TerminalStatisticsRespVO[]>(
'/statistics/member/terminal-statistics-list',
);
}
@@ -125,7 +125,7 @@ export function getUserCountComparison() {
/** 获得会员注册数量列表 */
export function getMemberRegisterCountList(beginTime: Date, endTime: Date) {
return requestClient.get<MallMemberStatisticsApi.RegisterCount[]>(
return requestClient.get<MallMemberStatisticsApi.RegisterCountRespVO[]>(
'/statistics/member/register-count-list',
{
params: {

View File

@@ -6,50 +6,35 @@ import { requestClient } from '#/api/request';
export namespace MallProductStatisticsApi {
/** 商品统计数据 */
export interface ProductStatistics {
/** 编号 */
id: number;
/** 统计日期 */
day: string;
/** 商品 SPU 编号 */
spuId: number;
/** 商品 SPU 名称 */
spuName: string;
/** 商品 SPU 图片 */
spuPicUrl: string;
/** 浏览次数 */
browseCount: number;
/** 浏览人数 */
browseUserCount: number;
/** 收藏次数 */
favoriteCount: number;
/** 加购次数 */
cartCount: number;
/** 下单次数 */
orderCount: number;
/** 支付次数 */
orderPayCount: number;
/** 支付金额 */
orderPayPrice: number;
/** 售后次数 */
afterSaleCount: number;
/** 退款金额 */
afterSaleRefundPrice: number;
/** 浏览转化率 */
browseConvertPercent: number;
export interface ProductStatisticsRespVO {
id: number; // 编号
day: string; // 统计日期
spuId: number; // 商品 SPU 编号
spuName: string; // 商品 SPU 名称
spuPicUrl: string; // 商品 SPU 图片
browseCount: number; // 浏览次数
browseUserCount: number; // 浏览人数
favoriteCount: number; // 收藏次数
cartCount: number; // 加购次数
orderCount: number; // 下单次数
orderPayCount: number; // 支付次数
orderPayPrice: number; // 支付金额
afterSaleCount: number; // 售后次数
afterSaleRefundPrice: number; // 退款金额
browseConvertPercent: number; // 浏览转化率
}
}
/** 获得商品统计分析 */
export function getProductStatisticsAnalyse(params: any) {
return requestClient.get<
DataComparisonRespVO<MallProductStatisticsApi.ProductStatistics>
DataComparisonRespVO<MallProductStatisticsApi.ProductStatisticsRespVO>
>('/statistics/product/analyse', { params });
}
/** 获得商品状况明细 */
export function getProductStatisticsList(params: any) {
return requestClient.get<MallProductStatisticsApi.ProductStatistics[]>(
return requestClient.get<MallProductStatisticsApi.ProductStatisticsRespVO[]>(
'/statistics/product/list',
{ params },
);
@@ -63,6 +48,6 @@ export function exportProductStatisticsExcel(params: any) {
/** 获得商品排行榜分页 */
export function getProductStatisticsRankPage(params: PageParam) {
return requestClient.get<
PageResult<MallProductStatisticsApi.ProductStatistics>
PageResult<MallProductStatisticsApi.ProductStatisticsRespVO>
>('/statistics/product/rank-page', { params });
}

View File

@@ -1,25 +1,25 @@
import type { DataComparisonRespVO } from './common';
import { formatDate, formatDateTime } from '@vben/utils';
import { formatDateTime } from '@vben/utils';
import { requestClient } from '#/api/request';
export namespace MallTradeStatisticsApi {
/** 交易状况 Request */
export interface TradeTrendReqVO {
times: [Date, Date];
}
/** 交易统计 Response */
export interface TradeSummary {
export interface TradeSummaryRespVO {
yesterdayOrderCount: number;
monthOrderCount: number;
yesterdayPayPrice: number;
monthPayPrice: number;
}
/** 交易状况 Request */
export interface TradeTrendReq {
times: [Date, Date];
}
/** 交易状况统计 Response */
export interface TradeTrendSummary {
export interface TradeTrendSummaryRespVO {
time: string;
turnoverPrice: number;
orderPayPrice: number;
@@ -31,60 +31,46 @@ export namespace MallTradeStatisticsApi {
}
/** 交易订单数量 Response */
export interface TradeOrderCount {
/** 待发货 */
undelivered?: number;
/** 待核销 */
pickUp?: number;
/** 退款中 */
afterSaleApply?: number;
/** 提现待审核 */
auditingWithdraw?: number;
export interface TradeOrderCountRespVO {
undelivered?: number; // 待发货
pickUp?: number; // 待核销
afterSaleApply?: number; // 退款中
auditingWithdraw?: number; // 提现待审核
}
/** 交易订单统计 Response */
export interface TradeOrderSummaryRespVO {
/** 支付订单商品数 */
orderPayCount?: number;
/** 总支付金额,单位:分 */
orderPayPrice?: number;
orderPayCount?: number; // 支付订单商品数
orderPayPrice?: number; // 总支付金额,单位:分
}
/** 订单量趋势统计 Response */
export interface TradeOrderTrend {
/** 日期 */
date: string;
/** 订单数量 */
orderPayCount: number;
/** 订单支付金额 */
orderPayPrice: number;
export interface TradeOrderTrendRespVO {
date: string; // 日期
orderPayCount: number; // 订单数量
orderPayPrice: number; // 订单支付金额
}
}
/** 时间参数需要格式化, 确保接口能识别 */
const formatDateParam = (params: MallTradeStatisticsApi.TradeTrendReq) => {
return {
times: [formatDate(params.times[0]), formatDate(params.times[1])],
} as MallTradeStatisticsApi.TradeTrendReq;
};
/** 查询交易统计 */
export function getTradeStatisticsSummary() {
return requestClient.get<
DataComparisonRespVO<MallTradeStatisticsApi.TradeSummary>
DataComparisonRespVO<MallTradeStatisticsApi.TradeSummaryRespVO>
>('/statistics/trade/summary');
}
/** 获得交易状况统计 */
export function getTradeStatisticsAnalyse(params: any) {
export function getTradeStatisticsAnalyse(
params: MallTradeStatisticsApi.TradeTrendReqVO,
) {
return requestClient.get<
DataComparisonRespVO<MallTradeStatisticsApi.TradeTrendSummary>
DataComparisonRespVO<MallTradeStatisticsApi.TradeTrendSummaryRespVO>
>('/statistics/trade/analyse', { params });
}
/** 获得交易状况明细 */
export function getTradeStatisticsList(params: any) {
return requestClient.get<MallTradeStatisticsApi.TradeTrendSummary[]>(
return requestClient.get<MallTradeStatisticsApi.TradeTrendSummaryRespVO[]>(
'/statistics/trade/list',
{ params },
);
@@ -97,7 +83,7 @@ export function exportTradeStatisticsExcel(params: any) {
/** 获得交易订单数量 */
export function getOrderCount() {
return requestClient.get<MallTradeStatisticsApi.TradeOrderCount>(
return requestClient.get<MallTradeStatisticsApi.TradeOrderCountRespVO>(
'/statistics/trade/order-count',
);
}
@@ -116,7 +102,7 @@ export function getOrderCountTrendComparison(
endTime: Date,
) {
return requestClient.get<
DataComparisonRespVO<MallTradeStatisticsApi.TradeOrderTrend>[]
DataComparisonRespVO<MallTradeStatisticsApi.TradeOrderTrendRespVO>[]
>('/statistics/trade/order-count-trend', {
params: {
type,

View File

@@ -5,85 +5,49 @@ import type { MallOrderApi } from '#/api/mall/trade/order';
import { requestClient } from '#/api/request';
export namespace MallAfterSaleApi {
/** 商品属性 */
export interface ProductProperty {
/** 属性的编号 */
propertyId?: null | number;
/** 属性的名称 */
propertyName?: string;
/** 属性值的编号 */
valueId?: null | number;
/** 属性值的名称 */
valueName?: string;
}
/** 交易售后 */
export interface AfterSale {
/** 售后编号,主键自增 */
id?: null | number;
/** 售后单号 */
no?: string;
/** 退款状态 */
status?: null | number;
/** 售后方式 */
way?: null | number;
/** 售后类型 */
type?: null | number;
/** 用户编号 */
userId?: null | number;
/** 申请原因 */
applyReason?: string;
/** 补充描述 */
applyDescription?: string;
/** 补充凭证图片 */
applyPicUrls?: string[];
/** 交易订单编号 */
orderId?: null | number;
/** 订单流水号 */
orderNo?: string;
/** 交易订单项编号 */
orderItemId?: null | number;
/** 商品 SPU 编号 */
spuId?: null | number;
/** 商品 SPU 名称 */
spuName?: string;
/** 商品 SKU 编号 */
skuId?: null | number;
/** 属性数组 */
properties?: ProductProperty[];
/** 商品图片 */
picUrl?: string;
/** 退货商品数量 */
count?: null | number;
/** 审批时间 */
auditTime?: Date;
/** 审批人 */
auditUserId?: null | number;
/** 审批备注 */
auditReason?: string;
/** 退款金额,单位:分 */
refundPrice?: null | number;
/** 支付退款编号 */
payRefundId?: null | number;
/** 退款时间 */
refundTime?: Date;
/** 退货物流公司编号 */
logisticsId?: null | number;
/** 退货物流单号 */
logisticsNo?: string;
/** 退货时间 */
deliveryTime?: Date;
/** 收货时间 */
receiveTime?: Date;
/** 收货备注 */
receiveReason?: string;
id?: number; // 售后编号
no?: string; // 售后单号
status?: number; // 退款状态
way?: number; // 售后方式
type?: number; // 售后类型
userId?: number; // 用户编号
applyReason?: string; // 申请原因
applyDescription?: string; // 补充描述
applyPicUrls?: string[]; // 补充凭证图片
orderId?: number; // 交易订单编号
orderNo?: string; // 订单流水号
orderItemId?: number; // 交易订单项编号
spuId?: number; // 商品 SPU 编号
spuName?: string; // 商品 SPU 名称
skuId?: number; // 商品 SKU 编号
properties?: {
propertyId?: number; // 属性的编号
propertyName?: string; // 属性的名称
valueId?: number; // 属性值的编号
valueName?: string; // 属性值的名称
}[]; // 属性数组
picUrl?: string; // 商品图片
count?: number; // 退货商品数量
auditTime?: Date; // 审批时间
auditUserId?: number; // 审批人
auditReason?: string; // 审批备注
refundPrice?: number; // 退款金额,单位:分
payRefundId?: number; // 支付退款编号
refundTime?: Date; // 退款时间
logisticsId?: number; // 退货物流公司编号
logisticsNo?: string; // 退货物流单号
deliveryTime?: Date; // 退货时间
receiveTime?: Date; // 收货时间
receiveReason?: string; // 收货备注
order?: MallOrderApi.Order; // 关联订单
orderItem?: MallOrderApi.OrderItem; // 关联订单项
logs?: any[]; // 关联售后日志
}
/** 拒绝售后请求 */
export interface DisagreeRequest {
export interface AfterSaleDisagreeReqVO {
/** 售后编号 */
id: number;
/** 拒绝原因 */
@@ -112,7 +76,9 @@ export function agreeAfterSale(id: number) {
}
/** 拒绝售后 */
export function disagreeAfterSale(data: MallAfterSaleApi.DisagreeRequest) {
export function disagreeAfterSale(
data: MallAfterSaleApi.AfterSaleDisagreeReqVO,
) {
return requestClient.put('/trade/after-sale/disagree', data);
}

View File

@@ -27,7 +27,7 @@ export namespace MallBrokerageWithdrawApi {
}
/** 驳回申请请求 */
export interface RejectRequest {
export interface BrokerageWithdrawRejectReqVO {
id: number; // 编号
auditReason: string; // 驳回原因
}
@@ -40,13 +40,6 @@ export function getBrokerageWithdrawPage(params: PageParam) {
>('/trade/brokerage-withdraw/page', { params });
}
/** 查询佣金提现详情 */
export function getBrokerageWithdraw(id: number) {
return requestClient.get<MallBrokerageWithdrawApi.BrokerageWithdraw>(
`/trade/brokerage-withdraw/get?id=${id}`,
);
}
/** 佣金提现 - 通过申请 */
export function approveBrokerageWithdraw(id: number) {
return requestClient.put(`/trade/brokerage-withdraw/approve?id=${id}`);
@@ -54,7 +47,7 @@ export function approveBrokerageWithdraw(id: number) {
/** 审核佣金提现 - 驳回申请 */
export function rejectBrokerageWithdraw(
data: MallBrokerageWithdrawApi.RejectRequest,
data: MallBrokerageWithdrawApi.BrokerageWithdrawRejectReqVO,
) {
return requestClient.put('/trade/brokerage-withdraw/reject', data);
}

View File

@@ -5,28 +5,12 @@ import { requestClient } from '#/api/request';
export namespace MallDeliveryExpressApi {
/** 快递公司 */
export interface DeliveryExpress {
/** 编号 */
id: number;
/** 快递公司编码 */
code: string;
/** 快递公司名称 */
name: string;
/** 快递公司 logo */
logo: string;
/** 排序 */
sort: number;
/** 状态 */
status: number;
}
/** 快递公司精简信息 */
export interface SimpleDeliveryExpress {
/** 编号 */
id: number;
/** 快递公司编码 */
code: string;
/** 快递公司名称 */
name: string;
id: number; // 编号
code: string; // 快递公司编码
name: string; // 快递公司名称
logo: string; // 快递公司 logo
sort: number; // 排序
status: number; // 状态
}
}
@@ -47,7 +31,7 @@ export function getDeliveryExpress(id: number) {
/** 获得快递公司精简信息列表 */
export function getSimpleDeliveryExpressList() {
return requestClient.get<MallDeliveryExpressApi.SimpleDeliveryExpress[]>(
return requestClient.get<MallDeliveryExpressApi.DeliveryExpress[]>(
'/trade/delivery/express/list-all-simple',
);
}

View File

@@ -3,86 +3,64 @@ import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MallDeliveryExpressTemplateApi {
/** 快递运费模板 */
export interface DeliveryExpressTemplate {
id: number; // 编号
name: string; // 模板名称
chargeMode: number; // 计费方式
sort: number; // 排序
charges: DeliveryExpressTemplateCharge[]; // 计费区域列表
frees: DeliveryExpressTemplateFree[]; // 包邮区域列表
}
/** 运费模板计费 */
export interface TemplateCharge {
/** 区域编号列表 */
areaIds: number[];
/** 首件数量 */
startCount: number;
/** 首件价格,单位:分 */
startPrice: number;
/** 续件数量 */
extraCount: number;
/** 续件价格,单位:分 */
extraPrice: number;
export interface DeliveryExpressTemplateCharge {
areaIds: number[]; // 区域编号列表
startCount: number; // 首件数量
startPrice: number; // 首件价格,单位:分
extraCount: number; // 续件数量
extraPrice: number; // 续件价格,单位:分
}
/** 运费模板包邮 */
export interface TemplateFree {
/** 区域编号列表 */
areaIds: number[];
/** 包邮件数 */
freeCount: number;
/** 包邮金额,单位:分 */
freePrice: number;
}
/** 快递运费模板 */
export interface ExpressTemplate {
/** 编号 */
id: number;
/** 模板名称 */
name: string;
/** 计费方式 */
chargeMode: number;
/** 排序 */
sort: number;
/** 计费区域列表 */
charges: TemplateCharge[];
/** 包邮区域列表 */
frees: TemplateFree[];
}
/** 运费模板精简信息 */
export interface SimpleTemplate {
/** 编号 */
id: number;
/** 模板名称 */
name: string;
export interface DeliveryExpressTemplateFree {
areaIds: number[]; // 区域编号列表
freeCount: number; // 包邮件数
freePrice: number; // 包邮金额,单位:分
}
}
/** 查询快递运费模板列表 */
export function getDeliveryExpressTemplatePage(params: PageParam) {
return requestClient.get<
PageResult<MallDeliveryExpressTemplateApi.ExpressTemplate>
PageResult<MallDeliveryExpressTemplateApi.DeliveryExpressTemplate>
>('/trade/delivery/express-template/page', { params });
}
/** 查询快递运费模板详情 */
export function getDeliveryExpressTemplate(id: number) {
return requestClient.get<MallDeliveryExpressTemplateApi.ExpressTemplate>(
return requestClient.get<MallDeliveryExpressTemplateApi.DeliveryExpressTemplate>(
`/trade/delivery/express-template/get?id=${id}`,
);
}
/** 查询快递运费模板详情 */
export function getSimpleTemplateList() {
return requestClient.get<MallDeliveryExpressTemplateApi.SimpleTemplate[]>(
'/trade/delivery/express-template/list-all-simple',
);
return requestClient.get<
MallDeliveryExpressTemplateApi.DeliveryExpressTemplate[]
>('/trade/delivery/express-template/list-all-simple');
}
/** 新增快递运费模板 */
export function createDeliveryExpressTemplate(
data: MallDeliveryExpressTemplateApi.ExpressTemplate,
data: MallDeliveryExpressTemplateApi.DeliveryExpressTemplate,
) {
return requestClient.post('/trade/delivery/express-template/create', data);
}
/** 修改快递运费模板 */
export function updateDeliveryExpressTemplate(
data: MallDeliveryExpressTemplateApi.ExpressTemplate,
data: MallDeliveryExpressTemplateApi.DeliveryExpressTemplate,
) {
return requestClient.put('/trade/delivery/express-template/update', data);
}

View File

@@ -4,35 +4,21 @@ import { requestClient } from '#/api/request';
export namespace MallDeliveryPickUpStoreApi {
/** 自提门店 */
export interface PickUpStore {
/** 编号 */
id: number;
/** 门店名称 */
name: string;
/** 门店简介 */
introduction: string;
/** 联系电话 */
phone: string;
/** 区域编号 */
areaId: number;
/** 详细地址 */
detailAddress: string;
/** 门店 logo */
logo: string;
/** 营业开始时间 */
openingTime: string;
/** 营业结束时间 */
closingTime: string;
/** 纬度 */
latitude: number;
/** 经度 */
longitude: number;
/** 状态 */
status: number;
/** 营业时间 用于fieldMappingTime */
rangeTime: any[];
/** 绑定用户编号组数 */
verifyUserIds?: number[];
export interface DeliveryPickUpStore {
id: number; // 编号
name: string; // 门店名称
introduction: string; // 门店简介
phone: string; // 联系电话
areaId: number; // 区域编号
detailAddress: string; // 详细地址
logo: string; // 门店 logo
openingTime: string; // 营业开始时间
closingTime: string; // 营业结束时间
latitude: number; // 纬度
longitude: number; // 经度
status: number; // 状态
rangeTime: any[]; // 营业时间,用于 fieldMappingTime
verifyUserIds?: number[]; // 绑定用户编号组数
verifyUsers?: any[];
}
@@ -46,36 +32,35 @@ export namespace MallDeliveryPickUpStoreApi {
/** 查询自提门店列表 */
export function getDeliveryPickUpStorePage(params: PageParam) {
return requestClient.get<PageResult<MallDeliveryPickUpStoreApi.PickUpStore>>(
'/trade/delivery/pick-up-store/page',
{ params },
);
return requestClient.get<
PageResult<MallDeliveryPickUpStoreApi.DeliveryPickUpStore>
>('/trade/delivery/pick-up-store/page', { params });
}
/** 查询自提门店详情 */
export function getDeliveryPickUpStore(id: number) {
return requestClient.get<MallDeliveryPickUpStoreApi.PickUpStore>(
return requestClient.get<MallDeliveryPickUpStoreApi.DeliveryPickUpStore>(
`/trade/delivery/pick-up-store/get?id=${id}`,
);
}
/** 查询自提门店精简列表 */
export function getSimpleDeliveryPickUpStoreList() {
return requestClient.get<MallDeliveryPickUpStoreApi.PickUpStore[]>(
return requestClient.get<MallDeliveryPickUpStoreApi.DeliveryPickUpStore[]>(
'/trade/delivery/pick-up-store/simple-list',
);
}
/** 新增自提门店 */
export function createDeliveryPickUpStore(
data: MallDeliveryPickUpStoreApi.PickUpStore,
data: MallDeliveryPickUpStoreApi.DeliveryPickUpStore,
) {
return requestClient.post('/trade/delivery/pick-up-store/create', data);
}
/** 修改自提门店 */
export function updateDeliveryPickUpStore(
data: MallDeliveryPickUpStoreApi.PickUpStore,
data: MallDeliveryPickUpStoreApi.DeliveryPickUpStore,
) {
return requestClient.put('/trade/delivery/pick-up-store/update', data);
}

View File

@@ -3,231 +3,136 @@ import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace MallOrderApi {
/** 商品属性 */
export interface ProductProperty {
/** 属性的编号 */
propertyId?: number;
/** 属性的名称 */
propertyName?: string;
/** 属性值的编号 */
valueId?: number;
/** 属性值的名称 */
valueName?: string;
/** 订单信息 */
export interface Order {
id?: number; // 订单编号
no?: string; // 订单流水号
createTime?: Date; // 下单时间
type?: number; // 订单类型
terminal?: number; // 订单来源
userId?: number; // 用户编号
userIp?: string; // 用户 IP
userRemark?: string; // 用户备注
status?: number; // 订单状态
productCount?: number; // 购买的商品数量
finishTime?: Date; // 订单完成时间
cancelTime?: Date; // 订单取消时间
cancelType?: number; // 取消类型
remark?: string; // 商家备注
payOrderId?: number; // 支付订单编号
payStatus?: boolean; // 是否已支付
payTime?: Date; // 付款时间
payChannelCode?: string; // 支付渠道
totalPrice?: number; // 商品原价(总)
discountPrice?: number; // 订单优惠(总)
deliveryPrice?: number; // 运费金额
adjustPrice?: number; // 订单调价(总)
payPrice?: number; // 应付金额(总)
deliveryType?: number; // 发货方式
pickUpStoreId?: number; // 自提门店编号
pickUpVerifyCode?: string; // 自提核销码
deliveryTemplateId?: number; // 配送模板编号
logisticsId?: number; // 发货物流公司编号
logisticsNo?: string; // 发货物流单号
deliveryTime?: Date; // 发货时间
receiveTime?: Date; // 收货时间
receiverName?: string; // 收件人名称
receiverMobile?: string; // 收件人手机
receiverPostCode?: number; // 收件人邮编
receiverAreaId?: number; // 收件人地区编号
receiverAreaName?: string; // 收件人地区名字
receiverDetailAddress?: string; // 收件人详细地址
afterSaleStatus?: number; // 售后状态
refundPrice?: number; // 退款金额
couponId?: number; // 优惠劵编号
couponPrice?: number; // 优惠劵减免金额
pointPrice?: number; // 积分抵扣的金额
vipPrice?: number; // VIP 减免金额
items?: OrderItem[]; // 订单项列表
user?: {
// 下单用户信息
avatar?: string; // 用户头像
id?: number; // 用户编号
nickname?: string; // 用户昵称
};
brokerageUser?: {
// 推广用户信息
avatar?: string; // 用户头像
id?: number; // 用户编号
nickname?: string; // 用户昵称
}; // 推广用户信息
logs?: OrderLog[]; // 订单操作日志
}
/** 订单项 */
export interface OrderItem {
/** 编号 */
id?: number;
/** 用户编号 */
userId?: number;
/** 订单编号 */
orderId?: number;
/** 商品 SPU 编号 */
spuId?: number;
/** 商品 SPU 名称 */
spuName?: string;
/** 商品 SKU 编号 */
skuId?: number;
/** 商品图片 */
picUrl?: string;
/** 购买数量 */
count?: number;
/** 商品原价(总) */
originalPrice?: number;
/** 商品原价(单) */
originalUnitPrice?: number;
/** 商品优惠(总) */
discountPrice?: number;
/** 商品实付金额(总) */
payPrice?: number;
/** 子订单分摊金额(总) */
orderPartPrice?: number;
/** 分摊后子订单实付金额(总) */
orderDividePrice?: number;
/** 售后状态 */
afterSaleStatus?: number;
/** 属性数组 */
properties?: ProductProperty[];
id?: number; // 编号
userId?: number; // 用户编号
orderId?: number; // 订单编号
spuId?: number; // 商品 SPU 编号
spuName?: string; // 商品 SPU 名称
skuId?: number; // 商品 SKU 编号
picUrl?: string; // 商品图片
count?: number; // 购买数量
originalPrice?: number; // 商品原价(总)
originalUnitPrice?: number; // 商品原价(单)
discountPrice?: number; // 商品优惠(总)
payPrice?: number; // 商品实付金额(总)
orderPartPrice?: number; // 子订单分摊金额(总)
orderDividePrice?: number; // 分摊后子订单实付金额(总)
afterSaleStatus?: number; // 售后状态
properties?: {
propertyId?: number; // 属性的编号
propertyName?: string; // 属性的名称
valueId?: number; // 属性值的编号
valueName?: string; // 属性值的名称
}[]; // 属性数组
price?: number;
}
/** 订单日志 */
export interface OrderLog {
/** 日志内容 */
content?: string;
/** 创建时间 */
createTime?: Date;
/** 用户类型 */
userType?: number;
/** 用户编号 */
userId?: number;
content?: string; // 日志内容
createTime?: Date; // 创建时间
userType?: number; // 用户类型
userId?: number; // 用户编号
}
/** 订单 */
export interface Order {
/** 订单编号 */
id?: number;
/** 订单流水号 */
no?: string;
/** 下单时间 */
createTime?: Date;
/** 订单类型 */
type?: number;
/** 订单来源 */
terminal?: number;
/** 用户编号 */
userId?: number;
/** 用户 IP */
userIp?: string;
/** 用户备注 */
userRemark?: string;
/** 订单状态 */
status?: number;
/** 购买的商品数量 */
productCount?: number;
/** 订单完成时间 */
finishTime?: Date;
/** 订单取消时间 */
cancelTime?: Date;
/** 取消类型 */
cancelType?: number;
/** 商家备注 */
remark?: string;
/** 支付订单编号 */
payOrderId?: number;
/** 是否已支付 */
payStatus?: boolean;
/** 付款时间 */
payTime?: Date;
/** 支付渠道 */
payChannelCode?: string;
/** 商品原价(总) */
totalPrice?: number;
/** 订单优惠(总) */
discountPrice?: number;
/** 运费金额 */
deliveryPrice?: number;
/** 订单调价(总) */
adjustPrice?: number;
/** 应付金额(总) */
payPrice?: number;
/** 发货方式 */
deliveryType?: number;
/** 自提门店编号 */
pickUpStoreId?: number;
/** 自提核销码 */
pickUpVerifyCode?: string;
/** 配送模板编号 */
deliveryTemplateId?: number;
/** 发货物流公司编号 */
logisticsId?: number;
/** 发货物流单号 */
logisticsNo?: string;
/** 发货时间 */
deliveryTime?: Date;
/** 收货时间 */
receiveTime?: Date;
/** 收件人名称 */
receiverName?: string;
/** 收件人手机 */
receiverMobile?: string;
/** 收件人邮编 */
receiverPostCode?: number;
/** 收件人地区编号 */
receiverAreaId?: number;
/** 收件人地区名字 */
receiverAreaName?: string;
/** 收件人详细地址 */
receiverDetailAddress?: string;
/** 售后状态 */
afterSaleStatus?: number;
/** 退款金额 */
refundPrice?: number;
/** 优惠劵编号 */
couponId?: number;
/** 优惠劵减免金额 */
couponPrice?: number;
/** 积分抵扣的金额 */
pointPrice?: number;
/** VIP 减免金额 */
vipPrice?: number;
/** 订单项列表 */
items?: OrderItem[];
/** 下单用户信息 */
user?: {
/** 用户头像 */
avatar?: string;
/** 用户编号 */
id?: number;
/** 用户昵称 */
nickname?: string;
};
/** 推广用户信息 */
brokerageUser?: {
/** 用户头像 */
avatar?: string;
/** 用户编号 */
id?: number;
/** 用户昵称 */
nickname?: string;
};
/** 订单操作日志 */
logs?: OrderLog[];
}
/** 交易订单统计 */
export interface OrderSummary {
/** 订单数量 */
orderCount: number;
/** 订单金额 */
orderPayPrice: number;
/** 退款单数 */
afterSaleCount: number;
/** 退款金额 */
afterSalePrice: number;
/** 交易订单统计响应 */
export interface OrderSummaryRespVO {
orderCount: number; // 订单数量
orderPayPrice: number; // 订单金额
afterSaleCount: number; // 退款单数
afterSalePrice: number; // 退款金额
}
/** 订单发货请求 */
export interface DeliveryRequest {
/** 订单编号 */
id?: number;
/** 发货方式 */
expressType: string;
/** 物流公司编号 */
logisticsId: number;
/** 物流编号 */
logisticsNo: string;
export interface OrderUpdateDeliveryReqVO {
id?: number; // 订单编号
expressType: string; // 发货方式
logisticsId: number; // 物流公司编号
logisticsNo: string; // 物流编号
}
/** 订单备注请求 */
export interface RemarkRequest {
/** 订单编号 */
id: number;
/** 备注 */
remark: string;
export interface OrderUpdateRemarkReqVO {
id: number; // 订单编号
remark: string; // 备注
}
/** 订单调价请求 */
export interface PriceRequest {
/** 订单编号 */
id: number;
/** 调整金额,单位:分 */
adjustPrice: number;
export interface OrderUpdatePriceReqVO {
id: number; // 订单编号
adjustPrice: number; // 调整金额,单位:分
}
/** 订单地址请求 */
export interface AddressRequest {
/** 订单编号 */
id: number;
/** 收件人名称 */
receiverName: string;
/** 收件人手机 */
receiverMobile: string;
/** 收件人地区编号 */
receiverAreaId: number;
/** 收件人详细地址 */
receiverDetailAddress: string;
export interface OrderUpdateAddressReqVO {
id: number; // 订单编号
receiverName: string; // 收件人名称
receiverMobile: string; // 收件人手机
receiverAreaId: number; // 收件人地区编号
receiverDetailAddress: string; // 收件人详细地址
}
}
@@ -243,9 +148,12 @@ export function getOrderPage(params: PageParam) {
/** 查询交易订单统计 */
export function getOrderSummary(params: any) {
return requestClient.get<MallOrderApi.OrderSummary>('/trade/order/summary', {
params,
});
return requestClient.get<MallOrderApi.OrderSummaryRespVO>(
'/trade/order/summary',
{
params,
},
);
}
/** 查询交易订单详情 */
@@ -261,22 +169,22 @@ export function getExpressTrackList(id: number) {
}
/** 订单发货 */
export function deliveryOrder(data: MallOrderApi.DeliveryRequest) {
export function deliveryOrder(data: MallOrderApi.OrderUpdateDeliveryReqVO) {
return requestClient.put('/trade/order/delivery', data);
}
/** 订单备注 */
export function updateOrderRemark(data: MallOrderApi.RemarkRequest) {
export function updateOrderRemark(data: MallOrderApi.OrderUpdateRemarkReqVO) {
return requestClient.put('/trade/order/update-remark', data);
}
/** 订单调价 */
export function updateOrderPrice(data: MallOrderApi.PriceRequest) {
export function updateOrderPrice(data: MallOrderApi.OrderUpdatePriceReqVO) {
return requestClient.put('/trade/order/update-price', data);
}
/** 修改订单地址 */
export function updateOrderAddress(data: MallOrderApi.AddressRequest) {
export function updateOrderAddress(data: MallOrderApi.OrderUpdateAddressReqVO) {
return requestClient.put('/trade/order/update-address', data);
}

View File

@@ -254,14 +254,13 @@ function open() {
function set() {
defaultValue.value = props.modelValue;
let arr = (props.modelValue || '* * * * * ?').split(' ');
/** 简单检查 */
// 简单检查
if (arr.length < 6) {
message.warning('cron表达式错误已转换为默认表达式');
arr = '* * * * * ?'.split(' ');
}
/** 秒 */
// 秒
if (arr[0] === '*') {
cronValue.second.type = '0';
} else if (arr[0]?.includes('-')) {
@@ -277,7 +276,7 @@ function set() {
cronValue.second.appoint = arr[0]?.split(',') || [];
}
/** 分 */
// 分
if (arr[1] === '*') {
cronValue.minute.type = '0';
} else if (arr[1]?.includes('-')) {
@@ -293,7 +292,7 @@ function set() {
cronValue.minute.appoint = arr[1]?.split(',') || [];
}
/** 小时 */
// 小时
if (arr[2] === '*') {
cronValue.hour.type = '0';
} else if (arr[2]?.includes('-')) {
@@ -309,21 +308,18 @@ function set() {
cronValue.hour.appoint = arr[2]?.split(',') || [];
}
/** 日 */
// 日
switch (arr[3]) {
case '*': {
cronValue.day.type = '0';
break;
}
case '?': {
cronValue.day.type = '5';
break;
}
case 'L': {
cronValue.day.type = '4';
break;
}
default: {
@@ -342,7 +338,7 @@ function set() {
}
}
/** 月 */
// 月
if (arr[4] === '*') {
cronValue.month.type = '0';
} else if (arr[4]?.includes('-')) {
@@ -358,7 +354,7 @@ function set() {
cronValue.month.appoint = arr[4]?.split(',') || [];
}
/** 周 */
// 周
if (arr[5] === '*') {
cronValue.week.type = '0';
} else if (arr[5] === '?') {
@@ -379,7 +375,7 @@ function set() {
cronValue.week.appoint = arr[5]?.split(',') || [];
}
/** 年 */
// 年
if (!arr[6]) {
cronValue.year.type = '-1';
} else if (arr[6] === '*') {

View File

@@ -284,7 +284,6 @@ async function handleOk() {
class="h-full w-full object-cover"
/>
</div>
<!-- 头像组合预览 -->
<template v-if="previewSource">
<div

View File

@@ -8,37 +8,24 @@ import type { Recordable } from '@vben/types';
export interface DescriptionItemSchema {
labelMinWidth?: number;
contentMinWidth?: number;
// 自定义标签样式
labelStyle?: CSSProperties;
// 对应 data 中的字段名
field: string;
// 内容的描述
label: JSX.Element | string | VNode;
// 包含列的数量
span?: number;
// 是否显示
show?: (...arg: any) => boolean;
// 插槽名称
slot?: string;
// 自定义需要展示的内容
labelStyle?: CSSProperties; // 自定义标签样式
field: string; // 对应 data 中的字段名
label: JSX.Element | string | VNode; // 内容的描述
span?: number; // 包含列的数量
show?: (...arg: any) => boolean; // 是否显示
slot?: string; // 插槽名称
render?: (
val: any,
data?: Recordable<any>,
) => Element | JSX.Element | number | string | undefined | VNode;
) => Element | JSX.Element | number | string | undefined | VNode; // 自定义需要展示的内容
}
export interface DescriptionProps extends DescriptionsProps {
// 是否包含卡片组件
useCard?: boolean;
// 描述项配置
schema: DescriptionItemSchema[];
// 数据
data: Recordable<any>;
// 标题
title?: string;
// 是否包含边框
bordered?: boolean;
// 列数
useCard?: boolean; // 是否包含卡片组件
schema: DescriptionItemSchema[]; // 描述项配置
data: Recordable<any>; // 数据
title?: string; // 标题
bordered?: boolean; // 是否包含边框
column?:
| number
| {
@@ -48,7 +35,7 @@ export interface DescriptionProps extends DescriptionsProps {
xl: number;
xs: number;
xxl: number;
};
}; // 列数
}
export interface DescInstance {

View File

@@ -7,18 +7,9 @@ import { isValidColor, TinyColor } from '@vben/utils';
import { Tag } from 'ant-design-vue';
interface DictTagProps {
/**
* 字典类型
*/
type: string;
/**
* 字典值
*/
value: any;
/**
* 图标
*/
icon?: string;
type: string; // 字典类型
value: any; // 字典
icon?: string; // 图标
}
const props = defineProps<DictTagProps>();

View File

@@ -24,7 +24,7 @@ const props = withDefaults(defineProps<DictSelectProps>(), {
const attrs = useAttrs();
// 获得字典配置
/** 获得字典配置 */
const getDictOption = computed(() => {
switch (props.valueType) {
case 'bool': {

View File

@@ -16,7 +16,7 @@ export function useImagesUpload() {
},
},
setup() {
// TODO: @dhb52 其实还是靠 props 默认参数起作用,没能从 formCreate 传递
// TODO: @puhui999@dhb52 其实还是靠 props 默认参数起作用,没能从 formCreate 传递
return (props: { maxNumber?: number; multiple?: boolean }) => (
<ImageUpload maxNumber={props.maxNumber} multiple={props.multiple} />
);

View File

@@ -19,12 +19,12 @@ import {
useUploadImagesRule,
} from './rules';
// 编码表单 Conf
/** 编码表单 Conf */
export function encodeConf(designerRef: any) {
return JSON.stringify(designerRef.value.getOption());
}
// 编码表单 Fields
/** 编码表单 Fields */
export function encodeFields(designerRef: any) {
const rule = JSON.parse(designerRef.value.getJson());
const fields: string[] = [];
@@ -34,7 +34,7 @@ export function encodeFields(designerRef: any) {
return fields;
}
// 解码表单 Fields
/** 解码表单 Fields */
export function decodeFields(fields: string[]) {
const rule: Rule[] = [];
fields.forEach((item) => {
@@ -43,7 +43,7 @@ export function decodeFields(fields: string[]) {
return rule;
}
// 设置表单的 Conf 和 Fields适用 FcDesigner 场景
/** 设置表单的 Conf 和 Fields适用 FcDesigner 场景 */
export function setConfAndFields(
designerRef: any,
conf: string,
@@ -55,7 +55,7 @@ export function setConfAndFields(
designerRef.value.setRule(decodeFields(fieldsArray));
}
// 设置表单的 Conf 和 Fields适用 form-create 场景
/** 设置表单的 Conf 和 Fields适用 form-create 场景 */
export function setConfAndFields2(
detailPreview: any,
conf: string,
@@ -155,9 +155,7 @@ export async function useFormCreateDesigner(designer: Ref) {
const uploadImageRule = useUploadImageRule();
const uploadImagesRule = useUploadImagesRule();
/**
* 构建表单组件
*/
/** 构建表单组件 */
function buildFormComponents() {
// 移除自带的上传组件规则,使用 uploadFileRule、uploadImgRule、uploadImgsRule 替代
designer.value?.removeMenuItem('upload');
@@ -200,9 +198,7 @@ export async function useFormCreateDesigner(designer: Ref) {
event: ['click', 'change', 'visibleChange', 'clear', 'blur', 'focus'],
});
/**
* 构建系统字段菜单
*/
/** 构建系统字段菜单 */
function buildSystemMenu() {
// 移除自带的下拉选择器组件,使用 currencySelectRule 替代
// designer.value?.removeMenuItem('select')

View File

@@ -11,9 +11,7 @@ import {
} from '#/components/form-create/helpers';
import { selectRule } from '#/components/form-create/rules/data';
/**
* 字典选择器规则,如果规则使用到动态数据则需要单独配置不能使用 useSelectRule
*/
/** 字典选择器规则,如果规则使用到动态数据则需要单独配置不能使用 useSelectRule */
export function useDictSelectRule() {
const label = '字典选择器';
const name = 'DictSelect';

View File

@@ -137,11 +137,11 @@ function handleButtonClick(action: ActionItem) {
}
}
/** 监听props变化强制重新计算 */
/** 监听 props 变化,强制重新计算 */
watch(
() => [props.actions, props.dropDownActions],
() => {
// 这里不需要额外处理computed会自动重新计算
// 这里不需要额外处理computed 会自动重新计算
},
{ deep: true },
);

View File

@@ -17,10 +17,9 @@ const props = defineProps({
type: Boolean,
},
fullscreen: {
// 图片上传,是否放到全屏的位置
default: false,
type: Boolean,
},
}, // 图片上传,是否放到全屏的位置
});
const emit = defineEmits(['uploading', 'done', 'error']);

View File

@@ -60,7 +60,6 @@ function beforeUpload(file: FileType) {
<Form class="mx-4">
<template #file>
<div class="w-full">
<!-- 上传区域 -->
<Upload.Dragger
name="file"
:max-count="1"

View File

@@ -19,7 +19,7 @@ import MemberTerminalCard from './modules/terminal-card.vue';
defineOptions({ name: 'MemberStatistics' });
const loading = ref(true); // 加载中
const summary = ref<MallMemberStatisticsApi.Summary>(); // 会员统计数据
const summary = ref<MallMemberStatisticsApi.SummaryRespVO>(); // 会员统计数据
/** 查询会员统计 */
async function loadMemberSummary() {

View File

@@ -18,9 +18,9 @@ import { getAreaChartOptions, getAreaTableColumns } from './area-chart-options';
defineOptions({ name: 'MemberAreaCard' });
const loading = ref(true);
const areaStatisticsList = shallowRef<MallMemberStatisticsApi.AreaStatistics[]>(
[],
);
const areaStatisticsList = shallowRef<
MallMemberStatisticsApi.AreaStatisticsRespVO[]
>([]);
const chartRef = ref<EchartsUIType>();
const { renderEcharts } = useEcharts(chartRef);
@@ -49,7 +49,7 @@ async function loadMemberAreaStatisticsList() {
try {
const list = await getMemberAreaStatisticsList();
areaStatisticsList.value = list.map(
(item: MallMemberStatisticsApi.AreaStatistics) => ({
(item: MallMemberStatisticsApi.AreaStatisticsRespVO) => ({
...item,
areaName: areaReplace(item.areaName),
}),

View File

@@ -5,7 +5,7 @@ import { fenToYuan } from '@vben/utils';
/** 会员地域分布图表配置 */
export function getAreaChartOptions(
data: MallMemberStatisticsApi.AreaStatistics[],
data: MallMemberStatisticsApi.AreaStatisticsRespVO[],
): any {
if (!data || data.length === 0) {
return {

View File

@@ -31,7 +31,7 @@ async function loadMemberSexStatisticsList() {
dictDataList.push({ label: '未知', value: null } as any);
const chartData = dictDataList.map((dictData: any) => {
const userCount = list.find(
(item: MallMemberStatisticsApi.SexStatistics) =>
(item: MallMemberStatisticsApi.SexStatisticsRespVO) =>
item.sex === dictData.value,
)?.userCount;
return {

View File

@@ -37,7 +37,7 @@ defineOptions({ name: 'ProductSummaryCard' });
const trendLoading = ref(true); // 商品状态加载中
const exportLoading = ref(false); // 导出的加载中
const trendSummary =
ref<DataComparisonRespVO<MallProductStatisticsApi.ProductStatistics>>(); // 商品状况统计数据
ref<DataComparisonRespVO<MallProductStatisticsApi.ProductStatisticsRespVO>>(); // 商品状况统计数据
const searchTimes = ref<string[]>([]);
const chartRef = ref<EchartsUIType>();

View File

@@ -18,7 +18,7 @@ defineOptions({ name: 'TradeStatistics' });
const loading = ref(true); // 加载中
const summary =
ref<DataComparisonRespVO<MallTradeStatisticsApi.TradeSummary>>(); // 交易统计数据
ref<DataComparisonRespVO<MallTradeStatisticsApi.TradeSummaryRespVO>>(); // 交易统计数据
/** 计算环比百分比 */
function calculateRelativeRate(value?: number, reference?: number): string {

View File

@@ -37,7 +37,7 @@ defineOptions({ name: 'TradeTrendCard' });
const trendLoading = ref(true); // 交易状态加载中
const exportLoading = ref(false); // 导出的加载中
const trendSummary =
ref<DataComparisonRespVO<MallTradeStatisticsApi.TradeTrendSummary>>(); // 交易状况统计数据
ref<DataComparisonRespVO<MallTradeStatisticsApi.TradeTrendSummaryRespVO>>(); // 交易状况统计数据
const searchTimes = ref<string[]>([]);
const chartRef = ref<EchartsUIType>();

View File

@@ -4,7 +4,7 @@ import { fenToYuan } from '@vben/utils';
/** 交易趋势折线图配置 */
export function getTradeTrendChartOptions(
data: MallTradeStatisticsApi.TradeTrendSummary[],
data: MallTradeStatisticsApi.TradeTrendSummaryRespVO[],
): any {
// 处理数据:将分转换为元
const processedData = data.map((item) => ({

View File

@@ -39,7 +39,7 @@ const [Modal, modalApi] = useVbenModal({
// 提交表单
try {
const data =
(await formApi.getValues()) as MallAfterSaleApi.DisagreeRequest;
(await formApi.getValues()) as MallAfterSaleApi.AfterSaleDisagreeReqVO;
await disagreeAfterSale(data);
// 关闭并提示
await modalApi.close();

View File

@@ -32,13 +32,15 @@ function handleCreate() {
}
/** 编辑快递模板 */
function handleEdit(row: MallDeliveryExpressTemplateApi.ExpressTemplate) {
function handleEdit(
row: MallDeliveryExpressTemplateApi.DeliveryExpressTemplate,
) {
formModalApi.setData(row).open();
}
/** 删除快递模板 */
async function handleDelete(
row: MallDeliveryExpressTemplateApi.ExpressTemplate,
row: MallDeliveryExpressTemplateApi.DeliveryExpressTemplate,
) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.name]),
@@ -80,7 +82,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: true,
search: true,
},
} as VxeTableGridOptions<MallDeliveryExpressTemplateApi.ExpressTemplate>,
} as VxeTableGridOptions<MallDeliveryExpressTemplateApi.DeliveryExpressTemplate>,
});
</script>

View File

@@ -11,7 +11,7 @@ import { TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
import { CHARGE_MODE_TITLE_MAP, useChargesColumns } from '../data';
interface Props {
items?: MallDeliveryExpressTemplateApi.TemplateCharge[];
items?: MallDeliveryExpressTemplateApi.DeliveryExpressTemplateCharge[];
chargeMode?: number;
areaTree?: SystemAreaApi.Area[];
}

View File

@@ -23,7 +23,7 @@ import ChargeItemForm from './charge-item-form.vue';
import FreeItemForm from './free-item-form.vue';
const emit = defineEmits(['success']);
const formData = ref<MallDeliveryExpressTemplateApi.ExpressTemplate>();
const formData = ref<MallDeliveryExpressTemplateApi.DeliveryExpressTemplate>();
const chargeItemFormRef = ref<InstanceType<typeof ChargeItemForm>>();
const freeItemFormRef = ref<InstanceType<typeof FreeItemForm>>();
const areaTree = ref<SystemAreaApi.Area[]>([]);
@@ -55,10 +55,10 @@ const [Form, formApi] = useVbenForm({
/** 更新运费设置 */
const handleUpdateCharges = async (
charges: MallDeliveryExpressTemplateApi.TemplateCharge[],
charges: MallDeliveryExpressTemplateApi.DeliveryExpressTemplateCharge[],
) => {
formData.value =
await formApi.getValues<MallDeliveryExpressTemplateApi.ExpressTemplate>();
await formApi.getValues<MallDeliveryExpressTemplateApi.DeliveryExpressTemplate>();
formData.value.charges = charges;
await formApi.setValues({
charges,
@@ -67,10 +67,10 @@ const handleUpdateCharges = async (
/** 更新包邮设置 */
const handleUpdateFrees = async (
frees: MallDeliveryExpressTemplateApi.TemplateFree[],
frees: MallDeliveryExpressTemplateApi.DeliveryExpressTemplateFree[],
) => {
formData.value =
await formApi.getValues<MallDeliveryExpressTemplateApi.ExpressTemplate>();
await formApi.getValues<MallDeliveryExpressTemplateApi.DeliveryExpressTemplate>();
formData.value.frees = frees;
await formApi.setValues({
frees,
@@ -102,17 +102,19 @@ const [Modal, modalApi] = useVbenModal({
// 提交表单
const data = cloneDeep(
await formApi.getValues(),
) as MallDeliveryExpressTemplateApi.ExpressTemplate;
) as MallDeliveryExpressTemplateApi.DeliveryExpressTemplate;
try {
// 转换金额单位
data.charges?.forEach(
(item: MallDeliveryExpressTemplateApi.TemplateCharge) => {
(
item: MallDeliveryExpressTemplateApi.DeliveryExpressTemplateCharge,
) => {
item.startPrice = yuanToFen(item.startPrice);
item.extraPrice = yuanToFen(item.extraPrice);
},
);
data.frees?.forEach(
(item: MallDeliveryExpressTemplateApi.TemplateFree) => {
(item: MallDeliveryExpressTemplateApi.DeliveryExpressTemplateFree) => {
item.freePrice = yuanToFen(item.freePrice);
},
);
@@ -134,7 +136,7 @@ const [Modal, modalApi] = useVbenModal({
}
// 加载数据
const data =
modalApi.getData<MallDeliveryExpressTemplateApi.ExpressTemplate>();
modalApi.getData<MallDeliveryExpressTemplateApi.DeliveryExpressTemplate>();
if (!data || !data.id) {
return;
}
@@ -143,13 +145,15 @@ const [Modal, modalApi] = useVbenModal({
formData.value = await getDeliveryExpressTemplate(data.id);
// 转换金额单位
formData.value.charges?.forEach(
(item: MallDeliveryExpressTemplateApi.TemplateCharge) => {
(
item: MallDeliveryExpressTemplateApi.DeliveryExpressTemplateCharge,
) => {
item.startPrice = Number.parseFloat(fenToYuan(item.startPrice));
item.extraPrice = Number.parseFloat(fenToYuan(item.extraPrice));
},
);
formData.value.frees?.forEach(
(item: MallDeliveryExpressTemplateApi.TemplateFree) => {
(item: MallDeliveryExpressTemplateApi.DeliveryExpressTemplateFree) => {
item.freePrice = Number.parseFloat(fenToYuan(item.freePrice));
},
);

View File

@@ -11,7 +11,7 @@ import { TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
import { FREE_MODE_TITLE_MAP, useFreesColumns } from '../data';
interface Props {
items?: MallDeliveryExpressTemplateApi.TemplateFree[];
items?: MallDeliveryExpressTemplateApi.DeliveryExpressTemplateFree[];
chargeMode?: number;
areaTree?: SystemAreaApi.Area[];
}

View File

@@ -12,7 +12,7 @@ import { getRangePickerDefaultProps } from '#/utils';
/** 关联数据 */
const userStore = useUserStore();
const pickUpStoreList = ref<MallDeliveryPickUpStoreApi.PickUpStore[]>([]);
const pickUpStoreList = ref<MallDeliveryPickUpStoreApi.DeliveryPickUpStore[]>([]);
getSimpleDeliveryPickUpStoreList().then((res) => {
pickUpStoreList.value = res;
// 移除自己无法核销的门店

View File

@@ -20,7 +20,7 @@ import {
import { useGridColumns, useGridFormSchema } from './data';
const summary = ref<MallOrderApi.OrderSummary>();
const summary = ref<MallOrderApi.OrderSummaryRespVO>();
/** 刷新表格 */
function handleRefresh() {

View File

@@ -38,17 +38,19 @@ function handleCreate() {
}
/** 编辑门店 */
function handleEdit(row: MallDeliveryPickUpStoreApi.PickUpStore) {
function handleEdit(row: MallDeliveryPickUpStoreApi.DeliveryPickUpStore) {
formModalApi.setData(row).open();
}
/** 绑定店员 */
function handleBind(row: MallDeliveryPickUpStoreApi.PickUpStore) {
function handleBind(row: MallDeliveryPickUpStoreApi.DeliveryPickUpStore) {
bindFormModalApi.setData(row).open();
}
/** 删除门店 */
async function handleDelete(row: MallDeliveryPickUpStoreApi.PickUpStore) {
async function handleDelete(
row: MallDeliveryPickUpStoreApi.DeliveryPickUpStore,
) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.name]),
duration: 0,
@@ -89,7 +91,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: true,
search: true,
},
} as VxeTableGridOptions<MallDeliveryPickUpStoreApi.PickUpStore>,
} as VxeTableGridOptions<MallDeliveryPickUpStoreApi.DeliveryPickUpStore>,
});
</script>

View File

@@ -17,7 +17,7 @@ import { $t } from '#/locales';
import { useBindFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<MallDeliveryPickUpStoreApi.PickUpStore>();
const formData = ref<MallDeliveryPickUpStoreApi.DeliveryPickUpStore>();
const [Form, formApi] = useVbenForm({
commonConfig: {

View File

@@ -20,7 +20,7 @@ import { $t } from '#/locales';
import { useFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<MallDeliveryPickUpStoreApi.PickUpStore>();
const formData = ref<MallDeliveryPickUpStoreApi.DeliveryPickUpStore>();
const getTitle = computed(() => {
return formData.value?.id
? $t('ui.actionTitle.edit', ['门店'])
@@ -94,7 +94,7 @@ const [Modal, modalApi] = useVbenModal({
modalApi.lock();
// 提交表单
const data =
(await formApi.getValues()) as MallDeliveryPickUpStoreApi.PickUpStore;
(await formApi.getValues()) as MallDeliveryPickUpStoreApi.DeliveryPickUpStore;
try {
await (formData.value?.id
? updateDeliveryPickUpStore(data)
@@ -113,7 +113,7 @@ const [Modal, modalApi] = useVbenModal({
return;
}
// 加载数据
const data = modalApi.getData<MallDeliveryPickUpStoreApi.PickUpStore>();
const data = modalApi.getData<MallDeliveryPickUpStoreApi.DeliveryPickUpStore>();
if (!data || !data.id) {
// 初始化地图
await initTencentLbsMap();

View File

@@ -12,7 +12,7 @@ import { getAreaTree } from '#/api/system/area';
import { getRangePickerDefaultProps } from '#/utils';
/** 关联数据 */
let pickUpStoreList: MallDeliveryPickUpStoreApi.PickUpStore[] = [];
let pickUpStoreList: MallDeliveryPickUpStoreApi.DeliveryPickUpStore[] = [];
getSimpleDeliveryPickUpStoreList().then((data) => {
pickUpStoreList = data;
});

View File

@@ -54,11 +54,11 @@ const orderId = ref(0);
const order = ref<MallOrderApi.Order>({
logs: [],
});
const deliveryExpressList = ref<MallDeliveryExpressApi.SimpleDeliveryExpress[]>(
[],
);
const deliveryExpressList = ref<MallDeliveryExpressApi.DeliveryExpress[]>([]);
const expressTrackList = ref<any[]>([]);
const pickUpStore = ref<MallDeliveryPickUpStoreApi.PickUpStore | undefined>();
const pickUpStore = ref<
MallDeliveryPickUpStoreApi.DeliveryPickUpStore | undefined
>();
const [OrderInfoDescriptions] = useDescription({
title: '订单信息',

View File

@@ -40,7 +40,7 @@ const [Modal, modalApi] = useVbenModal({
// 提交表单
const data = await formApi.getValues();
try {
await updateOrderAddress(data as MallOrderApi.AddressRequest);
await updateOrderAddress(data as MallOrderApi.OrderUpdateAddressReqVO);
// 关闭并提示
await modalApi.close();
emit('success');

View File

@@ -50,7 +50,7 @@ const [Modal, modalApi] = useVbenModal({
data.logisticsNo = '';
}
try {
await deliveryOrder(data as MallOrderApi.DeliveryRequest);
await deliveryOrder(data as MallOrderApi.OrderUpdateDeliveryReqVO);
// 关闭并提示
await modalApi.close();
emit('success');

View File

@@ -15,7 +15,7 @@ import { useRemarkFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<MallOrderApi.DeliveryRequest>();
const formData = ref<MallOrderApi.OrderUpdateDeliveryReqVO>();
const [Form, formApi] = useVbenForm({
commonConfig: {
@@ -38,7 +38,8 @@ const [Modal, modalApi] = useVbenModal({
}
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as MallOrderApi.RemarkRequest;
const data =
(await formApi.getValues()) as MallOrderApi.OrderUpdateRemarkReqVO;
try {
await updateOrderRemark(data);
// 关闭并提示