Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
bigwood
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
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
罗超
bigwood
Commits
327fb627
Commit
327fb627
authored
Apr 12, 2023
by
youjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
cbe2dfab
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1 addition
and
5422 deletions
+1
-5422
index.vue
src/components/mask/index.vue
+0
-104
index.vue
src/components/props/index.vue
+0
-351
smaple.vue
src/components/trip/smaple.vue
+1
-1
style1.vue
src/components/trip/style1.vue
+0
-136
style2.vue
src/components/trip/style2.vue
+0
-150
style3.vue
src/components/trip/style3.vue
+0
-3035
style4.vue
src/components/trip/style4.vue
+0
-97
style5.vue
src/components/trip/style5.vue
+0
-211
style6.vue
src/components/trip/style6.vue
+0
-561
tripList.vue
src/components/trip/tripList.vue
+0
-261
tripcalendar.vue
src/components/trip/tripcalendar.vue
+0
-515
No files found.
src/components/mask/index.vue
deleted
100644 → 0
View file @
cbe2dfab
<
template
>
<div
class=
"u-mask"
:style=
"[maskStyle]"
:class=
"[show ? 'u-mask-show' : '']"
@
click=
"click"
@
touchmove
.
stop
.
prevent
>
<slot
/>
</div>
</
template
>
<
script
>
/**
* mask 遮罩
* @description 创建一个遮罩层,用于强调特定的页面元素,并阻止用户对遮罩下层的内容进行操作,一般用于弹窗场景
* @tutorial https://www.uviewui.com/components/mask.html
* @property {Boolean} show 是否显示遮罩(默认false)
* @property {String Number} z-index z-index 层级(默认1070)
* @property {Object} custom-style 自定义样式对象,见上方说明
* @property {String Number} duration 动画时长,单位毫秒(默认300)
* @property {Boolean} zoom 是否使用scale对这招进行缩放(默认true)
* @property {Boolean} mask-click-able 遮罩是否可点击,为false时点击不会发送click事件(默认true)
* @event {Function} click mask-click-able为true时,点击遮罩发送此事件
* @example <u-mask :show="show" @click="show = false"></u-mask>
*/
export
default
{
name
:
"u-mask"
,
props
:
{
// 是否显示遮罩
show
:
{
type
:
Boolean
,
default
:
false
},
// 层级z-index
zIndex
:
{
type
:
[
Number
,
String
],
default
:
98
},
// 用户自定义样式
customStyle
:
{
type
:
Object
,
default
()
{
return
{};
}
},
// 遮罩的动画样式, 是否使用使用zoom进行scale进行缩放
zoom
:
{
type
:
Boolean
,
default
:
true
},
// 遮罩的过渡时间,单位为ms
duration
:
{
type
:
[
Number
,
String
],
default
:
300
},
// 是否可以通过点击遮罩进行关闭
maskClickAble
:
{
type
:
Boolean
,
default
:
true
}
},
computed
:
{
maskStyle
()
{
let
style
=
{};
style
.
backgroundColor
=
"rgba(0, 0, 0, 0.6)"
;
style
.
zIndex
=
this
.
zIndex
?
this
.
zIndex
:
this
.
$u
.
zIndex
.
mask
;
style
.
transition
=
`all
${
this
.
duration
/
1000
}
s ease-in-out`
;
// 缩放
if
(
this
.
zoom
==
true
)
style
.
transform
=
"scale(1.2, 1.2)"
;
// 判断用户传递的对象是否为空
if
(
Object
.
keys
(
this
.
customStyle
).
length
)
style
=
{
...
style
,
...
this
.
customStyle
};
// 合并自定义的样式
//Object.assign(style, customStyle);
return
style
;
}
},
methods
:
{
click
()
{
if
(
!
this
.
maskClickAble
)
return
;
this
.
$emit
(
"click"
);
}
}
};
</
script
>
<
style
lang=
"scss"
scoped
>
.u-mask
{
position
:
fixed
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
opacity
:
0
;
visibility
:
hidden
;
}
.u-mask-show
{
opacity
:
1
;
visibility
:
visible
;
transform
:
scale
(
1
);
}
</
style
>
src/components/props/index.vue
deleted
100644 → 0
View file @
cbe2dfab
This diff is collapsed.
Click to expand it.
src/components/trip/smaple.vue
View file @
327fb627
...
...
@@ -129,7 +129,7 @@
if
(
h
&&
h
.
length
>
0
){
let
g
=
groupBy
(
h
,(
x
)
=>
{
return
x
.
star
}
)
g
.
forEach
(
x
=>
{
data
.
hotel
+=
`${x.data.length
}
晚${data.stars[parseInt(x.key)-1]
}
;`
data
.
hotel
+=
`${x.data.length
}
晚${data.stars[parseInt(x.key)-1]
?data.stars[parseInt(x.key)-1]:''
}
;`
}
)
}
}
...
...
src/components/trip/style1.vue
deleted
100644 → 0
View file @
cbe2dfab
<
style
>
.Style_main_Top
{
height
:
460px
;
overflow
:
hidden
;
}
.Style_main_Top
.detOne_top
{
display
:
inline-block
;
width
:
calc
(
100%
+
20px
);
height
:
100%
;
margin-left
:
-10px
;
background-size
:
cover
;
background-position
:
center
center
;
background-repeat
:
no-repeat
;
z-index
:
0
;
filter
:
blur
(
5px
);
}
.Style_main_Top
.detOneModel
{
position
:
absolute
;
left
:
0
;
top
:
0
;
display
:
inline-block
;
z-index
:
2
;
width
:
50%
;
height
:
450px
;
float
:
left
;
text-align
:
center
;
}
.detOneModel
label
{
position
:
relative
;
display
:
inline-block
;
width
:
400px
;
height
:
100%
;
background-color
:
rgba
(
255
,
255
,
255
,
.55
);
padding
:
60px
40px
40px
;
text-align
:
left
;
}
.detOneModel
>*
{
display
:
inline-block
;
letter-spacing
:
2px
;
}
.Style_main_Top
.main-title
{
font-size
:
55px
;
font-weight
:
bold
;
color
:
#000
;
/* -webkit-writing-mode: vertical-lr;
writing-mode: vertical-lr; */
height
:
100%
;
width
:
82px
;
display
:
inline-block
;
word-wrap
:
break-word
;
line-height
:
55px
;
}
.Style_main_Top
.sub-title
{
font-size
:
24px
;
font-weight
:
lighter
;
/* padding-top: 74px; */
/* -webkit-writing-mode: vertical-lr;
writing-mode: vertical-lr; */
height
:
100%
;
display
:
inline-block
;
width
:
36px
;
word-wrap
:
break-word
;
position
:
absolute
;
top
:
85px
;
}
@media
only
screen
and
(
max-width
:
768px
)
{
.Style_main_Top
.detOneModel
{
width
:
100%
;
height
:
280px
;
top
:
80px
;
}
.Style_main_Top
.main-title
{
font-size
:
30px
;
width
:
36px
;
line-height
:
30px
;
position
:
absolute
;
top
:
40px
;
}
.Style_main_Top
.sub-title
{
font-size
:
15px
;
width
:
22px
;
position
:
absolute
;
top
:
65px
;
left
:
80px
;
}
.detOneModel
label
{
width
:
100%
;
padding-top
:
50px
;
}
}
</
style
>
<
template
>
<div
class=
"Style_main_Top"
>
<div
class=
"detOne_top"
v-if=
"imgCover.length>0"
:style=
"
{backgroundImage:'url('+imgCover[0].Url+')'}">
</div>
<div
class=
"detOneModel"
>
<label>
<span
class=
"main-title"
>
{{
dataList
.
countryName
}}
</span>
<span
class=
"sub-title"
>
{{
dataList
.
placeName
}}
</span>
</label>
</div>
</div>
</
template
>
<
script
>
import
{
reactive
,
toRefs
,
defineComponent
}
from
'vue'
;
import
{
useI18n
}
from
'vue-i18n'
export
default
defineComponent
({
components
:
{
},
props
:
[
'dataList'
],
setup
(
props
)
{
const
{
t
}
=
useI18n
()
const
data
=
reactive
({
imgCover
:[],
dataList
:
props
.
dataList
})
const
methods
=
{
}
data
.
imgCover
=
JSON
.
parse
(
data
.
dataList
.
imgCover
);
return
{
...
toRefs
(
data
),
...
methods
,
}
}
})
</
script
>
src/components/trip/style2.vue
deleted
100644 → 0
View file @
cbe2dfab
<
style
>
.Style2_main
{
position
:
relative
;
margin-top
:
-10px
;
padding
:
40px
0
;
background-color
:
#fff
;
border-bottom
:
1px
solid
#e5e5e5
;
z-index
:
3
;
}
.Style2_main
.wl-section-block
{
width
:
100%
;
max-width
:
1200px
;
margin
:
0
auto
;
padding
:
0
20px
;
display
:
flex
;
}
.Style2_main
.wl-section-block
>*
{
flex
:
1
;
}
.Style2_main
.tour-intro
{
padding
:
0
30px
;
}
.Style2_main
.tour_Nmae
{
margin-bottom
:
10px
;
font-size
:
24px
;
font-weight
:
bold
;
}
.Style2_main
.drop-wrap
{
position
:
relative
;
margin-bottom
:
10px
;
display
:
inline-block
;
vertical-align
:
middle
;
}
.drop-wrap
a
,
.print_box
{
margin-right
:
10px
;
margin-bottom
:
10px
;
display
:
inline-block
;
font-size
:
14px
;
color
:
#006be2
;
padding
:
4px
8px
;
transition
:
.15s
ease-in
;
}
.Style2_main
.tour-detail-list
{
padding
:
0
0
20px
;
font-size
:
16px
;
color
:
#999
;
list-style
:
none
;
}
.Style2_main
.tour-detail-list
li
{
line-height
:
2
;
}
.Style2_main
.tour-cover2
img
{
width
:
100%
;
height
:
auto
;
}
@media
only
screen
and
(
max-width
:
768px
)
{
.Style2_main
.wl-section-block
{
padding
:
0
;
display
:
block
;
}
.Style2_main
{
padding
:
0
;
}
}
</
style
>
<
template
>
<div
class=
"Style2_main"
>
<div
class=
"wl-section-block"
>
<div
class=
"tour-cover2"
v-if=
"imgCover.length>0"
>
<div
class=
"q-pa-md"
>
<q-carousel
animated
v-model=
"slide"
navigation
height=
"400px"
infinite
autoplay
transition-prev=
"slide-right"
transition-next=
"slide-left"
>
<q-carousel-slide
v-for=
"(x, i) in imgCover"
:name=
"i"
:key=
"i"
:img-src=
"x.Url"
/>
</q-carousel>
</div>
</div>
<div
class=
"tour-intro"
>
<div
class=
"tour_Nmae"
>
{{
dataList
.
title
}}
</div>
<div
class=
"drop-wrap"
>
<a>
分享
</a>
<a
class=
"print_box"
@
click=
"window.print()"
>
打印
</a>
</div>
<ul
class=
"tour-detail-list"
>
<li>
行程編號:
<template
v-if=
"dataList.currentPriceInfo&&dataList.currentPriceInfo.tcnum"
>
{{
dataList
.
currentPriceInfo
.
tcnum
.
toUpperCase
()
}}
</
template
></li>
<li>
旅遊地點:{{dataList.countryName}}
</li>
<li>
旅遊天數:{{dataList.dayNum}}天
</li>
<li>
出團日期:
<
template
v-if=
"dataList.currentPriceInfo&&dataList.currentPriceInfo.startDate"
>
{{
dataList
.
currentPriceInfo
.
startDate
}}
</
template
>
</li>
<li
style=
"margin-top:30px;"
>
<q-btn
v-if=
"dataList.currentPriceInfo&&dataList.currentPriceInfo.tcnum"
style=
"width:115px;"
type=
"a"
label=
"立即预定"
color=
"primary"
@
click=
"buyNow()"
/>
</li>
</ul>
</div>
</div>
</div>
</template>
<
script
>
import
{
reactive
,
toRefs
,
defineComponent
}
from
'vue'
;
import
{
useI18n
}
from
'vue-i18n'
export
default
defineComponent
({
components
:
{
},
props
:
[
'dataList'
],
setup
(
props
,
context
)
{
const
{
t
}
=
useI18n
()
const
data
=
reactive
({
slide
:
1
,
imgCover
:
[],
dataList
:
props
.
dataList
})
const
methods
=
{
buyNow
(){
context
.
emit
(
'showDialog'
)
}
}
data
.
imgCover
=
JSON
.
parse
(
data
.
dataList
.
imgCover
);
return
{
...
toRefs
(
data
),
...
methods
,
}
}
})
</
script
>
src/components/trip/style3.vue
deleted
100644 → 0
View file @
cbe2dfab
This diff is collapsed.
Click to expand it.
src/components/trip/style4.vue
deleted
100644 → 0
View file @
cbe2dfab
<
style
>
.wl-section-block
{
width
:
100%
;
max-width
:
1200px
;
margin
:
0
auto
;
}
.section-tour
{
margin-bottom
:
30px
!important
;
padding
:
30px
30px
0
;
border
:
1px
solid
#e5e5e5
;
background-color
:
#fff
;
}
.section-tour
.isHiden4
{
height
:
450px
;
overflow
:
hidden
;
}
.toggle_down
:before
{
content
:
""
;
width
:
100%
;
position
:
absolute
;
top
:
-100px
;
left
:
0
;
z-index
:
2
;
height
:
100px
;
background-image
:
-webkit-linear-gradient
(
-90deg
,
rgba
(
255
,
255
,
255
,
0
),
#fff
);
background-image
:
-moz-linear-gradient
(
-90deg
,
rgba
(
255
,
255
,
255
,
0
),
#fff
);
background-image
:
-o-linear-gradient
(
-90deg
,
rgba
(
255
,
255
,
255
,
0
),
#fff
);
background-image
:
linear-gradient
(
180deg
,
rgba
(
255
,
255
,
255
,
0
),
#fff
);
}
</
style
>
<
template
>
<div>
<section
class=
"section-tour wl-section-block"
>
<div
class=
"todayTitle"
>
行程特色
</div>
<div
class=
"featureBox"
>
<template
v-if=
"showType==3"
>
<div
class=
"feature-inner"
v-html=
"htmlData"
:class=
"
{'isHiden4':isShow}">
</div>
</
template
>
<
template
v-if=
"showType>=4"
>
<div
class=
"feature-inner"
v-html=
"htmlData"
:class=
"
{'isHiden4':isShow}">
</div>
</
template
>
<div
class=
"collapse_toggle"
v-if=
"!isShow"
>
<i
class=
"iconfont iconarrow-top"
@
click=
"isShow=true"
></i>
</div>
<div
class=
"collapse_toggle toggle_down"
v-else
>
<i
class=
"iconfont iconarrowdown"
@
click=
"isShow=false"
></i>
</div>
</div>
</section>
</div>
</template>
<
script
>
import
{
reactive
,
toRefs
,
defineComponent
}
from
'vue'
;
import
{
useI18n
}
from
'vue-i18n'
import
{
GetHtml
}
from
'src/utils/tools'
export
default
defineComponent
({
components
:
{
},
props
:
[
'dataList'
],
setup
(
props
)
{
const
{
t
}
=
useI18n
()
const
data
=
reactive
({
TripConfig
:
{},
isShow
:
false
,
showType
:
-
1
,
dataList
:
props
.
dataList
,
htmlData
:
''
})
const
methods
=
{
}
if
(
localStorage
.
baseifo
)
{
data
.
TripConfig
=
JSON
.
parse
(
localStorage
.
getItem
(
'baseifo'
));
}
if
(
data
.
TripConfig
.
TripConfig
.
TripFeatureIsOpen
==
1
)
{
data
.
isShow
=
false
}
else
{
data
.
isShow
=
true
;
}
data
.
showType
=
data
.
dataList
.
feature
.
featureType
;
if
(
data
.
dataList
.
feature
.
featureContent
==
3
){
data
.
htmlData
=
GetHtml
(
data
.
dataList
.
feature
.
featureContent
)
}
if
(
data
.
dataList
.
feature
.
featureContent
>=
4
){
data
.
htmlData
=
GetHtml
(
data
.
dataList
.
feature
.
featureHtml
)
}
return
{
...
toRefs
(
data
),
...
methods
,
}
}
})
</
script
>
src/components/trip/style5.vue
deleted
100644 → 0
View file @
cbe2dfab
<
style
>
.wl-section-block
{
width
:
100%
;
max-width
:
1200px
;
margin
:
0
auto
;
}
.section-tour
{
margin-bottom
:
30px
!important
;
padding
:
30px
30px
0
;
border
:
1px
solid
#e5e5e5
;
background-color
:
#fff
;
}
.style5_item_title
{
padding
:
20px
0
;
text-align
:
center
;
width
:
100%
;
}
.fee_title
{
color
:
#333
;
font-size
:
18px
;
font-family
:
PingFangR
;
}
.fee_line
{
text-align
:
center
;
color
:
#ccc
;
font-size
:
12px
;
width
:
100%
;
}
.fee_line
{
width
:
32px
;
height
:
2px
;
background
:
#ee4454
;
display
:
inline-block
;
}
.expense
{
/* display: flex; */
margin
:
30px
auto
;
width
:
100%
;
}
.detail-box
.expense
.left
{
width
:
100%
;
text-align
:
center
;
font-size
:
17px
;
margin-bottom
:
20px
;
font-family
:
PingFangR
;
}
.detail-box
.expense
.right
{
/* -webkit-box-flex: 1;
flex: 1; */
overflow
:
hidden
;
font-size
:
16px
;
line-height
:
25px
;
color
:
#666
;
text-align
:
left
;
}
.section-tour
.isHiden5
{
height
:
450px
;
overflow
:
hidden
;
}
.toggle_down
:before
{
content
:
""
;
width
:
100%
;
position
:
absolute
;
top
:
-100px
;
left
:
0
;
z-index
:
2
;
height
:
100px
;
background-image
:
-webkit-linear-gradient
(
-90deg
,
rgba
(
255
,
255
,
255
,
0
),
#fff
);
background-image
:
-moz-linear-gradient
(
-90deg
,
rgba
(
255
,
255
,
255
,
0
),
#fff
);
background-image
:
-o-linear-gradient
(
-90deg
,
rgba
(
255
,
255
,
255
,
0
),
#fff
);
background-image
:
linear-gradient
(
180deg
,
rgba
(
255
,
255
,
255
,
0
),
#fff
);
}
</
style
>
<
template
>
<div>
<section
class=
"section-tour wl-section-block"
>
<div
class=
"style5_item_title detail-box"
>
<div
:class=
"
{'isHiden5':isShow}">
<div
class=
"fee_title"
>
费用
</div>
<div
class=
"fee_line"
>
<small
class=
"s"
></small>
</div>
<div
style=
"color:#ccc"
>
Expense
</div>
<div
class=
"expense"
>
<div
class=
"left"
>
费用包含
</div>
<div
class=
"right"
>
<div
v-html=
"htmlData1"
></div>
</div>
</div>
<div
class=
"expense"
>
<div
class=
"left"
>
自理费用
</div>
<div
class=
"right"
>
<div
v-html=
"htmlData2"
></div>
</div>
</div>
<div
class=
"fee_title"
>
购物说明
</div>
<div
class=
"fee_line"
>
<small
class=
"s"
></small>
</div>
<div
style=
"color:#ccc"
>
Expense
</div>
<div
class=
"expense"
>
<div
class=
"left"
></div>
<div
class=
"right"
>
<div
v-html=
"htmlData3"
></div>
</div>
</div>
<div
class=
"fee_title"
>
预订须知
</div>
<div
class=
"fee_line"
>
<small
class=
"s"
></small>
</div>
<div
style=
"color:#ccc"
>
Tips
</div>
<div
class=
"expense"
>
<div
class=
"left"
>
重要提示
</div>
<div
class=
"right"
>
<div
v-html=
"htmlData4"
></div>
</div>
</div>
<div
class=
"expense"
>
<div
class=
"left"
>
{{
$t
(
'v103.scheduledTripDetails.style.d4'
)
}}
</div>
<div
class=
"right"
>
<div
v-html=
"htmlData5"
></div>
</div>
</div>
<div
class=
"fee_title"
>
签证
</div>
<div
class=
"fee_line"
>
<small
class=
"s"
></small>
</div>
<div
style=
"color:#ccc"
>
Visa
</div>
<div
class=
"expense"
>
<div
class=
"left"
>
签证须知
</div>
<div
class=
"right"
>
<div
v-html=
"dataList.feature.visaRemark"
></div>
</div>
</div>
<div
class=
"fee_title"
>
同行备注
</div>
<div
class=
"fee_line"
>
<small
class=
"s"
></small>
</div>
<div
style=
"color:#ccc"
>
Remark
</div>
<div
class=
"expense"
>
<div
class=
"left"
></div>
<div
class=
"right"
>
<div
v-html=
"dataList.feature.b2BRemark"
></div>
</div>
</div>
</div>
<div
class=
"collapse_toggle"
v-if=
"!isShow"
>
<i
class=
"iconfont iconarrow-top"
@
click=
"isShow=true"
></i>
</div>
<div
class=
"collapse_toggle toggle_down"
v-else
>
<i
class=
"iconfont iconarrowdown"
@
click=
"isShow=false"
></i>
</div>
</div>
</section>
</div>
</
template
>
<
script
>
import
{
reactive
,
toRefs
,
defineComponent
,
}
from
'vue'
;
import
{
useI18n
}
from
'vue-i18n'
import
{
GetHtml
}
from
'src/utils/tools'
export
default
defineComponent
({
components
:
{
},
props
:
[
'dataList'
],
setup
(
props
)
{
const
{
t
}
=
useI18n
()
const
data
=
reactive
({
TripConfig
:
{},
isShow
:
false
,
dataList
:
props
.
dataList
,
htmlData1
:
''
,
htmlData2
:
''
,
htmlData3
:
''
,
htmlData4
:
''
,
htmlData5
:
''
,
})
const
methods
=
{
}
if
(
localStorage
.
baseifo
)
{
data
.
TripConfig
=
JSON
.
parse
(
localStorage
.
getItem
(
'baseifo'
));
}
if
(
data
.
TripConfig
.
TripConfig
.
NoticeItemIsOpen
==
1
)
{
data
.
isShow
=
false
;
}
else
{
data
.
isShow
=
true
;
}
data
.
htmlData1
=
GetHtml
(
data
.
dataList
.
feature
.
feeInclude
)
data
.
htmlData2
=
GetHtml
(
data
.
dataList
.
feature
.
feeNonInclude
)
data
.
htmlData3
=
GetHtml
(
data
.
dataList
.
feature
.
shopRemark
)
data
.
htmlData4
=
GetHtml
(
data
.
dataList
.
feature
.
importantTip
)
data
.
htmlData5
=
GetHtml
(
data
.
dataList
.
feature
.
warmTip
)
return
{
...
toRefs
(
data
),
...
methods
,
}
}
})
</
script
>
src/components/trip/style6.vue
deleted
100644 → 0
View file @
cbe2dfab
This diff is collapsed.
Click to expand it.
src/components/trip/tripList.vue
deleted
100644 → 0
View file @
cbe2dfab
<
template
>
<div
class=
"q-mt-lg q-mb-lg"
>
<div
class=
"section-block download1"
>
<!--
<div
class=
"group-title"
>
{{
plugData
.
Title
}}
</div>
-->
<q-table
v-if=
"plugData&&plugData.length>0 && !$q.screen.xs"
:pagination
.
sync=
"paginationDesktop"
:data=
"plugData"
:columns=
"columns"
row-key=
"id"
:filter=
"filter"
table-header-class=
"travel-list"
card-class=
"travel-list"
:pagination-label=
"formatLabel"
rows-per-page-label=
" "
:rows-per-page-options=
"[]"
TCNUM-data-labe=
"沒有找到適合的團期"
>
<template
v-slot:body=
"props"
>
<q-tr
:props=
"props"
>
<q-td
key=
"startDate"
:props=
"props"
>
<span
class=
"text-red"
>
{{
props
.
row
.
startDate
}}
</span>
</q-td>
<q-td
key=
"title"
:props=
"props"
>
<div
style=
"max-width:435px;white-space: pre-wrap;"
>
<a>
{{
props
.
row
.
title
}}
</a>
</div>
</q-td>
<q-td
key=
"dayNum"
:props=
"props"
>
{{
props
.
row
.
dayNum
}}
</q-td>
<q-td
key=
"FlightStatus"
:props=
"props"
>
<q-icon
color=
"grey"
name=
"iconfont iconhangbanxinxicopy"
class=
"cursor-pointer"
size=
"14"
>
<q-popup-proxy
:offset=
"[260, 3]"
>
<q-banner
class=
"bg-black text-white"
>
<table
class=
"tripDetails_table"
>
<tr>
<th>
出發時間
</th>
<th>
抵達時間
</th>
<th>
出發地點
</th>
<th>
抵達地點
</th>
<th>
航空公司
</th>
</tr>
<tr
v-for=
"(item,index) in props.row.priceFlight"
:key=
"index"
>
<td>
{{
item
.
startDate
.
substring
(
5
).
replace
(
'-'
,
'/'
)
}}
{{
item
.
departureTime
}}
</td>
<td>
{{
item
.
arriveDate
.
substring
(
5
).
replace
(
'-'
,
'/'
)
}}
{{
item
.
arrivalTime
}}
</td>
<td>
{{
item
.
departureAirPortName
}}
</td>
<td>
{{
item
.
arrivalAirPortName
}}
</td>
<td>
{{
item
.
alName
}}
</td>
</tr>
</table>
</q-banner>
</q-popup-proxy>
</q-icon>
</q-td>
<q-td
key=
"b2BPrice"
:props=
"props"
>
<span
caption
>
$
</span>
<span
class=
"text-subtitle2 text-weight-medium"
>
{{
props
.
row
.
b2BPrice
}}
</span>
</q-td>
<q-td
key=
"totalSeat"
:props=
"props"
>
<span>
{{
props
.
row
.
totalSeat
}}
</span>
</q-td>
<q-td
key=
"seat"
:props=
"props"
>
<span>
{{
props
.
row
.
seat
}}
</span>
</q-td>
<q-td
key=
"isSubstitution"
:props=
"props"
>
<span
:class=
"
{'text-orange':props.row.seat>0,'text-pink':(props.row.seat==0
&&
props.row.isSubstitution),'text-red':(props.row.seat==0
&&
!props.row.isSubstitution)}">
{{
props
.
row
.
seat
>
0
?
'有名額'
:(
props
.
row
.
seat
==
0
&&
props
.
row
.
isSubstitution
?
'可候補'
:
'名額已滿'
)
}}
</span>
</q-td>
<q-td
key=
"tcid"
:props=
"props"
>
<q-btn
type=
"a"
:label=
"props.row.seat>0||props.row.isSubstitution?'報名GO!':'無法預訂'"
:color=
"props.row.seat>0||props.row.isSubstitution?'indigo':'grey'"
rounded
unelevated
:disable=
"props.row.seat==0&&props.row.isSubstitution"
@
click=
"goSignUp(props.row.seat)"
/>
</q-td>
</q-tr>
</
template
>
</q-table>
<q-table
:pagination
.
sync=
"pagination"
v-if=
"plugData&&plugData.length>0 && $q.screen.xs"
grid
:data=
"plugData"
:columns=
"columns"
row-key=
"id"
:filter=
"filter"
table-header-class=
"travel-list"
card-class=
"travel-list"
:pagination-label=
"formatLabel"
rows-per-page-label=
" "
:rows-per-page-options=
"[]"
TCNUM-data-labe=
"沒有找到適合的團期"
>
<
template
v-slot:item=
"props"
>
<div
class=
"col-xs-12 col-sm-6 col-md-4 col-lg-3 grid-style-transition"
>
<q-card
class=
"q-mb-md q-pt-xs q-pb-xs"
flat
>
<q-list>
<q-item>
<q-item-section>
<q-item-label
class=
"text-grey"
>
出發日期
</q-item-label>
<q-item-label
class=
"text-red"
>
{{
props
.
row
.
startDate
}}
</q-item-label>
</q-item-section>
</q-item>
<q-item>
<q-item-section>
<q-item-label
class=
"text-grey"
>
團體名稱
</q-item-label>
<q-item-label>
{{
props
.
row
.
title
}}
</q-item-label>
</q-item-section>
</q-item>
<q-item>
<q-item-section>
<q-item-label
class=
"text-grey"
>
天數
</q-item-label>
<q-item-label>
{{
props
.
row
.
dayNum
}}
</q-item-label>
</q-item-section>
</q-item>
<q-item>
<q-item-section>
<q-item-label
class=
"text-grey"
>
交通
</q-item-label>
<q-item-label>
<!--v-if="props.row.FlightStatus"-->
<q-icon
color=
"grey"
name=
"iconfont iconhangbanxinxicopy"
size=
"14"
/>
</q-item-label>
</q-item-section>
</q-item>
<q-item>
<q-item-section>
<q-item-label
class=
"text-grey"
>
售價
</q-item-label>
<q-item-label>
<span
caption
>
$
</span>
<span
class=
"text-subtitle2 text-weight-medium"
>
{{
props
.
row
.
b2BPrice
}}
</span>
<span>
起
</span>
</q-item-label>
</q-item-section>
</q-item>
<q-item>
<q-item-section>
<q-item-label
class=
"text-grey"
>
狀態
</q-item-label>
<q-item-label>
<span
:class=
"
{'text-orange':props.row.seat>0,'text-pink':(props.row.seat==0
&&
props.row.isSubstitution),'text-red':(props.row.seat==0
&&
!props.row.isSubstitution)}">
{{
props
.
row
.
seat
>
0
?
'有名額'
:(
props
.
row
.
seat
==
0
&&
props
.
row
.
isSubstitution
?
'可候補'
:
'名額已滿'
)
}}
</span>
</q-item-label>
</q-item-section>
</q-item>
<q-item>
<q-item-section>
<q-btn
type=
"a"
:label=
"props.row.seat>0||props.row.isSubstitution?'報名GO!':'無法預訂'"
:color=
"props.row.seat>0||props.row.isSubstitution?'indigo':'grey'"
rounded
unelevated
:disable=
"props.row.seat==0&&props.row.isSubstitution"
@
click=
"goSignUp(props.row.seat)"
/>
</q-item-section>
</q-item>
</q-list>
</q-card>
</div>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
export
default
{
props
:
[
"plugData"
],
data
()
{
return
{
pagination
:
{
sortBy
:
"id"
,
descending
:
false
,
page
:
1
,
rowsPerPage
:
1
},
paginationDesktop
:
{
sortBy
:
"id"
,
descending
:
false
,
page
:
1
,
rowsPerPage
:
5
},
filter
:
""
,
columns
:
[{
name
:
"startDate"
,
required
:
true
,
label
:
"出發日期"
,
align
:
"left"
,
sortable
:
true
},
{
name
:
"title"
,
label
:
"團體名稱"
,
align
:
"left"
,
field
:
"title"
},
{
name
:
"dayNum"
,
label
:
"天數"
,
align
:
"left"
,
field
:
"dayNum"
},
{
name
:
"FlightStatus"
,
label
:
"交通"
,
align
:
"left"
,
field
:
"FlightStatus"
},
{
name
:
"b2BPrice"
,
label
:
"售價"
,
align
:
"left"
,
field
:
"b2BPrice"
},
{
name
:
"totalSeat"
,
label
:
"位數"
,
align
:
"left"
,
field
:
"totalSeat"
},
{
name
:
"seat"
,
label
:
"可報名"
,
align
:
"left"
,
field
:
"seat"
},
{
name
:
"isSubstitution"
,
label
:
"狀態"
,
align
:
"left"
,
field
:
"isSubstitution"
},
{
name
:
"tcid"
,
label
:
"報名"
,
align
:
"left"
,
field
:
"tcid"
}
],
};
},
methods
:
{
formatLabel
(
firstRowIndex
,
endRowIndex
,
totalRowsNumber
)
{
return
""
;
},
//报名
goSignUp
(
seat
){
if
(
seat
>
0
){
this
.
$emit
(
'showDialog'
);
}
}
},
mounted
()
{
}
};
</
script
>
<
style
>
.my-th-head
{
font-size
:
18px
!important
;
font-weight
:
600
!important
;
}
.download1
.group-title
{
margin
:
0
;
padding
:
0
;
line-height
:
unset
;
margin-bottom
:
20px
;
font-size
:
24px
;
text-align
:
center
;
font-weight
:
600
;
text-align
:
center
;
}
.travel-list
th
{
font-size
:
16px
!important
;
}
.travel-list
td
{
font-size
:
14px
!important
;
}
.tripDetails_table
td
{
text-align
:
center
;
padding
:
6px
;
}
.tripDetails_table
th
{
width
:
100px
;
}
</
style
>
src/components/trip/tripcalendar.vue
deleted
100644 → 0
View file @
cbe2dfab
This diff is collapsed.
Click to expand it.
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