文件
OmniCard/mpuniapp/pages/template/long-list-perf/mock-data.uts

70 行
2.4 KiB
Plaintext

// 列表项数据类型
export type ListItemData = {
id: number,
type: number,
title: string,
desc: string,
author: string,
timestamp: number,
image: string,
images: string[],
gridImages: string[],
rating: number,
videoUrl: string,
videoPoster: string,
playCount: number,
likeCount: number
}
// 预生成4000条数据
function generateData(): ListItemData[] {
const result: ListItemData[] = []
const baseTime = 1705000000000 // 固定基准时间戳
for (let i = 0; i < 4000; i++) {
const type = (i % 5) + 1
const idx = i + 1
// 生成3张图片URL - 使用不同颜色和文字标识
const images: string[] = []
images.push(`https://web-ext-storage.dcloud.net.cn/hello-uni-app-x/long-list-perf/200x150/3498db/white/T${type}-${idx}-A.webp`)
images.push(`https://web-ext-storage.dcloud.net.cn/hello-uni-app-x/long-list-perf/200x150/e74c3c/white/T${type}-${idx}-B.webp`)
images.push(`https://web-ext-storage.dcloud.net.cn/hello-uni-app-x/long-list-perf/200x150/2ecc71/white/T${type}-${idx}-C.webp`)
// 生成9张九宫格图片
const gridImages: string[] = []
const colors = ['e74c3c', 'e67e22', 'f1c40f', '2ecc71', '1abc9c', '3498db', '9b59b6', '34495e', '95a5a6']
for (let k = 0; k < 9; k++) {
gridImages.push(`https://web-ext-storage.dcloud.net.cn/hello-uni-app-x/long-list-perf/120x120/${colors[k]}/white/${idx}-G${k + 1}.webp`)
}
const item: ListItemData = {
id: i,
type: type,
title: `#${idx} ${type==1?'单图':type==2?'三图':type==3?'九宫':type==4?'卡片':'视频'}`,
desc: `第${idx}条数据内容摘要,测试长文本显示效果。这里多加一点文字让它看起来更长一些。`,
author: `User-${idx}`,
timestamp: baseTime - i * 3600000,
image: `https://web-ext-storage.dcloud.net.cn/hello-uni-app-x/long-list-perf/120x120/9b59b6/white/T${type}-${idx}.webp`,
images: images,
gridImages: gridImages,
rating: Math.floor(Math.random() * 5) + 1,
videoUrl: (i%2==1)? '/static/test-video/10second-demo.mp4': 'https://web-ext-storage.dcloud.net.cn/uni-app-x/video/uts-5-16.mp4',
videoPoster: `https://web-ext-storage.dcloud.net.cn/hello-uni-app-x/long-list-perf/400x200/1abc9c/white/Video-${idx}.webp`,
playCount: i * 100 + 500,
likeCount: i * 10 + 50
}
result.push(item)
}
return result
}
let _mockListData: ListItemData[] | null = null
export function generateMockList() {
if (_mockListData == null) {
_mockListData = generateData()
}
return _mockListData!
}