阿丽 4 years ago
commit 141405f6f1

16427
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -0,0 +1,74 @@
import httpService from "@/request"
export function getBrandWeiBoCount0528(params) {
let obj = Object.assign({action: 'getBrandWeiBoCount0528', sType: 'BrandWeiBo'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
export function getAffections(params) {
let obj = Object.assign({action: 'getAffections', sType: 'BrandWeiBo'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
export function getCountTime0528(params) {
let obj = Object.assign({action: 'getCountTime0528', sType: 'BrandWeiBo'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
export function getDirectWeiBo0528(params) {
let obj = Object.assign({action: 'getDirectWeiBo0528', sType: 'BrandWeiBo'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
//微博人物画像-男女比例-认证与非认证
export function getSexMergeWeiBo(params) {
let obj = Object.assign({action: 'getSexMergeWeiBo', sType: 'BrandWeiBo'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
//微博活跃用户地区
export function getRegionWeiBo(params) {
let obj = Object.assign({action: 'getRegionWeiBo', sType: 'BrandWeiBo'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}

@ -6,10 +6,14 @@
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/api/getEchars/index.js * @FilePath: /data-show/src/api/getEchars/index.js
*/ */
import httpService from "@/request" import axios from 'axios';
export function getGraphData() { export function getGraphData() {
return httpService({ return new Promise((resolve, reject) => {
url: `/echarsData/npmdepgraph.min10.json`, let url = `/echarsData/npmdepgraph.min10.json`;
method: 'get' axios.get(url).then(res => {
resolve(res)
}).catch(() => {
reject(false)
})
}) })
} }

@ -6,11 +6,16 @@
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/api/getMap/index.js * @FilePath: /data-show/src/api/getMap/index.js
*/ */
import httpService from "@/request" import axios from 'axios';
export function createMap(name) { export function createMap(name) {
return httpService({ return new Promise((resolve, reject) => {
url: `/map/${name}.json`, let url = `/map/${name}.json`;
method: 'get' axios.get(url).then(res => {
resolve(res)
}).catch(() => {
reject(false)
}) })
})
} }

@ -1,7 +1,7 @@
/* /*
* @Author: your name * @Author: your name
* @Date: 2021-10-08 09:26:29 * @Date: 2021-10-08 09:26:29
* @LastEditTime: 2021-11-03 17:08:47 * @LastEditTime: 2021-11-04 15:06:16
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/router/index.js * @FilePath: /data-show/src/router/index.js
@ -107,13 +107,13 @@ const router = [
{ {
path: '/eventComparison', path: '/eventComparison',
name: "eventComparison", name: "eventComparison",
desc: "事件对比", desc: "事件洞察-事件对比",
component: EventComparison component: EventComparison
}, },
{ {
path: '/eventDEC', path: '/eventDEC',
name: "eventDEC", name: "eventDEC",
desc: "事件详情", desc: "事件洞察-事件详情",
component: EventDEC component: EventDEC
}, },
{ {
@ -134,6 +134,7 @@ const router = [
desc: "营销对比", desc: "营销对比",
component: mcIndex component: mcIndex
}, },
] ]
}, },

@ -10,7 +10,7 @@
* 大数字转换将大额数字转换为万千万亿等 * 大数字转换将大额数字转换为万千万亿等
* @param value 数字值 * @param value 数字值
*/ */
export function bigNumberTransform (value) { export function bigNumberTransform(value) {
const newValue = ['', '', ''] const newValue = ['', '', '']
let fr = 1000 let fr = 1000
let num = 3 let num = 3
@ -61,12 +61,20 @@
newValue[1] = '' newValue[1] = ''
} }
return newValue.join('') return newValue.join('')
} }
// 对数组中某个对象值进行排序 // 对数组中某个对象值由小到大进行排序
export function compare(property){ export function compare(property) {
return function(a,b){ return function (a, b) {
let value1 = a[property]; let value1 = a[property];
let value2 = b[property]; let value2 = b[property];
return value1 - value2; return value1 - value2;
} }
} }
// 对数组中某个对象值由大到小进行排序
export function comparePig(property) {
return function (a, b) {
let value1 = a[property];
let value2 = b[property];
return value2 - value1;
}
}

@ -1,7 +1,7 @@
<!-- <!--
* @Author: xw * @Author: xw
* @Date: 2021-10-11 18:42:58 * @Date: 2021-10-11 18:42:58
* @LastEditTime: 2021-11-01 13:50:31 * @LastEditTime: 2021-11-04 14:13:42
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: 品牌数据 * @Description: 品牌数据
* @FilePath: /data-show/src/views/BrandInsight/brandData/index.vue * @FilePath: /data-show/src/views/BrandInsight/brandData/index.vue
@ -23,7 +23,7 @@
<span>{{item.value}}</span> <span>{{item.value}}</span>
</div> </div>
</template> </template>
<span class="s2">{{count}}</span> <span class="s2">{{count|formatMoney(0,'',',')}}</span>
</a-popover> </a-popover>
</div> </div>
<div class="bd-o-d1" style="margin-top: 16px"> <div class="bd-o-d1" style="margin-top: 16px">

@ -1,7 +1,7 @@
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2021-10-19 19:45:01 * @Date: 2021-10-19 19:45:01
* @LastEditTime: 2021-10-20 10:40:18 * @LastEditTime: 2021-11-04 16:10:57
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDEC/esprocess/index.vue * @FilePath: /data-show/src/views/EventDEC/esprocess/index.vue
@ -101,6 +101,12 @@
<script> <script>
export default { export default {
name: "esprocess", name: "esprocess",
data() {
return {
m1: require("../../../assets/images/EventInsight/img_ct.png"),
m2: require("../../../assets/images/EventInsight/img_lt.png"),
}
}
}; };
</script> </script>

@ -1,7 +1,7 @@
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2021-10-19 19:05:36 * @Date: 2021-10-19 19:05:36
* @LastEditTime: 2021-10-20 10:40:07 * @LastEditTime: 2021-11-04 16:06:20
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDEC/incidentSpreadSituation/index.vue * @FilePath: /data-show/src/views/EventDEC/incidentSpreadSituation/index.vue
@ -48,6 +48,11 @@ export default {
}, },
], ],
} }
},
methods: {
handleChange() {
}
} }
}; };
</script> </script>

@ -1,7 +1,7 @@
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2021-10-19 20:00:49 * @Date: 2021-10-19 20:00:49
* @LastEditTime: 2021-10-20 10:40:51 * @LastEditTime: 2021-11-04 16:07:49
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDEC/mediaInterpretationEc/index.vue * @FilePath: /data-show/src/views/EventDEC/mediaInterpretationEc/index.vue
@ -28,23 +28,30 @@
</template> </template>
<script> <script>
import createOpt from "./opt" import createOpt from "./opt";
export default { export default {
name: "mediaInterpretationEc", name: "mediaInterpretationEc",
data() { data() {
return { return {
opt: createOpt(), opt: createOpt(),
config: { config: {
headerBGC: "#0F2A4D", headerBGC: "#0c203b",
oddRowBGC: "rgba(69, 149, 244, 0);", oddRowBGC: "#173b6d",
evenRowBGC: "#0F2A4D;", evenRowBGC: "rgba(69, 149, 244, 0)",
columnWidth: [660], columnWidth: [230],
rowNum: 10,
header: ["标题", "媒体报道数量"], header: ["标题", "媒体报道数量"],
data: [ data: [
["为“PLUS”正名欧尚X7 PLUS越", "33家媒体报道"], ["为“PLUS”正名欧尚X7 PLUS越", "33家媒体报道"],
["五菱星辰内饰谍照曝光,预计第三季度正式上", "33家媒体报道"], [
"五菱星辰内饰谍照曝光,预计第三季度正式上",
"33家媒体报道",
],
["吉利博越X将于8月27日正式亮相 外观设", "33家媒体报道"], ["吉利博越X将于8月27日正式亮相 外观设", "33家媒体报道"],
["吉利汽车上半年财报出炉:营收、净利双双上", "21家媒体报道"], [
"吉利汽车上半年财报出炉:营收、净利双双上",
"21家媒体报道",
],
["WEY玛奇朵到店实拍新车将于8月27日", "21家媒体报道"], ["WEY玛奇朵到店实拍新车将于8月27日", "21家媒体报道"],
], ],
}, },

@ -1,7 +1,7 @@
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2021-10-19 19:35:25 * @Date: 2021-10-19 19:35:25
* @LastEditTime: 2021-10-20 10:42:19 * @LastEditTime: 2021-11-04 16:04:07
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDEC/tonalCommunicationPosture/index.vue * @FilePath: /data-show/src/views/EventDEC/tonalCommunicationPosture/index.vue
@ -49,6 +49,9 @@ export default {
], ],
}; };
}, },
methods: {
handleChange() {}
}
}; };
</script> </script>

@ -1,7 +1,7 @@
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2021-10-13 11:31:08 * @Date: 2021-10-13 11:31:08
* @LastEditTime: 2021-10-13 15:14:23 * @LastEditTime: 2021-11-04 14:06:41
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDetails/eventCorrelation/index.vue * @FilePath: /data-show/src/views/EventDetails/eventCorrelation/index.vue
@ -23,7 +23,7 @@
</div> </div>
</template> </template>
<div class="d1"> <div class="d1">
<span class="s1">{{zolNum}}</span> <span class="s1">{{zolNum|formatMoney(0,'',',')}}</span>
<span class="s2">事件关联数量()</span> <span class="s2">事件关联数量()</span>
</div> </div>
</a-popover> </a-popover>

@ -1,7 +1,7 @@
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2021-10-18 09:34:53 * @Date: 2021-10-18 09:34:53
* @LastEditTime: 2021-11-02 18:23:06 * @LastEditTime: 2021-11-04 16:00:29
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventInsight/IndustryTOPHE/index.vue * @FilePath: /data-show/src/views/EventInsight/IndustryTOPHE/index.vue
@ -12,24 +12,24 @@
<v-label-div title="行业TOP热点事件"> <v-label-div title="行业TOP热点事件">
</v-label-div> </v-label-div>
<div class="itp-inner"> <div class="itp-inner">
<dv-scroll-board :config="config" :style="{ width: '100%', height: '100%' }" @click="handlerSs"/> <dv-scroll-board :config="config" :style="{ width: '100%', height: '100%' }" @click="handlerSs" />
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {getHotEventsList} from "@/api/EventInsight" import { getHotEventsList } from "@/api/EventInsight";
export default { export default {
name: "industryTOPHE", name: "industryTOPHE",
data() { data() {
return { return {
load: false, load: false,
form: { form: {
token: "" token: "",
}, },
config: {}, config: {},
list: [],
}; };
}, },
created() { created() {
@ -38,34 +38,42 @@ export default {
}, },
methods: { methods: {
goDetails() { goDetails() {
this.$router.push({path: '/eventDEC'}) this.$router.push({ path: "/eventDEC" });
}, },
getData() { getData() {
this.load = true; this.load = true;
let obj = Object.assign({}, this.getCommTime, this.form); let obj = Object.assign({}, this.getCommTime, this.form);
getHotEventsList(obj).then(res => { getHotEventsList(obj).then((res) => {
let data = res.data || []; let data = res.data || [];
this.list = data;
let arr = []; let arr = [];
data.forEach(ele => { data.forEach((ele) => {
let o = [`<span style="cursor: pointer;">${ele.events_title}</span>`, ele.events_influence, ele.events_type, ele.events_brand]; let o = [
arr.push(o) `<span style="cursor: pointer;">${ele.events_title}</span>`,
}) ele.events_influence,
ele.events_type,
ele.events_brand,
];
arr.push(o);
});
this.config = { this.config = {
headerBGC: "#0c203b", headerBGC: "#0c203b",
oddRowBGC: "#173b6d", oddRowBGC: "#173b6d",
evenRowBGC: "rgba(69, 149, 244, 0)", evenRowBGC: "rgba(69, 149, 244, 0)",
columnWidth: [900], columnWidth: [900],
rowNum: 6, rowNum: 6,
header: ["事件标题", "影响力","类型","关联品牌"], header: ["事件标题", "影响力", "类型", "关联品牌"],
data: arr, data: arr,
}; };
this.load = false; this.load = false;
}) });
},
handlerSs(obj) {
let rowIndex = obj.rowIndex;
let row = this.list[rowIndex];
this.$router.push({path: '/eventDEC', query: {events_id: row.events_id}})
},
}, },
handlerSs() {
}
}
}; };
</script> </script>

@ -15,36 +15,73 @@
</v-label-div> </v-label-div>
<div class="wd-d1-bd"> <div class="wd-d1-bd">
<div class="d1"> <div class="d1">
奥迪 {{ form.sBrand }}
</div> </div>
<div class="d2" style="margin-left: 114px"> <div class="d2" style="margin-left: 114px">
<img class="dd1" src="../../assets/images/BrandInsight/ic_xxzl.png" /> <img
class="dd1"
src="../../assets/images/BrandInsight/ic_xxzl.png"
/>
<div class="dd2"> <div class="dd2">
<span class="s1">74,073,195</span> <span class="s1">{{ countObj.count }}</span>
<span class="s2">信息总量</span> <span class="s2">信息总量</span>
</div> </div>
</div> </div>
<div class="d2"> <div class="d2">
<img class="dd1" src="../../assets/images/BrandInsight/ic_dvsl.png" /> <img
class="dd1"
src="../../assets/images/BrandInsight/ic_dvsl.png"
/>
<div class="dd2"> <div class="dd2">
<span class="s1">16578</span> <span class="s1">{{ countObj.vCount }}</span>
<span class="s2">参与大V数量</span> <span class="s2">参与大V数量</span>
</div> </div>
</div> </div>
<div class="d2"> <div class="d2">
<img class="dd1" src="../../assets/images/BrandInsight/ic_yhs.png" /> <img
class="dd1"
src="../../assets/images/BrandInsight/ic_yhs.png"
/>
<div class="dd2"> <div class="dd2">
<span class="s1">13200</span> <span class="s1">{{ countObj.userCount }}</span>
<span class="s2">参与用户数</span> <span class="s2">参与用户数</span>
</div> </div>
</div> </div>
<div class="d2"> <div class="d2">
<img class="dd1" src="../../assets/images/BrandInsight/ic_yqdx.png" /> <img
class="dd1"
src="../../assets/images/BrandInsight/ic_yqdx.png"
/>
<a-popover title="舆情调性">
<template slot="content">
<template v-for="(item, key) in countObj2">
<div class="pd-item" :key="key">
<span >{{key}}</span>
<span>{{item}}</span>
</div>
</template>
</template>
<div class="dd3"> <div class="dd3">
<span class="s3" style="background: #3373CC"></span> <span
<span class="s3" style="background: #54BF93;width: 69px"></span> class="s3"
<span class="s3" style="background: #CC9D12;width: 96px"></span> :style="{ width: (countObj2['正面'] / total) * width + 'px' }"
></span>
<span
class="s3"
:style="{
width: (countObj2['中性'] / total) * width + 'px',
background: '#54BF93',
}"
></span>
<span
class="s3"
:style="{
width: (countObj2['负面'] / total) * width + 'px',
background: '#CC9D12',
}"
></span>
</div> </div>
</a-popover>
</div> </div>
</div> </div>
</div> </div>
@ -82,7 +119,9 @@ import weiboWordCloud from "./weiboWordCloud";
import weiboSpreadFission from "./weiboSpreadFission"; import weiboSpreadFission from "./weiboSpreadFission";
import weiboTonalDistribution from "./weiboTonalDistribution"; import weiboTonalDistribution from "./weiboTonalDistribution";
import positiveViewKOL from "./positiveViewKOL"; import positiveViewKOL from "./positiveViewKOL";
import negativeOpinionKOL from "./negativeOpinionKOL" import negativeOpinionKOL from "./negativeOpinionKOL";
import { getBrandWeiBoCount0528 } from "@/api/WeiboDetails/index.js";
import { getAffections } from "@/api/WeiboDetails/index.js";
export default { export default {
name: "WeiboDetails", name: "WeiboDetails",
components: { components: {
@ -96,12 +135,54 @@ export default {
weiboSpreadFission, // weiboSpreadFission, //
weiboTonalDistribution, // weiboTonalDistribution, //
positiveViewKOL, // KOL positiveViewKOL, // KOL
negativeOpinionKOL // KOL negativeOpinionKOL, // KOL
},
data() {
return {
width: 200,
form: {
token: "",
sBrand: "",
},
countObj: {
carseriesCount: 0,
count: 0,
userCount: 0,
vCount: 0,
},
countObj2: {
正面: 0,
中性: 0,
负面: 0,
},
total: 0,
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || "奥迪";
this.getData();
}, },
methods: { methods: {
goback() { goback() {
this.$router.go(-1); this.$router.go(-1);
}, },
getData() {
let obj = Object.assign({}, this.getCtime2, this.form);
getBrandWeiBoCount0528(obj).then((res) => {
let data = res.data;
this.countObj = Object.assign(this.countObj, data);
});
getAffections(obj).then((res) => {
let data = res.data || {};
let total = 0;
for (let key in data) {
total += data[key] * 1;
}
this.countObj2 = Object.assign(this.countObj2, data);
this.total = total;
});
},
}, },
}; };
</script> </script>
@ -167,6 +248,7 @@ export default {
height: 33px; height: 33px;
display: inline-block; display: inline-block;
margin-right: 2px; margin-right: 2px;
background: #3373cc;
} }
} }
} }
@ -200,4 +282,11 @@ export default {
justify-content: flex-start; justify-content: flex-start;
margin-top: 16px; margin-top: 16px;
} }
.pd-item {
display: flex;
justify-content: space-between;
color: #fff;
border-bottom: 1px solid #173b6d;
padding: 10px;
}
</style> </style>

