250 lines
6.3 KiB
TypeScript
250 lines
6.3 KiB
TypeScript
/**
|
|
* 商户端类型定义
|
|
*/
|
|
|
|
// ==================== 订单相关 ====================
|
|
|
|
/** 订单状态枚举 */
|
|
export enum OrderStatus {
|
|
PENDING = 'pending', // 待确认
|
|
CONFIRMED = 'confirmed', // 已确认
|
|
SHIPPING = 'shipping', // 待发货
|
|
SHIPPED = 'shipped', // 已发货
|
|
COMPLETED = 'completed', // 已完成
|
|
CANCELLED = 'cancelled', // 已取消
|
|
}
|
|
|
|
/** 订单状态配置 */
|
|
export const ORDER_STATUS_CONFIG = {
|
|
[OrderStatus.PENDING]: { label: '待确认', color: '#ff8f0d' },
|
|
[OrderStatus.CONFIRMED]: { label: '已确认', color: '#4d80f0' },
|
|
[OrderStatus.SHIPPING]: { label: '待发货', color: '#ff8f0d' },
|
|
[OrderStatus.SHIPPED]: { label: '已发货', color: '#4d80f0' },
|
|
[OrderStatus.COMPLETED]: { label: '已完成', color: '#00c05a' },
|
|
[OrderStatus.CANCELLED]: { label: '已取消', color: '#999' },
|
|
}
|
|
|
|
/** 订单商品 */
|
|
export interface OrderGoods {
|
|
id: string
|
|
goodsId: string
|
|
name: string
|
|
image: string
|
|
skuName: string // 规格名称
|
|
price: number
|
|
quantity: number
|
|
amount: number
|
|
}
|
|
|
|
/** 物流信息 */
|
|
export interface LogisticsInfo {
|
|
company: string // 物流公司
|
|
trackingNo: string // 运单号
|
|
status: string // 物流状态
|
|
traces: LogisticsTrace[]
|
|
}
|
|
|
|
/** 物流轨迹 */
|
|
export interface LogisticsTrace {
|
|
time: string
|
|
content: string
|
|
}
|
|
|
|
/** 收货地址 */
|
|
export interface OrderAddress {
|
|
name: string
|
|
phone: string
|
|
province: string
|
|
city: string
|
|
district: string
|
|
detail: string
|
|
}
|
|
|
|
/** 商户订单 */
|
|
export interface MerchantOrder {
|
|
id: string
|
|
orderNo: string
|
|
customerName: string
|
|
customerPhone: string
|
|
customerAvatar?: string
|
|
status: OrderStatus
|
|
amount: number // 订单总金额
|
|
freight: number // 运费
|
|
payAmount: number // 实付金额
|
|
remark?: string // 订单备注
|
|
merchantRemark?: string // 商家备注
|
|
goods: OrderGoods[]
|
|
address: OrderAddress
|
|
logistics?: LogisticsInfo
|
|
createTime: string
|
|
payTime?: string
|
|
shipTime?: string
|
|
completeTime?: string
|
|
}
|
|
|
|
// ==================== 商品相关 ====================
|
|
|
|
/** 商品状态枚举 */
|
|
export enum GoodsStatus {
|
|
ON = 'on', // 上架
|
|
OFF = 'off', // 下架
|
|
SOLD_OUT = 'sold_out', // 售罄
|
|
}
|
|
|
|
/** 商品状态配置 */
|
|
export const GOODS_STATUS_CONFIG = {
|
|
[GoodsStatus.ON]: { label: '上架', color: '#00c05a' },
|
|
[GoodsStatus.OFF]: { label: '下架', color: '#999' },
|
|
[GoodsStatus.SOLD_OUT]: { label: '售罄', color: '#fa4350' },
|
|
}
|
|
|
|
/** SKU 规格选项 */
|
|
export interface SkuSpec {
|
|
name: string // 规格名称,如 "颜色"
|
|
values: string[] // 规格值列表,如 ["红色", "蓝色"]
|
|
}
|
|
|
|
/** SKU 项 */
|
|
export interface SkuItem {
|
|
id: string
|
|
specs: Record<string, string> // 规格组合,如 { 颜色: "红色", 尺码: "M" }
|
|
price: number
|
|
stock: number
|
|
image?: string
|
|
}
|
|
|
|
/** 商户商品 */
|
|
export interface MerchantGoods {
|
|
id: string
|
|
name: string
|
|
categoryId: string
|
|
categoryName: string
|
|
brand?: string
|
|
price: number // 售价(单规格时使用)
|
|
costPrice: number // 成本价
|
|
stock: number // 库存(单规格时使用)
|
|
sales: number // 销量
|
|
status: GoodsStatus
|
|
images: string[] // 商品图片
|
|
description: string // 商品描述
|
|
specs?: SkuSpec[] // 规格定义
|
|
skuList?: SkuItem[] // SKU 列表
|
|
createTime: string
|
|
updateTime: string
|
|
}
|
|
|
|
/** 商品表单数据 */
|
|
export interface GoodsFormData {
|
|
id?: string
|
|
name: string
|
|
categoryId: string
|
|
brand?: string
|
|
price: number
|
|
costPrice: number
|
|
stock: number
|
|
images: string[]
|
|
description: string
|
|
enableSpec: boolean // 是否启用多规格
|
|
specs?: SkuSpec[]
|
|
skuList?: SkuItem[]
|
|
}
|
|
|
|
// ==================== 财务相关 ====================
|
|
|
|
/** 财务概览 */
|
|
export interface FinanceOverview {
|
|
balance: number // 可用余额
|
|
pendingSettlement: number // 待结算
|
|
monthIncome: number // 本月收入
|
|
totalIncome: number // 累计收入
|
|
}
|
|
|
|
/** 交易类型 */
|
|
export enum TransactionType {
|
|
INCOME = 'income', // 收入
|
|
WITHDRAW = 'withdraw', // 提现
|
|
REFUND = 'refund', // 退款
|
|
}
|
|
|
|
/** 交易记录 */
|
|
export interface Transaction {
|
|
id: string
|
|
type: TransactionType
|
|
amount: number
|
|
balance: number // 交易后余额
|
|
orderNo?: string // 关联订单号
|
|
remark: string
|
|
createTime: string
|
|
}
|
|
|
|
/** 结算状态 */
|
|
export enum SettlementStatus {
|
|
PENDING = 'pending', // 待结算
|
|
SETTLED = 'settled', // 已结算
|
|
}
|
|
|
|
/** 结算记录 */
|
|
export interface Settlement {
|
|
id: string
|
|
settlementNo: string
|
|
amount: number
|
|
orderCount: number // 订单数量
|
|
status: SettlementStatus
|
|
period: string // 结算周期,如 "2024-12-01 ~ 2024-12-15"
|
|
settledTime?: string // 结算时间
|
|
createTime: string
|
|
}
|
|
|
|
/** 提现状态 */
|
|
export enum WithdrawStatus {
|
|
PENDING = 'pending', // 审核中
|
|
APPROVED = 'approved', // 审核通过
|
|
REJECTED = 'rejected', // 审核拒绝
|
|
COMPLETED = 'completed', // 已到账
|
|
}
|
|
|
|
/** 提现状态配置 */
|
|
export const WITHDRAW_STATUS_CONFIG = {
|
|
[WithdrawStatus.PENDING]: { label: '审核中', color: '#ff8f0d' },
|
|
[WithdrawStatus.APPROVED]: { label: '审核通过', color: '#4d80f0' },
|
|
[WithdrawStatus.REJECTED]: { label: '审核拒绝', color: '#fa4350' },
|
|
[WithdrawStatus.COMPLETED]: { label: '已到账', color: '#00c05a' },
|
|
}
|
|
|
|
/** 提现记录 */
|
|
export interface WithdrawRecord {
|
|
id: string
|
|
amount: number
|
|
bankName: string
|
|
bankAccount: string
|
|
status: WithdrawStatus
|
|
rejectReason?: string // 拒绝原因
|
|
applyTime: string
|
|
completeTime?: string
|
|
}
|
|
|
|
// ==================== 店铺相关 ====================
|
|
|
|
/** 店铺信息 */
|
|
export interface ShopInfo {
|
|
id: string
|
|
name: string
|
|
logo: string
|
|
phone: string
|
|
address: string
|
|
businessHours: string // 营业时间
|
|
description?: string
|
|
}
|
|
|
|
// ==================== 统计相关 ====================
|
|
|
|
/** 商户统计数据 */
|
|
export interface MerchantStats {
|
|
todayOrders: number // 今日订单
|
|
pendingOrders: number // 待处理订单
|
|
todaySales: number // 今日销售额
|
|
totalGoods: number // 商品总数
|
|
lowStockGoods: number // 库存预警商品数
|
|
pendingSettlement: number // 待结算金额
|
|
}
|