312 lines
6.7 KiB
JavaScript
312 lines
6.7 KiB
JavaScript
|
|
// Mock数据 - 用于开发和测试
|
|||
|
|
import { OrderStatus, TravelStatus } from './types.js'
|
|||
|
|
|
|||
|
|
// Mock用户数据
|
|||
|
|
export const mockUsers = [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
username: 'user1',
|
|||
|
|
nickname: '旅行爱好者',
|
|||
|
|
avatar: '/static/user/avatar1.jpg',
|
|||
|
|
phone: '138****1234',
|
|||
|
|
points: 150,
|
|||
|
|
level: 2,
|
|||
|
|
createTime: '2024-01-15'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
username: 'user2',
|
|||
|
|
nickname: '动物保护者',
|
|||
|
|
avatar: '/static/user/avatar2.jpg',
|
|||
|
|
email: 'user2@example.com',
|
|||
|
|
points: 300,
|
|||
|
|
level: 3,
|
|||
|
|
createTime: '2024-02-20'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
// Mock轮播图数据
|
|||
|
|
export const mockBanners = [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
image: '/static/banners/banner1.jpg',
|
|||
|
|
title: '西藏之旅',
|
|||
|
|
link: '/pages/travel/list',
|
|||
|
|
type: 'travel'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
image: '/static/banners/banner2.jpg',
|
|||
|
|
title: '动物认养',
|
|||
|
|
link: '/pages/animal/list',
|
|||
|
|
type: 'animal'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 3,
|
|||
|
|
image: '/static/banners/banner3.jpg',
|
|||
|
|
title: '鲜花配送',
|
|||
|
|
link: '/pages/flower/list',
|
|||
|
|
type: 'flower'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
// Mock旅行计划数据
|
|||
|
|
export const mockTravelPlans = [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
title: '西藏拉萨深度游',
|
|||
|
|
destination: '西藏拉萨',
|
|||
|
|
coverImage: '/static/travel/tibet.jpg',
|
|||
|
|
startDate: '2024-10-01',
|
|||
|
|
endDate: '2024-10-07',
|
|||
|
|
budget: 5000,
|
|||
|
|
currentMembers: 3,
|
|||
|
|
maxMembers: 6,
|
|||
|
|
description: '探索西藏神秘文化,感受高原风情',
|
|||
|
|
status: TravelStatus.RECRUITING,
|
|||
|
|
creator: mockUsers[0],
|
|||
|
|
createTime: '2024-08-20'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
title: '云南大理休闲游',
|
|||
|
|
destination: '云南大理',
|
|||
|
|
coverImage: '/static/travel/yunnan.jpg',
|
|||
|
|
startDate: '2024-10-05',
|
|||
|
|
endDate: '2024-10-12',
|
|||
|
|
budget: 3500,
|
|||
|
|
currentMembers: 2,
|
|||
|
|
maxMembers: 4,
|
|||
|
|
description: '漫步古城,享受洱海风光',
|
|||
|
|
status: TravelStatus.RECRUITING,
|
|||
|
|
creator: mockUsers[1],
|
|||
|
|
createTime: '2024-08-22'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
// Mock动物数据
|
|||
|
|
export const mockAnimals = [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
name: '小羊驼',
|
|||
|
|
species: '羊驼',
|
|||
|
|
price: 1000,
|
|||
|
|
image: '/static/animals/alpaca.jpg',
|
|||
|
|
description: '温顺可爱的羊驼,适合家庭认养',
|
|||
|
|
location: '西藏牧场',
|
|||
|
|
isHot: true,
|
|||
|
|
status: 'available',
|
|||
|
|
createTime: '2024-08-15'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
name: '小绵羊',
|
|||
|
|
species: '绵羊',
|
|||
|
|
price: 800,
|
|||
|
|
image: '/static/animals/sheep.jpg',
|
|||
|
|
description: '毛茸茸的小绵羊,非常温顺',
|
|||
|
|
location: '内蒙古草原',
|
|||
|
|
isHot: false,
|
|||
|
|
status: 'available',
|
|||
|
|
createTime: '2024-08-18'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
// Mock花束数据
|
|||
|
|
export const mockFlowers = [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
name: '浪漫玫瑰',
|
|||
|
|
description: '11朵红玫瑰,象征热烈的爱情',
|
|||
|
|
price: 199,
|
|||
|
|
image: '/static/flowers/rose.jpg',
|
|||
|
|
category: '爱情',
|
|||
|
|
stock: 50,
|
|||
|
|
createTime: '2024-08-10'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
name: '向日葵花束',
|
|||
|
|
description: '9朵向日葵,象征阳光和希望',
|
|||
|
|
price: 179,
|
|||
|
|
image: '/static/flowers/sunflower.jpg',
|
|||
|
|
category: '祝福',
|
|||
|
|
stock: 30,
|
|||
|
|
createTime: '2024-08-12'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
// Mock订单数据
|
|||
|
|
export const mockOrders = [
|
|||
|
|
{
|
|||
|
|
id: 'ORD202408270001',
|
|||
|
|
orderNo: '202408270001',
|
|||
|
|
type: 'travel',
|
|||
|
|
title: '西藏拉萨深度游',
|
|||
|
|
image: '/static/travel/tibet.jpg',
|
|||
|
|
price: 5000,
|
|||
|
|
count: 1,
|
|||
|
|
totalAmount: 5000,
|
|||
|
|
status: OrderStatus.UNPAID,
|
|||
|
|
createTime: '2024-08-27 10:00:00'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 'ORD202408270002',
|
|||
|
|
orderNo: '202408270002',
|
|||
|
|
type: 'animal',
|
|||
|
|
title: '小羊驼认养',
|
|||
|
|
image: '/static/animals/alpaca.jpg',
|
|||
|
|
price: 1000,
|
|||
|
|
count: 1,
|
|||
|
|
totalAmount: 1000,
|
|||
|
|
status: OrderStatus.PAID,
|
|||
|
|
createTime: '2024-08-27 11:30:00',
|
|||
|
|
payTime: '2024-08-27 11:35:00'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
// Mock系统公告
|
|||
|
|
export const mockNotices = [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
title: '系统维护通知',
|
|||
|
|
content: '系统将于今晚进行维护,预计耗时2小时',
|
|||
|
|
type: 'system',
|
|||
|
|
isActive: true,
|
|||
|
|
createTime: '2024-08-26'
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
title: '新功能上线',
|
|||
|
|
content: '送花服务正式上线,欢迎体验',
|
|||
|
|
type: 'feature',
|
|||
|
|
isActive: true,
|
|||
|
|
createTime: '2024-08-27'
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
// Mock API响应
|
|||
|
|
export const mockResponses = {
|
|||
|
|
// 成功响应
|
|||
|
|
success: (data, message = '操作成功') => ({
|
|||
|
|
code: 0,
|
|||
|
|
message,
|
|||
|
|
data,
|
|||
|
|
timestamp: Date.now()
|
|||
|
|
}),
|
|||
|
|
|
|||
|
|
// 错误响应
|
|||
|
|
error: (code, message) => ({
|
|||
|
|
code,
|
|||
|
|
message,
|
|||
|
|
timestamp: Date.now()
|
|||
|
|
}),
|
|||
|
|
|
|||
|
|
// 分页响应
|
|||
|
|
pagination: (list, total, page = 1, pageSize = 10) => ({
|
|||
|
|
code: 0,
|
|||
|
|
message: '操作成功',
|
|||
|
|
data: {
|
|||
|
|
list,
|
|||
|
|
total,
|
|||
|
|
page,
|
|||
|
|
pageSize,
|
|||
|
|
totalPages: Math.ceil(total / pageSize)
|
|||
|
|
},
|
|||
|
|
timestamp: Date.now()
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Mock服务函数
|
|||
|
|
export const mockService = {
|
|||
|
|
// 模拟延迟
|
|||
|
|
delay: (ms = 500) => new Promise(resolve => setTimeout(resolve, ms)),
|
|||
|
|
|
|||
|
|
// 模拟登录
|
|||
|
|
mockLogin: async (username, password) => {
|
|||
|
|
await mockService.delay(1000)
|
|||
|
|
|
|||
|
|
if (username === 'admin' && password === '123456') {
|
|||
|
|
return mockResponses.success({
|
|||
|
|
token: 'mock-token-123456',
|
|||
|
|
refreshToken: 'mock-refresh-token-123456',
|
|||
|
|
userInfo: mockUsers[0]
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return mockResponses.error(1001, '用户名或密码错误')
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 模拟获取首页数据
|
|||
|
|
mockHomeData: async () => {
|
|||
|
|
await mockService.delay(800)
|
|||
|
|
return mockResponses.success({
|
|||
|
|
banners: mockBanners,
|
|||
|
|
travelPlans: mockTravelPlans,
|
|||
|
|
animals: mockAnimals,
|
|||
|
|
flowers: mockFlowers,
|
|||
|
|
notices: mockNotices
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 模拟获取列表数据
|
|||
|
|
mockList: async (type, page = 1, pageSize = 10) => {
|
|||
|
|
await mockService.delay(600)
|
|||
|
|
|
|||
|
|
const allData = {
|
|||
|
|
travel: mockTravelPlans,
|
|||
|
|
animal: mockAnimals,
|
|||
|
|
flower: mockFlowers,
|
|||
|
|
order: mockOrders
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const data = allData[type] || []
|
|||
|
|
const start = (page - 1) * pageSize
|
|||
|
|
const end = start + pageSize
|
|||
|
|
const paginatedData = data.slice(start, end)
|
|||
|
|
|
|||
|
|
return mockResponses.pagination(paginatedData, data.length, page, pageSize)
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 模拟获取详情
|
|||
|
|
mockDetail: async (type, id) => {
|
|||
|
|
await mockService.delay(500)
|
|||
|
|
|
|||
|
|
const allData = {
|
|||
|
|
travel: mockTravelPlans,
|
|||
|
|
animal: mockAnimals,
|
|||
|
|
flower: mockFlowers,
|
|||
|
|
order: mockOrders
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const data = allData[type] || []
|
|||
|
|
const item = data.find(item => item.id === id || item.id === parseInt(id))
|
|||
|
|
|
|||
|
|
if (item) {
|
|||
|
|
return mockResponses.success(item)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return mockResponses.error(404, '数据不存在')
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 导出所有Mock数据
|
|||
|
|
export default {
|
|||
|
|
mockUsers,
|
|||
|
|
mockBanners,
|
|||
|
|
mockTravelPlans,
|
|||
|
|
mockAnimals,
|
|||
|
|
mockFlowers,
|
|||
|
|
mockOrders,
|
|||
|
|
mockNotices,
|
|||
|
|
mockResponses,
|
|||
|
|
mockService
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 使用示例
|
|||
|
|
/*
|
|||
|
|
// 在开发环境中使用Mock数据
|
|||
|
|
if (process.env.NODE_ENV === 'development') {
|
|||
|
|
// 可以在这里替换真实的API调用
|
|||
|
|
}
|
|||
|
|
*/
|