prod
lily.zhang 3 years ago
parent 36eb6ec3be
commit 91292eb101

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-08 08:41:57
* @LastEditTime: 2021-10-26 11:30:46
* @LastEditTime: 2021-10-26 13:03:31
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/App.vue
@ -16,7 +16,6 @@
<script>
import zhCN from "ant-design-vue/lib/locale-provider/zh_CN";
import { createZoom } from "@/utils/rem";
export default {
name: "App",
data() {
@ -27,12 +26,6 @@ export default {
created() {
// this.changeZoom()
},
mounted() {
createZoom(document, window);
window.onresize = function () {
createZoom(document, window);
};
},
methods: {
changeZoom() {
let w = window.screen.width;

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-25 15:38:59
* @LastEditTime: 2021-10-26 08:50:57
* @LastEditTime: 2021-10-26 15:18:57
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/api/BrandInsight/index.js
@ -82,3 +82,73 @@ export function getSexMergeWeiBo(params) {
params: obj
})
}
// 微博洞察-微博声量趋势
export function getCountTime0528(params) {
let obj = Object.assign({action: 'getCountTime0528', sType: 'BrandWeiBo'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'get',
params: obj
})
}
// 论坛传播态势
export function getBbsCountTime(params) {
let obj = Object.assign({action: 'getBbsCountTime', sType: 'BbsBrand'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'get',
params: obj
})
}
// 论坛洞察-全网热议话题方向
export function getHotTopic0528(params) {
let obj = Object.assign({action: 'getHotTopic0528', sType: 'BbsBrand', iBBsType: 1}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'get',
params: obj
})
}
// 论坛洞察-传播TOP车型
export function agetCartypeTop10(params) {
let obj = Object.assign({action: 'getCartypeTop10', sType: 'BbsBrand', iBBsType: 1}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'get',
params: obj
})
}
// 尾翼洞察-热门词云
export function getHotWord(params) {
let obj = Object.assign({action: 'getHotWord', sType: 'BrandWeiYi'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'get',
params: obj
})
}
// 尾翼洞察-传播趋势
export function getWeiYiVolumeTime(params) {
let obj = Object.assign({action: 'getWeiYiVolumeTime', sType: 'BrandWeiYi'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'get',
params: obj
})
}
// 尾翼洞察-重点媒体
export function getWebsite(params) {
let obj = Object.assign({action: 'getWebsite', sType: 'BrandWeiYi'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'get',
params: obj
})
}

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-09 09:19:06
* @LastEditTime: 2021-10-21 16:03:07
* @LastEditTime: 2021-10-26 12:57:04
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/components/v-label-ctx/index.vue
@ -66,7 +66,7 @@ export default {
align-items: center;
border-bottom: 1px solid #0F2A4D;
.d1 {
width: 28px;
width: 42px;
.s1 {
display: block;
width: 100%;

@ -78,6 +78,7 @@ export default {
};
},
created() {
console.log(this.getCommTime)
this.getTime(this.getCommTime)
},
mounted() {
@ -150,8 +151,7 @@ export default {
},
//
getTime(commTime) {
let obj = {sType: commTime.sType}
getOneTime(obj).then(res => {
getOneTime(commTime).then(res => {
this.selDatas = res.data;
if(!this.getCommTime.sTimeType) {
this.sTimeType = this.selDatas[0].key;

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-08 08:41:57
* @LastEditTime: 2021-10-21 13:24:18
* @LastEditTime: 2021-10-26 13:03:47
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/main.js
@ -20,6 +20,7 @@ import compon from "@/lycomponents/index.js";
import mixins from "@/mixins"
import vuescroll from 'vuescroll'
import ops from '@/utils/gol/ops';
import '@/utils/rem'
Vue.use(Antd);
Vue.use(dataV);
Vue.use(selfUi);

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-12 13:37:35
* @LastEditTime: 2021-10-26 10:02:55
* @LastEditTime: 2021-10-26 12:14:55
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/store/mutations.js
@ -31,7 +31,7 @@ const mutations = {
sessionStorage.setItem('commTime', str);
},
setCtime: (state, log) => {
let obj = Object.assign(state.commTime, log);
let obj = Object.assign(state.ctime, log);
state.ctime = obj;
let str = JSON.stringify(obj);
sessionStorage.setItem('ctime', str);

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-15 17:52:59
* @LastEditTime: 2021-10-15 18:14:33
* @LastEditTime: 2021-10-26 15:29:25
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/utils/gol/sideSingleColumn.js
@ -63,6 +63,7 @@ export function createSideSingleColumn(dx=[], ds=[], color='#51bc91') {
color: "#fff",
},
},
inverse: true
},
series: [
{

@ -1,24 +1,23 @@
/*
* @Author: your name
* @Date: 2021-10-26 11:23:45
* @LastEditTime: 2021-10-26 11:28:19
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/utils/rem/index.js
*/
function recalc(docEl) {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
// 这里是假设在750px宽度设计稿的情况下1rem = 100px
// 可以根据实际需要修改
// 1920 响应的最大屏幕
docEl.style.fontSize = (clientWidth / 1920) * 100 + 'px';
// rem等比适配配置文件
// 基准大小
const baseSize = 16
// 设置 rem 函数
function setRem() {
let w = document.documentElement.clientWidth;
// 当前页面宽度相对于 1920宽的缩放比例可根据自己需要修改。
const scale = w / 1920
if (w >= 1920) {
document.documentElement.style.fontSize = baseSize + 'px';
} else if (1500 < w && w < 1920) {
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
} else {
document.documentElement.style.fontSize = baseSize * 1500 / 1920 + 'px';
}
}
export function createZoom(doc, win) {
let docEl = doc.documentElement;
let resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
recalc(docEl)
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function () {
setRem()
}

@ -1,14 +1,14 @@
<!--
* @Author: xw
* @Date: 2021-10-11 18:42:58
* @LastEditTime: 2021-10-25 18:13:46
* @LastEditTime: 2021-10-26 16:09:53
* @LastEditors: Please set LastEditors
* @Description: 品牌数据
* @FilePath: /data-show/src/views/BrandInsight/brandData/index.vue
-->
<template>
<div class="bd-outter">
<div class="bd-outter" v-loading="load">
<v-label-div title="品牌数据"></v-label-div>
<div class="bd-inner">
<div class="bd-o-d1">
@ -49,6 +49,7 @@ export default {
return {
width: 274,
count: 0,
load: false,
form: {
token: "",
sBrand: "",
@ -64,25 +65,42 @@ export default {
created() {
this.form.token = this.getToken;
this.form.sBrand = this.brand;
this.getBrandOverviewCount0528();
this.getAffections();
this.load = true;
Promise.all([this.getBrandOverviewCount0528(), this.getAffections()]).then(() => {
this.load = false;
})
},
methods: {
getBrandOverviewCount0528() {
let obj = Object.assign({}, this.getCommTime, this.form);
getBrandOverviewCount0528(obj).then((res) => {
this.count = res.data.count;
return new Promise((resolve, reject) => {
let obj = Object.assign({}, this.getCommTime, this.form);
getBrandOverviewCount0528(obj)
.then((res) => {
this.count = res.data.count;
resolve(true);
})
.catch(() => {
reject(false);
});
});
},
getAffections() {
let obj = Object.assign({}, this.getCommTime, this.form);
getAffections(obj).then((res) => {
let data = res.data || {};
this.affObj.a = data["正面"] || 0;
this.affObj.b = data["中性"] || 0;
this.affObj.c = data["负面"] || 0;
this.affObj.z =
this.affObj.a * 1 + this.affObj.b * 1 + this.affObj.c * 1;
return new Promise((resolve, reject) => {
let obj = Object.assign({}, this.getCommTime, this.form);
getAffections(obj).then((res) => {
let data = res.data || {};
this.affObj.a = data["正面"] || 0;
this.affObj.b = data["中性"] || 0;
this.affObj.c = data["负面"] || 0;
this.affObj.z =
this.affObj.a * 1 +
this.affObj.b * 1 +
this.affObj.c * 1;
resolve(true)
}).catch(() => {
reject(false)
});
});
},
},

@ -1,13 +1,13 @@
<!--
* @Author: xw
* @Date: 2021-10-12 09:03:51
* @LastEditTime: 2021-10-25 17:12:56
* @LastEditTime: 2021-10-26 16:10:27
* @LastEditors: Please set LastEditors
* @Description: 品牌TOP车型
* @FilePath: /data-show/src/views/BrandInsight/brandTop/index.vue
-->
<template>
<div class="bt-outter">
<div class="bt-outter" v-loading="load">
<v-label-div title="品牌TOP车型"></v-label-div>
<div class="bt-inner">
<v-echarts :opt="opt"></v-echarts>
@ -23,6 +23,7 @@ export default {
props: ["brand"],
data() {
return {
load: false,
form: {
token: "",
sBrand: '奥迪',
@ -37,6 +38,7 @@ export default {
},
methods: {
getData() {
this.load = true;
let obj = Object.assign({},this.getCommTime, this.form);
getCartypeTop10(obj).then(res => {
let data = res.data || {};
@ -47,6 +49,7 @@ export default {
ds.push(data[key])
}
this.opt = createOpt(dx,ds);
this.load = false;
})
}
}

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-12 16:33:38
* @LastEditTime: 2021-10-12 16:42:08
* @LastEditTime: 2021-10-26 14:14:26
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/forumCommunicationTrend/index.vue
@ -16,12 +16,40 @@
</template>
<script>
import {getBbsCountTime} from "@/api/BrandInsight"
import createOpt from "./opt"
export default {
name: "forum-communication-trend",
props: ["brand"],
data() {
return {
opt: createOpt()
form: {
sBrand: "",
token: "",
},
opt: {}
}
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.brand;
this.getData();
},
methods: {
getData() {
let obj = Object.assign({}, this.getCommTime, this.form);
getBbsCountTime(obj).then(res => {
let data = res.data || [];
let dx = [];
let ds = [];
data.forEach(ele => {
let key = ele.Time;
let value = ele.value;
dx.push(key);
ds.push(value);
})
this.opt = createOpt(dx, ds)
})
}
}
}

@ -1,13 +1,13 @@
/*
* @Author: your name
* @Date: 2021-10-12 16:40:53
* @LastEditTime: 2021-10-12 16:44:49
* @LastEditTime: 2021-10-26 14:15:19
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/forumCommunicationTrend/opt.js
*/
import * as echarts from "echarts";
export default function createOpt() {
export default function createOpt(dx = [], ds = []) {
return {
grid: {
top: "16px",
@ -38,7 +38,13 @@ export default function createOpt() {
color: "#fff",
},
},
data: ['00:00', '00:40', '00:80', '12:00', '16:00', '20:00', '24:00']
axisLabel : {
formatter: (value) => {
let str = value.substring(10,16)
return str;
}
},
data: dx
},
yAxis: {
type: 'value',
@ -57,7 +63,7 @@ export default function createOpt() {
},
series: [
{
data: [820, 932, 901, 934, 1290, 1330, 1320],
data: ds,
type: 'line',
color: "#51bc91",
areaStyle: {normal: {

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-12 16:48:36
* @LastEditTime: 2021-10-12 17:32:46
* @LastEditTime: 2021-10-26 14:33:20
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/forumHotTopicDirection/index.vue
@ -11,30 +11,60 @@
<v-label-div title="论坛热议话题方向" :showLine="false" :eStyle="{ 'border-style': 'none' }" />
<div class="fhtd-inner">
<div class="d1">
<v-ranking-fhtd :num="1" label="辅助" val="594614" :lineShow="false" ></v-ranking-fhtd>
<v-ranking-fhtd :num="2" label="刹车" val="594614"></v-ranking-fhtd>
<v-ranking-fhtd :num="3" label="舒适度" val="594614"></v-ranking-fhtd>
<v-ranking-fhtd :num="4" label="操控" val="594614"></v-ranking-fhtd>
<v-ranking-fhtd :num="5" label="油耗" val="594614"></v-ranking-fhtd>
<v-ranking-fhtd :num="index + 1" :label="item.key" :val="item.value" :lineShow="index === 0 ?false : true" v-for="(item,index) in d1" :key="index"></v-ranking-fhtd>
</div>
<div class="d2" style="margin-left: 16px">
<v-ranking-fhtd :num="6" label="性价比" val="594614" :lineShow="false"></v-ranking-fhtd>
<v-ranking-fhtd :num="7" label="空间" val="594614"></v-ranking-fhtd>
<v-ranking-fhtd :num="8" label="动力" val="594614"></v-ranking-fhtd>
<v-ranking-fhtd :num="9" label="外观" val="594614"></v-ranking-fhtd>
<v-ranking-fhtd :num="10" label="内饰" val="594614"></v-ranking-fhtd>
<v-ranking-fhtd :num="5 + index + 1" :label="item.key" :val="item.value" :lineShow="index === 0 ?false : true" v-for="(item,index) in d2" :key="index"></v-ranking-fhtd>
</div>
</div>
</div>
</template>
<script>
import vRankingFhtd from "./v-ranking-fhtd"
import { getHotTopic0528 } from "@/api/BrandInsight";
import vRankingFhtd from "./v-ranking-fhtd";
export default {
name: "forumHotTopicDirection",
props: ["brand"],
components: {
"v-ranking-fhtd": vRankingFhtd
}
"v-ranking-fhtd": vRankingFhtd,
},
data() {
return {
form: {
sBrand: "",
token: "",
},
d1: [],
d2: [],
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.brand;
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() {
let obj = Object.assign({}, this.getCommTime, this.form);
getHotTopic0528(obj).then((res) => {
let data = res.data || [];
let groupedArray = this.group(data, 5);
this.d1 = groupedArray[0];
this.d2 = groupedArray[1];
console.log(this.d1)
});
},
},
};
</script>

@ -1,7 +1,7 @@
<!--
* @Author: xw
* @Date: 2021-10-11 17:59:49
* @LastEditTime: 2021-10-26 08:54:31
* @LastEditTime: 2021-10-26 15:21:58
* @LastEditors: Please set LastEditors
* @Description: 品牌洞察
* @FilePath: /data-show/src/views/BrandInsight/index.vue
@ -41,7 +41,7 @@
<div class="bdl-d3-bd">
<weibo-Kol :brand="brand"></weibo-Kol>
<weibo-portraits :brand="brand"></weibo-portraits>
<weibo-volume-trend></weibo-volume-trend>
<weibo-volume-trend :brand="brand"></weibo-volume-trend>
</div>
</div>
<div class="bdl-d4">
@ -49,9 +49,9 @@
<v-btn @click="goRouter('/forumDetails')"></v-btn>
</v-label-div>
<div class="bdl-d4-bd">
<forumCommunicationTrend></forumCommunicationTrend>
<forumHotTopicDirection></forumHotTopicDirection>
<spreadTOPmodels></spreadTOPmodels>
<forumCommunicationTrend :brand="brand"></forumCommunicationTrend>
<forumHotTopicDirection :brand="brand"></forumHotTopicDirection>
<spreadTOPmodels :brand="brand"></spreadTOPmodels>
</div>
</div>
<div class="bdl-d5">
@ -59,9 +59,9 @@
<v-btn @click="goRouter('/tailInsightDetails')"></v-btn>
</v-label-div>
<div class="bdl-d5-bd">
<rearWingPropagationSituation></rearWingPropagationSituation>
<keyMedia></keyMedia>
<popularwordCloud></popularwordCloud>
<rearWingPropagationSituation :brand="brand"></rearWingPropagationSituation>
<keyMedia :brand="brand"></keyMedia>
<popularwordCloud :brand="brand"></popularwordCloud>
</div>
</div>
</div>

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-12 18:43:22
* @LastEditTime: 2021-10-12 19:15:28
* @LastEditTime: 2021-10-26 15:58:29
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/keyMedia/index.vue
@ -13,19 +13,60 @@
<div class="km-inner">
<v-echarts :opt="opt"></v-echarts>
</div>
<v-pagination :style="{position: 'absolute', left: '16px', bottom: '12px'}"></v-pagination>
<v-pagination :data="pdata" :style="{position: 'absolute', left: '2px', bottom: '3px'}" @change="handlerData"></v-pagination>
</div>
</template>
<script>
import { getWebsite } from "@/api/BrandInsight";
import createOpt from "./opt";
export default {
name: "keyMedia",
props: ["brand"],
data() {
return {
opt: createOpt(),
form: {
token: "",
sBrand: "奥迪",
},
opt: {},
pdata: []
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.brand;
this.getData();
},
methods: {
getData() {
let obj = Object.assign({}, this.getCommTime, this.form);
getWebsite(obj).then((res) => {
let data = res.data || {};
let arr = [];
for (let key in data) {
let obj = {
key: key,
value: data[key]
}
arr.push(obj)
}
this.pdata = arr;
});
},
handlerData(val = []) {
let dy = [];
let ds = [];
val.forEach(ele => {
let key = ele.key;
let value = ele.value;
dy.push(key);
ds.push(value);
})
this.opt = createOpt(dy, ds);
}
},
};
</script>

@ -3,13 +3,13 @@
/*
* @Author: your name
* @Date: 2021-10-09 12:38:34
* @LastEditTime: 2021-10-12 19:13:40
* @LastEditTime: 2021-10-26 15:29:46
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/Index/tailInsight/opt.js
*/
import * as echarts from "echarts";
export default function createOpt() {
export default function createOpt(dy = [], ds = []) {
return {
grid: {
left: '4%',
@ -45,7 +45,7 @@ export default function createOpt() {
},
yAxis: {
type: 'category',
data: ['懂车帝', '天眼查', '新浪网', '微信', '今日头条'],
data: dy,
axisTick: {
show: false,
},
@ -55,13 +55,14 @@ export default function createOpt() {
color: "#fff",
},
},
inverse: true
},
series: [
{
name: '2011',
type: 'bar',
barWidth: 24,
data: [500, 1000, 2220, 3000, 4000],
data: ds,
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
offset: 0,
color: '#010B19'

@ -1,14 +1,14 @@
<!--
* @Author: xw
* @Date: 2021-10-12 10:50:44
* @LastEditTime: 2021-10-25 19:07:28
* @LastEditTime: 2021-10-26 16:19:10
* @LastEditors: Please set LastEditors
* @Description: 热门事件列表
* @FilePath: /data-show/src/views/BrandInsight/popularEventsList/index.vue
-->
<template>
<div class="pe-ouuter">
<div class="pe-ouuter" v-loading="load">
<v-label-div title="热门事件列表" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
<div class="pe-inner">
<dv-scroll-board :config="config" :style="{ width: '100%', height: '346px' }" />
@ -23,6 +23,7 @@ export default {
props: ["brand"],
data() {
return {
load: false,
form: {
sBrand: "",
token: "",
@ -47,6 +48,7 @@ export default {
methods: {
getData() {
let obj = Object.assign({}, this.getCommTime, this.form);
this.load = true;
getHotEventsList0528(obj).then((res) => {
let data = res.data || [];
let arr = [];
@ -67,6 +69,7 @@ export default {
header: ["事件列表", "影响力", "时间", "关联车型"],
data: arr,
};
this.load = false;
});
},
},

@ -1,30 +1,53 @@
<!--
* @Author: your name
* @Date: 2021-10-12 19:16:46
* @LastEditTime: 2021-10-12 19:21:08
* @LastEditTime: 2021-10-26 16:13:45
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/popularwordCloud/index.vue
-->
<template>
<div class="pwc-outter">
<v-label-div title="热门词云" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
<div class="pwd-inner">
<v-echarts :opt="opt"></v-echarts>
</div>
<div class="pwc-outter" v-loading="load">
<v-label-div title="热门词云" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
<div class="pwd-inner">
<v-echarts :opt="opt"></v-echarts>
</div>
</div>
</template>
<script>
import createOpt from "./opt"
import { getHotWord } from "@/api/BrandInsight";
import createWordCloud from "@/utils/gol/bubbleWord";
export default {
name: "popularwordCloud",
props: ["brand"],
data() {
return {
opt: createOpt()
}
}
}
load: false,
form: {
token: "",
sBrand: "奥迪",
},
opt: {},
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.brand;
this.getData();
},
methods: {
getData() {
let obj = Object.assign({}, this.getCommTime, this.form);
this.load = true;
getHotWord(obj).then((res) => {
let data = res.data;
this.opt = createWordCloud(data);
this.load = false;
});
},
},
};
</script>
<style lang="less" scoped>

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-12 18:35:53
* @LastEditTime: 2021-10-12 18:42:20
* @LastEditTime: 2021-10-26 16:12:51
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/rearWingPropagationSituation/index.vue
-->
<template>
<div class="rwps-outter">
<div class="rwps-outter" v-loading="load">
<v-label-div title="尾翼传播态势" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
<div class="rwps-inner">
<v-echarts :opt="opt"></v-echarts>
@ -16,13 +16,44 @@
</template>
<script>
import {getWeiYiVolumeTime} from "@/api/BrandInsight";
import createOpt from "./opt"
export default {
name: "rearWingPropagationSituation",
props: ["brand"],
data() {
return {
opt: createOpt()
load: false,
form: {
token: "",
sBrand: "奥迪",
},
opt: {}
}
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.brand;
this.getData();
},
methods: {
getData() {
let obj = Object.assign({}, this.getCommTime, this.form);
this.load = true;
getWeiYiVolumeTime(obj).then(res => {
let data = res.data || [];
let dx = [];
let ds = [];
data.forEach(ele => {
let key = ele.Time;
let value = ele.value;
dx.push(key);
ds.push(value);
})
this.opt = createOpt(dx, ds)
this.load = false;
})
}
}
}
</script>

@ -1,13 +1,13 @@
/*
* @Author: your name
* @Date: 2021-10-12 16:40:53
* @LastEditTime: 2021-10-12 16:44:49
* @LastEditTime: 2021-10-26 15:17:09
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/forumCommunicationTrend/opt.js
*/
import * as echarts from "echarts";
export default function createOpt() {
export default function createOpt(dx=[], ds = []) {
return {
grid: {
top: "16px",
@ -29,6 +29,12 @@ export default function createOpt() {
xAxis: {
type: 'category',
boundaryGap: false,
axisLabel : {
formatter: (value) => {
let str = value.substring(10,16)
return str;
}
},
axisTick: {
show: false,
},
@ -38,7 +44,7 @@ export default function createOpt() {
color: "#fff",
},
},
data: ['00:00', '00:40', '00:80', '12:00', '16:00', '20:00', '24:00']
data: dx
},
yAxis: {
type: 'value',
@ -57,7 +63,7 @@ export default function createOpt() {
},
series: [
{
data: [820, 932, 901, 934, 1290, 1330, 1320],
data: ds,
type: 'line',
color: "#51bc91",
areaStyle: {normal: {

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-12 18:18:20
* @LastEditTime: 2021-10-12 18:29:52
* @LastEditTime: 2021-10-26 16:14:50
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/spreadTOPmodels/index.vue
-->
<template>
<div class="stm-outter">
<div class="stm-outter" v-loading="load">
<v-label-div title="传播TOP车型" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
<div class="stm-inner">
<v-echarts :opt="opt"></v-echarts>
@ -16,13 +16,42 @@
</template>
<script>
import {agetCartypeTop10} from "@/api/BrandInsight"
import createOpt from "./opt"
export default {
name: "spreadTOPmodels",
props: ["brand"],
data() {
return {
opt: createOpt(["奥迪A8", "奥迪A6", "奥迪Q3", "奥迪Q4", "奥迪Q5"],[2200, 1900, 1800, 1600, 1400])
load: false,
form: {
token: "",
sBrand: '奥迪',
},
opt: {}
}
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.brand;
this.getData()
},
methods: {
getData() {
let obj = Object.assign({},this.getCommTime, this.form);
this.load = true;
agetCartypeTop10(obj).then(res => {
let data = res.data || {};
let dx = [];
let ds = [];
for(let key in data) {
dx.push(key);
ds.push(data[key])
}
this.opt = createOpt(dx, ds);
this.load = false;
})
}
}
}
</script>

@ -1,13 +1,13 @@
<!--
* @Author: xw
* @Date: 2021-10-12 09:32:35
* @LastEditTime: 2021-10-25 17:40:52
* @LastEditTime: 2021-10-26 16:11:28
* @LastEditors: Please set LastEditors
* @Description: 舆情传播趋势
* @FilePath: /data-show/src/views/BrandInsight/titsopo/index.vue
-->
<template>
<div class="tit-outter">
<div class="tit-outter" v-loading="load">
<div class="tit-header">
<a-button type="primary" size="small">进入数据列表页</a-button>
<a-button type="primary" style="margin-left: 16px;margin-right: 16px;" size="small">导出报告</a-button>
@ -29,6 +29,7 @@ export default {
props: ["brand"],
data() {
return {
load: false,
form: {
token: "",
sBrand: '奥迪',
@ -44,6 +45,7 @@ export default {
methods: {
getData() {
let obj = Object.assign({},this.getCommTime, this.form);
this.load = true;
getSourcetypeTime(obj).then(res => {
let data = res.data || [];
let dx = [];
@ -55,6 +57,7 @@ export default {
ds.push(value);
})
this.opt = createOpt(dx, ds);
this.load = false;
})
}
}

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-12 10:11:24
* @LastEditTime: 2021-10-25 17:28:36
* @LastEditTime: 2021-10-26 13:51:34
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/titsopo/opt.js
@ -76,6 +76,12 @@ export default function createOpt(dx = [], ds = []) {
color: "#fff",
},
},
axisLabel : {
formatter: (value) => {
let str = value.substring(10,16)
return str;
}
},
data: dx
},
yAxis: {

@ -1,14 +1,14 @@
<!--
* @Author: your name
* @Date: 2021-10-12 14:19:53
* @LastEditTime: 2021-10-26 08:56:37
* @LastEditTime: 2021-10-26 16:15:48
* @LastEditors: Please set LastEditors
* @Description: 微博KOL
* @FilePath: /data-show/src/views/BrandInsight/weiboKol/index.vue
-->
<template>
<div class="wk-outter">
<div class="wk-outter" v-loading="load">
<div class="wk-inner">
<div class="wk-in-d1">
<v-label-div title="微博KOL" :showLine="false" :eStyle="{ 'border-style': 'none' }"></v-label-div>
@ -33,6 +33,7 @@ export default {
props: ["brand"],
data() {
return {
load: false,
form: {
sBrand: "",
token: "",
@ -72,6 +73,7 @@ export default {
methods: {
getData() {
let obj = Object.assign({}, this.getCommTime, this.form);
this.load = true;
getBoauthenCount0528(obj).then((res) => {
let data = res.data || [];
let total = 0;
@ -81,6 +83,7 @@ export default {
this.total = total;
this.labelData = data;
this.opt = createOpt(data, this.colors);
this.load = false;
});
},
},

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-12 15:06:47
* @LastEditTime: 2021-10-26 09:11:47
* @LastEditTime: 2021-10-26 12:58:03
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/weiboPortraits/index.vue
@ -13,18 +13,20 @@
</v-label-div>
<div class="wp-inner">
<div class="wp-in-d1">
<v-echarts :opt="opt"></v-echarts>
<v-echarts :opt="opt"></v-echarts>
</div>
<div class="wp-in-d2">
<v-label-ctx v-for="(item,index) in labelData" :key="index" :label="item.key" :cont="item.value" :percentage="(item.value/totalData*100).toFixed(2) +'%'" :color="colors[index]" :eStyle="{ height: '121px' }"></v-label-ctx>
<vue-scroll>
<v-label-ctx v-for="(item,index) in labelData" :key="index" :label="item.key" :cont="item.value" :percentage="(item.value/totalData*100).toFixed(2) +'%'" :color="colors[index]" :eStyle="{ height: '121px' }"></v-label-ctx>
</vue-scroll>
</div>
</div>
</div>
</template>
<script>
import {getSexMergeWeiBo} from "@/api/BrandInsight";
import createOpt from "./opt"
import { getSexMergeWeiBo } from "@/api/BrandInsight";
import createOpt from "./opt";
export default {
name: "weiboPortraits",
props: ["brand"],
@ -52,8 +54,18 @@ export default {
"#91e8e1",
"#f7a35c",
"#90ed7d",
"#54BF93",
"#3373CC",
"#CC9D12",
"#f15c80",
"#e4d354",
"#8085e8",
"#8d4653",
"#91e8e1",
"#f7a35c",
"#90ed7d",
],
}
};
},
created() {
this.form.token = this.getToken;
@ -61,13 +73,13 @@ export default {
this.getData();
},
methods: {
//
//
handlerTab(n) {
if (n === 0) {
this.labelData = this.sex;
let total = 0;
this.sex.forEach((ele) => {
total += ele.value;
total += ele.value * 1;
});
this.totalData = total;
this.opt = createOpt(this.sex, [
@ -79,15 +91,16 @@ export default {
this.labelData = this.attestation;
let total = 0;
this.attestation.forEach((ele) => {
total += ele.value;
total += ele.value * 1;
});
this.totalData = total;
this.opt = createOpt(this.attestation, this.colors);
} else {
this.labelData = this.region;
console.log(this.labelData)
let total = 0;
this.region.forEach((ele) => {
total += ele.value;
total += ele.value * 1;
});
this.totalData = total;
this.opt = createOpt(this.region, this.colors);
@ -97,29 +110,52 @@ export default {
getData() {
this.load = true;
let obj = Object.assign({}, this.getCommTime, this.form);
getSexMergeWeiBo(obj).then(res => {
let data = res.data;
this.attestation = data.attestation || {};
this.sex = data.sex || {};
this.region = data.RegionWeiBo || {};
let total = 0;
console.log(this.sex)
this.sex.forEach((ele) => {
total += ele.value;
});
this.totalData = total;
this.labelData = this.sex;
this.opt = createOpt(this.sex, [
"#54BF93",
"#3373CC",
"#CC9D12",
]);
this.load = false;
})
}
}
}
getSexMergeWeiBo(obj).then((res) => {
let data = res.data;
let attestation = data.attestation || {};
let sex = data.sex || {};
let region = data.RegionWeiBo || {};
let total = 0;
let wSex = [];
for (let key in sex) {
let obj = {
key: key,
value: sex[key],
};
total += sex[key] * 1;
wSex.push(obj);
}
let wAttestation = [];
for (let key in attestation) {
let obj = {
key: key,
value: attestation[key],
};
wAttestation.push(obj);
}
let wRegion = [];
for (let key in region) {
let obj = {
key: key,
value: region[key],
};
wRegion.push(obj);
}
this.sex = wSex;
this.attestation = wAttestation;
this.region = wRegion;
this.totalData = total;
this.labelData = this.sex;
this.opt = createOpt(this.sex, [
"#54BF93",
"#3373CC",
"#CC9D12",
]);
this.load = false;
});
},
},
};
</script>
<style lang="less" scoped>

@ -1,13 +1,35 @@
/*
* @Author: your name
* @Date: 2021-10-12 15:14:58
* @LastEditTime: 2021-10-12 16:03:56
* @LastEditTime: 2021-10-26 12:47:13
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/weiboPortraits/opt.js
*/
import * as echarts from "echarts";
export default function createOpt() {
function createData(ds=[], colors=[]) {
let arr = [];
for(let i = 0; i < ds.length; i++) {
let ele = ds[i];
if(ele.value*1 > 0) {
let obj = { value: ele.value*1, name: ele.key, itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 1, 0, [{
//给颜色设置渐变色 前面4个参数给第一个设置1第四个设置0 ,就是水平渐变
//给第一个设置0第四个设置1就是垂直渐变
offset: 0,
color: 'black'
}, {
offset: 1,
color: colors[i]
}])
}};
arr.push(obj)
}
}
return arr;
}
export default function createOpt(ds=[], colors=[]) {
const data = createData(ds,colors)
return {
series: [
{
@ -18,52 +40,23 @@ export default function createOpt() {
label: {
show: false,
position: 'center',
fontSize: '40',
color: "#ffff",
lineHeight: 48
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontSize: '30',
color: "#ffff",
formatter: (p)=>{
return p.data.name + '\n' + p.data.value;
},
formatter: function (p) {
return `${p.data.name}\n${p.percent}%\n${p.data.value}`
}
}
},
labelLine: {
show: false
},
data: [
{ value: 2200, name: '男性', itemStyle: {color: new echarts.graphic.LinearGradient(0, 1, 1, 0, [{
//给颜色设置渐变色 前面4个参数给第一个设置1第四个设置0 ,就是水平渐变
//给第一个设置0第四个设置1就是垂直渐变
offset: 0,
color: 'black'
}, {
offset: 1,
color: '#3373CC'
}])} },
{ value: 2200, name: '女性', itemStyle: {color: new echarts.graphic.LinearGradient(0, 1, 1, 0, [{
//给颜色设置渐变色 前面4个参数给第一个设置1第四个设置0 ,就是水平渐变
//给第一个设置0第四个设置1就是垂直渐变
offset: 0,
color: 'black'
}, {
offset: 1,
color: '#CC9D12'
}])} },
{ value: 2200, name: '未知', itemStyle: {color: new echarts.graphic.LinearGradient(0, 1, 1, 0, [{
//给颜色设置渐变色 前面4个参数给第一个设置1第四个设置0 ,就是水平渐变
//给第一个设置0第四个设置1就是垂直渐变
offset: 0,
color: 'black'
}, {
offset: 1,
color: '#54BF93'
}])} },
],
data: data
},
{
name: 'Access From1',
@ -78,36 +71,7 @@ export default function createOpt() {
show: false
},
center: ['50%', '50%'],//边框位置
data: [
{ value: 2200, name: '男性', itemStyle: {color: new echarts.graphic.LinearGradient(0, 1, 1, 0, [{
//给颜色设置渐变色 前面4个参数给第一个设置1第四个设置0 ,就是水平渐变
//给第一个设置0第四个设置1就是垂直渐变
offset: 0,
color: 'black'
}, {
offset: 1,
color: '#3373CC'
}])} },
{ value: 2200, name: '女性', itemStyle: {color: new echarts.graphic.LinearGradient(0, 1, 1, 0, [{
//给颜色设置渐变色 前面4个参数给第一个设置1第四个设置0 ,就是水平渐变
//给第一个设置0第四个设置1就是垂直渐变
offset: 0,
color: 'black'
}, {
offset: 1,
color: '#CC9D12'
}])} },
{ value: 2200, name: '未知', itemStyle: {color: new echarts.graphic.LinearGradient(0, 1, 1, 0, [{
//给颜色设置渐变色 前面4个参数给第一个设置1第四个设置0 ,就是水平渐变
//给第一个设置0第四个设置1就是垂直渐变
offset: 0,
color: 'black'
}, {
offset: 1,
color: '#54BF93'
}])} },
],
data: data
}
]
}

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-12 15:24:48
* @LastEditTime: 2021-10-12 15:34:52
* @LastEditTime: 2021-10-26 16:16:59
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/weiboVolumeTrend/index.vue
-->
<template>
<div class="wvt-outter">
<div class="wvt-outter" v-loading="load">
<v-label-div title="微博声量趋势" :showLine="false" :eStyle="{ 'border-style': 'none' }">
</v-label-div>
<div class="wvt-inner">
@ -17,12 +17,43 @@
</template>
<script>
import {getCountTime0528} from "@/api/BrandInsight";
import createOpt from "./opt"
export default {
name: "weibo-volume-trend",
props: ["brand"],
data() {
return {
opt: createOpt()
load: false,
form: {
sBrand: "",
token: "",
},
opt: {}
}
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.brand;
this.getData();
},
methods: {
getData() {
let obj = Object.assign({}, this.getCommTime, this.form);
this.load = true;
getCountTime0528(obj).then(res => {
let data = res.data || [];
let dx = [];
let ds = [];
data.forEach(ele => {
let key = ele.Time;
let value = ele.value;
dx.push(key);
ds.push(value);
})
this.opt = createOpt(dx, ds);
this.load = false;
})
}
}
}

@ -1,13 +1,13 @@
/*
* @Author: your name
* @Date: 2021-10-12 15:32:24
* @LastEditTime: 2021-10-12 16:47:07
* @LastEditTime: 2021-10-26 13:49:55
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/weiboVolumeTrend/opt.js
*/
import * as echarts from "echarts";
export default function createOpt() {
export default function createOpt(dx = [], ds = []) {
return {
grid: {
top: "16px",
@ -38,7 +38,13 @@ export default function createOpt() {
color: "#fff",
},
},
data: ['00:00', '00:40', '00:80', '12:00', '16:00', '20:00', '24:00']
axisLabel : {
formatter: (value) => {
let str = value.substring(10,16)
return str;
}
},
data: dx
},
yAxis: {
type: 'value',
@ -57,7 +63,7 @@ export default function createOpt() {
},
series: [
{
data: [820, 932, 901, 934, 1290, 1330, 1320],
data: ds,
type: 'line',
color: '#546fc5',
areaStyle: {normal: {

@ -2,7 +2,7 @@
/*
* @Author: your name
* @Date: 2021-10-09 11:38:06
* @LastEditTime: 2021-10-21 15:20:11
* @LastEditTime: 2021-10-26 13:53:19
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/Index/barometer/opt.js
@ -84,6 +84,12 @@ export default function createOpt(dx = [],ds = []) {
color: "#fff",
},
},
axisLabel : {
formatter: (value) => {
let str = value.substring(10,16)
return str;
}
},
data: dx
},
yAxis: {

@ -1,7 +1,7 @@
<!--
* @Author: xw
* @Date: 2021-10-09 14:25:05
* @LastEditTime: 2021-10-23 14:43:23
* @LastEditTime: 2021-10-26 12:19:13
* @LastEditors: Please set LastEditors
* @Description: 大数据统计gif
* @FilePath: /data-show/src/views/Index/dynamicNumber/index.vue
@ -20,25 +20,25 @@
<countTo :startVal='form.other-100 >= 0 ? form.other-100 : 0' :endVal='form.other' :duration='3000'></countTo>
</span>
</div>
<div class="d1" :style="{top: '91px', left: '426px'}">
<div class="d1" :style="{top: '60px', left: '426px'}">
<span class="s1">微信</span>
<span class="s2">
<countTo :startVal='form.wecat-100 >= 0 ? form.wecat-100 : 0' :endVal='form.wecat' :duration='3000'></countTo>
</span>
</div>
<div class="d2" :style="{top: '240px', left: '656px'}">
<div class="d2" :style="{top: '220px', left: '582px'}">
<span class="s1">
<countTo :startVal='form.forum-100 >= 0 ? form.forum-100 : 0' :endVal='form.forum' :duration='3000'></countTo>
</span>
<span class="s2">论坛</span>
</div>
<div class="d2" :style="{top: '340px', left: '656px'}">
<div class="d2" :style="{top: '340px', left: '582px'}">
<span class="s1">
<countTo :startVal='form.weipo-100 >= 0 ? form.weipo-100 : 0' :endVal='form.weipo' :duration='3000'></countTo>
</span>
<span class="s2">微博</span>
</div>
<div class="d2" :style="{top: '490px', left: '246px'}">
<div class="d2" :style="{top: '420px', left: '246px'}">
<span class="s1">
<countTo :startVal='form.news-100 >= 0 ? form.news-100 : 0' :endVal='form.news' :duration='3000'></countTo>
</span>

@ -1,7 +1,7 @@
<!--
* @Author: xw
* @Date: 2021-10-08 16:37:30
* @LastEditTime: 2021-10-22 12:07:14
* @LastEditTime: 2021-10-26 14:34:06
* @LastEditors: Please set LastEditors
* @Description: 传播重点阵地
* @FilePath: /data-show/src/views/Index/key-communication-positions/index.vue
@ -14,7 +14,7 @@
<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>
<v-ranking v-for="(item,index) in d2" :key="index" :lineShow="index === 0 ? false : true" :num="5+index + 1" :label="item.label" :val="item.val"></v-ranking>
</div>
</div>
</div>

@ -1,7 +1,7 @@
<!--
* @Author: xw
* @Date: 2021-10-09 09:04:01
* @LastEditTime: 2021-10-22 12:14:55
* @LastEditTime: 2021-10-26 12:58:15
* @LastEditors: Please set LastEditors
* @Description: 用户画像
* @FilePath: /data-show/src/views/Index/userPortrait/index.vue
@ -49,6 +49,16 @@ export default {
"#91e8e1",
"#f7a35c",
"#90ed7d",
"#54BF93",
"#3373CC",
"#CC9D12",
"#f15c80",
"#e4d354",
"#8085e8",
"#8d4653",
"#91e8e1",
"#f7a35c",
"#90ed7d",
],
};
},

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-20 13:15:16
* @LastEditTime: 2021-10-26 11:21:34
* @LastEditTime: 2021-10-26 13:04:29
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/vue.config.js
@ -11,10 +11,11 @@ const productionGzipExtensions = ['js', 'css', 'svg']
// 1. 引入等比适配插件
const px2rem = require('postcss-px2rem')
// 2. 配置基本大小
// 配置基本大小
const postcss = px2rem({
// 基准大小 baseSize需要和rem.js中相同
remUnit: 100
})
remUnit: 16
})
module.exports = {
productionSourceMap: false,
publicPath: "./",

Loading…
Cancel
Save