parent
d8c3733820
commit
c4b9d8c8bc
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-20 16:36:08
|
||||
* @LastEditTime: 2021-10-20 16:55:28
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/api/comm/index.js
|
||||
*/
|
||||
import httpService from "@/request"
|
||||
|
||||
// 获取顶部选择项
|
||||
export function getOneTime(params) {
|
||||
let obj = Object.assign({action: 'getTime', sType: 0}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
||||
|
||||
// 获取顶部选择项
|
||||
export function getTwoTime(params) {
|
||||
let obj = Object.assign({action: 'getTime',sType: 1}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-20 16:17:39
|
||||
* @LastEditTime: 2021-10-21 12:04:50
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/api/home/index.js
|
||||
*/
|
||||
import httpService from "@/request"
|
||||
|
||||
// 首页_实时事件
|
||||
export function getEventsListH(params) {
|
||||
let obj = Object.assign({action: 'getEventsListH',sQuDao: '新车上市', sType: 'Home', iTimeType: 0}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
||||
|
||||
// 首页_传播重点阵地
|
||||
export function getWebsiteHome0528(params) {
|
||||
let obj = Object.assign({action: 'getWebsiteHome0528',sType: 'Home'}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
||||
|
||||
// 首页_全网传播数量
|
||||
export function getHomeCount0528(params) {
|
||||
let obj = Object.assign({action: 'getHomeCount0528',sType: 'Home'}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
||||
|
||||
// 首页_热销排行
|
||||
export function getCheZhuBrandCount0528(params) {
|
||||
let obj = Object.assign({action: 'getCheZhuBrandCount0528',sType: 'Home'}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
||||
|
||||
// 首页_热门词云
|
||||
export function getHotWordHome(params) {
|
||||
let obj = Object.assign({action: 'getHotWordHome',sType: 'Home'}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
||||
|
||||
// 首页_正面词云
|
||||
export function getPositive0528(params) {
|
||||
let obj = Object.assign({action: 'getPositive0528',sType: 'Home'}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
||||
|
||||
// 首页_负面词云
|
||||
export function getNegative0528(params) {
|
||||
let obj = Object.assign({action: 'getNegative0528',sType: 'Home'}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
||||
// 首页_尾翼洞察
|
||||
export function getWeiYiCountHome0528(params) {
|
||||
let obj = Object.assign({action: 'getWeiYiCountHome0528',sType: 'Home'}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'get',
|
||||
params: obj
|
||||
})
|
||||
}
|
@ -0,0 +1,347 @@
|
||||
.zh-load-mark {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 9999;
|
||||
}
|
||||
.zh-load-box {
|
||||
position: fixed;
|
||||
z-index: 3;
|
||||
width: 7.6em;
|
||||
min-height: 7.6em;
|
||||
top: 180px;
|
||||
left: 50%;
|
||||
margin-left: -3.8em;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
text-align: center;
|
||||
border-radius: 5px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.zh-load-content {
|
||||
margin-top: 64%;
|
||||
font-size: 14px;
|
||||
}
|
||||
.zh-loading {
|
||||
position: absolute;
|
||||
width: 0px;
|
||||
left: 50%;
|
||||
top: 38%;
|
||||
}
|
||||
.loading_leaf {
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
opacity: 0.25;
|
||||
}
|
||||
.loading_leaf:before {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
width: 9.14px;
|
||||
height: 3.08px;
|
||||
background: #d1d1d5;
|
||||
box-shadow: rgba(0, 0, 0, 0.0980392) 0px 0px 1px;
|
||||
border-radius: 1px;
|
||||
-webkit-transform-origin: left 50% 0px;
|
||||
transform-origin: left 50% 0px;
|
||||
}
|
||||
.loading_leaf_0 {
|
||||
-webkit-animation: opacity-0 1.25s linear infinite;
|
||||
animation: opacity-0 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_0:before {
|
||||
-webkit-transform: rotate(0deg) translate(7.92px, 0px);
|
||||
transform: rotate(0deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_1 {
|
||||
-webkit-animation: opacity-1 1.25s linear infinite;
|
||||
animation: opacity-1 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_1:before {
|
||||
-webkit-transform: rotate(30deg) translate(7.92px, 0px);
|
||||
transform: rotate(30deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_2 {
|
||||
-webkit-animation: opacity-2 1.25s linear infinite;
|
||||
animation: opacity-2 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_2:before {
|
||||
-webkit-transform: rotate(60deg) translate(7.92px, 0px);
|
||||
transform: rotate(60deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_3 {
|
||||
-webkit-animation: opacity-3 1.25s linear infinite;
|
||||
animation: opacity-3 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_3:before {
|
||||
-webkit-transform: rotate(90deg) translate(7.92px, 0px);
|
||||
transform: rotate(90deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_4 {
|
||||
-webkit-animation: opacity-4 1.25s linear infinite;
|
||||
animation: opacity-4 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_4:before {
|
||||
-webkit-transform: rotate(120deg) translate(7.92px, 0px);
|
||||
transform: rotate(120deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_5 {
|
||||
-webkit-animation: opacity-5 1.25s linear infinite;
|
||||
animation: opacity-5 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_5:before {
|
||||
-webkit-transform: rotate(150deg) translate(7.92px, 0px);
|
||||
transform: rotate(150deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_6 {
|
||||
-webkit-animation: opacity-6 1.25s linear infinite;
|
||||
animation: opacity-6 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_6:before {
|
||||
-webkit-transform: rotate(180deg) translate(7.92px, 0px);
|
||||
transform: rotate(180deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_7 {
|
||||
-webkit-animation: opacity-7 1.25s linear infinite;
|
||||
animation: opacity-7 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_7:before {
|
||||
-webkit-transform: rotate(210deg) translate(7.92px, 0px);
|
||||
transform: rotate(210deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_8 {
|
||||
-webkit-animation: opacity-8 1.25s linear infinite;
|
||||
animation: opacity-8 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_8:before {
|
||||
-webkit-transform: rotate(240deg) translate(7.92px, 0px);
|
||||
transform: rotate(240deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_9 {
|
||||
-webkit-animation: opacity-9 1.25s linear infinite;
|
||||
animation: opacity-9 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_9:before {
|
||||
-webkit-transform: rotate(270deg) translate(7.92px, 0px);
|
||||
transform: rotate(270deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_10 {
|
||||
-webkit-animation: opacity-10 1.25s linear infinite;
|
||||
animation: opacity-10 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_10:before {
|
||||
-webkit-transform: rotate(300deg) translate(7.92px, 0px);
|
||||
transform: rotate(300deg) translate(7.92px, 0px);
|
||||
}
|
||||
.loading_leaf_11 {
|
||||
-webkit-animation: opacity-11 1.25s linear infinite;
|
||||
animation: opacity-11 1.25s linear infinite;
|
||||
}
|
||||
.loading_leaf_11:before {
|
||||
-webkit-transform: rotate(330deg) translate(7.92px, 0px);
|
||||
transform: rotate(330deg) translate(7.92px, 0px);
|
||||
}
|
||||
@-webkit-keyframes opacity-0 {
|
||||
0% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
0.01% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
0.02% {
|
||||
opacity: 1;
|
||||
}
|
||||
60.01% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-1 {
|
||||
0% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
8.34333% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
8.35333% {
|
||||
opacity: 1;
|
||||
}
|
||||
68.3433% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-2 {
|
||||
0% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
16.6767% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
16.6867% {
|
||||
opacity: 1;
|
||||
}
|
||||
76.6767% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-3 {
|
||||
0% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
25.01% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
25.02% {
|
||||
opacity: 1;
|
||||
}
|
||||
85.01% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-4 {
|
||||
0% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
33.3433% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
33.3533% {
|
||||
opacity: 1;
|
||||
}
|
||||
93.3433% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-5 {
|
||||
0% {
|
||||
opacity: 0.270958333333333;
|
||||
}
|
||||
41.6767% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
41.6867% {
|
||||
opacity: 1;
|
||||
}
|
||||
1.67667% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.270958333333333;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-6 {
|
||||
0% {
|
||||
opacity: 0.375125;
|
||||
}
|
||||
50.01% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
50.02% {
|
||||
opacity: 1;
|
||||
}
|
||||
10.01% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.375125;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-7 {
|
||||
0% {
|
||||
opacity: 0.479291666666667;
|
||||
}
|
||||
58.3433% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
58.3533% {
|
||||
opacity: 1;
|
||||
}
|
||||
18.3433% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.479291666666667;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-8 {
|
||||
0% {
|
||||
opacity: 0.583458333333333;
|
||||
}
|
||||
66.6767% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
66.6867% {
|
||||
opacity: 1;
|
||||
}
|
||||
26.6767% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.583458333333333;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-9 {
|
||||
0% {
|
||||
opacity: 0.687625;
|
||||
}
|
||||
75.01% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
75.02% {
|
||||
opacity: 1;
|
||||
}
|
||||
35.01% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.687625;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-10 {
|
||||
0% {
|
||||
opacity: 0.791791666666667;
|
||||
}
|
||||
83.3433% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
83.3533% {
|
||||
opacity: 1;
|
||||
}
|
||||
43.3433% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.791791666666667;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes opacity-11 {
|
||||
0% {
|
||||
opacity: 0.895958333333333;
|
||||
}
|
||||
91.6767% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
91.6867% {
|
||||
opacity: 1;
|
||||
}
|
||||
51.6767% {
|
||||
opacity: 0.25;
|
||||
}
|
||||
100% {
|
||||
opacity: 0.895958333333333;
|
||||
}
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-21 13:16:41
|
||||
* @LastEditTime: 2021-10-21 13:16:43
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/components/v-loading/index.js
|
||||
*/
|
||||
/*
|
||||
自定义 loading 组件
|
||||
调用
|
||||
this.$loading('正在加载中...');
|
||||
this.$loading.close();
|
||||
*/
|
||||
let _LOADING = {
|
||||
show: false, // Boolean loading显示状态
|
||||
component: null // Object loading组件
|
||||
};
|
||||
export default {
|
||||
install(Vue) {
|
||||
/*
|
||||
text: String
|
||||
type: String
|
||||
*/
|
||||
Vue.prototype.$loading = function(text='正在加载中...', type) {
|
||||
if (type == 'close') {
|
||||
_LOADING.component.show = _LOADING.show = false;
|
||||
} else {
|
||||
if (_LOADING.show) {
|
||||
return;
|
||||
}
|
||||
let LoadingCompoent = Vue.extend({
|
||||
data: function() {
|
||||
return {
|
||||
show: _LOADING.show
|
||||
}
|
||||
},
|
||||
template: `<div v-show="show" class="zh-load-mark">
|
||||
<div class="zh-load-box">
|
||||
<div class="zh-loading">
|
||||
<div class="loading_leaf loading_leaf_0"></div>
|
||||
<div class="loading_leaf loading_leaf_1"></div>
|
||||
<div class="loading_leaf loading_leaf_2"></div>
|
||||
<div class="loading_leaf loading_leaf_3"></div>
|
||||
<div class="loading_leaf loading_leaf_4"></div>
|
||||
<div class="loading_leaf loading_leaf_5"></div>
|
||||
<div class="loading_leaf loading_leaf_6"></div>
|
||||
<div class="loading_leaf loading_leaf_7"></div>
|
||||
<div class="loading_leaf loading_leaf_8"></div>
|
||||
<div class="loading_leaf loading_leaf_9"></div>
|
||||
<div class="loading_leaf loading_leaf_10"></div>
|
||||
<div class="loading_leaf loading_leaf_11"></div>
|
||||
</div>
|
||||
<div class="zh-load-content">${text}</div>
|
||||
</div>
|
||||
</div>`
|
||||
});
|
||||
_LOADING.component = new LoadingCompoent();
|
||||
let element = _LOADING.component.$mount().$el;
|
||||
document.body.appendChild(element);
|
||||
_LOADING.component.show = _LOADING.show = true;
|
||||
}
|
||||
};
|
||||
// 打开/关闭
|
||||
['open', 'close'].forEach(function(type) {
|
||||
Vue.prototype.$loading[type] = function(text) {
|
||||
return Vue.prototype.$loading(text, type);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -1,15 +1,21 @@
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-12 13:37:50
|
||||
* @LastEditTime: 2021-10-20 16:11:46
|
||||
* @LastEditTime: 2021-10-20 17:23:01
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/store/state.js
|
||||
*/
|
||||
let commTime = {
|
||||
sStartTime: "",
|
||||
sEndTime: "",
|
||||
sTimeType: 20
|
||||
}
|
||||
const state = {
|
||||
$zoom: 1,
|
||||
token: sessionStorage.getItem('token') || "",
|
||||
user: JSON.parse(sessionStorage.getItem('user')) || {},
|
||||
account: JSON.parse(localStorage.getItem('account')) || {}
|
||||
account: JSON.parse(localStorage.getItem('account')) || {},
|
||||
commTime: JSON.parse(sessionStorage.getItem('commTime')) || commTime
|
||||
}
|
||||
export default state;
|
||||
|
@ -0,0 +1,130 @@
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-21 11:36:36
|
||||
* @LastEditTime: 2021-10-21 11:43:38
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/utils/gol/bubbleWord.js
|
||||
*/
|
||||
// 将后台数据转成数组
|
||||
function doWordCloud(data) {
|
||||
let arr1 = [];
|
||||
for (let key in data) {
|
||||
let obj = { name: key, value: data[key] };
|
||||
arr1.push(obj);
|
||||
}
|
||||
return arr1;
|
||||
}
|
||||
// 创建词云的对象
|
||||
function bubbleChart(data = [], format = []) {
|
||||
let [maxValue, temp] = [0, []];
|
||||
data.forEach((item) => {
|
||||
temp.push(item[format[1]]);
|
||||
});
|
||||
maxValue = Math.max.apply(null, temp);
|
||||
// 气泡颜色数组
|
||||
let color = [
|
||||
"#FFB600",
|
||||
"#886CFF",
|
||||
"#0084FF",
|
||||
"#4CB690",
|
||||
"#58B458",
|
||||
"#6C6C6C",
|
||||
"#F56161",
|
||||
"#FC754C",
|
||||
"#5F5EEC",
|
||||
];
|
||||
// 气泡颜色备份
|
||||
let bakeColor = [...color];
|
||||
// 气泡数据
|
||||
let bubbleData = [];
|
||||
// 气泡基础大小
|
||||
let basicSize = 70;
|
||||
// 节点之间的斥力因子,值越大,气泡间距越大
|
||||
let repulsion = 380;
|
||||
// 根据气泡数量配置基础大小和斥力因子(以实际情况进行适当调整,使气泡合理分布)
|
||||
if (data.length >= 5 && data.length < 10) {
|
||||
basicSize = 50;
|
||||
repulsion = 230;
|
||||
}
|
||||
if (data.length >= 10 && data.length < 20) {
|
||||
basicSize = 40;
|
||||
repulsion = 150;
|
||||
} else if (data.length >= 20) {
|
||||
basicSize = 50;
|
||||
repulsion = 65;
|
||||
}
|
||||
// 填充气泡数据数组bubbleData
|
||||
for (let item of data) {
|
||||
// 确保气泡数据条数少于或等于气泡颜色数组大小时,气泡颜色不重复
|
||||
if (!bakeColor.length) bakeColor = [...color];
|
||||
let colorSet = new Set(bakeColor);
|
||||
let curIndex = Math.round(Math.random() * (colorSet.size - 1));
|
||||
let curColor = bakeColor[curIndex];
|
||||
colorSet.delete(curColor);
|
||||
bakeColor = [...colorSet];
|
||||
// 气泡大小设置
|
||||
let size = (item[format[1]] * basicSize * 2) / maxValue;
|
||||
if (size < basicSize) size = basicSize;
|
||||
|
||||
bubbleData.push({
|
||||
name: item[format[0]],
|
||||
value: item[format[1]],
|
||||
symbolSize: size,
|
||||
draggable: true,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: curColor,
|
||||
opacity: 0.8,
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowOffsetY: 0,
|
||||
shadowColor: "rgba(0,0,0,0.3)",
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
return {
|
||||
bubbleData,
|
||||
repulsion,
|
||||
};
|
||||
}
|
||||
|
||||
// 创建词云图
|
||||
export default function createWordCloud(obj) {
|
||||
let words = doWordCloud(obj);
|
||||
let bubble = bubbleChart(words, ['name', 'value']);
|
||||
return {
|
||||
animationEasingUpdate: 'bounceIn',
|
||||
tooltip: {
|
||||
backgroundColor: "#08182F",
|
||||
color: "#fff",
|
||||
borderColor: "#3373CC",
|
||||
textStyle: {
|
||||
color: "#fff", //设置文字颜色
|
||||
},
|
||||
extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;",
|
||||
formatter: function(param) {
|
||||
let data = param.data;
|
||||
return `<span>${data.name}</span><br><span>${data.value}</span>`
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
type: 'graph',
|
||||
layout: 'force',
|
||||
label: {
|
||||
show:true,
|
||||
color:"#FFF",
|
||||
fontSize:12,
|
||||
|
||||
},
|
||||
force: {
|
||||
repulsion: bubble.repulsion,
|
||||
edgeLength: 10
|
||||
},
|
||||
// 是否开启鼠标缩放和平移漫游
|
||||
roam: true,
|
||||
data: bubble.bubbleData
|
||||
}]
|
||||
}
|
||||
}
|
@ -1,45 +1,80 @@
|
||||
<!--
|
||||
* @Author: xw
|
||||
* @Date: 2021-10-09 13:25:49
|
||||
* @LastEditTime: 2021-10-12 10:42:58
|
||||
* @LastEditTime: 2021-10-21 11:45:00
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: 热议图谱
|
||||
* @FilePath: /data-show/src/views/Index/hotDiscussionGraph/index.vue
|
||||
-->
|
||||
<template>
|
||||
<div class="hdg-ouuter">
|
||||
<v-label-div title="热议图谱">
|
||||
<v-tab-group :btns="['热门', '正面', '负面']"></v-tab-group>
|
||||
</v-label-div>
|
||||
<div class="hdg-bd">
|
||||
<v-echarts :opt="opt"></v-echarts>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hdg-ouuter">
|
||||
<v-label-div title="热议图谱">
|
||||
<v-tab-group :btns="['热门', '正面', '负面']" @change="handlerChange"></v-tab-group>
|
||||
</v-label-div>
|
||||
<div class="hdg-bd">
|
||||
<v-echarts :opt="opt"></v-echarts>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import createOpt from "./opt"
|
||||
import createWordCloud from "@/utils/gol/bubbleWord";
|
||||
import { getHotWordHome, getPositive0528, getNegative0528 } from "@/api/home";
|
||||
export default {
|
||||
name: "hot-discussion-graph",
|
||||
data() {
|
||||
return {
|
||||
opt: createOpt()
|
||||
}
|
||||
}
|
||||
name: "hot-discussion-graph",
|
||||
data() {
|
||||
return {
|
||||
opt: {},
|
||||
type: 0,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getData();
|
||||
},
|
||||
methods: {
|
||||
handlerChange(n) {
|
||||
this.type = n;
|
||||
this.getData();
|
||||
},
|
||||
// 获取后台数据
|
||||
getData() {
|
||||
switch (this.type) {
|
||||
case 0:
|
||||
getHotWordHome(this.getCommTime).then((res) => {
|
||||
let data = res.data;
|
||||
this.opt = createWordCloud(data);
|
||||
});
|
||||
break;
|
||||
case 1:
|
||||
getPositive0528(this.getCommTime).then((res) => {
|
||||
let data = res.data;
|
||||
this.opt = createWordCloud(data);
|
||||
});
|
||||
break;
|
||||
case 2:
|
||||
getNegative0528(this.getCommTime).then((res) => {
|
||||
let data = res.data;
|
||||
this.opt = createWordCloud(data);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.hdg-ouuter {
|
||||
width: 460px;
|
||||
height: 312px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-top: 16px;
|
||||
margin-left: 16px;
|
||||
.hdg-bd {
|
||||
width: 100%;
|
||||
height: calc(100% - 48px);
|
||||
}
|
||||
width: 460px;
|
||||
height: 312px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-top: 16px;
|
||||
margin-left: 16px;
|
||||
.hdg-bd {
|
||||
width: 100%;
|
||||
height: calc(100% - 48px);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
@ -1,49 +1,76 @@
|
||||
<!--
|
||||
* @Author: xw
|
||||
* @Date: 2021-10-08 16:37:30
|
||||
* @LastEditTime: 2021-10-12 10:43:12
|
||||
* @LastEditTime: 2021-10-20 17:55:49
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: 传播重点阵地
|
||||
* @FilePath: /data-show/src/views/Index/key-communication-positions/index.vue
|
||||
-->
|
||||
<template>
|
||||
<div class="kcp-outter">
|
||||
<v-label-div title="传播重点阵地"></v-label-div>
|
||||
<div class="kcp-inner">
|
||||
<div class="d1">
|
||||
<v-ranking :num="1" label="懂车帝" val="594614" :lineShow="false"></v-ranking>
|
||||
<v-ranking :num="2" label="今日头条" val="594614"></v-ranking>
|
||||
<v-ranking :num="3" label="汽车之家" val="594614"></v-ranking>
|
||||
<v-ranking :num="4" label="抖音" val="594614"></v-ranking>
|
||||
<v-ranking :num="5" label="新浪微博" val="594614"></v-ranking>
|
||||
</div>
|
||||
<div class="d1" style="margin-left: 14px">
|
||||
<v-ranking :num="6" label="懂车帝" val="594614" :lineShow="false"></v-ranking>
|
||||
<v-ranking :num="7" label="今日头条" val="594614"></v-ranking>
|
||||
<v-ranking :num="8" label="汽车之家" val="594614"></v-ranking>
|
||||
<v-ranking :num="9" label="抖音" val="594614"></v-ranking>
|
||||
<v-ranking :num="10" label="新浪微博" val="594614"></v-ranking>
|
||||
</div>
|
||||
<div class="kcp-outter">
|
||||
<v-label-div title="传播重点阵地"></v-label-div>
|
||||
<div class="kcp-inner">
|
||||
<div class="d1">
|
||||
<v-ranking v-for="(item,index) in d1" :key="index" :lineShow="index === 0 ? false : true" :num="index + 1" :label="item.label" :val="item.val"></v-ranking>
|
||||
</div>
|
||||
<div class="d1" style="margin-left: 14px">
|
||||
<v-ranking v-for="(item,index) in d2" :key="index" :lineShow="index === 0 ? false : true" :num="index + 1" :label="item.label" :val="item.val"></v-ranking>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getWebsiteHome0528 } from "@/api/home";
|
||||
export default {
|
||||
name: "key-communication-positions",
|
||||
name: "key-communication-positions",
|
||||
data() {
|
||||
return {
|
||||
d1: [],
|
||||
d2: [],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getData();
|
||||
},
|
||||
methods: {
|
||||
// 将数组分成几份
|
||||
group(array, subGroupLength) {
|
||||
let index = 0;
|
||||
let newArray = [];
|
||||
while (index < array.length) {
|
||||
newArray.push(array.slice(index, (index += subGroupLength)));
|
||||
}
|
||||
return newArray;
|
||||
},
|
||||
// 获取数据
|
||||
getData() {
|
||||
getWebsiteHome0528(this.getCommTime).then((res) => {
|
||||
let data = res.data;
|
||||
let vals = [];
|
||||
for (let key in data) {
|
||||
let obj = { label: key, val: data[key] };
|
||||
vals.push(obj);
|
||||
}
|
||||
let groupedArray = this.group(vals, 5);
|
||||
this.d1 = groupedArray[0];
|
||||
this.d2 = groupedArray[1];
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.kcp-outter {
|
||||
width: 460px;
|
||||
height: 316px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-top: 16px;
|
||||
width: 460px;
|
||||
height: 316px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.kcp-inner {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
padding: 0 16px;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
padding: 0 16px;
|
||||
}
|
||||
</style>
|
||||
|
@ -1,65 +1,83 @@
|
||||
<!--
|
||||
* @Author: xw
|
||||
* @Date: 2021-10-08 18:58:00
|
||||
* @LastEditTime: 2021-10-12 10:43:37
|
||||
* @LastEditTime: 2021-10-20 18:52:14
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: 热销排行
|
||||
* @FilePath: /data-show/src/views/Index/salesRank/index.vue
|
||||
-->
|
||||
<template>
|
||||
<div class="sr-outter">
|
||||
<v-label-div title="热销排行">
|
||||
<div>
|
||||
<v-tab-group :btns="['品牌', '车型']"></v-tab-group>
|
||||
<a-select
|
||||
default-value="lucy"
|
||||
style="width: 80px;margin-left: 16px"
|
||||
@change="handleChange"
|
||||
>
|
||||
<a-select-option value="jack"> Jack </a-select-option>
|
||||
<a-select-option value="lucy"> Lucy </a-select-option>
|
||||
<a-select-option value="disabled" disabled>
|
||||
Disabled
|
||||
</a-select-option>
|
||||
<a-select-option value="Yiminghe"> yiminghe </a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
</v-label-div>
|
||||
<div class="sr-bd">
|
||||
<v-echarts :opt="opt"></v-echarts>
|
||||
<v-pagination :style="{position: 'absolute', right: '2px', bottom: '11px'}"></v-pagination>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sr-outter">
|
||||
<v-label-div title="热销排行">
|
||||
<div>
|
||||
<v-tab-group :btns="['品牌', '车型']" @change="handlerTabChange"></v-tab-group>
|
||||
<a-select v-model="form.sTimeType" style="width: 80px;margin-left: 16px">
|
||||
<a-select-option v-for="item in selArr" :key="item.key" :value="item.key"> {{item.value}} </a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
</v-label-div>
|
||||
<div class="sr-bd">
|
||||
<v-echarts :opt="opt"></v-echarts>
|
||||
<v-pagination :style="{position: 'absolute', right: '2px', bottom: '11px'}"></v-pagination>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import createOpt from "./opt"
|
||||
import createOpt from "./opt";
|
||||
import {getOneTime} from "@/api/comm"
|
||||
import {getCheZhuBrandCount0528} from "@/api/home"
|
||||
export default {
|
||||
name: "sales-rank",
|
||||
data() {
|
||||
return {
|
||||
opt: createOpt(["奥迪", "宝马", "奔驰", "吉利", "江淮"],[120, 200, 150, 80, 70])
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleChange(val) {
|
||||
console.log(val)
|
||||
}
|
||||
}
|
||||
name: "sales-rank",
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
sQueryType: 1,
|
||||
sTimeType: 34,
|
||||
sType: 'Home'
|
||||
},
|
||||
selArr: [],
|
||||
opt: createOpt(
|
||||
["奥迪", "宝马", "奔驰", "吉利", "江淮"],
|
||||
[120, 200, 150, 80, 70]
|
||||
),
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getSelect();
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
handlerTabChange(n) {
|
||||
this.form.sQueryType = n === 0 ? 1 : 2
|
||||
},
|
||||
// 获取选择时间的数据
|
||||
getSelect() {
|
||||
getOneTime().then(res => {
|
||||
this.selArr = res.data
|
||||
})
|
||||
},
|
||||
// 获取数据
|
||||
getData() {
|
||||
let obj = Object.assign({}, this.getCommTime, this.form)
|
||||
getCheZhuBrandCount0528(obj).then(res => {
|
||||
console.log(res)
|
||||
})
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.sr-outter {
|
||||
width: 460px;
|
||||
height: 312px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-left: 16px;
|
||||
width: 460px;
|
||||
height: 312px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-left: 16px;
|
||||
}
|
||||
.sr-bd {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: calc(100% - 48px);
|
||||
|
||||
}
|
||||
</style>
|
||||
|
Loading…
Reference in new issue