Files
medical-mall/utils/mockChannelData.uts
2026-05-14 15:28:09 +08:00

206 lines
7.7 KiB
Plaintext

export type ChannelProduct = {
id: string
name: string
shortName: string
image: string
price: number
marketPrice: number
tag: string
}
export type MarketingChannel = {
id: string
title: string
subtitle: string
badge: string
themeColor: string
bgColor: string
routeType: string
layoutType: string
products: ChannelProduct[]
moreProducts: ChannelProduct[]
}
export type SimpleCategoryChannel = {
id: string
title: string
subtitle: string
routeType: string
icon: string
coverImages: string[]
categoryId: string
}
const DEFAULT_CHANNEL_IMAGE = '/static/images/default.png'
function createChannelProduct(
id: string,
name: string,
shortName: string,
price: number,
marketPrice: number,
tag: string
): ChannelProduct {
return {
id,
name,
shortName,
image: DEFAULT_CHANNEL_IMAGE,
price,
marketPrice,
tag
}
}
function cloneProducts(products: ChannelProduct[]): ChannelProduct[] {
const result: ChannelProduct[] = []
for (let i = 0; i < products.length; i++) {
const item = products[i]
result.push({
id: item.id,
name: item.name,
shortName: item.shortName,
image: item.image,
price: item.price,
marketPrice: item.marketPrice,
tag: item.tag
})
}
return result
}
function createMarketingChannel(
id: string,
title: string,
subtitle: string,
badge: string,
themeColor: string,
bgColor: string,
routeType: string,
layoutType: string,
products: ChannelProduct[],
moreProducts: ChannelProduct[]
): MarketingChannel {
return {
id,
title,
subtitle,
badge,
themeColor,
bgColor,
routeType,
layoutType,
products: cloneProducts(products),
moreProducts: cloneProducts(moreProducts)
}
}
function buildRecommendMarketingChannels(): MarketingChannel[] {
const subsidySeed: ChannelProduct[] = [
createChannelProduct('subsidy-1', '智能学习平板', '学习平板', 295, 499, '补贴价'),
createChannelProduct('subsidy-2', '遥控赛车玩具', '遥控车', 174.3, 299, '补贴价')
]
const subsidyMore: ChannelProduct[] = [
createChannelProduct('subsidy-3', '家用护眼台灯', '护眼台灯', 129, 199, '直降'),
createChannelProduct('subsidy-4', '儿童积木礼盒', '积木礼盒', 89, 139, '补贴价'),
createChannelProduct('subsidy-5', '便携筋膜枪', '筋膜枪', 239, 399, '官方补贴'),
createChannelProduct('subsidy-6', '智能空气炸锅', '空气炸锅', 269, 459, '限时补贴')
]
const qualitySeed: ChannelProduct[] = [
createChannelProduct('quality-1', '超市配送日用品', '超市配送', 19.9, 29.9, '实惠'),
createChannelProduct('quality-2', '美食团购套餐', '美食团购', 39.9, 59.9, '团购')
]
const qualityMore: ChannelProduct[] = [
createChannelProduct('quality-3', '健康轻食组合', '轻食组合', 28.8, 39.8, '精选'),
createChannelProduct('quality-4', '家居香氛礼盒', '香氛礼盒', 59, 89, '品质价'),
createChannelProduct('quality-5', '鲜果早餐套餐', '鲜果套餐', 26.8, 36.8, '人气'),
createChannelProduct('quality-6', '净味洗护套装', '洗护套装', 49.9, 69.9, '好评')
]
const cheapSeed: ChannelProduct[] = [
createChannelProduct('cheap-1', '夏季西瓜鲜果', '新鲜西瓜', 9.8, 19.9, '9.9包邮'),
createChannelProduct('cheap-2', '厨房小工具套装', '厨房工具', 10.8, 18.8, '特价')
]
const cheapMore: ChannelProduct[] = [
createChannelProduct('cheap-3', '旅行压缩毛巾', '压缩毛巾', 9.9, 15.9, '包邮'),
createChannelProduct('cheap-4', '桌面收纳盒', '收纳盒', 9.9, 16.8, '限量'),
createChannelProduct('cheap-5', '抹布海绵组合', '清洁抹布', 8.8, 12.8, '超省'),
createChannelProduct('cheap-6', '便携数据线', '数据线', 9.9, 14.9, '补贴')
]
const liveSeed: ChannelProduct[] = [
createChannelProduct('live-1', '智能风扇套装', '智能风扇', 1099, 1399, '直播价'),
createChannelProduct('live-2', '智能门锁套装', '智能门锁', 2699, 3299, '直播价')
]
const liveMore: ChannelProduct[] = [
createChannelProduct('live-3', '无线吸尘器', '无线吸尘器', 699, 899, '直播间'),
createChannelProduct('live-4', '按摩椅轻享版', '按摩椅', 1999, 2599, '限时抢'),
createChannelProduct('live-5', '智能净水器', '净水器', 1599, 1999, '主播推荐'),
createChannelProduct('live-6', '轻薄投影仪', '投影仪', 1399, 1799, '专享价')
]
return [
createMarketingChannel('subsidy', '百亿补贴', '大牌直降补贴价', '国家补贴', '#e02e24', '#fff6f4', 'subsidy', 'recommend-large', subsidySeed, subsidyMore),
createMarketingChannel('quality-life', '品质生活', '本地好物精选', '品质严选', '#16a34a', '#f3fff7', 'quality', 'recommend-large', qualitySeed, qualityMore),
createMarketingChannel('cheap-mail', '9.9包邮', '低价好物随心买', '低价包邮', '#ff4d00', '#fff8ed', 'cheap', 'recommend-large', cheapSeed, cheapMore),
createMarketingChannel('live-low-price', '直播低价', '直播间好价精选', '直播好价', '#e11d48', '#fff1f5', 'live', 'recommend-large', liveSeed, liveMore)
]
}
function buildCategoryRankChannel(categoryId: string): MarketingChannel {
const seedProducts: ChannelProduct[] = [
createChannelProduct(categoryId + '-rank-1', '热销榜单精选好物', '榜单好物', 69.9, 99.9, '热销'),
createChannelProduct(categoryId + '-rank-2', '高回购口碑单品', '口碑单品', 49.9, 79.9, '回购')
]
const moreProducts: ChannelProduct[] = [
createChannelProduct(categoryId + '-rank-3', '每日热度上升款', '热度上升', 59.9, 89.9, '榜单'),
createChannelProduct(categoryId + '-rank-4', '用户收藏热门款', '收藏热门', 45.9, 69.9, '精选'),
createChannelProduct(categoryId + '-rank-5', '爆款囤货套装', '囤货套装', 79.9, 109.9, '热卖'),
createChannelProduct(categoryId + '-rank-6', '销量冠军单品', '销量冠军', 99.9, 139.9, '冠军')
]
return createMarketingChannel('rank', '排行榜', '每日更新', '热销榜单', '#e02e24', '#fff6f4', 'rank', 'detail-list', seedProducts, moreProducts)
}
function buildCategoryQualityChannel(categoryId: string): MarketingChannel {
const seedProducts: ChannelProduct[] = [
createChannelProduct(categoryId + '-quality-1', '品质优选套装组合', '精选套装', 88, 129, '严选'),
createChannelProduct(categoryId + '-quality-2', '高分口碑精品单品', '高分精品', 56, 89, '口碑')
]
const moreProducts: ChannelProduct[] = [
createChannelProduct(categoryId + '-quality-3', '质价比家用好物', '家用好物', 66, 99, '品质'),
createChannelProduct(categoryId + '-quality-4', '长期复购推荐款', '复购推荐', 45, 69, '精选'),
createChannelProduct(categoryId + '-quality-5', '舒适实用组合装', '组合装', 105, 149, '推荐'),
createChannelProduct(categoryId + '-quality-6', '高满意度口碑款', '高满意度', 39.9, 59.9, '好评')
]
return createMarketingChannel('quality', '品质优选', '精选好货', '品质严选', '#16a34a', '#f3fff7', 'quality', 'detail-list', seedProducts, moreProducts)
}
export function getRecommendMarketingChannels(): MarketingChannel[] {
return buildRecommendMarketingChannels()
}
export function getChannelDetailData(channelId: string, routeType: string, categoryId: string): MarketingChannel | null {
if (categoryId === 'recommend') {
const channels = buildRecommendMarketingChannels()
for (let i = 0; i < channels.length; i++) {
const channel = channels[i]
if (channel.id === channelId || channel.routeType === routeType) {
return channel
}
}
if (channels.length > 0) {
return channels[0]
}
return null
}
if (routeType === 'rank') {
return buildCategoryRankChannel(categoryId)
}
if (routeType === 'quality') {
return buildCategoryQualityChannel(categoryId)
}
return buildCategoryRankChannel(categoryId)
}