阿丽 3 years ago
commit eb903b0f4d

@ -1,26 +1,34 @@
<!--
* @Author: your name
* @Date: 2021-10-08 08:41:57
* @LastEditTime: 2021-10-29 18:06:01
* @LastEditTime: 2021-11-09 11:14:52
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/public/index.html
-->
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="referrer" content="no-referrer">
<link rel="icon" href="<%= BASE_URL %>sws_32.ico">
<title>硕为思汽车智能洞察系统</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="referrer" content="no-referrer">
<link rel="icon" href="<%= BASE_URL %>sws_32.ico">
<title>硕为思汽车智能洞察系统</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="appLoading">
<span>请耐心等待,正在加载中...</span>
</div>
<div id="app" style="display: none">
</div>
<!-- built files will be auto injected -->
</body>
</html>

@ -27,6 +27,9 @@ export default {
created() {
this.changeZoom()
},
mounted() {
document.getElementById('appLoading').style.display = 'none';
},
methods: {
changeZoom() {
let h = document.body.clientHeight; //

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-12 10:28:00
* @LastEditTime: 2021-11-04 18:31:15
* @LastEditTime: 2021-11-09 09:57:50
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/components/index.js
@ -17,6 +17,7 @@ import vPagination from "@/components/v-pagination"
import vRanking from "@/components/v-ranking";
import vEcharsMap from "@/components/v-echars-map"
import vPercent from "@/components/v-percent"
import vCutsceneWaiting from "@/components/v-cutscene-waiting"
export default {
install(Vue) {
Vue.mixin({
@ -31,7 +32,8 @@ export default {
vPagination,
vRanking,
vEcharsMap,
vPercent
vPercent,
vCutsceneWaiting
}
})
}

@ -1,20 +1,49 @@
<!--
* @Author: your name
* @Date: 2021-11-08 09:46:59
* @LastEditTime: 2021-11-08 09:51:57
* @LastEditTime: 2021-11-09 10:57:21
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/components/v-cutscene-waiting/index.vue
-->
<template>
<div class="cw-outter">
<div class="cw-outter" v-show="show">
<div class="load-inner">
<span style="color: ">
<div class="loading">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</span>
</div>
</div>
</template>
<script>
export default {
name: "v-cutscene-waiting"
name: "v-cutscene-waiting",
props: {
visible: {
type: Boolean,
default: false
}
},
watch: {
visible: {
handler(val) {
this.show = val
},
immediate: true
}
},
data() {
return {
show: false,
}
}
}
</script>
@ -25,6 +54,57 @@ export default {
height: 100vh;
left: 0px;
top: 0px;
background: rgba(0,11, 26, 0.7);
background: rgba(0,11, 26, 0.9);
z-index: 2000;
.load-inner {
position: absolute;
width: auto;
height: auto;
left: 50%;
top: 38%;
color: #fff;
font-size: 14px;
transform: translate(-50%, -50%);
}
}
.loading{
width: 150px;
height: 15px;
margin: 0 auto;
position: relative;
margin-top:100px;
}
.loading span{
position: absolute;
width: 15px;
height: 100%;
border-radius: 50%;
background: lightgreen;
-webkit-animation: load 1.04s ease-in infinite alternate;
}
@-webkit-keyframes load{
0%{
opacity: 1;
-webkit-transform: translate(0px);
}
100%{
opacity: 0.2;
-webkit-transform: translate(150px);
}
}
.loading span:nth-child(1){
-webkit-animation-delay:0.13s;
}
.loading span:nth-child(2){
-webkit-animation-delay:0.26s;
}
.loading span:nth-child(3){
-webkit-animation-delay:0.39s;
}
.loading span:nth-child(4){
-webkit-animation-delay:0.52s;
}
.loading span:nth-child(5){
-webkit-animation-delay:0.65s;
}
</style>

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-13 14:25:26
* @LastEditTime: 2021-11-05 10:44:00
* @LastEditTime: 2021-11-09 11:11:48
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/lycomponents/iLayout/index.vue
@ -30,6 +30,7 @@ export default {
data() {
return {
isRouterAlive: true,
load: false,
headerStyle: {}
};
},
@ -39,9 +40,6 @@ export default {
this.$nextTick(() => {
this.isRouterAlive = true;
});
},
changeZoom() {
}
},
};

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-12 13:56:13
* @LastEditTime: 2021-11-09 09:36:26
* @LastEditTime: 2021-11-09 10:24:25
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/mixins/index.js
@ -9,7 +9,6 @@
import { mapGetters, mapActions } from "vuex";
import Loading from './loading'
function detectZoom (){
console.log(2222)
let ratio = 0,
screen = window.screen,
ua = navigator.userAgent.toLowerCase();
@ -90,10 +89,10 @@ export default {
}
},
computed: {
...mapGetters(['getZoom', 'getToken', 'getUser', 'getAccount', 'getCommTime', 'getCtime', 'getCtime2', 'getHeaderType', 'getBrand', 'getModel','getSComparison','getBComparison'])
...mapGetters(['getZoom', 'getLoading','getToken', 'getUser', 'getAccount', 'getCommTime', 'getCtime', 'getCtime2', 'getHeaderType', 'getBrand', 'getModel','getSComparison','getBComparison'])
},
methods: {
...mapActions(["setZoom", 'setToken', 'setUser', 'setAccount', 'setCommTime', 'setCtime', 'setCtime2', 'setHeaderType', 'setBrand', 'setModel', 'setSComparison','setBComparison']),
...mapActions(["setZoom", 'setLoading', 'setToken', 'setUser', 'setAccount', 'setCommTime', 'setCtime', 'setCtime2', 'setHeaderType', 'setBrand', 'setModel', 'setSComparison','setBComparison']),
// 获取当前日期时间
getDatetime() {
let now = new Date();

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-08 09:26:42
* @LastEditTime: 2021-10-25 10:48:19
* @LastEditTime: 2021-11-09 11:06:03
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/permission.js
@ -20,7 +20,6 @@ router.beforeEach((to, from, next) => {
} else {
next()
}
})
router.afterEach(() => {

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-12 13:36:49
* @LastEditTime: 2021-11-05 14:03:18
* @LastEditTime: 2021-11-09 10:23:08
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/store/actions.js
@ -10,6 +10,9 @@ const actions = {
setZoom: ({commit}, log) => {
commit('setZoom', log)
},
setLoading: ({commit}, log) => {
commit('setLoading', log)
},
setToken: ({commit}, log) => {
commit('setToken', log)
},

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-12 13:37:06
* @LastEditTime: 2021-11-05 14:04:53
* @LastEditTime: 2021-11-09 10:20:07
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/store/getters.js
@ -10,6 +10,9 @@ const getters = {
getZoom(state) {
return state.$zoom
},
getLoading(state) {
return state.loading
},
getToken(state) {
return state.token
},

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-12 13:37:35
* @LastEditTime: 2021-11-05 14:04:03
* @LastEditTime: 2021-11-09 11:07:48
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/store/mutations.js
@ -10,6 +10,9 @@ const mutations = {
setZoom: (state, log) => {
state.$zoom = log;
},
setLoading: (state, log) => {
state.loading = log;
},
setToken: (state, log) => {
sessionStorage.setItem('token', log);
state.token = log

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-12 13:37:50
* @LastEditTime: 2021-11-05 14:02:42
* @LastEditTime: 2021-11-09 10:19:08
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/store/state.js
@ -9,6 +9,7 @@
const state = {
$zoom: 1,
loading: false,
token: sessionStorage.getItem('token') || "",
user: JSON.parse(sessionStorage.getItem('user')) || {},
account: JSON.parse(localStorage.getItem('account')) || {},

@ -1,7 +1,7 @@
<!--
* @Author: xw
* @Date: 2021-10-11 17:59:49
* @LastEditTime: 2021-11-05 15:46:06
* @LastEditTime: 2021-11-09 11:08:10
* @LastEditors: Please set LastEditors
* @Description: 品牌洞察
* @FilePath: /data-show/src/views/BrandInsight/index.vue

@ -3,12 +3,13 @@
/*
* @Author: your name
* @Date: 2021-10-09 12:38:34
* @LastEditTime: 2021-11-01 19:02:50
* @LastEditTime: 2021-11-09 09:50:36
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/Index/tailInsight/opt.js
*/
import * as echarts from "echarts";
import { bigNumberTransform } from "@/utils/gol/dataTool"
export default function createOpt(dy = [], ds = []) {
return {
grid: {
@ -36,6 +37,12 @@ export default function createOpt(dy = [], ds = []) {
color: "#fff",
},
},
axisLabel: {
formatter: (value) => {
let str = bigNumberTransform(value);
return str;
}
},
splitLine: {
lineStyle: {
type: "dashed", // y轴分割线类型

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-13 14:14:49
* @LastEditTime: 2021-10-13 14:22:35
* @LastEditTime: 2021-11-09 11:52:04
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDetails/distributionOfHotEventChannels/index.vue
-->
<template>
<div class="doe-outter">
<div class="doe-outter" v-loading="load">
<v-label-div title="热点事件渠道分布" :showLine="false" :eStyle="{ 'border-style': 'none' }" />
<div class="doe-inner">
<v-echarts :opt="opt"></v-echarts>
@ -22,6 +22,7 @@ export default {
name: "distributionOfHotEventChannels",
data() {
return {
load: false,
opt: {},
form: {
sBrand: "",
@ -38,6 +39,7 @@ export default {
//
getDdta(){
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getEventsSourceTypeByEventsType0528(obj).then(res => {
let data = res.data || [];
let dx = [];
@ -49,6 +51,7 @@ export default {
ds.push(value);
})
this.opt = createOpt(dx, ds);
this.load = false;
})
}
}

@ -1,63 +1,64 @@
<!--
* @Author: your name
* @Date: 2021-10-13 13:47:46
* @LastEditTime: 2021-10-13 14:11:52
* @LastEditTime: 2021-11-09 11:53:04
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDetails/distributionOfTOPModelsOfHotEvents/index.vue
-->
<template>
<div class="dotop-outter">
<v-label-div title="热点事件TOP车型分布" :showLine="false" :eStyle="{ 'border-style': 'none' }" />
<div class="dotop-inner">
<v-echarts :opt="opt"></v-echarts>
<v-pagination :style="{position: 'absolute', right: '5px', bottom: '6px'}"></v-pagination>
</div>
<div class="dotop-outter" v-loading="load">
<v-label-div title="热点事件TOP车型分布" :showLine="false" :eStyle="{ 'border-style': 'none' }" />
<div class="dotop-inner">
<v-echarts :opt="opt"></v-echarts>
<v-pagination :style="{position: 'absolute', right: '5px', bottom: '6px'}"></v-pagination>
</div>
</div>
</template>
<script>
import {getHotEventSseries} from '@/api/EventDetails'
import createOpt from "./opt"
import { getHotEventSseries } from "@/api/EventDetails";
import createOpt from "./opt";
export default {
name: "distributionOfTOPModelsOfHotEvents",
data() {
return {
opt: {},
form: {
load: false,
opt: {},
form: {
sQueryType: 1,
sBrand: "",
token: ""
}
}
token: "",
},
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || '奥迪';
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || "奥迪";
this.getDdta();
},
methods:{
methods: {
//
getDdta() {
let obj = Object.assign({}, this.getCtime2, this.form);
getHotEventSseries(obj).then(res => {
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getHotEventSseries(obj).then((res) => {
let data = res.data || [];
let dx = [];
let ds = [];
data.forEach(ele => {
data.forEach((ele) => {
let key = ele.key;
let value = ele.data;
dx.push(key);
ds.push(value);
});
this.opt = createOpt(dx, ds);
})
}
}
}
this.load = false;
});
},
},
};
</script>
<style lang="less" scoped>

@ -7,7 +7,7 @@
* @FilePath: /data-show/src/views/EventDetails/eventCorrelation/index.vue
-->
<template>
<div class="ec-outter">
<div class="ec-outter" v-loading="load">
<div class="ec-top" align="center">
<v-btn @click="goback"></v-btn>
</div>
@ -39,6 +39,7 @@ export default {
data() {
return {
brand: "",
load: false,
form: {
sBrand: "",
token: "",
@ -56,10 +57,12 @@ export default {
getDdta() {
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getBrandOverviewCount0528(obj).then((res) => {
let data = res.data;
this.zolNum = data.count;
this.list = data.data;
this.load = false;
});
},
goback() {

@ -1,14 +1,14 @@
<!--
* @Author: your name
* @Date: 2021-10-13 08:59:57
* @LastEditTime: 2021-10-13 09:18:58
* @LastEditTime: 2021-11-09 11:55:11
* @LastEditors: Please set LastEditors
* @Description: 热点事件传播导向
* @FilePath: /data-show/src/views/EventDetails/hotEventPropagationOriented/index.vue
-->
<template>
<div class="hepo-outter">
<div class="hepo-outter" v-loading="load">
<v-label-div title="热点事件传播导向" />
<div class="hepo-inner">
<v-echarts :opt="opt"></v-echarts>
@ -24,6 +24,7 @@ export default {
props: ["brand"],
data() {
return {
load: false,
opt: createOpt(),
form: {
sBrand: "",
@ -40,11 +41,13 @@ export default {
//
getDdta() {
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getPropagationDirection0528(obj).then(res => {
let data = res.data;
let population = data.links;
let citylist = data.data;
this.opt = createOpt(citylist, population)
this.opt = createOpt(citylist, population);
this.load = false;
})
}

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-13 11:54:38
* @LastEditTime: 2021-11-03 11:32:04
* @LastEditTime: 2021-11-09 11:56:11
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDetails/hotOther/index.vue
-->
<template>
<div class="ho-outter">
<div class="ho-outter" v-loading="load">
<v-label-div title="热点事件传播导向" />
<div class="ho-bd">
<dv-scroll-board :config="config" :style="{ width: '100%', height: '27rem' }" />
@ -26,6 +26,7 @@ export default {
data() {
return {
currentPage: 1,
load: false,
form: {
token: "",
ssBrand: "",
@ -46,6 +47,7 @@ export default {
//
getDdta() {
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getHotEventsList(obj).then((res) => {
let data = res.data || [];
let totalNum = res.totalNum || 0;
@ -69,6 +71,7 @@ export default {
header: ["事件列表", "影响力", "时间", "关联品牌"],
data: arr,
};
this.load = false;
});
},
//

@ -1,15 +1,15 @@
<!--
* @Author: your name
* @Date: 2021-10-13 15:17:14
* @LastEditTime: 2021-10-14 09:01:07
* @LastEditTime: 2021-11-09 13:26:17
* @LastEditors: Please set LastEditors
* @Description: 论坛洞察详情
* @FilePath: /data-show/src/views/ForumDetails/index.vue
-->
<template>
<div class="d-container" v-loading="load">
<div class="d-container">
<div class="fd-outter">
<div class="fd-d1">
<div class="fd-d1" v-loading="load">
<v-label-div title="论坛洞察详情">
<v-btn @click="goback"></v-btn>
</v-label-div>
@ -22,13 +22,13 @@
</div>
</div>
</div>
<div class="fd-d2">
<div class="fd-d2" v-loading="load1">
<v-label-div title="传播态势"/>
<div class="fd-d2-inner">
<v-echarts :opt="opt1"></v-echarts>
</div>
</div>
<div class="fd-d2">
<div class="fd-d2" v-loading="load2">
<v-label-div title="TOP5车型传播态势"/>
<div class="fd-d2-inner">
<v-echarts :opt="opt2"></v-echarts>
@ -47,6 +47,8 @@ export default {
data() {
return {
load: false,
load1: false,
load2: false,
opt1: {},
opt2: createOptD2(),
msg: "",
@ -67,13 +69,16 @@ export default {
methods: {
getDdta1(){
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getBbsInsightAnalysis(obj).then(res => {
let data = res.msg;
this.msg = data;
this.load = false;
})
},
getDdta2(){
let obj = Object.assign({}, this.getCtime2, this.form);
this.load1 = true;
getBbsCountTime(obj).then(res => {
let data = res.data || [];
let dx = [];
@ -85,10 +90,12 @@ export default {
ds.push(value);
});
this.opt1 = createOptD1(dx, ds);
this.load1 = false;
})
},
getDdta3(){
let obj = Object.assign({}, this.getCtime2, this.form);
this.load2 = true;
getBbsBrandTime(obj).then(res => {
let data = res.data || [];
let dx = [];
@ -100,10 +107,9 @@ export default {
ds.push(value);
});
this.opt2 = createOptD2(dx, ds);
this.load2 = false;
})
},
goback() {
this.$router.go(-1)
}

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-10-12 10:11:24
* @LastEditTime: 2021-10-13 16:04:16
* @LastEditTime: 2021-11-09 09:47:08
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/titsopo/opt.js
@ -23,7 +23,7 @@ function createData(ds = []) {
type: 'line',
symbol: 'none',
areaStyle: {
opacity: 0.2,
opacity: 0.1,
},
emphasis: {
focus: 'series'

@ -1,85 +1,59 @@
<!--
* @Author: your name
* @Date: 2021-10-14 18:42:40
* @LastEditTime: 2021-11-08 18:25:18
* @Date: 2021-10-14 19:06:52
* @LastEditTime: 2021-11-09 13:41:16
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/modelPopularity/index.vue
* @FilePath: /data-show/src/views/WeiboDetails/weiboWordCloud/index.vue
-->
<template>
<div class="mp-outter">
<v-label-div title="车型热度">
<div>
<v-tab-group
:btns="['热门', '热赞', '热议', '热转']"
@change="handlerTab"
></v-tab-group>
</div>
<div class="wwc-outter" v-loading="load">
<v-label-div title="正面词云分布">
</v-label-div>
<div class="mp-inner">
<v-ranking-mpth
v-for="(item, index) in labelArr"
:key="index"
:num="index + 1"
:label="item.key"
:val="item.value"
></v-ranking-mpth>
<div class="wwc-inner">
<v-echarts :opt="opt"></v-echarts>
</div>
</div>
</template>
<script>
import { getCartypeWeiBo0528 } from "@/api/WeiboDetails/index.js";
import { getTopCarseriesObj } from "@/api/WeiboDetails/index.js";
import vRankingMpth from "./v-ranking-mpth";
import { getPositive } from "@/api/WeiboDetails";
import createWordCloud from "@/utils/gol/bubbleWord";
//import createOpt from "./opt";
export default {
name: "MWDmodelPopularity",
data() {
return {
opt: {},
load: false,
positiveData: {},
negativeData: {},
form: {
sBrand: "",
token: "",
iType: "",
},
labelArr: [],
hotSeries: [],
hotTypes: [],
hotComs: [],
hotTrans: [],
};
},
components: {
vRankingMpth,
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || this.brand;
this.getData();
},
methods: {
getData() {
Promise.all([
this.getHotSeries(),
this.getHotTypes(),
this.getHotComs(),
this.getHotTrans(),
]).then(() => {
//
this.handlerTab(0);
});
this.load = true;
this.getH().then(() => {
this.load = false;
})
},
//
getHotSeries() {
//
getH() {
return new Promise((resolve, reject) => {
this.form.iType = "";
let obj = Object.assign({}, this.getCtime2, this.form);
getCartypeWeiBo0528(obj)
getPositive(obj)
.then((res) => {
let data = res.data || {};
this.hotSeries = this.toArr(data);
this.positiveData = res.data || {};
this.opt = createWordCloud(this.positiveData);
resolve(res);
})
.catch(() => {
@ -87,94 +61,19 @@ export default {
});
});
},
//
getHotTypes() {
return new Promise((resolve, reject) => {
this.form.iType = 1; //
let obj = Object.assign({}, this.getCtime2, this.form);
getTopCarseriesObj(obj)
.then((res) => {
this.hotTypes = res.data;
resolve(res);
})
.catch(() => {
reject(false);
});
});
},
//
getHotComs() {
return new Promise((resolve, reject) => {
this.form.iType = 2;
let obj = Object.assign({}, this.getCtime2, this.form);
getTopCarseriesObj(obj)
.then((res) => {
this.hotComs = res.data;
resolve(res);
})
.catch(() => {
reject(false);
});
});
},
//
getHotTrans() {
return new Promise((resolve, reject) => {
this.form.iType = 3;
let obj = Object.assign({}, this.getCtime2, this.form);
getTopCarseriesObj(obj)
.then((res) => {
this.hotTrans = res.data;
resolve(res);
})
.catch(() => {
reject(false);
});
});
},
//
toArr(obj) {
let arr = [];
for (let key in obj) {
let o = {
key: key,
value: obj[key],
};
arr.push(o);
}
return arr;
},
//
handlerTab(n) {
switch (n) {
case 0:
this.labelArr = this.hotSeries;
break;
case 1:
this.labelArr = this.hotTypes;
break;
case 2:
this.labelArr = this.hotComs;
break;
case 3:
this.labelArr = this.hotTrans;
break;
default:
this.labelArr = this.hotSeries;
break;
}
},
},
};
</script>
<style lang="less" scoped>
.mp-outter {
.wwc-outter {
width: 460px;
height: 460px;
border: 2px solid #0f2a4d;
.mp-inner {
padding: 0px 16px 16px 16px;
margin-left: 16px;
.wwc-inner {
width: 100%;
height: calc(100% - 48px);
}
}
</style>
</style>

@ -1,230 +0,0 @@
<!--
* @Author: your name
* @Date: 2021-10-08 16:44:08
* @LastEditTime: 2021-10-14 19:01:34
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/components/v-ranking/index.vue
-->
<template>
<div class="v-r-container">
<div class="v-r-line" v-if="lineShow"></div>
<div class="v-r-inner">
<div :class="ls">
<span class="s1">{{ num|numStr }}</span>
</div>
<div :class="rs">
<span class="v-r-label">{{label}}</span>
<div class="v-r-res">
<span class="s1">传播量</span>
<span class="s2">{{val}}</span>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "v-ranking-fhtd",
props: {
num: {
type: [String, Number],
default: 1,
},
val: {
type: [String, Number],
default: 0
},
label: {
type: String,
default: ""
},
lineShow: {
type: Boolean,
default: true
},
},
watch: {
num: {
handler(val) {
if(val == 1) {
this.ls = "v-r-left-1"
this.rs = "v-r-right-1"
} else if(val == 2) {
this.ls = "v-r-left-2"
this.rs = "v-r-right-2"
} else if(val == 3) {
this.ls = "v-r-left-3"
this.rs = "v-r-right-3"
} else {
this.ls = "v-r-left"
this.rs = "v-r-right"
}
},
immediate: true
}
},
data() {
return {
ls: "v-r-left",
rs: "v-r-right"
}
},
filters: {
numStr(val) {
let str = ""
if(0<val && val<10) {
str = '0' + val
} else {
str = val + ''
}
return str
}
}
};
</script>
<style lang="less" scoped>
.v-r-container {
width: 428px;
height: auto;
.v-r-line {
width: 100%;
height: 1px;
background:#0a1d3b;
margin-top: 16px;
margin-bottom: 16px;
}
.v-r-inner {
position: relative;
width: 100%;
height: 48px;
margin-top: 16px;
color: #fff;
background: #0a1d3b;
border-radius: 2px;
}
.v-r-label {
display: block;
font-size: 14px;
color: #FFFFFF;
margin-left: 40px;
font-weight: bold;
}
.v-r-res {
margin-right: 16px;
span {
display: block;
text-align: right;
font-size: 12px;
}
.s1 {
color: #9ba4af;
}
.s2 {
color: #fff;
font-family: Bebas;
}
}
.v-r-left {
width: 48px;
height: 48px;
text-align: center;
line-height: 48px;
.s1 {
color: #ffffff;
font-size: 16px;
line-height: 48px;
font-family: Bebas;
}
}
.v-r-right {
position: absolute;
width: 402px;
height: 48px;
border-top: 2px solid transparent;
top: 0px;
left: 24px;
display: flex;
justify-content: space-between;
align-items: center;
}
.v-r-left-1 {
width: 48px;
height: 48px;
text-align: center;
border: 2px solid #cc9d12;
border-radius: 48px;
.s1 {
color: #ffffff;
font-size: 16px;
line-height: 42px;
text-shadow: 0px 0px 8px #cc9d12;
font-family: Bebas;
}
}
.v-r-right-1 {
position: absolute;
width: 402px;
height: 48px;
border-top: 2px solid #CC9D12;
top: 0px;
left: 24px;
display: flex;
justify-content: space-between;
align-items: center;
}
.v-r-left-2 {
width: 48px;
height: 48px;
text-align: center;
border: 2px solid #3373CC;
border-radius: 48px;
.s1 {
color: #ffffff;
font-size: 16px;
line-height: 42px;
text-shadow: 0px 0px 8px #3373CC;
font-family: Bebas;
}
}
.v-r-right-2 {
position: absolute;
width: 402px;
height: 48px;
border-top: 2px solid #3373CC;
top: 0px;
left: 24px;
display: flex;
justify-content: space-between;
align-items: center;
}
.v-r-left-3 {
width: 48px;
height: 48px;
text-align: center;
border: 2px solid #54BF93;
border-radius: 48px;
.s1 {
color: #ffffff;
font-size: 16px;
line-height: 42px;
text-shadow: 0px 0px 8px #54BF93;
font-family: Bebas;
}
}
.v-r-right-3 {
position: absolute;
width: 402px;
height: 48px;
border-top: 2px solid #54BF93;
top: 0px;
left: 24px;
display: flex;
justify-content: space-between;
align-items: center;
}
}
</style>

@ -1,115 +1,79 @@
<!--
* @Author: your name
* @Date: 2021-10-14 19:06:52
* @LastEditTime: 2021-11-08 18:35:35
* @LastEditTime: 2021-11-09 13:41:39
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/weiboWordCloud/index.vue
-->
<template>
<div class="wwc-outter" v-loading="load">
<v-label-div title="词云分布">
<div>
<v-tab-group
:btns="['正面', '负面']"
@change="handlerTab"
></v-tab-group>
</div>
</v-label-div>
<div class="wwc-inner">
<v-echarts :opt="opt"></v-echarts>
<div class="wwc-outter" v-loading="load">
<v-label-div title="负面词云分布">
</v-label-div>
<div class="wwc-inner">
<v-echarts :opt="opt"></v-echarts>
</div>
</div>
</div>
</template>
<script>
import { getNegative } from "@/api/WeiboDetails";
import { getPositive } from "@/api/WeiboDetails";
import createWordCloud from "@/utils/gol/bubbleWord";
//import createOpt from "./opt";
export default {
name: "MWDweiboWordCloud",
data() {
return {
opt: {},
load: false,
positiveData: {},
negativeData: {},
form: {
sBrand: "",
token: "",
},
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || this.brand;
this.getData();
},
methods: {
getData() {
this.load = true;
Promise.all([this.getH(), this.getF()]).then(() => {
//
this.handlerTab(0);
this.load = false;
});
name: "MWDweiboWordCloud",
data() {
return {
opt: {},
load: false,
positiveData: {},
negativeData: {},
form: {
sBrand: "",
token: "",
},
};
},
//
getH() {
return new Promise((resolve, reject) => {
let obj = Object.assign({}, this.getCtime2, this.form);
getPositive(obj)
.then((res) => {
this.positiveData = res.data || {};
resolve(res);
})
.catch(() => {
reject(false);
});
});
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || this.brand;
this.getData();
},
//
getF() {
return new Promise((resolve, reject) => {
let obj = Object.assign({}, this.getCtime2, this.form);
getNegative(obj)
.then((res) => {
this.negativeData = res.data || {};
resolve(res);
})
.catch(() => {
reject(false);
});
});
methods: {
getData() {
this.load = true;
this.getF().then(() => {
this.load = false;
});
},
//
getF() {
return new Promise((resolve, reject) => {
let obj = Object.assign({}, this.getCtime2, this.form);
getNegative(obj)
.then((res) => {
this.negativeData = res.data || {};
this.opt = createWordCloud(this.negativeData);
resolve(res);
})
.catch(() => {
reject(false);
});
});
},
},
//
handlerTab(n) {
switch (n) {
case 0:
this.opt = createWordCloud(this.positiveData);
break;
case 1:
this.opt = createWordCloud(this.negativeData);
break;
default:
this.opt = createWordCloud(this.positiveData);
break;
}
},
},
};
</script>
<style lang="less" scoped>
.wwc-outter {
width: 460px;
height: 460px;
border: 2px solid #0f2a4d;
margin-left: 16px;
.wwc-inner {
width: 100%;
height: calc(100% - 48px);
}
width: 460px;
height: 460px;
border: 2px solid #0f2a4d;
margin-left: 16px;
.wwc-inner {
width: 100%;
height: calc(100% - 48px);
}
}
</style>

@ -1,14 +1,14 @@
<!--
* @Author: your name
* @Date: 2021-10-14 18:42:40
* @LastEditTime: 2021-10-14 18:59:42
* @LastEditTime: 2021-11-09 11:58:09
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/modelPopularity/index.vue
-->
<template>
<div class="mp-outter">
<div class="mp-outter" v-loading="load">
<v-label-div title="车型热度">
<div>
<v-tab-group
@ -37,6 +37,7 @@ export default {
name: "modelPopularity",
data() {
return {
load: false,
form: {
sBrand: "",
token: "",
@ -61,6 +62,7 @@ export default {
methods: {
getData() {
this.load = true;
Promise.all([
this.getHotSeries(),
this.getHotTypes(),
@ -69,6 +71,7 @@ export default {
]).then(() => {
//
this.handlerTab(0);
this.load = false;
});
},
//

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-16 15:18:44
* @LastEditTime: 2021-10-16 15:58:24
* @LastEditTime: 2021-11-09 13:14:13
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/positiveViewKOL/index.vue
-->
<template>
<div class="pv-outter">
<div class="pv-outter" v-loading="load">
<v-label-div title="负面观点KOL">
</v-label-div>
<div class="pv-inner">
@ -31,6 +31,7 @@ export default {
data() {
return {
ds:[],
load: false,
form: {
sBrand: "",
sQingGan: "2",
@ -47,6 +48,7 @@ export default {
methods: {
getData() {
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getCoreDiffuseWeiBo0528(obj).then(res => {
let data = res.data || [];
//: data._sourse.user_author
@ -62,6 +64,7 @@ export default {
arr.push(o);
})
this.ds = arr;
this.load = false;
});
},
}

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-16 15:18:44
* @LastEditTime: 2021-10-16 15:56:52
* @LastEditTime: 2021-11-09 13:15:15
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/positiveViewKOL/index.vue
-->
<template>
<div class="pv-outter">
<div class="pv-outter" v-loading="load">
<v-label-div title="正面观点KOL"> </v-label-div>
<div class="pv-inner">
<div class="pv-item" v-for="(item, index) in ds" :key="index">
@ -32,6 +32,7 @@ export default {
data() {
return {
ds: [],
load: false,
form: {
sBrand: "",
sQingGan: "1",
@ -48,6 +49,7 @@ export default {
methods: {
getData() {
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getCoreDiffuseWeiBo0528(obj).then((res) => {
let data = res.data || [];
//: data._sourse.user_author
@ -63,6 +65,7 @@ export default {
arr.push(o);
});
this.ds = arr;
this.load = false;
});
},
},

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-14 10:48:56
* @LastEditTime: 2021-10-14 11:00:50
* @LastEditTime: 2021-11-09 13:16:07
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/weiboCharacters/index.vue
-->
<template>
<div class="wc-outter">
<div class="wc-outter" v-loading="load">
<v-label-div title="微博人物画像">
<div>
<v-tab-group
@ -89,6 +89,7 @@ export default {
//
getData() {
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getSexMergeWeiBo(obj).then((res) => {
let data = res.data || {};
let RegionWeiBo = data.RegionWeiBo;
@ -98,6 +99,7 @@ export default {
this.attestation = this.toArr(attestation);
this.sex = this.toArr(sex);
this.doVal(this.sex);
this.load = false;
});
},
//

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-14 10:11:41
* @LastEditTime: 2021-10-14 10:22:06
* @LastEditTime: 2021-11-09 13:16:55
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/weiboCommunicationTrend/index.vue
-->
<template>
<div class="wct-outter">
<div class="wct-outter" v-loading="load">
<v-label-div title="微博传播趋势">
</v-label-div>
<div class="wct-inner">

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-14 10:24:56
* @LastEditTime: 2021-10-14 10:46:41
* @LastEditTime: 2021-11-09 13:17:24
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/weiboContentType/index.vue
-->
<template>
<div class="wct-outter">
<div class="wct-outter" v-loading="load">
<v-label-div title="微博内容类型"> </v-label-div>
<div class="wct-inner">
<div class="d1">
@ -79,8 +79,8 @@ export default {
getWtypeWeiBo0528(obj).then((res) => {
let data = res.data || [];
this.doVal(data);
this.load = false;
});
console.log();
},
doVal(arr = []) {
let total = 0;

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-14 19:15:58
* @LastEditTime: 2021-10-14 19:39:06
* @LastEditTime: 2021-11-09 13:18:14
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/weiboSpreadFission/index.vue
-->
<template>
<div class="wsf-outter">
<div class="wsf-outter" v-loading="load">
<v-label-div title="微博传播裂变">
</v-label-div>
<div class="wsf-inner">
@ -25,6 +25,7 @@ export default {
data() {
return {
opt: {},
load: false,
form: {
token:"",
sBrand:""
@ -39,8 +40,10 @@ export default {
methods: {
drawGraph() {
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getGraphData(obj).then(res => {
this.opt = createOpt(res.data)
this.opt = createOpt(res.data);
this.load = false;
});
}
}

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-14 19:41:24
* @LastEditTime: 2021-11-05 10:02:09
* @LastEditTime: 2021-11-09 13:20:35
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/weiboTonalDistribution/index.vue
-->
<template>
<div class="wtd-outter">
<div class="wtd-outter" v-loading="load">
<v-label-div title="调性分布"> </v-label-div>
<div class="wtd-inner">
<div class="wtd-item" v-for="(value,key) in obj"
@ -26,6 +26,7 @@ export default {
name: "wtd-outter",
data() {
return {
load: false,
form: {
token: "",
sBrand: "",
@ -49,6 +50,7 @@ export default {
methods: {
getData() {
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getBoauthenAffectionsWeiBo0528(obj).then(res => {
let data = res.data;
data.forEach(ele => {
@ -85,6 +87,7 @@ export default {
break;
}
})
this.load = false;
});
},
},

@ -1,13 +1,13 @@
<!--
* @Author: your name
* @Date: 2021-10-14 11:25:20
* @LastEditTime: 2021-10-14 15:06:40
* @LastEditTime: 2021-11-09 13:21:04
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/weiboUserActiveArea/index.vue
-->
<template>
<div class="wua-outter">
<div class="wua-outter" v-loading="load">
<v-label-div title="微博用户活跃地区"> </v-label-div>
<div class="wua-inner">
<div class="d1">
@ -28,6 +28,7 @@ export default {
name: "weiboUserActiveArea",
data() {
return {
load: false,
form: {
sBrand: "",
token: "",
@ -62,6 +63,7 @@ export default {
let dm = arr //
this.opt1 = createOptD1(dx, ds);
this.opt2 = createOptD2(dm);
this.load = false;
});
},
//

Loading…
Cancel
Save