页面提交
This commit is contained in:
37
src/mock/address.ts
Normal file
37
src/mock/address.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import type { Address } from '@/typings/mall'
|
||||
|
||||
/**
|
||||
* 地址模拟数据
|
||||
*/
|
||||
export const mockAddressList: Address[] = [
|
||||
{
|
||||
id: 'addr_001',
|
||||
name: '张三',
|
||||
phone: '13800138000',
|
||||
province: '广东省',
|
||||
city: '深圳市',
|
||||
district: '南山区',
|
||||
detail: '科技园南区深南大道10000号',
|
||||
isDefault: true,
|
||||
},
|
||||
{
|
||||
id: 'addr_002',
|
||||
name: '李四',
|
||||
phone: '13900139000',
|
||||
province: '广东省',
|
||||
city: '广州市',
|
||||
district: '天河区',
|
||||
detail: '珠江新城花城大道88号',
|
||||
isDefault: false,
|
||||
},
|
||||
{
|
||||
id: 'addr_003',
|
||||
name: '王五',
|
||||
phone: '13700137000',
|
||||
province: '北京市',
|
||||
city: '北京市',
|
||||
district: '朝阳区',
|
||||
detail: '建国路99号',
|
||||
isDefault: false,
|
||||
},
|
||||
]
|
||||
31
src/mock/banner.ts
Normal file
31
src/mock/banner.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import type { Banner } from '@/typings/mall'
|
||||
|
||||
/**
|
||||
* 轮播图模拟数据
|
||||
*/
|
||||
export const mockBannerList: Banner[] = [
|
||||
{
|
||||
id: 'banner_001',
|
||||
image: 'https://picsum.photos/750/400?random=banner1',
|
||||
title: '春季新品上市',
|
||||
goodsId: 'goods_001',
|
||||
},
|
||||
{
|
||||
id: 'banner_002',
|
||||
image: 'https://picsum.photos/750/400?random=banner2',
|
||||
title: '数码产品大促',
|
||||
goodsId: 'goods_004',
|
||||
},
|
||||
{
|
||||
id: 'banner_003',
|
||||
image: 'https://picsum.photos/750/400?random=banner3',
|
||||
title: '美妆护肤专场',
|
||||
goodsId: 'goods_010',
|
||||
},
|
||||
{
|
||||
id: 'banner_004',
|
||||
image: 'https://picsum.photos/750/400?random=banner4',
|
||||
title: '家居好物推荐',
|
||||
goodsId: 'goods_008',
|
||||
},
|
||||
]
|
||||
55
src/mock/category.ts
Normal file
55
src/mock/category.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import type { Category } from '@/typings/mall'
|
||||
|
||||
/**
|
||||
* 分类模拟数据
|
||||
*/
|
||||
export const mockCategoryList: Category[] = [
|
||||
{
|
||||
id: 'cat_001',
|
||||
name: '服装',
|
||||
icon: 'i-carbon-clothing',
|
||||
cover: 'https://picsum.photos/200/200?random=cat1',
|
||||
},
|
||||
{
|
||||
id: 'cat_002',
|
||||
name: '数码',
|
||||
icon: 'i-carbon-phone',
|
||||
cover: 'https://picsum.photos/200/200?random=cat2',
|
||||
},
|
||||
{
|
||||
id: 'cat_003',
|
||||
name: '食品',
|
||||
icon: 'i-carbon-restaurant',
|
||||
cover: 'https://picsum.photos/200/200?random=cat3',
|
||||
},
|
||||
{
|
||||
id: 'cat_004',
|
||||
name: '家居',
|
||||
icon: 'i-carbon-home',
|
||||
cover: 'https://picsum.photos/200/200?random=cat4',
|
||||
},
|
||||
{
|
||||
id: 'cat_005',
|
||||
name: '美妆',
|
||||
icon: 'i-carbon-face-satisfied',
|
||||
cover: 'https://picsum.photos/200/200?random=cat5',
|
||||
},
|
||||
{
|
||||
id: 'cat_006',
|
||||
name: '运动',
|
||||
icon: 'i-carbon-basketball',
|
||||
cover: 'https://picsum.photos/200/200?random=cat6',
|
||||
},
|
||||
{
|
||||
id: 'cat_007',
|
||||
name: '图书',
|
||||
icon: 'i-carbon-book',
|
||||
cover: 'https://picsum.photos/200/200?random=cat7',
|
||||
},
|
||||
{
|
||||
id: 'cat_008',
|
||||
name: '母婴',
|
||||
icon: 'i-carbon-baby',
|
||||
cover: 'https://picsum.photos/200/200?random=cat8',
|
||||
},
|
||||
]
|
||||
168
src/mock/finance.ts
Normal file
168
src/mock/finance.ts
Normal file
@@ -0,0 +1,168 @@
|
||||
import { SettlementStatus, WriteOffStatus } from '@/typings/mall'
|
||||
import type { CreditLimit, Settlement, WriteOff } from '@/typings/mall'
|
||||
|
||||
/**
|
||||
* 信用额度模拟数据
|
||||
*/
|
||||
export const mockCreditLimitList: CreditLimit[] = [
|
||||
{
|
||||
merchantId: 'merchant_a',
|
||||
merchantName: '商户A',
|
||||
totalLimit: 100000,
|
||||
usedLimit: 99900,
|
||||
availableLimit: 100,
|
||||
updateTime: '2025-11-28 10:00:00',
|
||||
},
|
||||
{
|
||||
merchantId: 'merchant_b',
|
||||
merchantName: '商户B',
|
||||
totalLimit: 50000,
|
||||
usedLimit: 12000,
|
||||
availableLimit: 38000,
|
||||
updateTime: '2025-11-28 10:00:00',
|
||||
},
|
||||
]
|
||||
|
||||
/**
|
||||
* 应结账款模拟数据
|
||||
*/
|
||||
export const mockSettlementList: Settlement[] = [
|
||||
// 未结账款
|
||||
{
|
||||
id: 'settlement_001',
|
||||
orderNo: 'ORD20251128001',
|
||||
merchantId: 'merchant_a',
|
||||
merchantName: '商户A',
|
||||
amount: 5000,
|
||||
status: SettlementStatus.UNSETTLED,
|
||||
dueDate: '2025-12-15',
|
||||
relatedOrders: ['ORD20251128001', 'ORD20251128002'],
|
||||
},
|
||||
{
|
||||
id: 'settlement_002',
|
||||
orderNo: 'ORD20251125001',
|
||||
merchantId: 'merchant_a',
|
||||
merchantName: '商户A',
|
||||
amount: 8000,
|
||||
status: SettlementStatus.UNSETTLED,
|
||||
dueDate: '2025-12-10',
|
||||
relatedOrders: ['ORD20251125001'],
|
||||
},
|
||||
{
|
||||
id: 'settlement_003',
|
||||
orderNo: 'ORD20251120001',
|
||||
merchantId: 'merchant_b',
|
||||
merchantName: '商户B',
|
||||
amount: 3000,
|
||||
status: SettlementStatus.UNSETTLED,
|
||||
dueDate: '2025-12-05',
|
||||
relatedOrders: ['ORD20251120001', 'ORD20251120002', 'ORD20251120003'],
|
||||
},
|
||||
{
|
||||
id: 'settlement_004',
|
||||
orderNo: 'ORD20251115001',
|
||||
merchantId: 'merchant_b',
|
||||
merchantName: '商户B',
|
||||
amount: 4500,
|
||||
status: SettlementStatus.OVERDUE,
|
||||
dueDate: '2025-11-30',
|
||||
relatedOrders: ['ORD20251115001'],
|
||||
},
|
||||
// 新增:昨天到期(逾期)
|
||||
{
|
||||
id: 'settlement_new_001',
|
||||
orderNo: 'ORD20251128999',
|
||||
merchantId: 'merchant_a',
|
||||
merchantName: '商户A',
|
||||
amount: 1200,
|
||||
status: SettlementStatus.OVERDUE,
|
||||
dueDate: '2025-11-28',
|
||||
relatedOrders: ['ORD20251128999'],
|
||||
},
|
||||
// 新增:明天到期
|
||||
{
|
||||
id: 'settlement_new_002',
|
||||
orderNo: 'ORD20251129001',
|
||||
merchantId: 'merchant_b',
|
||||
merchantName: '商户B',
|
||||
amount: 2800,
|
||||
status: SettlementStatus.UNSETTLED,
|
||||
dueDate: '2025-11-30',
|
||||
relatedOrders: ['ORD20251129001'],
|
||||
},
|
||||
|
||||
// 已结账款
|
||||
{
|
||||
id: 'settlement_005',
|
||||
orderNo: 'ORD20251110001',
|
||||
merchantId: 'merchant_a',
|
||||
merchantName: '商户A',
|
||||
amount: 6000,
|
||||
status: SettlementStatus.SETTLED,
|
||||
dueDate: '2025-11-25',
|
||||
settlementDate: '2025-11-22',
|
||||
relatedOrders: ['ORD20251110001'],
|
||||
},
|
||||
{
|
||||
id: 'settlement_006',
|
||||
orderNo: 'ORD20251105001',
|
||||
merchantId: 'merchant_a',
|
||||
merchantName: '商户A',
|
||||
amount: 7500,
|
||||
status: SettlementStatus.SETTLED,
|
||||
dueDate: '2025-11-20',
|
||||
settlementDate: '2025-11-18',
|
||||
relatedOrders: ['ORD20251105001', 'ORD20251105002'],
|
||||
},
|
||||
{
|
||||
id: 'settlement_007',
|
||||
orderNo: 'ORD20251101001',
|
||||
merchantId: 'merchant_b',
|
||||
merchantName: '商户B',
|
||||
amount: 2500,
|
||||
status: SettlementStatus.SETTLED,
|
||||
dueDate: '2025-11-15',
|
||||
settlementDate: '2025-11-12',
|
||||
relatedOrders: ['ORD20251101001'],
|
||||
},
|
||||
]
|
||||
|
||||
/**
|
||||
* 消账记录模拟数据
|
||||
*/
|
||||
export const mockWriteOffList: WriteOff[] = [
|
||||
{
|
||||
id: 'writeoff_001',
|
||||
settlementId: 'settlement_005',
|
||||
amount: 6000,
|
||||
proof: [
|
||||
'https://picsum.photos/400/300?random=proof1',
|
||||
'https://picsum.photos/400/300?random=proof2',
|
||||
],
|
||||
remark: '已完成付款,请查收',
|
||||
submitTime: '2025-11-22 14:30:00',
|
||||
status: WriteOffStatus.APPROVED,
|
||||
},
|
||||
{
|
||||
id: 'writeoff_002',
|
||||
settlementId: 'settlement_006',
|
||||
amount: 7500,
|
||||
proof: [
|
||||
'https://picsum.photos/400/300?random=proof3',
|
||||
],
|
||||
remark: '转账凭证',
|
||||
submitTime: '2025-11-18 10:15:00',
|
||||
status: WriteOffStatus.APPROVED,
|
||||
},
|
||||
{
|
||||
id: 'writeoff_003',
|
||||
settlementId: 'settlement_001',
|
||||
amount: 5000,
|
||||
proof: [
|
||||
'https://picsum.photos/400/300?random=proof4',
|
||||
],
|
||||
remark: '部分付款',
|
||||
submitTime: '2025-11-28 09:00:00',
|
||||
status: WriteOffStatus.PENDING,
|
||||
},
|
||||
]
|
||||
238
src/mock/goods.ts
Normal file
238
src/mock/goods.ts
Normal file
@@ -0,0 +1,238 @@
|
||||
import type { Goods } from '@/typings/mall'
|
||||
|
||||
/**
|
||||
* 商品模拟数据
|
||||
*/
|
||||
export const mockGoodsList: Goods[] = [
|
||||
// 服装类商品
|
||||
{
|
||||
id: 'goods_001',
|
||||
shopId: 'merchant_a',
|
||||
shopName: '商户A',
|
||||
name: '2024春季新款连衣裙',
|
||||
cover: 'https://picsum.photos/400/400?random=1',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=1',
|
||||
'https://picsum.photos/800/800?random=2',
|
||||
'https://picsum.photos/800/800?random=3',
|
||||
],
|
||||
price: 299,
|
||||
originalPrice: 599,
|
||||
stock: 100,
|
||||
sales: 1234,
|
||||
description: '优质面料,舒适透气,修身显瘦,适合春夏季节穿着。',
|
||||
specs: [
|
||||
{ name: '颜色', values: ['黑色', '白色', '红色'] },
|
||||
{ name: '尺码', values: ['S', 'M', 'L', 'XL'] },
|
||||
],
|
||||
tags: ['新品', '热销'],
|
||||
categoryId: 'cat_001',
|
||||
categoryName: '服装',
|
||||
},
|
||||
{
|
||||
id: 'goods_002',
|
||||
shopId: 'merchant_a',
|
||||
shopName: '商户A',
|
||||
name: '男士休闲T恤',
|
||||
cover: 'https://picsum.photos/400/400?random=4',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=4',
|
||||
'https://picsum.photos/800/800?random=5',
|
||||
],
|
||||
price: 89,
|
||||
originalPrice: 159,
|
||||
stock: 200,
|
||||
sales: 856,
|
||||
description: '纯棉面料,柔软舒适,经典百搭款式。',
|
||||
specs: [
|
||||
{ name: '颜色', values: ['白色', '灰色', '黑色', '蓝色'] },
|
||||
{ name: '尺码', values: ['M', 'L', 'XL', 'XXL'] },
|
||||
],
|
||||
tags: ['热销'],
|
||||
categoryId: 'cat_001',
|
||||
categoryName: '服装',
|
||||
},
|
||||
{
|
||||
id: 'goods_003',
|
||||
shopId: 'merchant_a',
|
||||
shopName: '商户A',
|
||||
name: '女士牛仔裤',
|
||||
cover: 'https://picsum.photos/400/400?random=6',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=6',
|
||||
'https://picsum.photos/800/800?random=7',
|
||||
],
|
||||
price: 199,
|
||||
originalPrice: 399,
|
||||
stock: 150,
|
||||
sales: 678,
|
||||
description: '高腰设计,显瘦修身,弹力面料,穿着舒适。',
|
||||
specs: [
|
||||
{ name: '颜色', values: ['浅蓝', '深蓝', '黑色'] },
|
||||
{ name: '尺码', values: ['25', '26', '27', '28', '29'] },
|
||||
],
|
||||
tags: ['推荐'],
|
||||
categoryId: 'cat_001',
|
||||
categoryName: '服装',
|
||||
},
|
||||
|
||||
// 数码类商品
|
||||
{
|
||||
id: 'goods_004',
|
||||
shopId: 'merchant_b',
|
||||
shopName: '商户B',
|
||||
name: '无线蓝牙耳机',
|
||||
cover: 'https://picsum.photos/400/400?random=8',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=8',
|
||||
'https://picsum.photos/800/800?random=9',
|
||||
],
|
||||
price: 299,
|
||||
originalPrice: 499,
|
||||
stock: 80,
|
||||
sales: 2345,
|
||||
description: '主动降噪,长续航,高音质,支持快充。',
|
||||
specs: [
|
||||
{ name: '颜色', values: ['白色', '黑色'] },
|
||||
],
|
||||
tags: ['新品', '热销'],
|
||||
categoryId: 'cat_002',
|
||||
categoryName: '数码',
|
||||
},
|
||||
{
|
||||
id: 'goods_005',
|
||||
shopId: 'merchant_b',
|
||||
shopName: '商户B',
|
||||
name: '智能手表',
|
||||
cover: 'https://picsum.photos/400/400?random=10',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=10',
|
||||
'https://picsum.photos/800/800?random=11',
|
||||
],
|
||||
price: 899,
|
||||
originalPrice: 1299,
|
||||
stock: 50,
|
||||
sales: 567,
|
||||
description: '健康监测,运动追踪,消息提醒,长续航。',
|
||||
specs: [
|
||||
{ name: '颜色', values: ['黑色', '银色', '金色'] },
|
||||
{ name: '表带', values: ['硅胶', '皮革', '金属'] },
|
||||
],
|
||||
tags: ['新品'],
|
||||
categoryId: 'cat_002',
|
||||
categoryName: '数码',
|
||||
},
|
||||
|
||||
// 食品类商品
|
||||
{
|
||||
id: 'goods_006',
|
||||
shopId: 'merchant_a',
|
||||
shopName: '商户A',
|
||||
name: '进口零食大礼包',
|
||||
cover: 'https://picsum.photos/400/400?random=12',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=12',
|
||||
'https://picsum.photos/800/800?random=13',
|
||||
],
|
||||
price: 128,
|
||||
originalPrice: 198,
|
||||
stock: 300,
|
||||
sales: 1890,
|
||||
description: '多种口味,营养健康,适合全家分享。',
|
||||
specs: [],
|
||||
tags: ['热销', '推荐'],
|
||||
categoryId: 'cat_003',
|
||||
categoryName: '食品',
|
||||
},
|
||||
{
|
||||
id: 'goods_007',
|
||||
shopId: 'merchant_a',
|
||||
shopName: '商户A',
|
||||
name: '有机坚果礼盒',
|
||||
cover: 'https://picsum.photos/400/400?random=14',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=14',
|
||||
'https://picsum.photos/800/800?random=15',
|
||||
],
|
||||
price: 168,
|
||||
originalPrice: 268,
|
||||
stock: 120,
|
||||
sales: 456,
|
||||
description: '精选优质坚果,营养丰富,送礼佳品。',
|
||||
specs: [
|
||||
{ name: '规格', values: ['500g', '1000g'] },
|
||||
],
|
||||
tags: ['推荐'],
|
||||
categoryId: 'cat_003',
|
||||
categoryName: '食品',
|
||||
},
|
||||
|
||||
// 家居类商品
|
||||
{
|
||||
id: 'goods_008',
|
||||
shopId: 'merchant_b',
|
||||
shopName: '商户B',
|
||||
name: '北欧风格台灯',
|
||||
cover: 'https://picsum.photos/400/400?random=16',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=16',
|
||||
'https://picsum.photos/800/800?random=17',
|
||||
],
|
||||
price: 159,
|
||||
originalPrice: 299,
|
||||
stock: 90,
|
||||
sales: 234,
|
||||
description: '简约设计,护眼光源,适合卧室书房。',
|
||||
specs: [
|
||||
{ name: '颜色', values: ['白色', '木色'] },
|
||||
],
|
||||
tags: ['新品'],
|
||||
categoryId: 'cat_004',
|
||||
categoryName: '家居',
|
||||
},
|
||||
{
|
||||
id: 'goods_009',
|
||||
shopId: 'merchant_b',
|
||||
shopName: '商户B',
|
||||
name: '四件套床上用品',
|
||||
cover: 'https://picsum.photos/400/400?random=18',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=18',
|
||||
'https://picsum.photos/800/800?random=19',
|
||||
],
|
||||
price: 299,
|
||||
originalPrice: 599,
|
||||
stock: 150,
|
||||
sales: 789,
|
||||
description: '纯棉面料,柔软亲肤,多种花色可选。',
|
||||
specs: [
|
||||
{ name: '尺寸', values: ['1.5m床', '1.8m床', '2.0m床'] },
|
||||
{ name: '颜色', values: ['浅灰', '深灰', '米白', '粉色'] },
|
||||
],
|
||||
tags: ['热销'],
|
||||
categoryId: 'cat_004',
|
||||
categoryName: '家居',
|
||||
},
|
||||
|
||||
// 美妆类商品
|
||||
{
|
||||
id: 'goods_010',
|
||||
shopId: 'merchant_a',
|
||||
shopName: '商户A',
|
||||
name: '保湿面霜套装',
|
||||
cover: 'https://picsum.photos/400/400?random=20',
|
||||
images: [
|
||||
'https://picsum.photos/800/800?random=20',
|
||||
'https://picsum.photos/800/800?random=21',
|
||||
],
|
||||
price: 399,
|
||||
originalPrice: 699,
|
||||
stock: 200,
|
||||
sales: 1567,
|
||||
description: '深层补水,改善肌肤,温和不刺激。',
|
||||
specs: [],
|
||||
tags: ['热销', '推荐'],
|
||||
categoryId: 'cat_005',
|
||||
categoryName: '美妆',
|
||||
},
|
||||
]
|
||||
10
src/mock/index.ts
Normal file
10
src/mock/index.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Mock 数据统一导出
|
||||
*/
|
||||
|
||||
export * from './goods'
|
||||
export * from './category'
|
||||
export * from './finance'
|
||||
export * from './member'
|
||||
export * from './banner'
|
||||
export * from './address'
|
||||
40
src/mock/member.ts
Normal file
40
src/mock/member.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { MemberLevel } from '@/typings/mall'
|
||||
import type { Member } from '@/typings/mall'
|
||||
|
||||
/**
|
||||
* 会员等级配置
|
||||
*/
|
||||
export const memberLevelConfig = {
|
||||
[MemberLevel.NORMAL]: {
|
||||
name: '普通会员',
|
||||
benefits: ['积分累积', '生日优惠'],
|
||||
color: '#999999',
|
||||
},
|
||||
[MemberLevel.SILVER]: {
|
||||
name: '银卡会员',
|
||||
benefits: ['积分累积', '生日优惠', '专属客服', '9.5折优惠'],
|
||||
color: '#C0C0C0',
|
||||
},
|
||||
[MemberLevel.GOLD]: {
|
||||
name: '金卡会员',
|
||||
benefits: ['积分累积', '生日优惠', '专属客服', '9折优惠', '免运费'],
|
||||
color: '#FFD700',
|
||||
},
|
||||
[MemberLevel.PLATINUM]: {
|
||||
name: '白金会员',
|
||||
benefits: ['积分累积', '生日优惠', '专属客服', '8.5折优惠', '免运费', '优先发货'],
|
||||
color: '#E5E4E2',
|
||||
},
|
||||
}
|
||||
|
||||
/**
|
||||
* 会员模拟数据
|
||||
*/
|
||||
export const mockMember: Member = {
|
||||
id: 'member_001',
|
||||
userId: 'user_001',
|
||||
level: MemberLevel.GOLD,
|
||||
points: 3580,
|
||||
expireDate: '2026-11-28',
|
||||
benefits: memberLevelConfig[MemberLevel.GOLD].benefits,
|
||||
}
|
||||
Reference in New Issue
Block a user