Commit db8a449d authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/viitto/million

parents a237457b b3665fe3
......@@ -21,9 +21,9 @@ module.exports = function( /* ctx */ ) {
// --> boot files are part of "main.js"
// https://quasar.dev/quasar-cli/cli-documentation/boot-files
boot: [
'i18n',
'axios',
"utils"
],
ssr: {
pwa: true,
......
import Vue from 'vue'
import axios from 'axios'
import md5 from 'js-md5'
Vue.prototype.$axios = axios
export default ({
app
}) => {
// Set i18n instance on app
app.axios = axios
}
export {
axios
}
import Vue from 'vue'
import axios from 'axios'
import md5 from 'js-md5'
//域名管理对象
Vue.prototype.domainManager = function () {
let domainUrl = '';
domainUrl = "http://192.168.0.110";
let locationName = window.location.hostname;
if (locationName.indexOf('testerp.oytour') !== -1) {
domainUrl = "http://testapi.oytour.com";
} else if (locationName.indexOf('oytour') !== -1) {
domainUrl = "http://reborn.oytour.com";
}
var obj = {
//主地址
DomainUrl: domainUrl,
//常用提交数据URL
PostUrl: domainUrl + "/api/common/post",
};
return obj;
}
//HTTP提交数据
Vue.prototype.apipost = function (cmd, msg, successCall, faildCall) {
if (msg == null || msg == "") {
msg = {}
}
var timestamp = (new Date()).valueOf();
var apiurl = this.domainManager().PostUrl;
var token = "";
var key = "";
var tempLanguage = 0;
if (this.getLocalStorage() != null) {
token = this.getLocalStorage().token;
key = this.getLocalStorage().SecretKey;
}
var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
var postData = {
msg: msg,
cmd: cmd,
timestamp: timestamp,
token: token,
sign: md5Str,
languageId: tempLanguage
}
this.$axios.post(apiurl, postData, {
headers: {
'Content-Type': 'application/json',
'Referer-Viitto': this.$route.path
}
})
.then(res => {
successCall(res);
}, faildCall)
}
//获取缓存
Vue.prototype.getLocalStorage = function () {
var localStorageData = window.localStorage["b2bUser"];
if (localStorageData !== undefined && localStorageData != 'undefined') {
return JSON.parse(localStorageData);
} else {
return null;
}
}
//向外跳转
Vue.prototype.OpenNewUrl = function (URL){
if (URL != '') {
if (URL.indexOf("https") != -1) {
var str = 'http://' + URL.substring(8);
window.open(str, '_blank');
} else if (URL.indexOf("http") != -1) {
var str = 'http://' + URL.substring(7);
window.open(str, '_blank');
} else {
window.open("http://" + URL, '_blank');
}
}
}
......@@ -2,7 +2,7 @@
<q-header
reveal
elevated
:style="{background:'transparent',color:'#FFF'}"
:style="{background:baseData.nav.bg,color:'#FFF'}"
height-hint="98"
>
<q-toolbar style="height:60px;" class="q-pr-lg q-pl-lg">
......
<style>
.hor_BtmContent {
display: inline-block;
width: 100%;
background: #fff;
}
.hor_BtmContent .footer-top {
padding: 0 40px 18px;
background-color: #313131;
}
.hor_BtmContent .footer-link {
display: inline-block;
width: 100%;
height: 44px;
background-color: #292929;
text-align: left;
font-weight: 700;
}
.hor_BtmContent .hor_footuu li:first-child {
color: #fff;
margin-left: 24px;
}
.hor_BtmContent .hor_footuu {
margin: 0;
padding: 0;
}
.hor_BtmContent .hor_footuu li {
list-style-type: none;
display: inline-block;
margin-left: 30px;
font-size: 15px;
color: #76ccff;
line-height: 44px;
position: relative;
cursor: pointer;
}
.hor_BtmContent .hor_footuu li a {
color: #76ccff;
}
.hor_BtmContent .hor_BtmContent ul {
margin: 0;
padding: 0;
}
.hor_BtmContent .other_li:before {
position: absolute;
top: 10px;
left: -16px;
content: '';
width: 1px;
height: 25px;
background-color: rgba(58, 58, 58, .8);
}
.hor_BtmContent .foot_content {
display: flex;
justify-content: space-around;
width: 100%;
text-align: left;
}
.hor_BtmContent .footer-box {
width: 100%;
padding: 20px;
font-size: 14px;
text-align: left;
}
.hor_BtmContent .footer-box .footer_title1 {
font-size: 15px;
color: #fff;
margin-bottom: 15px;
font-weight: 400;
letter-spacing: 1px;
}
.hor_BtmContent .footer_table {
border-collapse: separate;
border-spacing: 0;
margin-bottom: 10px;
}
.hor_BtmContent .footer_table td {
color: #b1b1b1;
text-align: left;
vertical-align: middle;
font-size: 14px;
}
.hor_BtmContent .footer_tbtitle {
min-width: 100px;
color: #9bdaff !important;
}
.hor_BtmContent .footer-box>* {
display: block;
margin-bottom: 10px;
}
.hor_BtmContent .social-link a {
display: inline-block;
text-decoration: none;
width: 50px;
height: 50px;
border-radius: 50%;
color: #fff;
line-height: 49px;
text-align: center;
margin: 15px 0 0 20px;
-webkit-box-shadow: 0 3px 12px rgba(39, 39, 39, .95);
-moz-box-shadow: 0 3px 12px rgba(39, 39, 39, .95);
box-shadow: 0 3px 12px rgba(39, 39, 39, .95);
}
.hor_BtmContent .social-link a:first-child {
margin-left: 0;
}
.hor_BtmContent .foot_line {
background-color: #1bb71f
}
.hor_BtmContent .foot_fb {
background-color: #334f8d;
}
.hor_BtmContent .foot_mail {
background-color: #00a6ff;
}
.hor_BtmContent .footer_logo_block {
display: block;
margin-top: 5px;
}
.hor_BtmContent .footer_fb_group {
display: block;
width: 300px;
height: 130px;
background-color: #2b2b2b;
}
.footer_fb_group a img {
height: 100%;
min-height: initial;
width: auto;
}
.hor_BtmContent .footer_qrcode a {
display: inline-block;
width: 100px;
height: 100px;
}
.hor_BtmContent .footer_qrcode a span {
color: #fff;
letter-spacing: 2px;
}
.hor_BtmContent .branch-company {
display: flex;
flex-wrap: wrap;
width: 100%;
margin-bottom: 20px;
background-color: #2d2d2d;
}
.hor_BtmContent .footer-bottom {
width: 100%;
padding: 30px;
text-align: center;
}
.hor_BtmContent .sponsor {
display: inline-block;
}
.hor_BtmContent .sponsor>a {
float: left;
width: 40px;
text-decoration: none;
margin-right: 10px;
}
.hor_BtmContent .sponsor>a img {
width: 100%;
}
.hor_BtmContent .copyright {
display: inline-block;
width: 100%;
font-size: 13px;
margin: 20px 0;
color: #757575;
}
.hor_BtmContent .branch-company .footer-box {
width: 33%;
}
.hor_BtmContent .footer-watermark {
position: fixed;
top: 110px;
z-index: 999;
width: auto;
}
.hor_BtmContent .footer_Left {
left: 10px;
}
.hor_BtmContent .footer_Right {
right: 10px;
}
.footer-watermark>div {
width: auto;
width: 140px;
height: 140px;
margin-bottom: 10px;
}
.footer-watermark>div img {
width: 100%;
height: 100%;
}
@media only screen and (max-width: 930px) {
.hor_BtmContent .footer-top {
padding: 0 15px;
}
.hor_BtmContent .footer-link {
height: auto;
}
.hor_BtmContent .hor_footuu li:first-child {
margin-left: 24px;
}
.hor_BtmContent .hor_footuu li {
font-size: 13px;
margin-left: 28px;
}
.hor_BtmContent .foot_content {
flex-wrap: wrap;
justify-content: flex-start;
}
.hor_BtmContent .footer-box {
width: 50%;
}
}
@media only screen and (max-width: 520px) {
.hor_BtmContent .footer-box {
width: 100%;
}
}
</style>
<template>
<div class="hor_BtmContent">
<template v-if="dataList&&dataList.Config">
<div class="footer-top">
<div class="footer-link">
<ul class="hor_footuu">
<li>{{dataList.Config.Name}}</li>
<li class="other_li" v-for="(item,index) in dataList.FooterList" :key="index">
<a :href="item.Url" target="_blank">{{item.Title}}</a>
</li>
</ul>
</div>
<div class="foot_content">
<div class="footer-box">
<div class="footer_title1">聯絡資訊</div>
<table class="footer_table">
<tbody>
<tr>
<td class="footer_tbtitle">地址</td>
<td>
{{dataList.Config.Address}}
</td>
</tr>
<tr>
<td class="footer_tbtitle">電話</td>
<td>{{dataList.Config.Tel}}</td>
</tr>
<tr>
<td class="footer_tbtitle">傳真</td>
<td>{{dataList.Config.Fax}}</td>
</tr>
<tr>
<td class="footer_tbtitle">服務時間</td>
<td>{{dataList.Config.ServiceTime}}</td>
</tr>
</tbody>
</table>
<div class="social-link">
<a class="foot_line" :href="dataList.Config.LineUrl"></a>
<a class="foot_fb" :href="dataList.Config.FaceBookUrl"></a>
<a class="foot_mail" :href="dataList.Config.ServiceMail"></a>
</div>
</div>
<div class="footer-box">
<div class="footer_title1">公司資訊</div>
<table class="footer_table">
<tbody>
<tr>
<td class="footer_tbtitle">{{dataList.Config.TypeStr}}</td>
<td>{{dataList.Config.JiaoGuanCode}}</td>
</tr>
<tr>
<td class="footer_tbtitle">品保協會會員</td>
<td>{{dataList.Config.PingBaoCode}}</td>
</tr>
<tr>
<td class="footer_tbtitle">統一編號</td>
<td>{{dataList.Config.UnifyCode}}</td>
</tr>
<tr>
<td class="footer_tbtitle">代表人</td>
<td>{{dataList.Config.Behalf}}</td>
</tr>
</tbody>
</table>
</div>
<div class="footer-box">
<div class="footer_logo_block">
<img style="width:120px;height:auto;" :src="dataList.Config.WhiteLogo" />
</div>
<div class="footer_fb_group">
<a :href="dataList.Config.FaceBookUrl"><img :src="dataList.Config.Logo" alt="" /></a>
</div>
<div class="footer_qrcode">
<a :href="dataList.Config.LineUrl">
<span>Line</span>
<img src="" alt="">
</a>
<a :href="dataList.Config.FaceBookUrl">
<span>Facebook</span>
<img src="" alt="">
</a>
</div>
</div>
</div>
<div class="branch-company">
<div class="footer-box">
<div class="footer_title1">{{dataList.BranchList[0].Name}}</div>
<table class="footer_table">
<tbody>
<tr>
<td class="footer_tbtitle">地址</td>
<td>{{dataList.BranchList[0].Address}}</td>
</tr>
<tr>
<td class="footer_tbtitle">電話</td>
<td>{{dataList.BranchList[0].Tel}}</td>
</tr>
<tr>
<td class="footer_tbtitle">傳真</td>
<td>{{dataList.BranchList[0].Fax}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="footer-bottom">
<div class="sponsor">
<a :href="item.url?item.url:'javascript:;'" target="_blank" v-for="(item,index) in dataList.BottomList"
:key="index">
<img :src="item.icon" />
</a>
</div>
<div class="copyright">
© {{year}} {{dataList.Config.Name}}. All rights reserved.
</div>
</div>
<div class="footer-watermark footer_Left">
<template v-if="dataList&&dataList.AdLeftList">
<div v-for="(item,index) in dataList.AdLeftList" :key="index">
<a @click="OpenNewUrl(item.AdLink)">
<img style="width:100%" :src="item.AdImg" />
</a>
</div>
</template>
</div>
<div class="footer-watermark footer_Right">
<template v-if="dataList&&dataList.AdRightList">
<div v-for="(item,index) in dataList.AdRightList" :key="index">
<a @click="OpenNewUrl(item.AdLink)">
<img style="width:100%" :src="item.AdImg" />
</a>
</div>
</template>
</div>
</template>
</div>
</template>
<script>
export default {
props: ["dataList"],
data() {
return {
year: ''
};
},
created() {},
mounted() {
//获取当前年
var myDate = new Date();
this.year = myDate.getFullYear();
},
methods: {
},
};
</script>
<style>
.banner-style8 .Mymobile-only{
display: none;
}
@media only screen and (max-width: 820px){
.banner-style8 .Mydesktop-only {
display: none;
}
.banner-style8 .Mymobile-only{
display: block;
}
}
.banner-style8 .MysearchDiv{
position: absolute;
width:100%;
top:60%;
}
</style>
<template>
<div class="banner-style8">
<q-carousel
......@@ -24,7 +42,7 @@
<div class="title">搜尋輪播淡出 - 大</div>
<div class="sub-title">將您的夢變成一段真實的體驗,我們掌握今年冬季最受追捧的度假勝地,完成夢想就找我們</div>
</div>
<div class="desktop-only" style="width: 760px;">
<div class="Mydesktop-only" style="width: 760px;margin:auto;">
<div class="row">
<div class="col-5" style="width:calc(41.6667% - 22px)">
<q-input
......@@ -228,7 +246,10 @@
</q-scroll-area>
</div>
</div>
<div class="mobile-only" style="width:100vw;">
</div>
<div class="MysearchDiv">
<div class="Mymobile-only" style="width:100%;">
<q-input
filled
v-model="searchKey"
......@@ -242,6 +263,7 @@
</template>
</q-input>
</div>
</div>
<popup v-model="showPopup" mode="top" :safeAreaInsetBottom="true" border-radius="5">
<div class="chosen-box">
......
<template>
<q-layout view="hHh lpr fFf">
<hor-big-one v-if="headType==1" :base-data="baseinfo" ref="webhead"></hor-big-one>
<hor-big-two v-if="headType==2" :base-data="baseinfo" ref="webhead" ></hor-big-two>
<hor-big-two v-if="headType==2" :base-data="baseinfo" ref="webhead"></hor-big-two>
<q-page-container>
<router-view />
</q-page-container>
<q-footer elevated class="bg-grey-8 text-white" style="position: unset;">
<q-toolbar>
<q-toolbar-title>
<q-avatar>
<img src="https://cdn.quasar.dev/logo/svg/quasar-logo.svg" />
</q-avatar>Title
</q-toolbar-title>
</q-toolbar>
<horBtm :dataList="dataList"></horBtm>
</q-footer>
</q-layout>
</template>
<script>
import horBigOne from "../components/navs/hor-big-one";
import horBigTwo from "../components/navs/hor-big-tow";
export default {
import horBigOne from "../components/navs/hor-big-one";
import horBigTwo from "../components/navs/hor-big-tow";
import horBtm from "../components/navs/hor-btm";
export default {
components: {
horBigOne,
horBigTwo
horBigTwo,
horBtm
},
data() {
return {
leftDrawerOpen: false,
baseinfo: {
logo:
"https://de0s2vtm6rzpn.cloudfront.net/white_label/575/logo_1583290210_rsz.png",
name: "玩家旅遊",
logo: "",
name: "",
nav: {
bg: "rgba(255,255,255,.95)",
bg: "",
color: "#222",
navs: [
{
title: "極上•深之旅",
url: "http://17658.byethost18.com/",
icon: ""
},
{
title: "519住宿趣",
url: "http://winterfavor.byethost7.com/",
icon: ""
},
{
title: "玩家旅遊論壇",
url: "https://www.facebook.com/papago17658/",
icon: ""
},
{
title: "全球租車",
url: "https://yvonne.tripsaas.com/",
icon: ""
},
{
title: "歐洲團體行程",
url:
"https://yvonne.tripsaas.com/search/search_result?keyword=%E5%85%A8%E5%8D%80%20%E6%AD%90&type=area&from=2019-07-10&to=2020-01-06",
icon: ""
},
{
title: "茸茸毛寵物用品商城",
url: "https://petsiloveyou.123web.tw/",
icon: ""
}
]
navs: []
},
desc: "這是一家非常牛逼的旅遊網站"
},
headType:0
headType: 0,
dataList:{}
};
},
created() {
this.$root.$on('change-head-style', param=>{
this.changeHeadHandler(param)
this.$root.$on('change-head-style', param => {
this.changeHeadHandler(param);
this.getData();
})
},
methods: {
changeHeadHandler(t) {
this.headType = t;
},
getData() {
this.apipost(
"ws_get_GetHomePage", {
RB_Group_Id: 2
},
res => {
console.log(res);
if (res.data.resultCode == 1) {
this.dataList=res.data.data;
if(this.dataList){
this.baseinfo.logo=this.dataList.Config.Logo;
this.baseinfo.name=this.dataList.Config.Name;
this.baseinfo.nav.navs=this.dataList.HeaderList;
this.baseinfo.nav.bg=this.dataList.Config.BgColor;
}
} else {
}
},
};
err => {}
);
},
},
};
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment