feat(user): 新增收货地址管理及售后申请页面

- 新增地址类型定义,增强前端地址数据结构
- 新增地址编辑页面,支持地址智能识别和定位选点功能
- 地址编辑支持省市区选择及默认地址设置
- 新增地址列表页面,支持地址展示、删除、编辑和选择功能
- 实现售后申请页面,支持选择售后类型和退款原因
- 售后申请支持商品选择、退款金额计算和凭证上传
- 新增售后详情页面,支持售后状态展示及申请取消
- 优化页面加载和用户交互体验,增加错误提示和权限处理
This commit is contained in:
2026-07-01 12:11:56 +08:00
parent bf6ed504cc
commit 1fa58040f3
636 changed files with 58878 additions and 716 deletions

View File

@@ -0,0 +1,97 @@
import type { PageParam } from '@/api/index';
/**
* 优惠券
*/
export interface ShopCoupon {
// id
id?: number;
// 优惠券名称
name?: string;
// 优惠券描述
description?: string;
// 优惠券类型(10满减券 20折扣券 30免费券 40无门槛券 50场地使用券)
type?: number;
// 满减券-减免金额
reducePrice?: string;
// 折扣券-折扣率(0-100)
discount?: number;
// 最低消费金额
minPrice?: string;
// 到期类型(10领取后生效 20固定时间)
expireType?: number;
// 领取后生效-有效天数
expireDay?: number;
// 有效期开始时间
startTime?: string;
// 有效期结束时间
endTime?: string;
// 适用范围(10全部商品 20指定商品 30指定分类)
applyRange?: number;
// 适用范围配置(json格式)
applyRangeConfig?: string;
// 是否过期(0未过期 1已过期)
isExpire?: number;
// 排序(数字越小越靠前)
sortNumber?: number;
// 状态, 0正常, 1禁用
status?: number;
// 是否删除, 0否, 1是
deleted?: number;
// 创建用户ID
userId?: number;
// 租户id
tenantId?: number;
// 创建时间
createTime?: string;
// 修改时间
updateTime?: string;
// 发放总数量(-1表示无限制)
totalCount?: number;
// 已发放数量
issuedCount?: number;
// 每人限领数量(-1表示无限制)
limitPerUser?: number;
// 是否启用(0禁用 1启用)
enabled?: string;
// 发放对象(0全部用户 1仅会员 2仅非会员 3指定用户)
receiveTarget?: number;
// 指定用户ID列表(JSON数组格式)receiveTarget=3时使用
receiveUserIds?: string;
// 场地使用券-场地类型
venueType?: number;
// 场地使用券-指定场地ID
venueId?: number;
// 场地使用券-可用次数(-1表示无限制)
useCount?: number;
// 场地使用券-使用时长(分钟)
useDuration?: number;
sortBy?: string;
}
/**
* 优惠券搜索条件
*/
export interface ShopCouponParam extends PageParam {
id?: number;
status?: number;
isExpire?: number;
sortBy?: string;
sortOrder?: 'asc' | 'desc';
keywords?: string;
enabled?: number;
type?: number;
minAmount?: number;
}
/**
* 领券中心优惠券(含是否已领取)
*/
export interface ShopCouponWithTake extends ShopCoupon {
// 是否已领取
hasTake?: boolean;
// 用户已领取数量
userTakeNum?: number;
// 用户已使用数量
userUseNum?: number;
}