Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
jz_Travel
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
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
zhengke
jz_Travel
Commits
ac0207c1
Commit
ac0207c1
authored
Jul 09, 2025
by
youjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
0f3653fa
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
461 additions
and
74 deletions
+461
-74
jz_LineDetail.vue
pages/jiuzhai/jz_LineDetail.vue
+1
-1
index.vue
pages/teamLeader/index.vue
+2
-2
itineraryDetails.vue
pages/teamLeader/itineraryDetails.vue
+444
-56
itineraryInformation.vue
pages/teamLeader/itineraryInformation.vue
+11
-12
list.vue
pages/teamLeader/list.vue
+3
-3
No files found.
pages/jiuzhai/jz_LineDetail.vue
View file @
ac0207c1
...
...
@@ -3,7 +3,7 @@
<scroll-view
scroll-y=
"true"
style=
"height: 1px; flex: 1; box-sizing: border-box"
@
scroll=
"scroll"
>
<view
class=
"jz_TopImg"
>
<view
class=
"media"
:style=
"
{ opacity: 100 - boxOption + '%' }">
<u-swiper
:list=
"dataList.tempImgCover"
:effect3d=
"false"
:height=
"535"
:interval=
"5000"
:border-radius=
"0"
@
click=
"openPicture"
<u-swiper
:list=
"dataList.tempImgCover"
:effect3d=
"false"
:height=
"535"
:interval=
"5000"
:border-radius=
"0"
@
click=
"openPicture"
name=
"Url"
></u-swiper>
<view
class=
"media-info"
>
<view
style=
"display: flex; align-items: center"
>
...
...
pages/teamLeader/index.vue
View file @
ac0207c1
...
...
@@ -284,10 +284,10 @@ export default {
}
},
onLoad
(
option
){
if
(
option
.
TCIDs
)
this
.
msg
.
TCIDs
=
option
.
TCIDs
if
(
option
.
datas
){
const
datas
=
JSON
.
parse
(
decodeURIComponent
(
option
.
datas
));
this
.
msg
.
TCIDs
=
datas
.
TCIDs
this
.
pageTitle
=
`
${
datas
.
LineName
}
(
${
datas
.
TCIDs
}
)`
this
.
pageTitle
=
`
${
datas
.
LineName
}
(
${
this
.
msg
.
TCIDs
}
)`
}
this
.
b2b_user_info
=
uni
.
getStorageSync
(
'b2b_user'
)
this
.
init
()
...
...
pages/teamLeader/itineraryDetails.vue
View file @
ac0207c1
...
...
@@ -20,19 +20,18 @@
.itiner-title
{
line-height
:
45px
!
important
;
font-size
:
16px
;
text-align
:
center
;
position
:
fixed
;
left
:
0
;
top
:
0
;
width
:
100%
;
color
:
#111
;
box-sizing
:
content-box
;
z-index
:
5
;
display
:
flex
;
align-items
:
center
;
background-color
:
#f6f6f6
;
background-color
:
#0072FF
;
padding-left
:
6rpx
;
}
.itiner-titles
{
color
:
#fff
;
}
.bjLine
{
background
:
#F5F5F5
;
height
:
30rpx
;
...
...
@@ -65,6 +64,9 @@
.itiner-title-c
{
padding
:
25rpx
20rpx
;
}
.itiner-title-c.itiner-title-c-top
{
padding
:
0rpx
20rpx
;
}
.itiner-title-c.active
{
position
:
relative
;
color
:
#327FDE
;
...
...
@@ -84,6 +86,28 @@
border-radius
:
10rpx
;
padding
:
0rpx
20rpx
;
}
.media
{
position
:
relative
;
}
.detailsType
{
position
:
absolute
;
left
:
20rpx
;
bottom
:
10rpx
;
background
:
#0130B0
;
color
:
#fff
;
border-radius
:
25rpx
;
padding
:
3rpx
20rpx
7rpx
20rpx
;
z-index
:
2
;
}
.richText
{
white-space
:
pre-wrap
;
}
.name-ali
{
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
margin-right
:
200rpx
;
}
</
style
>
<
template
>
<scroll-view
ref=
"scrollView"
scroll-y=
"true"
...
...
@@ -93,12 +117,12 @@
<view
class=
"media"
:style=
"
{ opacity: 100 - boxOption + '%' }"
@click="openPicture">
<u-swiper
:list=
"
imgsList
"
:list=
"
dataList.tempImgCover
"
:effect3d=
"false"
:height=
"545"
:interval=
"5000"
:border-radius=
"0"
name=
"
u
rl"
name=
"
U
rl"
mode=
"number"
indicatorPos=
"bottomRight"
>
</u-swiper>
...
...
@@ -108,102 +132,149 @@
<u-icon
class=
"backIcon"
name=
"arrow-left"
size=
"32"
color=
"#FFF"
></u-icon>
</view>
</view>
<view
@
click=
"goback"
:style=
"[titleStyle,
{ opacity: '100% !important' }]"
<
!--
<
view
@
click=
"goback"
:style=
"[titleStyle,
{ opacity: '100% !important' }]"
style="position: fixed; top: 0; right: 200rpx; padding-right: 6rpx">
<view
class=
"backBox text-center"
>
<img
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638762515984923148.png"
/>
</view>
</view>
</view>
-->
<view
class=
"detailsType fz24"
>
{{
dataList
.
teamType
==
0
?
'跟团游'
:
dataList
.
teamType
==
1
?
'小包团'
:
'一日游'
}}
</view>
</view>
<view
class=
"itiner-title"
:style=
"[titleStyle]"
>
<view
@
click=
"goback"
>
<u-icon
name=
"arrow-left"
size=
"38"
></u-icon>
<view
class=
"itiner-titles row items-center text-center"
>
<view
@
click=
"goback"
>
<u-icon
name=
"arrow-left"
size=
"38"
></u-icon>
</view>
<view
style=
"flex: 1; margin-left: 30rpx; text-align: left"
class=
"name-ali"
>
{{
dataList
.
title
?
dataList
.
title
:
''
}}
</view>
</view>
<view
style=
"flex: 1; margin-left: 30rpx; text-align: left"
class=
"name-ali"
>
名称
<view
class=
"PX30 itiner-titleBox bgFFF row items-center justify-between"
>
<view
class=
"itiner-title-c itiner-title-c-top fz30"
:class=
"[current==item.ID?'active':'']"
v-for=
"(item,index) in titlesList"
:key=
"index"
@
click=
"goTop(item)"
>
{{
item
.
Name
}}
</view>
</view>
</view>
<view
class=
"itiner-content"
>
<view
class=
"PX30 PB20"
>
<view
class=
"PT25 PB30 fz32 itiner-c-title"
>
名称
{{
dataList
.
title
?
dataList
.
title
:
''
}}
</view>
<view
class=
"row justify-between items-center"
>
<view
class=
"row items-center"
>
<view
class=
"row items-center"
><view
class=
"fz28 color9C9C9C"
>
同业价:
</view>
<text
class=
"fontBold fz38 colorF99710"
>
0
</text><text
class=
"fz24 ML10"
>
/ 人
</text></view>
<view
class=
"row items-center ML30"
><view
class=
"fz28 color9C9C9C"
>
统一售价:
</view>
<text
class=
"fontBold fz38 colorF99710"
>
0
</text><text
class=
"fz24 ML10"
>
/ 人
</text></view>
<view
class=
"row items-center"
><view
class=
"fz28 color9C9C9C"
>
同业价:
</view>
<text
class=
"fontBold fz38 colorF99710"
>
{{
priceList
&&
priceList
.
length
>
0
?
priceList
[
0
].
b2BPrice
:
0
}}
</text><text
class=
"fz24 ML10"
>
/ 人
</text></view>
<view
class=
"row items-center ML30"
><view
class=
"fz28 color9C9C9C"
>
统一售价:
</view>
<text
class=
"fontBold fz38 colorF99710"
>
{{
priceList
&&
priceList
.
length
>
0
?
priceList
[
0
].
b2CPrice
:
0
}}
</text><text
class=
"fz24 ML10"
>
/ 人
</text></view>
</view>
<view>
<
!--
<
view>
<u-icon
class=
"backIcon"
name=
"arrow-down"
size=
"32"
color=
"#9D9D9D"
></u-icon>
<u-icon
class=
"backIcon"
name=
"arrow-up"
size=
"32"
color=
"#9D9D9D"
></u-icon>
</view>
</view>
-->
</view>
<view
class=
"colorE1432E fz28 PT10"
>
<
!--
<
view
class=
"colorE1432E fz28 PT10"
>
op备注:
</view>
</view>
-->
</view>
<view
class=
"bjLine"
></view>
<view
class=
"PX30 PB20"
>
<view
class=
"MT15 itiner-xincheng row items-center"
>
<img
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638875112655075900.png"
/>
<view
class=
"itiner-xincheng-left ML30 MR30 fz26"
>
行程天数
</view>
<view
class=
"itiner-xincheng-right fz28 row items-center"
>
7
<text
class=
"ML10 MR10"
>
天
</text>
6
<tetx
class=
"ML10 MR10"
>
晚
</tetx>
跟团游
<view
class=
"ML30 MR10"
>
行程下载
</view></view>
<view
class=
"itiner-xincheng-right fz28 row items-center"
>
{{
dataList
.
dayNum
>=
0
?
dataList
.
dayNum
:
''
}}
<text
class=
"ML10 MR10"
>
天
</text>
{{
dataList
.
nightNum
>=
0
?
dataList
.
nightNum
:
''
}}
<tetx
class=
"ML10 MR10"
>
晚
</tetx>
{{
dataList
.
teamType
==
0
?
'跟团游'
:
dataList
.
teamType
==
1
?
'小包团'
:
'一日游'
}}
<view
class=
"ML30 MR10"
@
click=
"downloadTripPlanHandler"
>
行程下载
</view></view>
</view>
<view
class=
"MT10 itiner-xincheng row items-center"
>
<img
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638875112698474332.png"
/>
<view
class=
"itiner-xincheng-left ML30 MR30 fz26"
>
出发城市
</view>
<view
class=
"itiner-xincheng-right fz28 row items-center"
>
上海
</view>
<view
class=
"itiner-xincheng-right fz28 row items-center"
>
{{
dataList
.
startCityName
?
dataList
.
startCityName
:
''
}}
</view>
</view>
</view>
<view
class=
"bjLine"
></view>
<view
class=
"PX30"
>
<view
class=
"PY20 row justify-between items-center"
>
<view
class=
"PY20 row justify-between items-center"
@
click=
"showQinDan=!showQinDan"
>
<view
class=
"row items-center"
>
<view
class=
"itiner-left-line"
>
</view>
<text
class=
"fz32 fontBold ML20"
>
报名清单
</text>
</view>
<view>
<u-icon
class=
"backIcon"
name=
"arrow-down"
size=
"32"
color=
"#9D9D9D"
></u-icon>
<u-icon
class=
"backIcon"
name=
"arrow-up"
size=
"32"
color=
"#9D9D9D"
></u-icon>
<u-icon
class=
"backIcon"
:name=
"!showQinDan?'arrow-down':'arrow-up'"
size=
"32"
color=
"#9D9D9D"
></u-icon>
</view>
</view>
<view
class=
""
>
<view
class=
"fz28"
>
本团机位
</view>
<view
class=
"fz28 PT15 PB20"
>
报名人数
</view>
<view
class=
""
v-if=
"showQinDan"
>
<view
class=
"fz28"
>
<view>
本团机位
</view>
<template
v-if=
"priceList&&priceList.length>0"
>
<view
v-if=
"priceList[0].CSeat>0"
>
头等舱:
{{
priceList
[
0
].
cSeat
}}
</view>
<view
v-if=
"priceList[0].FSeat>0"
>
商务 :
{{
priceList
[
0
].
fSeat
}}
</view>
<view
v-if=
"priceList[0].YSeat>0"
>
经济:
{{
priceList
[
0
].
ySeat
}}
</view>
</
template
>
</view>
<view
class=
"fz28 PT15 PB20"
>
报名人数{{ dataList.offerNumber?dataList.offerNumber:'' }}
</view>
</view>
</view>
<view
class=
"bjLine"
></view>
<view
class=
"PX30"
>
<view
class=
"PY20 row justify-between items-center"
>
<view
class=
"PY20 row justify-between items-center"
@
click=
"showMaiDian=!showMaiDian"
>
<view
class=
"row items-center"
>
<view
class=
"itiner-left-line"
>
</view>
<text
class=
"fz32 fontBold ML20"
>
本团卖
店
</text>
<text
class=
"fz32 fontBold ML20"
>
本团卖
点
</text>
</view>
<view>
<u-icon
class=
"backIcon"
name=
"arrow-down"
size=
"32"
color=
"#9D9D9D"
></u-icon>
<u-icon
class=
"backIcon"
name=
"arrow-up"
size=
"32"
color=
"#9D9D9D"
></u-icon>
<u-icon
class=
"backIcon"
:name=
"!showMaiDian?'arrow-down':'arrow-up'"
size=
"32"
color=
"#9D9D9D"
></u-icon>
</view>
</view>
<view
class=
""
>
<view
class=
"fz28"
></view>
<view
class=
"fz28 PB20"
style=
"color: #7B7B7B;"
>
暂未填写
</view>
<view
v-if=
"showMaiDian"
class=
""
>
<view
v-if=
"dataList.productRecommend"
class=
"fz28 PB20"
>
<rich-text
:nodes=
"dataList.productRecommend"
class=
"richText"
></rich-text>
</view>
<view
v-else
class=
"fz28 PB20"
style=
"color: #7B7B7B;"
>
暂未填写
</view>
</view>
</view>
<view
class=
"bjLine"
></view>
<view
class=
"PX30"
>
<view
class=
"PY20 row justify-between items-center"
>
<view
class=
"PY20 row justify-between items-center"
@
click=
"showHangBan=!showHangBan"
>
<view
class=
"row items-center"
>
<view
class=
"itiner-left-line"
>
</view>
<text
class=
"fz32 fontBold ML20"
>
航班信息
</text>
</view>
<view>
<u-icon
class=
"backIcon"
name=
"arrow-down"
size=
"32"
color=
"#9D9D9D"
></u-icon>
<u-icon
class=
"backIcon"
name=
"arrow-up"
size=
"32"
color=
"#9D9D9D"
></u-icon>
<u-icon
class=
"backIcon"
:name=
"!showHangBan?'arrow-down':'arrow-up'"
size=
"32"
color=
"#9D9D9D"
></u-icon>
</view>
</view>
<view
class=
""
>
<view
class=
"fz28"
></view>
<view
class=
"fz28 PB20"
style=
"color: #7B7B7B;"
>
暂未航班信息
</view>
<view
v-if=
"showHangBan"
class=
""
>
<
template
v-if=
"priceList.length>0"
>
<view
class=
"fz28 PB20"
>
<view
class=
"priceFlightTitle row color000"
>
<view
class=
"flex1"
>
航空
</view>
<view
class=
"flex1"
>
出发机场
</view>
<view
class=
"flex1"
>
到达机场
</view>
</view>
<view
class=
"priceFlightText fz28 row color666 MT20"
v-for=
"(item,index) in priceList[0].priceFlight"
>
<view
class=
"flex1"
>
{{
item
.
alName
}}
<view
class=
"fz24"
>
{{
item
.
flightNumber
}}
</view>
</view>
<view
class=
"flex1"
>
{{
item
.
departureAirPortName
}}
<view
class=
"fz24"
>
{{
item
.
startDate
}}
{{
item
.
departureTime
}}
</view>
<view
v-if=
"item.stopoverAirPortName"
class=
"fz24"
>
中:
{{
item
.
stopoverAirPortName
}}
</view>
</view>
<view
class=
"flex1"
>
{{
item
.
arrivalAirPortName
}}
<view
class=
"fz24"
>
{{
item
.
arriveDate
}}
{{
item
.
arrivalTime
}}
</view>
</view>
</view>
</view>
</
template
>
<view
v-else
class=
"fz28 PB20"
style=
"color: #7B7B7B;"
>
暂未航班信息
</view>
</view>
</view>
<view
class=
"bjLine"
></view>
...
...
@@ -211,7 +282,8 @@
<view
class=
"itiner-title-c fz30"
:class=
"[current==item.ID?'active':'']"
v-for=
"(item,index) in titlesList"
:key=
"index"
>
:key=
"index"
@
click=
"goTop(item)"
>
{{ item.Name }}
</view>
</view>
...
...
@@ -220,8 +292,11 @@
<view
class=
"itiner-left-line"
>
</view>
<text
class=
"fz32 fontBold ML20"
>
行程特色
</text>
</view>
<view>
<img
src=
""
/>
<view
v-if=
"dataList.feature&&dataList.feature.tripImageList&&dataList.feature.tripImageList.length>0"
>
<image
v-for=
"x in dataList.feature.tripImageList"
:src=
"x"
mode=
"widthFix"
@
click=
'previewTravelPicHandler(x,dataList.feature.tripImageList)'
style=
"width: 100%"
>
</image>
</view>
</view>
<view
class=
"PX30"
id=
"title2"
>
...
...
@@ -230,7 +305,71 @@
<text
class=
"fz32 fontBold ML20"
>
行程介绍
</text>
</view>
<view>
<img
src=
""
/>
<view
v-if=
"d.length>0&&dataList.feature&&dataList.feature.detailsImageList.length==0"
>
<view
v-for=
"(x,i) in d"
:key=
"i"
class=
"column PB20"
>
<view
class=
"column fz32 fontBold PB20"
>
<text>
第{{(i+1)>9?(i+1):'0'+(i+1)}}天
</text>
<text
class=
"fz28 MT20"
style=
"font-family: microsoft yahei ui light;"
>
{{x.title}}
</text>
</view>
<
template
v-for=
"(y,yi) in x.dayArray"
>
<view
v-if=
"y.childItem&&y.childItem.imaArray&&y.childItem.imaArray.length>0&&y.type==2"
style=
"border: 1px solid #ddd;"
>
<view
v-for=
"(z,zi) in y.childItem.imaArray"
>
<image
@
click=
"previewImages(y.childItem.imaArray,zi)"
:src=
"z.url"
mode=
"aspectFill"
:key=
"zi"
style=
"width: 100%;"
v-if=
"y.type==2"
></image>
</view>
<view
:key=
"yi"
v-if=
"y.type==2"
class=
"PA20"
>
<view
class=
"fz30 fontBold PB20"
>
{{
`${y.childItem.couponsName
}
`
}}
<
/view
>
<
view
class
=
"fz28 color666"
>
<
rich
-
text
:
nodes
=
"y.childItem.description"
class
=
"richText"
><
/rich-text
>
<
/view
>
<
/view
>
<
/view
>
<
view
:
key
=
"yi"
v
-
if
=
"y.type==6"
>
<
view
class
=
"fz30 fontWeight500 PY20 colorE1432E"
>
温馨提示
<
/view
>
<
view
class
=
"fz28 PB20 color666"
>
<
rich
-
text
:
nodes
=
"y.childItem.description"
class
=
"richText"
><
/rich-text
>
<
/view
>
<
/view
>
<
/template
>
<
view
class
=
"row items-center"
v
-
if
=
"x.canshi"
>
<
view
>
<
img
style
=
"width: 30rpx;height: 30rpx;"
/>
<
/view
>
<
view
>
<
view
class
=
"row items-center PB20"
v
-
for
=
"item in x.canshi"
>
<
view
class
=
"fz34 fontBold MR20"
>
{{
`${item.childItem.timeStr
}
${item.childItem.dinnerTypeName
}
`
}}
<
/view
>
<
view
class
=
"fz28 MR20 color666"
>
{{
item
.
childItem
.
dinnerName
?
item
.
childItem
.
dinnerName
:
'方便游玩敬请自理'
}}
<
/view
>
<
/view
>
<
/view
>
<
/view
>
<
view
class
=
"row items-center"
v
-
if
=
"x.zhusu"
>
<
view
>
<
img
style
=
"width: 30rpx;height: 30rpx;"
/>
<
/view
>
<
view
>
<
view
class
=
"row items-center"
v
-
for
=
"item in x.zhusu"
>
<
view
class
=
"fz34 fontBold MR20"
>
住宿
<
/view
>
<
view
class
=
"fz28 MR20 color666"
>
{{
item
.
childItem
.
hotelName
}}
<
/view
>
<
/view
>
<
/view
>
<
/view
>
<
/view
>
<
/view
>
<
view
style
=
"padding-bottom: 22px;background-color: #FFF;"
v
-
if
=
"dataList.feature&&dataList.feature.detailsImageList.length>0"
>
<
image
:
src
=
"x"
@
click
=
'previewTravelPicHandler(x,dataList.feature.detailsImageList)'
mode
=
"widthFix"
style
=
"width: 100%;height: auto;margin-bottom: 10px;"
v
-
for
=
"x in dataList.feature.detailsImageList"
><
/image
>
<
/view
>
<
/view
>
<
/view
>
<
view
class
=
"PX30"
id
=
"title3"
>
...
...
@@ -242,13 +381,17 @@
<
text
class
=
"itiner-feiyong"
>
费用包含
<
/text
>
<
/view
>
<
view
class
=
"PB20"
>
<view
class=
"fz26"
></view>
<
view
class
=
"fz26 color666"
>
<
rich
-
text
:
nodes
=
"dataList.feature.feeInclude"
class
=
"richText"
><
/rich-text
>
<
/view
>
<
/view
>
<
view
class
=
"PB20"
>
<
text
class
=
"itiner-feiyong"
>
费用不包含
<
/text
>
<
/view
>
<
view
class
=
"PB20"
>
<view
class=
"fz26"
></view>
<
view
class
=
"fz26 color666"
>
<
rich
-
text
:
nodes
=
"dataList.feature.feeNonInclude"
class
=
"richText"
><
/rich-text>
<
/view
>
<
/view
>
<
/view
>
<
view
class
=
"PX30"
id
=
"title4"
>
...
...
@@ -260,13 +403,17 @@
<
text
class
=
"itiner-win"
>
重要提示
<
/text
>
<
/view
>
<
view
class
=
"PB20"
>
<view
class=
"fz26"
></view>
<
view
class
=
"fz26"
>
<
rich
-
text
:
nodes
=
"dataList.feature.importantTip"
class
=
"richText"
><
/rich-text>
<
/view
>
<
/view
>
<
view
class
=
"PB20"
>
<
text
class
=
"itiner-tisp"
>
温馨提示
<
/text
>
<
/view
>
<
view
class
=
"PB20"
>
<view
class=
"fz26"
></view>
<
view
class
=
"fz26"
>
<
rich
-
text
:
nodes
=
"dataList.feature.warmTip"
class
=
"richText"
><
/rich-text>
<
/view
>
<
/view
>
<
/view
>
<
/view
>
...
...
@@ -276,7 +423,7 @@
export
default
{
data
()
{
return
{
scrollTop
:
100
,
scrollTop
:
1
2
00
,
old
:
{
scrollTop
:
0
}
,
...
...
@@ -320,6 +467,18 @@ export default {
}
,
],
current
:
1
,
msg
:
{
configId
:
''
,
cityId
:
''
,
tcid
:
''
,
}
,
dataList
:
{
}
,
priceList
:
[],
isDownloading
:
false
,
showQinDan
:
false
,
showMaiDian
:
false
,
showHangBan
:
false
,
d
:
[],
}
}
,
computed
:
{
...
...
@@ -329,7 +488,13 @@ export default {
}
,
onLoad
(
options
)
{
if
(
options
.
configId
){
this
.
msg
.
configId
=
options
.
configId
this
.
init
()
}
if
(
options
.
TCID
){
this
.
msg
.
tcid
=
options
.
TCID
}
}
,
onShow
()
{
let
that
=
this
;
...
...
@@ -347,17 +512,120 @@ export default {
}
,
methods
:
{
goTop
(
item
)
{
this
.
current
=
item
.
ID
;
this
.
scrollTop
=
this
.
old
.
scrollTop
this
.
$nextTick
(
function
()
{
this
.
scrollTop
=
item
.
top
}
);
}
,
formatDay
()
{
this
.
d
=
this
.
dataList
.
dayList
if
(
this
.
d
.
length
>
0
)
{
this
.
d
.
forEach
((
x
)
=>
{
x
.
dayArray
.
forEach
((
y
)
=>
{
if
(
y
.
type
==
7
)
{
x
.
title
=
y
.
childItem
.
title
;
}
else
if
(
y
.
type
==
1
)
{
y
.
subtitle
=
y
.
childItem
.
subTraffic
.
length
>
0
&&
y
.
childItem
.
subTraffic
[
0
]
.
startTime
+
" - "
+
y
.
childItem
.
subTraffic
[
y
.
childItem
.
subTraffic
.
length
-
1
]
.
endTime
;
y
.
title
=
this
.
formatTraffice
(
y
.
childItem
.
subTraffic
);
y
.
icon
=
"iconfont iconjiaotong"
;
}
else
if
(
y
.
type
==
4
)
{
let
t
=
[
"早餐"
,
"午餐"
,
"晚餐"
];
y
.
childItem
.
dinnerTypeName
=
t
[
parseInt
(
y
.
childItem
.
useDinnerType
)
-
1
];
}
}
);
x
.
dayArray
=
x
.
dayArray
.
sort
((
a
,
b
)
=>
{
return
new
Date
(
a
.
type
)
-
new
Date
(
b
.
type
)
}
)
x
.
zhusu
=
x
.
dayArray
.
filter
(
z
=>
z
.
type
==
3
)
x
.
canshi
=
x
.
dayArray
.
filter
(
z
=>
z
.
type
==
4
)
}
);
}
}
,
formatTraffice
(
tras
)
{
let
txt
=
"从"
+
(
tras
.
length
>
0
?
tras
[
0
].
startCityName
:
''
);
tras
.
forEach
((
z
,
i
)
=>
{
if
(
i
>
0
&&
txt
!=
''
)
{
txt
+=
";再"
;
}
if
(
z
.
arrivalType
==
1
)
{
txt
+=
"搭乘航班"
;
}
else
if
(
z
.
arrivalType
==
2
)
{
txt
+=
"乘坐豪华巴士"
;
}
else
if
(
z
.
arrivalType
==
3
)
{
txt
+=
"乘坐豪华游轮"
;
}
else
{
txt
+=
"乘坐高铁"
;
}
txt
+=
" 到达"
+
z
.
arrivalCityName
;
}
);
return
txt
;
}
,
init
(){
uni
.
showLoading
()
this
.
apipost
(
"b2b_get_GetB2BTravelInfoNoDes"
,
this
.
msg
,
(
res
)
=>
{
if
(
res
.
resultCode
==
1
)
{
uni
.
hideLoading
()
res
.
data
.
tempImgCover
=
JSON
.
parse
(
res
.
data
.
imgCover
);
this
.
dataList
=
res
.
data
this
.
priceList
=
res
.
data
.
priceList
console
.
log
(
this
.
dataList
,
'-------'
)
this
.
formatDay
()
setTimeout
(()
=>
{
this
.
titlesList
.
forEach
((
x
,
index
)
=>
{
if
(
index
==
1
)
x
.
Name
=
`${this.dataList.dayNum
}
日行程`
const
query
=
uni
.
createSelectorQuery
().
select
(
`#${x.val
}
`
);
query
.
boundingClientRect
((
rect
)
=>
{
x
.
top
=
rect
.
top
;
}
).
exec
();
}
)
}
,
1000
);
}
}
,
(
failed
)
=>
{
uni
.
hideLoading
()
uni
.
showToast
({
title
:
failed
.
message
,
icon
:
"none"
,
}
);
}
,
(
error
)
=>
{
uni
.
hideLoading
()
}
)
}
,
goback
()
{
uni
.
navigateBack
({
delta
:
1
,
}
);
}
,
previewImages
(
images
,
cur
)
{
let
imgObj
=
[];
if
(
images
[
0
].
url
)
{
imgObj
=
[]
images
.
forEach
(
x
=>
imgObj
.
push
(
x
.
url
))
}
uni
.
previewImage
({
urls
:
imgObj
,
current
:
cur
,
}
)
}
,
previewTravelPicHandler
(
url
,
urls
)
{
uni
.
previewImage
({
urls
:
urls
,
current
:
url
,
}
)
}
,
openPicture
()
{
let
imgObj
=
JSON
.
stringify
(
this
.
imgsList
);
uni
.
navigateTo
({
url
:
"/pages/hotel/picture?imgObj="
+
imgObj
,
});
},
let
imgObj
=
JSON
.
stringify
(
this
.
imgsList
);
uni
.
navigateTo
({
url
:
"/pages/hotel/picture?imgObj="
+
imgObj
,
}
);
}
,
scroll
(
e
)
{
this
.
old
.
scrollTop
=
e
.
detail
.
scrollTop
this
.
boxOption
=
Math
.
floor
((
e
.
detail
.
scrollTop
-
50
)
/
1.5
);
...
...
@@ -369,6 +637,126 @@ export default {
Math
.
floor
(
e
.
detail
.
scrollTop
-
100
)
/
100
;
this
.
$forceUpdate
();
}
,
downloadTripPlanHandler
()
{
if
(
this
.
isDownloading
)
return
;
let
that
=
this
uni
.
showLoading
({
title
:
'这可能需要30秒,请耐心等待'
}
)
this
.
isDownloading
=
true
let
url
=
`https://im.oytour.com/TripDownLoad/${this.msg.configId
}
_${this.msg.tcid
}
/${this.msg.configId
}
_${this.msg.tcid
}
.pdf`
let
fileName
=
`${this.dataList.ltName.replace(/\s+/g,"").replaceAll("/","")
}
`
const
filePath
=
wx
.
env
.
USER_DATA_PATH
+
`/${fileName
}
.pdf`
uni
.
downloadFile
({
url
:
url
,
filePath
,
success
:
(
res
)
=>
{
wx
.
openDocument
({
filePath
:
filePath
,
showMenu
:
true
,
success
:
fres
=>
{
uni
.
hideLoading
()
that
.
isDownloading
=
false
}
,
fail
:
fres
=>
{
console
.
log
(
'downloadTripPlanHandler_打开失败'
,
fres
)
that
.
downloadFailed
(
'打开失败,请重试。如果仍然失败,请联系销售索要PDF行程'
)
}
,
}
)
}
,
fail
(
err
)
{
console
.
log
(
"downloadTripPlanHandler_fail"
,
err
)
that
.
downloadFailed
(
'下载失败,请重试。如果仍然失败,请联系销售索要PDF行程'
+
err
)
}
,
}
);
}
,
downloadFailed
(
msg
)
{
uni
.
showToast
({
icon
:
'none'
,
title
:
msg
}
)
this
.
isDownloading
=
false
;
}
,
// #ifdef MP-WEIXIN
//分享朋友圈
onShareTimeline
()
{
let
uid
=
uni
.
getStorageSync
(
"mall_UserInfo"
)
?
uni
.
getStorageSync
(
"mall_UserInfo"
).
UserId
:
0
;
if
(
uid
==
0
)
{
uid
=
uni
.
getStorageSync
(
"pid"
)
?
uni
.
getStorageSync
(
"pid"
).
pid
:
0
;
}
let
SmallShopId
=
uni
.
getStorageSync
(
"mall_UserInfo"
)
?
uni
.
getStorageSync
(
"mall_UserInfo"
).
SmallShopId
:
0
;
if
(
SmallShopId
==
0
)
{
//如果微店id为0 去找所属微店id
SmallShopId
=
uni
.
getStorageSync
(
"mall_UserInfo"
)
?
uni
.
getStorageSync
(
"mall_UserInfo"
).
UserSmallShopId
:
0
;
}
let
title
=
this
.
dataList
.
title
?
this
.
dataList
.
title
:
"帖子"
;
let
imageUrl
=
this
.
dataList
.
tempImgCover
&&
this
.
dataList
.
tempImgCover
.
length
>
0
?
this
.
dataList
.
tempImgCover
[
0
]
:
""
;
return
{
title
:
title
,
query
:
"tcid="
+
this
.
delMsg
.
tcid
+
"&user_id="
+
uid
+
"&SmallShopId="
+
SmallShopId
+
"&Up="
+
this
.
Up
+
"&JumpType=19"
+
"&configId="
+
this
.
delMsg
.
configId
+
"&cityId="
+
this
.
delMsg
.
cityId
+
this
.
$uiConfig
.
DIRECT_PARAMETER
,
imageUrl
:
imageUrl
,
}
;
}
,
// #endif
//分享给朋友
onShareAppMessage
(
res
)
{
let
u
=
uni
.
getStorageSync
(
"mall_UserInfo"
);
let
uid
=
u
.
UserId
?
u
.
UserId
:
0
;
if
(
uid
==
0
)
{
uid
=
uni
.
getStorageSync
(
"pid"
)
?
uni
.
getStorageSync
(
"pid"
).
pid
:
0
;
}
let
SmallShopId
=
u
.
SmallShopId
?
u
.
SmallShopId
:
0
;
if
(
SmallShopId
==
0
)
{
//如果微店id为0 去找所属微店id
SmallShopId
=
u
.
UserSmallShopId
?
u
.
UserSmallShopId
:
0
;
}
return
{
title
:
this
.
dataList
.
title
?
this
.
dataList
.
title
:
"帖子"
,
path
:
"/pages/jiuzhai/jz_LineDetail?tcid="
+
this
.
delMsg
.
tcid
+
"&user_id="
+
uid
+
"&SmallShopId="
+
SmallShopId
+
"&Up="
+
this
.
Up
+
"&JumpType=19"
+
"&configId="
+
this
.
delMsg
.
configId
+
"&cityId="
+
this
.
delMsg
.
cityId
+
this
.
$uiConfig
.
DIRECT_PARAMETER
,
imageUrl
:
""
,
// imageUrl:
// this.dataList.tempImgCover && this.dataList.tempImgCover.length > 0
// ? this.dataList.tempImgCover[0]
// : "",
}
;
}
,
}
,
}
<
/script>
\ No newline at end of file
pages/teamLeader/itineraryInformation.vue
View file @
ac0207c1
...
...
@@ -142,8 +142,8 @@
<view
class=
"triangle ML10"
v-if=
"datas.length>1"
></view>
</view>
<view
class=
"itinInfoNum row justify-center fz24"
>
<view>
{{
datas
[
currentIndex
].
BusType
?
datas
[
currentIndex
].
BusType
:
'暂无车型'
}}
(
{{
datas
[
currentIndex
].
BusSeatNum
}}
席)
</view>
<view>
{{
datas
[
currentIndex
].
TotalGuest
}}
人
</view>
<view>
{{
datas
[
currentIndex
].
BusType
?
datas
[
currentIndex
].
BusType
:
'暂无车型'
}}
(
{{
datas
[
currentIndex
].
BusSeatNum
?
datas
[
currentIndex
].
BusSeatNum
:
0
}}
席)
</view>
<view>
{{
datas
[
currentIndex
].
TotalGuest
?
datas
[
currentIndex
].
TotalGuest
:
0
}}
人
</view>
</view>
<view
class=
"itinInfoCarNum row fz24"
>
<view
class=
"flex1 row justify-center"
>
...
...
@@ -170,7 +170,7 @@
<img
style=
"width: 25rpx;height: 32rpx;display: inline-block;"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638874931415480953.png"
/>
<text
class=
"ML20 fz28"
>
行程概要
</text>
</view>
<view
class=
"itineraryInformationCBox PX30"
>
<view
class=
"itineraryInformationCBox PX30"
v-if=
"datas[currentIndex]&&datas[currentIndex].JourneyInfoList&&datas[currentIndex].JourneyInfoList.length>0"
>
<view
class=
"MT30 itineraryInformationCenter"
v-for=
"(item,index) in datas[currentIndex].JourneyInfoList"
>
<view
class=
"itineraryInformationCtime PY20 text-center fz24"
>
{{
item
.
JourneyTimeStr
}}
</view>
<view
class=
"itineraryInformationCtext row"
>
...
...
@@ -235,10 +235,10 @@
<
text
class
=
"ML20 fz28"
>
购物店
<
/text
>
<
/view
>
<
view
class
=
"itineraryInformationCBox PX30"
>
<
view
v
-
if
=
"datas[currentIndex].ShopList.length>0"
class
=
"MT30 PB30 itineraryInformationSCenter"
>
<
view
v
-
if
=
"datas[currentIndex]
&&datas[currentIndex].ShopList&&datas[currentIndex]
.ShopList.length>0"
class
=
"MT30 PB30 itineraryInformationSCenter"
>
<
view
class
=
"row"
v
-
for
=
"(item,index) in datas[currentIndex].ShopList"
>
<
view
class
=
"fz24
"
>
{{
item
.
PolicyAttention
}}
<
/view
>
<
view
class
=
"flex1 fz28 M
L30 M
T20"
>
{{
item
.
ShopName
}}
<
/view
>
<
view
class
=
"fz24
MR30"
v
-
if
=
"item.PolicyAttention"
>
{{
item
.
PolicyAttention
?
item
.
PolicyAttention
:
''
}}
<
/view
>
<
view
class
=
"flex1 fz28 MT20"
>
{{
item
.
ShopName
}}
<
/view
>
<
/view
>
<
/view
>
<
view
v
-
else
class
=
"fz26 text-center MT20"
>
无购物店安排
<
/view
>
...
...
@@ -337,8 +337,7 @@ export default {
methods
:
{
goUrl
(
url
){
uni
.
navigateTo
({
url
:
`${url
}
?TCIDs=${this.msg.TCIDs
}
`
,
url
:
`${url
}
?configId=${this.datas[this.currentIndex].ConfigId
}
&TCID=${this.datas[this.currentIndex].PrincipalList[0].TCID
}
`
,
}
)
}
,
popupCurrency
(
value
){
...
...
@@ -357,6 +356,7 @@ export default {
this
.
optionVisible
=
false
let
findIndex
=
this
.
optionList
.
findIndex
(
x
=>
x
.
id
==
value
)
this
.
currentIndex
=
findIndex
this
.
optionObj
=
this
.
optionList
[
findIndex
]
}
,
init
()
{
uni
.
showLoading
()
...
...
@@ -364,14 +364,14 @@ export default {
if
(
res
.
resultCode
==
1
)
{
uni
.
hideLoading
()
this
.
datas
=
res
.
data
res
.
data
.
forEach
(
x
=>
{
res
.
data
.
forEach
(
(
x
,
index
)
=>
{
this
.
tcunmList
.
push
({
name
:
x
.
TCUNM
,
id
:
x
.
TCUNM
id
:
index
+
1
}
)
}
);
this
.
optionList
=
this
.
tcunmList
this
.
optionObj
=
this
.
option
List
[
0
]
this
.
optionObj
=
this
.
tcunm
List
[
0
]
}
}
,
(
failed
)
=>
{
uni
.
hideLoading
()
...
...
@@ -380,7 +380,6 @@ export default {
icon
:
"none"
,
}
);
}
,
(
error
)
=>
{
this
.
loading
=
false
;
uni
.
hideLoading
()
}
)
}
,
...
...
pages/teamLeader/list.vue
View file @
ac0207c1
...
...
@@ -207,7 +207,8 @@ export default {
// noData:'',//
// currentPage: 1,//
TCStatus
:
2
,
// 团期状态 0不限 1未开始,2进行中,3已结束
LeaderId
:
'3036'
,
// 领队id
LeaderId
:
'2811'
,
// 领队id3036
orderBy
:
1
,
},
b2b_user_info
:
{}
}
...
...
@@ -227,11 +228,10 @@ export default {
methods
:
{
goTeamLeader
(
item
){
let
datas
=
{
TCIDs
:
item
.
TCIDs
,
LineName
:
item
.
LineName
,
}
uni
.
navigateTo
({
url
:
`/pages/teamLeader/index?datas=
${
encodeURIComponent
(
JSON
.
stringify
(
datas
))}
`
,
url
:
`/pages/teamLeader/index?
TCIDs=
${
item
.
TCIDs
}
&
datas=
${
encodeURIComponent
(
JSON
.
stringify
(
datas
))}
`
,
})
},
changeState
(
item
){
...
...
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