109 lines
3.3 KiB
TypeScript
109 lines
3.3 KiB
TypeScript
import Mock from 'mockjs';
|
|
import setupMock, { successResponseWrap } from '@/utils/setup-mock';
|
|
import { PostData } from '@/types/global';
|
|
|
|
setupMock({
|
|
setup() {
|
|
Mock.mock(
|
|
new RegExp('/api/public-opinion-analysis'),
|
|
(params: PostData) => {
|
|
const { quota = 'visitors' } = JSON.parse(params.body);
|
|
if (['visitors', 'comment'].includes(quota)) {
|
|
const year = new Date().getFullYear();
|
|
const getLineData = (name: number) => {
|
|
return new Array(12).fill(0).map((_item, index) => ({
|
|
x: `${index + 1}月`,
|
|
y: Mock.Random.natural(0, 100),
|
|
name: String(name),
|
|
}));
|
|
};
|
|
return successResponseWrap({
|
|
count: 5670,
|
|
growth: 206.32,
|
|
chartData: [...getLineData(year), ...getLineData(year - 1)],
|
|
});
|
|
}
|
|
if (['published'].includes(quota)) {
|
|
const year = new Date().getFullYear();
|
|
const getLineData = (name: number) => {
|
|
return new Array(12).fill(0).map((_item, index) => ({
|
|
x: `${index + 1}日`,
|
|
y: Mock.Random.natural(20, 100),
|
|
name: String(name),
|
|
}));
|
|
};
|
|
return successResponseWrap({
|
|
count: 5670,
|
|
growth: 206.32,
|
|
chartData: [...getLineData(year)],
|
|
});
|
|
}
|
|
return successResponseWrap({
|
|
count: 5670,
|
|
growth: 206.32,
|
|
chartData: [
|
|
// itemStyle for demo
|
|
{ name: '文本类', value: 25, itemStyle: { color: '#8D4EDA' } },
|
|
{ name: '图文类', value: 35, itemStyle: { color: '#165DFF' } },
|
|
{ name: '视频类', value: 40, itemStyle: { color: '#00B2FF' } },
|
|
],
|
|
});
|
|
},
|
|
);
|
|
|
|
Mock.mock(new RegExp('/api/content-period-analysis'), () => {
|
|
const getLineData = (name: string) => {
|
|
return {
|
|
name,
|
|
value: new Array(12).fill(0).map(() => Mock.Random.natural(30, 90)),
|
|
};
|
|
};
|
|
return successResponseWrap({
|
|
xAxis: new Array(12).fill(0).map((_item, index) => `${index * 2}:00`),
|
|
data: [
|
|
getLineData('纯文本'),
|
|
getLineData('图文类'),
|
|
getLineData('视频类'),
|
|
],
|
|
});
|
|
});
|
|
|
|
Mock.mock(new RegExp('/api/content-publish'), () => {
|
|
const generateLineData = (name: string) => {
|
|
const result = {
|
|
name,
|
|
x: [] as string[],
|
|
y: [] as number[],
|
|
};
|
|
new Array(12).fill(0).forEach((_item, index) => {
|
|
result.x.push(`${index * 2}:00`);
|
|
result.y.push(Mock.Random.natural(1000, 3000));
|
|
});
|
|
return result;
|
|
};
|
|
return successResponseWrap([
|
|
generateLineData('纯文本'),
|
|
generateLineData('图文类'),
|
|
generateLineData('视频类'),
|
|
]);
|
|
});
|
|
|
|
Mock.mock(new RegExp('/api/popular-author/list'), () => {
|
|
const generateData = () => {
|
|
const list = new Array(7).fill(0).map((_item, index) => ({
|
|
ranking: index + 1,
|
|
author: Mock.mock('@ctitle(5)'),
|
|
contentCount: Mock.mock(/[0-9]{4}/),
|
|
clickCount: Mock.mock(/[0-9]{4}/),
|
|
}));
|
|
return {
|
|
list,
|
|
};
|
|
};
|
|
return successResponseWrap({
|
|
...generateData(),
|
|
});
|
|
});
|
|
},
|
|
});
|