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 @@
+
+
+
+
+
+
+
{{
+ item.name
+ }}
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
{{
+ item.name
+ }}
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
{{item.key}}
+
+

+
+ 论坛信息量
+ {{item.Count}}
+
+
+
+

+
+ 互动人数
+ {{item.commentsSum}}
+
+
+
+

+
+ 论坛主贴量
+ {{item.zhutieCount}}
+
+
+
+

+
+ 论坛评论量
+ {{item.interactCount}}
+
+
+
+
+
+
+
+
+
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
+ }
+}