Commit e677c898 authored by 黄媛媛's avatar 黄媛媛

Merge branch 'master' of http://gitlab.oytour.com/huaguohao/crm

parents be7d970c 68cb7a01
...@@ -30,7 +30,7 @@ export default { ...@@ -30,7 +30,7 @@ export default {
@import './assets/css/tablevoerride.css'; @import './assets/css/tablevoerride.css';
@import './assets/global/font.css'; @import './assets/global/font.css';
@import '//at.alicdn.com/t/font_1627123_s7tjzgwbg5i.css'; @import '//at.alicdn.com/t/font_1627123_rt0bu3guyb.css';
@import url('//at.alicdn.com/t/font_1627123_grz80mbm3sv.css'); @import url('//at.alicdn.com/t/font_1627123_grz80mbm3sv.css');
/* @import './assets/css/common.css'; */ /* @import './assets/css/common.css'; */
@import './assets/css/init.css'; @import './assets/css/init.css';
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
.home-nav { .home-nav {
width: 100%; width: 100%;
height: 100%; height: 100%;
font-family: perfectFont; /* font-family: perfectFont; */
user-select: none; user-select: none;
} }
.log-box { .log-box {
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
background-color: rgba(13, 36, 129, 1); background-color: rgba(13, 36, 129, 1);
} }
.home-nav .home-menu .home-menu-item.active > div { .home-nav .home-menu .home-menu-item.active > div {
font-weight: bold; /* font-weight: bold; */
color: rgba(13, 36, 129, 1); color: rgba(13, 36, 129, 1);
opacity: 1; opacity: 1;
transition: all linear 0.2s; transition: all linear 0.2s;
......
...@@ -252,6 +252,13 @@ ...@@ -252,6 +252,13 @@
v-if="queryType[6].show" v-if="queryType[6].show"
show-overflow-tooltip> show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column
prop="GuestCount"
label="交客数"
sortable
v-if="queryType[19].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column <el-table-column
prop="OrderMoney" prop="OrderMoney"
label="交易金额" label="交易金额"
...@@ -529,6 +536,9 @@ export default { ...@@ -529,6 +536,9 @@ export default {
},{ },{
label: '创建时间', label: '创建时间',
show: true, show: true,
},{
label: '交客数',
show: true,
}, },
], ],
queryType: [ queryType: [
...@@ -589,6 +599,9 @@ export default { ...@@ -589,6 +599,9 @@ export default {
},{ },{
label: '创建时间', label: '创建时间',
show: true, show: true,
},{
label: '交客数',
show: true,
}, },
], ],
CustomerId: 0, CustomerId: 0,
......
...@@ -502,7 +502,7 @@ export default { ...@@ -502,7 +502,7 @@ export default {
x.region = this.optionsNames.filter(item=>{ x.region = this.optionsNames.filter(item=>{
return !item.t return !item.t
}) })
} else if (x.Name === '负责人' || x.Name === '创建人' || x.Name === '线索来源' || x.Name === '客户来源' || x.Name === '客人级别' || x.Name === '经营场所' || x.Name === '性别' || x.Name === '是否关键决策人' || x.Name === '职务' || x.Name === '商机状态组') { } else if (x.Name === '负责人' || x.Name === '创建人' || x.Name === '线索来源' || x.Name === '客户来源' || x.Name === '客人级别' || x.Name === '经营场所' || x.Name === '性别' || x.Name === '是否关键决策人' || x.Name === '职务' || x.Name === '商机状态组' || x.Name === '交客数' || x.Name === '优惠券数' || x.Name === '交易金额' || x.Name === '幸福存折') {
x.region = this.optionsNames.filter(item=>{ x.region = this.optionsNames.filter(item=>{
return (item.c === '等于' || item.c === '不等于') && item.t return (item.c === '等于' || item.c === '不等于') && item.t
}) })
......
...@@ -141,17 +141,59 @@ ...@@ -141,17 +141,59 @@
show-overflow-tooltip> show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="CustomerLevelStr" prop="TraveNum"
label="客户级别" label="参团数"
width="120" sortable
v-if="queryType[4].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="OrderCount"
label="订单交易数"
sortable
v-if="queryType[24].show" v-if="queryType[24].show"
show-overflow-tooltip> show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="TraveNum" prop="OrderMoney"
label="参团数" label="交易金额"
sortable sortable
v-if="queryType[4].show" v-if="queryType[25].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="BirthdayAddress"
label="出生地点"
sortable
v-if="queryType[28].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="AddressDetail"
label="家庭详细地址"
sortable
v-if="queryType[27].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="HistoryRecord"
label="出境记录"
sortable
v-if="queryType[26].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="EconomicCapability"
label="经济能力确认"
sortable
v-if="queryType[29].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="IsRecommendStr"
label="是否推存"
sortable
v-if="queryType[30].show"
show-overflow-tooltip> show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -485,7 +527,25 @@ export default { ...@@ -485,7 +527,25 @@ export default {
label: '备注', label: '备注',
show: true, show: true,
},{ },{
label: '客户等级', label: '订单交易数',
show: true,
},{
label: '订单金额',
show: true,
},{
label: '出境记录',
show: true,
},{
label: '家庭详细地址 ',
show: true,
},{
label: '出生地点',
show: true,
},{
label: '经济能力确认',
show: true,
},{
label: '是否推存',
show: true, show: true,
} }
], ],
...@@ -572,7 +632,25 @@ export default { ...@@ -572,7 +632,25 @@ export default {
label: '备注', label: '备注',
show: true, show: true,
},{ },{
label: '客户等级', label: '订单交易数',
show: true,
},{
label: '交易金额',
show: true,
},{
label: '出境记录',
show: true,
},{
label: '家庭详细地址 ',
show: true,
},{
label: '出生地点',
show: true,
},{
label: '经济能力确认',
show: true,
},{
label: '是否推存',
show: true, show: true,
} }
], ],
...@@ -637,6 +715,7 @@ export default { ...@@ -637,6 +715,7 @@ export default {
}, },
mounted() { mounted() {
this.userInfo = this.getLocalStorage(); this.userInfo = this.getLocalStorage();
console.log(this.queryType)
this.getList() this.getList()
this.Employee() this.Employee()
let $this = this let $this = this
......
<template>
<div class="event-box">
<el-row :gutter="60" style="width:100%">
<el-col :span="12" style="border-right: 1px dotted #8BABF8">
<div class="event-title">
<span class="titleicon"></span>
<span>直客营销事件</span>
</div>
<div class="events">
<el-badge :value="2" :max="99" class="item">
<div class="event">
<img src="../../assets/img/event/shengri.png" />
<div class="content">
<div class="ti">生日事件</div>
<el-tooltip class="item" effect="dark" content="近七日即将过生日的客户,可以向客户或者关联同行发送生日涵" placement="top">
<div class="desc">
近七日即将过生日的客户,可以向客户或者关联同行发送生日涵
</div>
</el-tooltip>
</div>
</div>
</el-badge>
<div class="event">
<img src="../../assets/img/event/biye.png" />
<div class="content">
<div class="ti">毕业季事件</div>
<el-tooltip class="item" effect="dark" content="进入毕业季6-8月份正值初中,高中,大学学生毕业的客户名单,可以向客户或在关联同行发出恭贺函,并且关联部分产品信息" placement="top">
<div class="desc">
进入毕业季6-8月份正值初中,高中,大学学生毕业的客户名单,可以向客户或在关联同行发出恭贺函,并且关联部分产品信息
</div>
</el-tooltip>
</div>
</div>
<div class="event">
<img src="../../assets/img/event/jieri.png" />
<div class="content">
<div class="ti">节日事件</div>
<el-tooltip class="item" effect="dark" content="系统内置跨年、元旦、情人节、妇女节等等10多种节日模板,可以快速发送给客人祝福" placement="top">
<div class="desc">
系统内置跨年、元旦、情人节、妇女节等等10多种节日模板,可以快速发送给客人祝福
</div>
</el-tooltip>
</div>
</div>
<div class="event">
<img src="../../assets/img/event/jinji.png" />
<div class="content">
<div class="ti">突发事件</div>
<el-tooltip class="item" effect="dark" content=" 产生突发事件,例如极端天气、灾难、事故快速通知所有的客人。" placement="top">
<div class="desc">
产生突发事件,例如极端天气、灾难、事故快速通知所有的客人。
</div>
</el-tooltip>
</div>
</div>
<div class="event">
<img src="../../assets/img/event/yijian.png" />
<div class="content">
<div class="ti">意见反馈事件</div>
<el-tooltip class="item" effect="dark" content="客户填写了意见调查以后, 可以快速批量转发给关联同行" placement="top">
<div class="desc">
客户填写了意见调查以后, 可以快速批量转发给关联同行
</div>
</el-tooltip>
</div>
</div>
<div class="event">
<img src="../../assets/img/event/nexttrip.png" />
<div class="content">
<div class="ti">下次出行事件</div>
<el-tooltip class="item" effect="dark" content="跟进客人填写的意见调查的下次出游计划,提前一个月的时间发出提醒,可以把相关产品信息发送给客人或关联同行" placement="top">
<div class="desc">
跟进客人填写的意见调查的下次出游计划,提前一个月的时间发出提醒,可以把相关产品信息发送给客人或关联同行
</div>
</el-tooltip>
</div>
</div>
</div>
</el-col>
<el-col :span="12">
<div class="event-title">
<span class="titleicon yellow"></span>
<span>同行营销事件</span>
</div>
<div class="events">
<div class="event">
<img src="../../assets/img/event/newline.png" />
<div class="content">
<div class="ti">新线路推广</div>
<div class="desc">
在客户生日的时候,发送一封祝贺函,能让客户感受到印象之旅的温度,也能让同行感受到印象无微不至的关怀。
</div>
</div>
</div>
<div class="event">
<img src="../../assets/img/event/newteam.png" />
<div class="content">
<div class="ti">新系列推广</div>
<div class="desc">
在客户生日的时候,发送一封祝贺函,能让客户感受到印象之旅的温度,也能让同行感受到印象无微不至的关怀。
</div>
</div>
</div>
<div class="event">
<img src="../../assets/img/event/weidan.png" />
<div class="content">
<div class="ti">尾单发送</div>
<div class="desc">
在客户生日的时候,发送一封祝贺函,能让客户感受到印象之旅的温度,也能让同行感受到印象无微不至的关怀。
</div>
</div>
</div>
<div class="event">
<img src="../../assets/img/event/jieri.png" />
<div class="content">
<div class="ti">节日事件</div>
<div class="desc">
在客户生日的时候,发送一封祝贺函,能让客户感受到印象之旅的温度,也能让同行感受到印象无微不至的关怀。
</div>
</div>
</div>
<div class="event">
<img src="../../assets/img/event/fanyong.png" />
<div class="content">
<div class="ti">返佣、幸福存折通知</div>
<div class="desc">
在客户生日的时候,发送一封祝贺函,能让客户感受到印象之旅的温度,也能让同行感受到印象无微不至的关怀。
</div>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
}
</script>
<style>
.event-box{
}
.event-box .event-title .titleicon{
display:inline-block;
width:4px;
height:14px;
background: #0D2481;
margin-right: 10px;
}
.event-box .event-title .titleicon.yellow{
background:#FFA475;
}
.event-box .event-title{
font-size:14px;
font-weight: 900;
font-family: perfectFont;
}
.event-box .events{
display: flex;
flex-flow:row wrap;
justify-content: space-between;
margin-top:30px;
}
.event-box .events .event{
width:248px;
height:370px;
background:rgba(244,245,249,1);
margin-bottom: 30px;
}
.event-box .events .event img{
width:100%;
height: 268px;
}
.event-box .events .event .content{
height: 102px;
padding:19px;
box-sizing: border-box;
border:1px solid #ddd;
border-top:none;
margin-top:-4px;
}
.event-box .events .event .content .ti{
font-size:14px;
font-family:perfectFont;
font-weight:bold;
margin-bottom: 15px;
}
.event-box .events .event .content .desc{
height:34px;
font-size:12px;
font-family:Microsoft YaHei;
font-weight:400;
color:rgba(17,17,17,1);
line-height: 17px;
overflow: hidden;
text-overflow: ellipsis;
line-clamp: 2;
}
</style>
\ No newline at end of file
<style>
.festivalOrder{
height: calc(100% - 25px);
}
.statistics-title {
font-size: 24px;
color: #111;
margin-bottom: 30px;
font-family: perfectFont;
}
.festivalOrder .conten-box{
display: flex;
flex-direction: column;
height: calc(100% - 62px);
}
.festivalOrder .conten-box .el-card .el-card__header {
font-weight: normal !important;
}
.festivalOrder .conten-box .top{
flex: 1.2;
margin-bottom: 25px;
}
.festivalOrder .conten-box .bottom{
flex: .8;
}
.festivalOrder .conten-box .left{
height: 100%;
}
.festivalOrder .conten-box .el-card.blue {
background: #0D2481!important;
color: #fff !important;
height: calc(100% - 2px);
}
.festivalOrder .conten-box .el-card .el-card__body {
padding:0 20px 20px 20px;
height: calc(100% - 98px);
max-height: calc(100% - 98px);
}
.festivalOrder .conten-box .img {
display: flex;
align-items: flex-end;
text-align: center;
padding: 27px 0 0 40px!important;
justify-content: center;
font-size: 14px;
}
.festivalOrder .sjsm{
height: 198px;
overflow: auto;
}
.festivalOrder .sjsm>div{
margin-bottom: 20px;
}
.festivalOrder .sjsm>div:last-child{
margin-bottom: 0px;
}
.festivalOrder .sjsm>div{
flex: 1;
background:rgba(244,245,249,1);
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px;
}
.festivalOrder .sjsm>div .left{
display: flex;
align-items: center;
font-size: 14px;
font-family: 'perfectFont';
font-weight: 900;
}
.festivalOrder .sjsm>div .left img{
padding-right: 10px;
}
.festivalOrder .sjsm>div .right{
text-align: right;
color: #888888;
font-size: 12px;
}
.festivalOrder .hight-font{
color: #0D2481 !important;
font-size: 14px;
}
.fesIcon{
display:inline-block;
width:12px;
height:12px;
border-radius: 50%;
position: relative;
top:1px;
}
.fes1{
background-color: #FFAF86;
}
.fes2{
background-color: #97BC7A;
}
.fes3{
background-color: #D2C9F1;
}
.fes4{
background-color: #24B896;
}
.fes5{
background-color: #ED70E9;
}
.fes6{
background-color: #F3C108;
}
.fes7{
background-color: #6EBCE2;
}
.fesList{
float:left;
margin-right:90px;
font-size:14px;
font-family: '微软雅黑';
}
.fesSpan2{
display:inline-block;
margin:0 30px 30px 8px;
}
.fesList:nth-of-type(even){
margin-right:0!important;
}
.botTaolun{
position: absolute;
bottom:15px;
right:25px;
cursor: pointer;
color:#FFA475;
font-size:12px;
}
.fesRemind{
color:#111111;
font-size:12px;
line-height: 20px;
margin-top:15px;
}
.comListDiv{
float:left;
width:10%;
height:30px;
}
.clearfix:after {content: "\0020";display: block;height: 0;clear: both;}
</style>
<template>
<div class="festivalOrder" v-loading="loading">
<div class="statistics-title bold18">特殊节假日统计</div>
<div class="conten-box" v-if="!loading">
<el-row :gutter="25" class="top">
<el-col :span="16" class="left">
<el-card class="blue">
<div slot="header" class="clearfix">
<span>特殊节假日统计</span>
</div>
<el-row :gutter="80" style="height: 100%;margin-top:60px;">
<el-col :span="10" class="img">
<div>
<div style="margin-bottom: 10px;">
<img src="../../assets/img/tongji/jieri.png" alt="">
</div>
<!-- <p>亲子出游</p> -->
</div>
</el-col>
<el-col :span="14" style="height: 100%;">
<div class="clearfix" style="width:350px;">
<div class="fesList" v-for="(item,index) in dataList" :key="index">
<span class="fesIcon" :class="{'fes1': item.FestivalName=='元旦', 'fes2': item.FestivalName=='春节','fes3': item.FestivalName=='清明',
'fes4': item.FestivalName=='端午','fes5': item.FestivalName=='中秋','fes6': item.FestivalName=='国庆','fes7': item.FestivalName=='劳动',
}"></span><span class="fesSpan2">{{item.FestivalName}}</span>
<span>{{getPercent(item)}}</span>
</div>
</div>
<div class="clearfix" style="width:350px;margin-top:20px;">
<div class="comListDiv" :class="{'fes1': item.FestivalName=='元旦', 'fes2': item.FestivalName=='春节','fes3': item.FestivalName=='清明',
'fes4': item.FestivalName=='端午','fes5': item.FestivalName=='中秋','fes6': item.FestivalName=='国庆','fes7': item.FestivalName=='劳动',
}" v-for="(item,index) in dataList" :key="index" :style="{'width': getPercent(item)}"></div>
</div>
</el-col>
</el-row>
</el-card>
</el-col>
<el-col :span="8" style="height: 100%;">
<el-card style="height: calc(100% - 2px);">
<div slot="header" class="clearfix">
<span>购物统计<span class="font-size-12">(按平均计算)</span></span>
</div>
<festivalChart v-if="isShowFeature" :dataList="dataList" :totalCount="totalCount"/>
</el-card>
</el-col>
</el-row>
<el-row :gutter="25" class="bottom" >
<el-col :span="16" style="height: 100%;">
<el-card style="height: 100%;">
<div slot="header" class="clearfix">
<span>数据说明</span>
</div>
<div class="sjsm">
<div v-for="(item,index) in dataList" :key="index">
<div class="left">
<img :src="getImgSrc(item.FestivalName)" alt="">
<p>{{item.FestivalName}}</p>
</div>
<div class="right">
<p>累计报名<span class="hight-font">{{item.OrderCount}}</span>人,关联购物金额<span class="hight-font">{{item.ShopMoney}}</span>万,报名均价为<span class="hight-font">{{item.Unit_Price}}</span></p>
<p>最喜爱产品<span class="hight-font">{{item.LtName}}</span></p>
</div>
</div>
</div>
</el-card>
</el-col>
<el-col :span="8" style="height: 100%;">
<el-card style="height: 100%;">
<div slot="header" class="clearfix">
<el-row style="width:100%">
<el-col :span="12" size="30">
推荐解答
</el-col>
<el-col :span="12" class="right-title">
<i class="iconfont icondianzan1"></i> 点赞
</el-col>
</el-row>
</div>
<div class="situ">
<div class="fesRemind">根据对客户年龄段的统计,可以更好的了解不同年龄段客 人的喜根据对客户年龄段的统计。根据对客户年龄段的统 计,可以更好的了解不同年龄段客人的喜根据对客户年龄 段的统计</div>
<div class="botTaolun" @click="drawer = true">
查看更多,参与讨论(1)
<i class="el-icon-d-arrow-right"></i>
</div>
</div>
</el-card>
</el-col>
</el-row>
</div>
<el-drawer
size='695px'
:visible.sync="drawer"
direction="rtl"
:with-header="false">
<discussBox :id="discussID"/>
</el-drawer>
</div>
</template>
<script>
import festivalChart from './model/festivalChart'
import discussBox from "./model/discussBox";
export default {
components: {
festivalChart,
discussBox
},
data() {
return {
loading: false,
dataList:[],
totalCount:0,
discussID: 0,
drawer: false,
isShowFeature:false,
};
},watch:{
},
mounted() {
this.GetSexOrderList()
},
methods: {
GetSexOrderList(){
this.loading = true
this.apipost("/api/Statistic/GetFestivalOrderList", {}, res => {
this.loading=false;
this.dataList=res.data.data;
this.isShowFeature=true;
this.totalCount=0;
if(this.dataList&&this.dataList.length>0){
this.dataList.forEach(x=>{
this.totalCount+=x.OrderCount;
})
}
});
},
//获取对应节日图片
getImgSrc(item){
let str=''
switch(item) {
case '元旦':
str=require('../../assets/img/tongji/yuandan.png')
break;
case '中秋':
str=require('../../assets/img/tongji/zhongqiu.png')
break;
case '劳动':
str=require('../../assets/img/tongji/laodong.png')
break;
case '国庆':
str=require('../../assets/img/tongji/guoqing.png')
break;
case '春节':
str=require('../../assets/img/tongji/chunjie.png')
break;
case '清明':
str=require('../../assets/img/tongji/qingmin.png')
break;
case '端午':
str=require('../../assets/img/tongji/duanwu.png')
break;
}
return str;
},
//获取百分百
getPercent(item){
return (Math.round(item.OrderCount / this.totalCount * 10000) / 100.00).toFixed(1) + "%"
}
}
}
</script>
\ No newline at end of file
...@@ -161,7 +161,7 @@ ...@@ -161,7 +161,7 @@
:visible.sync="drawer" :visible.sync="drawer"
direction="rtl" direction="rtl"
:with-header="false"> :with-header="false">
<discussBox :id="discussID"/> <discussBox :type="discussID"/>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
......
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
:visible.sync="drawer" :visible.sync="drawer"
direction="rtl" direction="rtl"
:with-header="false"> :with-header="false">
<discussBox :id="discussID"/> <discussBox :type="discussID"/>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
......
...@@ -63,10 +63,10 @@ ...@@ -63,10 +63,10 @@
</div> </div>
<div class="situ"> <div class="situ">
<div class="c">根据对客户年龄段的统计可以,更好的了解不同年龄段客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等</div> <div class="c">根据对客户年龄段的统计可以,更好的了解不同年龄段客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等</div>
<!-- <div class="bot" @click="drawer = true"> <div class="bot" @click="drawer = true">
查看更多,参与讨论(19) 查看更多,参与讨论(19)
<i class="el-icon-d-arrow-right"></i> <i class="el-icon-d-arrow-right"></i>
</div> --> </div>
</div> </div>
</el-card> </el-card>
</div> </div>
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
:visible.sync="drawer" :visible.sync="drawer"
direction="rtl" direction="rtl"
:with-header="false"> :with-header="false">
<discussBox :id="discussID"/> <discussBox :type="discussID"/>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
......
...@@ -135,16 +135,16 @@ ...@@ -135,16 +135,16 @@
<el-col :span="12" size="30"> <el-col :span="12" size="30">
推荐解答 推荐解答
</el-col> </el-col>
<el-col :span="12" class="right-title"> <!-- <el-col :span="12" class="right-title">
<i class="iconfont icondianzan1"></i> 点赞 <i class="iconfont icondianzan1"></i> 点赞
</el-col> </el-col> -->
</el-row> </el-row>
</div> </div>
<div class="situ"> <div class="situ">
<div class="c">根据对客户年龄段的统计可以,更好的了解不同年龄段客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等</div> <div class="c">{{BbsList.length ? BbsList[0].Content : '暂无'}}</div>
<div class="bot" @click="drawer = true"> <div class="bot" @click="drawer = true">
查看更多,参与讨论(19) {{BbsList.length ? '查看更多,参与讨论('+ BbsList.length +')' : '暂时还没有讨论,快来发起讨论吧~'}}
<i class="el-icon-d-arrow-right"></i> <i class="el-icon-d-arrow-right"></i>
</div> </div>
</div> </div>
</el-card> </el-card>
...@@ -156,7 +156,7 @@ ...@@ -156,7 +156,7 @@
:visible.sync="drawer" :visible.sync="drawer"
direction="rtl" direction="rtl"
:with-header="false"> :with-header="false">
<discussBox :id="discussID"/> <discussBox :type="discussID"/>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
...@@ -174,21 +174,28 @@ export default { ...@@ -174,21 +174,28 @@ export default {
}, },
data() { data() {
return { return {
discussID: 0, discussID: 1,
drawer: false, drawer: false,
chartData: [50, 30, 20, 10, 60], chartData: [50, 30, 20, 10, 60],
shopChartData: [50, 30, 20, 10, 60], shopChartData: [50, 30, 20, 10, 60],
SexOrder: [], SexOrder: [],
loading: false, loading: false,
strArr: ['亲子', '蜜月', '夕阳红', '暑期', '寒假'] strArr: ['亲子', '蜜月', '夕阳红', '暑期', '寒假'],
BbsList: [],
}; };
},watch:{ },watch:{
}, },
mounted() { mounted() {
// this.GetSexOrderList() // this.GetSexOrderList()
this.GetBbsListByType()
}, },
methods: { methods: {
GetBbsListByType(){
this.apipost("/api/Customer/GetBbsListByType", {t: 1}, res => {
this.BbsList = res.data.data
});
},
GetSexOrderList(){ GetSexOrderList(){
this.loading = true this.loading = true
this.apipost("/api/Statistic/GetSexOrderList", {}, res => { this.apipost("/api/Statistic/GetSexOrderList", {}, res => {
......
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
overflow-y: auto; overflow-y: auto;
height: calc(100% - 102px); height: calc(100% - 102px);
overflow-x: hidden; overflow-x: hidden;
position: absolute;
width: 100%;
} }
.discussBox .list .list-item .list-item-tit{ .discussBox .list .list-item .list-item-tit{
height: 24px; height: 24px;
...@@ -79,10 +81,10 @@ ...@@ -79,10 +81,10 @@
padding-right: 3px; padding-right: 3px;
} }
.discussBox .list .list-item .footer>span:hover { .discussBox .list .list-item .footer>span:hover {
color: #76839b; color: #175199;
} }
.like{ .like{
color: #175199; color: #76839b;
} }
.discussBox .list .list-item .msg-box{ .discussBox .list .list-item .msg-box{
padding-left: 33px; padding-left: 33px;
...@@ -125,130 +127,82 @@ ...@@ -125,130 +127,82 @@
height: 50px; height: 50px;
padding: 0 20px; padding: 0 20px;
border-top: 1px solid #f6f6f6; border-top: 1px solid #f6f6f6;
position: absolute;
width: 100%;
box-sizing: border-box;
bottom: 2px;
} }
</style> </style>
<template> <template>
<div class="discussBox"> <div class="discussBox">
<div class="discussBox-tit"> <div class="discussBox-tit">
<div class="num">1 条评论</div> <div class="num">{{BbsList.length ? BbsList.length + '条' : '暂无'}}评论</div>
<div class="cp change" @click="sort = !sort"><i class="el-icon-sort"></i>切换为{{sort === true ? '时间' : '点赞'}}排序</div> <div class="cp change" @click="sortS = sortS ? '' : 1, GetBbsListByType() "><i class="el-icon-sort"></i>切换为{{sortS === 1 ? '时间' : '点赞'}}排序</div>
</div> </div>
<ul class="list"> <ul class="list">
<li class="list-item" v-for="(item, index) in 1" :key="index"> <li class="list-item" v-for="(item, index) in BbsList" :key="index">
<div> <div>
<div class="list-item-tit"> <div class="list-item-tit">
<div> <div>
<img width="24" height="24" src="http://imgfile.oytour.com/New/Upload/User/20191018150051176.png" alt=""> <img width="24" height="24" :src="item.ImgPhoto" alt="">
<span style="font-size:14px;font-family:perfectFont;font-weight:700;">罗超</span> <span style="font-size:14px;font-family:perfectFont;font-weight:700;">{{item.RejectUserName}}</span>
</div> </div>
<span class="font-color-info">21:03</span> <span class="font-color-info">{{item.TimeStr}}</span>
</div> </div>
<div class="content"> <div class="content">
<p>根据对客户性别的统计可以,更好的了解不同性别的客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等</p> <p>{{item.Content}}</p>
</div> </div>
<div class="footer"> <div class="footer">
<span class="cp like"><i class="iconfont iconzan"></i>赞(20)</span> <span class="cp like" @click="AddLike(item)"><i class="iconfont iconzan"></i>{{item.Likes > 0 ? item.Likes : ''}}</span>
<span class="cp" @click="msgBoxShow = !msgBoxShow"><i class="iconfont iconhuifu"></i>{{msgBoxShow ? '取消' : ''}}回复</span> <span class="cp" @click="setHF(item.Id)"><i class="iconfont iconhuifu"></i>{{hfID === item.Id ? '取消' : ''}}回复</span>
</div> </div>
<div class="msg-box" v-if="msgBoxShow"> <div class="msg-box" v-if="hfID === item.Id">
<div style="margin-top: 5px;"> <div style="margin-top: 5px;">
<el-input placeholder="请输入内容" v-model="input3" class="input-with-select"> <el-input placeholder="请输入内容" v-model="input3" class="input-with-select">
<el-button slot="append" type="primary">发布</el-button> <el-button slot="append" type="primary" @click="AddNewBbs(2, item)">发布</el-button>
</el-input> </el-input>
</div> </div>
</div> </div>
<!-- <div class="next"></div> <template v-if="item.Childs.length">
<div class="level2"> <template v-for="(c, cindex) in item.Childs" >
<div class="list-item-tit"> <div class="next" :key="cindex + item.Id" :class="{'next2': cindex === 0}"></div>
<div> <div class="level2" :key="cindex">
<img width="24" height="24" src="https://pic4.zhimg.com/v2-d3f573f46ce86a124f4d92e4383fceab_is.jpg" alt=""> <div class="list-item-tit">
<div> <div>
<span>王二</span> <img width="24" height="24" :src="c.ImgPhoto" alt="">
<span class="huifu">回复</span> <div>
<span>刘德</span> <span>{{c.CreateByStr}}</span>
<span class="huifu">回复</span>
<span>{{c.RejectUserName}}</span>
</div>
</div>
<span class="font-color-info">{{c.TimeStr}}</span>
</div> </div>
</div> <div class="content">
<span class="font-color-info">2 天前</span> <p>{{c.Content}}</p>
</div>
<div class="content">
<p>高反为0?...在郎木寺那里青旅住好几个人高反了</p>
</div>
<div class="footer">
<span class="cp like"><i class="iconfont iconzan"></i></span>
<span class="cp" @click="msgBoxShow = !msgBoxShow"><i class="iconfont iconhuifu"></i>{{msgBoxShow ? '取消' : ''}}回复</span>
</div>
<div class="msg-box" v-if="msgBoxShow">
<div style="margin-top: 5px;">
<el-input placeholder="请输入内容" v-model="input3" class="input-with-select">
<el-button slot="append" type="primary">发布</el-button>
</el-input>
</div>
</div>
</div>
<div class="next next2"></div>
<div class="level2">
<div class="list-item-tit">
<div>
<img width="24" height="24" src="https://pic4.zhimg.com/v2-d3f573f46ce86a124f4d92e4383fceab_is.jpg" alt="">
<div>
<span>王二</span>
<span class="huifu">回复</span>
<span>刘德</span>
</div> </div>
</div> <div class="footer">
<span class="font-color-info">2 天前</span> <span class="cp like" @click="AddLike(c)"><i class="iconfont iconzan"></i>{{c.Likes > 0 ? c.Likes : ''}}</span>
</div> <span class="cp" @click="setHF(c.Id)"><i class="iconfont iconhuifu"></i>{{hfID === c.Id ? '取消' : ''}}回复</span>
<div class="content"> </div>
<p>高反为0?...在郎木寺那里青旅住好几个人高反了</p> <div class="msg-box" v-if="hfID === c.Id">
</div> <div style="margin-top: 5px;">
<div class="footer"> <el-input placeholder="请输入内容" v-model="input3" class="input-with-select">
<span class="cp like"><i class="iconfont iconzan"></i></span> <el-button slot="append" type="primary" @click="AddNewBbs(2, item, c)">发布</el-button>
<span class="cp" @click="msgBoxShow = !msgBoxShow"><i class="iconfont iconhuifu"></i>{{msgBoxShow ? '取消' : ''}}回复</span> </el-input>
</div> </div>
<div class="msg-box" v-if="msgBoxShow">
<div style="margin-top: 5px;">
<el-input placeholder="请输入内容" v-model="input3" class="input-with-select">
<el-button slot="append" type="primary">发布</el-button>
</el-input>
</div>
</div>
</div>
<div class="next next2"></div>
<div class="level2">
<div class="list-item-tit">
<div>
<img width="24" height="24" src="https://pic4.zhimg.com/v2-d3f573f46ce86a124f4d92e4383fceab_is.jpg" alt="">
<div>
<span>王二</span>
<span class="huifu">回复</span>
<span>刘德</span>
</div> </div>
</div> </div>
<span class="font-color-info">2 天前</span> </template>
</div> </template>
<div class="content">
<p>高反为0?...在郎木寺那里青旅住好几个人高反了</p>
</div>
<div class="footer">
<span class="cp like"><i class="iconfont iconzan"></i></span>
<span class="cp" @click="msgBoxShow = !msgBoxShow"><i class="iconfont iconhuifu"></i>{{msgBoxShow ? '取消' : ''}}回复</span>
</div>
<div class="msg-box" v-if="msgBoxShow">
<div style="margin-top: 5px;">
<el-input placeholder="请输入内容" v-model="input3" class="input-with-select">
<el-button slot="append" type="primary">发布</el-button>
</el-input>
</div>
</div>
</div> -->
</div> </div>
</li> </li>
</ul> </ul>
<div class="reply"> <div class="reply">
<div class="msg-box"> <div class="msg-box" style=" width: 100%;">
<div style="margin-top: 5px;"> <div style="margin-top: 5px;">
<el-input placeholder="请输入内容" v-model="input3" class="input-with-select"> <el-input placeholder="请输入内容" v-model="content" class="input-with-select">
<el-button slot="append" type="primary">发布</el-button> <el-button slot="append" type="primary" @click="AddNewBbs()">发布</el-button>
</el-input> </el-input>
</div> </div>
</div> </div>
...@@ -258,7 +212,7 @@ ...@@ -258,7 +212,7 @@
<script> <script>
export default { export default {
props:{ props:{
t:{ type:{
type:Number, type:Number,
default:1 default:1
} }
...@@ -268,22 +222,75 @@ export default { ...@@ -268,22 +222,75 @@ export default {
sort: true, sort: true,
msgBoxShow: false, msgBoxShow: false,
input3: '', input3: '',
bbs:[] content: '',
BbsList:[],
userInfo: {},
hfID: -1,
sortS: 1
}
},watch:{
type: {
handler(val, oldVal){
this.GetBbsListByType()
},
deep:true
} }
}, },
props: [],
methods: { methods: {
load(){ AddLike(obj){
this.apipost("/api/Customer/GetBbsListByType",{ let msg = {
t:this.t, bid: obj.Id,
o:"1" photo: this.userInfo.Icon,
},r=>{ uname: this.userInfo.EmName
this.bbs=r.data.data; }
this.apipost("/api/Customer/AddLike", msg, res => {
if(res.data.resultCode === 1){
this.GetBbsListByType()
this.$message.success('操作成功')
}
});
},
setHF(id){
this.hfID = this.hfID === -1 ? id : -1
},
AddNewBbs(type, obj, cObj){
let msg = {
t: this.type,
content: this.content,
pid: 0,
ru: 0,
run: this.userInfo.EmName
}
if (type){
msg.pid = obj.Id
msg.ru = obj.Id
msg.content = this.input3
msg.run = obj.RejectUserName
}
if (cObj){
msg.pid = obj.Id
msg.ru = cObj.Id
msg.run = cObj.CreateByStr
}
this.apipost("/api/Customer/AddNewBbs", msg, res => {
if(res.data.resultCode === 1){
this.GetBbsListByType()
this.input3 = ''
this.hfID = -1
this.content = ''
this.$message.success('操作成功')
}
});
},
GetBbsListByType(){
this.apipost("/api/Customer/GetBbsListByType", {t: this.type, o: this.sortS,}, res => {
this.BbsList = res.data.data
}); });
} },
}, },
mounted(){ mounted(){
this.GetBbsListByType()
this.userInfo = this.getLocalStorage()
} }
} }
</script> </script>
\ No newline at end of file
<style>
.sexChart{
height: 100%;
}
</style>
<template>
<div class="sexChart" ref="sexChart">
</div>
</template>
<script>
export default {
props: ["dataList","totalCount"],
data() {
return {
nameList:[],
data:[],
};
},watch:{
},
mounted() {
if(this.dataList&&this.dataList.length>0){
this.data=[];
this.dataList.forEach(x => {
this.nameList.push(x.FestivalName);
let obj={
value:0,
name:''
}
// obj.value=((x.OrderCount / this.totalCount * 10000) / 100.00).toFixed(1);
obj.value=x.OrderCount;
obj.name=x.FestivalName
this.data.push(obj);
});
}
this.init()
let myChart = this.$echarts.init(this.$refs.sexChart);
window.addEventListener("resize", () => {
myChart.resize();
});
},
methods: {
init(){
let myChart = this.$echarts.init(this.$refs.sexChart);
let option = {
title: {
text: '',
subtext: '',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
legend: {
orient: 'vertical',
left: 'left',
data: []
},
series: [
{
name: '访问来源',
type: 'pie',
radius: '55%',
center: ['50%', '60%'],
data: this.data,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
myChart.setOption(option);
}
}
}
</script>
\ No newline at end of file
...@@ -64,9 +64,9 @@ ...@@ -64,9 +64,9 @@
</el-row> </el-row>
</div> </div>
<div class="situ"> <div class="situ">
<div class="c">根据对客户年龄段的统计可以,更好的了解不同年龄段客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等</div> <div class="c">{{BbsList.length ? BbsList[0].Content : '暂无'}}</div>
<div class="bot" @click="drawer = true"> <div class="bot" @click="drawer = true">
查看更多,参与讨论(1) {{BbsList.length ? '查看更多,参与讨论('+ BbsList.length +')' : '暂时还没有讨论,快来发起讨论吧~'}}
<i class="el-icon-d-arrow-right"></i> <i class="el-icon-d-arrow-right"></i>
</div> </div>
</div> </div>
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
:visible.sync="drawer" :visible.sync="drawer"
direction="rtl" direction="rtl"
:with-header="false"> :with-header="false">
<discussBox :id="discussID"/> <discussBox :type="discussID"/>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
...@@ -118,7 +118,7 @@ export default { ...@@ -118,7 +118,7 @@ export default {
}, },
data() { data() {
return { return {
discussID: 0, discussID: 2,
drawer: false, drawer: false,
scaleData: [], scaleData: [],
showChats: [], showChats: [],
...@@ -141,13 +141,20 @@ export default { ...@@ -141,13 +141,20 @@ export default {
"壮年(36-45岁)", "壮年(36-45岁)",
"中年(46-69岁)", "中年(46-69岁)",
"老年(70岁以上)" "老年(70岁以上)"
] ],
BbsList: [],
}; };
}, },
mounted() { mounted() {
this.init(); this.init();
this.GetBbsListByType()
}, },
methods: { methods: {
GetBbsListByType(){
this.apipost("/api/Customer/GetBbsListByType", {t: 2}, res => {
this.BbsList = res.data.data
});
},
init() { init() {
this.apipost("/api/Statistic/GetAgeShopList", {}, res => { this.apipost("/api/Statistic/GetAgeShopList", {}, res => {
res.data.data.forEach(x => { res.data.data.forEach(x => {
......
...@@ -152,11 +152,11 @@ ...@@ -152,11 +152,11 @@
</el-row> </el-row>
</div> </div>
<div class="situ"> <div class="situ">
<div class="c">根据对客户年龄段的统计可以,更好的了解不同年龄段客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等</div> <div class="c">{{BbsList.length ? BbsList[0].Content : '暂无'}}</div>
<!-- <div class="bot" @click="drawer = true"> <div class="bot" @click="drawer = true">
查看更多,参与讨论(19) {{BbsList.length ? '查看更多,参与讨论('+ BbsList.length +')' : '暂时还没有讨论,快来发起讨论吧~'}}
<i class="el-icon-d-arrow-right"></i> <i class="el-icon-d-arrow-right"></i>
</div> --> </div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
...@@ -167,7 +167,7 @@ ...@@ -167,7 +167,7 @@
:visible.sync="drawer" :visible.sync="drawer"
direction="rtl" direction="rtl"
:with-header="false"> :with-header="false">
<discussBox :id="discussID"/> <discussBox :type="discussID"/>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
...@@ -183,21 +183,28 @@ export default { ...@@ -183,21 +183,28 @@ export default {
}, },
data() { data() {
return { return {
discussID: 0, discussID: 3,
drawer: false, drawer: false,
chartData: [0, 0], chartData: [0, 0],
shopChartData: [], shopChartData: [],
SexOrder: [], SexOrder: [],
loading: false, loading: false,
strArr: ['男', '女'], strArr: ['男', '女'],
BbsList: [],
}; };
},watch:{ },watch:{
}, },
mounted() { mounted() {
this.GetSexOrderList() this.GetSexOrderList()
this.GetBbsListByType()
}, },
methods: { methods: {
GetBbsListByType(){
this.apipost("/api/Customer/GetBbsListByType", {t: 2}, res => {
this.BbsList = res.data.data
});
},
GetSexOrderList(){ GetSexOrderList(){
this.loading = true this.loading = true
this.apipost("/api/Statistic/GetSexOrderList", {}, res => { this.apipost("/api/Statistic/GetSexOrderList", {}, res => {
......
...@@ -170,7 +170,7 @@ ...@@ -170,7 +170,7 @@
:visible.sync="drawer" :visible.sync="drawer"
direction="rtl" direction="rtl"
:with-header="false"> :with-header="false">
<discussBox :id="discussID"/> <discussBox :type="discussID"/>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
......
...@@ -15,9 +15,9 @@ export default { ...@@ -15,9 +15,9 @@ export default {
let locationName = window.location.hostname; let locationName = window.location.hostname;
let domainPostUrl = "http://testapi.oytour.com" let domainPostUrl = "http://testapi.oytour.com"
if (this.isOnline()) { if (this.isOnline()) {
if (window.location.host.indexOf('crmyx.oytour.com') != -1) if (window.location.host.indexOf('fcrmyx.oytour.com') != -1)
{ {
domainUrl = "http://testcrm.oytour.com" domainUrl = "http://crm.oytour.com"
domainPostUrl = "http://reborn.oytour.com" domainPostUrl = "http://reborn.oytour.com"
} }
else else
......
...@@ -155,6 +155,14 @@ export default new Router({ ...@@ -155,6 +155,14 @@ export default new Router({
title: "出游类型统计" title: "出游类型统计"
} }
}, },
{
path: "/festivalOrderList",
name: "festivalOrderList",
component: ()=>import('./components/statistics/festivalOrderList.vue'),
meta: {
title: "特殊节假日统计"
}
},
{ {
path: "/marriage", path: "/marriage",
name: "marriage", name: "marriage",
...@@ -163,6 +171,14 @@ export default new Router({ ...@@ -163,6 +171,14 @@ export default new Router({
title: "婚姻统计" title: "婚姻统计"
} }
}, },
{
path: "/sellevent",
name: "sellevent",
component: ()=>import('./components/sellevent/index.vue'),
meta: {
title: "营销事件"
}
},
{ {
path: "/gaoxiao", path: "/gaoxiao",
name: "gaoxiao", name: "gaoxiao",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment