Commit 1004dfdb authored by 黄奎's avatar 黄奎
parents 2522e45b c610f691
*{
/* font-family: FZCuSong-B09S; */
}
.pkey {
color: grey !important;
}
.pvalue {
color: #000;
font-weight: 700;
}
.detail-box .hangban-info {
width: 100%;
background: unset;
paddong: 0px;
}
.detail-box .hangban-info {
background-color: #f7f7f7;
padding: 20px 0px 15px 0px;
width: 960px;
margin: 0 auto;
box-sizing: border-box;
}
.hangban-info {
background: #FFF !important;
}
.trip-v3-base {
margin-top: 20px !important;
width: 100% !important;
border-collapse: collapse !important;
}
.travelControlTrip * {
page-break-inside: avoid;
}
.baseTable .essential-item.jianju {
border-right: 5px solid #FFF;
border-bottom: 5px solid #FFF;
}
.baseTable .essential-item {
background: #eee;
}
.travelControlTrip .essential-item {
width: 320px;
height: 100px;
box-sizing: border-box;
padding-left: 20px;
}
.baseTable .essential-item.jianju_b {
border-bottom: 5px solid #FFF;
}
.travelControlTrip .essential-item p.pvalue {
font-size: 18px;
color: #000;
margin-top: 5px;
}
.trip-v3-title.small-margin {
margin-bottom: 20px;
}
.trip-v3-title {
font-size: 36px !important;
font-weight: bolder !important;
margin-top: 40px !important;
text-align: center;
}
.LeaveGroupDownload-form .flight_header th {
font-size: 20px !important;
font-weight: 700 !important;
color: #000000 !important;
padding-bottom: 8px;
border-bottom: 1px solid #929292;
text-align: left;
}
.LeaveGroupDownload-form .flight_header th span {
font-size: 12px;
font-weight: 400;
vertical-align: 3px;
margin-left: 1px;
color: #CCC;
}
.LeaveGroupDownload-form .flight_list tbody tr:first-child td {
padding-top: 12px !important;
}
.LeaveGroupDownload-form .flight_list td {
font-size: 15px;
height: 34px;
vertical-align: middle;
background: #ffffff;
}
......@@ -1278,6 +1278,11 @@
<div style="float:left">
<el-radio v-model="AuditOrRefundMsg.Status" label="5">通过</el-radio>
<el-radio v-model="AuditOrRefundMsg.Status" label="3">驳回</el-radio>
<span v-if="is_financeShow && GetDetail.Type==2 && item.AuditDescription.indexOf('会计')!=-1">
&nbsp;&nbsp;&nbsp;|&nbsp;<span style="font-size: 12px;">金蝶发票:</span>&nbsp;&nbsp;
<el-radio v-model="AuditOrRefundMsg.KingdeeInvoice" label="1">有票</el-radio>
<el-radio v-model="AuditOrRefundMsg.KingdeeInvoice" label="2">无票</el-radio>
</span>
</div>
<div style="float:right" v-if="isShowChoice&&AuditOrRefundMsg.Status=='5'">
<el-radio v-model="choiceMsg.Status" label="1">常规</el-radio>
......@@ -1581,6 +1586,11 @@
<div style="float:left">
<el-radio v-model="AuditOrRefundMsg.Status" label="5">通过</el-radio>
<el-radio v-model="AuditOrRefundMsg.Status" label="3">驳回</el-radio>
<span v-if="is_financeShow && GetDetail.Type==2 && item.AuditDescription.indexOf('会计')!=-1">
&nbsp;&nbsp;&nbsp;|&nbsp;<span style="font-size: 12px;">金蝶发票:</span>&nbsp;&nbsp;
<el-radio v-model="AuditOrRefundMsg.KingdeeInvoice" label="1">有票</el-radio>
<el-radio v-model="AuditOrRefundMsg.KingdeeInvoice" label="2">无票</el-radio>
</span>
</div>
<div style="float:right" v-if="isShowChoice&&AuditOrRefundMsg.Status=='5'">
<el-radio v-model="choiceMsg.Status" label="1">常规</el-radio>
......@@ -2057,6 +2067,7 @@
CourseId: null,
CourseName: '',//收款类型 银行卡/支付宝/微信
PayReceiptNo: '',
KingdeeInvoice: '0'
},
AuditListData: {
AuditList: []
......@@ -2164,6 +2175,7 @@
LeadState: false,
huijiShow: false,
F_PayMoney_CapitalPool: false,
is_financeShow: false
}
},
components: {
......@@ -3845,6 +3857,9 @@
if (ActionMenuCode.indexOf('F_Update_KJCostType') != -1) {
this.huijiShow = true;
}
if (ActionMenuCode.indexOf('F_AccountantFinanceMerge') != -1) {
this.is_financeShow = true;
}
this.ID = this.$route.query.id;
// 判断是否销售
if (ActionMenuCode.indexOf('S_CheckBranchOrder') != -1||ActionMenuCode.indexOf('S_CheckAllOrder') != -1) {
......
<template>
<div id="pdfNode" class="LeaveGroupDownload-form">
<div id="pdfDom" style="padding:0 20px;">
<div id="pdf_1" v-if="orderMsg">
<div class="logo-div">
<img
:src="
vshowJ === true
? domainManager().ViittoFileUrl +
'/Upload/PictureMaterial/Web/headerImg.jpg'
: domainManager().ViittoFileUrl +
'/Upload/PictureMaterial/Web/headerImg2.jpg'
"
/>
</div>
<div class="trip-adviser">
<h1 class="trip-nav-title">
<span>{{ vshowL ? "出团通知书:" : "" }}</span>
{{ orderMsg.lineteamName }}{{ orderMsg.dayNum }}日游
</h1>
<p>
尊敬的旅客:<br />感谢您选择我们的旅游服务。为了确保各位旅客有更好的旅游体验,请详细阅读《出团通知书》的各项内容。如有任何问题,请拨打通知书内的本团领队电话或机场服务人员电话。
在此,预祝您旅途愉快!希望您在本次旅程中留下此生中最美好的回忆!
</p>
</div>
<table class="baseTable trip-v3-base">
<tbody>
<tr>
<td class="essential-item jianju">
<p class="pkey">线路</p>
<p class="pvalue">{{ orderMsg.lineName }}</p>
</td>
<td class="essential-item jianju">
<p class="pkey">出发日期</p>
<p class="pvalue">{{ orderMsg.startDate }}</p>
</td>
<td class="essential-item jianju">
<p class="pkey">返回日期</p>
<p class="pvalue">{{ orderMsg.endDate }}</p>
</td>
<td class="essential-item jianju_b">
<p class="pkey">行程天数</p>
<p class="pvalue">{{ orderMsg.dayNum }}</p>
</td>
<td rowspan="2">
<div style="width: 160px; height:160px;margin-left:20px;">
<img
style="width: 160px; height:160px;"
:src="'data:image/png;base64,' + WeiXinShareImgSrc"
alt="获取微信小程序分享链接"
/>
</div>
</td>
</tr>
<tr>
<td class="essential-item jianju" colspan="2">
<p class="pkey">系列</p>
<p class="pvalue">{{ orderMsg.lineteamName }}</p>
</td>
<td class="essential-item jianju_b" colspan="2">
<p class="pkey">团队编号</p>
<p class="pvalue">{{ orderMsg.tcnum }}</p>
</td>
</tr>
</tbody>
</table>
<div class="trip-v3-title small-margin">
<h2>集合地点&amp;联系人</h2>
</div>
<table class="baseTable trip-v3-base">
<tbody>
<tr>
<td class="essential-item jianju">
<p class="pkey">本团领队</p>
<p class="pvalue">
{{
orderTripdiff != null
? orderTripdiff.leaderInfo
: orderMsg.leaderName +
(orderMsg.leaderMobile != null
? "/" + orderMsg.leaderMobile
: "")
}}
</p>
</td>
<td class="essential-item jianju">
<p class="pkey">集合时间</p>
<p class="pvalue">
{{
orderTripdiff != null
? orderTripdiff.gatheringTime
: orderMsg.gatheringTime
}}
</p>
</td>
<td class="essential-item jianju">
<p class="pkey">机场服务</p>
<p class="pvalue">
<template
v-if="
orderMsg &&
orderMsg.airportServicePerson &&
orderMsg.airportServicePerson != ''
"
>
{{ orderMsg.airportServicePerson }}
</template>
</p>
</td>
<td class="essential-item jianju_b">
<p class="pkey">集合标识</p>
<p class="pvalue">
{{
orderTripdiff != null
? orderTripdiff.gatherIdent
: orderMsg.bName
}}
</p>
</td>
</tr>
<tr>
<td class="essential-item jianju" colspan="2">
<p class="pkey">紧急联系人</p>
<p class="pvalue">
<span v-if="vshowLLR">
<template v-if="orderMsg.emergencyContact != ''">
{{ orderMsg.emergencyContact }}
</template>
</span>
</p>
</td>
<td class="essential-item jianju_b" colspan="2">
<p class="pkey">集合地点</p>
<p class="pvalue">
{{
orderTripdiff != null
? orderTripdiff.gatheringAddress
: orderMsg.gatheringAddress
}}
</p>
</td>
</tr>
</tbody>
</table>
<template v-if='vshowB'>
<div class="trip-v3-title small-margin">
参考航班
</div>
<div class="hangban-info">
<table
border="0"
align="center"
cellspacing="0"
cellpadding="0"
class="flight_list"
:class="{'guoneiLine':lineId==90}"
>
<thead class="flight_header">
<tr>
<th width="140">出发时间<span>(当地)</span></th>
<th width="160">抵达时间<span>(当地)</span></th>
<th width="160">
<template v-if="lineId==90">起飞机场/出发城市</template>
<template v-else>起飞机场</template>
</th>
<th width="18" class="gap">&nbsp;</th>
<th width="160">
<template v-if="lineId==90">抵达机场/到达城市</template>
<template v-else>抵达机场</template>
</th>
<th width="18" class="gap">&nbsp;</th>
<th width="140">航空公司</th>
<th width="90">航班编号</th>
<th width="18" class="gap">&nbsp;</th>
<th width="100">经停城市</th>
</tr>
</thead>
<tbody style="padding-top:12px;"
v-if="orderTripdiff&&orderTripdiff.travelOrderFlightList&& orderTripdiff.travelOrderFlightList.length>0">
<tr v-for="(flight,ftIndex) in orderTripdiff.travelOrderFlightList" :key="ftIndex">
<td width="140"><span class="nth-day">{{flight.startDate.substring(5)}}</span>&nbsp;<span
class="num">{{flight.departureTime}}</span></td>
<td width="160"><span class="nth-day">{{flight.arriveDate.substring(5)}}</span>&nbsp;<span
class="num">{{flight.arrivalTime}}</span></td>
<td width="160">{{flight.departureAirPortName}}<span class="citycode"></span></td>
<td width="18" class="gap">&nbsp;</td>
<td width="160">{{flight.arrivalAirPortName}}<span class="citycode"></span></td>
<td width="18" class="gap">&nbsp;</td>
<td width="140">{{flight.alName}}</td>
<td width="110">{{flight.flightNumber}}
<span style="color:green;">{{(flight.flightState==1)?"OK":"暂定"}}</span></td>
<td width="18" class="gap">&nbsp;</td>
<td width="100">{{flight.stopoverAirPortName}}</td>
</tr>
</tbody>
<tbody>
<tr>
<td
colspan="10"
align="center"
style="color:#333;font-size:14px;"
>
1.本航班表僅提供參考,正確航班請點選您的出發日期。 2.
不同航班,餐食及行程安排皆有所不同,正確行程,請點選您的出發日期。
</td>
</tr>
</tbody>
</table>
</div>
</template>
<div style="width: 100%;height:20px;"></div>
</div>
</div>
</div>
</template>
<script>
export default {
components: {},
props: [
"vshowJ",
"vshowL",
"orderMsg",
"WeiXinShareImgSrc",
"orderTripdiff",
"vshowLLR",
"vshowB",
"lineId"
],
data() {
return {};
},
methods: {},
computed: {},
watch: {
// FeatureData: {
// handler(val, oldVal) {
// },
// deep: true,
// immediate: true
// },
},
mounted() {}
};
</script>
<style>
@import url("../../assets/css/tripIndexNew.css");
</style>
<template>
<div class="travelDays-form">
<div class="travelDays-box absolute z-index1">
<div class="travelDays-Title">===============</div>
<Header :TripColor="TripColor" :FeatureItem="item"></Header>
<div class="travelDays-Title">
<div>
<div><vEditDiv :canEdit='canEdit' v-model="FeatureItem.dataObj.MainDesc"></vEditDiv></p>
<div>DAY</div>
</div>
</div>
</div>
<el-dialog custom-class="resourceImgAdd" :title="$t('sm.chooseImg')" center :visible.sync="isShowScenicImg">
<!--imgType:1-酒店,2-餐厅,3-景点,4-票务,5-车辆,6-领队,7-购物店,isCheckmore:是否多选图片-->
<DMCchooseImg @closeImg="closeDMCchooseImg" ref="DMCchooseImg1" @headCallBack="getDMCimg" v-bind:isCheckmore="1"
v-bind:imgType="choseType" v-bind:queryItem="queryItem" v-bind:IsShowAdd="true" v-bind:IsShowVideo="true">
</DMCchooseImg>
</el-dialog>
</div>
</template>
<script>
import MasterMapList from "./components/MasterMapList";
import subheading from "./components/subheading";
import vEditDiv from "../TravelTemp/VEditDiv";
import FeatureControls from "./components/featureControls";
import DMCchooseImg from "../../../commonPage/DMCchooseImg.vue";
import Header from "../newTravelmanager/TravelGroupControl/UpgradedVersion/components/header";
export default {
components: {
MasterMapList,
subheading,
vEditDiv,
FeatureControls,
DMCchooseImg
Header
},
props: [
'TripColor',
......
<style>
.confirmOrder{
width:950px;
.confirmOrder {
width: 950px;
}
.travelControlTrip .hangban-info tr td,
.travelControlTrip .hangban-info tr th {
padding-left: 0 !important;
}
.travelControlTrip .WeiXinShare {
width: 118px;
position: relative;
top: 55px;
}
.travelControlTrip .el-dropdown {
height: 30px;
line-height: 30px;
background-color: #E95252;
color: #fff;
font-size: 12px;
width: 80px;
text-align: center;
border-radius: 4px;
cursor: pointer;
margin-left: 20px;
}
.travelControlDropDown .el-dropdown-menu__item {
width: 156px;
}
.guoneiLine tbody td {
font-size: 17px;
}
</style>
<template>
<div class="travelControlTrip detail-box">
<div class="travelControlTrip">
<div class="trip_cover" v-show="pdfLoading" v-loading="pdfLoading"></div>
<input type="button" style="width: auto !important;" class="travelControlTripBtn" value="下载电脑版PDF" @click="toPDF(orderMsg.startDate + orderMsg.lineteamName+orderMsg.dayNum+'日游')" />
<input type="button" style="width: auto !important;" class="travelControlTripBtn" value="下载手机版WORD" @click="gernalFeature(0)" />
<input type="button" style="width: auto !important;" class="travelControlTripBtn" value="下载电脑版WORD" @click="gernalFeature(1)" />
<a class="travelControlTripBtn" v-if="priceList!=null&& priceList[0]!=null && priceList[0].wordPath!=''" style="display:inline-block;text-decoration:none;
width:135px;text-align:center;line-height:30px;font-size:13px;position:relative;top:2px;"
:href="domainManager().ViittoFileUrl+priceList[0].wordPath">下载WORD行程</a>
<input type="button" v-if="orderId>0" class="travelControlTripBtn" value="修改信息" @click="editMsgShow=true" />
<div id="pdfNode">
<div id='pdfDom' style="padding:0 20px;">
<div id="pdf_1">
<div class="logo-div">
<img :src="vshowJ===true?'https://reborndev.oss-cn-hangzhou.aliyuncs.com/Upload/PictureMaterial/Web/headerImg.jpg':'https://reborndev.oss-cn-hangzhou.aliyuncs.com/Upload/PictureMaterial/Web/headerImg2.jpg'">
</div>
<div class="website">
<div class="website-line"></div>
</div>
<div class="trip-adviser">
<h1 class="trip-nav-title">{{vshowL?"出团通知书:":""}}{{orderMsg.lineteamName}}{{orderMsg.dayNum}}日游</h1>
<p v-if="!vshowL">{{title}}</p>
<p v-if="vshowL">尊敬的旅客:<br />感谢您选择我们的旅游服务。为了确保各位旅客有更好的旅游体验,请详细阅读《出团通知书》的各项内容。如有任何问题,请拨打通知书内的本团领队电话或机场服务人员电话。
在此,预祝您旅途愉快!希望您在本次旅程中留下此生中最美好的回忆!</p>
</div>
<div v-if='vshowA' class="module-title">
<h2>基础信息</h2>
<div class="short-line"></div>
<div class="english-title">ESSENTIAL INFORMATION</div>
</div>
<table v-if='vshowA' class="essential">
<tr>
<td class="essential-item">
<img src="../assets/img/TravelControlTripIcon1.png" />
<p class="pkey">线路</p>
<p class="pvalue">{{orderMsg.lineName}}</p>
</td>
<td class="essential-item">
<img src="../assets/img/TravelControlTripIcon2.png" />
<p class="pkey">出发日期</p>
<p class="pvalue">{{orderMsg.startDate}}</p>
</td>
<td class="essential-item">
<img src="../assets/img/TravelControlTripIcon3.png" />
<p class="pkey">返回日期</p>
<p class="pvalue">{{orderMsg.endDate}}</p>
</td>
</tr>
<tr>
<td class="essential-item">
<img src="../assets/img/TravelControlTripIcon4.png" />
<p class="pkey">系列</p>
<p class="pvalue">{{orderMsg.lineteamName}}</p>
</td>
<td class="essential-item">
<img src="../assets/img/TravelControlTripIcon5.png" />
<p class="pkey">行程天数</p>
<p class="pvalue">{{orderMsg.dayNum}}</p>
</td>
<td class="essential-item" v-if="vshowTCNUM">
<img src="../assets/img/TravelControlTripIcon6.png" />
<p class="pkey">团队编号</p>
<p class="pvalue">{{orderMsg.tcnum}}</p>
</td>
</tr>
</table>
<div v-if='vshowL' class="module-title">
<h2>集合地点&联系人</h2>
<div class="short-line"></div>
<div class="english-title">Collection place & Contacts</div>
</div>
<table v-if='vshowL' class="collection">
<tr>
<td>
<div class="collection-item clearfix">
<div><img src="../assets/img/TravelControlTripIcon9.png" />本团领队</div>
<span>{{orderTripdiff!=null? orderTripdiff.leaderInfo :
orderMsg.leaderName+(orderMsg.leaderMobile!=null?"/"+orderMsg.leaderMobile:"")}}</span>
</div>
</td>
<td>
<div class="collection-item clearfix">
<div><img src="../assets/img/TravelControlTripIcon10.png" />集合时间</div>
<span>{{orderTripdiff!=null? orderTripdiff.gatheringTime :
orderMsg.gatheringTime}}</span>
</div>
</td>
</tr>
<tr>
<td>
<div class="collection-item clearfix">
<div><img src="../assets/img/TravelControlTripIcon11.png" />机场服务</div>
<span>{{orderTripdiff!=null ? orderTripdiff.airportService : orderMsg.airportServicePerson+"/"+
orderMsg.airportServicePhone}}</span>
</div>
</td>
<td>
<div class="collection-item clearfix">
<div><img src="../assets/img/TravelControlTripIcon12.png" />集合标识</div>
<span>{{orderTripdiff!=null? orderTripdiff.gatherIdent :
orderMsg.bName}}</span>
</div>
</td>
</tr>
<tr>
<td>
<div class="collection-item clearfix">
<div><img src="../assets/img/TravelControlTripIcon13.png" />紧急联系人</div>
<template>
<span v-if='vshowLLR'> {{orderTripdiff!=null ?
orderTripdiff.emergencyContact : orderMsg.branchManager+"/"+orderMsg.mobilePhone}}</span>
<span v-else>{{orderTripdiff!=null ?
orderTripdiff.emergencyContact : orderMsg.sellName+"/"+orderMsg.sellTel}}</span>
</template>
</div>
</td>
<td>
<div class="collection-item clearfix">
<div><img src="../assets/img/TravelControlTripIcon14.png" />集合地点</div>
<span>{{orderTripdiff!=null? orderTripdiff.gatheringAddress :
orderMsg.gatheringAddress}}</span>
</div>
</td>
</tr>
</table>
<div v-if='vshowB' class="module-title">
<h2>航班信息</h2>
<div class="short-line"></div>
<div class="english-title">Flight situation</div>
</div>
<div v-if='vshowB' class="hangban-info">
<table border="0" align="center" cellpadding="0" cellspacing="0" class="flight_th">
<tbody>
<tr>
<td width="140">出发时间<span>(当地)</span></td>
<td width="160">抵达时间<span>(当地)</span></td>
<td width="206">起飞机场</td>
<td width="18" class="gap">&nbsp;</td>
<td>抵达机场</td>
<td width="18" class="gap">&nbsp;</td>
<td width="140">航空公司</td>
<td width="90">航班编号</td>
</tr>
</tbody>
</table>
<div class="_hangban_line"></div>
<table border="0" align="center" cellspacing="0" cellpadding="0" class="flight_list">
<tbody v-if="orderTripdiff&&orderTripdiff.travelOrderFlightList&& orderTripdiff.travelOrderFlightList.length>0">
<tr v-for="(flight,ftIndex) in orderTripdiff.travelOrderFlightList" :key="ftIndex">
<td width="140"><span class="nth-day">{{flight.startDate.substring(5)}}</span>&nbsp;<span class="num">{{flight.departureTime}}</span></td>
<td width="160"><span class="nth-day">{{flight.arriveDate.substring(5)}}</span>&nbsp;<span class="num">{{flight.arrivalTime}}</span></td>
<td width="206">{{flight.departureAirPortName}}<span class="citycode"></span></td>
<td width="18" class="gap">&nbsp;</td>
<td>{{flight.arrivalAirPortName}}<span class="citycode"></span></td>
<td width="18" class="gap">&nbsp;</td>
<td width="140">{{flight.alName}}</td>
<td width="90">{{flight.flightNumber}}</td>
</tr>
</tbody>
<tbody v-else-if="priceList.length>0&&priceList[0].priceFlight&&priceList[0].priceFlight.length>0">
<tr v-for="(flight,ftIndex) in priceList[0].priceFlight" :key="ftIndex">
<td width="140"><span class="nth-day">{{flight.startDate.substring(5)}}</span>&nbsp;<span class="num">{{flight.departureTime}}</span></td>
<td width="160"><span class="nth-day">{{flight.arriveDate.substring(5)}}</span>&nbsp;<span class="num">{{flight.arrivalTime}}</span></td>
<td width="206">{{flight.departureAirPortName}}<span class="citycode"></span></td>
<td width="18" class="gap">&nbsp;</td>
<td>{{flight.arrivalAirPortName}}<span class="citycode"></span></td>
<td width="18" class="gap">&nbsp;</td>
<td width="140">{{flight.alName}}</td>
<td width="90">{{flight.flightNumber}}</td>
</tr>
</tbody>
<tbody v-else>
<tr>
<td>航班信息未确认</td>
</tr>
</tbody>
</table>
</div>
<div style="width: 100%;height:20px;"></div>
</div>
<div id="pdf_2">
<div class="nin-box" v-if="showType==2&&vshowC">
<table>
<tbody>
<tr>
<td @click="showImg(feature.featureImgList),initialIndex=index" v-for="(i,index) in feature.featureImgList"
:key="index" v-if="index<3" :style="{background:'url(' + i.url + ') no-repeat bottom left/100% auto'}">
&nbsp;
</td>
</tr>
<tr>
<td @click="showImg(feature.featureImgList),initialIndex=index" v-for="(i,index) in feature.featureImgList"
:key="index" v-if="index>2&&index<6" :style="{background:'url(' + i.url + ') no-repeat bottom left/100% auto'}">
&nbsp;
</td>
</tr>
<tr>
<td @click="showImg(feature.featureImgList),initialIndex=index" v-for="(i,index) in feature.featureImgList"
:key="index" v-if="index>5&&index<=8" :style="{background:'url(' + i.url + ') no-repeat bottom left/100% auto'}">
&nbsp;
</td>
</tr>
</tbody>
</table>
</div>
<div class="slider" v-if="showType==1&&loadNone==false&&vshowC">
<img v-for="(i,index) in feature.featureImgList" :key="index" :src="i.url" style="width:100%;">
</div>
<div class="zidingyi" v-if="showType==3&&loadNone==false&&vshowC">
<div v-html="feature.featureContent"></div>
</div>
<div class="template-box" v-if="(showType>=4)&&loadNone==false&&vshowC">
<div v-if="vshowC" class="module-title">
<h2>行程特色</h2>
<div class="short-line"></div>
<div class="english-title">Trip characteristics</div>
</div>
<div v-html="feature.featureHtml" id="gernalCanvas"></div>
</div>
<div id="teamacitvy"> </div>
</div>
<div v-if='vshowD' class="trip-box">
<div v-if="vshowK">
<div class="trip-block pdf_3_block" v-for="(item,i) in tripList" :key="i">
<div v-if="i==0" class="module-title" id="pdf_3_header">
<h2>行程安排</h2>
<div class="short-line"></div>
<div class="english-title">Scheduling</div>
</div>
<oneday v-if="item.details && item.details.length==1" :day='item' :dayNum="item.dayNum" :title="item.title"
:isDirect="isDirect"></oneday>
<twoday v-if="item.details && item.details.length==2" :day='item' :dayNum="item.dayNum" :title="item.title"
:isDirect="isDirect"></twoday>
<threeday v-if="item.details && item.details.length==3" :day='item' :dayNum="item.dayNum" :title="item.title"
:isDirect="isDirect"></threeday>
<fourday v-if="item.details && item.details.length==4" :day='item' :dayNum="item.dayNum" :title="item.title"
:isDirect="isDirect"></fourday>
<fiveday v-if="item.details && item.details.length>=5" :day='item' :dayNum="item.dayNum" :title="item.title"
:isDirect="isDirect"></fiveday>
</div>
</div>
<div v-else>
<div class="trip-block pdf_3_block" v-for="(item,i) in tripList" :key="i">
<div v-if="i==0" class="module-title" id="pdf_3_header">
<h2>行程安排</h2>
<div class="short-line"></div>
<div class="english-title">Scheduling</div>
</div>
<table class="trip-title">
<tr>
<td class="day">
<h3><span v-if='item.dayNum<10'>0</span>{{item.dayNum}}天</h3>
</td>
<td class="desc" v-html="item.title"></td>
</tr>
</table>
<div class="trip_text_details" v-for="(item2,index2) in item.details" :key="index2">
<h3>
{{item2.title}}
<span class="playInfo-item" v-if='item2.playTimeHour || item2.playTimeMinutes'>
<i class="iconfont icon-shijian1"></i>
<span v-if="item2.playTimeHour">{{item2.playTimeHour}}小时 </span>
<span v-if="item2.playTimeMinutes">{{item2.playTimeMinutes}}分钟 </span>
</span>
</h3>
<div class="trip_text_content" v-html="item2.content"></div>
</div>
<div class="trip_text_trips" v-if='item.tips.length>0'>
<h4>温馨提示</h4>
<div>
<div v-for="(t,k) in item.tips" :key="k" v-html="t.content"></div>
</div>
</div>
<div class="trip_text_restaurant">
<div class="restaurant">
<div>
<div class="restaurant-item">
<div class="key">
<img crossOrigin="Anonymous" src='../assets/img/daily_breakfast.png' />
</div>
<div class="val">{{item.can.breakfirst}}</div>
</div>
<div class="restaurant-item">
<div class="key">
<img crossOrigin="Anonymous" src='../assets/img/daily_lunch.png' />
</div>
<div class="val">{{item.can.lanuch}}</div>
</div>
<div class="restaurant-item">
<div class="key">
<img crossOrigin="Anonymous" src='../assets/img/daily_dinner.png' />
</div>
<div class="val">{{item.can.dinner}}</div>
</div>
</div>
</div>
<div class="restaurant">
<div>
<div class="restaurant-item">
<div class="key">
<img crossOrigin="Anonymous" src='../assets/img/daily_hotel-1.png' />
</div>
<div class="val" v-if='item.jiu2.length>0'>
<span v-for="(t,k) in item.jiu2" :key="k">
{{t.name}} /
</span>
或同級
</div>
<div class="val" v-else>本日无酒店安排</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="pdf_4">
<div v-if='vshowE' class="module-title">
<h2>费用</h2>
<div class="short-line"></div>
<div class="english-title">Expense</div>
</div>
<div v-if='vshowE' class="expense">
<div class="left">费用包含</div>
<div class="right">
<div v-html="feature.feeInclude"></div>
</div>
<div class="left" style="margin: 15px 0 15px 0;">费用不包含</div>
<div class="right">
<div v-html="feature.feeNonInclude"></div>
</div>
</div>
<div class="expense" v-if='dataList.selfpayingList && dataList.selfpayingList.length>0&&vshowE'>
<div class="left">自理费用</div>
<div class="right">
<table class="expense-table" cellspacing=0 cellpadding=0>
<thead>
<th>城市</th>
<th>活动</th>
<th>参考价格</th>
<th>说明</th>
</thead>
<tbody>
<tr v-for="(item,i) in dataList.selfpayingList" :key="i">
<td>{{item.cityName}}</td>
<td>{{item.itemName}}</td>
<td>约{{item.estimatedCost}}</td>
<td>{{item.explain}}</td>
</tr>
</tbody>
</table>
</div>
</div>
<div v-if='vshowF' class="module-title">
<h2>购物说明</h2>
<div class="short-line"></div>
<div class="english-title">Expense</div>
</div>
<div v-if='vshowF' class="expense">
<div class="left">
<!-- 购物协议 -->
</div>
<div class="right">
<div v-html="feature.shopRemark"></div>
</div>
</div>
<div class="expense" v-if="dataList.shopList && dataList.shopList.length>0&&vshowF">
<div class="left">购物安排</div>
<div class="right">
<table class="expense-table autowidth" cellspacing=0 cellpadding=0>
<thead>
<th>城市</th>
<th>购物店名称</th>
<th>预计停留时间</th>
</thead>
<tbody>
<tr v-for="(item,i) in dataList.shopList" :key="i">
<td>{{item.cityName}}</td>
<td>{{item.shopName}}</td>
<td>{{item.visitTime}}</td>
</tr>
</tbody>
</table>
</div>
</div>
<div style="width: 100%;height:1px;"></div>
</div>
<div id="pdf_5">
<div v-if='vshowG' class="module-title">
<h2>订单须知</h2>
<div class="short-line"></div>
<div class="english-title">Tips</div>
</div>
<div class="expense" v-if="feature.importantTip!=''&&vshowG">
<div class="left">重要提示</div>
<div class="right">
<div v-html="feature.importantTip"></div>
</div>
</div>
<div v-if='vshowG' class="expense">
<div class="left">温馨提示</div>
<div class="right">
<div v-html="feature.warmTip"></div>
</div>
</div>
<div style="width: 100%;height:1px;"></div>
</div>
<div id="pdf_6">
<div v-if='vshowH' class="module-title">
<h2>签证</h2>
<div class="short-line"></div>
<div class="english-title">Visa</div>
</div>
<div v-if='vshowH' class="expense">
<div class="left">签证须知</div>
<div class="right">
<div v-html="feature.visaRemark"></div>
</div>
</div>
<div v-if='vshowI' class="module-title">
<h2>同行备注</h2>
<div class="short-line"></div>
<div class="english-title">Remark</div>
</div>
<div v-if='vshowI' class="expense">
<div class="left"></div>
<div class="right">
<div v-html="feature.b2BRemark"></div>
</div>
</div>
<div v-if='vshowM' class="module-title">
<h2>旅客信息</h2>
<div class="short-line"></div>
<div class="english-title">Passenger information</div>
</div>
<table v-if='vshowM' class="Passenger-table" border="0" cellspacing="2" cellpadding="2">
<tr>
<td width="16.6%" class="thClass">姓名</td>
<td width="16.6%" class="thClass">英文姓名</td>
<td width="16.6%" class="thClass">性别</td>
<td width="16.6%" class="thClass">护照号</td>
<td width="16.6%" class="thClass">有效期</td>
<td width="16.6%" class="thClass">联系电话</td>
</tr>
<tr v-for="(item,i) in orderMsg.guestList" :key="i">
<td>{{item.name}}</td>
<td>{{item.eName}}</td>
<td>{{item.sex}}</td>
<td>{{item.passportNo}}</td>
<td>{{item.passportExpiry}}</td>
<td>{{item.mobilePhone}}</td>
</tr>
</table>
<div v-if='vshowJ' class="footer-div">
<img src="https://reborndev.oss-cn-hangzhou.aliyuncs.com/Upload/PictureMaterial/Web/TravelControlTripIcon20.png" />
</div>
</div>
</div>
</div>
<el-dialog title="修改信息" custom-class="confirmOrder" :visible.sync="editMsgShow" center>
<el-form :model="editForm" label-width="100px">
<p class="edit_form_box_tit">集合地点&联系人</p>
<div class="edit_form_box">
<div>
<el-form-item label="本团领队">
<el-input v-model="editForm.leaderInfo"></el-input>
</el-form-item>
<el-form-item label="机场服务">
<el-input v-model="editForm.airportService"></el-input>
</el-form-item>
<el-form-item label="紧急联系人">
<el-input v-model="editForm.emergencyContact"></el-input>
</el-form-item>
</div>
<div>
<el-form-item label="集合时间">
<el-input v-model="editForm.gatheringTime"></el-input>
</el-form-item>
<el-form-item label="集合标识">
<el-input v-model="editForm.gatherIdent"></el-input>
</el-form-item>
<el-form-item label="集合地点">
<el-input v-model="editForm.gatheringAddress"></el-input>
</el-form-item>
</div>
</div>
<p class="edit_form_box_tit">航班信息</p>
<div class="TravelFlightList">
<el-form label-width="0">
<table class="TFTable">
<tr>
<th>航空公司</th>
<th>航班</th>
<th>起飞机场/时间</th>
<th>到达机场/时间</th>
<th>出发日期</th>
<th>到达日期</th>
<th>操作</th>
</tr>
<tr v-for="(priceFlight,index) in editForm.travelOrderFlightList" :key="priceFlight.code">
<td>
<el-select class="w120" :placeholder="$t('pub.pleaseSel')" filterable v-model="priceFlight.airLineID"
@change="airLineSelectChange(priceFlight.airLineID,priceFlight,1)">
<el-option :label="$t('pub.unlimitedSel')" :value="defaultSelectValue"></el-option>
<el-option v-for="item in airLineList" :label="item.AlName" :value="item.AirLineId" :key="item.AirLineId"></el-option>
</el-select>
</td>
<td>
<el-select class="w120" :placeholder="$t('pub.pleaseSel')" filterable v-model="priceFlight.flightID"
@change="flightSelectChange(priceFlight.flightID,priceFlight)">
<el-option :label="$t('pub.unlimitedSel')" :value="defaultSelectValue"></el-option>
<el-option v-for="item in priceFlight.airportNameList" :label="item.Flight_number" :value="item.ID"
:key="item.ID"></el-option>
</el-select>
</td>
<td>{{priceFlight.departureAirPortName}} <template v-if="priceFlight.departureTime&& priceFlight.departureTime!=''">{{priceFlight.departureTime}}</template></td>
<td>
{{priceFlight.arrivalAirPortName}}<template v-if="priceFlight.arrivalTime && priceFlight.arrivalTime!=''">{{priceFlight.arrivalTime}}</template>
</td>
<td>
<el-date-picker class="w110" :clearable="false" v-model="priceFlight.startDate" type="date"
value-format="yyyy-MM-dd"></el-date-picker>
</td>
<td>
<el-date-picker class="w110" :clearable="false" v-model="priceFlight.arriveDate" type="date"
value-format="yyyy-MM-dd"></el-date-picker>
</td>
<td>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start">
<el-button type="danger" icon="el-icon-delete" @click="removePriceFlight(index,priceFlight,1)"
circle></el-button>
</el-tooltip>
<el-tooltip class="item" v-if="index!=0" style="margin-left:0" effect="dark" content="上移" placement="top-start">
<el-button type="danger" icon="iconfont icon-shangyi" @click="MoveItem(priceFlight,index,0)" circle></el-button>
</el-tooltip>
<el-tooltip class="item" v-if="index!=editForm.travelOrderFlightList.length-1" style="margin-left:0"
effect="dark" content="下移" placement="top-start">
<el-button type="danger" icon="iconfont icon-xiayi1" @click="MoveItem(priceFlight,index,1)" circle></el-button>
</el-tooltip>
</td>
</tr>
</table>
</el-form>
<div class="TFAddFlight" @click="addFlight()">
<i class="iconfont icon-img_haha"></i>添加
</div>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<button class="normalBtn" type="primary" @click="submitForm()">{{$t('pub.saveBtn')}}</button> &nbsp;
<button class="hollowFixedBtn" @click="editMsgShow = false">{{$t('pub.cancelBtn')}}</button>
<button class="normalBtn" type="primary" @click="backForm()">还原</button> &nbsp;
</div>
</el-dialog>
<el-row style="padding: 0 0 20px 0;box-shadow: 1px 10px 10px#e6e6e6;">
<el-col :span="14">
<el-dropdown trigger="click">
<span class="el-dropdown-link">行程下载
<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown" class="travelControlDropDown">
<el-dropdown-item style="display:none;"
@click.native="toPDF_2023(orderMsg.startDate + orderMsg.lineteamName+orderMsg.dayNum+'日游')">
2023版PDF
</el-dropdown-item>
<el-dropdown-item @click.native="toPDF_V2(orderMsg.startDate + orderMsg.lineteamName+orderMsg.dayNum+'日游')">
下载电脑版PDF
</el-dropdown-item>
<el-dropdown-item @click.native="gernalFeature(0)">
下载手机版WORD
</el-dropdown-item>
<el-dropdown-item @click.native="gernalFeature(1)">
下载电脑版WORD
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <input type="button" style="width: auto !important;" class="travelControlTripBtn" value="下载电脑版PDF"
@click="toPDF_V2(orderMsg.startDate + orderMsg.lineteamName+orderMsg.dayNum+'日游')" />
<input type="button" style="width: auto !important;" class="travelControlTripBtn" value="下载手机版WORD"
@click="gernalFeature(0)" />
<input type="button" style="width: auto !important;" class="travelControlTripBtn" value="下载电脑版WORD"
@click="gernalFeature(1)" /> -->
<input type="button" value="新版行程" class="travelControlTripBtn" @click="goUrlView()" style="display:none;" />
<el-checkbox v-model="isShowTime">显示行程日期</el-checkbox>
<a class="travelControlTripBtn" v-if="priceList.length>0&& priceList[0].wordPath!=''" style="display:inline-block;text-decoration:none;
width:135px;text-align:center;line-height:30px;font-size:13px;position:relative;top:2px;"
:href="domainManager().ViittoFileUrl+priceList[0].wordPath">下载WORD行程</a>
<!--&&isopOperation HK 注释 可以让销售修改基本信息-->
<input type="button" v-if="orderId>0" class="travelControlTripBtn" value="修改信息" @click="editMsgShow=true" />
</el-col>
<el-col :span="10">
<span style="font-size:14px">行程补充说明:</span>
<el-select filterable size="small" v-model="Typevalue" placeholder="请选择">
<el-option label="日本寻秋意赏枫季" :value="-1"></el-option>
<el-option label="仲夏花火夜" :value="-2"></el-option>
<el-option label="寻觅日本美食" :value="-3"></el-option>
<el-option label="邂逅北海道的雪" :value="-4"></el-option>
<el-option label="日本趣味滑雪乐" :value="-5"></el-option>
<el-option label="湄公之畔,悠哉老挝" :value="-6"></el-option>
<el-option label="印象日本·严选酒店<舒适体验·品质服务>" :value="-7"></el-option>
<el-option v-for="item in titleList" :key="item.subCode" :label="item.title" :value="item.id">
</el-option>
</el-select>
<input type="button"
style="width: auto !important;background: rgb(0, 198, 255);border:1px solid rgb(0, 198, 255);outline:none"
class="travelControlTripBtn" value="预览" @click="yuLan" />
<input type="button" style="width: auto !important;outline:none" class="travelControlTripBtn" value="下载"
@click="DownloadJuanmSaid" />
</el-col>
</el-row>
<LeaveGroupDownload
:vshowJ="vshowJ"
:vshowL="vshowL"
:WeiXinShareImgSrc="WeiXinShareImgSrc"
:orderMsg="orderMsg"
:orderTripdiff="orderTripdiff"
:vshowLLR="vshowLLR"
:vshowB="vshowB"
:lineId="lineId"></LeaveGroupDownload>
</div>
</template>
......@@ -569,8 +115,7 @@
import threeday from './commonPage/threeday'
import fourday from './commonPage/fourday'
import fiveday from './commonPage/fiveday'
// import saveAs from 'file-saver'
// import '../utils/jqueryWordexport.js'
import LeaveGroupDownload from './LeaveGroupDownload/index'
import {
setTimeout
} from 'timers';
......@@ -580,6 +125,16 @@
export default {
data() {
return {
isShowTime: true,
CurrentUserInfo: {}, //当前用户信息
Typevalue: -1,
titleList: [],
listMsg: {
pageSize: 1000,
pageIndex: 1,
},
//微信分享图片
WeiXinShareImgSrc: "",
//下拉框默认值
defaultSelectValue: 0,
//航空公司下拉
......@@ -619,6 +174,7 @@
vshowM: this.$route.query.vshowM === undefined ? true : this.$route.query.vshowM === 'true',
vshowLLR: this.$route.query.vshowLLR === undefined ? true : this.$route.query.vshowLLR === 'true',
vshowTCNUM: this.$route.query.vshowTCNUM === undefined ? false : this.$route.query.vshowTCNUM === 'true',
vshowO: this.$route.query.vshowO === undefined ? true : this.$route.query.vshowO === 'true',
list: [],
tripList: [],
priceList: [],
......@@ -631,90 +187,136 @@
orderTripdiff: {},
title: '',
isDirect: 1, //是否是直采 0:否,1:是
isClick: this.$route.query.isClick === undefined ? 0 : 1, //不算统计
lineId: 0
}
},
mounted() {
this.CurrentUserInfo = this.getLocalStorage();;
this.orderId = this.$route.query.orderId;
this.isopOperation = this.$route.query.isopOperation;
this.getWxCode();
this.init();
this.initAirlines()
setTimeout(() => {
this.appendParent()
}, 2000)
this.getDataList();
},
methods: {
DownloadJuanmSaid() {
let title = "行程补充说明:";
if (this.Typevalue == -1) {
title += "日本寻秋意赏枫季"
}
if (this.Typevalue == -2) {
title += "仲夏花火夜"
}
if (this.Typevalue == -3) {
title += "寻觅日本美食"
}
if (this.Typevalue == -4) {
title += "邂逅北海道的雪"
}
if (this.Typevalue == -5) {
title += "日本趣味滑雪乐"
}
if (this.Typevalue == -6) {
title += "湄公之畔,悠哉老挝"
}
if (this.Typevalue == -7) {
title += "印象日本·严选酒店<舒适体验·品质服务>"
}
if (this.Typevalue > 0) {
this.titleList.forEach(item => {
if (item.id == this.Typevalue) {
title += item.title;
}
})
}
this.pdfLoading = true
let pageData = document.getElementById('pdfNode').innerHTML
let urlObj = this.domainManager()
this.$http({
headers: {
'Content-Type': 'application/json'
},
method: 'post',
url: urlObj.DomainUrl + '/api/file/DownLoadJuanSaid',
data: {
"msg": {
id: this.Typevalue
}
}
}).then(res => {
if (res.data.resultCode === 1) {
setTimeout(() => {
let sign = title
const a = document.createElement('a');
a.setAttribute('download', '');
a.setAttribute('href', urlObj.DomainUrl + '/api/file/DownloadFileForPdf?fileName=' + sign +
'.pdf&&fPath=' + res.data.data);
a.click();
}, 1000)
} else {
this.$message.error('PDF获取失败');
}
this.pdfLoading = false
}).catch(err => {
})
},
yuLan() {
if (this.Typevalue == -1) {
window.open("http://www.oytour.com/#/FoodImg2");
} else if (this.Typevalue == -2) {
window.open("http://www.oytour.com/#/Fire");
} else if (this.Typevalue == -3) {
window.open("http://www.oytour.com/#/FoodImg");
} else if (this.Typevalue == -4) {
window.open("http://www.oytour.com/#/FoodImg4");
} else if (this.Typevalue == -5) {
window.open("http://www.oytour.com/#/Juanski");
} else if (this.Typevalue == -6) {
window.open("http://www.oytour.com/#/Laowo");
} else if (this.Typevalue == -7) {
window.open("http://www.oytour.com/#/JapanHotel");
} else {
window.open("http://www.oytour.com/#/JuanDetails?id=" + this.Typevalue);
}
},
// 获取标题
getDataList() {
// this.apiJavaPost('/api/rssarticle/getArticleList', this.listMsg, res => {
// if (res.data.resultCode == 1) {
// let data = res.data.data.pageData.list;
// this.titleList = data;
// } else {
// this.Error(res.data.message);
// }
// }, null)
},
//获取微信二维码
getWxCode: function () {
this.apipost('survey_post_GetSurveyWeiXinShare', {
TCID: this.$route.query.tcid
}, res => {
if (res.data.resultCode == 1) {
this.WeiXinShareImgSrc = res.data.data;
}
}, err => {})
},
gernalFeature(isPc) {
this.pdfLoading = true;
let tcid = this.$route.query.tcid;
let UploadUrl = this.domainManager().UploadUrl
let _this = this
if (this.showType >= 4) { // 判断是否为行程特色
var apiurl = this.domainManager().UploadUrl + '/Upload/GetImage?filePath=Feature/' + tcid;
this.$http.post(apiurl).then(res => {
let msg = res
if (msg.ResultCode) { // 已经存在文件 直接调用下载
_this.ToWord(_this.orderMsg.startDate + _this.orderMsg.lineteamName + _this.orderMsg.dayNum +
'日游', isPc)
} else if (document.querySelector("#gernalCanvas")) { // 不存在图片保存图片后下载
if (document.querySelector("#gernalCanvas").querySelectorAll('img').length === 0) {
_this.ToWord(_this.orderMsg.startDate + _this.orderMsg.lineteamName + _this.orderMsg.dayNum +
'日游', isPc)
return
}
document.querySelector("#gernalCanvas").querySelectorAll('img').forEach(x => {
let src = x.src
src = src.replace('https:', 'http:')
if (src.indexOf('http') != -1) {
x.setAttribute('crossOrigin', 'anonymous')
}
x.src = src
});
let cName = ''
if (_this.showType == 4) {
cName = '.feature-box'
} else if (_this.showType > 4) {
cName = '.travle_page'
}
if (cName != '') {
let allNum = 1
document.querySelectorAll(cName).forEach((x, index) => {
html2Canvas(x, {
useCORS: true,
scale: 0.7,
backgroundColor: '#FFFFFF',
}).then((canvas) => {
if (canvas) {
var context = canvas.getContext('2d')
context.mozImageSmoothingEnabled = false
context.webkitImageSmoothingEnabled = false
context.msImageSmoothingEnabled = false
context.imageSmoothingEnabled = false
var image = new Image();
image.src = canvas.toDataURL("image/png");
this.uploadImg(tcid,{myfile: image.src,fileIndex: index},res=>{
},err=>{
})
return
if (allNum !== document.querySelectorAll(cName).length) {
allNum += 1
} else {
_this.ToWord(_this.orderMsg.startDate + _this.orderMsg.lineteamName + _this.orderMsg
.dayNum + '日游', isPc)
}
}
});
});
}
} else {
_this.ToWord(_this.orderMsg.startDate + _this.orderMsg.lineteamName + _this.orderMsg.dayNum +
'日游', isPc)
}
}, null)
return
_this.ToWord_V2(_this.orderMsg.startDate + _this.orderMsg.lineteamName + _this.orderMsg.dayNum +
'日游', isPc)
} else {
this.ToWord(this.orderMsg.startDate + this.orderMsg.lineteamName + this.orderMsg.dayNum + '日游', isPc)
this.ToWord_V2(this.orderMsg.startDate + this.orderMsg.lineteamName + this.orderMsg.dayNum + '日游', isPc)
}
},
//保存基础数据
......@@ -828,26 +430,32 @@
arrivalTime: '',
arrivalAirPortName: '',
stopoverAirPortName: '',
flightState: '',
flightState: 0,
arriveDate: '',
airportNameList: [],
}
this.editForm.travelOrderFlightList.push(obj)
},
setDate: function (j) {
let stDate = this.priceList[0].startDate
let stDate = "";
if (this.priceList && this.priceList.length > 0) {
stDate = this.priceList[0].startDate;
}
if (j === 0) {
return stDate
} else {
let d = new Date(stDate)
d = d.getTime(d);
let add = d + ((24 * 60 * 60 * 1000) * j)
let date = new Date(add); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
let Y = date.getFullYear() + '-';
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
let D = date.getDate() < 10 ? ('0' + date.getDate()) + ' ' : date.getDate() + ' ';
return Y + M + D;
if (stDate) {
let d = new Date(stDate)
d = d.getTime(d);
let add = d + ((24 * 60 * 60 * 1000) * j)
let date = new Date(add); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
let Y = date.getFullYear() + '-';
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
let D = date.getDate() < 10 ? ('0' + date.getDate()) + ' ' : date.getDate() + ' ';
return Y + M + D;
} else {
return "";
}
}
},
appendParent() {
......@@ -863,35 +471,224 @@
}
},
// 生成pdf
toPDF: function (title) {
toPDF_V3: function (title) {
this.pdfLoading = true
let urlObj = this.domainManager();
let msg = {
configId: this.$route.query.configId,
cityId: this.$route.query.cityId,
tcid: this.$route.query.tcid,
orderId: this.$route.query.orderId,
unionfid: this.$route.query.unionfid,
FileName: title,
//是否显示基础信息
isShowBase: this.vshowA ? 1 : 0,
//是否显示航班
isShowFlight: this.vshowB ? 1 : 0,
//是否显示行程特色
isShowFeature: this.vshowC ? 1 : 0,
//自费、费用包含、费用不含
isShowFee: this.vshowE ? 1 : 0,
//购物说明,购物安排
isShowShop: this.vshowF ? 1 : 0,
//重要提示、温馨提示 [订单须知]
isShowTip: this.vshowG ? 1 : 0,
//是否显示同行备注
isShowB2B: this.vshowI ? 1 : 0,
//是否显示行程
isShowTrip: this.vshowD ? 1 : 0,
//是否显示标题
isShowTitle: this.vshowL ? 1 : 0,
//是否显示旅客名单
isShowGuest: this.vshowM ? 1 : 0,
//是否显示紧急联系人
isShowMan: this.vshowLLR ? 1 : 0,
//是否显示团号
isShowTCNUM: this.vshowTCNUM ? 1 : 0,
//是否显示行程图片
isShowTripImage: this.vshowK ? 1 : 0,
//是否显示签证信息
isShowVisa: this.vshowH ? 1 : 0,
//是否显示视频图片
isShowVideoImg: this.vshowO ? 1 : 0,
//isPc是否PC下载
isPc: 2,
//模板参数
templateId: this.showType,
//用户Id
UId: this.getLocalStorage().EmployeeId
};
this.$http({
headers: {
'Content-Type': 'application/json'
},
method: 'post',
url: urlObj.DomainUrl + '/api/file/GetWebHtmlTwo_V3',
data: {
"msg": msg
}
}).then(res => {
if (res.data.resultCode === 1) {
let sign = title + "V3"
const a = document.createElement('a');
a.setAttribute('download', '');
a.setAttribute('href', urlObj.DomainUrl + '/api/file/DownloadFileForPdf?fileName=' + sign +
'.pdf&&fPath=' + res.data.data);
a.click();
} else {
this.$message.error('PDF获取失败');
}
this.pdfLoading = false
}).catch(err => {
})
},
// 生成pdf
toPDF_V2: function (title) {
this.pdfLoading = true
let pageData = document.getElementById('pdfNode').innerHTML
let urlObj = this.domainManager()
let urlObj = this.domainManager();
let msg = {
configId: this.$route.query.configId,
cityId: this.$route.query.cityId,
tcid: this.$route.query.tcid,
orderId: this.$route.query.orderId,
unionfid: this.$route.query.unionfid,
FileName: title,
//是否显示基础信息
isShowBase: this.vshowA ? 1 : 0,
//是否显示航班
isShowFlight: this.vshowB ? 1 : 0,
//是否显示行程特色
isShowFeature: this.vshowC ? 1 : 0,
//自费、费用包含、费用不含
isShowFee: this.vshowE ? 1 : 0,
//购物说明,购物安排
isShowShop: this.vshowF ? 1 : 0,
//重要提示、温馨提示 [订单须知]
isShowTip: this.vshowG ? 1 : 0,
//是否显示同行备注
isShowB2B: this.vshowI ? 1 : 0,
//是否显示行程
isShowTrip: this.vshowD ? 1 : 0,
//是否显示标题
isShowTitle: this.vshowL ? 1 : 0,
//是否显示旅客名单
isShowGuest: this.vshowM ? 1 : 0,
//是否显示紧急联系人
isShowMan: this.vshowLLR ? 1 : 0,
//是否显示团号
isShowTCNUM: this.vshowTCNUM ? 1 : 0,
//是否显示行程图片
isShowTripImage: this.vshowK ? 1 : 0,
//是否显示签证信息
isShowVisa: this.vshowH ? 1 : 0,
//是否显示视频图片
isShowVideoImg: this.vshowO ? 1 : 0,
//isPc是否PC下载
isPc: 2,
//模板参数
templateId: this.showType,
//用户Id
UId: this.getLocalStorage().EmployeeId
};
this.$http({
headers: {
'Content-Type': 'application/json'
},
method: 'post',
url: urlObj.DomainUrl + '/api/file/GetWebHtmlTwo',
url: urlObj.DomainUrl + '/api/file/GetWebHtmlTwo_V2',
data: {
"msg": pageData
"msg": msg
}
}).then(res => {
if (res.data.resultCode === 1) {
setTimeout(() => {
let sign = title
const a = document.createElement('a');
a.setAttribute('download', '');
a.setAttribute('href', urlObj.DomainUrl + '/api/file/DownloadFileForPdf?fileName=' + sign +
'.pdf&&fPath=' + res.data.data);
a.click();
}, 1000)
let sign = title + "V2"
const a = document.createElement('a');
a.setAttribute('download', '');
a.setAttribute('href', urlObj.DomainUrl + '/api/file/DownloadFileForPdf?fileName=' + sign +
'.pdf&&fPath=' + res.data.data);
a.click();
} else {
this.$message.error('PDF获取失败');
}
this.pdfLoading = false
}).catch(err => {
})
},
// 生成pdf
toPDF_2023: function (title) {
this.pdfLoading = true
let pageData = document.getElementById('pdfNode').innerHTML
let urlObj = this.domainManager();
let msg = {
configId: this.$route.query.configId,
cityId: this.$route.query.cityId,
tcid: this.$route.query.tcid,
orderId: this.$route.query.orderId,
unionfid: this.$route.query.unionfid,
FileName: title,
//是否显示基础信息
isShowBase: this.vshowA ? 1 : 0,
//是否显示航班
isShowFlight: this.vshowB ? 1 : 0,
//是否显示行程特色
isShowFeature: this.vshowC ? 1 : 0,
//自费、费用包含、费用不含
isShowFee: this.vshowE ? 1 : 0,
//购物说明,购物安排
isShowShop: this.vshowF ? 1 : 0,
//重要提示、温馨提示 [订单须知]
isShowTip: this.vshowG ? 1 : 0,
//是否显示同行备注
isShowB2B: this.vshowI ? 1 : 0,
//是否显示行程
isShowTrip: this.vshowD ? 1 : 0,
//是否显示标题
isShowTitle: this.vshowL ? 1 : 0,
//是否显示旅客名单
isShowGuest: this.vshowM ? 1 : 0,
//是否显示紧急联系人
isShowMan: this.vshowLLR ? 1 : 0,
//是否显示团号
isShowTCNUM: this.vshowTCNUM ? 1 : 0,
//是否显示行程图片
isShowTripImage: this.vshowK ? 1 : 0,
//是否显示签证信息
isShowVisa: this.vshowH ? 1 : 0,
//是否显示视频图片
isShowVideoImg: this.vshowO ? 1 : 0,
//isPc是否PC下载
isPc: 2,
//模板参数
templateId: this.showType,
//用户Id
UId: this.getLocalStorage().EmployeeId
};
this.$http({
headers: {
'Content-Type': 'application/json'
},
method: 'post',
url: urlObj.DomainUrl + '/api/file/DownLoadPdf2023',
data: {
"msg": msg
}
}).then(res => {
if (res.data.resultCode === 1) {
let sign = title + "V2"
const a = document.createElement('a');
a.setAttribute('download', '');
a.setAttribute('href', urlObj.DomainUrl + '/api/file/DownloadFileForPdf?fileName=' + sign +
'.pdf&&fPath=' + res.data.data);
a.click();
} else {
this.$message.error('PDF获取失败');
}
this.pdfLoading = false
}).catch(err => {
})
},
ToWord: function (title, isPc) {
......@@ -900,6 +697,7 @@
cityId: this.$route.query.cityId,
tcid: this.$route.query.tcid,
orderId: this.$route.query.orderId,
unionfid: this.$route.query.unionfid,
FileName: title,
//是否显示基础信息
isShowBase: this.vshowA ? 1 : 0,
......@@ -929,16 +727,91 @@
isShowTripImage: this.vshowK ? 1 : 0,
//是否显示签证信息
isShowVisa: this.vshowH ? 1 : 0,
//是否显示视频图片
isShowVideoImg: this.vshowO ? 1 : 0,
//isPc是否PC下载
isPc: isPc,
//模板参数
templateId: this.showType,
//用户Id
UId: this.getLocalStorage().EmployeeId
};
this.GetLocalFile("DownLoadTripWord", msg, title + ".doc", res => {
this.pdfLoading = false
});
},
ToWord_V2: function (title, isPc) {
let msg = {
configId: this.$route.query.configId,
cityId: this.$route.query.cityId,
tcid: this.$route.query.tcid,
orderId: this.$route.query.orderId,
unionfid: this.$route.query.unionfid,
FileName: title,
//是否显示基础信息
isShowBase: this.vshowA ? 1 : 0,
//是否显示航班
isShowFlight: this.vshowB ? 1 : 0,
//是否显示行程特色
isShowFeature: this.vshowC ? 1 : 0,
//自费、费用包含、费用不含
isShowFee: this.vshowE ? 1 : 0,
//购物说明,购物安排
isShowShop: this.vshowF ? 1 : 0,
//重要提示、温馨提示 [订单须知]
isShowTip: this.vshowG ? 1 : 0,
//是否显示同行备注
isShowB2B: this.vshowI ? 1 : 0,
//是否显示行程
isShowTrip: this.vshowD ? 1 : 0,
//是否显示标题
isShowTitle: this.vshowL ? 1 : 0,
//是否显示旅客名单
isShowGuest: this.vshowM ? 1 : 0,
//是否显示紧急联系人
isShowMan: this.vshowLLR ? 1 : 0,
//是否显示团号
isShowTCNUM: this.vshowTCNUM ? 1 : 0,
//是否显示行程图片
isShowTripImage: this.vshowK ? 1 : 0,
//是否显示签证信息
isShowVisa: this.vshowH ? 1 : 0,
//是否显示视频图片
isShowVideoImg: this.vshowO ? 1 : 0,
//isPc是否PC下载
isPc: isPc,
//模板参数
templateId: this.showType,
//用户Id
UId: this.getLocalStorage().EmployeeId
};
let urlObj = this.domainManager();
this.$http({
headers: {
'Content-Type': 'application/json'
},
method: 'post',
url: urlObj.DomainUrl + '/api/file/GetToWord_V2',
data: {
"msg": msg
}
}).then(res => {
if (res.data.resultCode === 1) {
let sign = title + "V2"
const a = document.createElement('a');
a.setAttribute('download', '');
a.setAttribute('href', urlObj.DomainUrl + '/api/file/DownloadFileForPdf?fileName=' + sign +
'.doc&&fPath=' + res.data.data);
a.click();
} else {
this.Error('WORD获取失败');
}
this.pdfLoading = false
}).catch(err => {
})
},
DateDiff(sDate1, sDate2) { //sDate1和sDate2是2002-12-18格式
var aDate, oDate1, oDate2, iDays
aDate = sDate1.split("-")
......@@ -949,20 +822,35 @@
return iDays
},
init() {
var unionfid = 0;
if (this.$route.query.unionfid) {
unionfid = this.$route.query.unionfid;
}
this.apipost('b2b_get_GetB2BTravelInfoNoDes', {
configId: this.$route.query.configId,
cityId: this.$route.query.cityId,
tcid: this.$route.query.tcid,
orderId: this.$route.query.orderId,
isClick:1//不算统计
isClick: this.isClick, //不算统计
unionfid: unionfid,
}, res => {
if (res.data.resultCode == 1) {
let data = (res.data.data);
this.orderTripdiff = data.orderTripdiff;
this.lineId = data.lineId;
this.orderMsg = data.orderMsg;
if (this.orderTripdiff && this.orderTripdiff.flightInfoJson) {
this.orderTripdiff.travelOrderFlightList = JSON.parse(this.orderTripdiff.flightInfoJson);
if (this.orderMsg.outNotice == 1) {
if (this.orderTripdiff.travelOrderFlightList != null && this.orderTripdiff.travelOrderFlightList
.length > 0) {
this.orderTripdiff.travelOrderFlightList.forEach(subItem => {
subItem.flightState = 1;
});
}
}
}
this.orderMsg = data.orderMsg;
//HK新加
this.SourceData.Id = 0;
if (this.$route.query.orderId > 0) {
......@@ -976,7 +864,8 @@
}
this.SourceData.leaderInfo = str;
this.SourceData.gatheringTime = this.orderMsg.gatheringTime;
this.SourceData.airportService = this.orderMsg.airportServicePerson + "/" + this.orderMsg.airportServicePhone;
this.SourceData.airportService = this.orderMsg.airportServicePerson + "/" + this.orderMsg
.airportServicePhone;
this.SourceData.gatherIdent = this.orderMsg.bName;
this.SourceData.emergencyContact = this.orderMsg.sellName + "/" + this.orderMsg.sellTel;
this.SourceData.gatheringAddress = this.orderMsg.gatheringAddress;
......@@ -1015,6 +904,7 @@
this.airLineSelectChange(fItem.airLineID, fItem);
});
}
this.title = this.orderMsg.startDate + this.orderMsg.lineteamName + this.orderMsg.dayNum + '日游'
document.title = this.title;
//初始化行程
......@@ -1115,6 +1005,8 @@
title: y.childItem.couponsName,
content: y.childItem.description,
img: y.childItem.imaArray[0].url,
videoPath: y.childItem.imaArray[0].videoPath,
fileType: y.childItem.imaArray[0].fileType,
ticketName: y.childItem.couponsTicketName,
playTimeHour: y.childItem.playTimeHour,
playTimeMinutes: y.childItem.playTimeMinutes,
......@@ -1123,8 +1015,11 @@
}
jin.push(obj)
} else if (y.type == 3 && y.childItem.hotelName != '' && y.childItem.imaArray.length > 0) {
//酒店
let obj = {
title: y.childItem.hotelName,
newTitle: y.childItem.newHotelName,
status: y.childItem.status,
content: y.childItem.description,
img: y.childItem.imaArray[0].url,
ticketName: '',
......@@ -1167,7 +1062,9 @@
if (y.type == 3) {
jiu2.push({
name: y.childItem.hotelName,
url: y.childItem.url
url: y.childItem.url,
newTitle: y.childItem.newHotelName,
status: y.childItem.status,
});
useDinnerTypeBy = y.childItem.useDinnerType
}
......@@ -1193,8 +1090,6 @@
x.jiu2 = jiu2
if (jin.length > 0) {
details = jin
} else if (jiu.length > 0) {
details = jiu
} else if (dadian.length > 0) {
details = dadian
} else if (jiao.length > 0) {
......@@ -1255,7 +1150,6 @@
x.dateTime = this.setDate(j);
})
},
//上移下移(IsUp:0上移,1下移)
MoveItem(item, subIndex, IsUp) {
var currentItem = this.editForm.travelOrderFlightList[subIndex];
......@@ -1277,6 +1171,36 @@
}
}
},
//跳转至预览
goUrlView() {
let routeData = this.$router.resolve({
name: 'newConfimationOrder',
query: {
configId: this.$route.query.configId,
cityId: this.$route.query.cityId,
tcid: this.$route.query.tcid,
orderId: this.$route.query.orderId,
isClick: 1, //不计算点击
vshowA: this.vshowA,
vshowB: this.vshowB,
vshowC: this.vshowC,
vshowD: this.vshowD,
vshowE: this.vshowE,
vshowF: this.vshowF,
vshowG: this.vshowG,
vshowH: this.vshowH,
vshowI: this.vshowI,
vshowJ: this.vshowJ,
vshowK: this.vshowK,
vshowL: this.vshowL,
vshowM: this.vshowM,
vshowLLR: this.vshowLLR,
vshowTCNUM: this.vshowTCNUM,
vshowO: this.vshowO,
}
});
window.open(routeData.href, "_blank");
}
},
components: {
oneday,
......@@ -1284,7 +1208,7 @@
threeday,
fourday,
fiveday,
LeaveGroupDownload,
},
}
......
......@@ -10,7 +10,6 @@
@toAddPages="AddPages" @toDeletePages="DeletePages"></featureHome>
<!-- 其余页 -->
<div v-else>
<template v-if="item.pageType>1&&item.pageType<7">
<headerTitle :FeatureItem="item" :TripColor="TripColor"></headerTitle>
<!-- 介绍、宿食景页 -->
<otherJourney :index="index" :FeatureItem="item" :TripColor="TripColor" @toAddPages="AddPages"
......@@ -19,8 +18,6 @@
<!-- 食详情页 -->
<UpgradedVersionDetails :index="index" :FeatureData="item" :TripColor="TripColor" @toAddPages="AddPages"
@toDeletePages="DeletePages" v-if="item.pageType==3"></UpgradedVersionDetails>
</template>
<travelDays v-else></travelDays>
<!-- otherJourney-footer 食景 食详情 -->
<div v-if="item.pageType!=1"
:class="{'otherJourney-footer':item.pageType==5||item.pageType==6||item.pageType==3}">
......@@ -49,7 +46,6 @@
import featureHome from "./featureHome";
import otherJourney from "./otherJourney";
import UpgradedVersionDetails from "./UpgradedVersionDetails";
import travelDays from "./travelDays";
import vEditDiv from "../TravelTemp/VEditDiv";
export default {
......@@ -59,7 +55,6 @@
featureHome,
otherJourney,
UpgradedVersionDetails,
travelDays,
vEditDiv,
},
props: [
......@@ -110,13 +105,6 @@
isDeletePage: false,
pageTemplate: 3,
dataObj: {},
},
{
pageTitle: '行程天数',
pageType: 7,
isDeletePage: false,
pageTemplate: 1,
dataObj: {},
}
]
};
......@@ -272,21 +260,6 @@
}];
newObj.MainDesc = "行程景点描述信息";
}
}
//行程天数
else if (pItem.pageType == 7) {
newObj.SubName = "特色行程天数";
if (tripObj.scenicArray && tripObj.scenicArray.length > 0) {
newObj.MainName = tripObj.scenicArray[0].MainName;
newObj.ImgList = tripObj.scenicArray[0].ImgList;
newObj.MainDesc = tripObj.scenicArray[0].MainDesc;
} else {
newObj.MainName = "行程天数";
newObj.ImgList = [{
url: "http://imgfile.oytour.com/Upload/DMC/20200201061804955.jpg"
}];
newObj.MainDesc = "行程天数描述信息";
}
}
if(pItem.pageType == 4||pItem.pageType == 5||pItem.pageType == 6){
newObj.SubList = [
......
......@@ -116,10 +116,10 @@
this.MasterMapIndex = index?index:0
if(type) this.StencilDrawing = true
else this.StencilDrawing = false
if(this.FeatureData.pageType==3) this.choseType = 2
else if(this.FeatureData.pageType==4) this.choseType = 1
else if(this.FeatureData.pageType==5) this.choseType = 2
else if(this.FeatureData.pageType==6) this.choseType = 3
if(this.FeatureItem.pageType==3) this.choseType = 2
else if(this.FeatureItem.pageType==4) this.choseType = 1
else if(this.FeatureItem.pageType==5) this.choseType = 2
else if(this.FeatureItem.pageType==6) this.choseType = 3
else this.choseType = 0
this.isShowScenicImg = true
},
......
......@@ -79,6 +79,14 @@ export default {
title: '出团通知书下载'
},
},
{
path: '/confirmationOrderDownLoadNew',
name: 'confirmationOrderDownLoadNew',
component: resolve => require(['@/components/confirmationOrderDownLoadNew'], resolve),
meta: {
title: '出团通知书下载新'
},
},
{
path: '/SalesconfirmationOrder', //销售出团通知
name: 'SalesconfirmationOrder',
......@@ -2742,21 +2750,21 @@ export default {
title: '返佣查询'
},
},
{
{
path: '/Returnratio',// 销售=>返佣比例管理
name: 'Returnratio',
component: resolve => require(['@/components/SalesModule/Returnratio'], resolve),
meta: {
title: '返佣比例管理'
},
}, {
}, {
path: '/demandStatistics',// 销售=> 统计
name: 'demandStatistics',
component: resolve => require(['@/components/SalesModule/demandStatistics'], resolve),
meta: {
title: '销售统计'
},
}, {
}, {
path: '/quoTation',//团控=>报价单
name: 'quoTation',
component: resolve => require(['@/components/TravelManager/TravelQuotationCenter/quoTation'], resolve),
......
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