Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
million
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
viitto
million
Commits
7d84f2fe
Commit
7d84f2fe
authored
Dec 18, 2025
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
11
parent
bc963964
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
279 additions
and
133 deletions
+279
-133
utils.js
src/boot/utils.js
+4
-1
hor-big-one.vue
src/components/navs/hor-big-one.vue
+27
-9
newHor-btm.vue
src/components/navs/newHor-btm.vue
+248
-123
No files found.
src/boot/utils.js
View file @
7d84f2fe
...
...
@@ -20,12 +20,13 @@ Vue.prototype.$message = message
Vue
.
prototype
.
$product
=
product
//域名管理对象
Vue
.
prototype
.
domainManager
=
function
()
{
let
domainUrl
=
"http://192.168.5.
214
"
;
let
domainUrl
=
"http://192.168.5.
46
"
;
let
domainNameUrl
=
this
.
GetDomain
();
if
(
domainNameUrl
.
indexOf
(
'oytour'
)
!==
-
1
)
{
domainUrl
=
"https://reborn.oytour.com"
;
}
domainUrl
=
"https://reborn.oytour.com"
;
var
obj
=
{
//主地址
DomainUrl
:
domainUrl
,
...
...
@@ -224,6 +225,8 @@ Vue.prototype.CommonJump = function (path, obj, type = 'push') {
});
}
}
Vue
.
prototype
.
$user
=
user
Vue
.
prototype
.
createCalendar
=
function
(
dateStr
)
{
var
days
=
[];
...
...
src/components/navs/hor-big-one.vue
View file @
7d84f2fe
...
...
@@ -346,7 +346,7 @@
</q-menu>
</q-btn>
-->
<q-btn
flat
dense
class=
"social-btn"
>
<q-btn
flat
dense
class=
"social-btn"
v-if=
"yyzlImg&&yyzlImg!=''"
>
<img
src=
"../../assets/img/wechat.png"
class=
"btn-img"
style=
"width:25px;height:25px;display: block;"
/>
<div
class=
"social-pop"
>
<div
class=
"arrow"
></div>
...
...
@@ -356,7 +356,7 @@
</div>
</div>
</q-btn>
<q-btn
flat
dense
class=
"social-btn"
>
<q-btn
flat
dense
class=
"social-btn"
v-if=
"xhsImgList&&xhsImgList.length>0"
>
<img
src=
"../../assets/img/xiaohongshu.png"
class=
"btn-img"
style=
"width:25px;height:25px;display: block;"
/>
<div
class=
"social-pop xhs-pop"
>
<div
class=
"arrow"
></div>
...
...
@@ -368,13 +368,22 @@
</div>
</div>
</q-btn>
<q-btn
flat
dense
class=
"social-btn"
v-if=
"wbImg&&wbImg!=''"
>
<img
src=
"../../assets/img/weibo.png"
class=
"btn-img"
style=
"width:25px;height:25px;display: block;"
/>
<div
class=
"social-pop"
>
<div
class=
"arrow"
></div>
<div
class=
"social-qrcode"
>
<img
:src=
"wbImg"
/>
<div
class=
"social-tip"
>
扫码关注微博
</div>
</div>
</div>
</q-btn>
<q-btn
v-if=
"LoginUser.id
<
=
0
"
label=
"注册"
flat
></q-btn>
<template
v-if=
"LoginUser.token"
>
<q-btn-dropdown
style=
"color: #444; font-weight: bold"
class=
"q-ml-lg"
unelevated
>
<template
v-slot:label
>
<img
class=
"avatar"
v-if=
"LoginUser.photo"
:src=
"LoginUser.photo"
/>
<img
class=
"avatar"
v-else
src=
"../../assets/img/avatar.png"
/>
<!--
<span>
{{
LoginUser
.
name
||
LoginUser
.
mailbox
}}
</span>
-->
</
template
>
<div
class=
"row no-wrap"
>
...
...
@@ -520,12 +529,9 @@
selectedAreaId
:
""
,
isHome
:
false
,
isSearch
:
true
,
yyzlImg
:
"https://imgfile.oytour.com/static/b2c/yyzl.jpg"
,
xhsImgList
:
[
"https://imgfile.oytour.com/static/b2c/JPtravel.png"
,
"https://imgfile.oytour.com/static/b2c/RoyalHolidays1.png"
,
"https://imgfile.oytour.com/static/b2c/RoyalHolidays2.png"
,
]
yyzlImg
:
""
,
//印象之旅
xhsImgList
:
[],
//小红书
wbImg
:
""
,
//微博
};
},
watch
:
{
...
...
@@ -562,6 +568,18 @@
if
(
localStorage
.
b2bUser
)
{
this
.
LoginUser
=
JSON
.
parse
(
window
.
localStorage
.
getItem
(
"b2bUser"
));
}
var
baseInfo
=
JSON
.
parse
(
window
.
localStorage
.
getItem
(
'baseifo'
));
if
(
baseInfo
&&
baseInfo
.
Config
&&
baseInfo
.
Config
.
platObj
)
{
if
(
baseInfo
.
Config
.
platObj
.
yyzlImg
)
{
this
.
yyzlImg
=
baseInfo
.
Config
.
platObj
.
yyzlImg
;
}
if
(
baseInfo
.
Config
.
platObj
.
xhsImgList
&&
baseInfo
.
Config
.
platObj
.
xhsImgList
.
length
>
0
)
{
this
.
xhsImgList
=
baseInfo
.
Config
.
platObj
.
xhsImgList
;
}
if
(
baseInfo
.
Config
.
platObj
.
wbImg
)
{
this
.
wbImg
=
baseInfo
.
Config
.
platObj
.
wbImg
;
}
}
var
newStartDate
=
new
Date
();
var
newStartDateStr
=
this
.
formatDate
(
newStartDate
.
getFullYear
(),
...
...
src/components/navs/newHor-btm.vue
View file @
7d84f2fe
<
style
lang=
"scss"
scoped
>
.newHor_BtmContent
{
width
:
100%
;
background
:
$primary
;
padding-top
:
60px
;
}
.newLogoText
span
:last-child
{
font-size
:
1
.1rem
;
top
:
-4px
;
}
.tracking-0
{
transition
:
all
.3s
;
}
.tracking-0
:hover
{
/* opacity: .5; */
}
.tracking-1
{
color
:
#fff
;
}
.tracking-1
a
{
color
:
inherit
;
cursor
:
pointer
;
display
:
inline-block
;
text-decoration
:
none
;
transition
:
opacity
.3s
;
}
.tracking-1
a
:hover
{
/* opacity: .5; */
}
.
tracking-1
span
:
:
after
{
.newHor_BtmContent
{
width
:
100%
;
background
:
$primary
;
padding-top
:
60px
;
}
.newLogoText
span
:last-child
{
font-size
:
1
.1rem
;
top
:
-4px
;
}
.tracking-0
{
transition
:
all
.3s
;
}
.tracking-0
:hover
{
/* opacity: .5; */
}
.tracking-1
{
color
:
#fff
;
}
.tracking-1
a
{
color
:
inherit
;
cursor
:
pointer
;
display
:
inline-block
;
text-decoration
:
none
;
transition
:
opacity
.3s
;
}
.tracking-1
a
:hover
{
/* opacity: .5; */
}
.
tracking-1
span
:
:
after
{
content
:
""
;
display
:
block
;
height
:
1px
;
...
...
@@ -37,92 +44,174 @@
transform
:
rotate
(
-50deg
)
translateY
(
-50%
);
background-color
:
#fff
;
width
:
6px
;
}
.l-footer--list
a
,
.newHorw
a
{
text-decoration
:
none
;
}
.
l-footer--list
li
:
:
after
{
background
:
linear-gradient
(
to
bottom
,
$primary
,
#fff
,
$primary
);
content
:
""
;
height
:
100%
;
position
:
absolute
;
right
:
0
;
top
:
0
;
width
:
1px
;
}
.l-footer--list
li
a
p
:first-child
{
font-size
:
1rem
;
transition
:
all
.3s
;
}
.l-footer--list
li
a
:hover
p
:first-child
{
opacity
:
.5
;
}
.l-footer--list
li
{
padding
:
0
20px
;
}
.l-footer--list
li
:last-child::after
{
width
:
0
;
}
.newHorText
{
padding
:
60px
0
;
}
.newHorText
a
{
text-decoration
:
none
;
color
:
#fff
;
position
:
relative
;
padding
:
0
20px
;
}
.newHorText
a
span
{
transition
:
all
.3s
;
}
.newHorText
a
:hover
span
{
opacity
:
.5
;
}
.
newHorText
a
:
:
after
{
content
:
""
;
display
:
block
;
height
:
1px
;
position
:
absolute
;
right
:
-3px
;
top
:
calc
(
50%
-
0
.5px
);
transform
:
rotate
(
-50deg
)
translateY
(
-50%
);
background-color
:
#fff
;
width
:
6px
;
}
.newHorText
a
:last-child::after
{
width
:
0
;
}
.newHorw
{
opacity
:
.5
;
padding
:
12px
0
;
}
.newHorw
,
.newHorw
a
{
color
:
#fff
;
}
.newHor-right
span
{
position
:
relative
;
}
.
newHor-right
span
:
:
after
{
content
:
""
;
display
:
block
;
height
:
1px
;
position
:
absolute
;
right
:
-3px
;
top
:
calc
(
50%
-
0
.5px
);
transform
:
rotate
(
-50deg
)
translateY
(
-50%
);
background
:
#fff
;
width
:
6px
;
}
}
.l-footer--list
a
,
.newHorw
a
{
text-decoration
:
none
;
}
.
l-footer--list
li
:
:
after
{
background
:
linear-gradient
(
to
bottom
,
$primary
,
#fff
,
$primary
);
content
:
""
;
height
:
100%
;
position
:
absolute
;
right
:
0
;
top
:
0
;
width
:
1px
;
}
.l-footer--list
li
a
p
:first-child
{
font-size
:
1rem
;
transition
:
all
.3s
;
}
.l-footer--list
li
a
:hover
p
:first-child
{
opacity
:
.5
;
}
.l-footer--list
li
{
padding
:
0
20px
;
}
.l-footer--list
li
:last-child::after
{
width
:
0
;
}
.newHorText
{
padding
:
60px
0
;
}
.newHorText
a
{
text-decoration
:
none
;
color
:
#fff
;
position
:
relative
;
padding
:
0
20px
;
}
.newHorText
a
span
{
transition
:
all
.3s
;
}
.newHorText
a
:hover
span
{
opacity
:
.5
;
}
.
newHorText
a
:
:
after
{
content
:
""
;
display
:
block
;
height
:
1px
;
position
:
absolute
;
right
:
-3px
;
top
:
calc
(
50%
-
0
.5px
);
transform
:
rotate
(
-50deg
)
translateY
(
-50%
);
background-color
:
#fff
;
width
:
6px
;
}
.newHorText
a
:last-child::after
{
width
:
0
;
}
.newHorw
{
opacity
:
.5
;
padding
:
12px
0
;
}
.newHorw
,
.newHorw
a
{
color
:
#fff
;
}
.newHor-right
span
{
position
:
relative
;
}
.
newHor-right
span
:
:
after
{
content
:
""
;
display
:
block
;
height
:
1px
;
position
:
absolute
;
right
:
-3px
;
top
:
calc
(
50%
-
0
.5px
);
transform
:
rotate
(
-50deg
)
translateY
(
-50%
);
background
:
#fff
;
width
:
6px
;
}
</
style
>
<
style
scoped
>
@import
url("../../assets/css/home.css")
;
@import
url("../../assets/css/app.css")
;
</
style
>
<
style
scoped
>
/* ===== 平台整体(三列) ===== */
.platImg
{
display
:
flex
;
gap
:
40px
;
/* 三列之间的间距 */
align-items
:
flex-start
;
justify-content
:
flex-start
;
margin-top
:
16px
;
}
/* ===== 单列 ===== */
.plat-col
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
gap
:
10px
;
min-width
:
120px
;
/* 保证三列对齐 */
}
/* 平台标题 */
.plat-title
{
font-size
:
13px
;
color
:
rgba
(
255
,
255
,
255
,
.8
);
line-height
:
1
;
white-space
:
nowrap
;
}
/* 二维码区域 */
.plat-qrs
{
display
:
flex
;
gap
:
10px
;
flex-wrap
:
wrap
;
/* 小红书多张自动换行 */
justify-content
:
center
;
}
/* 二维码 */
.plat-qrs
img
{
width
:
80px
;
height
:
80px
;
object-fit
:
cover
;
border-radius
:
6px
;
background
:
#fff
;
box-shadow
:
0
4px
10px
rgba
(
0
,
0
,
0
,
.12
);
}
/* 手机端 */
@media
(
max-width
:
768px
)
{
.platImg
{
justify-content
:
center
;
gap
:
24px
;
}
.plat-qrs
img
{
width
:
60px
;
height
:
60px
;
}
}
</
style
>
<
template
>
<div
class=
"relative newHor_BtmContent"
v-if=
"dataList&&dataList.Config"
>
<div
class=
"homeContainer"
>
<div
v-if=
"dataList.Config.FootLogo2"
class=
"row justify-center"
style=
"margin-bottom: 30px;"
>
<q-img
:src=
"dataList.Config.FootLogo2"
style=
"width:40px;height:auto;"
/>
<q-img
:src=
"dataList.Config.FootLogo2"
style=
"width:40px;height:auto;"
/>
</div>
<div
class=
"row justify-between items-end"
>
...
...
@@ -146,17 +235,15 @@
<div
:class=
"[!$q.platform.is.desktop?'hidden':'']"
>
<ul
class=
"l-footer--list row"
>
<li
class=
"l-footer--list__item relative cursor-pointer"
v-for=
"(item,index) in plugData.MenuList"
>
<a
@
click=
"OpenNewUrl(item.LinkUrl)"
class=
"flex justify-center group"
>
<p
class=
"font-serif writing-modes-vertical leading-28 tracking-5 text-white
<a
@
click=
"OpenNewUrl(item.LinkUrl)"
class=
"flex justify-center group"
>
<p
class=
"font-serif writing-modes-vertical leading-28 tracking-5 text-white
transition-base pointer-events-none"
>
{{
item
.
MenuName
}}
</p>
<p
class=
"font-serifEn writing-modes-vertical text-s
<p
class=
"font-serifEn writing-modes-vertical text-s
tracking-normal text-stone pointer-events-none"
>
{{
item
.
MenuSubName
}}
</p>
</a>
</li>
</ul>
</div>
<div
:class=
"[$q.platform.is.desktop?'':'q-pt-lg']"
>
<ul
class=
"text-xs font-light newHor-right"
>
<!--
<li
class=
"flex -mx-4 my-2 tracking-1 sm:justify-end"
>
...
...
@@ -197,18 +284,37 @@
</li>
</ul>
</div>
<div
class=
"platImg"
>
<!-- 公众号 -->
<div
class=
"plat-col"
v-if=
"yyzlImg&&yyzlImg!=''"
>
<div
class=
"plat-title"
>
公众号
</div>
<div
class=
"plat-qrs"
>
<img
:src=
"yyzlImg"
/>
</div>
</div>
<!-- 小红书 -->
<div
class=
"plat-col"
v-if=
"xhsImgList&&xhsImgList.length>0"
>
<div
class=
"plat-title"
>
小红书
</div>
<div
class=
"plat-qrs"
>
<img
v-for=
"(item, index) in xhsImgList"
:key=
"index"
:src=
"item"
/>
</div>
</div>
<!-- 微博 -->
<div
class=
"plat-col"
v-if=
"wbImg&&wbImg!=''"
>
<div
class=
"plat-title"
>
微博
</div>
<div
class=
"plat-qrs"
>
<img
:src=
"wbImg"
/>
</div>
</div>
</div>
</div>
<div
class=
"row newHorText justify-center"
:class=
"[$q.platform.is.desktop?'':'hidden']"
>
<a
@
click=
"OpenNewUrl(item.LinkUrl)"
v-for=
"(item,index) in plugData.BottomList"
target=
"_self"
class=
"text-xs font-serif icon-slash icon-slash-white transition-base cursor-pointer"
>
<div
class=
"row newHorText justify-center"
:class=
"[$q.platform.is.desktop?'':'hidden']"
>
<a
@
click=
"OpenNewUrl(item.LinkUrl)"
v-for=
"(item,index) in plugData.BottomList"
target=
"_self"
class=
"text-xs font-serif icon-slash icon-slash-white transition-base cursor-pointer"
>
<span>
{{
item
.
LinkTitle
}}
</span>
</a>
</div>
</div>
<div
class=
"container newHorw"
>
<div
class=
"flex items-center justify-center font-light text-xs"
>
<div
class=
"hidden icon-slash icon-slash-white"
>
...
...
@@ -216,7 +322,8 @@
</div>
<div
:class=
"[$q.platform.is.desktop?'text-center':'text-left q-px-md']"
>
<a
href=
"https://beian.miit.gov.cn/#/Integrated/index"
target=
"_blank"
style=
"text-decoration: none;"
>
蜀ICP备13000760号 ©
</a>
2010-
{{
year
}}
{{
dataList
.
Config
.
Name
}}
. All Rights Reserved. 旅行社业务经营许可证
{{
dataList
.
Config
.
UnifyCode
}}
style=
"text-decoration: none;"
>
蜀ICP备13000760号 ©
</a>
2010-
{{
year
}}
{{
dataList
.
Config
.
Name
}}
. All Rights
Reserved. 旅行社业务经营许可证
{{
dataList
.
Config
.
UnifyCode
}}
</div>
</div>
</div>
...
...
@@ -231,7 +338,10 @@
year
:
''
,
windowWidth
:
window
.
innerWidth
,
HomeData
:
[],
plugData
:
{}
plugData
:
{},
yyzlImg
:
""
,
//印象之旅
xhsImgList
:
[],
//小红书
wbImg
:
""
,
//微博
};
},
destroyed
()
{
...
...
@@ -245,8 +355,23 @@
var
myDate
=
new
Date
();
this
.
year
=
myDate
.
getFullYear
();
var
jObj
=
JSON
.
parse
(
window
.
localStorage
.
getItem
(
'HomeData'
));
this
.
HomeData
=
jObj
.
filter
(
x
=>
{
return
x
.
Id
==
'index_nav'
})
if
(
this
.
HomeData
.
length
>
0
)
this
.
plugData
=
this
.
HomeData
[
0
].
plugData
this
.
HomeData
=
jObj
.
filter
(
x
=>
{
return
x
.
Id
==
'index_nav'
})
if
(
this
.
HomeData
.
length
>
0
)
this
.
plugData
=
this
.
HomeData
[
0
].
plugData
var
baseInfo
=
JSON
.
parse
(
window
.
localStorage
.
getItem
(
'baseifo'
));
if
(
baseInfo
&&
baseInfo
.
Config
&&
baseInfo
.
Config
.
platObj
)
{
if
(
baseInfo
.
Config
.
platObj
.
yyzlImg
)
{
this
.
yyzlImg
=
baseInfo
.
Config
.
platObj
.
yyzlImg
;
}
if
(
baseInfo
.
Config
.
platObj
.
xhsImgList
&&
baseInfo
.
Config
.
platObj
.
xhsImgList
.
length
>
0
)
{
this
.
xhsImgList
=
baseInfo
.
Config
.
platObj
.
xhsImgList
;
}
if
(
baseInfo
.
Config
.
platObj
.
wbImg
)
{
this
.
wbImg
=
baseInfo
.
Config
.
platObj
.
wbImg
;
}
}
},
computed
:
{
handleResize
()
{
...
...
@@ -279,7 +404,7 @@
},
methods
:
{
navigateTo
(
urlInfo
)
{
if
(
urlInfo
.
IsNewOpen
===
1
)
{
if
(
urlInfo
.
IsNewOpen
===
1
)
{
window
.
open
(
urlInfo
.
NavUrl
)
}
else
{
window
.
location
.
href
=
urlINfo
.
NavUrl
...
...
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