prod
parent
70336d19b2
commit
d9f565ec30
@ -0,0 +1,171 @@
|
||||
import httpService from "@/request"
|
||||
|
||||
// 主题分析-看板 主页
|
||||
export function getSummarizeMerge(params) {
|
||||
let obj = Object.assign({action: 'getSummarizeMerge', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-总声量趋势
|
||||
export function getVolumeTime(params) {
|
||||
let obj = Object.assign({action: 'getVolumeTime', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-核心传播媒体
|
||||
export function getCoreWebsite(params) {
|
||||
let obj = Object.assign({action: 'getCoreWebsite', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-核心传播网民
|
||||
export function getCoreDiffuse(params) {
|
||||
let obj = Object.assign({action: 'getCoreDiffuse', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-热议话题
|
||||
export function getHottalk(params) {
|
||||
let obj = Object.assign({action: 'getHottalk', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-渠道分布占比
|
||||
export function getSourcetype(params) {
|
||||
let obj = Object.assign({action: 'getSourcetype', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-渠道分布
|
||||
export function getSourcetypeTime(params) {
|
||||
let obj = Object.assign({action: 'getSourcetypeTime', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-热门词云
|
||||
export function getHotWord(params) {
|
||||
let obj = Object.assign({action: 'getHotWord', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-正面词
|
||||
export function getPositive(params) {
|
||||
let obj = Object.assign({action: 'getPositive', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-负面词
|
||||
export function getNegative(params) {
|
||||
let obj = Object.assign({action: 'getNegative', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-性别 认证
|
||||
export function getSexMerge(params) {
|
||||
let obj = Object.assign({action: 'getSexMerge', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-区域分布
|
||||
export function getRegion(params) {
|
||||
let obj = Object.assign({action: 'getRegion', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 主题分析-大V分析
|
||||
export function getVAnalyze(params) {
|
||||
let obj = Object.assign({action: 'getVAnalyze', sType: ''}, params)
|
||||
return httpService({
|
||||
url: `/api/v6.ashx`,
|
||||
method: 'post',
|
||||
data: obj,
|
||||
headers: {
|
||||
'content-type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -0,0 +1,109 @@
|
||||
|
||||
import * as echarts from "echarts";
|
||||
import { bigNumberTransform } from "@/utils/gol/dataTool"
|
||||
export default function createOpt(dx = [], ds = [], hotIndex = []) {
|
||||
let mark = [];
|
||||
hotIndex.forEach(ele => {
|
||||
let obj = {
|
||||
name: 'Max',
|
||||
xAxis: ele, yAxis: ds[ele],
|
||||
symbol: 'pin',
|
||||
symbolSize: 16,
|
||||
symbolOffset: [0, '-70%'],
|
||||
}
|
||||
mark.push(obj)
|
||||
})
|
||||
return {
|
||||
grid: {
|
||||
top: "15%",
|
||||
left: "1.5%", //3%
|
||||
right: "2.5%", //5%
|
||||
bottom: "3%",
|
||||
containLabel: true,
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
backgroundColor: "#08182F",
|
||||
color: "#fff",
|
||||
borderColor: "#3373CC",
|
||||
textStyle: {
|
||||
color: "#fff", //设置文字颜色
|
||||
},
|
||||
extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;"
|
||||
},
|
||||
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<dx.length-1;i++){
|
||||
//连续两条带小时
|
||||
if(dx[i].indexOf(rex) === -1 && dx[i+1].indexOf(rex) === -1){
|
||||
isCont = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(isCont == true) {
|
||||
str = value.substring(10, 16)
|
||||
} else {
|
||||
str = value.substring(5, 10)
|
||||
}
|
||||
return str;
|
||||
}
|
||||
},
|
||||
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: [
|
||||
{
|
||||
data: ds,
|
||||
type: 'line',
|
||||
color: '#546fc5',
|
||||
areaStyle: {normal: {
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||
offset: 0,
|
||||
color: '#546fc5'
|
||||
}, {
|
||||
offset: 1,
|
||||
color: 'rgba(0,0,0,0)'
|
||||
}]),
|
||||
}},
|
||||
markPoint: {
|
||||
data: mark,
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
@ -0,0 +1,83 @@
|
||||
|
||||
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-09 12:38:34
|
||||
* @LastEditTime: 2021-10-14 11:48:19
|
||||
* @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 createOptD1(dx=[],ds=[]) {
|
||||
return {
|
||||
grid: {
|
||||
left: 16,
|
||||
right: '5%',
|
||||
bottom: 10,
|
||||
top: "1%",
|
||||
containLabel: true
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
backgroundColor: "#08182F",
|
||||
color: "#fff",
|
||||
borderColor: "#3373CC",
|
||||
textStyle: {
|
||||
color: "#fff", //设置文字颜色
|
||||
},
|
||||
extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;"
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: "#fff",
|
||||
},
|
||||
},
|
||||
axisLabel: {
|
||||
formatter: (value) => {
|
||||
let str = bigNumberTransform(value);
|
||||
return str;
|
||||
}
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
type: "dashed", // y轴分割线类型
|
||||
color: "#012b4b",
|
||||
},
|
||||
},
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: dx,
|
||||
axisTick: {
|
||||
show: false,
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: "#fff",
|
||||
},
|
||||
},
|
||||
inverse: true
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '2011',
|
||||
type: 'bar',
|
||||
barWidth: 20,
|
||||
data: ds,
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
|
||||
offset: 0,
|
||||
color: '#010B19'
|
||||
}, {
|
||||
offset: 1,
|
||||
color: '#2f68b4'
|
||||
}]),
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-14 11:53:16
|
||||
* @LastEditTime: 2021-11-04 17:17:02
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/views/WeiboDetails/weiboUserActiveArea/opt2.js
|
||||
*/
|
||||
|
||||
export default function createOptD2(dm) {
|
||||
return {
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
backgroundColor: "#08182F",
|
||||
color: "#fff",
|
||||
borderColor: "#3373CC",
|
||||
textStyle: {
|
||||
color: "#fff", //设置文字颜色
|
||||
},
|
||||
extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;"
|
||||
},
|
||||
// geo: {
|
||||
// show: true,
|
||||
// map: 'china',
|
||||
// roam: false,//地图设置不可拖拽,固定的
|
||||
// itemStyle: {
|
||||
// normal: {
|
||||
// borderWidth: 0,
|
||||
// shadowColor: 'rgba(0,54,255, 1)',
|
||||
// shadowBlur: 100
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
visualMap: {
|
||||
type: 'continuous',
|
||||
show: false,
|
||||
min: 0,
|
||||
max: 2000,
|
||||
text: ['高', '低'],
|
||||
orient: 'horizontal',
|
||||
itemWidth: 15,
|
||||
itemHeight: 200,
|
||||
right: 0,
|
||||
bottom: 30,
|
||||
inRange: {
|
||||
color: ['#0393d2', '#75ddff']
|
||||
},
|
||||
textStyle: {
|
||||
color: 'white'
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: "微博区域",
|
||||
type: "map",
|
||||
mapType: "china",
|
||||
roam: false,
|
||||
zoom: 1,//默认地图在容器中显示zoom:1,可根据需求放大缩小地图
|
||||
left: 16,
|
||||
top: 20,
|
||||
right: 10,
|
||||
bottom: 10,
|
||||
selectedMode:'multiple',
|
||||
colorBy: 'data',
|
||||
itemStyle: {
|
||||
areaColor: '#001f5b',//地图区域背景颜色
|
||||
borderColor: '#005cf9',//地图边界颜色
|
||||
shadowColor: '#005cf9',
|
||||
emphasis: {
|
||||
areaColor: '#3066ba',//鼠标滑过区域颜色
|
||||
label: {
|
||||
color: '#fff'
|
||||
}
|
||||
}
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: false
|
||||
},
|
||||
},
|
||||
|
||||
// select: {
|
||||
// label: {
|
||||
// show: false
|
||||
// },
|
||||
// itemStyle: {
|
||||
// areaColor: '#3edffe'
|
||||
// }
|
||||
// },
|
||||
data: dm
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,129 @@
|
||||
import { getQuDao, getQingGan, getTwoTime} from "@/api/comm";
|
||||
import {getList} from "@/api/ThemeAnalizeDec"
|
||||
export default {
|
||||
//获取表格数据
|
||||
getTableData() {
|
||||
let obj = Object.assign({}, this.form);
|
||||
getList(obj).then(res => {
|
||||
let data = res.data;
|
||||
this.totalNum = res.totalNum;
|
||||
this.pagination.total = res.totalNum;
|
||||
let arr = [];
|
||||
let ids = [];
|
||||
let ssk = [...this.sk];
|
||||
data.forEach((ele) => {
|
||||
let _source = ele._source;
|
||||
let id = _source.id;
|
||||
ids.push(id);
|
||||
arr.push(_source);
|
||||
});
|
||||
if(this.tableAll) {
|
||||
ids.forEach(ele => {
|
||||
let n = this.sk.findIndex(e => {
|
||||
return ele === e;
|
||||
})
|
||||
if(n === -1) {
|
||||
ssk.push(ele);
|
||||
}
|
||||
})
|
||||
this.sk = ssk;
|
||||
}
|
||||
this.tbData = arr;
|
||||
this.tableLoading = false;
|
||||
})
|
||||
},
|
||||
// 获取时间选项
|
||||
getTime() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getTwoTime().then((res) => {
|
||||
let data = res.data;
|
||||
this.timesSel = data;
|
||||
this.form.sTimeType = this.timesSel[0].key;
|
||||
let arr = [];
|
||||
data.forEach((ele) => {
|
||||
let value = ele.value;
|
||||
arr.push(value);
|
||||
});
|
||||
this.buttonTime = arr;
|
||||
resolve(data);
|
||||
})
|
||||
.catch(() => {
|
||||
reject(false);
|
||||
});
|
||||
});
|
||||
},
|
||||
// 获取渠道
|
||||
getQuDao() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getQuDao().then((res) => {
|
||||
let data = res.data;
|
||||
let arr = [];
|
||||
data.forEach((ele) => {
|
||||
let obj = null;
|
||||
if(ele.key != -1) {
|
||||
obj = {
|
||||
label: ele.value,
|
||||
value: ele.key,
|
||||
};
|
||||
arr.push(obj);
|
||||
}
|
||||
});
|
||||
this.plainOptions = arr;
|
||||
resolve(arr);
|
||||
})
|
||||
.catch(() => {
|
||||
reject(false);
|
||||
});
|
||||
});
|
||||
},
|
||||
// 获取情感
|
||||
getQingGan() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getQingGan().then((res) => {
|
||||
let data = res.data;
|
||||
let arr = [];
|
||||
data.forEach((ele) => {
|
||||
if(ele.key != -1) {
|
||||
let obj = {
|
||||
label: ele.value,
|
||||
value: ele.key,
|
||||
};
|
||||
arr.push(obj);
|
||||
}
|
||||
});
|
||||
this.plainOptions1 = arr;
|
||||
resolve(arr);
|
||||
})
|
||||
.catch(() => {
|
||||
reject(false);
|
||||
});
|
||||
});
|
||||
},
|
||||
// 给后台传渠道
|
||||
doFormQudao(val = []) {
|
||||
let arr = [];
|
||||
val.forEach((ele) => {
|
||||
let n = this.plainOptions.findIndex((e) => {
|
||||
return e.label === ele;
|
||||
});
|
||||
if (n != -1) {
|
||||
arr.push(this.plainOptions[n].value);
|
||||
}
|
||||
});
|
||||
this.quDao = arr;
|
||||
this.form.sQuDao = arr.toString();
|
||||
},
|
||||
// 给后台传情感和负面等级
|
||||
doFormQS(val = []) {
|
||||
let qingGan = [];
|
||||
val.forEach((ele) => {
|
||||
let n1 = this.plainOptions1.findIndex((e) => {
|
||||
return e.label === ele;
|
||||
});
|
||||
if (n1 != -1) {
|
||||
qingGan.push(this.plainOptions1[n1].value);
|
||||
}
|
||||
});
|
||||
this.form.sQingGan = qingGan.toString();
|
||||
},
|
||||
}
|
@ -0,0 +1,132 @@
|
||||
export function rowSelection() {
|
||||
let a = null;
|
||||
if (!this.form.token) {
|
||||
a = null
|
||||
} else {
|
||||
a = {
|
||||
onChange: (selectedRowKeys, selectedRows) => {
|
||||
this.sk = selectedRowKeys;
|
||||
this.selectedRowKeys = selectedRowKeys.toString();
|
||||
this.selectedRows = selectedRows;
|
||||
this.secIds = selectedRowKeys;
|
||||
|
||||
},
|
||||
onSelect:(record, selected) => {
|
||||
if(!selected) {
|
||||
this.tableAll = false;
|
||||
}
|
||||
},
|
||||
selectedRowKeys: this.sk,
|
||||
onSelectAll: () => {
|
||||
this.tableAll = !this.tableAll;
|
||||
if(!this.tableAll) {
|
||||
this.sk = []
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
return a
|
||||
}
|
||||
|
||||
export default {
|
||||
//---主页面---//
|
||||
initData() {
|
||||
Promise.all([
|
||||
this.getTime(),
|
||||
this.getQuDao(),
|
||||
this.getQingGan()
|
||||
]).then(() => {
|
||||
this.form.token = this.getToken;
|
||||
this.form.sGuid = this.$route.query.sGuid;
|
||||
this.form.iTimeType = 0;
|
||||
this.form.iGroupBy = '0';
|
||||
this.form.listType = '0';
|
||||
this.form.isSourcetype = '0';
|
||||
let series = this.$route.query.series || [];
|
||||
let qudao = this.$route.query.qudao || [];
|
||||
this.doFormQudao(qudao);
|
||||
this.doFormQS(series);
|
||||
|
||||
this.form.sTimeType = this.$route.query.sTimeType || '20';
|
||||
this.form.sStartTime = this.$route.query.startTime || "";
|
||||
this.form.sEndTime = this.$route.query.endTime || "";
|
||||
if (this.form.sStartTime && this.form.sEndTime) {
|
||||
this.selTime = [this.form.sStartTime, this.form.sEndTime];
|
||||
}
|
||||
let x = this.timesSel.findIndex(ele => {
|
||||
return ele.key == this.form.sTimeType;
|
||||
})
|
||||
if(x === -1) {
|
||||
this.gValue = 0;
|
||||
} else {
|
||||
this.gValue = x;
|
||||
}
|
||||
console.log(this.form)
|
||||
this.getTableData();
|
||||
})
|
||||
},
|
||||
handlerBack() {
|
||||
this.$router.go(-1);
|
||||
},
|
||||
//前往数据看版
|
||||
goThemeBoard() {
|
||||
this.$router.push({
|
||||
path: '/ThemeBoard',
|
||||
query: {
|
||||
sGuid: this.$route.query.sGuid,
|
||||
sType: 'ZhuTiFenXiBl',
|
||||
token: this.getToken,
|
||||
website: this.form.website,
|
||||
sTitle: this.form.sTitle,
|
||||
sTimeType: this.form.sTimeType,
|
||||
sQuDao: this.form.sQuDao,
|
||||
sQingGan: this.form.sQingGan
|
||||
}
|
||||
})
|
||||
},
|
||||
//------//
|
||||
//时间
|
||||
calendarPriceRangeChange() {},
|
||||
handlerChangeTime() {},
|
||||
disabledDate() {},
|
||||
changeTime(n) {
|
||||
let ele = this.timesSel[n];
|
||||
this.form.sTimeType = ele.key;
|
||||
},
|
||||
// 选择情感和渠道的情况
|
||||
onChange(val, type) {
|
||||
this.noClick = true;
|
||||
if (type === "quDao") {
|
||||
this.qdIndeterminate = !!this.quDao.length && this.quDao.length < this.plainOptions.length;
|
||||
this.qdCheckAll = this.quDao.length === this.plainOptions.length;
|
||||
this.form.sQuDao = this.quDao.toString();
|
||||
} else if (type === "qingGan") {
|
||||
this.qgIndeterminate = !!this.qingGan.length && this.qingGan.length < this.plainOptions3.length;
|
||||
this.qgCheckAll = this.qingGan.length === this.plainOptions3.length;
|
||||
this.doFormQS(this.qingGan);
|
||||
}
|
||||
this.form.iPageIndex = 1;
|
||||
Promise.all([this.getTableData()]).then(() => {
|
||||
this.noClick = false;
|
||||
});
|
||||
},
|
||||
//渠道
|
||||
onCheckAllChangeQd() {},
|
||||
//调性
|
||||
onCheckAllChangeDx() {},
|
||||
//时间筛选
|
||||
handlerTime(activeIndex) {
|
||||
this.form.iTimeType = activeIndex;
|
||||
},
|
||||
//去重筛选
|
||||
handlerTime2(activeIndex) {
|
||||
this.form.iGroupBy = activeIndex;
|
||||
},
|
||||
// 改变页面的数据
|
||||
handlerPage(p) {
|
||||
let iPageIndex = p.current;
|
||||
this.form.iPageIndex = iPageIndex;
|
||||
this.pagination.current = iPageIndex;
|
||||
this.getTable();
|
||||
},
|
||||
}
|
Loading…
Reference in new issue