You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
223 lines
4.0 KiB
223 lines
4.0 KiB
/*
|
|
* Copyright [2022] [YangLiu of copyright http://www.maxkey.top]
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
|
|
import { format } from 'date-fns';
|
|
import * as Mock from 'mockjs';
|
|
|
|
// region: mock data
|
|
|
|
const visitData: any[] = [];
|
|
const beginDay = new Date().getTime();
|
|
|
|
const fakeY = [7, 5, 4, 2, 4, 7, 5, 6, 5, 9, 6, 3, 1, 5, 3, 6, 5];
|
|
for (let i = 0; i < fakeY.length; i += 1) {
|
|
visitData.push({
|
|
x: format(new Date(beginDay + 1000 * 60 * 60 * 24 * i), 'yyyy-MM-dd'),
|
|
y: fakeY[i]
|
|
});
|
|
}
|
|
|
|
const visitData2: any[] = [];
|
|
const fakeY2 = [1, 6, 4, 8, 3, 7, 2];
|
|
for (let i = 0; i < fakeY2.length; i += 1) {
|
|
visitData2.push({
|
|
x: format(new Date(beginDay + 1000 * 60 * 60 * 24 * i), 'yyyy-MM-dd'),
|
|
y: fakeY2[i]
|
|
});
|
|
}
|
|
|
|
const salesData: any[] = [];
|
|
for (let i = 0; i < 12; i += 1) {
|
|
salesData.push({
|
|
x: `${i + 1}月`,
|
|
y: Math.floor(Math.random() * 1000) + 200
|
|
});
|
|
}
|
|
const searchData: any[] = [];
|
|
for (let i = 0; i < 50; i += 1) {
|
|
searchData.push({
|
|
index: i + 1,
|
|
keyword: `搜索关键词-${i}`,
|
|
count: Math.floor(Math.random() * 1000),
|
|
range: Math.floor(Math.random() * 100),
|
|
status: Math.floor((Math.random() * 10) % 2)
|
|
});
|
|
}
|
|
const salesTypeData = [
|
|
{
|
|
x: '家用电器',
|
|
y: 4544
|
|
},
|
|
{
|
|
x: '食用酒水',
|
|
y: 3321
|
|
},
|
|
{
|
|
x: '个护健康',
|
|
y: 3113
|
|
},
|
|
{
|
|
x: '服饰箱包',
|
|
y: 2341
|
|
},
|
|
{
|
|
x: '母婴产品',
|
|
y: 1231
|
|
},
|
|
{
|
|
x: '其他',
|
|
y: 1231
|
|
}
|
|
];
|
|
|
|
const salesTypeDataOnline = [
|
|
{
|
|
x: '家用电器',
|
|
y: 244
|
|
},
|
|
{
|
|
x: '食用酒水',
|
|
y: 321
|
|
},
|
|
{
|
|
x: '个护健康',
|
|
y: 311
|
|
},
|
|
{
|
|
x: '服饰箱包',
|
|
y: 41
|
|
},
|
|
{
|
|
x: '母婴产品',
|
|
y: 121
|
|
},
|
|
{
|
|
x: '其他',
|
|
y: 111
|
|
}
|
|
];
|
|
|
|
const salesTypeDataOffline = [
|
|
{
|
|
x: '家用电器',
|
|
y: 99
|
|
},
|
|
{
|
|
x: '个护健康',
|
|
y: 188
|
|
},
|
|
{
|
|
x: '服饰箱包',
|
|
y: 344
|
|
},
|
|
{
|
|
x: '母婴产品',
|
|
y: 255
|
|
},
|
|
{
|
|
x: '其他',
|
|
y: 65
|
|
}
|
|
];
|
|
|
|
const offlineData: any[] = [];
|
|
for (let i = 0; i < 10; i += 1) {
|
|
offlineData.push({
|
|
name: `门店${i}`,
|
|
cvr: Math.ceil(Math.random() * 9) / 10
|
|
});
|
|
}
|
|
const offlineChartData: any[] = [];
|
|
for (let i = 0; i < 20; i += 1) {
|
|
offlineChartData.push({
|
|
time: new Date().getTime() + 1000 * 60 * 30 * i,
|
|
y1: Math.floor(Math.random() * 100) + 10,
|
|
y2: Math.floor(Math.random() * 100) + 10
|
|
});
|
|
}
|
|
|
|
const radarOriginData = [
|
|
{
|
|
name: '个人',
|
|
ref: 10,
|
|
koubei: 8,
|
|
output: 4,
|
|
contribute: 5,
|
|
hot: 7
|
|
},
|
|
{
|
|
name: '团队',
|
|
ref: 3,
|
|
koubei: 9,
|
|
output: 6,
|
|
contribute: 3,
|
|
hot: 1
|
|
},
|
|
{
|
|
name: '部门',
|
|
ref: 4,
|
|
koubei: 1,
|
|
output: 6,
|
|
contribute: 5,
|
|
hot: 7
|
|
}
|
|
];
|
|
|
|
//
|
|
const radarData: any[] = [];
|
|
const radarTitleMap: any = {
|
|
ref: '引用',
|
|
koubei: '口碑',
|
|
output: '产量',
|
|
contribute: '贡献',
|
|
hot: '热度'
|
|
};
|
|
radarOriginData.forEach((item: any) => {
|
|
Object.keys(item).forEach(key => {
|
|
if (key !== 'name') {
|
|
radarData.push({
|
|
name: item.name,
|
|
label: radarTitleMap[key],
|
|
value: item[key]
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
// endregion
|
|
|
|
export const CHARTS = {
|
|
'/chart': JSON.parse(
|
|
JSON.stringify({
|
|
visitData,
|
|
visitData2,
|
|
salesData,
|
|
searchData,
|
|
offlineData,
|
|
offlineChartData,
|
|
salesTypeData,
|
|
salesTypeDataOnline,
|
|
salesTypeDataOffline,
|
|
radarData
|
|
})
|
|
),
|
|
'/chart/visit': JSON.parse(JSON.stringify(visitData)),
|
|
'/chart/tags': Mock.mock({
|
|
'list|100': [{ name: '@city', 'value|1-100': 150 }]
|
|
})
|
|
};
|