@ -10,7 +10,10 @@
<div class="wc-outter"> <div class="wc-outter">
<v-label-div title="微博人物画像"> <v-label-div title="微博人物画像">
<div> <div>
<v-tab-group :btns="['性别', '认证', '分类']"></v-tab-group> <v-tab-group
:btns="['性别', '认证', '分类']"
@change="handlerTab"
></v-tab-group>
</div> </div>
</v-label-div> </v-label-div>
<div class="wc-inner"> <div class="wc-inner">
@ -18,24 +21,126 @@
<v-echarts :opt="opt"></v-echarts> <v-echarts :opt="opt"></v-echarts>
</div> </div>
<div class="d2"> <div class="d2">
<v-label-ctx label="男性" cont="2200" percentage="25%" color="#3373CC" :eStyle="{ height: '137px' }"></v-label-ctx> <vue-scroll>
<v-label-ctx label="女性" cont="2200" percentage="25%" color="#a58115" :eStyle="{ height: '137px' }"></v-label-ctx> <v-label-ctx
<v-label-ctx label="未知" cont="2200" percentage="25%" color="#54BF93 " :eStyle="{ height: '137px' }"></v-label-ctx> v-for="(item, index) in labelArr"
:key="index"
:label="item.key"
:cont="item.value"
:percentage="((item.value / total) * 100).toFixed(2) + '%'"
:color="colors[index]"
:eStyle="{ height: '8.54rem' }"
></v-label-ctx>
</vue-scroll>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import createOpt from "./opt" import { getSexMergeWeiBo } from "@/api/WeiboDetails";
import createOpt from "./opt";
export default { export default {
name: "weiboCharacters", name: "weiboCharacters",
data() { data() {
return { return {
opt: createOpt() load: false,
form: {
sBrand: "",
token: "",
},
RegionWeiBo: [],
attestation: [],
sex: [],
total: 0,
labelArr: [],
opt: createOpt(),
colors: [
"#54BF93",
"#3373CC",
"#CC9D12",
"#f15c80",
"#e4d354",
"#8085e8",
"#8d4653",
"#91e8e1",
"#f7a35c",
"#90ed7d",
"#54BF93",
"#3373CC",
"#CC9D12",
"#f15c80",
"#e4d354",
"#8085e8",
"#8d4653",
"#91e8e1",
"#f7a35c",
"#90ed7d",
],
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || this.brand;
this.getData();
},
methods: {
//
getData() {
let obj = Object.assign({}, this.getCtime2, this.form);
getSexMergeWeiBo(obj).then((res) => {
let data = res.data || {};
let RegionWeiBo = data.RegionWeiBo;
let attestation = data.attestation;
let sex = data.sex;
this.RegionWeiBo = this.toArr(RegionWeiBo);
this.attestation = this.toArr(attestation);
this.sex = this.toArr(sex);
this.doVal(this.sex);
});
},
//
toArr(obj) {
let arr = [];
for (let key in obj) {
let o = {
key: key,
value: obj[key],
};
arr.push(o);
} }
return arr;
},
//
doVal(arr = []) {
let total = 0;
arr.forEach((ele) => {
total += ele.value * 1;
});
this.total = total;
this.labelArr = arr;
this.opt = createOpt(this.labelArr, this.colors);
},
//
handlerTab(n) {
switch (n) {
case 0:
this.doVal(this.sex);
break;
case 1:
this.doVal(this.attestation);
break;
case 2:
this.doVal(this.RegionWeiBo);
break;
default:
this.doVal(this.sex);
break;
} }
} },
},
};
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

@ -1,74 +1,69 @@
/* /*
* @Author: your name * @Author: your name
* @Date: 2021-10-12 15:14:58 * @Date: 2021-10-09 09:49:50
* @LastEditTime: 2021-10-14 10:43:47 * @LastEditTime: 2021-10-28 13:07:24
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/views/BrandInsight/weiboPortraits/opt.js * @FilePath: /data-show/src/views/Index/userPortrait/opt.js
*/ */
import * as echarts from "echarts"; import * as echarts from "echarts";
export default function createOpt() { // let colors = ['#3373CC', '#CC9D12', '#54BF93','#f15c80', '#e4d354', '#8085e8', '#8d4653', '#91e8e1','#f7a35c','#90ed7d']
function createData(ds = [], colors) {
let arr = [];
ds.map((ele, index) => {
let obj = {
value: ele.value,
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[index]
}])
}
}
arr.push(obj)
})
return arr;
}
export default function createOpt(ds = [], color = []) {
const data = createData(ds, color);
return { return {
series: [ series: [
{ {
name: 'Access From0', name: 'Access From0',
type: 'pie', type: 'pie',
radius: ['63%', '77%'], radius: ['65%', '80%'],
avoidLabelOverlap: false, avoidLabelOverlap: false,
label: { label: {
show: false, show: false,
position: 'center', position: 'center',
fontSize: '40', lineHeight: 30
color: "#ffff",
}, },
emphasis: { emphasis: {
label: { label: {
show: true, show: true,
fontSize: '40', fontSize: '16',
color: "#ffff", color: "#ffff",
formatter: (p)=>{ fontWeight: 'bold',
return p.data.name + '\n' + p.data.value; formatter: function (p) {
}, return `${p.data.name}\n${p.percent}%\n${p.data.value}`
}
} }
}, },
labelLine: { labelLine: {
show: false show: false
}, },
data: [ data: 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'
}])} },
],
}, },
{ {
name: 'Access From1', name: 'Access From1',
type: 'pie', type: 'pie',
radius: ['80%', '84%'], radius: ['86%', '94%'],
avoidLabelOverlap: false, avoidLabelOverlap: false,
label: { label: {
show: false, show: false,
@ -78,36 +73,7 @@ export default function createOpt() {
show: false show: false
}, },
center: ['50%', '50%'],//边框位置 center: ['50%', '50%'],//边框位置
data: [ data: 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'
}])} },
],
} }
] ]
} }

