Files
shop-toy/src/typings/merchant.ts
2025-12-19 12:04:22 +08:00

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 // 待结算金额
}