Commit d6048ce2 authored by huangyuanyuan's avatar huangyuanyuan
parents f3c554be d7e3ff48
......@@ -232,7 +232,7 @@ export default {
this.msg.Date = this.$route.query.sDate;
this.msg.CheckOutDate = this.$route.query.eData;
}
this.apipost('hotel_post_GetAll',{hotelID:this.msg.Hotel},res=>{
this.apipost('hotel_post_GetAll',{ID:this.msg.Hotel},res=>{
if(res.data.resultCode==1){
this.HotelName = res.data.data.Name
}
......
......@@ -318,6 +318,7 @@
<th width="100">使用时间</th>
<th width="180">餐厅名称</th>
<th width="100">类别</th>
<th width="100">总人数</th>
<th width="">用餐人数</th>
<th width="80">免费人数</th>
<th width="">单价</th>
......@@ -337,6 +338,9 @@
<td v-if="childIndex==0" :rowspan="3">
{{subItem.UseDinnerTypeStr}}
</td>
<td v-if="childIndex==0" :rowspan="3">
{{subItem.UseAccount}}
</td>
<td>
{{peopleStrToWord(childItem.PeopleType)}}:{{childItem.PeopleNum}}
</td>
......
......@@ -304,14 +304,17 @@ export default {
this.$cookie.set("RB_Group_id", userData.RB_Group_id);
localStorage.menu=JSON.stringify(firstTire)
this.loginState = 0;
let previousPathInfo = localStorage.previousPathInfo ? JSON.parse(localStorage.previousPathInfo) : ''
if (previousPathInfo) {
let path = previousPathInfo.path.indexOf('login') === -1 ? previousPathInfo.path : 'index'
let query = previousPathInfo.query ? previousPathInfo.query : {}
this.$router.push({ path: "/"+ path, query: query });
}else {
this.$router.push({ path: "/index" });
}
// let previousPathInfo = localStorage.previousPathInfo ? JSON.parse(localStorage.previousPathInfo) : ''
// if (previousPathInfo) {
// let path = previousPathInfo.path.indexOf('login') === -1 ? previousPathInfo.path : 'index'
// let query = previousPathInfo.query ? previousPathInfo.query : {}
// this.$router.push({ path: "/"+ path, query: query });
// }else {
// this.$router.push({ path: "/index" });
// }
this.$router.push({ path: "/personalCenter" });
//登录成功后跳转页面
// this.$notify.success({
// title:'提示',
......
<style>
.SalesHotelOrder .SalesHotelOrderTable{
width: 100%;
min-width: 1500px;
font-size: 14px;
color: #333;
border-bottom: 1px solid #cccccc;
border-right: 1px solid #cccccc;
border-collapse: collapse;
}
.SalesHotelOrder .SalesHotelOrderTable th{
background: #e6e6e6;
height: 30px;
font-size: 12px;
text-align: center;
border-top: 1px solid #cccccc;
border-left: 1px solid #cccccc;
}
.SalesHotelOrder .SalesHotelOrderTable tr td{
height: 60px;
padding: 10px;
background-color: #fff;
text-align: center;
border-top: 1px solid #cccccc;
border-left: 1px solid #cccccc;
}
.SalesHotelOrder .SalesHotelOrderTable tbody tr:last-child{
border-bottom:2px solid #333;
}
.SalesHotelOrder .SH_beizhu{
float:left;
}
.SalesHotelOrder .SH_beizhuInner{
float:left;
width:85%;
}
.SalesHotelOrder .SH_OrderDan>div{
display:inline-block;
}
</style>
<template>
<div class="flexOne SalesHotelOrder">
<div class="query-box">
<ul>
<li>
<span><em>酒店订单号</em>
<el-input v-model='msg.ThirdOrderNo' :placeholder="$t('pub.pleaseImport')"></el-input>
</span>
</li>
<li>
<span>
<em>入住开始时间</em>
<el-date-picker class="w150" type="date" v-model="msg.StartTime"
:picker-options="pickerBeginDateBefore" value-format="yyyy-MM-dd" placeholder></el-date-picker>
</span>
</li>
<li>
<span>
<em>入住结束时间</em>
<el-date-picker class="w150" type="date" v-model="msg.EndTime"
:picker-options="pickerBeginDateAfter" value-format="yyyy-MM-dd" placeholder></el-date-picker>
</span>
</li>
<li>
<input type="button" class="hollowFixedBtn" @click="resetPageIndex();getList()" :value="$t('pub.searchBtn')" />
</li>
</ul>
</div>
<table class="SalesHotelOrderTable" border="0" cellspacing="0" cellpadding="0" v-loading="loading">
<tr>
<th>订单号</th>
<th>客户信息</th>
<th>房间数</th>
<th>总价格</th>
<th>总收入</th>
<th>抵扣金额</th>
<th>优惠金额</th>
<th>待收金额</th>
<th>订单状态</th>
<th>创建时间</th>
<th>入住时间</th>
<th>离店时间</th>
<th>取消费用</th>
<!-- <th>操作</th> -->
</tr>
<tbody v-for="(item,index) in dataList">
<tr>
<td style="border-bottom:2px solid #333" rowspan="2">{{item.ThirdOrderNo}}</td>
<td>
<div>{{item.CustomerName}}</div>
<div>{{item.CustomerPhone}}</div>
</td>
<td>{{item.Number}}</td>
<td>{{item.TotalPrice}}</td>
<td>{{item.Income}}</td>
<td>{{item.RedEnvelopeMoney}}</td>
<td>{{item.DiscountMoney}}</td>
<td>{{item.DueinMoney}}</td>
<td>{{item.OrderStatus}}</td>
<td>{{item.CreateDateStr}}</td>
<td>{{item.CheckInStr}}</td>
<td>{{item.CheckOutStr}}</td>
<td>{{item.CancelFee}}</td>
<!-- <td>详情</td> -->
</tr>
<tr>
<td colspan="6" style="text-align:left;width:600px">
<div class="clearfix">
<div class="SH_beizhu" style="">
备注:
</div>
<div class="SH_beizhuInner">
{{item.Remark}}
</div>
</div>
</td>
<td colspan="6" style="text-align:left;width:600px">
<div class="SH_OrderDan">
<div>收款单据:</div>
<div>
<span v-for="subItem in item.FinanceList">
{{item.frID}}
</span>
<span v-if="item.FinanceList==0">暂无数据</span>
</div>
</div>
<div class="SH_OrderDan">
<div>付款单据:</div>
<div>
<span v-for="subItem in item.RefundFinanceList">
{{item.frID}}
</span>
<span v-if="item.RefundFinanceList==0">暂无数据</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage" layout="total,prev, pager, next, jumper"
:page-size=msg.pageSize :total=total>
</el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
msg: {
pageIndex:1,
pageSize:10,
Source:-1,
ThirdOrderNo:'',
StartTime:'',
EndTime:'',
GetOrderType:0
},
total:0,
currentPage: 1,
loading:false,
pickerBeginDateBefore: {
disabledDate: time => {
if (this.msg.EndTime == null) {
return false;
} else {
let endTime = new Date(this.msg.EndTime)
return endTime.getTime() < time.getTime()
}
}
},
pickerBeginDateAfter: {
disabledDate: time => {
let startTime = new Date(this.msg.StartTime)
return startTime.getTime() >= time.getTime()
}
},
dataList: [],
};
},
methods: {
getList() {
//获取现有线路列表
this.loading = true;
this.apipost(
"sellorder_post_GetJapanHotelOrderList",
this.msg,
res => {
this.loading = false;
if (res.data.resultCode == 1) {
this.dataList = res.data.data.pageData;
this.total = res.data.data.count;
} else {
this.Error(res.data.message);
}
},
err => {}
);
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
resetPageIndex() {
this.msg.pageIndex = 1;
this.currentPage = 1
},
},
mounted() {
this.getList();
}
};
</script>
<style>
.SalesHotelOrder .SalesHotelOrderTable{
width: 100%;
min-width: 1500px;
font-size: 14px;
color: #333;
border-bottom: 1px solid #cccccc;
border-right: 1px solid #cccccc;
border-collapse: collapse;
}
.SalesHotelOrder .SalesHotelOrderTable th{
background: #e6e6e6;
height: 30px;
font-size: 12px;
text-align: center;
border-top: 1px solid #cccccc;
border-left: 1px solid #cccccc;
}
.SalesHotelOrder .SalesHotelOrderTable tr td{
height: 60px;
padding: 10px;
background-color: #fff;
text-align: center;
border-top: 1px solid #cccccc;
border-left: 1px solid #cccccc;
}
.SalesHotelOrder .SalesHotelOrderTable tbody tr:last-child{
border-bottom:2px solid #333;
}
.SalesHotelOrder .SH_beizhu{
float:left;
}
.SalesHotelOrder .SH_beizhuInner{
float:left;
width:85%;
}
.SalesHotelOrder .SH_OrderDan>div{
display:inline-block;
}
</style>
<template>
<div class="flexOne SalesHotelOrder">
<div class="query-box">
<ul>
<li>
<span><em>酒店订单号</em>
<el-input v-model='msg.ThirdOrderNo' :placeholder="$t('pub.pleaseImport')"></el-input>
</span>
</li>
<li>
<span>
<em>入住开始时间</em>
<el-date-picker class="w150" type="date" v-model="msg.StartTime"
:picker-options="pickerBeginDateBefore" value-format="yyyy-MM-dd" placeholder></el-date-picker>
</span>
</li>
<li>
<span>
<em>入住结束时间</em>
<el-date-picker class="w150" type="date" v-model="msg.EndTime"
:picker-options="pickerBeginDateAfter" value-format="yyyy-MM-dd" placeholder></el-date-picker>
</span>
</li>
<li>
<input type="button" class="hollowFixedBtn" @click="resetPageIndex();getList()" :value="$t('pub.searchBtn')" />
</li>
</ul>
</div>
<table class="SalesHotelOrderTable" border="0" cellspacing="0" cellpadding="0" v-loading="loading">
<tr>
<th>订单号</th>
<th>客户信息</th>
<th>房间数</th>
<th>总价格</th>
<th>总收入</th>
<th>抵扣金额</th>
<th>优惠金额</th>
<th>待收金额</th>
<th>订单状态</th>
<th>创建时间</th>
<th>入住时间</th>
<th>离店时间</th>
<th>取消费用</th>
<!-- <th>操作</th> -->
</tr>
<tbody v-for="(item,index) in dataList">
<tr>
<td style="border-bottom:2px solid #333" rowspan="2">{{item.ThirdOrderNo}}</td>
<td>
<div>{{item.CustomerName}}</div>
<div>{{item.CustomerPhone}}</div>
</td>
<td>{{item.Number}}</td>
<td>{{item.TotalPrice}}</td>
<td>{{item.Income}}</td>
<td>{{item.RedEnvelopeMoney}}</td>
<td>{{item.DiscountMoney}}</td>
<td>{{item.DueinMoney}}</td>
<td>{{item.OrderStatus}}</td>
<td>{{item.CreateDateStr}}</td>
<td>{{item.CheckInStr}}</td>
<td>{{item.CheckOutStr}}</td>
<td>{{item.CancelFee}}</td>
<!-- <td>详情</td> -->
</tr>
<tr>
<td colspan="6" style="text-align:left;width:600px">
<div class="clearfix">
<div class="SH_beizhu" style="">
备注:
</div>
<div class="SH_beizhuInner">
{{item.Remark}}
</div>
</div>
</td>
<td colspan="6" style="text-align:left;width:600px">
<div class="SH_OrderDan">
<div>收款单据:</div>
<div>
<span v-for="subItem in item.FinanceList">
{{item}}
</span>
<span v-if="item.FinanceList==0">暂无数据</span>
</div>
</div>
<div class="SH_OrderDan">
<div>付款单据:</div>
<div>
<span v-for="subItem in item.RefundFinanceList">
{{item}}
</span>
<span v-if="item.RefundFinanceList==0">暂无数据</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage" layout="total,prev, pager, next, jumper"
:page-size=msg.pageSize :total=total>
</el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
msg: {
pageIndex:1,
pageSize:10,
Source:-1,
ThirdOrderNo:'',
StartTime:'',
EndTime:'',
GetOrderType:1
},
total:0,
currentPage: 1,
loading:false,
pickerBeginDateBefore: {
disabledDate: time => {
if (this.msg.EndTime == null) {
return false;
} else {
let endTime = new Date(this.msg.EndTime)
return endTime.getTime() < time.getTime()
}
}
},
pickerBeginDateAfter: {
disabledDate: time => {
let startTime = new Date(this.msg.StartTime)
return startTime.getTime() >= time.getTime()
}
},
dataList: [],
};
},
methods: {
getList() {
//获取现有线路列表
this.loading = true;
this.apipost(
"sellorder_post_GetJapanHotelOrderList",
this.msg,
res => {
this.loading = false;
if (res.data.resultCode == 1) {
this.dataList = res.data.data.pageData;
this.total = res.data.data.count;
} else {
this.Error(res.data.message);
}
},
err => {}
);
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
resetPageIndex() {
this.msg.pageIndex = 1;
this.currentPage = 1
},
},
mounted() {
this.getList();
}
};
</script>
......@@ -169,7 +169,7 @@ input[type="number"] {
<td v-if="childIndex==0" :rowspan="subItem.TicketPriceList.length">
{{scenicTotalPrice(subItem, subItem.TicketPriceList)}}
</td>
<td v-if="childIndex==0" :rowspan="item.data.length*subItem.TicketPriceList.length">
<td v-if="childIndex==0 && subIndex ==0" :rowspan="item.data.length*subItem.TicketPriceList.length">
{{subItem.TradingTotalPrice}}
</td>
......@@ -299,7 +299,7 @@ input[type="number"] {
<td v-if="childIndex==0" :rowspan="subItem.DiningPriceList.length">
{{diningTotalPrice(subItem, subItem.DiningPriceList)}}
</td>
<td v-if="childIndex==0" :rowspan="item.data.length * subItem.DiningPriceList.length">{{subItem.TradingTotalPrice}}</td>
<td v-if="childIndex==0 && subIndex ==0" :rowspan="item.data.length * subItem.DiningPriceList.length">{{subItem.TradingTotalPrice}}</td>
<td v-if="childIndex==0" :rowspan="subItem.DiningPriceList.length">
{{subItem.Remarks}}
</td>
......@@ -402,7 +402,7 @@ input[type="number"] {
<td v-if="childIndex==0" :rowspan="subItem.OrderDetailsList.length">
{{hotelTotalPrice(subItem.OrderDetailsList)}}
</td>
<td v-if="childIndex==0" :rowspan="subItem.OrderDetailsList.length * item.data.length">{{subItem.TradingTotalPrice}}</td>
<td v-if="childIndex==0 && subIndex ==0" :rowspan="subItem.OrderDetailsList.length * item.data.length">{{subItem.TradingTotalPrice}}</td>
<td v-if="childIndex==0" :rowspan="subItem.OrderDetailsList.length">
{{subItem.Remarks}}
</td>
......@@ -963,7 +963,6 @@ export default {
}
this.DiningDataList = Diningdest
//票
console.log(res.data.data.ScenicList)
let ScenicList = []
for(let i = 0; i < res.data.data.ScenicList.length; i++) {
for(let o = 0; o < res.data.data.ScenicList[i].ScenicStatisticsList.length; o++) {
......@@ -1020,7 +1019,6 @@ export default {
}
}
}
console.log(HotelList)
this.HotelDataList = Hoteldest
} else {
this.$message.error(res.data.message);
......
......@@ -181,7 +181,8 @@ export default {
},
result: null,
orders: [],
pageLoading: false
pageLoading: false,
};
},
components: {
......
......@@ -4,6 +4,7 @@
<ul>
<li>
<input v-if="IsOperation !=1" type="button" class="fr normalBtn mb30" value="保存" @click="saveList(1)" />
<input style="display:none;" type="button" class="fr normalBtn mb30" value="保存" @click="saveList(1)" />
<input v-if="IsOperation !=1" type="button" class="fr normalBtn mb30" value="保存草稿" @click="saveList(0)" />
</li>
</ul>
......
......@@ -2,8 +2,8 @@
<div class="daliy" v-loading="loading" v-if="result" :style="{zoom:zoomW}">
<div class="head">
<div class="name">销售结果分析</div>
<div class="nav-item active">日常销售分析</div>
<div class="nav-item">年度数据统计</div>
<div class="nav-item" :class="{'active':tab==0}" @click="changeTabHandler(0)">日常销售分析</div>
<div class="nav-item" :class="{'active':tab==1}" @click="changeTabHandler(1)">年度数据统计</div>
<!-- <div class="travelData">
出团日期:
<span class="ipt">
......@@ -16,8 +16,9 @@
<div class="right-bottom-border-samll"></div>
<input v-model="endTime" readonly />
</span>
</div> -->
</div>-->
</div>
<div v-if="tab==0">
<div class="base-box">
<div class="base-item">
<div class="rightbox"></div>
......@@ -92,7 +93,10 @@
<div class="item" style="color:#5D78FF;">
<span class="blod">20%</span>
<br />亏损率
<div class="progress" style="clip: rect(0px, 100px, 20px, 0px);border-color:#5D78FF;"></div>
<div
class="progress"
style="clip: rect(0px, 100px, 20px, 0px);border-color:#5D78FF;"
></div>
</div>
</div>
</div>
......@@ -101,7 +105,12 @@
<div class="sq-block-left"></div>
<div class="t">订单类别销售占比</div>
<div class="c lirun">
<div class="more-items" :style="{'margin-right':index==result.OrderB2BTypeList.length?'0px':'20px'}" v-for="(item, index) in result.OrderB2BTypeList" :key="index">
<div
class="more-items"
:style="{'margin-right':index==result.OrderB2BTypeList.length?'0px':'20px'}"
v-for="(item, index) in result.OrderB2BTypeList"
:key="index"
>
<progressAny :percent="item.Ratio" :item="item.Name" :count="item.Num"></progressAny>
</div>
</div>
......@@ -115,8 +124,21 @@
<div class="sq-block-right"></div>
<div class="sq-block-left"></div>
<div class="t">产品线路销售占比</div>
<div class="more-itms" :style="{'margin-right':index==result.LineRatioList.length?'0px':'20px'}" v-for="(item, index) in result.LineRatioList" :key="index">
<progressAny v-if="item.Num>0" :percent="item.Ratio" :item="item.Name" :count="item.Num" :rank='2' color="#5D78FF"></progressAny>
<div v-for="(item, index) in result.LineRatioList" style="height:100%;" :key="index">
<div
class="more-itms"
style="min-width:110px;height:100%;"
:style="{'margin-right':index==result.LineRatioList.length?'0px':'20px'}"
v-if="item.Num>0"
>
<progressAny
:percent="item.Ratio"
:item="item.Name"
:count="item.Num"
:rank="2"
color="#5D78FF"
></progressAny>
</div>
</div>
</div>
<div class="r">
......@@ -129,6 +151,162 @@
</div>
</div>
</div>
<div v-else>
<div class="base-box" v-if="yResult">
<div class="base-item big">
<div class="rightbox"></div>
<div class="leftbox"></div>
<div class="top-after"></div>
<div class="lef-box">
<div class="t" style="margin-top: -10px;">
<span class="line"></span>
<span class="n">{{year}}年度业绩统计</span>
<span class="line last"></span>
</div>
<div class="table-s">
<table>
<thead>
<tr>
<th>月份</th>
<th>销售额</th>
<th>销售额环比</th>
<th>销售额同比</th>
<th>销售额占比</th>
<th>收客人数</th>
<th>人数环比</th>
<th>人数同比</th>
<th>待收金额</th>
<th>投诉</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in yResult.YearStatistics" :key="index">
<td class="month">{{item.Month}}</td>
<td>{{item.NowSaleMoney}}</td>
<td :class="{'up':item.HSaleProbability>0,'down':item.HSaleProbability<0}">
<i
:class="{'el-icon-caret-top':item.HSaleProbability>0,'el-icon-caret-bottom':item.HSaleProbability<0}"
></i>
{{item.HSaleProbability}}%
</td>
<td :class="{'up':item.TSaleProbability>0,'down':item.TSaleProbability<0}">
<i
:class="{'el-icon-caret-top':item.TSaleProbability>0,'el-icon-caret-bottom':item.TSaleProbability<0}"
></i>
{{item.TSaleProbability}}%
</td>
<td>{{item.SaleMoneyProbability}}%</td>
<td>{{item.NowSaleGuest}}</td>
<td :class="{'up':item.HGuestProbability>0,'down':item.HGuestProbability<0}">
<i
:class="{'el-icon-caret-top':item.HGuestProbability>0,'el-icon-caret-bottom':item.HGuestProbability<0}"
></i>
{{item.HGuestProbability}}%
</td>
<td :class="{'up':item.TGuestProbability>0,'down':item.TGuestProbability<0}">
<i
:class="{'el-icon-caret-top':item.TGuestProbability>0,'el-icon-caret-bottom':item.TGuestProbability<0}"
></i>
{{item.TGuestProbability}}%
</td>
<td class="down">{{item.NowSaleDueIn}}</td>
<td class="down">{{item.NowComplainNum}}</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="rig-box">
<div class="sq-block-right"></div>
<div class="sq-block-left"></div>
<div class="t">去年数据对比</div>
<div class="c">
<div class="item">
<div class="len">
<div class="ico"></div>
<div class="txt">
<span class="blod">{{yResult.YearComparison.NowSaleMoney}}</span>
<br />今年
</div>
<div class="ico yellow"></div>
<div class="txt yellow">
<span class="blod">{{yResult.YearComparison.BeforSaleMoney}}</span>
<br />去年
</div>
</div>
<div class="char">
<nddb
:newdata="yResult.YearComparison.NowSaleMoney"
:olddata="yResult.YearComparison.BeforSaleMoney"
title="销售额"
:colors="colorArray[0]"
></nddb>
</div>
</div>
<div class="item">
<div class="len">
<div class="ico"></div>
<div class="txt">
<span class="blod">{{yResult.YearComparison.NowGuestNum}}</span>
<br />今年
</div>
<div class="ico green"></div>
<div class="txt green">
<span class="blod">{{yResult.YearComparison.BeforGuestNum}}</span>
<br />去年
</div>
</div>
<div class="char">
<nddb
:newdata="yResult.YearComparison.NowGuestNum"
:olddata="yResult.YearComparison.BeforGuestNum"
title="收客数"
:colors="colorArray[1]"
></nddb>
</div>
</div>
<div class="item">
<div class="len">
<div class="ico"></div>
<div class="txt">
<span class="blod">{{yResult.YearComparison.NowComplainNum}}</span>
<br />今年
</div>
<div class="ico red"></div>
<div class="txt red">
<span class="blod">{{yResult.YearComparison.BeforComplainNum}}</span>
<br />去年
</div>
</div>
<div class="char">
<nddb :newdata="yResult.YearComparison.NowComplainNum" :olddata="yResult.YearComparison.BeforComplainNum" :colors="colorArray[2]" title="投诉"></nddb>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="base-box">
<div class="base-item zoushi">
<div class="rightbox"></div>
<div class="leftbox"></div>
<div class="top-after"></div>
<div class="big-title">业绩走势</div>
<div class="big-content">
<ndzs :data="yResult.YearTrend"></ndzs>
</div>
<div class="d">
<div class="block"></div>
<span class="red">交易额</span>
<div class="block red"></div>
<span class="red">未收款</span>
<div class="block yellow"></div>
<span class="yellow">收客人数</span>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import shoukequ from "./shoukequ";
......@@ -136,15 +314,25 @@ import pricQujian from "./priceQujian";
import yeji from "./yeji";
import pingtai from "./pingtai";
import progressAny from "./progress";
import teamRatio from './teamRatio'
import teamRatio from "./teamRatio";
import nddb from "./nianduduibi";
import ndzs from "./nianduzoushi";
export default {
data() {
return {
beginTime: "2019-07-01",
endTime: "2019-07-31",
zoomW:0,
loading:false,
result:null
zoomW: 0,
loading: false,
result: null,
tab: 1,
colorArray: [
["#EFB017", "#F7E61B"],
["#19B466", "#65DAC2"],
["#FD3C7C", "#FFABC7"]
],
year: 0,
yResult: null
};
},
components: {
......@@ -153,24 +341,39 @@ export default {
yeji,
pingtai,
progressAny,
teamRatio
teamRatio,
nddb,
ndzs
},
mounted() {
this.year = new Date().getFullYear();
this.zoomW = (document.documentElement.clientWidth / 1920).toFixed(2);
this.init()
this.init();
this.initYear();
},
methods:{
init(){
this.loading=true
let query={
StartTime:'2019-01-01',
EndTime:'2019-12-30',
PriceSection:'1000-2999,3000-4999,5000-7999,8000-9999,10000-*'
}
this.apipost("sellorder_post_GetSellDeepAnalysisForDaily",query,r=>{
this.result=r.data.data
this.loading=false
})
methods: {
init() {
this.loading = true;
let query = {
StartTime: "2019-01-01",
EndTime: "2019-12-30",
PriceSection: "1000-2999,3000-4999,5000-7999,8000-9999,10000-*"
};
this.apipost("sellorder_post_GetSellDeepAnalysisForDaily", query, r => {
this.result = r.data.data;
this.loading = false;
});
},
initYear() {
let query = {
Year: this.year
};
this.apipost("sellorder_post_GetSellDeepAnalysisForYear", query, r => {
this.yResult = r.data.data;
});
},
changeTabHandler(index) {
this.tab = index;
}
}
};
......@@ -185,7 +388,7 @@ export default {
overflow-y: auto;
padding-bottom: 20px;
padding-right: 10px;
overflow-x:hidden
overflow-x: hidden;
}
.daliy .head {
height: 64px;
......@@ -493,10 +696,12 @@ export default {
.daliy .bottom-order-box {
height: 246px;
}
.daliy .base-box .base-item.big .lef-box .t,
.daliy .middle-order-box .t {
display: flex;
align-items: center;
}
.daliy .base-box .base-item.big .lef-box .t .line,
.daliy .middle-order-box .t .line {
display: block;
background: url("../../assets/img/persion/split-line.png") repeat;
......@@ -506,6 +711,7 @@ export default {
flex: 1;
position: relative;
}
.daliy .base-box .base-item.big .lef-box .t .line::after,
.daliy .middle-order-box .t .line::after {
display: block;
content: " ";
......@@ -513,6 +719,7 @@ export default {
width: 100%;
background: #075089;
}
.daliy .base-box .base-item.big .lef-box .t .line::before,
.daliy .middle-order-box .t .line::before {
width: 3px;
height: 3px;
......@@ -524,10 +731,12 @@ export default {
top: 3px;
border-radius: 50%;
}
.daliy .base-box .base-item .lef-box .t .line.last::before,
.daliy .middle-order-box .t .line.last::before {
left: unset;
right: -6px;
}
.daliy .base-box .base-item.big .lef-box .t .n,
.daliy .middle-order-box .t .n {
display: block;
font-size: 20px;
......@@ -536,6 +745,9 @@ export default {
color: #fff;
font-family: pingfangR;
}
.daliy .base-box .base-item.big .lef-box .t .n {
width: 168px;
}
.daliy .middle-order-box .content-box {
margin-top: 15px;
display: flex;
......@@ -570,7 +782,6 @@ export default {
}
.daliy .middle-order-box .content-box .item-box .lirun {
display: flex;
}
.daliy .middle-order-box .content-box .item-box .lirun .item {
width: 100px;
......@@ -606,7 +817,7 @@ export default {
}
.daliy .middle-order-box .content-box .item-box .lirun .more-itms {
height: 100%;
flex:1;
flex: 1;
margin-right: 20px;
}
.daliy .bottom-order-box {
......@@ -624,7 +835,7 @@ export default {
height: 215px;
padding: 0 18px;
background: rgba(3, 85, 164, 0.2);
flex-direction: row
flex-direction: row;
}
.daliy .bottom-order-box .r {
width: 346px;
......@@ -652,11 +863,11 @@ export default {
height: 40px;
line-height: 40px;
font-size: 14px;
color:#FFF;
color: #fff;
font-family: pingfangR;
width: 100%;
}
.daliy .bottom-order-box .r .c{
.daliy .bottom-order-box .r .c {
flex: 1;
width: 100%;
height: calc(100% - 50px);
......@@ -666,4 +877,243 @@ export default {
height: 100%;
margin-right: 20px;
}
.daliy .base-box .base-item.big {
height: 548px;
display: flex;
}
.daliy .base-box .base-item.big .rig-box {
width: 260px;
margin-left: 20px;
height: 490px;
background: rgba(3, 85, 164, 0.2);
position: relative;
}
.daliy .base-box .base-item.big .lef-box {
flex: 1;
height: 100%;
}
.daliy .base-box .base-item.big .lef-box .table-s table {
width: 100%;
border-collapse: collapse;
border-spacing: 0;
}
.daliy .base-box .base-item.big .lef-box .table-s table thead {
background: rgba(39, 88, 171, 0);
border: 1px solid rgba(15, 92, 166, 1);
border-radius: 4px 4px 0px 0px;
box-shadow: 0 0 13px rgba(15, 92, 166, 0.8) inset;
}
.daliy .base-box .base-item.big .lef-box .table-s table thead th {
height: 30px;
text-align: left;
padding-left: 10px;
font-size: 14px;
font-family: pingfangR;
color: #fff;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
tbody
tr:nth-child(odd) {
background: rgba(26, 75, 157, 0.26);
border: 1px solid rgba(75, 188, 255, 0);
}
.daliy
.base-box
.base-item.big
.lef-box
.table-s
table
tbody
tr:nth-child(even) {
background: rgba(26, 75, 157, 0.13);
border: 1px solid rgba(75, 188, 255, 0);
}
.daliy .base-box .base-item.big .lef-box .table-s table tbody td {
font-size: 12px;
color: #a2dbff;
text-align: left;
padding-left: 10px;
height: 36px;
line-height: 36px;
}
.daliy .base-box .base-item.big .lef-box .table-s table tbody td.month {
color: #fff;
}
.daliy .base-box .base-item.big .lef-box .table-s table tbody td.up {
color: #00e000;
}
.daliy .base-box .base-item.big .lef-box .table-s table tbody td.down {
color: #ff4c52;
}
.daliy .base-box .base-item.big .lef-box .table-s table tbody tr:hover {
border: 1px solid rgba(75, 188, 255, 1);
box-shadow: 0 0 13px rgba(75, 188, 255, 0.8);
background: none;
}
.daliy .base-box .base-item.big .rig-box .t {
margin-top: 14px;
text-align: center;
font-size: 14px;
color: #fff;
font-family: pingfangR;
}
.daliy .base-box .base-item.big .rig-box .c {
}
.daliy .base-box .base-item.big .rig-box .c .item {
margin-top: 15px;
padding-left: 20px;
display: flex;
}
.daliy .base-box .base-item.big .rig-box .c .item .char {
width: 120px;
height: 120px;
margin-right: 15px;
background: rgba(1, 156, 255, 0.1);
border-radius: 50%;
}
.daliy .base-box .base-item.big .rig-box .c .item .len {
flex: 1;
padding-top: 10px;
}
.daliy .base-box .base-item.big .rig-box .c .item .len .ico {
width: 20px;
height: 5px;
margin-bottom: 5px;
background: linear-gradient(
135deg,
rgba(0, 103, 204, 0.88),
rgba(0, 191, 249, 0.88)
);
}
.daliy .base-box .base-item.big .rig-box .c .item .len .ico.yellow {
background: linear-gradient(
135deg,
rgba(239, 176, 23, 0.88),
rgba(247, 230, 27, 0.88)
);
}
.daliy .base-box .base-item.big .rig-box .c .item .len .ico.green {
background: linear-gradient(
135deg,
rgba(101, 218, 194, 1),
rgba(25, 180, 102, 1)
);
}
.daliy .base-box .base-item.big .rig-box .c .item .len .ico.red {
background: linear-gradient(
135deg,
rgba(255, 171, 199, 0.88),
rgba(253, 60, 124, 0.88)
);
}
.daliy .base-box .base-item.big .rig-box .c .item .len .txt {
font-size: 12px;
color: #0067cc;
margin-bottom: 10px;
}
.daliy .base-box .base-item.big .rig-box .c .item .len .txt .blod {
font-family: pingfangR;
}
.daliy .base-box .base-item.big .rig-box .c .item .len .txt.yellow {
color: #efb017;
}
.daliy .base-box .base-item.big .rig-box .c .item .len .txt.green {
color: #19b466;
}
.daliy .base-box .base-item.big .rig-box .c .item .len .txt.red {
color: #fd3c7c;
}
.daliy .base-box .base-item.zoushi {
height: 357px;
display: flex;
background: rgba(39, 88, 171, 0.1);
}
.daliy .base-box .base-item.zoushi .big-title {
font-size: 20px;
color: #fff;
font-family: pingfangR;
margin-top: -10px;
}
.daliy .base-box .base-item.zoushi .big-content {
position: absolute;
top: 50px;
left: 0;
right: 0;
bottom: 0;
}
.daliy .base-box .base-item.zoushi .d {
height: 33px;
background: rgba(71, 165, 255, 0);
border-radius: 17px;
line-height: 28px;
padding: 0 20px;
font-size: 12px;
color: #4487f0;
display: inline-block;
box-sizing: border-box;
border: 1px solid #0251889e;
box-shadow: 0 0 10px #025188 inset;
position: absolute;
top: 9px;
right: 30px;
display: flex;
align-items: center;
}
.daliy .base-box .base-item.zoushi .d span {
margin-right: 40px;
}
.daliy .base-box .base-item.zoushi .d span:last-child {
margin-right: 0;
}
.daliy .base-box .base-item.zoushi .d .yellow {
color: #ffb822;
}
.daliy .base-box .base-item.zoushi .d .red {
color: #fd3c7c;
}
.daliy .base-box .base-item.zoushi .d.right {
position: absolute;
top: -4px;
right: 25px;
}
.daliy .base-box .base-item.zoushi .d .blod {
font-size: 16px;
color: #46c3f1;
font-family: pingfangR;
margin-left: 5px;
}
.daliy .base-box .base-item.zoushi .d i {
font-size: 14px;
color: #3aa0eb;
}
.daliy .base-box .base-item.zoushi .d .block {
width: 16px;
height: 9px;
margin-right: 10px;
background: linear-gradient(
0deg,
rgba(68, 135, 240, 0.88),
rgba(176, 208, 248, 0.88)
);
}
.daliy .base-box .base-item.zoushi .d .block.red {
background: linear-gradient(
0deg,
rgba(255, 171, 199, 0.88),
rgba(253, 60, 124, 0.88)
);
}
.daliy .base-box .base-item.zoushi .d .block.yellow {
background: #ffb822;
width: 16px;
height: 4px;
}
</style>
<template>
<div class="inerank-container">
<div :style="{height:'100%',width:'100%'}" ref="myLineRank"></div>
</div>
</template>
<script>
export default {
props: {
newdata: {
type: Number,
default: 0
},
olddata: {
type: Number,
default: 0
},
colors:{
type:Array,
default:[]
},
title:{
type:String,
default:""
}
},
data() {
return {
placeHolderStyle: {
normal: {
color: "rgba(0,0,0,0)",
label: { show: false },
labelLine: { show: false }
},
emphasis: {
color: "rgba(0,0,0,0)"
}
}
};
},
mounted() {
this.init();
},
methods: {
init() {
let myChart = this.$echarts.init(this.$refs.myLineRank);
let dataAlias = ["今年", "去年"];
let data2 = [{
name:"今年",
value:this.newdata
}, {
name:"去年",
value:this.olddata,
itemStyle:this.placeHolderStyle
}];
let data3 = [{
name:"去年",
value:this.olddata
},{
name:"今年",
value:this.newdata,
itemStyle:this.placeHolderStyle
}];
let option = {
tooltip: {
show:false
},
graphic: [
{
type: "text",
left:'center',
top: "center",
style: {
text: this.title,
textAlign: "center",
fill: this.colors[0], //文字的颜色
fontSize: 16,
width: 120,
fontFamily: "pingfangR"
}
}
],
calculable: true,
series: [
{
// center: ["25%", "45%"],
name: "订单来源",
type: "pie",
radius: ["80%", "90%"],
hoverAnimation: false,
legendHoverLink:false,
tooltip:false,
startAngle:90,
itemStyle: {
emphasis: {
barBorderRadius: 30
},
normal: {
label: {
show: false
},
labelLine: {
show: false
},
color: new this.$echarts.graphic.LinearGradient(1, 0, 0, 0, [
{ offset: 0, color: "#00BFF9" },
{ offset: 0.35, color: "#0067CC" },
{ offset: 1, color: "#0067CC" }
])
}
},
data: data2
},
{
// center: ["25%", "45%"],
name: "订单来源",
type: "pie",
radius: ["60%", "70%"],
hoverAnimation: false,
legendHoverLink:false,
tooltip:false,
startAngle:90,
itemStyle: {
emphasis: {
barBorderRadius: 30
},
normal: {
label: {
show: false
},
labelLine: {
show: false
},
color: new this.$echarts.graphic.LinearGradient(1, 0, 0, 0, [
{ offset: 0, color: this.colors[1] },
{ offset: 0.35, color: this.colors[0] },
{ offset: 1, color: this.colors[0] }
])
}
},
data: data3
}
]
};
myChart.setOption(option);
}
}
};
</script>
<style>
.inerank-container {
height: 100%;
width: 100%;
}
</style>
<template>
<div class="inerank-container">
<div :style="{height:'100%',width:'100%'}" ref="myLineRank"></div>
</div>
</template>
<script>
export default {
props: {
data: {
type: Array,
default: []
}
},
data() {
return {};
},
mounted() {
this.init();
},
methods: {
init() {
let myChart = this.$echarts.init(this.$refs.myLineRank);
var dataAxis = [];
var data2 = [];
var data4 = [];
var data3 = [];
this.data.forEach(x => {
dataAxis.push(x.Month + "月");
data2.push(x.NowSaleMoney);
data4.push(x.NowSaleDueIn);
data3.push(x.NowSaleGuest);
});
let option = {
title: {
show: false
},
xAxis: {
data: dataAxis,
axisLabel: {
textStyle: {
color: "#DADADA",
fontSize: 12
},
margin: 10,
interval: 0,
show: true
},
type: "category",
axisTick: {
show: true
},
axisLine: {
show: true,
lineStyle: {
color: ["#12397C"]
}
}
},
yAxis: [
{
axisLine: {
show: true,
lineStyle: {
color: ["#12397C"]
}
},
axisTick: {
show: false
},
axisLabel: {
textStyle: {
color: "#DADADA",
fontSize: 12
},
show: true
},
splitLine: {
show: true,
lineStyle: {
color: ["#12397c4d"]
}
},
min:0,
name:"金额(元)",
type:"value"
},
{
axisLine: {
show: true,
lineStyle: {
color: ["#12397C"]
}
},
axisTick: {
show: false
},
axisLabel: {
textStyle: {
color: "#DADADA",
fontSize: 12
},
show: true
},
splitLine: {
show: true,
lineStyle: {
color: ["#12397c4d"]
}
},
min:0,
name:"收客数(人)",
type:"value"
}
],
grid: {
left: "68",
right: "60",
top: "50",
bottom: "30"
},
tooltip: {
trigger: "item",
axisPointer: {
type: "none",
snap: true,
label: {
backgroundColor: "#6a7985"
}
}
},
series: [
{
type: "bar",
itemStyle: {
normal: {
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: "#4487F0" },
{ offset: 0.3, color: "#4487F0" },
{ offset: 1, color: "#B0D0F8" }
])
}
},
barWidth: 24,
data: data2,
yAxisIndex:0,
animationType: "scale",
animationEasing: "elasticOut",
animationDelay: function(idx) {
return Math.random() * 200;
}
},
{
type: "bar",
itemStyle: {
normal: {
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: "#FD3C7C" },
{ offset: 0.5, color: "#FD3C7C" },
{ offset: 1, color: "#FFABC7" }
])
}
},
barWidth: 24,
data: data4,
yAxisIndex:0,
animationType: "scale",
animationEasing: "elasticOut",
animationDelay: function(idx) {
return Math.random() * 200;
}
},
{
type: "line",
smooth: true,
symbol:'circle',
symbolSize : 5,
yAxisIndex:1,
// left: "0",
itemStyle: {
normal: {
lineStyle: {
color: "#FFB822"
},
color: "#FFB822"
}
},
data: data3
}
]
};
myChart.setOption(option);
}
}
};
</script>
<style>
.inerank-container {
height: 100%;
width: 100%;
}
</style>
......@@ -31,7 +31,6 @@ export default {
data2.push(t)
}
})
console.log(dataAlias)
let option = {
tooltip: {
trigger: "item",
......
......@@ -157,7 +157,7 @@ export default {
.inerank-container .h-title {
position: absolute;
left: 0%;
bottom: 14px;
bottom: 10px;
font-size: 12px;
color: #46c3f1;
text-align: center;
......
......@@ -1710,6 +1710,14 @@ export default {
title: '团队收支'
},
}, {
path: '/OpHotelOrder', //操作 散卖酒店订单
name: 'OpHotelOrder',
component: resolve => require(['@/components/TravelManager/TravelList/OpHotelOrder'], resolve),
meta: {
title: '散卖酒店订单'
},
},{
path: '/AmoebaDetail', //阿米巴结算详情
name: 'AmoebaDetail',
component: resolve => require(['@/components/TravelManager/TravelList/AmoebaDetail'], resolve),
......@@ -2219,7 +2227,14 @@ export default {
title: '散卖机票订单'
},
},
{ //销售 散卖酒店订单
path: '/salesHotelOrder',
name: 'salesHotelOrder',
component: resolve => require(['@/components/SalesModule/salesHotelOrder'], resolve),
meta: {
title: '散卖酒店订单'
},
},
{ // 销售 报名统计
path: '/enrollTotal',
name: 'enrollTotal',
......
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