@ -17,13 +17,43 @@
</template> </template>
<script> <script>
import {getCountTime0528} from "@/api/WeiboDetails"
import createOpt from "./opt" import createOpt from "./opt"
export default { export default {
name: "weibo-communication-trend", name: "weibo-communication-trend",
data() { data() {
return { return {
load: false,
form: {
sBrand: "",
token: "",
},
opt: createOpt() opt: createOpt()
} }
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || this.brand;
this.getData();
},
methods: {
getData() {
this.load = true;
let obj = Object.assign({}, this.getCtime2, this.form);
getCountTime0528(obj).then(res => {
let data = res.data || [];
let dx = []; //time
let ds = []; //value
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> </script>

@ -7,13 +7,14 @@
* @FilePath: /data-show/src/views/BrandInsight/weiboVolumeTrend/opt.js * @FilePath: /data-show/src/views/BrandInsight/weiboVolumeTrend/opt.js
*/ */
import * as echarts from "echarts"; import * as echarts from "echarts";
export default function createOpt() { import { bigNumberTransform } from "@/utils/gol/dataTool"
export default function createOpt(dx = [], ds = []) {
return { return {
grid: { grid: {
top: "16px", top: 16,
left: "16px", left: 16,
right: "16px", right: "5%",
bottom: "16px", bottom: 10,
containLabel: true, containLabel: true,
}, },
tooltip: { tooltip: {
@ -32,13 +33,19 @@ export default function createOpt() {
axisTick: { axisTick: {
show: false, show: false,
}, },
axisLabel: {
formatter: (value) => {
let str = value.substring(10, 16)
return str;
}
},
axisLine: { axisLine: {
show: false, show: false,
lineStyle: { lineStyle: {
color: "#fff", color: "#fff",
}, },
}, },
data: ['00:00', '00:40', '00:80', '12:00', '16:00', '20:00', '24:00'] data: dx
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
@ -48,6 +55,12 @@ export default function createOpt() {
color: "#FFF", color: "#FFF",
}, },
}, },
axisLabel: {
formatter: (value) => {
let str = bigNumberTransform(value);
return str;
}
},
splitLine: { splitLine: {
lineStyle: { lineStyle: {
type: "dashed", // y轴分割线类型 type: "dashed", // y轴分割线类型
@ -57,7 +70,7 @@ export default function createOpt() {
}, },
series: [ series: [
{ {
data: [820, 932, 901, 934, 1290, 1330, 1320], data: ds,
type: 'line', type: 'line',
color: '#546fc5', color: '#546fc5',
areaStyle: {normal: { areaStyle: {normal: {

@ -1,70 +1,20 @@
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2021-10-14 15:54:06 * @Date: 2021-10-14 15:54:06
* @LastEditTime: 2021-10-14 18:02:11 * @LastEditTime: 2021-11-04 16:55:02
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: /data-show/src/views/WeiboDetails/weiboContentTOPVolume/index.vue * @FilePath: /data-show/src/views/WeiboDetails/weiboContentTOPVolume/index.vue
--> -->
<template> <template>
<div class="wct-outter"> <div class="wct-outter" v-loading="load">
<v-label-div title="微博内容TOP声量"> <v-label-div title="微博内容TOP声量"> </v-label-div>
</v-label-div>
<div class="wct-inner"> <div class="wct-inner">
<div class="wct-d1"> <div class="wct-d1" v-for="(item,index) in list" :key="index">
<v-echarts :opt="opt1"></v-echarts> <v-echarts :opt="item.opt"></v-echarts>
<div class="wct-d1-dd1"> <div class="wct-d1-dd1">
<span>排名<span class="ss1">01</span></span> <span>排名<span class="ss1">0{{index+1}}</span></span>
<span>声量<span class="ss1">600</span></span> <span>声量<span class="ss1">{{item.value}}</span></span>
</div>
</div>
<div class="wct-d1">
<v-echarts :opt="opt2"></v-echarts>
<div class="wct-d1-dd1">
<span>排名<span class="ss1">02</span></span>
<span>声量<span class="ss1">500</span></span>
</div>
</div>
<div class="wct-d1">
<v-echarts :opt="opt3"></v-echarts>
<div class="wct-d1-dd1">
<span>排名<span class="ss1">03</span></span>
<span>声量<span class="ss1">450</span></span>
</div>
</div>
<div class="wct-d1">
<v-echarts :opt="opt4"></v-echarts>
<div class="wct-d1-dd1">
<span>排名<span class="ss1">04</span></span>
<span>声量<span class="ss1">400</span></span>
</div>
</div>
<div class="wct-d1">
<v-echarts :opt="opt5"></v-echarts>
<div class="wct-d1-dd1">
<span>排名<span class="ss1">05</span></span>
<span>声量<span class="ss1">350</span></span>
</div>
</div>
<div class="wct-d1">
<v-echarts :opt="opt6"></v-echarts>
<div class="wct-d1-dd1">
<span>排名<span class="ss1">06</span></span>
<span>声量<span class="ss1">300</span></span>
</div>
</div>
<div class="wct-d1">
<v-echarts :opt="opt7"></v-echarts>
<div class="wct-d1-dd1">
<span>排名<span class="ss1">07</span></span>
<span>声量<span class="ss1">250</span></span>
</div>
</div>
<div class="wct-d1">
<v-echarts :opt="opt8"></v-echarts>
<div class="wct-d1-dd1">
<span>排名<span class="ss1">08</span></span>
<span>声量<span class="ss1">200</span></span>
</div> </div>
</div> </div>
</div> </div>
@ -72,19 +22,46 @@
</template> </template>
<script> <script>
import {getDirectWeiBo0528} from "@/api/WeiboDetails"
import {comparePig} from "@/utils/gol/dataTool"
import createOpt from "./opt" import createOpt from "./opt"
export default { export default {
name: "weiboContentTOPVolume", name: "weiboContentTOPVolume",
data() { data() {
return { return {
opt1: createOpt('内饰', '#306cc0', 600), load: false,
opt2: createOpt('空间', '#5ea3c2', 500), form: {
opt3: createOpt('操控', '#49aa82', 450), sBrand: "",
opt4: createOpt('舒适', '#c79911', 400), token: "",
opt5: createOpt('动力', '#316dc3', 350), },
opt6: createOpt('配置', '#5ea3c2', 300), list: [],
opt7: createOpt('外观', '#49aa82', 250), colors: ['#3373CC', '#63AECC', '#54BF93', '#CC9D12', '#3373CC', '#63AECC', '#54BF93', '#CC9D12']
opt8: createOpt('油耗', '#c79911', 200), };
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || this.brand;
this.getData();
},
methods: {
getData() {
this.load = true;
let obj = Object.assign({}, this.getCtime2, this.form);
getDirectWeiBo0528(obj).then(res => {
let data = res.data || [];
let arr = [];
data.sort(comparePig('value'));
data.forEach((ele,index) => {
let obj = {
value: ele.value,
opt: createOpt(ele.key,this.colors[index],ele.value)
}
arr.push(obj)
})
this.list = arr;
// this.opt1 = createOpt(data[0].key,'#306cc0',data[0].value);
this.load = false;
});
} }
} }
} }
@ -96,9 +73,11 @@ export default {
height: 460px; height: 460px;
border: 2px solid #0f2a4d; border: 2px solid #0f2a4d;
margin-left: 16px; margin-left: 16px;
overflow: hidden;
} }
.wct-inner { .wct-inner {
width: 100%; width: 100%;
margin-top: 16px;
height: calc(100% - 48px); height: calc(100% - 48px);
.wct-d1 { .wct-d1 {
position: relative; position: relative;
@ -106,7 +85,7 @@ export default {
height: 206px; height: 206px;
display: inline-block; display: inline-block;
.wct-d1-dd1 { .wct-d1-dd1 {
position:absolute; position: absolute;
padding: 0px 16px; padding: 0px 16px;
width: 100%; width: 100%;
height: auto; height: auto;
@ -120,7 +99,7 @@ export default {
.ss1 { .ss1 {
font-family: Bebas; font-family: Bebas;
font-size: 16px; font-size: 16px;
color: #FFFFFF; color: #ffffff;
} }
} }
} }

@ -8,7 +8,7 @@
* startAngle: 180, * startAngle: 180,
*/ */
import * as echarts from "echarts"; import * as echarts from "echarts";
export default function createOpt(name='内饰', color='#306cc0', num=500) { export default function createOpt(name, color, num) {
return { return {
tooltip: { tooltip: {
backgroundColor: "#08182F", backgroundColor: "#08182F",

@ -24,14 +24,33 @@
</template> </template>
<script> <script>
import {getDirectWeiBo0528} from "@/api/WeiboDetails"
import createOpt from "./opt"; import createOpt from "./opt";
export default { export default {
name: "weiboContentType", name: "weiboContentType",
data() { data() {
return { return {
opt: createOpt(), load: false,
form: {
sBrand: "",
token: "",
},
opt: createOpt()
}; };
}, },
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || this.brand;
this.getData();
},
methods: {
getData() {
this.load = true;
let obj = Object.assign({}, this.getCtime2, this.form);
getDirectWeiBo0528(obj);
console.log();
}
}
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

@ -8,8 +8,7 @@
--> -->
<template> <template>
<div class="wua-outter"> <div class="wua-outter">
<v-label-div title="微博用户活跃地区"> <v-label-div title="微博用户活跃地区"> </v-label-div>
</v-label-div>
<div class="wua-inner"> <div class="wua-inner">
<div class="d1"> <div class="d1">
<v-echarts :opt="opt1"></v-echarts> <v-echarts :opt="opt1"></v-echarts>
@ -22,17 +21,60 @@
</template> </template>
<script> <script>
import createOptD1 from "./opt1" import { getRegionWeiBo } from "@/api/WeiboDetails";
import createOptD2 from './opt2' import createOptD1 from "./opt1";
import createOptD2 from "./opt2";
export default { export default {
name: "weiboUserActiveArea", name: "weiboUserActiveArea",
data() { data() {
return { return {
form: {
sBrand: "",
token: "",
},
arr: [],
opt1: createOptD1(), opt1: createOptD1(),
opt2: createOptD2() opt2: createOptD2(),
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getBrand.brandname || this.brand;
this.getData();
},
methods: {
getData() {
this.load = true;
let obj = Object.assign({}, this.getCtime2, this.form);
getRegionWeiBo(obj).then((res) => {
let data = res.data || {};
this.arr = this.toArr(data);
let dx = []; //
let ds = []; //
this.arr.forEach((ele) => {
let key = ele.key;
let value = ele.value;
dx.push(key);
ds.push(value);
});
this.opt1 = createOptD1(dx, ds);
});
console.log();
},
//
toArr(obj) {
let arr = [];
for (let key in obj) {
let o = {
key: key,
value: obj[key],
};
arr.push(o);
} }
} return arr;
} },
},
};
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

@ -9,7 +9,7 @@
* @FilePath: /data-show/src/views/Index/tailInsight/opt.js * @FilePath: /data-show/src/views/Index/tailInsight/opt.js
*/ */
import * as echarts from "echarts"; import * as echarts from "echarts";
export default function createOptD1() { export default function createOptD1(dx=[],ds=[]) {
return { return {
grid: { grid: {
left: '4%', left: '4%',
@ -45,7 +45,7 @@ export default function createOptD1() {
}, },
yAxis: { yAxis: {
type: 'category', type: 'category',
data: ['山西省', '浙江省', '北京市', '江西省', '江苏省', '福建省', '山东省', '天津市'], data: dx,
axisTick: { axisTick: {
show: false, show: false,
}, },
@ -61,7 +61,7 @@ export default function createOptD1() {
name: '2011', name: '2011',
type: 'bar', type: 'bar',
barWidth: 24, barWidth: 24,
data: [500, 1000, 2220, 3000, 4000, 3000,2200, 2600], data: ds,
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
offset: 0, offset: 0,
color: '#010B19' color: '#010B19'

16429
yarn.lock

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save