Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SuperMan
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
罗超
SuperMan
Commits
20903ef9
Commit
20903ef9
authored
May 13, 2019
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增下载
parent
b776e03b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1533 additions
and
0 deletions
+1533
-0
SalesconfirmationOrder.vue
src/components/SalesconfirmationOrder.vue
+1525
-0
config.js
src/router/config.js
+8
-0
No files found.
src/components/SalesconfirmationOrder.vue
0 → 100644
View file @
20903ef9
<
style
>
.confirmOrder
{
width
:
950px
;
}
.travelControlTrip
.hangban-info
tr
td
,
.travelControlTrip
.hangban-info
tr
th
{
padding-left
:
0
!important
;
}
</
style
>
<
template
>
<div
class=
"travelControlTrip detail-box"
>
<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.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>
<!-- ToWord(orderMsg.startDate + orderMsg.lineteamName+orderMsg.dayNum+'日游') -->
<!--&&isopOperation HK 注释 可以让销售修改基本信息-->
<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? domainManager().ViittoFileUrl+'/Upload/PictureMaterial/Web/headerImg.jpg':domainManager().ViittoFileUrl+'/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=
"160"
>
起飞机场
</td>
<td
width=
"18"
class=
"gap"
>
</td>
<td
width=
"160"
>
抵达机场
</td>
<td
width=
"18"
class=
"gap"
>
</td>
<td
width=
"140"
>
航空公司
</td>
<td
width=
"90"
>
航班编号
</td>
<td
width=
"18"
class=
"gap"
>
</td>
<td
width=
"100"
>
经停城市
</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>
<span
class=
"num"
>
{{flight.departureTime}}
</span></td>
<td
width=
"160"
><span
class=
"nth-day"
>
{{flight.arriveDate.substring(5)}}
</span>
<span
class=
"num"
>
{{flight.arrivalTime}}
</span></td>
<td
width=
"160"
>
{{flight.departureAirPortName}}
<span
class=
"citycode"
></span></td>
<td
width=
"18"
class=
"gap"
>
</td>
<td
width=
"160"
>
{{flight.arrivalAirPortName}}
<span
class=
"citycode"
></span></td>
<td
width=
"18"
class=
"gap"
>
</td>
<td
width=
"140"
>
{{flight.alName}}
</td>
<td
width=
"110"
>
{{flight.flightNumber}}({{(flight.flightState==1)?"OK":"暂定"}})
</td>
<td
width=
"18"
class=
"gap"
>
</td>
<td
width=
"100"
>
{{flight.stopoverAirPortName}}
</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>
<span
class=
"num"
>
{{flight.departureTime}}
</span></td>
<td
width=
"160"
><span
class=
"nth-day"
>
{{flight.arriveDate.substring(5)}}
</span>
<span
class=
"num"
>
{{flight.arrivalTime}}
</span></td>
<td
width=
"160"
>
{{flight.departureAirPortName}}
<span
class=
"citycode"
></span></td>
<td
width=
"18"
class=
"gap"
>
</td>
<td
width=
"160"
>
{{flight.arrivalAirPortName}}
<span
class=
"citycode"
></span></td>
<td
width=
"18"
class=
"gap"
>
</td>
<td
width=
"140"
>
{{flight.alName}}
</td>
<td
width=
"110"
>
{{flight.flightNumber}}({{(flight.flightState==1)?"OK":"暂定"}})
</td>
<td
width=
"18"
class=
"gap"
>
</td>
<td
width=
"100"
>
{{flight.stopoverAirPortName}}
</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'}"
>
</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'}"
>
</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'}"
>
</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
class=
"trip-box"
>
<div
class=
"timeline"
style=
"z-index:999"
>
<div
class=
"timeline-box"
></div>
<div
v-for=
"(item,index) in dataList.dayList"
:key=
"index"
>
<div
class=
"timeline-item"
>
<div
class=
"left"
>
<span
class=
"big"
style=
" font-size: 20px;"
>
行程
</span>
</div>
<div
class=
"new_right"
>
<span
class=
"medium"
>
<div
v-for=
"(dn,i) in item.dayArray"
:key=
"i"
>
{{dn.childItem.title}}
</div>
</span>
</div>
</div>
<div
v-for=
"(son,i) in item.dayArray"
:key=
"i"
>
<!-- <traffice :tripItem='son' v-if="son.type==1"></traffice> -->
<
template
v-if=
"son.type==1"
>
<div
class=
"timeline-item"
>
<div
class=
"left"
>
<i
class=
"iconfont icon-feiji"
></i>
</div>
<div
class=
"new_right"
>
<span
class=
"time"
v-if=
"son.childItem.timeType==1"
>
上午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==2"
>
下午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==0"
>
全天
</span>
<span
class=
"title"
>
<span
v-if=
"son.type==1"
v-for=
"(dns,o) in son.childItem.subTraffic"
:key=
"o"
>
{{
dns
.
startCityName
}}
<i
v-if=
"dns.arrivalType==1"
class=
"iconfont icon-feiji"
></i>
<i
v-if=
"dns.arrivalType==2"
class=
"iconfont icon-bus"
></i>
<i
v-if=
"dns.arrivalType==3"
class=
"iconfont icon-icon31"
></i>
<i
v-if=
"dns.arrivalType==4"
class=
"iconfont icon-gaotiedongche"
></i>
<span
v-if=
"o+1==son.childItem.subTraffic.length"
>
{{
dns
.
arrivalCityName
}}
</span>
</span>
</span>
<span
class=
"content"
v-html=
"son.childItem.description"
></span>
</div>
</div>
</
template
>
<
template
v-if=
"son.type==2"
>
<div
class=
"timeline-item"
>
<div
class=
"left"
>
<i
class=
"iconfont icon-zuji"
></i>
</div>
<div
class=
"new_right"
>
<span
class=
"time"
v-if=
"son.childItem.timeType==1"
>
上午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==2"
>
下午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==0"
>
全天
</span>
<span
class=
"title"
>
{{
son
.
childItem
.
couponsName
}}
</span>
<span
class=
"playTime"
>
<i
class=
"iconfont icon-shijian"
></i>
游玩时间:
<span
v-if=
"son.childItem.playTimeHour!=null&&son.childItem.playTimeHour!=''"
>
{{
son
.
childItem
.
playTimeHour
+
'小时'
}}
</span><span
v-if=
"son.childItem.playTimeMinutes!=null&&son.childItem.playTimeMinutes!=''"
>
{{
son
.
childItem
.
playTimeMinutes
+
'分钟'
}}
</span></span>
<span
class=
"content"
v-html=
"son.childItem.description"
></span>
<div
class=
"Newimg-list"
v-if=
"son.childItem.imaArray.length"
>
<div
class=
"item"
v-for=
"(img,i) in son.childItem.imaArray"
:key=
"i"
>
<img
:src=
'img.url'
/>
</div>
</div>
</div>
</div>
</
template
>
<
template
v-if=
"son.type==3"
>
<div
class=
"timeline-item"
>
<div
class=
"left"
>
<i
class=
"iconfont icon-jiudian"
></i>
</div>
<div
class=
"new_right"
>
<span
class=
"time"
v-if=
"son.childItem.timeType==1"
>
上午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==2"
>
下午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==0"
>
全天
</span>
<span
class=
"title"
>
{{
son
.
childItem
.
hotelName
+
son
.
childItem
.
hotelProductName
}}
</span>
<span
class=
"content"
v-html=
"son.childItem.description"
></span>
<div
class=
"Newimg-list"
v-if=
"son.childItem.imaArray.length"
>
<div
class=
"item"
v-for=
"(img,i) in son.childItem.imaArray"
:key=
"i"
>
<img
:src=
'img.url'
/>
</div>
</div>
</div>
</div>
</
template
>
<
template
v-if=
"son.type==4"
>
<div
class=
"timeline-item"
>
<div
class=
"left"
>
<i
class=
"iconfont icon-yongcan"
></i>
</div>
<div
class=
"new_right"
>
<span
class=
"time"
v-if=
"son.childItem.timeType==1"
>
上午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==2"
>
下午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==0"
>
全天
</span>
<span
class=
"title"
>
{{
son
.
childItem
.
dinnerName
+
son
.
childItem
.
mealName
}}
</span>
<span
class=
"playTime"
>
<i
class=
"iconfont icon-shijian"
></i>
用餐时长:
<span
v-if=
"son.childItem.playTimeHour!=null&&son.childItem.playTimeHour!=''"
>
{{
son
.
childItem
.
playTimeHour
+
'小时'
}}
</span><span
v-if=
"son.childItem.playTimeMinutes!=null&&son.childItem.playTimeMinutes!=''"
>
{{
son
.
childItem
.
playTimeMinutes
+
'分钟'
}}
</span></span>
<span
class=
"content"
v-html=
"son.childItem.description"
></span>
<div
class=
"Newimg-list"
v-if=
"son.childItem.imaArray.length"
>
<div
class=
"item"
v-for=
"(img,i) in son.childItem.imaArray"
:key=
"i"
>
<img
:src=
'img.url'
/>
</div>
</div>
</div>
</div>
</
template
>
<
template
v-if=
"son.type==5"
>
<div
class=
"timeline-item"
>
<div
class=
"left"
>
<i
class=
"iconfont icon-huodong"
></i>
</div>
<div
class=
"new_right"
>
<span
class=
"time"
v-if=
"son.childItem.timeType==1"
>
上午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==2"
>
下午
</span>
<span
class=
"time"
v-if=
"son.childItem.timeType==0"
>
全天
</span>
<span
class=
"content"
v-html=
"son.childItem.description"
></span>
</div>
</div>
</
template
>
<
template
v-if=
"son.type==6"
>
<div
class=
"timeline-item"
>
<div
class=
"left"
>
<i
class=
"iconfont icon-tishi"
></i>
</div>
<div
class=
"new_right"
>
<span
class=
"content"
v-html=
"son.childItem.description"
></span>
</div>
</div>
</
template
>
<!-- <scenic v-if="son.type==2" :tripItem='son'></scenic> -->
<!-- <hotel v-if="son.type==3" :tripItem='son'></hotel> -->
<!-- <restaurant v-if="son.type==4" :tripItem='son'></restaurant> -->
<!-- <activity v-if="son.type==5" :tripItem='son'></activity> -->
<!-- <tips v-if="son.type==6" :tripItem='son'></tips> -->
</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=
"domainManager().ViittoFileUrl+'/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>
<button
class=
"hollowFixedBtn"
@
click=
"editMsgShow = false"
>
{{$t('pub.cancelBtn')}}
</button>
<button
class=
"normalBtn"
type=
"primary"
@
click=
"backForm()"
>
还原
</button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
html2Canvas
from
'html2canvas'
import
oneday
from
'./commonPage/oneday'
import
twoday
from
'./commonPage/twoday'
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
{
setTimeout
}
from
'timers'
;
import
{
types
}
from
'util'
;
export
default
{
data
()
{
return
{
//下拉框默认值
defaultSelectValue
:
0
,
//航空公司下拉
airLineList
:
[],
//orderId和是否op操作控制按钮显示
orderId
:
0
,
isopOperation
:
''
,
editForm
:
{
},
//团源基础数据
SourceData
:
{
orderId
:
0
,
leaderInfo
:
''
,
gatheringTime
:
''
,
airportService
:
''
,
gatherIdent
:
''
,
emergencyContact
:
''
,
gatheringAddress
:
''
,
flightInfoJson
:
''
,
travelOrderFlightList
:
[]
},
editMsgShow
:
false
,
pdfLoading
:
true
,
vshowA
:
this
.
$route
.
query
.
vshowA
===
undefined
?
true
:
this
.
$route
.
query
.
vshowA
===
'true'
,
vshowB
:
this
.
$route
.
query
.
vshowB
===
undefined
?
true
:
this
.
$route
.
query
.
vshowB
===
'true'
,
vshowC
:
this
.
$route
.
query
.
vshowC
===
undefined
?
true
:
this
.
$route
.
query
.
vshowC
===
'true'
,
vshowD
:
this
.
$route
.
query
.
vshowD
===
undefined
?
true
:
this
.
$route
.
query
.
vshowD
===
'true'
,
vshowE
:
this
.
$route
.
query
.
vshowE
===
undefined
?
true
:
this
.
$route
.
query
.
vshowE
===
'true'
,
vshowF
:
this
.
$route
.
query
.
vshowF
===
undefined
?
true
:
this
.
$route
.
query
.
vshowF
===
'true'
,
vshowG
:
this
.
$route
.
query
.
vshowG
===
undefined
?
true
:
this
.
$route
.
query
.
vshowG
===
'true'
,
vshowH
:
this
.
$route
.
query
.
vshowH
===
undefined
?
true
:
this
.
$route
.
query
.
vshowH
===
'true'
,
vshowI
:
this
.
$route
.
query
.
vshowI
===
undefined
?
true
:
this
.
$route
.
query
.
vshowI
===
'true'
,
vshowJ
:
this
.
$route
.
query
.
vshowJ
===
undefined
?
true
:
this
.
$route
.
query
.
vshowJ
===
'true'
,
vshowK
:
this
.
$route
.
query
.
vshowK
===
undefined
?
true
:
this
.
$route
.
query
.
vshowK
===
'true'
,
vshowL
:
this
.
$route
.
query
.
vshowL
===
undefined
?
true
:
this
.
$route
.
query
.
vshowL
===
'true'
,
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'
,
list
:
[],
tripList
:
[],
priceList
:
[],
feature
:
{},
dataList
:
{},
showType
:
-
1
,
loadNone
:
false
,
orderMsg
:
{},
//订单不同数据
orderTripdiff
:
{},
title
:
''
,
isDirect
:
1
,
//是否是直采 0:否,1:是
}
},
mounted
()
{
this
.
orderId
=
this
.
$route
.
query
.
orderId
;
this
.
isopOperation
=
this
.
$route
.
query
.
isopOperation
;
this
.
init
();
this
.
initAirlines
()
setTimeout
(()
=>
{
this
.
appendParent
()
},
2000
)
},
methods
:
{
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
.
data
if
(
msg
.
ResultCode
===
1
&&
_this
.
vshowC
)
{
// 已经存在文件 直接调用下载
_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
}
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"
);
$
.
ajax
({
url
:
UploadUrl
+
'/Upload/UploadBase64?fileType=1&fileLimit=5&&filePath=Feature/'
+
tcid
,
type
:
"POST"
,
data
:
{
myfile
:
image
.
src
,
fileIndex
:
index
},
datatype
:
"jsonP"
,
success
:
function
(
data
)
{
},
error
:
function
()
{
}
});
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
}
else
{
this
.
ToWord
(
this
.
orderMsg
.
startDate
+
this
.
orderMsg
.
lineteamName
+
this
.
orderMsg
.
dayNum
+
'日游'
,
isPc
)
}
},
//保存基础数据
submitForm
:
function
()
{
this
.
editForm
.
travelOrderFlightList
.
forEach
(
x
=>
{
x
.
airportNameList
=
[];
});
this
.
editForm
.
FlightInfoJson
=
JSON
.
stringify
(
this
.
editForm
.
travelOrderFlightList
);
this
.
editForm
.
travelOrderFlightList
=
[];
this
.
apipost
(
'sellorder_post_SetOrderTripDiff'
,
this
.
editForm
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
editMsgShow
=
false
;
this
.
init
();
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
)
},
//还原表单
backForm
()
{
var
oldData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
SourceData
));
this
.
editForm
.
orderId
=
this
.
$route
.
query
.
orderId
;
this
.
editForm
.
leaderInfo
=
oldData
.
leaderInfo
;
this
.
editForm
.
gatheringTime
=
oldData
.
gatheringTime
;
this
.
editForm
.
airportService
=
oldData
.
airportService
;
this
.
editForm
.
gatherIdent
=
oldData
.
gatherIdent
;
this
.
editForm
.
emergencyContact
=
oldData
.
emergencyContact
;
this
.
editForm
.
gatheringAddress
=
oldData
.
gatheringAddress
;
this
.
editForm
.
flightInfoJson
=
""
;
this
.
editForm
.
travelOrderFlightList
=
[];
this
.
editForm
.
travelOrderFlightList
=
oldData
.
travelOrderFlightList
;
this
.
editForm
.
travelOrderFlightList
.
forEach
((
item
)
=>
{
this
.
airLineSelectChange
(
item
.
airLineID
,
item
);
});
},
removePriceFlight
:
function
(
index
,
item
,
type
)
{
var
that
=
this
that
.
Confirm
(
"删除航班后将不能恢复?"
,
function
()
{
if
(
index
>
-
1
)
{
that
.
editForm
.
travelOrderFlightList
.
splice
(
index
,
1
)
}
});
},
airLineSelectChange
:
function
(
airLineId
,
item
,
type
)
{
item
.
airLineID
=
airLineId
this
.
airLineList
.
forEach
(
x
=>
{
if
(
x
.
AirLineId
==
airLineId
)
{
item
.
alName
=
x
.
AlName
}
});
if
(
type
==
1
)
{
item
.
flightID
=
0
;
item
.
flightNumber
=
""
;
item
.
departureAirPortName
=
""
;
item
.
departureTime
=
""
;
item
.
arrivalAirPortName
=
""
;
item
.
arrivalTime
=
""
;
}
let
msg
=
{
airlineID
:
airLineId
}
this
.
apipost
(
'flight_post_GetAirportNameList'
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
item
.
airportNameList
=
res
.
data
.
data
;
}
},
err
=>
{}
)
this
.
$forceUpdate
();
},
flightSelectChange
(
flightId
,
item
)
{
item
.
airportNameList
.
forEach
(
x
=>
{
if
(
x
.
ID
==
flightId
)
{
item
.
flightNumber
=
x
.
Flight_number
.
split
(
'/'
)[
0
];
item
.
departureAirPortName
=
x
.
dName
;
item
.
departureTime
=
x
.
DepartureTime
;
item
.
arrivalAirPortName
=
x
.
aName
;
item
.
arrivalTime
=
x
.
ArrivalTime
;
}
});
},
//初始化航空公司下拉
initAirlines
:
function
()
{
this
.
apipost
(
'airline_post_GetList'
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
airLineList
=
res
.
data
.
data
}
},
err
=>
{}
)
},
addFlight
:
function
()
{
let
obj
=
{
airLineID
:
0
,
flightID
:
0
,
alName
:
''
,
flightNumber
:
''
,
startDate
:
''
,
departureTime
:
''
,
departureAirPortName
:
''
,
arrivalTime
:
''
,
arrivalAirPortName
:
''
,
stopoverAirPortName
:
''
,
flightState
:
0
,
arriveDate
:
''
,
airportNameList
:
[],
}
this
.
editForm
.
travelOrderFlightList
.
push
(
obj
)
},
setDate
:
function
(
j
)
{
let
stDate
=
""
;
if
(
this
.
priceList
&&
this
.
priceList
.
length
>
0
)
{
stDate
=
this
.
priceList
[
0
].
startDate
;
}
if
(
j
===
0
)
{
return
stDate
}
else
{
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
()
{
var
lables
=
document
.
querySelectorAll
(
'#pdf_2 .zidingyi img'
);
if
(
lables
!=
null
&&
lables
.
length
>
0
)
{
let
parent
=
lables
[
0
].
parentElement
;
lables
.
forEach
(
function
(
lable
,
index
)
{
var
ele
=
document
.
createElement
(
'div'
)
ele
.
className
=
'u-box'
;
ele
.
appendChild
(
lable
)
parent
.
appendChild
(
ele
)
});
}
},
// 生成pdf
toPDF
:
function
(
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/GetWebHtmlTwo'
,
data
:
{
"msg"
:
pageData
,
isSale
:
1
}
}).
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
=>
{
})
},
ToWord
:
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
,
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
,
//isPc是否PC下载
isPc
:
isPc
,
//模板参数
templateId
:
this
.
showType
,
};
this
.
GetLocalFile
(
"DownLoadTripWord"
,
msg
,
title
+
".doc"
,
res
=>
{
this
.
pdfLoading
=
false
});
},
DateDiff
(
sDate1
,
sDate2
)
{
//sDate1和sDate2是2002-12-18格式
var
aDate
,
oDate1
,
oDate2
,
iDays
aDate
=
sDate1
.
split
(
"-"
)
oDate1
=
new
Date
(
aDate
[
1
]
+
'-'
+
aDate
[
2
]
+
'-'
+
aDate
[
0
])
//转换为12-18-2002格式
aDate
=
sDate2
.
split
(
"-"
)
oDate2
=
new
Date
(
aDate
[
1
]
+
'-'
+
aDate
[
2
]
+
'-'
+
aDate
[
0
])
iDays
=
parseInt
(
Math
.
abs
(
oDate1
-
oDate2
)
/
1000
/
60
/
60
/
24
)
//把相差的毫秒数转换为天数
return
iDays
},
init
()
{
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
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
(
res
.
data
.
data
);
console
.
log
(
data
,
'dataaaa'
);
this
.
orderTripdiff
=
data
.
orderTripdiff
;
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
;
});
}
}
}
//HK新加
this
.
SourceData
.
Id
=
0
;
if
(
this
.
$route
.
query
.
orderId
>
0
)
{
this
.
SourceData
.
orderId
=
this
.
$route
.
query
.
orderId
;
var
str
=
""
;
if
(
this
.
orderMsg
.
leaderName
)
{
str
=
this
.
orderMsg
.
leaderName
;
}
if
(
this
.
orderMsg
.
leaderMobile
)
{
str
+=
"/"
+
this
.
orderMsg
.
leaderMobile
;
}
this
.
SourceData
.
leaderInfo
=
str
;
this
.
SourceData
.
gatheringTime
=
this
.
orderMsg
.
gatheringTime
;
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
;
if
(
data
.
priceList
!=
null
&&
data
.
priceList
.
length
>
0
)
{
var
array
=
JSON
.
parse
(
JSON
.
stringify
(
data
.
priceList
[
0
].
priceFlight
));
this
.
SourceData
.
travelOrderFlightList
=
[];
array
.
forEach
(
fItem
=>
{
this
.
SourceData
.
travelOrderFlightList
.
push
({
airLineID
:
fItem
.
airLineID
,
flightID
:
fItem
.
flightID
,
alName
:
fItem
.
alName
,
flightNumber
:
fItem
.
flightNumber
,
startDate
:
fItem
.
startDate
,
departureTime
:
fItem
.
departureTime
,
departureAirPortName
:
fItem
.
departureAirPortName
,
arrivalTime
:
fItem
.
arrivalTime
,
arrivalAirPortName
:
fItem
.
arrivalAirPortName
,
stopoverAirPortName
:
fItem
.
stopoverAirPortName
,
flightState
:
fItem
.
flightState
,
arriveDate
:
fItem
.
arriveDate
,
airportNameList
:
[],
});
});
}
if
(
this
.
orderTripdiff
)
{
this
.
editForm
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
orderTripdiff
));
if
(
this
.
orderTripdiff
.
flightInfoJson
)
{
this
.
editForm
.
travelOrderFlightList
=
JSON
.
parse
(
this
.
orderTripdiff
.
flightInfoJson
);
}
}
else
{
this
.
editForm
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
SourceData
));
}
this
.
editForm
.
travelOrderFlightList
.
forEach
(
fItem
=>
{
fItem
.
airportNameList
=
[];
this
.
airLineSelectChange
(
fItem
.
airLineID
,
fItem
);
});
}
this
.
title
=
this
.
orderMsg
.
startDate
+
this
.
orderMsg
.
lineteamName
+
this
.
orderMsg
.
dayNum
+
'日游'
document
.
title
=
this
.
title
;
//初始化行程
this
.
initTrip
(
res
,
data
);
}
this
.
$nextTick
(
function
()
{
this
.
pdfLoading
=
false
;
let
imgs
=
document
.
getElementsByTagName
(
'img'
);
for
(
let
i
=
0
;
i
<
imgs
.
length
;
i
++
)
{
document
.
getElementsByTagName
(
'img'
)[
i
].
removeAttribute
(
'crossOrigin'
)
}
// let imgList = document.getElementById("gernalCanvas").getElementsByTagName("img")
// for (let i = 0; i
<
imgList
.
length
;
i
++
)
{
// if (imgList[i].src.indexOf('http') !== -1 && imgList[i].src.indexOf('icon') === -1 && imgList[i].src.indexOf('_bg_') === -1 && imgList[i].src.indexOf('_top_') === -1 && imgList[i].src.indexOf('_title') === -1) {
// imgList[i].src = this.compressImg(imgList[i].src, "filt", imgList[i].clientWidth, '')
// }
// }
})
},
err
=>
{})
},
//初始化行程
initTrip
(
res
,
data
)
{
this
.
tripList
=
res
.
data
.
data
.
dayList
;
this
.
feature
=
res
.
data
.
data
.
feature
this
.
showType
=
this
.
feature
.
featureType
;
this
.
isDirect
=
res
.
data
.
data
.
isDirect
;
if
(
data
.
priceList
.
length
>
0
)
{
data
.
priceList
[
0
].
priceFlight
.
forEach
((
x
,
i
)
=>
{
if
(
i
==
0
)
{
x
.
dayNum
=
1
;
if
(
x
.
departureTime
<
x
.
arrivalTime
)
{
x
.
daodaDay
=
1
;
}
else
{
x
.
daodaDay
=
2
;
}
}
else
{
x
.
dayNum
=
this
.
DateDiff
(
data
.
priceList
[
0
].
priceFlight
[
0
].
startDate
,
x
.
startDate
);
if
(
x
.
departureTime
<
x
.
arrivalTime
)
{
x
.
daodaDay
=
x
.
dayNum
;
}
else
{
x
.
daodaDay
=
x
.
dayNum
+
1
;
}
}
})
}
this
.
priceList
=
data
.
priceList
;
this
.
dataList
=
data
;
this
.
tripList
.
forEach
((
x
,
j
)
=>
{
let
useDinnerTypeBy
=
''
let
jin
=
[],
jiu
=
[],
jiu2
=
[],
jiao
=
[],
dadian
=
[],
tips
=
[],
activy
=
[],
can
=
{
breakfirst
:
'敬请自理'
,
lanuch
:
'敬请自理'
,
dinner
:
'敬请自理'
}
x
.
dayArray
.
forEach
((
y
,
index
)
=>
{
if
(
y
.
type
==
7
&&
y
.
childItem
.
title
!=
''
)
{
let
obj
=
{
title
:
y
.
childItem
.
title
,
content
:
y
.
childItem
.
description
,
img
:
y
.
childItem
.
imaArray
&&
y
.
childItem
.
imaArray
.
length
>
0
?
y
.
childItem
.
imaArray
[
0
]
.
url
:
''
,
ticketName
:
''
,
playTimeHour
:
null
,
playTimeMinutes
:
null
,
url
:
''
}
dadian
.
push
(
obj
)
}
else
if
(
y
.
type
==
1
&&
y
.
childItem
.
subTraffic
.
length
>
0
)
{
let
title
=
''
y
.
childItem
.
subTraffic
.
forEach
((
z
,
i
)
=>
{
title
+=
z
.
startCityName
if
(
z
.
arrivalType
==
1
)
{
title
+=
'<i class="iconfont icon-feiji"></i>'
}
else
if
(
z
.
arrivalType
==
2
)
{
title
+=
'<i class="iconfont icon-bus"></i>'
}
else
if
(
z
.
arrivalType
==
3
)
{
title
+=
'<i class="iconfont icon-icon31"></i>'
}
else
{
title
+=
'<i class="iconfont icon-gaotiedongche"></i>'
}
if
(
i
+
1
==
y
.
childItem
.
subTraffic
.
length
)
{
title
+=
z
.
arrivalCityName
}
})
let
obj
=
{
title
:
title
,
content
:
y
.
childItem
.
description
,
img
:
''
,
ticketName
:
''
,
playTimeHour
:
null
,
playTimeMinutes
:
null
,
url
:
''
}
jiao
.
push
(
obj
)
}
else
if
(
y
.
type
==
2
&&
y
.
childItem
.
couponsName
!=
''
&&
y
.
childItem
.
imaArray
.
length
>
0
)
{
let
obj
=
{
title
:
y
.
childItem
.
couponsName
,
content
:
y
.
childItem
.
description
,
img
:
y
.
childItem
.
imaArray
[
0
].
url
,
ticketName
:
y
.
childItem
.
couponsTicketName
,
playTimeHour
:
y
.
childItem
.
playTimeHour
,
playTimeMinutes
:
y
.
childItem
.
playTimeMinutes
,
scenicJson
:
y
.
childItem
.
scenicJson
,
url
:
y
.
childItem
.
url
}
jin
.
push
(
obj
)
}
else
if
(
y
.
type
==
3
&&
y
.
childItem
.
hotelName
!=
''
&&
y
.
childItem
.
imaArray
.
length
>
0
)
{
let
obj
=
{
title
:
y
.
childItem
.
hotelName
,
content
:
y
.
childItem
.
description
,
img
:
y
.
childItem
.
imaArray
[
0
].
url
,
ticketName
:
''
,
playTimeHour
:
null
,
playTimeMinutes
:
null
,
url
:
y
.
childItem
.
url
}
jiu
.
push
(
obj
)
}
else
if
(
y
.
type
==
4
)
{
if
(
y
.
childItem
.
useDinnerType
==
"1"
)
{
can
.
breakfirst
=
y
.
childItem
.
dinnerName
}
else
if
(
y
.
childItem
.
useDinnerType
==
"2"
)
{
can
.
lanuch
=
y
.
childItem
.
dinnerName
}
else
if
(
y
.
childItem
.
useDinnerType
==
"3"
)
{
can
.
dinner
=
y
.
childItem
.
dinnerName
}
}
else
if
(
y
.
type
==
5
)
{
let
obj
=
{
title
:
'自由活动'
,
content
:
y
.
childItem
.
description
,
img
:
''
,
ticketName
:
''
,
playTimeHour
:
null
,
playTimeMinutes
:
null
,
url
:
''
}
activy
.
push
(
obj
)
}
else
if
(
y
.
type
==
6
)
{
let
obj
=
{
title
:
y
.
childItem
.
title
,
content
:
y
.
childItem
.
description
,
img
:
''
,
ticketName
:
''
,
playTimeHour
:
null
,
playTimeMinutes
:
null
,
url
:
''
}
tips
.
push
(
obj
)
}
if
(
y
.
type
==
3
)
{
jiu2
.
push
({
name
:
y
.
childItem
.
hotelName
,
url
:
y
.
childItem
.
url
});
useDinnerTypeBy
=
y
.
childItem
.
useDinnerType
}
})
if
(
can
.
breakfirst
==
'敬请自理'
&&
useDinnerTypeBy
.
indexOf
(
'1'
)
!=
-
1
)
{
can
.
breakfirst
=
'酒店内享用早餐'
}
else
if
(
can
.
breakfirst
==
''
)
{
can
.
breakfirst
=
'方便游玩敬请自理'
}
if
(
can
.
lanuch
==
'敬请自理'
&&
useDinnerTypeBy
.
indexOf
(
'2'
)
!=
-
1
)
{
can
.
lanuch
=
'酒店自助'
}
else
if
(
can
.
lanuch
==
''
)
{
can
.
lanuch
=
'方便游玩敬请自理'
}
if
(
can
.
dinner
==
'敬请自理'
&&
useDinnerTypeBy
.
indexOf
(
'3'
)
!=
-
1
)
{
can
.
dinner
=
'酒店自助'
}
else
if
(
can
.
dinner
==
''
)
{
can
.
dinner
=
'方便游玩敬请自理'
}
x
.
can
=
can
let
details
=
[];
x
.
tips
=
tips
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
)
{
if
(
j
==
this
.
tripList
.
length
-
1
)
{
let
obj
=
{
title
:
'温暖的家'
,
content
:
'感谢您参加本次行程,期待下次与您相遇'
,
img
:
''
}
details
.
push
(
obj
)
}
else
{
details
=
jiao
}
}
else
if
(
activy
.
length
>
0
)
{
details
=
activy
}
x
.
title
=
dadian
.
length
>
0
&&
dadian
[
0
].
title
&&
dadian
[
0
].
title
!=
''
?
dadian
[
0
].
title
:
(
jiao
.
length
>
0
?
jiao
[
0
].
title
:
'集合出发'
)
x
.
details
=
details
if
(
x
.
details
.
length
==
0
)
{
if
(
j
==
0
)
{
let
obj
=
{
title
:
'集合出发'
,
content
:
'向着远方的目标出发起飞'
,
img
:
''
,
ticketName
:
''
,
playTimeHour
:
null
,
playTimeMinutes
:
null
}
details
.
push
(
obj
)
}
else
if
(
j
==
this
.
tripList
.
length
-
1
)
{
let
obj
=
{
title
:
'温暖的家'
,
content
:
'感谢您参加本次行程,期待下次与您相遇'
,
img
:
''
,
ticketName
:
''
,
playTimeHour
:
null
,
playTimeMinutes
:
null
}
details
.
push
(
obj
)
}
}
else
{
if
(
x
.
title
==
'集合出发'
)
{
x
.
details
.
forEach
(
xc
=>
{
if
(
xc
.
title
!==
undefined
)
x
.
title
=
xc
.
title
+
'~'
})
if
(
x
.
title
==
'集合出发'
)
{
if
(
j
>
0
&&
j
<
tripList
.
length
-
1
)
x
.
title
=
'自由活动'
}
else
{
x
.
title
=
x
.
title
.
substring
(
0
,
x
.
title
.
length
-
1
)
}
}
}
x
.
islast
=
(
j
+
1
)
==
this
.
tripList
.
length
this
.
$set
(
this
.
tripList
,
j
,
x
)
x
.
dateTime
=
this
.
setDate
(
j
);
})
},
//上移下移(IsUp:0上移,1下移)
MoveItem
(
item
,
subIndex
,
IsUp
)
{
var
currentItem
=
this
.
editForm
.
travelOrderFlightList
[
subIndex
];
//上移
if
(
IsUp
==
0
)
{
if
(
subIndex
>
0
)
{
var
upItem
=
this
.
editForm
.
travelOrderFlightList
[
subIndex
-
1
];
this
.
$set
(
this
.
editForm
.
travelOrderFlightList
,
subIndex
-
1
,
currentItem
);
this
.
$set
(
this
.
editForm
.
travelOrderFlightList
,
subIndex
,
upItem
);
this
.
$forceUpdate
();
}
}
else
{
//下移
if
(
subIndex
!=
this
.
editForm
.
travelOrderFlightList
.
length
-
1
)
{
var
downItem
=
this
.
editForm
.
travelOrderFlightList
[
subIndex
+
1
];
this
.
$set
(
this
.
editForm
.
travelOrderFlightList
,
subIndex
+
1
,
currentItem
);
this
.
$set
(
this
.
editForm
.
travelOrderFlightList
,
subIndex
,
downItem
);
this
.
$forceUpdate
();
}
}
},
},
components
:
{
oneday
,
twoday
,
threeday
,
fourday
,
fiveday
,
},
}
</
script
>
<
style
>
@import
url('../assets/css/tripIndex.css')
;
@import
url('../assets/css/salefeture2.css')
;
.edit_form_box
{
display
:
flex
;
justify-content
:
space-around
;
}
.edit_form_box_tit
{
color
:
#000000
;
text-align
:
left
;
margin-top
:
0
;
border-left
:
2px
solid
#e95252
;
padding-left
:
25px
;
}
.TravelFlightList
{
width
:
100%
;
background-color
:
#fff
;
}
.TravelFlightList
table
{
width
:
100%
;
}
.TFflightName
{
padding
:
3px
5px
;
display
:
inline-block
;
background-color
:
#ff9c00
;
color
:
#fff
;
border-radius
:
4px
;
margin-left
:
10px
;
}
.TFTable
.el-button.is-circle
{
padding
:
5px
;
}
.TFTable
.el-form-item
{
margin
:
10px
;
}
.TFTable
i
{
font-size
:
14px
;
}
.TFTable
.el-input--prefix
.el-input__inner
{
padding-right
:
0
;
}
.TFAddFlight
{
width
:
100%
;
height
:
40px
;
text-align
:
center
;
line-height
:
40px
;
color
:
#333
;
margin-top
:
5px
;
background-color
:
#f1f1f1
;
font-size
:
12px
;
border
:
1px
dashed
#dcdcdc
;
cursor
:
pointer
;
}
.w110
{
width
:
110px
!important
;
}
.w120
{
width
:
120px
!important
;
}
.normalBtn
{
color
:
#fff
;
padding
:
0
15px
;
height
:
30px
;
background
:
#E95252
;
border
:
1px
solid
#E95252
;
cursor
:
pointer
;
border-radius
:
15px
;
margin-left
:
10px
;
}
.hollowFixedBtn
{
background
:
#fff
;
color
:
#E95252
;
padding
:
0
15px
;
height
:
30px
;
border
:
1px
solid
#E95252
;
cursor
:
pointer
;
border-radius
:
15px
;
margin-left
:
10px
;
}
@media
print
{
html
,
sbody
{
background
:
none
!important
;
}
.travelControlTrip
{
margin
:
0px
!important
;
padding
:
0px
!important
;
}
.travelControlTripBtn
{
display
:
none
!important
;
}
.travelControlTripLayer
{
display
:
none
!important
;
}
#pdfNode
{
margin
:
0px
!important
;
}
.trip-block
{
border
:
none
!important
;
}
@page
{
margin
:
6.5mm
;
}
}
</
style
>
src/router/config.js
View file @
20903ef9
...
...
@@ -67,6 +67,14 @@ export default {
title
:
'出团通知书下载'
},
},
{
path
:
'/SalesconfirmationOrder'
,
//销售出团通知
name
:
'SalesconfirmationOrder'
,
component
:
resolve
=>
require
([
'@/components/SalesconfirmationOrder'
],
resolve
),
meta
:
{
title
:
'销售出团通知书下载'
},
},
{
path
:
'/TravelControlTrip'
,
name
:
'TravelControlTrip'
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment