diff --git a/src/api/ThemeComparisonBbs/index.js b/src/api/ThemeComparisonBbs/index.js new file mode 100644 index 0000000..49bd7c3 --- /dev/null +++ b/src/api/ThemeComparisonBbs/index.js @@ -0,0 +1,53 @@ +import httpService from "@/request" + +// 主题对比-论坛信息概括 +export function getCount0528C(params) { + let obj = Object.assign({action: 'getCount0528C', sType: 'BbsBrand',iContrastType: '4',iBBsType:'1'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} + +// 主题对比-论坛发帖趋势对比 +export function getCountTime0528C(params) { + let obj = Object.assign({action: 'getCountTime0528C', sType: 'BbsBrand',iContrastType: '4',iBBsType:'1'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} + +// 主题对比-论坛调性对比 +export function getAffectionsC(params) { + let obj = Object.assign({action: 'getAffectionsC', sType: 'BbsBrand',iContrastType: '4',iBBsType:'2'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} + +// 主题对比-论坛正面负面话题对比 +export function getTopicPosAndTopicNeg0528C(params) { + let obj = Object.assign({action: 'getTopicPosAndTopicNeg0528C', sType: 'BbsBrand',iContrastType: '4',iBBsType:'1'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} \ No newline at end of file diff --git a/src/api/ThemeComparisonRear/index.js b/src/api/ThemeComparisonRear/index.js new file mode 100644 index 0000000..9ba796a --- /dev/null +++ b/src/api/ThemeComparisonRear/index.js @@ -0,0 +1,40 @@ +import httpService from "@/request" + +// 主题对比-尾翼信息趋势 +export function getCountTime0528C(params) { + let obj = Object.assign({action: 'getCountTime0528C', sType: 'BrandWeiYi',iContrastType: '4'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} + +// 主题对比-分渠道信息量 +export function getSourcetypeC(params) { + let obj = Object.assign({action: 'getSourcetypeC', sType: 'BrandWeiYi',iContrastType: '4'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} + +// 主题对比-尾翼top媒体 +export function getSourceTopCount0528C(params) { + let obj = Object.assign({action: 'getSourceTopCount0528C', sType: 'BrandWeiYi',iContrastType: '4'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} \ No newline at end of file diff --git a/src/views/ThemeComparison/ThemeCompare.vue b/src/views/ThemeComparison/ThemeCompare.vue index 7e43b42..c0cd776 100644 --- a/src/views/ThemeComparison/ThemeCompare.vue +++ b/src/views/ThemeComparison/ThemeCompare.vue @@ -57,6 +57,36 @@ + +
+ + + + + + +
+ + + + + + + + + + +
+ + + + + + +
+ + + @@ -82,7 +112,15 @@ export default { weiboTuneComparison: (resolve) => require(['./weiboTuneComparison'], resolve), // 微博调性对比 weiboContentDirectionComparison: (resolve) => require(['./weiboContentDirectionComparison'], resolve), // 微博内容方向对比 userAreaDistribution: (resolve) => require(['./userAreaDistribution'], resolve), // 用户区域分布 - weiboUserPortrait: (resolve) => require(['./weiboUserPortrait'], resolve), // 用户区域分布 + weiboUserPortrait: (resolve) => require(['./weiboUserPortrait'], resolve), // 用户画像 + summaryAndComparisonOfForumInformation: (resolve) => require(['./summaryAndComparisonOfForumInformation'], resolve), // 论坛信息概括 + comparisonOfForumPostingTrends: (resolve) => require(['./comparisonOfForumPostingTrends'], resolve), // 论坛发帖趋势 + forumTonalComparison: (resolve) => require(['./forumTonalComparison'], resolve), // 论坛调性对比 + comparisonOfPositiveTopicsInTheForum: (resolve) => require(['./comparisonOfPositiveTopicsInTheForum'], resolve), // 论坛正面话题 + comparisonOfNegativeTopicsInForums: (resolve) => require(['./comparisonOfNegativeTopicsInForums'], resolve), // 论坛负面话题 + themeRearWingComparison: (resolve) => require(['./themeRearWingComparison'], resolve), // 尾翼趋势对比 + informationVolumeByChannel: (resolve) => require(['./informationVolumeByChannel'], resolve), // 尾翼趋势对比 + tailTOPMedia: (resolve) => require(['./tailTOPMedia'], resolve), // 尾翼趋势对比 }, methods: { handlerChangeTheme(arr) { diff --git a/src/views/ThemeComparison/comparisonOfForumPostingTrends/index.vue b/src/views/ThemeComparison/comparisonOfForumPostingTrends/index.vue new file mode 100644 index 0000000..8c024e8 --- /dev/null +++ b/src/views/ThemeComparison/comparisonOfForumPostingTrends/index.vue @@ -0,0 +1,165 @@ + + + + + + diff --git a/src/views/ThemeComparison/comparisonOfForumPostingTrends/opt.js b/src/views/ThemeComparison/comparisonOfForumPostingTrends/opt.js new file mode 100644 index 0000000..0f80c1e --- /dev/null +++ b/src/views/ThemeComparison/comparisonOfForumPostingTrends/opt.js @@ -0,0 +1,143 @@ +/* + * @Author: your name + * @Date: 2021-10-12 10:11:24 + * @LastEditTime: 2021-11-19 19:47:39 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/BrandInsight/titsopo/opt.js + */ +import { bigNumberTransform } from "@/utils/gol/dataTool" +function createData(ds = [], markData = []) { + let testData = {} + ds.forEach(item => { + item.forEach(val => { + if (testData[val.key] === undefined) { + testData[val.key] = { + name: val.key, + type: 'line', + symbol: 'none', + areaStyle: { + opacity: 0.2 + }, + emphasis: { + focus: 'series' + }, + data: [val.value], + markPoint: { + data: [], + } + } + } else { + testData[val.key].data.push(val.value) + } + }) + }) + let arr = []; + for(let key in testData) { + arr.push(testData[key]) + } + for(let i = 0;i< arr.length; i++) { + markData[i].forEach(ele => { + arr[i].markPoint.data.push( + { + name: 'Max', + xAxis: ele.timeIndex, yAxis: ele.yVal, + symbol: 'pin', + symbolSize: 16, + symbolOffset: [0, '-70%'], + } + ) + }) + } + return arr +} + +export default function createOpt(dx = [], ds = [], markData = []) { + let data = createData(ds,markData); + return { + grid: { + left: 10, + right: '5%', + bottom: 10, + top: 52, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + legend: { + icon: 'roundRect', + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 12, + x: 16, + itemWidth: 12, + itemHeight: 12 + }, + xAxis: { + type: 'category', + boundaryGap: false, + axisTick: { + show: false, + }, + axisLabel: { + formatter: (value) => { + let rex = "00:00:00"; + let isCont = false; + let str = value; + for(let i = 0;i { + let str = bigNumberTransform(value); + return str; + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } +} diff --git a/src/views/ThemeComparison/comparisonOfNegativeTopicsInForums/index.vue b/src/views/ThemeComparison/comparisonOfNegativeTopicsInForums/index.vue new file mode 100644 index 0000000..dcfd135 --- /dev/null +++ b/src/views/ThemeComparison/comparisonOfNegativeTopicsInForums/index.vue @@ -0,0 +1,130 @@ + + + + + + diff --git a/src/views/ThemeComparison/comparisonOfPositiveTopicsInTheForum/index.vue b/src/views/ThemeComparison/comparisonOfPositiveTopicsInTheForum/index.vue new file mode 100644 index 0000000..176a1f0 --- /dev/null +++ b/src/views/ThemeComparison/comparisonOfPositiveTopicsInTheForum/index.vue @@ -0,0 +1,129 @@ + + + + + + diff --git a/src/views/ThemeComparison/forumTonalComparison/index.vue b/src/views/ThemeComparison/forumTonalComparison/index.vue new file mode 100644 index 0000000..2180021 --- /dev/null +++ b/src/views/ThemeComparison/forumTonalComparison/index.vue @@ -0,0 +1,142 @@ + + + + + + diff --git a/src/views/ThemeComparison/forumTonalComparison/roundata/index.vue b/src/views/ThemeComparison/forumTonalComparison/roundata/index.vue new file mode 100644 index 0000000..6582462 --- /dev/null +++ b/src/views/ThemeComparison/forumTonalComparison/roundata/index.vue @@ -0,0 +1,68 @@ + + + + diff --git a/src/views/ThemeComparison/forumTonalComparison/roundata/opt.js b/src/views/ThemeComparison/forumTonalComparison/roundata/opt.js new file mode 100644 index 0000000..ee21b2e --- /dev/null +++ b/src/views/ThemeComparison/forumTonalComparison/roundata/opt.js @@ -0,0 +1,91 @@ +/* + * @Author: your name + * @Date: 2021-10-12 14:33:51 + * @LastEditTime: 2021-10-15 14:49:19 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/BrandInsight/weiboKol/opt.js + */ +import * as echarts from "echarts"; +function createData(obj = {}) { + if (JSON.stringify(obj) === '{}') { + return; + } + let arr = []; + for (let key in obj) { + let color = ""; + if (key === '正面') { + color = "#3373CC" + } else if (key === '负面') { + color = "#b38b14" + } else { + color = "#54BF93" + } + let o = { + value: obj[key], + name: key, + itemStyle: { + color: new echarts.graphic.LinearGradient(0, 1, 1, 0, [{ + //给颜色设置渐变色 前面4个参数,给第一个设置1,第四个设置0 ,就是水平渐变 + //给第一个设置0,第四个设置1,就是垂直渐变 + offset: 0, + color: color + }, { + offset: 1, + color: color + }]) + } + } + arr.push(o) + } + return arr +} + +export default function createOpt(obj={}) { + let data = createData(obj); + return { + series: [ + { + name: 'Access From0', + type: 'pie', + radius: ['70%', '92%'], + avoidLabelOverlap: false, + label: { + show: false, + position: 'center', + lineHeight: 28 + }, + emphasis: { + label: { + show: true, + fontSize: '18', + color: "#ffff", + fontWeight: 'bold', + formatter: function(p) { + return `${p.data.name}\n${p.percent}%\n${p.data.value}` + } + } + }, + labelLine: { + show: false + }, + data: data, + }, + { + name: 'Access From1', + type: 'pie', + radius: ['96%', '100%'], + avoidLabelOverlap: false, + label: { + show: false, + position: 'center' + }, + labelLine: { + show: false + }, + center: ['50%', '50%'],//边框位置 + data: data, + } + ] + } +} diff --git a/src/views/ThemeComparison/informationVolumeByChannel/index.vue b/src/views/ThemeComparison/informationVolumeByChannel/index.vue new file mode 100644 index 0000000..058f79b --- /dev/null +++ b/src/views/ThemeComparison/informationVolumeByChannel/index.vue @@ -0,0 +1,92 @@ + + + + + + diff --git a/src/views/ThemeComparison/informationVolumeByChannel/opt.js b/src/views/ThemeComparison/informationVolumeByChannel/opt.js new file mode 100644 index 0000000..82e736d --- /dev/null +++ b/src/views/ThemeComparison/informationVolumeByChannel/opt.js @@ -0,0 +1,162 @@ +/* + * @Author: your name + * @Date: 2021-10-15 15:15:27 + * @LastEditTime: 2021-10-15 17:44:34 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/BrandComparison/channelDistribution/opt.js + */ +import { bigNumberTransform } from "@/utils/gol/dataTool" +import * as echarts from "echarts"; +let colors = [new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#3373CC' + }, + { + offset: 1, + color: '#3373CC' + } +], false), new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#63AECC' + }, + { + offset: 1, + color: '#63AECC' + } +], false), new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#54BF93' + }, + { + offset: 1, + color: '#54BF93' + } +], false), new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#CC9D12' + }, + { + offset: 1, + color: '#CC9D12' + } +], false), new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#CC7733' + }, + { + offset: 1, + color: '#CC7733' + } +], false), new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#CC5B41' + }, + { + offset: 1, + color: '#CC5B41' + } +], false)] + +function createData(dataList = [],dx = []) { + let arr = []; + dataList.forEach(e => { + let a = []; + let Data = e.Data || {}; + dx.forEach(e => { + a.push(Data[e]) + }) + let o = { + name: e.Name, + type: 'bar', + barGap: 0, + barWidth: 13.7, + emphasis: { + focus: 'series' + }, + data: a + }; + arr.push(o) + }) + return arr; +} + +export default function createOpt(dataList = [],dx = [], brandList = []) { + let info = createData(dataList,dx); + return { + grid: { + left: 10, + right: '5%', + bottom: 10, + top: 52, + containLabel: true, + }, + color: colors, + legend: { + data: brandList, + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 12, + x: 16, + itemWidth: 12, + itemHeight: 12 + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;", + }, + xAxis: [ + { + type: 'category', + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + data: dx + } + ], + yAxis: [ + { + type: 'value', + axisLine: { + show: false, + lineStyle: { + color: "#FFF", + }, + }, + axisLabel: { + formatter: (value) => { + let str = bigNumberTransform(value); + return str; + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + } + ], + series: info + } +} \ No newline at end of file diff --git a/src/views/ThemeComparison/summaryAndComparisonOfForumInformation/index.vue b/src/views/ThemeComparison/summaryAndComparisonOfForumInformation/index.vue new file mode 100644 index 0000000..ed2aa93 --- /dev/null +++ b/src/views/ThemeComparison/summaryAndComparisonOfForumInformation/index.vue @@ -0,0 +1,139 @@ + + + + + + diff --git a/src/views/ThemeComparison/tailTOPMedia/index.vue b/src/views/ThemeComparison/tailTOPMedia/index.vue new file mode 100644 index 0000000..1f01249 --- /dev/null +++ b/src/views/ThemeComparison/tailTOPMedia/index.vue @@ -0,0 +1,120 @@ + + + + + + + diff --git a/src/views/ThemeComparison/themeRearWingComparison/index.vue b/src/views/ThemeComparison/themeRearWingComparison/index.vue new file mode 100644 index 0000000..242ced5 --- /dev/null +++ b/src/views/ThemeComparison/themeRearWingComparison/index.vue @@ -0,0 +1,166 @@ + + + + + + diff --git a/src/views/ThemeComparison/themeRearWingComparison/opt.js b/src/views/ThemeComparison/themeRearWingComparison/opt.js new file mode 100644 index 0000000..0bbcf55 --- /dev/null +++ b/src/views/ThemeComparison/themeRearWingComparison/opt.js @@ -0,0 +1,144 @@ +/* + * @Author: your name + * @Date: 2021-10-12 10:11:24 + * @LastEditTime: 2021-11-19 19:47:17 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/BrandInsight/titsopo/opt.js + */ +import { bigNumberTransform } from "@/utils/gol/dataTool" + +function createData(ds = [], markData = []) { + let testData = {} + ds.forEach(item => { + item.forEach(val => { + if (testData[val.key] === undefined) { + testData[val.key] = { + name: val.key, + type: 'line', + symbol: 'none', + areaStyle: { + opacity: 0.2 + }, + emphasis: { + focus: 'series' + }, + data: [val.value], + markPoint: { + data: [], + } + } + } else { + testData[val.key].data.push(val.value) + } + }) + }) + let arr = []; + for(let key in testData) { + arr.push(testData[key]) + } + for(let i = 0;i< arr.length; i++) { + markData[i].forEach(ele => { + arr[i].markPoint.data.push( + { + name: 'Max', + xAxis: ele.timeIndex, yAxis: ele.yVal, + symbol: 'pin', + symbolSize: 16, + symbolOffset: [0, '-70%'], + } + ) + }) + } + return arr +} + +export default function createOpt(dx = [], ds = [], markData = []) { + let data = createData(ds,markData); + return { + grid: { + left: 10, + right: '1.75%', + bottom: 10, + top: 52, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + legend: { + icon: 'roundRect', + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 12, + x: 16, + itemWidth: 12, + itemHeight: 12 + }, + xAxis: { + type: 'category', + boundaryGap: false, + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLabel: { + formatter: (value) => { + let rex = "00:00:00"; + let isCont = false; + let str = value; + for(let i = 0;i { + let str = bigNumberTransform(value); + return str; + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } +}