从老电脑上整理出来的新版本。

prod
Marcos 6 hours ago
parent 219fe5b410
commit bead5ba6a6

14556
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -8,14 +8,16 @@
-->
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="referrer" content="no-referrer">
<link rel="icon" href="<%= BASE_URL %>sws_32.ico">
<title>硕为思汽车智能洞察系统</title>
<title>硕为思汽车行业大数据</title>
<script>
!function(p){"use strict";!function(t){var s=window,e=document,i=p,c="".concat("https:"===e.location.protocol?"https://":"http://","sdk.51.la/js-sdk-pro.min.js"),n=e.createElement("script"),r=e.getElementsByTagName("script")[0];n.type="text/javascript",n.setAttribute("charset","UTF-8"),n.async=!0,n.src=c,n.id="LA_COLLECT",i.d=n;var o=function(){s.LA.ids.push(i)};s.LA?s.LA.ids&&o():(s.LA=p,s.LA.ids=[],o()),r.parentNode.insertBefore(n,r)}()}({id:"JzApQ0m21l7hBaIP",ck:"JzApQ0m21l7hBaIP",autoTrack:true,hashMode:true});
</script>
</head>
<body>

@ -42,7 +42,7 @@ export default {
} else {
zoom = 1;
}
this.appStyle = {transform: `scaleY(${zoom})`}
this.appStyle = { transform: `scaleY(${zoom})` }
this.setZoom(zoom);
},
},
@ -59,6 +59,7 @@ body {
font-size: 62.5%;
background: #010b19;
}
#app {
width: 100%;
height: 100%;

@ -2,7 +2,7 @@ import httpService from "@/request"
// 品牌对比-论坛信息概括对比
export function getCount0528C(params) {
let obj = Object.assign({action: 'getCount0528C', sType: 'BbsBrand', iContrastType: 1}, params)
let obj = Object.assign({action: 'getCount0528C', sType: 'BbsBrand', iContrastType: 1, iBBsType: 1}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
@ -15,7 +15,7 @@ export function getCount0528C(params) {
// 品牌对比-论坛发帖趋势对比
export function getCountTime0528C(params) {
let obj = Object.assign({action: 'getCountTime0528C', sType: 'BbsBrand', iContrastType: 1}, params)
let obj = Object.assign({action: 'getCountTime0528C', sType: 'BbsBrand', iContrastType: 1, iBBsType: 1}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',

@ -2,7 +2,7 @@ import httpService from "@/request"
// 品牌对比-尾翼信息趋势
export function getCountTime0528C(params) {
let obj = Object.assign({action: 'getCountTime0528C', sType: 'BrandWeiyi', iContrastType: 1}, params)
let obj = Object.assign({action: 'getCountTime0528C', sType: 'BrandWeiYi', iContrastType: 1}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
@ -15,7 +15,7 @@ export function getCountTime0528C(params) {
// 品牌对比-分渠道信息量
export function getSourcetypeC(params) {
let obj = Object.assign({action: 'getSourcetypeC', sType: 'BrandWeiyi', iContrastType: 1}, params)
let obj = Object.assign({action: 'getSourcetypeC', sType: 'BrandWeiYi', iContrastType: 1}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
@ -28,7 +28,7 @@ export function getSourcetypeC(params) {
// 品牌对比-尾翼top媒体
export function getSourceTopCount0528C(params) {
let obj = Object.assign({action: 'getSourceTopCount0528C', sType: 'BrandWeiyi', iContrastType: 1}, params)
let obj = Object.assign({action: 'getSourceTopCount0528C', sType: 'BrandWeiYi', iContrastType: 1}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',

@ -266,3 +266,16 @@ export function getSeriesTimeCountToYear(params) {
}
})
}
// 导出专项分析
export function getToPptTask(params) {
let obj = Object.assign({action: 'getToPptTask', sType: 'ToSpecialPptV6'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}

@ -21,6 +21,19 @@ export function getEventsListH(params) {
})
}
//首页_实时动态
export function getRealListH(params) {
let obj = Object.assign({action: 'getRealTimeDataH', sType: 'Home', iTimeType: 1}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
// 首页_传播媒体TOP
export function getHomeSourceTop(params) {
let obj = Object.assign({action: 'getHomeSourceTop',sType: 'Home'}, params)
@ -58,7 +71,8 @@ export function getCheZhuTime0528(params) {
}
})
}
// 首页_热销排行
// 旧首页_热销排行
export function getCheZhuBrandCount0528(params) {
let obj = Object.assign({action: 'getCheZhuBrandCount0528',sType: 'Home'}, params)
return httpService({
@ -70,7 +84,43 @@ export function getCheZhuBrandCount0528(params) {
}
})
}
//新首页热销排行
export function newGetCheZhuBrandCount0528(params) {
let obj = Object.assign({sType: 'Home'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
//中间渠道单个查看
export function getChesQuDao(params) {
let obj = Object.assign({action:"getSourceTypeByQuDaoH",sType: 'Home'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
//中间渠道多个查看
export function getChesQuDaoMore(params) {
let obj = Object.assign({action:"getSourceTypeByQuDaoH",sType: 'Home'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
// 首页_热门词云
export function getHotWordHome(params) {
let obj = Object.assign({action: 'getHotWordHome',sType: 'Home'}, params)
@ -121,7 +171,18 @@ export function getWeiYiCountHome0528(params) {
}
})
}
//获取TOP阵地
export function getlimitWtype3H(params) {
let obj = Object.assign({action: 'getSourcelimitWtype3H'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
// 首页_晴雨表
export function getAffections0528(params) {
let obj = Object.assign({action: 'getAffections0528',sType: 'Home'}, params)
@ -147,6 +208,18 @@ export function getCrisisTime(params) {
}
})
}
// 首页_晴雨表-负面品牌
export function getByBrandH(params) {
let obj = Object.assign({action: 'getBarometerNegativeTopByBrandH',sType: 'Home'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
// 首页_传播声量TOP10
export function getHomeBrandSourceType0528(params) {

@ -19,3 +19,68 @@ export function getMyFileInfoExcel(params) {
}
})
}
// 获取用户信息
export function getUserData(params) {
let obj = Object.assign({action: 'getUserData'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
// 更新用户信息
export function updUserData(params) {
let obj = Object.assign({action: 'updUserData'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
// 发送验证码
export function getUserDataVERCode(params) {
let obj = Object.assign({action: 'getUserDataVERCode'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
// 获取预警推送
export function getSwsQyWarningConf(params) {
let obj = Object.assign({action: 'getSwsQyWarningConf'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
// 设置预警推送
export function saveSwsQyWarningConf(params) {
let obj = Object.assign({action: 'saveSwsQyWarningConf'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

@ -9,8 +9,8 @@
<template>
<div class="v-l-c-outter" :style="eStyle">
<div class="d1">
<span class="s1" :style="{background: color}"></span>
<span class="s2">{{label}}</span>
<span class="s3" :style="{borderBottom:`3px ${color} solid`,width:`${label.length}rem`}">{{label}}</span>
<!-- <span class="s1" :style="{background: color}"></span> -->
</div>
<div class="d2">
<span class="s1">{{contLabel}}</span>
@ -62,16 +62,18 @@ export default {
width: 100%;
height: 88px;
display: flex;
justify-content: space-between;
justify-content: space-around;
align-items: center;
border-bottom: 1px solid #0F2A4D;
// border-bottom: 1px solid #0F2A4D;
.d1 {
display: block;
width: 34%;
display: flex;
align-items: center;
width: 30%;
height: 36px;
.s1 {
display: block;
width: 66%;
height: 8px;
width: 70%;
height: 3px;
background: red;
}
.s2 {
@ -80,32 +82,38 @@ export default {
color: #fff;
margin-top: 10px;
}
.s3{
display: block;
font-size: 14px;
color: #fff;
width: auto;
}
}
.d2 {
width: 20%;
.s1 {
display: block;
font-size: 16px;
color: #7a8289;
font-size: 12px;
color: #fff;
}
.s2 {
display: block;
font-family: Bebas;
font-size: 18px;
color: #fff;
font-size: 12px;
color: #0697FC;
}
}
.d3 {
.s1 {
display: block;
font-size: 16px;
color: #7a8289;
font-size: 12px;
color: #fff;
}
.s2 {
display: block;
font-family: Bebas;
font-size: 18px;
color: #fff;
font-size: 12px;
color: #0697FC;
}
}
}

@ -10,6 +10,7 @@
<div class="v-m-ouuter" v-if="show">
<div class="v-m-inner" :style="eleStyle">
<v-label-div :title="title">
<slot name="head"></slot>
<span class="iconfont icon-guanbi v-m-close" @click="handlerClose"></span>
</v-label-div>
<div class="v-m-body">

@ -0,0 +1,176 @@
<template>
<div class="box" @mouseover="handleMouseEnter" @mouseleave='handleMouseLeave'>
<slot></slot>
<div class="popover" >
<div class="popover-left">
<div class="title" v-if="title">{{title}}</div>
<div>
<vue-scroll>
<div class="table">
<div>
<div class="table-row">排名</div>
<div class="table-row" v-for="(el,ind) in brand.sort" :key="ind"
:style="{color:el ==1?'#CC5B41':el ==2?'#CC7733':el == 3?'#CC9D12':''}">
{{formatNum(el)}}
</div>
</div>
<div>
<div class="table-row">品牌</div>
<div class="table-row" v-for="(el,ind) in brand.name" :key="ind">
{{el}}
</div>
</div>
<div>
<div class="table-row">传播量</div>
<div class="table-row" style="color:#0799FF;font-weight: 600;" v-for="(el,ind) in brand.num" :key="ind">
{{el}}
</div>
</div>
</div>
</vue-scroll>
</div>
</div>
<div class="popover-right">
<div class="title" v-if="title">{{title}}</div>
<div>
<vue-scroll>
<div class="table">
<div>
<div class="table-row">排名</div>
<div class="table-row" v-for="(el,ind) in carseries.sort" :key="ind"
:style="{color:el ==1?'#CC5B41':el ==2?'#CC7733':el == 3?'#CC9D12':''}">
{{formatNum(el)}}
</div>
</div>
<div>
<div class="table-row">车型</div>
<div class="table-row" v-for="(el,ind) in carseries.name" :key="ind">
{{el}}
</div>
</div>
<div>
<div class="table-row">传播量</div>
<div class="table-row" style="color:#0799FF;font-weight: 600;" v-for="(el,ind) in carseries.num" :key="ind">
{{el}}
</div>
</div>
</div>
</vue-scroll>
</div>
</div>
</div>
</div>
</template>
<script>
import { getChesQuDao } from "@/api/home";
export default {
props: {
title: String,
sQuDao: Number
},
data() {
return {
show: false,
brand: {
sort: [],
name: [],
num: [],
},
carseries: {
sort: [],
name: [],
num: [],
},
isBegin: false //
}
},
methods: {
//
formatNum(num) {
return num < 10 ? "0" + num : num
},
handleMouseEnter(e) {
if (!this.show && !this.isBegin) {
this.isBegin = true
getChesQuDao({ sQuDao: this.sQuDao, ...this.getCommTime }).then(res => {
if (res.data.length > 0) {
let info = res.data[0]
for (let e in info) {
if (e != 'key') {
info[e].forEach((el, index) => {
this[e].sort.push(index + 1);
this[e].name.push(el.key);
this[e].num.push(el.value);
});
}
}
this.show = true
this.isBegin = false
// console.log(JSON.stringify(this.brand))
// console.log(JSON.stringify(this.carseries), 'carseries')
}
})
}
},
handleMouseLeave() {
let clearArr = ['brand', 'carseries']
for (let e in clearArr) {
for (let i in this[clearArr[e]]) {
this.$set(this[clearArr[e]], i, [])
}
}
this.show = false
}
}
}
</script>
<style lang="less" scoped>
.box{
&:hover{
.popover{
display: flex;
}
}
}
.popover {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 490px;
background: rgba(15, 42, 77, 0.7);
box-shadow: 0px 0px 10px 1px rgba(51, 115, 204, 0.5);
border-radius: 2px;
backdrop-filter: blur(5px);
z-index: 99;
box-sizing: border-box;
padding: 10px 0 0;
display: flex;
color: #fff;
display: none;
.title {
font-size: 18px;
}
.table {
margin-top: 10px;
display: flex;
justify-content: space-between;
&-row {
margin-bottom: 10px;
}
}
&-left {
padding: 0 10px;
border-right: #3373cc 1px solid;
height: 100%;
width: 45%;
}
&-right {
padding: 0 10px;
height: 100%;
width: 55%;
}
}
</style>

@ -8,15 +8,16 @@
-->
<template>
<div class="v-r-container">
<div class="v-r-line" v-if="lineShow"></div>
<!-- <div class="v-r-line" v-if="lineShow"></div> -->
<div class="v-r-inner">
<div :class="ls">
<div class="hr line"></div>
<span class="s1">{{ num|numStr }}</span>
</div>
<div :class="rs">
<span class="v-r-label" @click="goKeyMedia(label)">{{label}}</span>
<div class="v-r-res">
<span class="s1">传播量</span>
<!-- <span class="s1">传播量</span> -->
<span class="s2">{{val}}</span>
</div>
</div>
@ -49,13 +50,13 @@ export default {
watch: {
num: {
handler(val) {
if(val == 1) {
if (val == 1) {
this.ls = "v-r-left-1"
this.rs = "v-r-right-1"
} else if(val == 2) {
} else if (val == 2) {
this.ls = "v-r-left-2"
this.rs = "v-r-right-2"
} else if(val == 3) {
} else if (val == 3) {
this.ls = "v-r-left-3"
this.rs = "v-r-right-3"
} else {
@ -75,7 +76,7 @@ export default {
filters: {
numStr(val) {
let str = ""
if(0<val && val<10) {
if (0 < val && val < 10) {
str = '0' + val
} else {
str = val + ''
@ -95,16 +96,26 @@ export default {
.v-r-container {
width: 206px;
height: auto;
position: relative;
.line{
position: absolute;
left: 0;
bottom: 0;
height: 2px;
border-radius: 2px;
width: 100%;
background: linear-gradient(63deg, #1D5082 0%, rgba(31,105,163,0) 100%);
}
.v-r-line {
width: 100%;
height: 1px;
background:#0a1d3b;
background: #0a1d3b;
margin-top: 6px;
}
.v-r-inner {
position: relative;
width: 100%;
height: 40px;
height: 2.8rem;
margin-top: 6px;
color: #fff;
background: #0a1d3b;
@ -113,7 +124,7 @@ export default {
.v-r-label {
display: block;
font-size: 14px;
color: #FFFFFF;
color: #ffffff;
margin-left: 30px;
font-weight: bold;
cursor: pointer;
@ -129,7 +140,7 @@ export default {
color: #9ba4af;
}
.s2 {
color: #fff;
color: #0799ff;
font-family: Bebas;
}
}
@ -156,17 +167,21 @@ export default {
justify-content: space-between;
align-items: center;
}
.v-r-left-1 {
width: 40px;
height: 40px;
text-align: center;
border: 2px solid #cc9d12;
// border: 2px solid #cc9d12;
border-radius: 40px;
.hr {
background: linear-gradient(63deg, #FF0000 0%, rgba(255,0,0,0) 100%);
}
.s1 {
color: #ffffff;
color: #ff461b;
font-size: 16px;
line-height: 36px;
text-shadow: 0px 0px 8px #cc9d12;
line-height: 40px;
// text-shadow: 0px 0px 8px #cc9d12;
font-family: Bebas;
}
}
@ -174,7 +189,7 @@ export default {
position: absolute;
width: 185px;
height: 40px;
border-top: 2px solid #CC9D12;
// border-top: 2px solid #CC9D12;
top: 0px;
left: 20px;
display: flex;
@ -185,13 +200,16 @@ export default {
width: 40px;
height: 40px;
text-align: center;
border: 2px solid #3373CC;
// border: 2px solid #3373CC;
border-radius: 40px;
.hr{
background: linear-gradient(63deg, #FFEE00 0%, rgba(254,238,0,0) 100%);
}
.s1 {
color: #ffffff;
color: #fcc31b;
font-size: 16px;
line-height: 36px;
text-shadow: 0px 0px 8px #3373CC;
line-height: 40px;
// text-shadow: 0px 0px 8px #3373CC;
font-family: Bebas;
}
}
@ -199,7 +217,7 @@ export default {
position: absolute;
width: 185px;
height: 40px;
border-top: 2px solid #3373CC;
// border-top: 2px solid #3373CC;
top: 0px;
left: 20px;
display: flex;
@ -210,13 +228,16 @@ export default {
width: 40px;
height: 40px;
text-align: center;
border: 2px solid #54BF93;
// border: 2px solid #54BF93;
border-radius: 40px;
.hr{
background: linear-gradient(63deg, #FE8D00 0%, rgba(255,142,0,0) 100%);
}
.s1 {
color: #ffffff;
color: #ff811c;
font-size: 16px;
line-height: 36px;
text-shadow: 0px 0px 8px #54BF93;
line-height: 40px;
// text-shadow: 0px 0px 8px #54BF93;
font-family: Bebas;
}
}
@ -224,7 +245,7 @@ export default {
position: absolute;
width: 185px;
height: 40px;
border-top: 2px solid #54BF93;
// border-top: 2px solid #54BF93;
top: 0px;
left: 20px;
display: flex;

@ -0,0 +1,203 @@
<template>
<div ref="table">
<vue-scroll>
<div class="table-common">
<div v-for="(el,ind) in (type==0?tbData1:tbData2)" :key="ind" style="width:100%;padding-right:10px;">
<div class="table-common-row" style="font-size:16px;justify-content: center;border:none;aspect-ratio:0;">{{el.title}}</div>
<div class="table-common-row" v-for="(i,n) in el.list" :key="n" @click="pageHandle(i)" :class="[i.sort ==1?'first':i.sort ==2?'second':i.sort == 3?'third':'','default']">
<div class="flex">
<div class="round">{{formatNum(i.sort)}}</div>
{{i.key}}
</div>
<div class="right-text">{{i.value}}</div>
</div>
</div>
</div>
</vue-scroll>
<a-modal title="提示" :getContainer="()=>$refs.table" :visible="visible" @ok="handleOk" @cancel="handleCancel">
<p>{{ ModalText }}</p>
</a-modal>
<!-- <div>
<div class="table-row">品牌</div>
<div class="table-row" v-for="(el,ind) in brand.name" :key="ind">
{{el}}
</div>
</div>
<div>
<div class="table-row">传播量</div>
<div class="table-row" style="color:#0799FF;font-weight: 600;" v-for="(el,ind) in brand.num" :key="ind">
{{el}}
</div>
</div> -->
</div>
</template>
<script>
import {
getBrandName,
getUserSeriesName,
getBrandOrSeriesLevel,
} from "@/api/comm";
export default {
props: {
tbData1: {
type: Array,
default() {
return [
]
}
},
tbData2: {
type: Array,
default() {
return [
]
}
},
type: Number
},
data() {
return {
form: {
sQueryType: 1,
},
visible: false,
ModalText: "",
}
},
methods: {
handleCancel() {
this.visible = false;
},
handleOk() {
this.$router.push("/login");
},
//
formatNum(num) {
return num < 10 ? "0" + num : num
},
pageHandle(data) {
if (!this.getToken) {
this.visible = true;
this.ModalText = "您还未登录,是否前往登录";
return;
}
// if (this.getUser.Brand.indexOf(data[0].axisValueLabel) == -1) {
// this.visible = true;
// this.ModalText = "";
// return;
// }
let ele = data;
if (this.type === 1) {
let model = ele.key;
let obj = {
token: this.getToken,
sSeriesName: model,
};
getBrandOrSeriesLevel(obj).then(() => {
getBrandName(obj).then((res) => {
this.setModel({ name: model });
this.setHeaderType(3);
this.setBrand({ brandname: res.data });
this.$router.push("/modelInsight");
});
})
} else {
let brand = ele.key;
getBrandOrSeriesLevel({
token: this.getToken,
sBrand: brand,
}).then(() => {
this.getUserSeriesName(brand); //
this.setBrand({ brandname: brand });
this.setHeaderType(3);
this.$router.push("/brandInsight");
})
}
},
//
getUserSeriesName(brandName) {
this.form.token = this.getToken;
this.form.sBrandName = brandName;
getUserSeriesName(this.form).then((res) => {
let data = res.data || [];
this.models = data;
this.chooseModel = this.models[0];
this.setModel(this.chooseModel);
});
},
}
}
</script>
<style lang="less">
.table-common {
margin-top: 5px;
display: flex;
justify-content: space-between;
color: #fff;
width: 100%;
height: 100%;
.default{
background: rgba(255,255,255,0.1);
}
&-row {
margin-bottom: 10px;
aspect-ratio: 175/49;
font-size: 14px;
display: flex;
justify-content: space-between;
align-items: center;
padding-right: 10px;
border-left: 4px solid #fff;
cursor: pointer;
.round {
width: 20%;
aspect-ratio: 1/1;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 10px;
}
&:hover {
background: rgba(243, 182, 0, 0.5);
}
}
.first {
background: rgba(255, 113, 0, 0.2);
border-left: 4px solid #ff4c23;
.round {
background-color: #ff4c23;
}
.right-text{
color: #ff4c23;
}
}
.second {
background: rgba(255, 113, 0, 0.2);
border-left: 4px solid #ff7100;
.round {
background-color: #ff7100;
}
.right-text{
color: #ff7100;
}
}
.third {
background: rgba(255, 113, 0, 0.2);
border-left: 4px solid #f3b600;
.round {
background-color: #f3b600;
}
.right-text{
color: #f3b600;
}
}
}
.flex {
display: flex;
width: 100%;
align-items: center;
}
</style>

@ -0,0 +1,64 @@
<template>
<div class="my-tabs">
<a-tabs :default-active-key="defaultKey" :activeKey="value" @change="callback" :tabBarStyle="{color:'#1BB6EC'}" size="small">
<a-tab-pane :tab="el" v-for="(el,ind) in tabTitles" :key="ind+1">
<slot></slot>
</a-tab-pane>
</a-tabs>
</div>
</template>
<script>
export default {
data() {
return {}
},
props: {
tabTitles: {
type: Array,
default() {
return []
}
},
defaultKey: {
type: Number,
default: 1
},
value: {
type: Number,
default: 1
}
},
methods: {
callback(e) {
this.$emit('input', e)
this.$emit('callback', e)
}
}
}
</script>
<style lang="less">
.ant-tabs-nav-scroll {
height: 40px !important;
background: transparent !important;
}
.ant-tabs-bar {
border: none !important;
margin-bottom: 5px;
}
.ant-tabs-nav {
.ant-tabs-tab-active {
color: #1bb6ec;
}
}
.ant-tabs-tab {
padding: 0 0px 5px 0 !important;
margin-right: 10px !important;
padding-bottom: 5px;
}
.ant-tabs {
padding: 10px;
padding-bottom: 0;
}
</style>

@ -1,11 +1,10 @@
<template>
<div class="iH-outter">
<div class="iH-left">
<a-dropdown placement="bottomLeft">
<img class="iH-left-img1" src="../../assets/images/Index/ic_cd.png" />
<a-menu slot="overlay" @click="handlerType">
<a-menu-item key="index">
<!-- <a-menu-item key="index">
<span>行业洞察</span>
</a-menu-item>
<a-menu-item key="brandInsight" v-menu="'/brandInsight'">
@ -28,17 +27,41 @@
</a-menu-item>
<a-menu-item key="myBrand" v-menu="'/myBrand'">
<span>我的品牌</span>
</a-menu-item> -->
<a-menu-item
v-for="item in menu"
:key="item.link.slice(1)"
v-menu="item.link"
>
<span>{{ item.text }}</span>
</a-menu-item>
</a-menu>
</a-dropdown>
<span class="iH-left-s1">菜单</span>
<a-select :default-value="1" :size="$vuiSize" class="selHead" v-model="sTimeType" @change="handleChange" v-if="timeShow">
<a-select-option :style="{ color: '#fff' }" v-for="item in selDatas" :value="item.key" :key="item.key">
<a-select
:default-value="1"
:size="$vuiSize"
class="selHead"
v-model="sTimeType"
@change="handleChange"
v-if="timeShow"
>
<a-select-option
:style="{ color: '#fff' }"
v-for="item in selDatas"
:value="item.key"
:key="item.key"
>
{{ item.value }}
</a-select-option>
</a-select>
<a-range-picker :size="$vuiSize" valueFormat="YYYY-MM-DD" v-if="sTimeType === selVal" @ok="handlerChangeTime">
<a-range-picker
:size="$vuiSize"
valueFormat="YYYY-MM-DD"
v-if="sTimeType === selVal"
@ok="handlerChangeTime"
>
<a-icon slot="suffixIcon" type="calendar" />
</a-range-picker>
</div>
@ -52,7 +75,7 @@
<span class="s2">{{ sClock }}</span>
<span class="s2">{{ week }}</span>
<img class="m1" src="../../assets/images/Index/ic_ry.png" />
<span class="s3">{{getUser.UserName}}</span>
<span class="s3">{{ getUser.UserName }}</span>
<a-dropdown placement="bottomRight" v-if="this.getToken">
<a class="ant-dropdown-link">
<a-icon type="down" />
@ -61,6 +84,9 @@
<a-menu-item @click="handlerMyself">
<span>个人中心</span>
</a-menu-item>
<a-menu-item @click="handleChatCar">
<span>ChatCar</span>
</a-menu-item>
<a-menu-item @click="layout">
<span>退出</span>
</a-menu-item>
@ -87,15 +113,13 @@ export default {
intDt: null,
selDatas: [],
timeShow: true,
menu: [],
};
},
watch: {
$route: {
handler(val) {
if (
val.path === "/eventDEC" ||
val.path === "/industryDataExport"
) {
if (val.path === "/eventDEC" || val.path === "/industryDataExport") {
this.timeShow = false;
} else {
this.timeShow = true;
@ -106,6 +130,7 @@ export default {
},
created() {
this.getTime();
this.menu = this.getMenu;
this.sTimeType = this.getCommTime.sTimeType || 34; //
},
mounted() {
@ -122,6 +147,11 @@ export default {
}
},
methods: {
handleChatCar() {
window.open(
`http://www.swsai.com/aspx/LoginWeb.aspx?action=sws_login&token=${this.getToken}`
);
},
goHome() {
this.setHeaderType(1);
this.$router.push("/index");
@ -153,8 +183,7 @@ export default {
this.setHeaderType(3);
} else if (obj.key === "saleRank" || obj.key === "specialAnalize") {
this.setHeaderType(4);
}
else {
} else {
this.setHeaderType(1);
}
this.$router.push({ path: `/${obj.key}` });

@ -1,48 +1,49 @@
<template>
<div class="iH-outter">
<div class="iH-left">
<a-dropdown placement="bottomLeft">
<img class="iH-left-img1" src="../../assets/images/Index/ic_cd.png" />
<a-menu slot="overlay" @click="handlerType">
<a-menu-item key="index">
<span>行业洞察</span>
</a-menu-item>
<a-menu-item key="brandInsight" v-menu="'/brandInsight'">
<span>品牌洞察</span>
</a-menu-item>
<a-menu-item key="modelInsight" v-menu="'/modelInsight'">
<span>车型洞察</span>
</a-menu-item>
<a-menu-item key="eventInsight" v-menu="'/eventInsight'">
<span>事件洞察</span>
</a-menu-item>
<a-menu-item key="marketingAnalysis" v-menu="'/marketingAnalysis'">
<span>营销分析</span>
</a-menu-item>
<a-menu-item key="saleRank" v-menu="'/saleRank'">
<span>销量排行</span>
</a-menu-item>
<a-menu-item key="specialAnalize" v-menu="'/specialAnalize'">
<span>专项分析</span>
</a-menu-item>
<a-menu-item key="myBrand" v-menu="'/myBrand'">
<span>我的品牌</span>
<a-menu-item
v-for="item in menu"
:key="item.link.slice(1)"
v-menu="item.link"
>
<span>{{ item.text }}</span>
</a-menu-item>
</a-menu>
</a-dropdown>
<span class="iH-left-s1">菜单</span>
<a-select :size="$vuiSize" class="selHead" v-model="form.sTimeType" @change="handleChange" v-if="timeShow">
<a-select-option :style="{ color: '#fff' }" v-for="item in selDatas" :value="item.key" :key="item.key">
<a-select
:size="$vuiSize"
class="selHead"
v-model="form.sTimeType"
@change="handleChange"
v-if="timeShow"
>
<a-select-option
:style="{ color: '#fff' }"
v-for="item in selDatas"
:value="item.key"
:key="item.key"
>
{{ item.value }}
</a-select-option>
</a-select>
<a-range-picker v-model="timeRange" show-time :disabled-date="disabledDate" style="margin-left: 0.5rem" :size="$vuiSize" valueFormat="YYYY-MM-DD HH:mm:ss" v-if="form.sTimeType == selVal && timeShow" @ok="handlerChangeTime">
<a-range-picker
v-model="timeRange"
show-time
:disabled-date="disabledDate"
style="margin-left: 0.5rem"
:size="$vuiSize"
valueFormat="YYYY-MM-DD HH:mm:ss"
v-if="form.sTimeType == selVal && timeShow"
@ok="handlerChangeTime"
>
<a-icon slot="suffixIcon" type="calendar" />
</a-range-picker>
</div>
<div class="iH-center">
<a @click="goHome">
@ -54,7 +55,7 @@
<span class="s2">{{ sClock }}</span>
<span class="s2">{{ week }}</span>
<img class="m1" src="../../assets/images/Index/ic_ry.png" />
<span class="s3">{{getUser.UserName}}</span>
<span class="s3">{{ getUser.UserName }}</span>
<a-dropdown placement="bottomRight" v-if="this.getToken">
<a class="ant-dropdown-link">
<a-icon type="down" />
@ -63,6 +64,9 @@
<a-menu-item @click="handlerMyself">
<span>个人中心</span>
</a-menu-item>
<a-menu-item @click="handleChatCar">
<span>ChatCar</span>
</a-menu-item>
<a-menu-item @click="layout">
<span>退出</span>
</a-menu-item>
@ -96,14 +100,19 @@ export default {
timeRange: [],
sTimeType: "",
selDatas: [],
menu: [],
//offsetDays: 86400000 * 30, //7
timeShow: true
timeShow: true,
};
},
watch: {
$route: {
handler(val) {
if (val.path === "/eventDEC" || val.path === "/eventComparison" || val.path === "/industryDataExport") {
if (
val.path === "/eventDEC" ||
val.path === "/eventComparison" ||
val.path === "/industryDataExport"
) {
this.timeShow = false;
} else {
this.timeShow = true;
@ -113,15 +122,16 @@ export default {
},
},
created() {
this.menu = this.getMenu;
this.form = Object.assign(this.form, this.getCtime2);
if(this.form.sStartTime && this.form.sEndTime) {
this.selTime = [this.form.sStartTime, this.form.sEndTime]
if (this.form.sStartTime && this.form.sEndTime) {
this.selTime = [this.form.sStartTime, this.form.sEndTime];
}
this.getSelect();
if(this.getCtime2.sTimeType) {
if (this.getCtime2.sTimeType) {
this.form.sTimeType = this.getCtime2.sTimeType;
if(this.getCtime2.sTimeType == 4) {
this.timeRange = [this.getCtime2.sStartTime, this.getCtime2.sEndTime]
if (this.getCtime2.sTimeType == 4) {
this.timeRange = [this.getCtime2.sStartTime, this.getCtime2.sEndTime];
}
}
},
@ -139,6 +149,11 @@ export default {
}
},
methods: {
handleChatCar() {
window.open(
`http://www.swsai.com/aspx/LoginWeb.aspx?action=sws_login&token=${this.getToken}`
);
},
goHome() {
this.setHeaderType(1);
this.$router.push("/index");
@ -156,11 +171,15 @@ export default {
//
handleChange() {
if (this.form.sTimeType != 4) {
this.form.sStartTime = "";
this.form.sEndTime = "";
this.setCommTime({sTimeType: this.form.sTimeType}); //
// this.form.sStartTime = "";
// this.form.sEndTime = "";
this.setCommTime({ sTimeType: this.form.sTimeType }); //
this.selTime = null;
this.reload();
} else {
if (this.getCtime2.sStartTime && this.getCtime2.sEndTime) {
this.reload();
}
}
this.setCtime2(this.form);
},

@ -1,44 +1,37 @@
<template>
<div class="iH-outter">
<div class="iH-left">
<a-dropdown placement="bottomLeft">
<img class="iH-left-img1" src="../../assets/images/Index/ic_cd.png" />
<a-menu slot="overlay" @click="handlerType">
<a-menu-item key="index">
<span>行业洞察</span>
</a-menu-item>
<a-menu-item key="brandInsight" v-menu="'/brandInsight'">
<span>品牌洞察</span>
</a-menu-item>
<a-menu-item key="modelInsight" v-menu="'/modelInsight'">
<span>车型洞察</span>
</a-menu-item>
<a-menu-item key="eventInsight" v-menu="'/eventInsight'">
<span>事件洞察</span>
</a-menu-item>
<a-menu-item key="marketingAnalysis" v-menu="'/marketingAnalysis'">
<span>营销分析</span>
</a-menu-item>
<a-menu-item key="saleRank" v-menu="'/saleRank'">
<span>销量排行</span>
</a-menu-item>
<a-menu-item key="specialAnalize" v-menu="'/specialAnalize'">
<span>专项分析</span>
</a-menu-item>
<a-menu-item key="myBrand" v-menu="'/myBrand'">
<span>我的品牌</span>
<a-menu-item
v-for="item in menu"
:key="item.link.slice(1)"
v-menu="item.link"
>
<span>{{ item.text }}</span>
</a-menu-item>
</a-menu>
</a-dropdown>
<span class="iH-left-s1">菜单</span>
<a-select :default-value="1" :size="$vuiSize" class="selHead" v-model="selVal" v-if="timeShow" @change="handlerSelect">
<a-select-option :style="{ color: '#fff' }" v-for="item in selDatas" :value="item.key" :key="item.key">
<a-select
:default-value="1"
:size="$vuiSize"
class="selHead"
v-model="selVal"
v-if="timeShow"
@change="handlerSelect"
>
<a-select-option
:style="{ color: '#fff' }"
v-for="item in selDatas"
:value="item.key"
:key="item.key"
>
{{ item.key }}
</a-select-option>
</a-select>
</div>
<div class="iH-center">
<a @click="goHome">
@ -49,8 +42,8 @@
<span class="s1">{{ clock }}</span>
<span class="s2">{{ sClock }}</span>
<span class="s2">{{ week }}</span>
<img class="m1" src="../../assets/images/Index/ic_ry.png"/>
<span class="s3">{{getUser.UserName}}</span>
<img class="m1" src="../../assets/images/Index/ic_ry.png" />
<span class="s3">{{ getUser.UserName }}</span>
<a-dropdown placement="bottomRight" v-if="this.getToken">
<a class="ant-dropdown-link">
<a-icon type="down" />
@ -59,6 +52,9 @@
<a-menu-item @click="handlerMyself">
<span>个人中心</span>
</a-menu-item>
<a-menu-item @click="handleChatCar">
<span>ChatCar</span>
</a-menu-item>
<a-menu-item @click="layout">
<span>退出</span>
</a-menu-item>
@ -69,14 +65,14 @@
</template>
<script>
import {getCheZhuTime0528} from "@/api/home"
import { getCheZhuTime0528 } from "@/api/home";
import LS from "cz-storage";
export default {
name: "iHeaderMa",
inject: ['reload'],
inject: ["reload"],
data() {
return {
selVal: '',
selVal: "",
clock: "",
sClock: "",
week: "",
@ -85,11 +81,10 @@ export default {
form: {
sTimeType: 4,
sStartTime: "",
sEndTime: ""
sEndTime: "",
},
selDatas: [
],
selDatas: [],
menu: [],
};
},
// watch: {
@ -105,7 +100,8 @@ export default {
// },
// },
created() {
this.getSelect()
this.menu = this.getMenu;
this.getSelect();
},
mounted() {
this.intDt = self.setInterval(() => {
@ -121,25 +117,30 @@ export default {
}
},
methods: {
handleChatCar() {
window.open(
`http://www.swsai.com/aspx/LoginWeb.aspx?action=sws_login&token=${this.getToken}`
);
},
goHome() {
this.setHeaderType(1);
this.$router.push("/index");
},
//
getSelect() {
getCheZhuTime0528().then(res => {
this.selDatas = res.data
getCheZhuTime0528().then((res) => {
this.selDatas = res.data;
this.selVal = this.selDatas[0].key;
this.form.sStartTime = this.selDatas[0].starttime;
this.form.sEndTime = this.selDatas[0].endtime;
this.setCtime(this.form);
})
});
},
//
handlerSelect(key) {
let n = this.selDatas.findIndex(ele => {
return ele.key === key
})
let n = this.selDatas.findIndex((ele) => {
return ele.key === key;
});
let obj = this.selDatas[n];
this.form.sStartTime = obj.starttime;
this.form.sEndTime = obj.endtime;
@ -156,14 +157,19 @@ export default {
handlerType(obj) {
if (obj.key === "marketingAnalysis") {
this.setHeaderType(2);
} else if(obj.key === 'brandInsight' || obj.key === 'modelInsight' || obj.key === "eventInsight" || obj.key === "myBrand") {
} else if (
obj.key === "brandInsight" ||
obj.key === "modelInsight" ||
obj.key === "eventInsight" ||
obj.key === "myBrand"
) {
this.setHeaderType(3);
} else if (obj.key === "saleRank" || obj.key === "specialAnalize") {
this.setHeaderType(4);
} else {
this.setHeaderType(1);
}
this.$router.push({path: `/${obj.key}`})
this.$router.push({ path: `/${obj.key}` });
},
// 退
layout() {
@ -186,7 +192,7 @@ export default {
LS.remove("mcStatus");
LS.remove("specialGuid");
this.$router.replace("/login");
}
},
},
};
</script>

@ -1,38 +1,19 @@
<template>
<div class="iH-outter">
<div class="iH-left">
<a-dropdown placement="bottomLeft">
<img class="iH-left-img1" src="../../assets/images/Index/ic_cd.png" />
<a-menu slot="overlay" @click="handlerType">
<a-menu-item key="index">
<span>行业洞察</span>
</a-menu-item>
<a-menu-item key="brandInsight" v-menu="'/brandInsight'">
<span>品牌洞察</span>
</a-menu-item>
<a-menu-item key="modelInsight" v-menu="'/modelInsight'">
<span>车型洞察</span>
</a-menu-item>
<a-menu-item key="eventInsight" v-menu="'/eventInsight'">
<span>事件洞察</span>
</a-menu-item>
<a-menu-item key="marketingAnalysis" v-menu="'/marketingAnalysis'">
<span>营销分析</span>
</a-menu-item>
<a-menu-item key="saleRank" v-menu="'/saleRank'">
<span>销量排行</span>
</a-menu-item>
<a-menu-item key="specialAnalize" v-menu="'/specialAnalize'">
<span>专项分析</span>
</a-menu-item>
<a-menu-item key="myBrand" v-menu="'/myBrand'">
<span>我的品牌</span>
<a-menu-item
v-for="item in menu"
:key="item.link.slice(1)"
v-menu="item.link"
>
<span>{{ item.text }}</span>
</a-menu-item>
</a-menu>
</a-dropdown>
<span class="iH-left-s1">菜单</span>
</div>
<div class="iH-center">
<a @click="goHome">
@ -43,8 +24,8 @@
<span class="s1">{{ clock }}</span>
<span class="s2">{{ sClock }}</span>
<span class="s2">{{ week }}</span>
<img class="m1" src="../../assets/images/Index/ic_ry.png"/>
<span class="s3">{{getUser.UserName}}</span>
<img class="m1" src="../../assets/images/Index/ic_ry.png" />
<span class="s3">{{ getUser.UserName }}</span>
<a-dropdown placement="bottomRight" v-if="this.getToken">
<a class="ant-dropdown-link">
<a-icon type="down" />
@ -53,6 +34,9 @@
<a-menu-item @click="handlerMyself">
<span>个人中心</span>
</a-menu-item>
<a-menu-item @click="handleChatCar">
<span>ChatCar</span>
</a-menu-item>
<a-menu-item @click="layout">
<span>退出</span>
</a-menu-item>
@ -63,14 +47,14 @@
</template>
<script>
import {getCheZhuTime0528} from "@/api/home"
import { getCheZhuTime0528 } from "@/api/home";
import LS from "cz-storage";
export default {
name: "iHeaderMyself",
inject: ['reload'],
inject: ["reload"],
data() {
return {
selVal: '',
selVal: "",
clock: "",
sClock: "",
week: "",
@ -79,27 +63,15 @@ export default {
form: {
sTimeType: 4,
sStartTime: "",
sEndTime: ""
sEndTime: "",
},
selDatas: [
],
selDatas: [],
menu: [],
};
},
// watch: {
// $route: {
// handler(val) {
// if (val.path === "/mcIndex") {
// this.timeShow = false;
// } else {
// this.timeShow = true;
// }
// },
// immediate: true,
// },
// },
created() {
this.getSelect()
this.menu = this.getMenu;
this.getSelect();
},
mounted() {
this.intDt = self.setInterval(() => {
@ -115,25 +87,30 @@ export default {
}
},
methods: {
handleChatCar() {
window.open(
`http://www.swsai.com/aspx/LoginWeb.aspx?action=sws_login&token=${this.getToken}`
);
},
goHome() {
this.setHeaderType(1);
this.$router.push("/index");
},
//
getSelect() {
getCheZhuTime0528().then(res => {
this.selDatas = res.data
getCheZhuTime0528().then((res) => {
this.selDatas = res.data;
this.selVal = this.selDatas[0].key;
this.form.sStartTime = this.selDatas[0].starttime;
this.form.sEndTime = this.selDatas[0].endtime;
this.setCtime(this.form);
})
});
},
//
handlerSelect(key) {
let n = this.selDatas.findIndex(ele => {
return ele.key === key
})
let n = this.selDatas.findIndex((ele) => {
return ele.key === key;
});
let obj = this.selDatas[n];
this.form.sStartTime = obj.starttime;
this.form.sEndTime = obj.endtime;
@ -150,14 +127,19 @@ export default {
handlerType(obj) {
if (obj.key === "marketingAnalysis") {
this.setHeaderType(2);
} else if(obj.key === 'brandInsight' || obj.key === 'modelInsight' || obj.key === "eventInsight" || obj.key === "myBrand") {
} else if (
obj.key === "brandInsight" ||
obj.key === "modelInsight" ||
obj.key === "eventInsight" ||
obj.key === "myBrand"
) {
this.setHeaderType(3);
} else if (obj.key === "saleRank" || obj.key === "specialAnalize") {
this.setHeaderType(4);
} else {
this.setHeaderType(1);
}
this.$router.push({path: `/${obj.key}`})
this.$router.push({ path: `/${obj.key}` });
},
// 退
layout() {
@ -180,7 +162,7 @@ export default {
LS.remove("mcStatus");
LS.remove("specialGuid");
this.$router.replace("/login");
}
},
},
};
</script>

@ -26,6 +26,7 @@ import checkView from 'vue-check-view'
import '@/utils/rem';
Vue.use(Antd);
Vue.use(dataV);
Vue.use(selfUi);
@ -33,7 +34,7 @@ Vue.use(compon);
Vue.use(mixins);
Vue.use(VueLazyComponent);
Vue.use(checkView);
Vue.use(vuescroll, {ops: createOps(true, true),name: 'vue-scroll'});
Vue.use(vuescroll, { ops: createOps(true, true), name: 'vue-scroll' });
Vue.config.productionTip = false
Vue.prototype.$vuiSize = 'small'
new Vue({

@ -141,11 +141,11 @@ export default {
},
computed: {
...mapGetters(['getZoom', 'getLoading', 'getToken', 'getUser', 'getAccount', 'getCommTime', 'getCtime', 'getCtime2', 'getHeaderType', 'getBrand', 'getModel', 'getSComparison', 'getBComparison','getTComparison', 'getMComparison', 'getEComparison', 'getLevelBtn', 'getMenu',
'getChangeSTime', 'getMcStatus','getBcStatus','getScStatus','getTcStatus','getIsLight','getCarCircle','getSpecialGuid','getWarningBrand','getWarningSeries'])
'getChangeSTime', 'getMcStatus','getBcStatus','getScStatus','getTcStatus','getIsLight','getCarCircle','getSpecialGuid','getWarningBrand','getWarningSeries','getHealth','getLatestTime'])
},
methods: {
...mapActions(["setZoom", 'setLoading', 'setToken', 'setUser', 'setAccount', 'setCommTime', 'setCtime', 'setCtime2', 'setHeaderType', 'setBrand', 'setModel', 'setSComparison', 'setBComparison','setTComparison', 'setMComparison', 'setEComparison', 'setLevelBtn', 'setMenu',
'setChangeSTime','setMcStatus','setBcStatus','setScStatus','setTcStatus','setIsLight','setCarCircle','setSpecialGuid','setWarningBrand','setWarningSeries']),
'setChangeSTime','setMcStatus','setBcStatus','setScStatus','setTcStatus','setIsLight','setCarCircle','setSpecialGuid','setWarningBrand','setWarningSeries','setHealth','setLatestTime']),
// 获取当前日期时间
getDatetime() {
let now = new Date();

@ -92,5 +92,11 @@ const actions = {
setWarningSeries: ({commit}, log) => {
commit('setWarningSeries', log)
},
setHealth: ({commit}, log) => {
commit('setHealth', log)
},
setLatestTime: ({commit}, log) => {
commit('setLatestTime', log)
},
}
export default actions

@ -95,5 +95,11 @@ const getters = {
getWarningSeries(state) {
return state.warningSeries
},
getHealth(state) {
return state.health
},
getLatestTime(state) {
return state.latestTime
},
}
export default getters

@ -151,6 +151,15 @@ const mutations = {
state.warningSeries = log;
let str = JSON.stringify(log);
LS.put('warningSeries', str, 1/8);
},
setHealth: (state, log) => {
state.health = log;
let str = JSON.stringify(log);
LS.put('health', str, 1/8);
},
setLatestTime: (state, log) => {
LS.put('latestTime', log, 1/8);
state.latestTime = log
}
}

@ -36,5 +36,7 @@ const state = {
specialGuid: LS.get('specialGuid') || '', //专项分析
warningBrand: LS.get('warningBrand') ? JSON.parse(LS.get('warningBrand')) : {}, //预警主品牌
warningSeries: LS.get('warningSeries') ? JSON.parse(LS.get('warningSeries')) : {}, //预警车型
health: LS.get('health') || 50, //健康指数
latestTime: LS.get('latestTime') || "", //最新时间
}
export default state;

@ -144,6 +144,13 @@
color: #fff;
}
.ant-time-picker-input {
background: #14335D !important;
color: #fff !important;
border-radius: 2px!important;
border: 1px solid #45B5F4!important;
}
.oddRow {
background: #14325d;
color: #fff;

@ -11,6 +11,8 @@
margin: 0 auto;
min-height: 100%;
background: #010B19;
// background-image: url('../assets/images/Index/index_bg.png');
// background-size: 100% 100%;
border-top: 1px solid transparent;
margin-top: -1px;
}

@ -34,4 +34,3 @@ export function giveMenu() {
}
return str
}

@ -9,7 +9,7 @@
<template>
<div class="d-container">
<div class="bbc-inner">
<brandCompateHeader ref="brandRef" @del="handlerDel"></brandCompateHeader>
<brandCompateHeader ref="brandRef" @del="handlerDel" @change="handlerChange"></brandCompateHeader>
<div class="mbc-inner">
<v-label-div title="品牌推荐">
</v-label-div>
@ -80,6 +80,22 @@ export default {
handlerDel(n) {
this.chooseArr[n] = null;
},
handlerChange(val) {
let handlerObj = {brandname: val, seriesname: ""};
for(let i = 0; i < this.chooseArr.length; i++) {
let n = this.chooseArr.findIndex(ele =>{
return ele && ele.brandname === handlerObj.brandname
})
if(!this.chooseArr[i] && n === -1) {
this.chooseArr[i] = handlerObj;
let obj = this.$refs.brandRef.brands[i]
obj.name = handlerObj.brandname;
obj.isDel = true;
return;
}
}
},
//
handlerSubmit() {
let arr = this.$refs.brandRef.brands || [];

@ -105,16 +105,16 @@ export default {
//
handlerBrand(arr) {
let name = arr[0].brandname;
let n = this.brands.findIndex((ele) => ele.name === name);
if (n === -1) {
let row = this.brands[this.brandIndex];
row.name = name;
row.isDel = true;
}
let filterArr = this.brands.filter((ele) => {
return ele.name;
});
this.$emit("change", filterArr);
// let n = this.brands.findIndex((ele) => ele.name === name);
// if (n === -1) {
// let row = this.brands[this.brandIndex];
// row.name = name;
// row.isDel = true;
// }
// let filterArr = this.brands.filter((ele) => {
// return ele.name;
// });
this.$emit("change", name);
},
//
handlerDel(n) {
@ -128,7 +128,7 @@ export default {
this.setBcStatus(false);
}
this.$emit("del", n);
this.$emit("change", filterArr);
// this.$emit("change", filterArr);
},
//
reCompare() {

@ -9,7 +9,7 @@
import * as echarts from "echarts";
import { bigNumberTransform } from "@/utils/gol/dataTool"
import {doStr} from "@/utils/gol/dataTool"
let colors = ['#546fc5', '#91cb74', '#f9c857', '#ed6565', '#72bfde', '#3aa272', '#fb8351'];
let colors = ['rgba(84,111,197,1)', 'rgba(145,203,116,1)', 'rgba(90,203,156,1)', 'rgba(248,200,87,1)', 'rgba(237,101,101,1)', "rgba(114,191,222,1)", 'rgba(58,162,114,1)', 'rgba(251,131,81,1)']
let dataURI = 'path://M512 149.333333c200.298667 0 362.666667 162.368 362.666667 362.666667s-162.368 362.666667-362.666667 362.666667S149.333333 712.298667 149.333333 512 311.701333 149.333333 512 149.333333z m32 298.666667h-64v256h64V448z m0-106.666667h-64v64h64v-64z'
function createData(ds = [], hotIndex = []) {
let arr = [];

@ -8,7 +8,7 @@
*/
import * as echarts from "echarts";
import { bigNumberTransform } from "@/utils/gol/dataTool"
let colors = ['#546fc5', '#91cb74', '#f9c857', '#ed6565', '#72bfde', '#3aa272', '#fb8351'];
let colors = ['rgba(84,111,197,1)', 'rgba(145,203,116,1)', 'rgba(90,203,156,1)', 'rgba(248,200,87,1)', 'rgba(237,101,101,1)', "rgba(114,191,222,1)", 'rgba(58,162,114,1)', 'rgba(251,131,81,1)']
function createData(ds = [], hotIndex = []) {
let arr = [];
for (let i = 0; i < ds.length; i++) {

@ -48,9 +48,9 @@
</v-label-div>
<div class="d1-inner">
<div class="pv-item" v-for="(item,index) in list" :key="index">
<div class="dm">
<!-- <div class="dm">
<img class="mm1" :src="item._source.profileimgurl" width="100%" height="100%" v-if="item._source.profileimgurl">
</div>
</div> -->
<div class="d-f">
<div class="d1">{{item._source.user_author}}</div>
<div class="d2">粉丝数<span class="d2-s1">{{bigNumberTransform(item._source.weibofans)}}</span></div>

@ -11,9 +11,9 @@
<div>
<div class="hpo-outter" v-loading="loadTop">
<v-label-div title="热点事件传播导向">
<!-- <v-btn @click="goPath"></v-btn>
<v-btn @click="goTheme"></v-btn> -->
<v-double-button @left="goPath" @right="goTheme" :title="['事件对比','主题分析']"></v-double-button>
<v-btn @click="goPath"></v-btn>
<!-- <v-btn @click="goTheme"></v-btn> -->
<!-- <v-double-button @left="goPath" @right="goTheme" :title="['事件对比','主题分析']"></v-double-button> -->
</v-label-div>
<div class="hpo-inner">
<v-echarts @getData="clickEchars" :opt="opt"></v-echarts>

@ -0,0 +1,74 @@
<template>
<div class="level-row" @click="handle">
<div class="left">
<div class="num" :class="[data.num==1?'red':data.num==2?'yellow':data.num ==3?'green':'']">
{{formatNum(data.num)}}
</div>
<span>{{data.key}}</span>
</div>
<div class="right">{{data.value}}</div>
</div>
</template>
<script>
export default {
data() {
return {}
},
props: {
data: {
type: Object,
default() {
return {}
}
}
},
methods: {
handle(){
this.$emit('getData',this.data)
},
//
formatNum(num) {
return num < 10 ? "0" + num : num
}
}
}
</script>
<style lang="less">
.level-row {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 14px;
color: #fff;
width: 100%;
.right{
color: #0799FF;
}
.left {
display: flex;
align-items: center;
justify-content: flex-start;
.num {
border-radius: 50%;
background: rgba(255, 255, 255, 0.2);
width: 30px;
height: 30px;
margin-right: 10px;
display: flex;
justify-content: center;
align-items: center;
}
.red{
background:#CC5B41;
}
.yellow{
background: #CC9D12;
}
.green{
background:#54BF93;
}
}
}
</style>

@ -11,34 +11,132 @@
<v-label-div title="晴雨表">
<div class="tis">
<!-- <v-pagination :data="pdata" :style="{marginRight: '0.8rem', marginTop: '0.4rem'}" @change="handlerData"></v-pagination> -->
<v-tab-group :btns="['正负调性', '负面等级']" @change="handlerChange"></v-tab-group>
<v-tab-group :btns="['整体调性', 'TOP负面']" @change="handlerChange"></v-tab-group>
</div>
</v-label-div>
<div class="bm-bd">
<v-echarts :opt="opt" @getData="clickEchars"></v-echarts>
<v-echarts v-if="tabType == 0" :opt="opt" @getData="clickEchars"></v-echarts>
<v-tabs class="box" v-else v-model="activeKey" @callback="callback" :tabTitles="tabs">
<div class="boxFlex">
<div class="w50">
<level-row class="row" @getData="clickHandle" v-for="(item ,index) in brandLeftList" :key="index" :data="{num:index+1, ...item}">
</level-row>
</div>
<div class="w50">
<level-row class="row" @getData="clickHandle" v-for="(item ,index) in brandRightList" :key="index" :data="{num:index+6, ...item}">
</level-row>
</div>
</div>
</v-tabs>
</div>
<a-modal title="提示" :visible="visible" @ok="handleOk" @cancel="handleCancel">
<p>{{ ModalText }}</p>
</a-modal>
</div>
</template>
<script>
import createOpt from "./opt";
import { getAffections0528, getCrisisTime } from "@/api/home";
import { getAffections0528, getCrisisTime, getByBrandH } from "@/api/home";
import moment from "moment";
import levelRow from './components/level-row.vue'
import vTabs from '@/components/v-tabs/index.vue'
import {
getBrandName,
getUserSeriesName,
getBrandOrSeriesLevel,
} from "@/api/comm";
export default {
name: "barometer",
components: {
levelRow,
vTabs
},
data() {
return {
load: false,
opt: {},
pdata: [],
tabType: 0,
activeKey: 1,
brandLeftList: [],
brandRightList: [],
tabs: ['品牌', '车型'],
visible: false,
ModalText: "",
form: {
sQueryType: 1,
},
};
},
created() {
this.getData1();
},
methods: {
handleOk() {
this.$router.push("/login");
},
handleCancel() {
this.visible = false;
},
clickHandle(data) {
if (!this.getToken) {
this.visible = true;
this.ModalText = "您还未登录,是否前往登录";
return;
}
// if (this.getUser.Brand.indexOf(data[0].key) == -1) {
// this.visible = true;
// this.ModalText = "";
// return;
// }
let ele = data;
if (this.activeKey === 2) {
let model = ele.key;
let obj = {
token: this.getToken,
sSeriesName: model,
};
getBrandOrSeriesLevel(obj).then(() => {
getBrandName(obj).then((res) => {
this.setModel({ name: model });
this.setHeaderType(3);
this.setBrand({ brandname: res.data });
this.$router.push("/modelInsight");
});
})
} else {
let brand = ele.key;
getBrandOrSeriesLevel({
token: this.getToken,
sBrand: brand,
}).then(() => {
this.getUserSeriesName(brand); //
this.setBrand({ brandname: brand });
this.setHeaderType(3);
this.$router.push("/brandInsight");
})
}
},
//
getUserSeriesName(brandName) {
this.form.token = this.getToken;
this.form.sBrandName = brandName;
getUserSeriesName(this.form).then((res) => {
let data = res.data || [];
this.models = data;
this.chooseModel = this.models[0];
this.setModel(this.chooseModel);
});
},
//
callback(e) {
this.activeKey = e
this.getData2()
},
//
handlerChange(n) {
this.tabType = n
if (n === 0) {
this.getData1();
} else {
@ -62,16 +160,23 @@ export default {
//
getData2() {
this.load = true;
getCrisisTime(this.getCommTime).then((res) => {
let action = this.activeKey == '1' ? 'getBarometerNegativeTopByBrandH' : 'getBarometerNegativeTopByCarSeriesH'
getByBrandH({ action, ...this.getCommTime }).then(res => {
let data = res.data;
let arr = [];
data.forEach((ele) => {
arr.push(ele);
});
this.pdata = arr;
this.handlerData(arr);
this.brandLeftList = data.slice(0, 5)
this.brandRightList = data.slice(5, 10)
this.load = false;
});
})
// getCrisisTime(this.getCommTime).then((res) => {
// let data = res.data;
// let arr = [];
// data.forEach((ele) => {
// arr.push(ele);
// });
// this.pdata = arr;
// this.handlerData(arr);
// this.load = false;
// });
},
//
handlerData(arr) {
@ -87,6 +192,7 @@ export default {
},
// echars
clickEchars(data) {
console.log('data', 'data', data)
let series = [];
let startTime = "";
let endTime = "";
@ -132,6 +238,21 @@ export default {
</script>
<style lang="less" scoped>
.box{
padding-left: 15px;
}
.boxFlex {
display: flex;
justify-content: space-between;
.w50 {
width: 50%;
.row {
cursor: pointer;
padding-right: 40px;
margin-bottom: 10px;
}
}
}
.bm-outter {
width: 460px;
height: 312px;

@ -8,53 +8,74 @@
-->
<template>
<div class="dy-outter" v-loading="load">
<v-label-div title="行业传播态势"></v-label-div>
<div class="middle">
<img src="../../../assets/images/Index/d3.gif" class="load-m1">
<v-popover ref="popover" title="APP" :sQuDao="6" >
<div class="d1" @click="handlerClick(6)">
<span class="s1">APP</span>
<span class="s2">
<countTo :startVal='form.app-100 >= 0 ? form.app-100 : 0' :endVal='form.app' :duration='3000'></countTo>
</span>
</div>
<div class="d1 dd1" @click="handlerClick(8)">
<span class="s1">其他</span>
</v-popover>
<v-popover ref="popover" title="短视频" :sQuDao="7">
<div class="d1 dd1" @click="handlerClick(7)">
<span class="s1">短视频</span>
<span class="s2">
<countTo :startVal='form.other-100 >= 0 ? form.other-100 : 0' :endVal='form.other' :duration='3000'></countTo>
<countTo :startVal='form.tiktok-100 >= 0 ? form.tiktok-100 : 0' :endVal='form.tiktok' :duration='3000'></countTo>
</span>
</div>
</v-popover>
<v-popover ref="popover" title="微信" :sQuDao="4">
<div class="d1 dd2" @click="handlerClick(4)">
<span class="s1">微信</span>
<span class="s2">
<countTo :startVal='form.wecat-100 >= 0 ? form.wecat-100 : 0' :endVal='form.wecat' :duration='3000'></countTo>
</span>
</div>
</v-popover>
<v-popover ref="popover" title="论坛" :sQuDao="2">
<div class="d2 dd3" @click="handlerClick(3)">
<span class="s1">
<countTo :startVal='form.forum-100 >= 0 ? form.forum-100 : 0' :endVal='form.forum' :duration='3000'></countTo>
</span>
<span class="s2">论坛</span>
</div>
</v-popover>
<v-popover ref="popover" title="微博" :sQuDao="5">
<div class="d2 dd4" @click="handlerClick(5)">
<span class="s1">
<countTo :startVal='form.weipo-100 >= 0 ? form.weipo-100 : 0' :endVal='form.weipo' :duration='3000'></countTo>
</span>
<span class="s2">微博</span>
</div>
</v-popover>
<v-popover ref="popover" title="新闻" :sQuDao="1">
<div class="d2 dd5" @click="handlerClick(1)">
<span class="s1">
<countTo :startVal='form.news-100 >= 0 ? form.news-100 : 0' :endVal='form.news' :duration='3000'></countTo>
</span>
<span class="s2">新闻</span>
</div>
</v-popover>
<div class="d3" @click="handlerClick(-1)">
<span class="s1">系统入库 数据总量</span>
<span class="s1">系统入库数据总量</span>
<span class="s2">
<countTo :startVal='form.total-100 >= 0 ? form.total-100 : 0' :endVal='form.total' :duration='3000'></countTo>
</span>
</div>
<div class="dn-footer">
<div class="df-d"><span class="s1">历史入库数据总量</span><span class="s2"><countTo :startVal='form.count_all-100 >= 0 ? form.count_all-100 : 0' :endVal='form.count_all' :duration='3000'></countTo></span></div>
<div class="df-d"><span class="s1">一年累计入库数据总量</span><span class="s2"><countTo :startVal='form.count_year-100 >= 0 ? form.count_year-100 : 0' :endVal='form.count_year' :duration='3000'></countTo></span></div>
<div class="df-d"><span class="s1">半年累计入库数据总量</span><span class="s2"><countTo :startVal='form.count_6month-100 >= 0 ? form.count_6month-100 : 0' :endVal='form.count_6month' :duration='3000'></countTo></span></div>
<div class="df-d"><span class="s1">历史入库数据总量</span><span class="s2">
<countTo :startVal='form.count_all-100 >= 0 ? form.count_all-100 : 0' :endVal='form.count_all' :duration='3000'></countTo>
</span></div>
<div class="df-d"><span class="s1">一年累计入库数据总量</span><span class="s2">
<countTo :startVal='form.count_year-100 >= 0 ? form.count_year-100 : 0' :endVal='form.count_year' :duration='3000'></countTo>
</span></div>
<div class="df-d"><span class="s1">半年累计入库数据总量</span><span class="s2">
<countTo :startVal='form.count_6month-100 >= 0 ? form.count_6month-100 : 0' :endVal='form.count_6month' :duration='3000'></countTo>
</span></div>
</div>
</div>
</div>
</template>
@ -62,10 +83,20 @@
<script>
import countTo from "vue-count-to";
import { getHomeCount0528 } from "@/api/home";
import vPopover from '@/components/v-popover/'
export default {
name: "dynamic-number",
components: {
countTo,
vPopover
},
props:{
data:{
type:Array,
default(){
return []
}
}
},
data() {
return {
@ -76,6 +107,7 @@ export default {
news: 0,
weipo: 0,
other: 0,
tiktok: 0,
short: 0,
forum: 0,
wecat: 0,
@ -89,6 +121,9 @@ export default {
},
created() {
this.load = true;
setTimeout(() =>{
console.log('data',this.data)
},100)
this.getData(1).then(() => {
this.load = false;
this.startDyfun(6000);
@ -101,8 +136,15 @@ export default {
}
},
methods: {
getInitData(str){
},
mousemove(e) {
// console.log(e)
},
//
getData(n) {
return new Promise((resolve, reject) => {
let obj = Object.assign({}, this.getCommTime, { iStatus: n });
getHomeCount0528(obj)
@ -125,6 +167,8 @@ export default {
this.form.wecat = ele.value;
} else if (ele.key == "微博") {
this.form.weipo = ele.value;
} else if (ele.key == "短视频") {
this.form.tiktok = ele.value;
} else {
this.form.other = ele.value;
}
@ -169,12 +213,17 @@ export default {
position: relative;
width: 100%;
height: 100%;
border: 0.125rem solid #0f2a4d;
.middle{
padding: 0 36px;
box-sizing: border-box;
}
.load-m1 {
position: absolute;
width: 100%;
height: 100%;
left: 0px;
top: 0px;
width: calc(100% - 5%);
height: calc(100% - 8%);
left: 36px;
// top: 50px;
}
.d1 {
position: absolute;
@ -187,7 +236,7 @@ export default {
justify-content: flex-start;
align-items: center;
top: 38%;
left: 0px;
left: 5%;
cursor: pointer;
.s1 {
display: block;
@ -241,13 +290,14 @@ export default {
top: 47%;
display: flex;
justify-content: flex-start;
flex-direction: column;
align-items: center;
cursor: pointer;
.s1 {
display: block;
font-size: 18px;
color: #d2dadf;
width: 72px;
// width: 72px;
margin-left: 38px;
}
.s2 {
@ -261,23 +311,23 @@ export default {
}
.dd1 {
top: 58% !important;
left: 0px !important;
left: 5% !important;
}
.dd2 {
top: 15% !important;
top: 18% !important;
left: 45% !important;
}
.dd3 {
top: 36% !important;
left: 70% !important;
left: 65% !important;
}
.dd4 {
top: 60% !important;
left: 70% !important;
left: 65% !important;
}
.dd5 {
top: 72% !important;
left: 29% !important;
top: 78% !important;
left: 32% !important;
}
.dn-footer {
position: absolute;
@ -309,14 +359,14 @@ export default {
display: inline-block;
}
.s1 {
font-size: 16px;
font-size: 18px;
color: #b1b9c0;
font-weight: 500;
}
.s2 {
font-size: 15px;
font-size: 17px;
font-family: Bebas;
color: #63aecc;
color: #0597FC;
margin-left: 16px;
}
}

@ -10,13 +10,13 @@
<div class="d-container" ref="dc" :style="outStyle">
<div class="In-body">
<div class="d1">
<real-time-event></real-time-event>
<real-time-event @handlMore="handlerAllData(-1)"></real-time-event>
<key-communication-positions v-view></key-communication-positions>
<spread-the-sound></spread-the-sound>
</div>
<div class="d2">
<div class="d2-top">
<dynamic-number @allData="handlerAllData"></dynamic-number>
<dynamic-number @allData="handlerChange(0)"></dynamic-number>
</div>
<div class="d2-bottom">
<barometer></barometer>
@ -30,15 +30,18 @@
</div>
</div>
<!--对话框-->
<v-modal :eleStyle="{ width: '86rem', height: '50rem' }" :visible.sync="modalObj.visible" :title="modalObj.title">
<div slot="body" :style="{padding: '1rem', height: '47rem'}">
<!-- <vue-scroll ref="vs">
<v-table :columns="columns" :data="tbData" :loading="tableLoading" :pagination="false" row-key="id">
<template slot="titlex" slot-scope="text, record">
<a :href="record.url" style="color: #fff" target="_blank">{{ text }}</a>
<v-modal :centered="true" :eleStyle="{ width: '70rem', height: '43rem',transform: 'translate(-50%, 8.625rem)' }" :visible.sync="modalObj.visible"
:title="modalObj.title">
<template #head>
<v-tab-group style="margin-right:20px;" :btns="['品牌TOP', '车型TOP']" @change="(e)=>switchType(e)"></v-tab-group>
</template>
</v-table>
</vue-scroll> -->
<div slot="body" :style="{padding: '1rem', height: '47rem'}">
<v-table-pop :tbData1="tbData1" :tbData2="tbData2" :type="type"></v-table-pop>
</div>
</v-modal>
<v-modal :eleStyle="{ width: '86rem', height: '50rem' }" :visible.sync="modalObj1.visible" :title="modalObj1.title">
<div slot="body" :style="{padding: '1rem', height: '47rem'}">
<dv-scroll-board :config="config" :style="{ width: '100%', height: '45rem' }" @click="handlerSs" />
</div>
</v-modal>
@ -55,7 +58,8 @@ import barometer from "./barometer";
import tailInsight from "./tailInsight";
import hotDiscussionGraph from "./hotDiscussionGraph";
import dynamicNumber from "./dynamicNumber";
import { getHomeList0528 } from "@/api/home";
import { getHomeList0528, getChesQuDaoMore } from "@/api/home";
import vTablePop from '@/components/v-table-pop/index.vue'
export default {
name: "index",
components: {
@ -68,10 +72,15 @@ export default {
tailInsight, //
hotDiscussionGraph, //
dynamicNumber, //
vTablePop, //
},
data() {
return {
modalObj: {
title: "行业传播榜单TOP",
visible: false,
},
modalObj1: {
title: "全网数据实时动态",
visible: false,
},
@ -79,6 +88,8 @@ export default {
sQuDao: "",
},
tbData: [],
tbData1: [],
tbData2: [],
tableLoading: false,
config: {},
outStyle: {},
@ -109,32 +120,72 @@ export default {
width: 120,
},
],
type: 0,
intval: null,
RefreshTime:null
};
},
created() {
// this.getTableList();
this.setHeaderType(1);
},
mounted() {},
watch: {
"modalObj1.visible"(val) {
if (!val && this.intval) {
clearInterval(this.intval)
this.intval = null
}
}
},
mounted() { },
methods: {
handlerAllData(key) {
this.form.sQuDao = key;
this.getTableList().then(() => {
this.modalObj.visible = true;
});
switchType(e){
this.type = e
},
handlerSs() {
},
handlerChange(e) {
this.type = e
this.getCarTop(e)
},
getCarTop(e) {
getChesQuDaoMore(this.getCommTime).then((res) => {
let keys = { brand: 'tbData1', carseries: 'tbData2' }
for (let key in keys) {
this[keys[key]] = res.data.map(i => {
return {
title: i.key,
list: i[key].map((el, n) => {
return {
sort: n + 1,
...el
}
})
}
})
}
this.modalObj.visible = true;
})
},
handlerAllData(key) {
this.form.sQuDao = key;
this.getTableList()
this.intval = setInterval(() => {
this.getTableList()
},6000)
},
getTableList() {
return new Promise((resolve, reject) => {
let obj = Object.assign({}, this.getCommTime, this.form);
let obj = Object.assign({}, this.getCommTime, this.form,{RefreshTime:this.RefreshTime});
this.tableLoading = true;
getHomeList0528(obj)
.then((res) => {
let data = res.data || [];
let arr = [];
let arr1 = [];
if (data.length > 0) {
this.RefreshTime = res.data[res.data.length - 1]._source.RefreshTime
data.forEach((ele) => {
let _source = ele._source;
let a = [
@ -144,8 +195,13 @@ export default {
_source.source,
];
arr1.push(a);
arr.push(_source);
// arr.push(_source);
});
this.tbData.push(...arr1)
if (this.tbData.length > 30) {
let num = this.tbData.length - 30
this.tbData.splice(0, num)
}
this.config = {
headerBGC: "#0c203b",
oddRowBGC: "#173b6d",
@ -153,11 +209,13 @@ export default {
columnWidth: [720, 180],
rowNum: 16,
header: ["标题", "发布时间", "作者", "媒体"],
data: arr1,
data: this.tbData,
};
this.tbData = arr;
console.log('this.tbData ',this.tbData )
// this.tbData = arr;
}
this.tableLoading = false;
!this.modalObj1.visible&&(this.modalObj1.visible = true)
resolve(arr);
})
.catch(() => {

@ -8,15 +8,39 @@
-->
<template>
<div class="kcp-outter" v-loading="load">
<v-label-div title="传播媒体TOP"></v-label-div>
<v-label-div title="传播重点阵地">
<div class="more" @click="handlMore">
<span>更多 &nbsp;{{'>'}} </span>
</div>
</v-label-div>
<div class="kcp-inner">
<div class="d1">
<v-ranking v-for="(item,index) in d1" :key="index" :lineShow="index === 0 ? false : true" :num="index + 1" :label="item.label|doStr(8)" :val="item.val" @toMedia="goKeyMedia(item)"></v-ranking>
<v-ranking v-for="(item,index) in d1" :key="index" :lineShow="index === 0 ? false : true" :num="index + 1" :label="item.label|doStr(8)"
:val="item.val" @toMedia="goKeyMedia(item)"></v-ranking>
</div>
<div class="d1" style="margin-left: 14px">
<v-ranking v-for="(item,index) in d2" :key="index" :lineShow="index === 0 ? false : true" :num="5+index + 1" :label="item.label|doStr(8)" :val="item.val" @toMedia="goKeyMedia(item)"></v-ranking>
<v-ranking v-for="(item,index) in d2" :key="index" :lineShow="index === 0 ? false : true" :num="5+index + 1" :label="item.label|doStr(8)"
:val="item.val" @toMedia="goKeyMedia(item)"></v-ranking>
</div>
</div>
<v-modal :eleStyle="{ width: '43rem', height: '36rem' }" :visible.sync="modalObj.visible" :title="modalObj.title">
<div slot="body">
<div class="kcp-inner">
<div class="d1">
<v-ranking v-for="(item,index) in top30.left" :key="index" :lineShow="index === 0 ? false : true" :num="index + 1"
:label="item.label|doStr(12)" :val="item.val" @toMedia="goKeyMedia(item)"></v-ranking>
</div>
<div class="d1">
<v-ranking v-for="(item,index) in top30.middle" :key="index" :lineShow="index === 0 ? false : true" :num="10+index + 1"
:label="item.label|doStr(12)" :val="item.val" @toMedia="goKeyMedia(item)"></v-ranking>
</div>
<div class="d1">
<v-ranking v-for="(item,index) in top30.right" :key="index" :lineShow="index === 0 ? false : true" :num="20+index + 1"
:label="item.label|doStr(12)" :val="item.val" @toMedia="goKeyMedia(item)"></v-ranking>
</div>
</div>
</div>
</v-modal>
</div>
</template>
@ -29,12 +53,41 @@ export default {
load: false,
d1: [],
d2: [],
modalObj: {
title: "传播重点阵地TOP30",
visible: false,
},
top30: {
left: [],
middle: [],
right: []
}
};
},
created() {
this.getData();
},
methods: {
handlMore() {
this.modalObj.visible = true
this.getTop30()
},
getTop30() {
this.load = true;
getHomeSourceTop({ iSize: 30, ...this.getCommTime }).then((res) => {
let data = res.data;
let vals = [];
for (let key in data) {
let obj = { label: key, val: data[key] };
vals.push(obj);
}
let groupedArray = this.group(vals, 10);
this.top30.left = groupedArray[0];
this.top30.middle = groupedArray[1];
this.top30.right = groupedArray[2];
this.load = false;
});
},
//
group(array, subGroupLength) {
let index = 0;
@ -87,7 +140,7 @@ export default {
}
.kcp-inner {
display: flex;
justify-content: flex-start;
justify-content:space-between;
padding: 0 16px;
height: calc(100% - 48px);
overflow: hidden;
@ -97,4 +150,14 @@ export default {
height: 100%;
}
}
.more {
padding: 0px 8px;
background: rgba(51, 115, 204, 0.3);
border: 1px solid #63aecc;
color: #63aecc !important;
cursor: pointer;
span{
font-size: 12px !important;
}
}
</style>

@ -9,9 +9,19 @@
<template>
<div class="rte-outter" v-view="onceHandler" v-loading="load">
<v-label-div title="实时事件"></v-label-div>
<v-label-div title="实时信息">
<div>
<v-tab-group :btns='btnTimes' v-model="gValue" @change="tabChange"></v-tab-group>
</div>
</v-label-div>
<div class="rte-tb">
<dv-scroll-board :config="config" :style="{ width: '100%', height: '100%' }" @click="handlerSs" />
<template v-if="gValue == 0">
<div class="more" @click="handlMore">
<span>更多 &nbsp;{{'>'}} </span>
</div>
<dv-scroll-board class="sysWidth" :config="config" :style="{ width: '100%', height: '100%' }" @click="handlerLink" />
</template>
<dv-scroll-board v-else :config="config" :style="{ width: '100%', height: '100%' }" @click="handlerSs" />
</div>
<a-modal title="提示" :visible="visible" @ok="handleOk" @cancel="handleCancel">
<p>{{ ModalText }}</p>
@ -20,7 +30,7 @@
</template>
<script>
import { getEventsListH } from "@/api/home";
import { getEventsListH, getRealListH } from "@/api/home";
import { getUserSeriesName, getBrandOrSeriesLevel } from "@/api/comm";
export default {
name: "real-time-event",
@ -32,14 +42,50 @@ export default {
darr: [],
visible: false,
ModalText: "",
btnTimes: ['实时动态', '实时事件'],
gValue: 0,
intval: null,
RefreshTime: null, //
};
},
created() {
this.intval = setInterval(() => {
this.getData();
}, 6000)
},
beforeDestroy() {
if (this.intval) {
clearInterval(this.intval);
this.intval = null;
}
},
methods: {
handlMore() {
this.$emit('handlMore')
},
handlerLink(e) {
let span = e.row[0].split("URL")
try {
window.open(span[span.length - 1],);
} catch (err) {
}
},
tabChange(e) {
this.RefreshTime = null
this.gValue = e
this.getData()
if (this.intval && e == 1) {
clearInterval(this.intval);
this.intval = null;
} else if (e == 0) {
this.intval = setInterval(() => {
this.getData();
}, 6000)
}
},
getData() {
this.load = true;
// this.load = true;
if (this.gValue == 1) {
getEventsListH(this.getCommTime).then((res) => {
let arr = [];
let arr2 = [];
@ -72,6 +118,53 @@ export default {
}
this.load = false;
});
} else {
let query = {
RefreshTime: this.RefreshTime || undefined,
...this.getCommTime
}
getRealListH(query).then((res) => {
let arr = [];
let arr2 = [];
if (Array.isArray(res.data) && res.data.length) {
this.RefreshTime = res.data[res.data.length - 1].RefreshTime
res.data.forEach((ele) => {
let a = [
`<span style="cursor: pointer;">${ele.title}</span>URL${ele.url}`,
ele.sourcetime.split(' ')[1],
ele.user_author,
];
// let b = [
// `<span style="cursor: pointer;">${ele.title}</span>`,
// // ele.events_influence,
// ele.user_author,
// ele.id,
// ];
arr.push(a);
// arr2.push(b);
});
this.darr.push(...arr);
if (this.darr.length > 30) {
let num = this.darr.length - 30
this.darr.splice(0, num)
}
this.config = {
headerBGC: "#0c203b",
oddRowBGC: "#173b6d",
evenRowBGC: "rgba(69, 149, 244, 0)",
columnWidth: [230],
rowNum: 5,
header: ["标题", "时间", "作者"],
// columnWidth: [
// 200,90
// ],
data: this.darr,
};
}
this.load = false;
});
}
},
handleCancel() {
this.visible = false;
@ -129,23 +222,52 @@ export default {
},
onceHandler() {
this.getData();
}
},
};
</script>
<style lang="less" scoped>
.sysWidth{
::v-deep .header-item:nth-child(1),
::v-deep .ceil:nth-child(1) {
width: 60%!important;
}
::v-deep .header-item:nth-child(2),
::v-deep .ceil:nth-child(2) {
width: 20%!important;
}
::v-deep .header-item:nth-child(3),
::v-deep .ceil:nth-child(3) {
width: 20%!important;
}
}
.more {
padding: 0px 8px;
background: rgba(51, 115, 204, 0.3);
border: 1px solid #63aecc;
color: #fff !important;
width: max-content;
margin-bottom: 10px;
cursor: pointer;
span {
font-size: 12px !important;
}
}
.rte-outter {
width: 460px;
height: 312px;
border: 2px solid #0f2a4d;
display: flex;
flex-direction: column;
.rte-tb {
padding: 16px;
padding: 10px 16px 16px;
height: calc(100% - 48px);
overflow: hidden;
display: flex;
flex-direction: column;
align-items: flex-end;
}
}
</style>

@ -0,0 +1,81 @@
<template>
<div class="level-row-hot">
<div>
<div class="left">
{{formatNum(data.num)}}
<span>{{data.brand}}</span>
</div>
<div class="right">{{data.salescount}}</div>
</div>
<div>
<a-progress :showInfo="false" :stroke-color="{
'0%': '#2B9BFF',
'100%': '#FFC600',
}" :percent="Number(data.percentage)" />
</div>
</div>
</template>
<script>
export default {
data() {
return {}
},
props: {
data: {
type: Object,
default() {
return {}
}
}
},
methods: {
//
formatNum(num) {
return num < 10 ? "0" + num : num
}
}
}
</script>
<style lang="less">
.level-row-hot {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
color: #fff;
flex-wrap: wrap;
margin-top: 12px;
margin-bottom: 6px;
& > div {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
.left {
display: flex;
align-items: center;
span {
margin-left: 10px;
}
}
.right{
color: #63AECC;
}
.ant-progress{
line-height: 0.5;
}
.ant-progress-inner{
background-color: rgba(255,255,255,0.2);
}
.ant-progress-bg{
height: 3px !important;
}
.ant-progress-show-info .ant-progress-outer{
margin: 0;
padding: 0;
}
}
</style>

@ -10,15 +10,33 @@
<div class="sr-outter" v-loading="load">
<v-label-div title="热销排行">
<div class="tis">
<!-- <v-pagination :data="pdata" :style="{marginRight: '0.8rem', marginTop: '0.4rem'}" @change="handlerPage"></v-pagination> -->
<v-tab-group :btns="['品牌', '车型']" @change="handlerTabChange"></v-tab-group>
<v-tab-group :btns="['热销总量', '新能源']" @change="handlerType"></v-tab-group>
<router-link to="/saleRank/marketComp">
<div class="competitionBtn">
<span>竞争格局</span>
</div>
</router-link>
<!-- <v-tab-group :btns="['品牌', '车型']" @change="handlerTabChange"></v-tab-group>
<a-select v-model="selVal" style="width: 100px;margin-left: 16px" @change="handlerSelect">
<a-select-option v-for="item in selArr" :key="item.key" :value="item.key"> {{item.key}} </a-select-option>
</a-select>
</a-select> -->
</div>
</v-label-div>
<div class="sr-bd">
<v-echarts :opt="opt" @getData="clickEchars"></v-echarts>
<a-select v-model="selVal" class="month-select" @change="handlerSelect">
<a-select-option v-for="item in selArr" :key="item.key" :value="item.key"> {{item.key}} </a-select-option>
</a-select>
<v-tabs v-model="activeKey" @callback="callback" :tabTitles="tabs">
<div class="boxFlex">
<div class="left">
<level-row v-for="(item ,index) in leftList" :key="index" :data="{num:index+1, ...item}"></level-row>
</div>
<div class="right">
<level-row v-for="(item ,index) in rightList" :key="index" :data="{num:index+6, ...item}"></level-row>
</div>
</div>
<!-- <v-echarts v-else :opt="opt" @getData="clickEchars"></v-echarts> -->
</v-tabs>
</div>
<a-modal title="提示" :visible="visible" @ok="handleOk" @cancel="handleCancel">
<p>{{ ModalText }}</p>
@ -28,19 +46,25 @@
<script>
import createOpt from "./opt";
import { getCheZhuBrandCount0528, getCheZhuTime0528 } from "@/api/home";
import { getCheZhuBrandCount0528, getCheZhuTime0528, newGetCheZhuBrandCount0528 } from "@/api/home";
import {
getBrandName,
getUserSeriesName,
getBrandOrSeriesLevel,
} from "@/api/comm";
import vTabs from '@/components/v-tabs/index.vue'
import levelRow from './components/level-row.vue'
export default {
name: "sales-rank",
components: {
vTabs,
levelRow
},
data() {
return {
load: false,
selVal: "",
type: 0,
type: 1,
form: {
sQueryType: 1,
sTimeType: 4,
@ -52,18 +76,40 @@ export default {
opt: {},
visible: false,
ModalText: "",
tabGroup: 0,
tabs: ['品牌', '车型'],
activeKey: 1,
leftList: [],
rightList: [],
};
},
created() {
this.getSelect();
},
computed: {
getActionStr() {
if (this.tabGroup == 0) {
return this.activeKey == 1 ? 'getBrandSalesTopH' : 'getCarSeriesSalesTopH'
} else {
return this.activeKey == 1 ? 'getBrandSalesEnergyTopH' : 'getCarSeriesSalesEnergyTopH'
}
}
},
methods: {
//
handlerTabChange(n) {
this.type = n;
this.form.sQueryType = n + 1;
this.getData();
callback() {
this.getSelect();
},
//
handlerType(e) {
this.tabGroup = e
this.getSelect();
},
//
// handlerTabChange(n) {
// this.type = n;
// this.form.sQueryType = n + 1;
// this.getSelect();
// },
//
handlerSelect(key) {
let n = this.selArr.findIndex((ele) => {
@ -88,10 +134,15 @@ export default {
//
getData() {
this.load = true;
getCheZhuBrandCount0528(this.form).then((res) => {
newGetCheZhuBrandCount0528({ action: this.getActionStr, ...this.form }).then((res) => {
let data = res.data;
this.pdata = data;
this.handlerPage(data);
if(this.activeKey ==2){
data = data.map(i=>{i.brand = i.seriesname;return i})
}
this.leftList = data.slice(0, 5)
this.rightList = data.slice(5, 10)
// this.pdata = data;
// this.handlerPage(data);
this.load = false;
});
},
@ -166,6 +217,25 @@ export default {
</script>
<style lang="less" scoped>
.boxFlex {
background: rgba(216, 216, 216, 0.1);
width: 100%;
height: 200px;
display: flex;
justify-content: space-between;
& > div {
width: 50%;
}
.left{
padding-left: 10px;
padding-right: 37px;
font-family: Bebas;
}
.right{
font-family: Bebas;
padding-right: 20px;
}
}
.sr-outter {
width: 460px;
height: 312px;
@ -178,9 +248,30 @@ export default {
position: relative;
width: 100%;
height: calc(100% - 48px);
.month-select {
position: absolute;
right: 15px;
top: 8px;
z-index: 99;
}
}
::v-deep .ant-select-selection--single {
height: 25px !important;
}
::v-deep .ant-select-selection__rendered{
line-height: 1.8;
}
.tis {
display: flex;
justify-items: flex-end;
align-items: center;
}
.competitionBtn {
padding: 2px 8px;
font-size: 14px;
background: rgba(51, 115, 204, 0.3);
border: 1px solid #63aecc;
color: #fff !important;
margin-left: 10px;
}
</style>

@ -85,6 +85,8 @@ export default function createOpt(dx = [], ds = []) {
color: '#fff',
fontSize: 10
},
top: 12,
left: 12,
itemWidth: 12,
itemHeight: 12,
borderRadius: 1, //圆角半径

@ -9,10 +9,10 @@
<template>
<div class="tl-outter" v-loading="load">
<vLabel-div title="尾翼洞察">
<vLabel-div title="网友评论">
<div class="tis">
<!-- <v-pagination :data="pdata" :style="{marginRight: '0.8rem', marginTop: '0.4rem'}" @change="handlerData"></v-pagination> -->
<v-tab-group :btns="['品牌', '车型']" @change="handlerChange"></v-tab-group>
<v-tab-group :btns="['TOP阵地','品牌', '车型']" @change="handlerChange"></v-tab-group>
</div>
</vLabel-div>
<div class="tl-bd">
@ -26,7 +26,7 @@
<script>
import createOpt from "./opt";
import { getWeiYiCountHome0528 } from "@/api/home";
import { getWeiYiCountHome0528,getlimitWtype3H } from "@/api/home";
import {
getBrandName,
getUserSeriesName,
@ -55,12 +55,13 @@ export default {
//
handlerChange(n) {
this.type = n;
this.form.sQueryType = n + 1;
this.form.sQueryType = n;
this.getData();
},
//
getData() {
this.load = true;
if(this.type == 1||this.type == 2){
let obj = Object.assign({}, this.getCommTime, this.form);
getWeiYiCountHome0528(obj).then((res) => {
let data = res.data;
@ -68,6 +69,14 @@ export default {
this.handlerData(data);
this.load = false;
});
}else{
getlimitWtype3H(this.getCommTime).then((res) => {
let data = res.data;
this.pdata = data;
this.handlerData(data);
this.load = false;
});
}
},
//
handlerData(arr) {
@ -88,13 +97,16 @@ export default {
this.$router.push("/login");
},
clickEchars(data) {
if(this.type === 0){
return;
}
if (!this.getToken) {
this.visible = true;
this.ModalText = "您还未登录,是否前往登录";
return;
}
let ele = data;
if (this.type === 1) {
if (this.type === 2) {
let model = ele.axisValueLabel;
let obj = {
token: this.getToken,
@ -108,7 +120,7 @@ export default {
this.$router.push("/modelInsight");
});
})
} else {
} else if(this.type == 1) {
let brand = ele.axisValueLabel;
getBrandOrSeriesLevel({
token: this.getToken,

@ -79,11 +79,11 @@ export default function createOpt(dy=[],ds=[]) {
[
{
offset: 0,
color: "rgb(65,117,203,0.4)", // 0% 处的颜色
color: "rgba(23,125,223,0.5)", // 0% 处的颜色
},
{
offset: 1,
color: "#3373CC", // 100% 处的颜色#3373CC
color: "#5DC9F2", // 100% 处的颜色#3373CC
},
],
false

@ -9,7 +9,8 @@
<template>
<div class="u-p-outter" v-loading="load">
<v-label-div title="用户画像">
<v-tab-group :btns="['性别', '认证', '地区']" @change="handlerTab"></v-tab-group>
<!-- <v-tab-group :btns="['性别', '认证', '地区']" @change="handlerTab"></v-tab-group> -->
<v-tab-group :btns="['地区', '性别', '认证']" @change="handlerTab"></v-tab-group>
</v-label-div>
<div class="u-p-bd">
<div class="u-p-char">
@ -17,7 +18,8 @@
</div>
<div class="u-p-bd-1">
<vue-scroll>
<v-label-ctx :label="item.key" :cont="item.value" :percentage="(item.value/totalData*100).toFixed(2) +'%'" :color="colors[index]" v-for="(item,index) in labelData" :key="index"></v-label-ctx>
<v-label-ctx :label="item.key" :cont="item.value" :percentage="(item.value/totalData*100).toFixed(2) +'%'" :color="colors[index]"
v-for="(item,index) in labelData" :key="index"></v-label-ctx>
</vue-scroll>
</div>
</div>
@ -69,6 +71,14 @@ export default {
//
handlerTab(n) {
if (n === 0) {
this.labelData = this.region;
let total = 0;
this.region.forEach((ele) => {
total += ele.value;
});
this.totalData = total;
this.opt = createOpt(this.region, this.colors);
} else if (n === 1) {
this.labelData = this.sex;
let total = 0;
this.sex.forEach((ele) => {
@ -80,7 +90,7 @@ export default {
"#3373CC",
"#CC9D12",
]);
} else if (n === 1) {
} else {
this.labelData = this.attestation;
let total = 0;
this.attestation.forEach((ele) => {
@ -88,14 +98,6 @@ export default {
});
this.totalData = total;
this.opt = createOpt(this.attestation, this.colors);
} else {
this.labelData = this.region;
let total = 0;
this.region.forEach((ele) => {
total += ele.value;
});
this.totalData = total;
this.opt = createOpt(this.region, this.colors);
}
},
//
@ -108,16 +110,18 @@ export default {
this.sex = data.sex;
this.region = data.region;
let total = 0;
this.sex.forEach((ele) => {
//
this.region.forEach((ele) => {
total += ele.value;
});
this.totalData = total;
this.labelData = this.sex;
this.opt = createOpt(this.sex, [
"#54BF93",
"#3373CC",
"#CC9D12",
]);
this.labelData = this.region;
// this.opt = createOpt(this.sex, [
// "#54BF93",
// "#3373CC",
// "#CC9D12",
// ]);
this.opt = createOpt(this.region, this.colors);
this.load = false;
}
);

@ -184,9 +184,13 @@ export default {
let data = res.data;
let arr = [];
let arr1 = [];
let obj1 = {};
data.forEach((ele) => {
if(ele.checked == 1) {
arr1.push(ele.field)
arr1.push(ele.field);
obj1[ele.field] = 1;
} else {
obj1[ele.field] = 0;
}
let obj = {
label: ele.name,
@ -195,7 +199,8 @@ export default {
arr.push(obj);
});
this.checkedIds = arr1;
this.fileTypeChange(arr1);
this.execlForm.sField = JSON.stringify(obj1)
// this.fileTypeChange(arr1);
this.plainOptions4 = arr;
resolve(arr);
}).catch(() => {

@ -65,7 +65,6 @@ export default {
this.form.sSeriesName = this.$route.query.seriesName || "";
this.doFormQudao(qudao);
console.log(this.doQingGanAndCrisis())
this.plainOptions3 = this.doQingGanAndCrisis();
this.qingGan = series;
this.doFormQS(series);

@ -175,9 +175,9 @@ export default {
};
},
created() {
this.form = this.$route.query
this.form.token = this.getToken;
this.form.sGuid = this.$route.query.sGuid;
this.form.sSource = this.$route.query.source || "抖音";
this.form.ilimitType = 0
if(this.form.sSource == '汽车之家' && this.getCarCircle == 1) {
this.form.ilimitType = 1;
} else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {

@ -38,9 +38,9 @@ export default {
};
},
created() {
this.form = this.$route.query
this.form.token = this.getToken;
this.form.sGuid = this.$route.query.sGuid;
this.form.sSource = this.$route.query.source || "抖音";
this.form.ilimitType = 0
if(this.form.sSource == '汽车之家') {
this.form.ilimitType = 1;
} else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {

@ -95,9 +95,9 @@ export default {
};
},
created() {
this.form = this.$route.query
this.form.token = this.getToken;
this.form.sGuid = this.$route.query.sGuid;
this.form.sSource = this.$route.query.source || "抖音";
this.form.ilimitType = 0
if(this.form.sSource == '汽车之家') {
this.form.ilimitType = 1;
} else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {

@ -59,9 +59,9 @@ export default {
}
},
created() {
this.form = this.$route.query
this.form.token = this.getToken;
this.form.sGuid = this.$route.query.sGuid;
this.form.sSource = this.$route.query.source || "抖音";
this.form.ilimitType = 0
if(this.form.sSource == '汽车之家') {
this.form.ilimitType = 1;
} else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {

@ -60,9 +60,9 @@ export default {
}
},
created() {
this.form = this.$route.query
this.form.token = this.getToken;
this.form.sGuid = this.$route.query.sGuid;
this.form.sSource = this.$route.query.source || "抖音";
this.form.ilimitType = 0
if(this.form.sSource == '汽车之家') {
this.form.ilimitType = 1;
} else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {

@ -41,9 +41,9 @@ export default {
};
},
created() {
this.form = this.$route.query
this.form.token = this.getToken;
this.form.sGuid = this.$route.query.sGuid;
this.form.sSource = this.$route.query.source || "抖音";
this.form.ilimitType = 0
if(this.form.sSource == '汽车之家') {
this.form.ilimitType = 1;
} else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {

@ -70,9 +70,9 @@ export default {
};
},
created() {
this.form = this.$route.query
this.form.token = this.getToken;
this.form.sGuid = this.$route.query.sGuid;
this.form.sSource = this.$route.query.source || "抖音";
this.form.ilimitType = 0
if(this.form.sSource == '汽车之家') {
this.form.ilimitType = 1;
} else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {

@ -40,9 +40,9 @@ export default {
};
},
created() {
this.form = this.$route.query
this.form.token = this.getToken;
this.form.sGuid = this.$route.query.sGuid;
this.form.sSource = this.$route.query.source || "抖音";
this.form.ilimitType = 0
if(this.form.sSource == '汽车之家') {
this.form.ilimitType = 1;
} else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {

@ -36,9 +36,9 @@ export default {
};
},
created() {
this.form = this.$route.query
this.form.token = this.getToken;
this.form.sGuid = this.$route.query.sGuid;
this.form.sSource = this.$route.query.source || "抖音";
this.form.ilimitType = 0
if(this.form.sSource == '汽车之家') {
this.form.ilimitType = 1;
} else if (this.form.sSource == '懂车帝' && this.getCarCircle == 1) {

@ -11,10 +11,10 @@
<div class="lgf-login">
<a-form-model layout="horizontal" :model="form" :rules="rules" ref="loginForm">
<a-form-model-item label="用户名" prop="sUserName">
<a-input v-model="form.sUserName" placeholder="请输入账号" autocomplete="off" :maxLength="30" />
<a-input v-model="form.sUserName" @keyup.enter.native="onSubmit" placeholder="请输入账号" autocomplete="off" :maxLength="30" />
</a-form-model-item>
<a-form-model-item label="密码" prop="sPwd">
<a-input v-model="form.sPwd" :type="pwdType" placeholder="请输入密码" autocomplete="off">
<a-input v-model="form.sPwd" @keyup.enter.native="onSubmit" :type="pwdType" placeholder="请输入密码" autocomplete="off">
<span slot="suffix" class="iconfont icon-zhengyan-21 login-eye" v-if="pwdType === 'password'"
@click="changePwdType"></span>
<span slot="suffix" class="iconfont icon-in_biyan login-eye" v-else
@ -22,7 +22,7 @@
</a-input>
</a-form-model-item>
<a-form-model-item label="验证码" prop="sVerifycode">
<a-input v-model="form.sVerifycode" placeholder="请输入验证码" autocomplete="off">
<a-input v-model="form.sVerifycode" @keyup.enter.native="onSubmit" placeholder="请输入验证码" autocomplete="off">
<a-button slot="addonAfter" style="width: 100px" @click="getCode" v-if="!codeImg"
:loading="btnLoading">获取验证码</a-button>
<img style="width: 6rem; height: 2rem;cursor: pointer;" slot="addonAfter" :src="codeImg"
@ -138,26 +138,27 @@ export default {
this.setUser(data);
this.setLevelBtn(data.levelBtn);
//
let obj = {
link: '/saleRank',
text: '销量排行'
};
let obj2 = {
link: '/specialAnalize',
text: '专项分析'
};
let obj3 = {
link: '/myBrand',
text: '我的品牌'
}
data.meun.push(obj);
data.meun.push(obj2);
data.meun.push(obj3);
// let obj = {
// link: '/saleRank',
// text: ''
// };
// let obj2 = {
// link: '/specialAnalize',
// text: ''
// };
// let obj3 = {
// link: '/myBrand',
// text: ''
// }
// data.meun.push(obj);
// data.meun.push(obj2);
// data.meun.push(obj3);
getSwsQyUserCarMainBrandList({token: data.toKen}).then(res => {
let brand = res.data[0] || '';
if(brand) {
this.brand = brand.brandname;
this.setWarningBrand(brand);
this.setBrand(brand);
}
});
////

@ -74,7 +74,7 @@ export default {
if (value === "") {
callback(new Error("请输入邮箱"));
} else {
let reg = /^([a-zA-Z\d][\w-]{2,})@(\w{2,})\.([a-z]{2,})(\.[a-z]{2,})?$/
let reg = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/
if (!reg.test(value)) {
callback(new Error("请输入正确的邮箱"));
} else {

@ -16,7 +16,7 @@
</template>
<script>
import { getCountMKT0528C } from "@/api/MarketingComparison/index.js";
import { getCountMKT0528C } from "@/api/MarketingComparison/BbsType.js";
import { createSingleColumnar } from "@/utils/gol/singleColumnar";
export default {
name: "mcCTNF",

@ -9,7 +9,7 @@
<template>
<div class="d-container">
<div class="mbc-outter">
<brandCompateHeader ref="modelRef" @del="handlerDel"></brandCompateHeader>
<brandCompateHeader ref="modelRef" @del="handlerDel" @change="handlerChange"></brandCompateHeader>
<div class="mbc-inner">
<v-label-div title="车型推荐">
</v-label-div>
@ -68,7 +68,23 @@ export default {
return;
}
}
},
handlerChange(val) {
let changeObj = {brandname: val[1].brandname, seriesname: val[1].name}
for(let i = 0; i < this.chooseArr.length; i++) {
let ele = this.chooseArr[i];
if(ele && ele.seriesname == changeObj.seriesname) {
return;
}
if(!this.chooseArr[i]) {
this.chooseArr[i] = changeObj;
let obj = this.$refs.modelRef.list[i]
obj.brand = changeObj.brandname;
obj.model = changeObj.seriesname;
obj.isDel = true;
return;
}
}
},
//
getData() {

@ -152,20 +152,20 @@ export default {
this.setScStatus(false)
}
this.$emit("del", n);
this.$emit("change", filterArr);
// this.$emit("change", filterArr);
},
//
handlerBrand(arr) {
let n = this.list.findIndex((ele) => ele.model === arr[1].name);
if (n != -1) return;
let row = this.list[this.chooseIndex];
row.brand = arr[1].brandname;
row.model = arr[1].name;
row.isDel = true;
let filterArr = this.list.filter((ele) => {
return ele.brand && ele.model;
});
this.$emit("change", filterArr);
// let n = this.list.findIndex((ele) => ele.model === arr[1].name);
// if (n != -1) return;
// let row = this.list[this.chooseIndex];
// row.brand = arr[1].brandname;
// row.model = arr[1].name;
// row.isDel = true;
// let filterArr = this.list.filter((ele) => {
// return ele.brand && ele.model;
// });
this.$emit("change", arr);
},
//
reCompare() {

@ -9,7 +9,7 @@
import * as echarts from "echarts";
import { bigNumberTransform } from "@/utils/gol/dataTool"
// import { bigNumberTransform } from "@/utils/gol/dataTool"
let colors = ['#546fc5', '#91cb74', '#f9c857', '#ed6565', '#72bfde', '#3aa272', '#fb8351'];
let colors = ['rgba(84,111,197,1)', 'rgba(145,203,116,1)', 'rgba(90,203,156,1)', 'rgba(248,200,87,1)', 'rgba(237,101,101,1)', "rgba(114,191,222,1)", 'rgba(58,162,114,1)', 'rgba(251,131,81,1)']
function createData(ds = [], hotIndex=[]) {
let arr = [];
for (let i = 0; i < ds.length; i++) {

@ -12,9 +12,9 @@
</v-label-div>
<div class="pv-inner">
<div class="pv-item" v-for="(item,index) in ds" :key="index">
<div class="dm">
<!-- <div class="dm">
<img class="dm-m1" :src="item.url"/>
</div>
</div> -->
<div class="d-f">
<div class="d1">{{item.title}}</div>
<div class="d2">粉丝数<span class="d2-s1">{{item.fans}}</span></div>

@ -11,9 +11,9 @@
<v-label-div title="正面观点KOL"> </v-label-div>
<div class="pv-inner">
<div class="pv-item" v-for="(item, index) in ds" :key="index">
<div class="dm">
<!-- <div class="dm">
<img class="dm-m1" :src="item.url"/>
</div>
</div> -->
<div class="d-f">
<div class="d1">{{ item.title }}</div>
<div class="d2">

@ -6,10 +6,14 @@
<v-tab-group style="margin-right: 16px" @change="changeInfo" :btns="['负面信息','预警信息']"></v-tab-group>
<v-btn @click="goback"></v-btn>
</v-label-div>
<div class="ide-d1">
<div class="ide-d1" v-if="currentIndex == 0">
<span class="s1">调性</span>
<a-checkbox-group v-model="dx" :disabled="noClick" :options="plainOptions" @change="(val) => onChange(val, 'dx')" />
</div>
<div class="ide-d1" v-if="currentIndex == 1">
<span class="s1">调性</span>
<a-checkbox-group v-model="dx1" :disabled="noClick" :options="plainOptions" @change="(val) => onChange1(val, 'dx1')" />
</div>
<div class="ide-d1" v-if="currentIndex == 1">
<span class="s1">状态</span>
<a-checkbox-group v-model="status" :disabled="noClick" :options="statusOptions" @change="(val) => statusChange(val, 'status')" />
@ -64,6 +68,7 @@ export default {
currentIndex: 0,
noClick: false,
dx: [1,2,3],
dx1: [1,2,3],
status: [0,1],
plainOptions: [
{label: '低级危机', value: 1},
@ -92,6 +97,13 @@ export default {
iReadState: '',
crisis: ''
},
warningForm2: {
token: '',
iPageIndex: 1,
iPageSize: 12,
iReadState: '',
crisis: ''
},
pagination: {
total: 0,
current: 1,
@ -163,6 +175,7 @@ export default {
created() {
this.form.token = this.getToken;
this.warningForm.token = this.getToken;
this.warningForm2.token = this.getToken;
this.form.sBrand = this.getWarningBrand.brandname || this.brand;
this.form.sSeriesName = this.getWarningSeries || ''
this.getData();
@ -185,7 +198,7 @@ export default {
},
getWarning() {
this.tableLoading = true;
let obj = Object.assign({}, this.getCtime2, this.warningForm)
let obj = Object.assign({}, this.getCtime2, this.warningForm2)
getSwsQyMessageList(obj).then(res => {
this.tbData2 = res.data;
this.pagination2.total = res.totalNum;
@ -202,13 +215,21 @@ export default {
this.form.iPageIndex = 1;
this.pagination.current = 1;
this.getData();
this.noClick = false;
},
onChange1(val, type) {
this.noClick = true;
this.form.sCrisis = val.join(',');
this.warningForm2.crisis = val.join(',');
this.form.iPageIndex = 1;
this.pagination2.current = 1;
this.getWarning();
this.noClick = false;
},
statusChange(val, status) {
this.noClick = true;
this.warningForm.iReadState = val.join(',');
this.warningForm.iPageIndex = 1;
this.warningForm2.iReadState = val.join(',');
this.warningForm2.iPageIndex = 1;
this.pagination2.current = 1;
this.getWarning();
this.noClick = false;

@ -86,7 +86,18 @@
import {getHealthIndex} from "@/api/MyBrand"
export default {
name: "brandData",
props: ["brand"],
props: ["brand","series"],
watch: {
series: {
handler(val) {
if(val != 'default') {
this.form.token = this.getToken;
this.getData();
}
},
immediate: true
},
},
data() {
return {
count: 0,
@ -113,16 +124,17 @@ export default {
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getWarningBrand.brandname || this.brand;
this.form.sSeriesName = this.getWarningSeries || '';
this.getData();
// this.form.token = this.getToken;
// this.getData();
},
methods: {
getData() {
this.form.sBrand = this.getWarningBrand.brandname || this.brand;
this.form.sSeriesName = this.getWarningSeries || this.series;
let obj = Object.assign({}, this.getCtime2, this.form)
getHealthIndex(obj).then(res => {
let data = res.data;
this.setHealth(data.healthIndex)
this.count = data.affections[0].value + data.affections[1].value + data.affections[2].value;
this.negCount = data.crisis[0].value + data.crisis[1].value + data.crisis[2].value;
this.affObj.a = data.affections[0].value || 0;

@ -21,7 +21,18 @@
import { getHotEventsList0528 } from "@/api/MyBrand";
export default {
name: "eventList",
props: ["brand"],
props: ["brand","series"],
watch: {
series: {
handler(val) {
if(val != 'default') {
this.form.token = this.getToken;
this.getData();
}
},
immediate: true
},
},
data() {
return {
load: false,
@ -37,13 +48,13 @@ export default {
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getWarningBrand.brandname || this.brand;
this.form.sSeriesName = this.getWarningSeries || ''
this.getData();
// this.form.token = this.getToken;
// this.getData();
},
methods: {
getData() {
this.form.sBrand = this.getWarningBrand.brandname || this.brand;
this.form.sSeriesName = this.getWarningSeries || this.series;
let obj = Object.assign({}, this.getCtime2, this.form);
this.load = true;
getHotEventsList0528(obj).then((res) => {

@ -3,33 +3,33 @@
<div class="b-outter">
<div class="b-d1">
<div class="bdl-d1-dd1">
<brand-data :brand="brand"></brand-data>
<brand-data :brand="brand" :series="srs"></brand-data>
</div>
<div class="bdl-d1-dd2">
<div class="bdl-d1-dd2-d1">
<div class="bdl-d1-dd2-d1-s1">{{this.brand}}</div>
<div class="bdl-d1-dd2-d1-number">{{healthNum}}</div>
<div class="bdl-d1-dd2-d1-number">{{getHealth?getHealth:0}}</div>
<div class="bdl-d1-dd2-d1-number" style="font-size: 18px;line-height: 36px">健康指数</div>
</div>
<img class="m2" src="../../assets/images/BrandInsight/img_warning.png" @click="openBrand"/>
</div>
<div class="bdl-d1-dd3">
<warning-info></warning-info>
<warning-info :brand="brand" :series="srs"></warning-info>
</div>
</div>
<div class="bdl-d2">
<event-list :brand="brand"></event-list>
<media-list :brand="brand"></media-list>
<event-list :brand="brand" :series="srs"></event-list>
<media-list :brand="brand" :series="srs"></media-list>
</div>
</div>
<a-modal title="推送设置" width="33%" :footer="null" @cancel="visible = false" :visible="visible">
<a-modal title="危机消息预警设置" width="33%" :footer="null" @cancel="visible = false" :visible="visible">
<div class="modal-table">
<a-form-model layout="horizontal" :label-col="{ span: 6 }" :wrapper-col="{ span: 14 }">
<a-form-model-item label="选择车型">
<a-input v-model="settingForm.SeriesNames" disabled placeholder="全部车型"></a-input>
<a @click="chooseSeries"></a>
</a-form-model-item>
<a-form-model-item label="接收时间">
<a-form-model-item label="危机等级">
<a-checkbox-group v-model="dx" :options="options" @change="(val) => crisisChange(val, 'crisis')" />
</a-form-model-item>
<a-form-model-item label="是否预警消息">
@ -65,7 +65,7 @@ import brandData from "./brandData";
import warningInfo from "./warningInfo";
import eventList from "./eventList";
import mediaList from "./mediaList"
import {getSwsQyUserCarMainBrandList, getHealthIndex, getSwsQyQuartzList, addOrUpdSwsQyQuartzList} from "@/api/MyBrand"
import {getSwsQyUserCarMainBrandList, getSwsQyQuartzList, addOrUpdSwsQyQuartzList} from "@/api/MyBrand"
import { getSeriesNameByCategory } from "@/api/comm";
export default {
name: "MyBrand",
@ -75,7 +75,7 @@ export default {
},
data() {
return {
healthNum: undefined,
healthNum: 0,
series: [],
form: {
token: '',
@ -101,16 +101,16 @@ export default {
models: [],
list: [],
brand: '',
srs: 'default',
}
},
mounted() {
created() {
this.setHeaderType(3);
this.brand = this.getWarningBrand.brandname;
this.form.token = this.getToken;
this.form.sBrand = this.getWarningBrand.brandname;
this.form.sSeriesName = this.getWarningSeries;
this.getData();
this.getApi();
this.getData();
},
methods: {
getApi() {
@ -122,25 +122,31 @@ export default {
this.dx = data[0].Es.Crisis.split(',');
this.settingForm.Crisis = data[0].Es.Crisis;
this.settingForm.SeriesNames = data[0].Es.SeriesNames;
if(data[0].Es.SeriesNames != '') {
if(data[0].Es.SeriesNames) {
this.list = data[0].Es.SeriesNames.split(',');
this.setWarningSeries(data[0].Es.SeriesNames);
this.form.sSeriesName = data[0].Es.SeriesNames;
this.srs = data[0].Es.SeriesNames;
} else {
this.setWarningSeries('');
this.form.sSeriesName = '';
this.srs = '';
}
this.Id = data[0].Id;
this.Statu = data[0].Statu
this.Statu = data[0].Statu;
// let obj = Object.assign({}, this.form, this.getCtime2);
// getHealthIndex(obj).then(res => {
// this.healthNum = res.data.healthIndex
// });
})
},
getData() {
let obj = Object.assign({}, this.form, this.getCtime2)
getSwsQyUserCarMainBrandList({token: this.getToken}).then(res => {
let brand = res.data[0] || '';
if(brand) {
this.brand = brand.brandname
};
});
getHealthIndex(obj).then(res => {
this.healthNum = res.data.healthIndex
});
},
openBrand() {
this.getApi();
@ -151,21 +157,7 @@ export default {
this.settingForm.Crisis = val.join(',');
},
openChange(e) { ///
let obj = {
Id: this.Id,
Statu: e?0:1
};
let form = {
token: this.getToken,
data: JSON.stringify(obj)
};
addOrUpdSwsQyQuartzList(form).then(res => {
if(res.msg == 'Success') {
let m = e?'预警已开启':'预警已关闭'
this.Statu = e?'0':'1';
this.$message.success(m);
}
})
},
chooseSeries() {
let obj = {
@ -181,11 +173,12 @@ export default {
onSave() {
let obj = {
Id: this.Id,
Statu: this.Statu,
Es: {
Brands: this.getWarningBrand.brandname,
SeriesNames: this.settingForm.SeriesNames,
QingGan: 2,
Crisis: this.settingForm.Crisis
Crisis: this.settingForm.Crisis,
},
};
let form = {
@ -194,7 +187,6 @@ export default {
};
addOrUpdSwsQyQuartzList(form).then(res => {
if(res.msg == 'Success') {
this.setWarningSeries(this.settingForm.SeriesNames);
this.$message.success('修改成功');
this.visible = false;
this.reload();

@ -20,7 +20,18 @@ import {getSourceTop} from "@/api/MyBrand"
import createOpt from "./opt"
export default {
name: "brand-top",
props: ["brand"],
props: ["brand","series"],
watch: {
series: {
handler(val) {
if(val != 'default') {
this.form.token = this.getToken;
this.getData();
}
},
immediate: true
},
},
data() {
return {
load: false,
@ -33,14 +44,14 @@ export default {
}
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getWarningBrand.brandname || this.brand;
this.form.sSeriesName = this.getWarningSeries || '';
this.getData()
// this.form.token = this.getToken;
// this.getData()
},
methods: {
getData() {
this.load = true;
this.form.sBrand = this.getWarningBrand.brandname || this.brand;
this.form.sSeriesName = this.getWarningSeries || this.series;
let obj = Object.assign({},this.getCtime2, this.form);
getSourceTop(obj).then(res => {
let data = res.data || {};

@ -23,7 +23,18 @@
import {getList} from "@/api/MyBrand"
export default {
name: "",
props: ["brand"],
props: ["brand","series"],
watch: {
series: {
handler(val) {
if(val != 'default') {
this.form.token = this.getToken;
this.getData();
}
},
immediate: true
},
},
data() {
return {
load: false,
@ -41,13 +52,13 @@ export default {
};
},
created() {
this.form.token = this.getToken;
this.form.sBrand = this.getWarningBrand.brandname || this.brand ;
this.form.sSeriesName = this.getWarningSeries || '';
this.getData();
// this.form.token = this.getToken;
// this.getData();
},
methods: {
getData() {
this.form.sBrand = this.getWarningBrand.brandname || this.brand;
this.form.sSeriesName = this.getWarningSeries || this.series;
let obj = Object.assign({}, this.getCtime2, this.form)
getList(obj).then(res => {
let data = res.data || [];

@ -11,6 +11,15 @@
<div class="ms-outter">
<div class="ms-d1">
<v-label-div title="个人中心">
<a-button type="primary" style="margin-right: 16px" @click="handlerPwd">
修改密码
</a-button>
<a-button type="primary" style="margin-right: 16px" @click="infoChange">
信息修改
</a-button>
<a-button type="primary" style="margin-right: 16px" @click="pushSetting">
推送设置
</a-button>
<v-btn @click="handlerBack"></v-btn>
</v-label-div>
<div class="ms-d1-inner">
@ -19,9 +28,7 @@
<div class="dd1">
<div class="ss1">
<span>{{getUser.UserName}}</span>
<a-button type="primary" style="margin-left: 16px" @click="handlerPwd">
修改密码
</a-button>
</div>
<span class="ss2">账户名</span>
</div>
@ -78,13 +85,67 @@
</div>
</div>
</v-modal>
<v-modal :eleStyle="{ width: '700px', height: '560px' }" :visible.sync="icVisible" title="个人信息修改">
<div slot="body">
<a-form-model :label-col="{ span: 7 }" :wrapper-col="{ span: 11 }" :model="infoForm" :rules="rules" ref="registerForm">
<a-form-model-item label="用户名">
<a-input v-model="infoForm.UserName" placeholder="请输入用户名"></a-input>
</a-form-model-item>
<a-form-model-item label="手机号" prop="Phone">
<a-input v-model="infoForm.Phone" placeholder="请输入手机号"></a-input>
</a-form-model-item>
<a-form-model-item label="邮箱">
<a-input v-model="infoForm.Email" placeholder="请输入邮箱"></a-input>
</a-form-model-item>
<a-form-model-item label="公司名称">
<a-input v-model="infoForm.UnitName" placeholder="请输入公司名称"></a-input>
</a-form-model-item>
<a-form-model-item label="公司品牌">
<span style="color: #FAFAFA">{{MainBrand}}</span>
</a-form-model-item>
<a-form-model-item label="到期时间">
<span style="color: #FAFAFA">{{ValidTime}}</span>
</a-form-model-item>
<a-form-model-item label="验证码">
<a-input v-model="infoForm.Code" placeholder="请输入验证码" autocomplete="off">
<span class="fp-s1" slot="suffix" v-if="showCode" @click="getCode"></span>
<span class="fp-s1" slot="suffix" v-else>{{ count }}</span>
</a-input>
</a-form-model-item>
</a-form-model>
<div class="ms-footer" align="center" style="margin-top: 16px">
<div class="f-btn" @click="infoComfirm"></div>
</div>
</div>
</v-modal>
<a-modal :visible="pushVisible" :width="750" title="推送设置" :footer="null" @cancel="pushVisible = false">
<a-form-model :label-col="{ span: 5 }" :wrapper-col="{ span: 17 }">
<a-form-model-item label="推送接收日期">
<a-checkbox-group v-model="publicDateArr" :options="pushGroup"></a-checkbox-group>
</a-form-model-item>
<a-form-model-item label="推送接收时间">
<a-time-picker format="HH:mm" valueFormat="HH:mm" v-model="publicStart"></a-time-picker><span style="color: #fff"> </span>
<a-time-picker format="HH:mm" valueFormat="HH:mm" v-model="publicEnd"></a-time-picker>
</a-form-model-item>
<a-form-model-item label="公众号预警推送">
<a-switch v-model="isWxOpen"></a-switch>
</a-form-model-item>
<a-form-model-item label="邮箱预警推送">
<a-switch v-model="isEmailOpen"></a-switch>
</a-form-model-item>
</a-form-model>
<div class="ms-footer" align="center">
<div class="f-btn" @click="pushConfirm"></div>
</div>
</a-modal>
</div>
</template>
<script>
import phoneForm from "./phoneForm";
import modifyForm from "./modifyForm";
import { getMyFileInfoExcel } from "@/api/mySelf";
import { getMyFileInfoExcel, getUserData, getUserDataVERCode, updUserData,
saveSwsQyWarningConf, getSwsQyWarningConf} from "@/api/mySelf";
export default {
name: "Myself",
components: {
@ -92,12 +153,34 @@ export default {
modifyForm,
},
data() {
const validatePhone = (rule, value, callback) => {
if (value === "") {
callback(new Error("请输入手机号"));
} else {
let reg = /^1\d{10}$/;
if (!reg.test(value)) {
callback(new Error("请输入正确的手机号"));
} else {
callback();
}
}
};
const validateInput = (rule, value, callback, msg) => {
if (value === "") {
callback(new Error(msg));
} else {
callback();
}
}
return {
modalObj: {
visible: false,
current: 0,
title: "修改密码",
},
showCode: true,
count: 0,
icVisible: false,
accout: {
sPhone: "",
iCode: "",
@ -139,6 +222,35 @@ export default {
},
],
tbData: [],
infoForm: {
UserName: '',
Phone: '',
Email: '',
UnitName: '',
Code: '',
},
MainBrand: '',
ValidTime: '',
rules: {
UserName: [{ validator: (rule, value, callback) => validateInput(rule, value, callback, '请输入用户名!') }],
Phone: [{ validator: validatePhone }],
Email: [{ validator: (rule, value, callback) => validateInput(rule, value, callback, '请输入邮箱!') }],
},
pushVisible: false,
pushGroup: [
{label: '周一',value: '1'},
{label: '周二',value: '2'},
{label: '周三',value: '3'},
{label: '周四',value: '4'},
{label: '周五',value: '5'},
{label: '周六',value: '6'},
{label: '周日',value: '7'},
],
publicDateArr: [],
publicStart: '',
publicEnd: '',
isWxOpen: false,
isEmailOpen: false
};
},
created() {
@ -200,6 +312,104 @@ export default {
this.pagination.current = iPageIndex;
this.getTable();
},
infoChange() {
this.icVisible = true;
getUserData({token: this.getToken}).then(res => {
let data = res.data;
this.infoForm.UserName = data.UserName;
this.infoForm.Phone = data.Phone;
this.infoForm.Email = data.Email;
this.infoForm.UnitName = data.UnitName;
this.MainBrand = data.MainBrand;
this.ValidTime = data.ValidTime;
})
},
pushSetting() {
this.pushVisible = true;
getSwsQyWarningConf({token: this.getToken}).then(res => {
let data = res.data[0];
if(data.WxWeek) {
this.isWxOpen = true;
this.publicDateArr = data.WxWeek.split(',');
this.publicStart = data.WxStart;
this.publicEnd = data.WxEnd;
}
if(data.EmailWeek) {
this.isEmailOpen = true;
this.publicDateArr = data.EmailWeek.split(',');
this.publicStart = data.EmailStart;
this.publicEnd = data.EmailEnd;
}
})
},
//
getCode() {
this.$refs.registerForm.validateField('Phone', errMsg => {
if (!errMsg) {
let obj = {
UserName: this.infoForm.UserName,
Phone: this.infoForm.Phone,
Email: this.infoForm.Email,
token: this.getToken,
}
getUserDataVERCode(obj).then(res => {
this.$message.success(res.msg);
this.countdown()
})
} else {
this.$message.error('验证失败')
}
})
},
//
countdown() {
const TIME_COUNT = 60;
if (!this.timer) {
this.count = TIME_COUNT;
this.showCode = false;
this.timer = setInterval(() => {
if (this.count > 0 && this.count <= TIME_COUNT) {
this.count--;
} else {
this.showCode = true;
clearInterval(this.timer);
this.timer = null;
}
}, 1000);
}
},
infoComfirm() {
let obj = Object.assign({token: this.getToken}, this.infoForm)
updUserData(obj).then(res => {
this.$message.success(res.msg);
this.timer = null;
this.icVisible = false;
this.infoForm.Code = '';
})
},
pushConfirm() {
let o = {
WxWeek: this.isWxOpen?this.publicDateArr.join(','):'',
WxStart: this.isWxOpen?this.publicStart:'',
WxEnd: this.isWxOpen?this.publicEnd:'',
EmailWeek: this.isEmailOpen?this.publicDateArr.join(','):'',
EmailStart: this.isEmailOpen?this.publicStart:'',
EmailEnd: this.isEmailOpen?this.publicEnd:'',
};
let jsonData = JSON.stringify(o)
let obj = {
token: this.getToken,
data: jsonData
}
saveSwsQyWarningConf(obj).then(res => {
if(res.msg == '成功') {
this.$message.success('修改成功');
this.pushVisible = false;
} else {
this.$message.error(res.msg);
}
})
},
},
};
</script>
@ -288,4 +498,8 @@ export default {
margin-top: 12px;
}
}
.fp-s1 {
cursor: pointer;
color: #698198;
}
</style>

@ -52,7 +52,7 @@ import moment from "moment";
import createOpt from "./opt"
import vRankingKmd from "./v-ranking-kmd"
import {getCheZhuCarEnergyRankingAll, getCheZhuCarEnergyChart} from "@/api/SaleRank"
import {getCheZhuCountTime} from "@/api/SaleRank"
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: "AllLevel",
components: {
@ -82,13 +82,13 @@ export default {
methods: {
getData() {
this.load = true;
getCheZhuCountTime({token: this.getToken}).then(res => {
getCheZhuLatestTime({token: this.getToken}).then(res => {
let data = res.data;
this.form.sStartTime = data.Data[data.Data.length-1].Time;
this.form.sEndTime = data.Data[data.Data.length-1].Time;
this.selTime[0] = data.Data[data.Data.length-1].Time;
this.selTime[1] = data.Data[data.Data.length-1].Time;
this.dDate = data.Data[data.Data.length-1].Time;
this.form.sStartTime = data;
this.form.sEndTime = data;
this.selTime[0] = data;
this.selTime[1] = data;
this.dDate = data;
let obj = {
token: this.getToken,
sTimeType: 4,

@ -52,7 +52,7 @@ import moment from "moment";
import createOpt from "./opt"
import vRankingKmd from "./v-ranking-kmd"
import {getCheZhuCarSpecidRankingAll, getCheZhuCarSpecidChart} from "@/api/SaleRank"
import {getCheZhuCountTime} from "@/api/SaleRank"
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: "AllLevel",
components: {
@ -86,13 +86,13 @@ export default {
methods: {
getData() {
this.load = true;
getCheZhuCountTime({token: this.getToken}).then(res => {
getCheZhuLatestTime({token: this.getToken}).then(res => {
let data = res.data;
this.form.sStartTime = data.Data[data.Data.length-1].Time;
this.form.sEndTime = data.Data[data.Data.length-1].Time;
this.selTime[0] = data.Data[data.Data.length-1].Time;
this.selTime[1] = data.Data[data.Data.length-1].Time;
this.dDate = data.Data[data.Data.length-1].Time;
this.form.sStartTime = data;
this.form.sEndTime = data;
this.selTime[0] = data;
this.selTime[1] = data;
this.dDate = data;
let obj = {
token: this.getToken,
sTimeType: 4,
@ -120,13 +120,13 @@ export default {
},
getMore() {
this.load = true;
getCheZhuCountTime({token: this.getToken}).then(res => {
getCheZhuLatestTime({token: this.getToken}).then(res => {
let data = res.data;
this.form.sStartTime = data.Data[data.Data.length-1].Time;
this.form.sEndTime = data.Data[data.Data.length-1].Time;
this.selTime[0] = data.Data[data.Data.length-1].Time;
this.selTime[1] = data.Data[data.Data.length-1].Time;
this.dDate = data.Data[data.Data.length-1].Time;
this.form.sStartTime = data;
this.form.sEndTime = data;
this.selTime[0] = data;
this.selTime[1] = data;
this.dDate = data;
let obj = {
token: this.getToken,
sTimeType: 4,

@ -52,7 +52,7 @@ import moment from "moment";
import createOpt from "./opt"
import vRankingKmd from "./v-ranking-kmd"
import {getCheZhuCarPriceRankingAll, getCheZhuCarPriceChart} from "@/api/SaleRank"
import {getCheZhuCountTime} from "@/api/SaleRank"
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: "AllLevel",
components: {
@ -82,13 +82,13 @@ export default {
methods: {
getData() {
this.load = true;
getCheZhuCountTime({token: this.getToken}).then(res => {
getCheZhuLatestTime({token: this.getToken}).then(res => {
let data = res.data;
this.form.sStartTime = data.Data[data.Data.length-1].Time;
this.form.sEndTime = data.Data[data.Data.length-1].Time;
this.selTime[0] = data.Data[data.Data.length-1].Time;
this.selTime[1] = data.Data[data.Data.length-1].Time;
this.dDate = data.Data[data.Data.length-1].Time;
this.form.sStartTime = data;
this.form.sEndTime = data;
this.selTime[0] = data;
this.selTime[1] = data;
this.dDate = data;
let obj = {
token: this.getToken,
sTimeType: 4,

@ -81,8 +81,8 @@
<a-button style="margin-left: 12px" @click="onDelete(index)" type="primary">{{item}}<a-icon type="close" /></a-button>
</span>
</div>
<iSaleModelChoose :brand="brand" :model="model" :visible.sync="modelShow" @change="handlerBrand"></iSaleModelChoose>
<iSaleModelChoose :brand="brand" :model="model" :visible.sync="modelShowStable" @change="handlerBrandStable"></iSaleModelChoose>
<iSaleModelChoose v-if="isStable" :brand="brand" :model="model" :visible.sync="modelShow" @change="handlerBrand"></iSaleModelChoose>
<iSaleModelChoose v-else :brand="brand" :model="model" :visible.sync="modelShowStable" @change="handlerBrandStable"></iSaleModelChoose>
<div class="d3" v-if="getIsLight">
<v-echarts :opt="opt2"></v-echarts>
</div>
@ -145,7 +145,8 @@ export default {
brand: '奥迪',
model: '',
//
filterActive: []
filterActive: [],
isStable: true,
}
},
created() {
@ -211,9 +212,11 @@ export default {
},
//
hanlderAddSeries() {
this.isStable = true;
this.modelShow = true;
},
hanlderAddStable() {
this.isStable = false;
this.modelShowStable = true;
},
handlerBrand(val) {

@ -28,7 +28,6 @@
import createOpt from './opt'
import createOptLight from './optLight'
import {getSalesGrowthRatioByNewEnergy} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: 'totalPassengerVehicle',
data() {
@ -48,14 +47,13 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
this.form.sEndTime = res.data;
this.yearNumber = res.data.slice(0,4) * 1;
let currYear = res.data.slice(0,4) * 1;
let date = this.getLatestTime;
this.form.sEndTime = date;
this.yearNumber = date.slice(0,4) * 1;
let currYear = date.slice(0,4) * 1;
this.yearList = [currYear, currYear-1, currYear-2 ,currYear-3 ,currYear-4]
this.form.sStartTime = (currYear-1) + '-01';
this.getData()
})
},
methods: {
getData() {

@ -28,7 +28,6 @@
import createOpt from './opt'
import createOptLight from './optLight'
import {getSalesGrowthRatio} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: 'totalPassengerVehicle',
data() {
@ -48,14 +47,13 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
this.form.sEndTime = res.data;
this.yearNumber = res.data.slice(0,4) * 1;
let currYear = res.data.slice(0,4) * 1;
let date = this.getLatestTime;
this.form.sEndTime = date;
this.yearNumber = date.slice(0,4) * 1;
let currYear = date.slice(0,4) * 1;
this.yearList = [currYear, currYear-1, currYear-2 ,currYear-3 ,currYear-4]
this.form.sStartTime = (currYear-1) + '-01';
this.getData()
})
},
methods: {
getData() {

@ -27,7 +27,6 @@
<script>
import {getSalesBrandTop20, getSalesCarseriesTop20} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -49,12 +48,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date);
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -28,7 +28,6 @@
import createOpt from './opt'
import createOptLight from './optLight'
import {getSalesGrowthRatioByFuel} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: 'totalPassengerVehicle',
data() {
@ -48,14 +47,13 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
this.form.sEndTime = res.data;
this.yearNumber = res.data.slice(0,4) * 1;
let currYear = res.data.slice(0,4) * 1;
let date = this.getLatestTime;
this.form.sEndTime = date;
this.yearNumber = date.slice(0,4) * 1;
let currYear = date.slice(0,4) * 1;
this.yearList = [currYear, currYear-1, currYear-2 ,currYear-3 ,currYear-4]
this.form.sStartTime = (currYear-1) + '-01';
this.getData()
})
},
methods: {
getData() {

@ -17,7 +17,6 @@
<script>
import {getSalesPriceRangeSBrandByEnergy} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -39,12 +38,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesPriceRangeSTypesByEnergy} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -28,7 +28,6 @@
import createOpt from './opt'
import createOptLight from './optLight'
import {getSalesSpecName1TypesBySedanE} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: 'totalPassengerVehicle',
data() {
@ -48,14 +47,13 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
this.form.sEndTime = res.data;
this.yearNumber = res.data.slice(0,4) * 1;
let currYear = res.data.slice(0,4) * 1;
let date = this.getLatestTime;
this.form.sEndTime = date;
this.yearNumber = date.slice(0,4) * 1;
let currYear = date.slice(0,4) * 1;
this.yearList = [currYear, currYear-1, currYear-2 ,currYear-3 ,currYear-4]
this.form.sStartTime = (currYear-1) + '-01';
this.getData()
})
},
methods: {
getData() {

@ -28,7 +28,6 @@
import createOpt from './opt'
import createOptLight from './optLight'
import {getSalesSpecName1TypesByMpvE} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: 'totalPassengerVehicle',
data() {
@ -48,14 +47,13 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
this.form.sEndTime = res.data;
this.yearNumber = res.data.slice(0,4) * 1;
let currYear = res.data.slice(0,4) * 1;
let date = this.getLatestTime;
this.form.sEndTime = date;
this.yearNumber = date.slice(0,4) * 1;
let currYear = date.slice(0,4) * 1;
this.yearList = [currYear, currYear-1, currYear-2 ,currYear-3 ,currYear-4]
this.form.sStartTime = (currYear-1) + '-01';
this.getData()
})
},
methods: {
getData() {

@ -28,7 +28,6 @@
import createOpt from './opt'
import createOptLight from './optLight'
import {getSalesSpecName1TypesBySuvE} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: 'totalPassengerVehicle',
data() {
@ -48,14 +47,13 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
this.form.sEndTime = res.data;
this.yearNumber = res.data.slice(0,4) * 1;
let currYear = res.data.slice(0,4) * 1;
let date = this.getLatestTime;
this.form.sEndTime = date;
this.yearNumber = date.slice(0,4) * 1;
let currYear = date.slice(0,4) * 1;
this.yearList = [currYear, currYear-1, currYear-2 ,currYear-3 ,currYear-4]
this.form.sStartTime = (currYear-1) + '-01';
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesSpecName1TypesE} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesSpecNameTypesBySedanE} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from "./optLight"
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesSpecNameTypesByMpvE} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from "./optLight"
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesSpecNameTypesE} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from "./optLight"
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesSpecNameTypesBySuvE} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -17,7 +17,6 @@
<script>
import {getSalesPriceRangeSBrand} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -39,12 +38,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesPriceRangeSTypes} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesSpecNameTypesBySedan} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesSpecNameTypesByMpv} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesSpecNameTypes} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from "./optLight"
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -25,7 +25,6 @@
<script>
import {getSalesSpecNameTypesBySuv} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
import createOpt from './opt'
import createOptLight from './optLight'
export default {
@ -47,12 +46,11 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
var dt = new Date(res.data)
let date = this.getLatestTime;
var dt = new Date(date)
var newDt = new Date( (dt.setMonth(dt.getMonth() - 11)) ).toISOString();
this.selTime = [newDt.slice(0,7), res.data];
this.selTime = [newDt.slice(0,7), date];
this.getData()
})
},
methods: {
getData() {

@ -28,7 +28,6 @@
import createOpt from './opt'
import createOptLight from './optLight'
import {getSalesSpecName1TypesBySedan} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: 'totalPassengerVehicle',
data() {
@ -48,14 +47,13 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
this.form.sEndTime = res.data;
this.yearNumber = res.data.slice(0,4) * 1;
let currYear = res.data.slice(0,4) * 1;
let date = this.getLatestTime;
this.form.sEndTime = date;
this.yearNumber = date.slice(0,4) * 1;
let currYear = date.slice(0,4) * 1;
this.yearList = [currYear, currYear-1, currYear-2 ,currYear-3 ,currYear-4]
this.form.sStartTime = (currYear-1) + '-01';
this.getData()
})
},
methods: {
getData() {

@ -28,7 +28,6 @@
import createOpt from './opt'
import createOptLight from './optLight'
import {getSalesSpecName1TypesByMpv} from "@/api/SaleRankMarket";
import {getCheZhuLatestTime} from "@/api/SaleRank"
export default {
name: 'totalPassengerVehicle',
data() {
@ -48,14 +47,13 @@ export default {
},
created() {
this.form.token = this.getToken;
getCheZhuLatestTime({token: this.form.token}).then(res => {
this.form.sEndTime = res.data;
this.yearNumber = res.data.slice(0,4) * 1;
let currYear = res.data.slice(0,4) * 1;
let date = this.getLatestTime;
this.form.sEndTime = date;
this.yearNumber = date.slice(0,4) * 1;
let currYear = date.slice(0,4) * 1;
this.yearList = [currYear, currYear-1, currYear-2 ,currYear-3 ,currYear-4]
this.form.sStartTime = (currYear-1) + '-01';
this.getData()
})
},
methods: {
getData() {

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save