You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

217 lines
7.4 KiB

import histogram from "../../../components/option/singleColumnarOption"
import sHistogram from "../../../components/option/sColumnarOption"
import pieOption from '../../../components/option/pieOption2'
const app = getApp()
const dColor = ['#FF4852','#FFBF00', '#FF6E25', '#20CC62', '#00D6D6', '#00AAFF', '#7257FF']
Component({
data: {
imageUrl: getApp().globalData.imageUrl,
showChart: true,
brandOption: histogram([], [], [], '#0084FF'),
brandOption4: sHistogram(),
boxArr: new Array(6),
eventDist:[],
writer:[],
eventSpreadTop:[],
spreadActive:0,
eventSteps:[],
negative:[],
positive:[],
negativeWordActive:0,
pieColor: [
'background: rgb(244,72,85)',
'background: rgb(248,189,32)',
'background: rgb(245,109,47)',
'background: rgb(75,203,100)',
'background: rgb(75,214,213)',
'background: rgb(244,72,85)',
'background: rgb(248,189,32)',
'background: rgb(245,109,47)',
'background: rgb(75,203,100)',
'background: rgb(75,214,213)',
],
posList: [],
negList: [],
},
lifetimes: {
attached() {
let brandRatioTime = wx.getStorageSync('brandRatioTime')
let eventData = wx.getStorageSync('eventData')
let arr = [];
eventData.forEach(ele => {
arr.push(JSON.parse(ele));
})
this.setData({
boxArr: arr
})
let sRele = []
this.data.boxArr.forEach((ele) => {
if (ele) sRele.push(ele.events_id)
})
//事件传播渠道对比
app.globalData.request({
action: 'getSourcetypeC',
token: app.globalData.getStorage('token'),
sType: 'EventContrast',
...brandRatioTime,
iContrastType: '3',
sRele:sRele.join(',')
}).then(res => {
let xMsg = Object.keys(res[0].Data)
let data = new Array(res.length).fill([])
data = data.map(ele => {
ele = JSON.stringify(ele)
ele = JSON.parse(ele)
return ele
})
for (let [index, i] of res.entries()) {
Object.keys(i.Data).forEach(ele=>{
data[index].push(i.Data[ele])
})
}
// //横轴,数据,纵轴
this.setData({
brandOption4: sHistogram(xMsg, data, ['事件一','事件二'], dColor,35)
})
})
//事件调性分布
app.globalData.request({
action: 'getAffectionsC',
token: app.globalData.getStorage('token'),
sType: 'EventContrast',
...brandRatioTime,
iContrastType: '3',
sRele:sRele.join(',')
}).then(res=>{
let data = []
for(let i of res){
let arr = []
let sum = 0
Object.keys(i.Data).forEach(ele=>{
sum+=Number(i.Data[ele])
})
Object.keys(i.Data).forEach(ele=>{
let obj = {value:i.Data[ele],name:ele,percent:((Number(i.Data[ele]) / sum)*100).toFixed(2)}
arr.push(obj)
})
data.push(arr)
}
let newData=[]
for(let i of data){
let obj={}
obj.arr = i
obj.func = pieOption( ['#FF4852','#FFBF00', '#FF6E25', '#20CC62', '#00D6D6', '#00AAFF', '#7257FF'],i)
newData.push(obj)
}
this.setData({
eventDist:newData
})
})
//关联作者概括
app.globalData.request({
action: 'getUserOverview0528C',
token: app.globalData.getStorage('token'),
sType: 'EventContrast',
...brandRatioTime,
iContrastType: '3',
sRele:sRele.join(',')
}).then(res=>{
this.setData({
writer:res
})
})
//事件传播TOP媒体
app.globalData.request({
action: 'getSourceTopCount0528C',
token: app.globalData.getStorage('token'),
sType: 'EventContrast',
...brandRatioTime,
iContrastType: '3',
sRele:sRele.join(',')
}).then(res=>{
this.setData(
{eventSpreadTop:res}
)
})
//历程
app.globalData.request({
action: 'getListC',
token: app.globalData.getStorage('token'),
sType: 'EventContrast',
...brandRatioTime,
iContrastType: '3',
sRele:sRele.join(',')
}).then(res=>{
let arr =[[],[]]
for(let [index,i] of res.entries()){
i.Data.forEach(ele => {
let obj = {
text: ele._source.firsttime+' '+ele._source.category,
desc: ele._source.title
};
arr[index].push(obj);
});
}
this.setData({
eventSteps:arr
})
})
//正面词云
app.globalData.request({
action: 'getPositiveC',
token: app.globalData.getStorage('token'),
sType: 'EventContrast',
...brandRatioTime,
iContrastType: '3',
sRele: sRele.join(',')
}).then(res => {
let arr = [];
res.forEach(ele => {
let obj = {
name: ele.Name,
list: ele.Data
};
arr.push(obj)
});
this.setData({posList: arr})
})
//负面词云
app.globalData.request({
action: 'getNegativeC',
token: app.globalData.getStorage('token'),
sType: 'EventContrast',
...brandRatioTime,
iContrastType: '3',
sRele: sRele.join(',')
}).then(res => {
let arr = [];
res.forEach(ele => {
let obj = {
name: ele.Name,
list: ele.Data
};
arr.push(obj)
});
this.setData({negList: arr})
})
},
},
methods: {
//品牌传播top媒体
changeModalHot(event) {
let index = event.detail.index
this.setData({
spreadActive: index,
})
},
changeNegative(event) {
let index = event.detail.index
this.setData({
negativeWordActive: index,
})
},
}
})