Commit 948cfd40 authored by 吴春's avatar 吴春
parents 959e0764 54018957
......@@ -109,7 +109,8 @@
</li>
</ul>
</div>
<div v-loading="loading" style="height: 78%;overflow: auto;display: flex;flex-direction: row;flex-wrap: wrap;">
<!-- height: 78%;overflow: auto; -->
<div v-loading="loading" style="display: flex;flex-direction: row;flex-wrap: wrap;">
<IncomeChange :msgData="msg" :StatisticalData="StatisticalData"></IncomeChange>
<IncomeShare :msgData="msg" :StatisticalData="StatisticalData"></IncomeShare>
<WoolRateChange :msgData="msg" :StatisticalData="StatisticalData"></WoolRateChange>
......@@ -140,7 +141,8 @@ export default {
LineId: 0,
Type: '0',
DataType:'-1',
LossType:'0'
LossType:'0',
IsLastData :1
},
dateTime: [],
CompanyList: [],
......@@ -181,7 +183,8 @@ export default {
this.getCompanyMsg.RB_Group_Id = this.getLocalStorage().RB_Group_id
const end = new Date();
const start = new Date();
start.setMonth(start.getMonth() - 6);
start.setMonth(start.getMonth() - 7);
end.setMonth(end.getMonth() - 1);
this.dateTime = [this.$commonUtils.getFormatDateM(start),this.$commonUtils.getFormatDateM(end)]
this.msg.startDate = this.dateTime[0]
this.msg.endDate = this.dateTime[1]
......
......@@ -27,6 +27,12 @@ export default {
'rgba(228,57,57,.7)','rgba(247,154,44,.7)','rgba(255,246,11,.7)','rgba(61,217,72,.7)','rgba(57,202,228,.7)','rgba(44,49,241,.7)','rgba(122,57,228,.7)'],
}
},
created() {
window.addEventListener('resize', this.handleResize);
},
destroyed() {
window.removeEventListener('resize', this.handleResize);
},
watch: {
StatisticalData:{
handler(n,o){
......@@ -44,6 +50,10 @@ export default {
},
methods: {
handleResize() {
location.reload()
},
getEchart(){
let datas = []
let titles = []
......@@ -61,7 +71,7 @@ export default {
data: x.DetailList.map(y=>{return y.ProfitRate.toFixed(2)}) // 绑定实时数据数组
}
datas.push(obj)
if(indexs>7){
if(indexs>10){
let name=x.Name;
Newobj[name]=false;
}
......@@ -149,7 +159,7 @@ export default {
series:datas
}
myChart.setOption(option,true) // echarts设置初始化选项
myChart.setOption(option,true)
},
}
......
<template>
<div class="echartsBox">
<div class="titleBox text-center row">
<h3>各费用项收入占比变化趋势图</h3>
<h3>各费用项收入占比变化趋势图 %</h3>
<div style="margin-left: 20px;">
......@@ -26,11 +26,35 @@ export default {
MaoLiAnalysisData: [],
SJLLAnalysisData: [],
RoomAnalysisData: [],
CostAnalysisData: [],
colorList:['#089bab','#FFA171','#72b8ff','#ff9cc6','#7b78ff','#28cc90','#ee8fff','#5cf2ff','#ff9a00','#4fc4f7','#738eff','#b0edff',
'rgba(228,57,57,.9)','rgba(248,126,46,1)','rgba(252,196,34,.7)','#3DD948','#39CAE4','rgba(44,49,241,.6)','rgba(122,57,228,.5)','#E65FC1','#D0B478','#BABABA',
'rgba(228,57,57,.7)','rgba(247,154,44,.7)','rgba(255,246,11,.7)','rgba(61,217,72,.7)','rgba(57,202,228,.7)','rgba(44,49,241,.7)','rgba(122,57,228,.7)'],
CostDataObj: {
name: '',
type:'line',
showSymbol: true,
smooth: true,
symbolSize: 1,
data: [],
},
CostDatas: [],
incomeTitles:[
{Name: '机票/收入',value:'JiPiaoRate',ID:2},
{Name: '房费/收入',value:'RommFeeRate',ID:4},
{Name: '车费/收入',value:'CarFeeRate',ID:6},
{Name: '餐费/收入',value:'MealFeeRate',ID:8},
{Name: '门票/收入',value:'TicketFeeRate',ID:10},
{Name: '签证/收入',value:'VisaFeeRate',ID:12},
],
}
},
created() {
window.addEventListener('resize', this.handleResize);
},
destroyed() {
window.removeEventListener('resize', this.handleResize);
},
watch: {
StatisticalData:{
handler(n,o){
......@@ -41,6 +65,7 @@ export default {
this.MaoLiAnalysisData = n.MaoLiAnalysisData
this.SJLLAnalysisData = n.SJLLAnalysisData
this.RoomAnalysisData = n.RoomAnalysisData
this.CostAnalysisData = n.CostAnalysisData
this.getEchart()
},
deep: true,
......@@ -51,112 +76,156 @@ export default {
},
methods: {
handleResize() {
location.reload()
},
getEchart(){
this.inCostDatas()
let that = this
let titles = this.incomeTitles.map(x=>{return x.Name})
let datas = []
let titles = []
let Stocklegend = {}
let Newobj = {}
this.JapanSPData.forEach((x,indexs)=>{
let Name = `${x.Name.indexOf('率')==-1?x.Name:x.Name+'%'}`
titles.push(Name)
let obj = {
name: Name,
type: 'line',
showSymbol: true,
smooth: true,
symbolSize: 1,
data: x.MonthData // 绑定实时数据数组
}
datas.push(obj)
if(indexs>8){
let name=x.Name;
Newobj[name]=false;
}
Stocklegend=Newobj;
})
let chartDom = document.getElementById('PropMyEchart','light');
let Newobj={};
for(let index=0;index<this.incomeTitles.length;index++){
for(let i=0;i<this.MonthList.length;i++){
let filter = this.CostAnalysisData.filter(z=>{return z.Month==this.MonthList[i]})
if(filter){
this.CostDatas.forEach((x,indexs)=>{
if(indexs==0){
x.name = '机票/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['JiPiaoRate'])
})
}else if(indexs==1){
x.name = '房费/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['RommFeeRate'])
})
}else if(indexs==2){
x.name = '车费/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['CarFeeRate'])
})
}else if(indexs==3){
x.name = '餐费/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['MealFeeRate'])
})
}else if(indexs==4){
x.name = '门票/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['TicketFeeRate'])
})
}else if(indexs==5){
x.name = '签证/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['VisaFeeRate'])
})
}
// if(indexs>4){
// let name=x.name;
// Newobj[name]=false;
// }
// Stocklegend=Newobj;
})
}
}
}
datas = this.CostDatas
let chartDom = document.getElementById('PropMyEchart');
let myChart = this.$echarts.init(chartDom);
let option
let option;
option = {
color:this.colorList,
legend: {
x:'left',
y:'bottom',
type:'scroll',
icon: "circle",
padding: [5, 30, 20, 30] ,
data: titles,
selected: Stocklegend
},
grid: {
color:that.colorList,
legend: {
x:'left',
y:'bottom',
type:'scroll',
icon: "circle",
padding: [5, 30, 20, 30] ,
type:'scroll',
data: titles,
selected: Stocklegend
},
grid: {
left: 15, // 默认10%,给24就挺合适的。
top: 30, // 默认60
right: 45, // 默认10%
bottom: 70, // 默认60
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
nameTextStyle: {
fontWeight: 600,
fontSize: 18
},
axisLine: {
lineStyle: {
// 设置x轴颜色
color: "transparent"
}
},
axisLabel: {
textStyle: {
color: "#333333"
}
},
data: this.MonthList
},
yAxis : [
{
type : 'value',
axisLine: {
tooltip : {
trigger: 'axis',
axisPointer: {
lineStyle: {
// 设置x轴颜色
color: "transparent",
width: 1,
}
},
axisLabel: {
textStyle: {
color: "#969696"
type: 'dashed',
color: "#ddd"
}
},
splitLine:{
show:true,
lineStyle:{
// type:'dashed'
color:'#EEEEEE',
}
},
xAxis : [
{
type: 'category',
boundaryGap: false,
nameTextStyle: {
fontWeight: 600,
fontSize: 18
},
data:this.MonthList,
axisLine: {
lineStyle: {
// 设置x轴颜色
color: "transparent"
}
},
axisLabel: {
textStyle: {
color: "#333333"
}
},
}
],
yAxis : [
{
type : 'value',
axisLine: {
lineStyle: {
// 设置x轴颜色
color: "transparent",
width: 1,
}
},
axisLabel: {
textStyle: {
color: "#969696"
}
},
splitLine:{
show:true,
lineStyle:{
// type:'dashed'
color:'#EEEEEE',
}
}
}
],
dataZoom: [
{
type: 'inside'
}
],
tooltip: {
trigger: 'axis',
axisPointer: {
lineStyle: {
type: 'dashed',
color: "#ddd"
}
}
},
dataZoom: [
{
type: 'inside'
}
],
series:datas
],
series:datas
};
myChart.setOption(option,true)
},
inCostDatas() {
this.CostDatas = []
for(let i=0;i<7;i++){
this.CostDatas.push(JSON.parse(JSON.stringify(this.CostDataObj)))
}
myChart.setOption(option,true)
},
}
......
......@@ -27,6 +27,12 @@ export default {
'rgba(228,57,57,.7)','rgba(247,154,44,.7)','rgba(255,246,11,.7)','rgba(61,217,72,.7)','rgba(57,202,228,.7)','rgba(44,49,241,.7)','rgba(122,57,228,.7)'],
}
},
created() {
window.addEventListener('resize', this.handleResize);
},
destroyed() {
window.removeEventListener('resize', this.handleResize);
},
watch: {
StatisticalData:{
handler(n,o){
......@@ -44,6 +50,10 @@ export default {
},
methods: {
handleResize() {
location.reload()
},
getEchart(){
let datas = []
let titles = []
......@@ -61,7 +71,7 @@ export default {
data: x.DetailList.map(y=>{return y.IncomeRate.toFixed(2)}) // 绑定实时数据数组
}
datas.push(obj)
if(indexs>4){
if(indexs>10){
let name=x.Name;
Newobj[name]=false;
}
......@@ -149,7 +159,7 @@ export default {
series:datas
}
myChart.setOption(option,true) // echarts设置初始化选项
myChart.setOption(option,true)
},
}
......
......@@ -36,6 +36,12 @@ export default {
CurrentMonth: null
}
},
created() {
window.addEventListener('resize', this.handleResize);
},
destroyed() {
window.removeEventListener('resize', this.handleResize);
},
watch: {
StatisticalData:{
handler(n,o){
......@@ -53,6 +59,10 @@ export default {
},
methods: {
handleResize() {
location.reload()
},
getEchart(){
let datas = [{
name: this.CurrentMonth,
......@@ -71,7 +81,9 @@ export default {
let Stocklegend = {}
let Newobj = {}
this.LineAnalysisData.forEach((x,indexs)=>{
let Name = `${x.Name}`
if(Name!='合计'){
titles.push(Name)
let newDetailList = []
......@@ -91,11 +103,13 @@ export default {
}
// if(indexs>3){
// let name=x.Name;
// Newobj[name]=false;
// }
// Stocklegend=Newobj;
// if(indexs>3){
// let name=x.Name;
// Newobj[name]=false;
// }
// Stocklegend=Newobj;
}
})
let chartDom = document.getElementById('ShareMyEchart');
let myChart = this.$echarts.init(chartDom);
......@@ -106,15 +120,17 @@ export default {
trigger: 'item'
},
legend: {
orient: 'vertical',
bottom:'bottom',
left: 'left',
padding: [25, 30, 20, 20] ,
type:'scroll',
icon: "circle",
padding: [25, 20, 20, 20] ,
selected: Stocklegend
},
series: datas
}
myChart.setOption(option,true) // echarts设置初始化选项
myChart.setOption(option,true)
},
}
......
......@@ -27,6 +27,12 @@ export default {
'rgba(228,57,57,.7)','rgba(247,154,44,.7)','rgba(255,246,11,.7)','rgba(61,217,72,.7)','rgba(57,202,228,.7)','rgba(44,49,241,.7)','rgba(122,57,228,.7)'],
}
},
created() {
window.addEventListener('resize', this.handleResize);
},
destroyed() {
window.removeEventListener('resize', this.handleResize);
},
watch: {
StatisticalData:{
handler(n,o){
......@@ -44,6 +50,10 @@ export default {
},
methods: {
handleResize() {
location.reload()
},
getEchart(){
let datas = []
let titles = []
......@@ -61,7 +71,7 @@ export default {
data: x.DetailList.map(y=>{return y.MaoLiRate.toFixed(2)}) // 绑定实时数据数组
}
datas.push(obj)
if(indexs>4){
if(indexs>10){
let name=x.Name;
Newobj[name]=false;
}
......@@ -149,7 +159,7 @@ export default {
series:datas
}
myChart.setOption(option,true) // echarts设置初始化选项
myChart.setOption(option,true)
},
}
......
......@@ -126,22 +126,22 @@ export default {
this.CostAnalysisData.forEach(z=>{
x.data.push(z['RoomFee'])
})
}else if(indexs==3){
}else if(indexs==2){
x.name = '车费'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['CarFee'])
})
}else if(indexs==4){
}else if(indexs==3){
x.name = '餐费'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['MealFee'])
})
}else if(indexs==5){
}else if(indexs==4){
x.name = '门票'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['TicketFee'])
})
}else if(indexs==6){
}else if(indexs==5){
x.name = '签证'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['VisaFee'])
......@@ -156,24 +156,24 @@ export default {
}else if(indexs==1){
x.name = '房费/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['RoomFeeRate'])
x.data.push(z['RommFeeRate'])
})
}else if(indexs==3){
}else if(indexs==2){
x.name = '车费/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['CarFeeRate'])
})
}else if(indexs==4){
}else if(indexs==3){
x.name = '餐费/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['MealFeeRate'])
})
}else if(indexs==5){
}else if(indexs==4){
x.name = '门票/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['TicketFeeRate'])
})
}else if(indexs==6){
}else if(indexs==5){
x.name = '签证/收入'
this.CostAnalysisData.forEach(z=>{
x.data.push(z['VisaFeeRate'])
......
......@@ -241,7 +241,7 @@ export default {
series:datas
}
myChart.setOption(option,true) // echarts设置初始化选项
myChart.setOption(option,true)
},
getJapanPacketOutChart(){
let datas = []
......@@ -343,7 +343,7 @@ export default {
series:datas
}
myChart.setOption(option,true) // echarts设置初始化选项
myChart.setOption(option,true)
},
getJapanRoutineOutChart(){
......@@ -446,7 +446,7 @@ export default {
series:datas
}
myChart.setOption(option,true) // echarts设置初始化选项
myChart.setOption(option,true)
},
getJapanpRofitOutChart(){
let that = this
......
......@@ -81,62 +81,80 @@
<div v-if="FeatureData.FeatureType==FeatureTypeState.userDefined">
<span class="userDeSpan">上传自定义行程特色和行程详情</span>
<div class="userDefined">
<!-- <my-edit v-on:edit-value="FeatureData.FeatureContent = arguments[0]"
v-bind:editValue="FeatureData.FeatureContent" v-bind:toolbarShow="toolbar"
v-bind:referenceList="DefaultList" v-bind:placeholder="placeholder"></my-edit> -->
<div class="sliderContent clearfix" style="width:1000px;">
<el-upload class="upload-demo" :http-request="reUpload" :multiple="true"
accept="image/jpeg, image/gif, image/png, image/bmp" :show-file-list="false" action>
<el-button size="small" type="primary" @click="updateTFimg(1)">上传行程特色</el-button>
<div slot="tip" class="el-upload__tip" style="color:red;">横版1754*1240,竖版:1240X1754</div>
</el-upload>
<div class="TFSelfimgList" v-for="(item,index) in FeatureData.TripImageListNew" :key="item.subCode">
<img :key="index+10000" v-if="!item" src="../../../assets/img/bg_c3@3x.png">
<img :key="index+20000" v-else :src="item">
<div :key="index+30000" class="TFIMGzhe">
<div class="TFremove" @click="removeImg(1,index)">
<i class="iconfont icon-xingzhuang"></i>
</div>
<div class="TFremove" @click="showImg(item)">
<i class="iconfont icon-img_cz"></i>
</div>
<div class="TFremove" @click.stop="ExchangeImg(1,index,0)" v-if="index!=0">
<i class="iconfont icon-zuoyi"></i>
</div>
<div class="TFremove" @click.stop="ExchangeImg(1,index,1)"
v-if="index!=FeatureData.TripImageListNew.length-1">
<i class="iconfont icon-youyi"></i>
<el-row>
<el-col>
<div class="sliderContent clearfix" style="width:1000px;">
<el-upload class="upload-demo" :http-request="reUpload" :multiple="true"
accept="image/jpeg, image/gif, image/png, image/bmp" :show-file-list="false" action>
<el-button size="small" type="primary" @click="updateTFimg(1)">上传行程特色</el-button>
<div slot="tip" class="el-upload__tip" style="color:red;">横版1754*1240,竖版:1240X1754</div>
</el-upload>
<div class="TFSelfimgList" style="margin-top:5px;"
v-for="(item,index) in FeatureData.TripImageListNew" :key="item.subCode">
<img :key="`t_f_`+index+10000" v-if="!item" src="../../../assets/img/bg_c3@3x.png">
<img :key="`t_f_`+index+20000" v-else :src="item">
<div :key="`t_f_`+index+30000" class="TFIMGzhe">
<div class="TFremove" @click="removeImg(1,index)">
<i class="iconfont icon-xingzhuang"></i>
</div>
<div class="TFremove" @click="showImg(item)">
<i class="iconfont icon-img_cz"></i>
</div>
<div class="TFremove" @click.stop="ExchangeImg(1,index,0)" v-if="index!=0">
<i class="iconfont icon-zuoyi"></i>
</div>
<div class="TFremove" @click.stop="ExchangeImg(1,index,1)"
v-if="index!=FeatureData.TripImageListNew.length-1">
<i class="iconfont icon-youyi"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<br />
<div class="sliderContent clearfix" style="width:1000px;">
<el-upload class="upload-demo" :http-request="reUpload" :multiple="true"
accept="image/jpeg, image/gif, image/png, image/bmp" :show-file-list="false" action>
<el-button size="small" type="primary" @click="updateTFimg(2)">上传行程详情</el-button>
<div slot="tip" class="el-upload__tip" style="color:red;">横版1754*1240,竖版:1240X1754</div>
</el-upload>
<div class="TFSelfimgList" v-for="(item,index) in FeatureData.DetailsImageListNew" :key="item.subCode">
<img :key="index+1000" v-if="!item" src="../../../assets/img/bg_c3@3x.png">
<img :key="index+2000" v-else :src="item" style="width:220px;height:180px;">
<div :key="index+3000" class="TFIMGzhe">
<div class="TFremove" @click="removeImg(2,index)">
<i class="iconfont icon-xingzhuang"></i>
</div>
<div class="TFremove" @click="showImg(item)">
<i class="iconfont icon-img_cz"></i>
</div>
<div class="TFremove" @click.stop="ExchangeImg(2,index,0)" v-if="index!=0">
<i class="iconfont icon-zuoyi"></i>
</div>
<div class="TFremove" @click.stop="ExchangeImg(2,index,1)"
v-if="index!=FeatureData.DetailsImageListNew.length-1">
<i class="iconfont icon-youyi"></i>
</div>
</el-col>
</el-row>
<el-row>
<el-col>
<div class="sliderContent clearfix" style="width:1000px;">
<el-form label-width="80px">
<el-form-item label="行程详情">
<el-radio v-model="FeatureData.IsUploadDetails" :label="0">系统生成</el-radio>
<el-radio v-model="FeatureData.IsUploadDetails" :label="1">自定义上传</el-radio>
</el-form-item>
</el-form>
<template v-if="FeatureData.IsUploadDetails==1">
<el-upload class="upload-demo" :http-request="reUpload" :multiple="true"
accept="image/jpeg, image/gif, image/png, image/bmp" :show-file-list="false" action>
<el-button size="small" type="primary" @click="updateTFimg(2)">上传行程详情</el-button>
<div slot="tip" class="el-upload__tip" style="color:red;">
<font style="font-weight:bold;font-size:14px;">
如果上传了自定义行程图片,系统将使用上传的文件作为行程详情;如果不上传,系统将根据开团行程自动生成行程详情。</font>
<br /> 横版1754*1240,竖版:1240X1754
</div>
</el-upload>
<div class="TFSelfimgList" style="margin-top:5px;"
v-for="(item,index) in FeatureData.DetailsImageListNew" :key="item.subCode">
<img :key="`t_f_d_`+index+1000" v-if="!item" src="../../../assets/img/bg_c3@3x.png">
<img :key="`t_f_d_`+index+2000" v-else :src="item" style="width:220px;height:180px;">
<div :key="`t_f_d_`+index+3000" class="TFIMGzhe">
<div class="TFremove" @click="removeImg(2,index)">
<i class="iconfont icon-xingzhuang"></i>
</div>
<div class="TFremove" @click="showImg(item)">
<i class="iconfont icon-img_cz"></i>
</div>
<div class="TFremove" @click.stop="ExchangeImg(2,index,0)" v-if="index!=0">
<i class="iconfont icon-zuoyi"></i>
</div>
<div class="TFremove" @click.stop="ExchangeImg(2,index,1)"
v-if="index!=FeatureData.DetailsImageListNew.length-1">
<i class="iconfont icon-youyi"></i>
</div>
</div>
</div>
</template>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
<div class="TFright" v-if="FeatureData.FeatureType!=FeatureTypeState.userDefined">
......@@ -392,7 +410,7 @@
let srcArr = src.split('?')
src = srcArr[0]
let isExsit = false
this.images=[];
this.images = [];
this.images.forEach(x => {
if (x === src)
isExsit = true
......
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