Commit 57efb127 authored by 黄奎's avatar 黄奎

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

# Conflicts:
#	src/boot/utils.js
#	src/components/searchProductdata/kkday.vue
#	src/components/search_sf/search-top.vue
#	src/components/searchdata/kkday.vue
#	src/pages/SearchProduct.vue
parents ce68ca22 0a704998
......@@ -19,6 +19,10 @@ export default {
font-family: 'FZDBSJW';
src: local('FZDaBiaoSong-B06S')
}
@font-face {
font-family: "Cormorant Garamond";
src: url("https://im.oytour.com/tripfont/44b867578f7c49ddaf62f490fcb30264.woff");
}
.text-shadow{
text-shadow: rgb(0 0 0 / 50%) 2px 2px 5px;
}
......
This diff is collapsed.
h1,h2,h3,h4,h5,h6,p,ul{
padding: 0;
margin: 0;
}
ul,li{
list-style: none;
}
.fontW100{
font-weight: 100;
}
.fontW200{
font-weight: 200;
}
.fontW300{
font-weight: 300;
}
.fontW400{
font-weight: 400;
}
.fontW500{
font-weight: 500;
}
.fontW600{
font-weight: 700;
}
.min-w-50px{
min-width: 50px;
}
.mlF5{
margin-left: -5px;
}
.mlF8{
margin-left: -8px;
}
.p-x40{
padding: 0 40px;
}
.flex{
/* flex: 1; */
}
.remTetil{
font-size: 1.1rem;
}
.remText{
font-size: .8rem;
}
.remSubText{
font-size: 1rem;
}
.duration2{
--animation-duration: 2s;
}
.duration5{
--animation-duration: 5s;
}
.ContainerW1280{
width: 100%;
/* padding: 0 40px; */
margin-right: auto;
margin-left: auto;
}
.ContainerW{
padding: 0 20px;
margin-right: auto;
margin-left: auto;
}
.w100{
width: 100%
}
.h100{
height: 100%;
}
.right0{
right: 0;
}
.left0{
left: 0;
}
.top0{
top: 0;
}
.bottom0{
bottom: 0;
}
.text-color85{
color: rgb(85,85,85);
}
.cursor-default{
cursor: default;
}
.no-course{
cursor: none !important;
}
/* .indexSliderForm{
width: 100vw;
height: calc(9 / 28 * 100vw);
} */
.inSliSubDescribeToggle{
margin-top: 30px;
}
.homeContainer{
margin-left: auto;
margin-right: auto;
max-width: 100%;
padding-left: 20px;
padding-right: 20px;
position: relative;
width: 100%;
}
@media (min-width: 300px) {
.homeContainer{
max-width: 100%;
padding-left: 10px;
padding-right: 10px;
}
.containerRoll2{
padding-left: 10px;
padding-right: 10px;
}
.gap-1{
padding-bottom: 55px;
padding-top: 55px;
}
.isDisplay{
display: none;
}
.inSliSubNameBox p{
font-size: 1.3rem;
padding-right: 20px;
padding-bottom: 10px;
border-bottom-right-radius: 10px;
}
.insli-leftDescr{
padding: 40px 0 40px 0;
}
.indexSlider-right{
width: 95%
}
.inSliSubDescribeBox{
width: 70%;
margin: auto;
}
.inSliSubDescribeBox p{
height: 10rem;
margin-left: 0;
padding: 20px 0;
}
.inSliSubNameBox::after{
opacity: 0;
}
.swipercomSubEn{
left: 0;
top: -2rem;
font-size: 2rem;
}
.indexRoll1Hst{
font-size: 1rem;
}
.indexRoll1Htitle{
font-size: 1.8rem;
}
.indexRoll1Hd{
width: 95%;
}
.swipercomTitleL{
font-size: 1.3rem;
padding-top: 15px;
padding-bottom: 15px;
}
.swipercomTitleR{
padding-right: 0;
line-height: 1.7rem;
}
.swipercomR2{
padding: 0 0 0 20px;
}
.swipercomTvR2Bj{
width: 100%;
top: 0;
right: 0;
bottom: 0;
opacity: 1;
}
.swipercomSubEnLenR2{
font-size: 1.5rem;
left: -1.2rem;
}
.swipercomTvR2{
top: 0;
right: 0;
bottom: 0;
opacity: 1;
}
.swipercomTitleLR2{
font-size: 1.2rem;
}
.swipercomMoR2,.swipercomDesR2{
font-size: .9rem;
}
.gap-1.gap-M{
padding-bottom: 0;
padding-top: 55px;
}
.indexRoll1Hd{
width: 90%;
}
}
@media (min-width: 768px) {
.gap-1{
padding-bottom: 55px;
padding-top: 55px;
}
.homeContainer{
max-width: 100%;
padding-left: 20px;
padding-right: 20px;
}
.containerRoll2{
padding-left: 30px;
padding-right: 30px;
}
.isDisplay{
display: none;
}
.min-w-45{
min-width: 45px;
}
.insli-leftDescr{
width: 50%;
}
.inSliSubDescribeBox{
width: 50%;
right: 0;
bottom: 0;
border-top-left-radius: 10px;
}
.inSliSubDescribeBox p {
height: 100%;
margin-left: 20px;
}
.inSliSubNameBox::after{
opacity: 1;
}
.swipercomSubEn{
top: -.2rem;
left: -1.5rem;
font-size: 3rem;
}
.indexRoll1Hd{
width: 55%;
}
.swipercomSubEnLen{
padding: 4px 13px 4px 17px;
}
.swipercomTvR2Bj{
top: 0;
left: 0;
bottom: 0;
right: 0;
opacity: 1;
}
.swipercomTvR2{
top: 0;
bottom: 0;
left: 0;
right: 0;
opacity: 1;
}
.indexRoll1Hd{
width: 90%;
}
}
@media (min-width: 992px) {
.swipercomTvR2Bj{
top: 100%;
left: 0;
bottom: 0;
right: 0;
opacity: 0;
}
.swipercomTvR2{
top: 100%;
bottom: 0;
left: 0;
right: 0;
opacity: 0;
}
.swipercomR2{
padding: 0;
}
.gap-1{
padding-bottom: 65px;
padding-top: 65px;
}
.isDisplay{
display: none;
}
.w3{
width: 50%;
}
.inSliSubNameBox{
bottom: 0;
}
.h-66{
height: 66%;
}
.inSliSubNameBox p{
letter-spacing: .3rem;
font-size: 1.5rem;
margin-left: -7px;
}
.insli-leftDescr {
padding: 40px 0 0px 0;
}
.inSliSubDescribeBox{
width: 170px;
height: 66%;
right: 0;
bottom: 0;
border-top-left-radius: 10px;
}
.swipercomSubEn{
left: -1.5rem;
font-size: 2.6rem;
}
.swipercomTitleL{
font-size: 1.5rem;
}
.swipercomTitleR{
font-size: 1.1rem;
}
.indexRoll1Hd{
width: 47%;
}
.indexRoll1Hd.indexRoll1Hd2{
width: 55%;
}
.containerRoll2{
padding-left: 130px;
padding-right: 40px;
}
}
@media (min-width: 1280px) {
.MenuListItem{
bottom: 65px;
}
.MenuListLi.active .MenuListItem{
opacity: 1;
bottom: 70px;
}
.SubMenuListBox{
height: 166px;
}
.MenuListLi.active .SubMenuListBox{
height: 186px;
}
.carousel1-leftImg{
width: 100px
}
.homeContainer{
max-width: 1280px;
padding-left: 40px;
padding-right: 40px;
}
.containerRoll2{
padding-left: 130px;
padding-right: 40px;
}
.isDisplay{
display: none;
}
.w3{
width: 25%;
}
.insli-leftDescr{
width: 80%;
}
.swipercomTitleR{
font-size: 1.1rem;
}
.swipercomTitleL{
font-size: 1.5rem;
}
.indexRoll1Hd{
width: 40%;
}
.swipercomSubEn{
left: -1.5rem;
}
}
@media (min-width: 1366px) {
.MenuListItem{
bottom: 0;
}
.MenuListLi.active .MenuListItem{
bottom: 0px;
}
}
@media (min-width: 1440px) {
.MenuListItem{
bottom: 49px;
}
.MenuListLi.active .MenuListItem{
opacity: 1;
bottom: 70px;
}
.SubMenuListBox{
height: 186px;
}
.MenuListLi.active .SubMenuListBox{
height: 206px;
}
.carousel1-leftImg{
width: 101px;
}
.swipercomSubEnLenR2{
font-size: 1.8rem;
}
.swipercomTitleLR2{
font-size: 1.5rem;
}
.swipercomDesR2{
font-size: 1.1rem;
}
.swipercomMoR2{
font-size: 1rem;
}
.gap-1{
padding-bottom: 80px;
padding-top: 80px;
}
.isDisplay{
display: block;
}
.inSliSubNameBox{
height: 340px
}
.inSliSubNameList{
margin-top: 5px;
}
.w3{
width: 55%;
}
.swipercomTitle{
padding: 20px 15px;
}
.swipercomTitleA{
height: 100%;
padding: 0 25px;
.q-separator{
height: .5rem;
}
}
.swipercomTitleL div{
position: relative;
top: -1.2rem;
}
.swipercomTitleR{
font-size: 1.1rem;
}
.swipercomTitleL{
font-size: 1.3rem;
}
.indexRoll1Hd{
width: 40%;
}
.indexRoll1Hd.indexRoll1Hd2{
width: 35%;
}
.containerRoll2{
padding-left: 280px;
padding-right: 40px;
}
.swipercomSubEn{
left: -1.5rem;
}
}
@media (min-width: 1800px) {
.MenuListItem{
bottom: -116px;
}
.MenuListLi.active .MenuListItem{
bottom: -16px;
}
.MenuListLi.active .SubMenuListBox{
height: 296px;
}
.MenuListBox li{
padding-top: 40px;
}
.swipercomSubEnLenR2{
font-size: 2rem;
}
.carousel1-leftImg{
width: 128px;
}
.homeContainer{
max-width: 1440px;
padding-left: 40px;
padding-right: 40px;
}
.containerRoll2{
padding-left: 240px;
padding-right: 40px;
}
.w3{
width: 50%;
}
.insli-leftDescr{
width: 55%;
}
.swipercomTitle{
padding: 40px 0;
}
.swipercomTitleA{
height: 100%;
padding: 0 50px;
}
.swipercomTitleA .q-separator{
height: 1.5rem;
}
.swipercomTitleL{
font-size: 1.5rem;
}
.swipercomTitleL div{
position: relative;
top: -2rem;
}
.swipercomTitleR{
font-size: 1.2rem;
}
.indexRoll1Hd{
width:35%;
}
.indexRoll1Hd.indexRoll1Hd2{
width: 29%;
}
.swipercomSubEn{
left: -2rem;
font-size: 3.5rem;
}
}
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30"><path d="M0 9.801v-9.8h9.836A10.016 10.016 0 0 0 0 9.801Z" fill="#fff"/><path fill="none" d="M0 .001h30v30H0z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30"><path d="M0 9.801v-9.8h9.836A10.016 10.016 0 0 0 0 9.801Z" fill="#f5f5f5"/><path fill="none" d="M0 .001h30v30H0z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="25.352" height="7.787">
<path fill="none" stroke="#897658" stroke-linecap="round" d="M23.719 3.893H.5"></path>
<path d="m17.776 0 7.576 3.893-7.576 3.893 3.076-3.893Z" fill="#897658"></path>
</svg>
import Vue from 'vue'
import axios from 'axios'
import md5 from 'js-md5'
// import {eventBus} from './eventBus'
import VueCoreVideoPlayer from 'vue-core-video-players'
import 'viewerjs/dist/viewer.css'
import user from './user'
import message from './message'
import product from './product'
import VueViewer from 'v-viewer'
// import VueCoreVideoPlayer from 'vue-core-video-player'
import ElementUI from "element-ui";
Vue.use(ElementUI);
Vue.prototype.$EventBus = new Vue()
Vue.use(VueCoreVideoPlayer)
Vue.use(VueViewer)
Vue.prototype.$md5 = md5;
Vue.prototype.$message = message
Vue.prototype.$product = product
//域名管理对象
Vue.prototype.domainManager = function () {
let domainUrl = 'http://192.168.5.214';
domainUrl = "http://192.168.5.46:8501";
var domainNameUrl = window.location.hostname;
if (domainNameUrl.indexOf('oytour') !== -1) {
domainUrl = 'http://reborn.oytour.com'
//域名管理对象
Vue.prototype.domainManager = function() {
let domainUrl = '';
domainUrl = "http://192.168.2.214:8082";
domainUrl = "http://192.168.5.46";
// domainUrl = "http://reborn.oytour.com";
let domainNameUrl = this.GetDomain();
domainNameUrl = "http://tmb2b.oytour.com/"
if (domainNameUrl.indexOf('testerp.oytour') !== -1) {
domainUrl = "http://testapi.oytour.com";
} else if (domainNameUrl.indexOf('oytour') !== -1) {
domainUrl = "http://reborn.oytour.com";
domainUrl = "http://192.168.5.46";
// domainUrl = 'http://192.168.10.68' //'http://192.168.10.226:8015' ''http://192.168.10.9:8083' '
}
var obj = {
DomainUrl: domainUrl, //ERP接口地址
PostUrl: domainUrl + "/api/common/post", //常用提交数据URL
//主地址
DomainUrl: domainUrl,
//常用提交数据URL
PostUrl: domainUrl + "/api/common/post",
javaUrl: 'http://efficient.oytour.com'
};
return obj;
}
//获取当前域名
Vue.prototype.GetDomain = function () {
}
//获取当前域名
Vue.prototype.GetDomain = function() {
var domainNameUrl = window.location.hostname;
domainNameUrl = "www.oytour.com";
return domainNameUrl;
}
Vue.prototype.groupBy = function (array, f) {
Vue.prototype.groupBy = function(array, f) {
const groups = {};
array.forEach((item) => {
const group = JSON.stringify(f(item));
......@@ -50,8 +62,7 @@ Vue.prototype.groupBy = function (array, f) {
};
});
}
Vue.prototype.moneyFormat = function (num, decimal = 2, split = ',') {
Vue.prototype.moneyFormat = function(num, decimal = 2, split = ',') {
function thousandFormat(num) {
const len = num.length
return len <= 3 ? num : thousandFormat(num.substr(0, len - 3)) + split + num.substr(len - 3, 3)
......@@ -75,9 +86,9 @@ Vue.prototype.moneyFormat = function (num, decimal = 2, split = ',') {
} else {
return '--'
}
}
//HTTP提交数据
Vue.prototype.apipost = function (cmd, msg, successCall, faildCall) {
}
//HTTP提交数据
Vue.prototype.apipost = function(cmd, msg, successCall, faildCall) {
if (msg == null || msg == "") {
msg = {}
}
......@@ -115,12 +126,10 @@ Vue.prototype.apipost = function (cmd, msg, successCall, faildCall) {
}
})
.then(res => {
if (res.data.resultCode === 10000) {
if(res.data.resultCode === 10000) {
this.$router.replace({
path: '/login',
query: {
path: path
}
query: {path: path}
});
return
}
......@@ -129,7 +138,7 @@ Vue.prototype.apipost = function (cmd, msg, successCall, faildCall) {
}, faildCall)
}
Vue.prototype.apiJavaPost = function (cmd, msg, successCall, faildCall) {
Vue.prototype.apiJavaPost = function(cmd, msg, successCall, faildCall) {
if (msg == null || msg == "") {
msg = {}
}
......@@ -141,7 +150,7 @@ Vue.prototype.apiJavaPost = function (cmd, msg, successCall, faildCall) {
var GroupId = 0;
if (this.getLocalStorage() != null) {
token = this.getLocalStorage().token;
key = '';
key = '' //this.getLocalStorage().secretKey;
}
if (localStorage.groupinfo && localStorage.groupinfo != 'undefined') {
var groupJson = JSON.parse(localStorage.groupinfo);
......@@ -170,7 +179,7 @@ Vue.prototype.apiJavaPost = function (cmd, msg, successCall, faildCall) {
//获取缓存
Vue.prototype.getLocalStorage = function () {
Vue.prototype.getLocalStorage = function() {
try {
var localStorageData = window.localStorage["b2bUser"];
if (localStorageData !== undefined && localStorageData != 'undefined') {
......@@ -185,7 +194,7 @@ Vue.prototype.apiJavaPost = function (cmd, msg, successCall, faildCall) {
}
//向外跳转
Vue.prototype.OpenNewUrl = function (URL) {
Vue.prototype.OpenNewUrl = function(URL) {
if (URL && URL != '') {
if (URL.indexOf("https") != -1) {
var str = 'http://' + URL.substring(8);
......@@ -200,8 +209,8 @@ Vue.prototype.OpenNewUrl = function (URL) {
}
//公用跳转
Vue.prototype.CommonJump = function (path, obj, type = 'push') {
let p = typeof (path) == 'string' ? path : this.$product.genernalUrl(path)
Vue.prototype.CommonJump = function(path, obj, type = 'push') {
let p = typeof(path) == 'string' ? path : this.$product.genernalUrl(path)
if (type === 'blank') { // 新窗口打开
let routeUrl = this.$router.resolve({
path: p,
......@@ -220,9 +229,8 @@ Vue.prototype.CommonJump = function (path, obj, type = 'push') {
});
}
}
Vue.prototype.$user = user
Vue.prototype.createCalendar = function (dateStr) {
Vue.prototype.createCalendar = function(dateStr) {
var days = [];
var date;
if (dateStr) {
......@@ -275,9 +283,9 @@ Vue.prototype.createCalendar = function (dateStr) {
CurrentYear: currentYear,
CurrentWeek: currentWeek
};
}
//格式化日期
Vue.prototype.formatDate = function (year, month, day) {
}
//格式化日期
Vue.prototype.formatDate = function(year, month, day) {
var y = year;
var m = month;
if (m < 10) m = "0" + m;
......@@ -287,7 +295,7 @@ Vue.prototype.formatDate = function (year, month, day) {
}
//格式化日期二
Vue.prototype.formatDate2 = function (dateStr) {
Vue.prototype.formatDate2 = function(dateStr) {
var date = new Date(dateStr);
return {
CYear: date.getFullYear(),
......@@ -297,7 +305,7 @@ Vue.prototype.formatDate2 = function (dateStr) {
}
//添加月份
Vue.prototype.AddMonth = function (dateStr, month) {
Vue.prototype.AddMonth = function(dateStr, month) {
var v = new Date(dateStr);
if (v) {
var t = new Date(v.getFullYear(), v.getMonth(), v.getDate(), v.getHours(), v.getMinutes(), v.getSeconds(), v.getMilliseconds());
......@@ -310,10 +318,10 @@ Vue.prototype.AddMonth = function (dateStr, month) {
}
//获取URL中参数
Vue.prototype.getUrlKey = function (name, url) {
Vue.prototype.getUrlKey = function(name, url) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(url) || [, ""])[1].replace(/\+/g, '%20')) || null
}
Vue.prototype.GetHtml = function (str) {
Vue.prototype.GetHtml = function(str) {
if (str && str != "") {
return str.replace(/&lt;/g, '<').replace(/&gt;/g, '>')
.replace(/&amp;/g, '&').replace(/&quot;/g, '"').replace(/&apos;/g, "'");
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<template>
<div class="sliderRight absolute rounded-full
border border-solid border-stone flex items-center justify-center
backdrop-blur-sm no-course"
:style="{left:`${X}px`,top:`${Y}px`}"
:class="[isRight?'active':'']">
<div class="sliderRightC relative row justify-center items-center backdrop-blur" :class="[Current=='left'?'active':'']">
<img src="../../assets/svg/right.svg" alt="Logo">
</div>
</div>
</template>
<script>
export default {
props: ['X','Y','isRight','Current'],
data() {
return {
}
}
}
</script>
<style scoped>
.sliderRight{
z-index: 9;
opacity: 0;
margin: -2rem 0 0 -2rem;
}
.sliderRight.active{
opacity: 1;
}
.sliderRightC{
width: 4rem;
height: 4rem;
}
.sliderRightC.active img {
transform: rotate(-180deg);
}
</style>
......@@ -119,7 +119,7 @@
padding: 10px;
}
.category-item {
width: 160px;
min-width: 160px;
padding: 10px;
border-radius: 8px;
font-weight: bold;
......@@ -160,7 +160,7 @@
color: #ee4454;
}
.category-box {
width: 140px;
min-width: 140px;
padding: 10px;
font-weight: bold;
}
......@@ -298,7 +298,7 @@
<div
class="category-item font-16"
:key="i"
v-for="(x, i) in dataList.CategoryList"
v-for="(x, i) in categoryList"
>
<template v-if="i <= 3">
<img
......@@ -318,11 +318,11 @@
<div
class="category-item"
:key="i"
v-for="(x, i) in dataList.CategoryList"
v-for="(x, i) in categoryList"
>
<div :key="item.Id" v-for="item in x.SubList">
<div :key="i" v-for="item in x.SubList">
<div
@click="handleCategoryChage(item)"
@click="x.CategoryName=='行程线路'?OpenNewUrl(item.LinkUrl):handleCategoryChage(item)"
class="category-l2"
:class="{
'category-l2-select': selectCategory === item.Id,
......@@ -330,15 +330,15 @@
>
{{ item.CategoryName }}
</div>
<div v-if="item.SubList.length">
<div v-if="item.SubList&&item.SubList.length">
<div
@click="handleCategoryChage(item2)"
@click="x.CategoryName=='行程线路'?OpenNewUrl(item2.LinkUrl):handleCategoryChage(item2)"
class="category-l3"
:class="{
'category-l3-select': selectCategory === item2.Id,
}"
:key="item2.Id"
v-for="item2 in item.SubList"
:key="index"
v-for="(item2,index) in item.SubList"
>
<div>{{ item2.CategoryName }}</div>
</div>
......@@ -349,7 +349,7 @@
</div>
</q-menu>
</div>
<template v-for="(x, i) in dataList.CategoryList">
<template v-for="(x, i) in categoryList">
<div
class="category-btn"
:key="i"
......@@ -368,9 +368,9 @@
@mouseleave="menuLeave(i)"
>
<div class="category-box">
<div :key="item.Id" v-for="item in x.SubList">
<div :key="index" v-for="(item,index) in x.SubList">
<div
@click="handleCategoryChage(item)"
@click="x.CategoryName=='行程线路'?OpenNewUrl(item.LinkUrl):handleCategoryChage(item)"
class="category-l2"
:class="{
'category-l2-select': selectCategory === item.Id,
......@@ -378,15 +378,15 @@
>
{{ item.CategoryName }}
</div>
<div v-if="item.SubList.length">
<div v-if="item.SubList&&item.SubList.length">
<div
@click="handleCategoryChage(item2)"
@click="x.CategoryName=='行程线路'?OpenNewUrl(item2.LinkUrl):handleCategoryChage(item2)"
class="category-l3"
:class="{
'category-l3-select': selectCategory === item2.Id,
}"
:key="item2.Id"
v-for="item2 in item.SubList"
:key="index"
v-for="(item2,index) in item.SubList"
>
<div>{{ item2.CategoryName }}</div>
</div>
......@@ -433,6 +433,8 @@ export default {
selectedArea: [],
selectedAreaId: "",
isHome: false,
HomeData: [],
isSearch: false,
};
},
watch: {
......@@ -448,11 +450,51 @@ export default {
},
$route: {
handler: function (val, oldVal) {
this.isHome = val.path === "/" || val.path === "/index";
this.isHome = val.path === "/searchProduct" || val.path === "/search";
},
// 深度观察监听
deep: true,
},
dataList: {
handler(n, o) {
var jObj = JSON.parse(window.localStorage.getItem('HomeData'));
this.HomeData = jObj.filter(x=>{ return x.Id == 'index_nav' })
if(this.HomeData.length>0) {
let obj = {
BackgroundImage: "",
CategoryName: "行程线路",
Icon: "",
Id: 9999999,
IsHot: '',
IsSelfGuidedTour: '',
Level: 0,
LinkUrl: '',
ParentId: 0,
Sort: 0,
SubList: []
}
let obj2 = {
CategoryName: '',
LinkUrl: '',
Id: 0,
}
this.categoryList = n.CategoryList
this.HomeData[0].plugData.MenuList.forEach(x=>{
obj.CategoryName = '行程线路'//x.MenuName
obj.LinkUrl = x.LinkUrl
x.SubMenuList.forEach((y,index)=>{
obj2 = {
CategoryName: y.MenuName,
LinkUrl: y.LinkUrl,
Id: 9999999+index,
}
obj.SubList.push(obj2)
})
})
this.categoryList[0] = obj
}
}
}
},
meta() {
return {
......@@ -463,9 +505,10 @@ export default {
};
},
mounted() {
this.isSearch = this.$router.history.current.path === "/search"||this.$router.history.current.path === "/searchProduct";
this.isHome =
this.$router.history.current.path === "/" ||
this.$router.history.current.path === "/index";
this.$router.history.current.path === "/searchProduct" ||
this.$router.history.current.path === "/search";
if (localStorage.b2bUser) {
this.LoginUser = JSON.parse(window.localStorage.getItem("b2bUser"));
......@@ -484,6 +527,8 @@ export default {
);
this.searchDate = newStartDateStr;
this.searchEndDate = newEndDateStr;
},
methods: {
avatarClick() {
......@@ -504,6 +549,11 @@ export default {
qsearchEndDate: this.searchEndDate,
categoryId: item.Id,
});
setTimeout(()=>{
if(this.isSearch) {
window.location.reload()
}
},300)
},
mouseenterAddress() {
this.menuFocusAll = 0;
......
This diff is collapsed.
<template>
<!-- 豆腐块 -->
<div class="Search_center">
<ul class="pd-list">
<li class="pd-box" v-for="(item,index) in DataList" :key="index">
<a class="pd-link">
<div class="pd-img"
:style="{backgroundImage:`url('${item.newCoverImg}')`}">
<div class="pd-price">
<div class="price">
{{item.dayNum}}
<small class="unit"></small> {{item.b2BPrice}}
<small class="unit">元起</small>
</div>
</div>
</div>
<div class="pd-content">
<h3 class="pd-title">{{item.title}}</h3>
<div class="pd-departure">
出發日期:{{item.startDate}}
<span class="more" @click="GotoDetails(item)" style="cursor:pointer">...更多</span>
</div>
</div>
</a>
</li>
</ul>
</div>
</template>
<script>
export default {
props: ["DataList", "PageCount"],
data() {
return {
};
},
methods: {
GotoDetails(item) {
this.CommonJump('/details/' + encodeURIComponent(item.id) + "/" + item.tcid, {});
}
}
}
</script>
This diff is collapsed.
<template>
<!-- 列表 -->
<div class="group-result-list">
<div class="group-statis-block">
<div class="group-share" style="display:none;"></div>
<div class="group-statis-detail">
<span class="title" v-if="qMsg.searchKey">{{qMsg.searchKey}} :</span>
找到
<span class="num"> {{qMsg.TotalCount}} </span>個行程
<span class="pc">,目前在第<span style="color: #7f7f7f;"> {{qMsg.pageIndex}} </span></span>
</div>
</div>
<div>
<div class="group-box" v-for="(itemf,indexf) in DataList" :key="indexf">
<a class="group-cover" >
<template v-if="itemf.imgCover&&itemf.imgCover.length>0">
<img :src="itemf.imgCover[0].url" />
</template>
</a>
<div class="group-main">
<div class="group-info">
<div class="group-name" style="margin-bottom:5px;cursor:pointer" @click="GotoDetails(itemf)">
{{itemf.title}}
</div>
<div class="group-detail" @click="GotoDetails(itemf)">
<i class="iconfont iconaddress"></i>
<span>{{itemf.countryName}}</span>
</div>
<div class="group-detail" @click="GotoDetails(itemf)">
<i class="iconfont icontime"></i>
<span>{{itemf.dayNum}} 天</span>
</div>
<ul class="group-list">
<li>
<template v-if="itemf.PriceList&&itemf.PriceList.length>0">
<div v-for="(item,index) in itemf.priceList" :key="index" style="margin-right:5px;margin-bottom:7px;" @click="SwitchTCID(itemf,indexf,index)">
<a>{{item.StartDate}}</a>
</div>
</template>
</li>
</ul>
</div>
<div class="price-info" @click="GotoDetails(itemf)">
<div class="price-wrap">
<div class="price_Search">
<small class="price_unit">TWD$</small> {{itemf.b2BPrice}}
</div>
<a class="btn_warning" @click="GotoDetails(itemf)" style="cursor:pointer">更多出發日</a>
</div>
</div>
</div>
</div>
<div style="display:flex;justify-content: center;">
<q-pagination v-if="qMsg.PageCount>1" v-model="qMsg.pageIndex" :max="qMsg.PageCount" @input="gerOrderList()"
:direction-links="true">
</q-pagination>
</div>
</div>
</div>
</template>
<script>
export default {
props: ["DataList", "qMsg"],
data() {
return {
};
},
methods: {
GotoDetails(item) {
this.CommonJump('/details/' + encodeURIComponent(item.id) + "/" + item.configId, {}, "blank");
},
//调用
gerOrderList(){
this.$emit('getPage')
},
SwitchTCID(obj,i,index) {
if(this.DataList&&this.DataList.length>0){
let nowobj= JSON.parse(JSON.stringify(obj));
console.log("nowobj",nowobj.startDateList);
this.DataList[i] = {
...nowobj.priceList[index]
}
this.DataList[i].index=index;
this.DataList[i].startDateList=nowobj.startDateList;
this.DataList[i].priceList=nowobj.priceList;
this.$forceUpdate();
}
},
}
}
</script>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -10,8 +10,8 @@
// Tip: Use the "Theme Builder" on Quasar's documentation website.
// $primary : #1976D2;
//$primary : #31C3E0;
$primary: #1976D2;
$secondary: #26A69A;
$primary: rgb(5,32,50);//#1976D2
$secondary: rgb(137, 118, 88);
$accent: #9C27B0;
$dark: #1D1D1D;
$positive: #21BA45;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
src/statics/icons/favicon-128x128.png

11.3 KB | W: | H:

src/statics/icons/favicon-128x128.png

3.66 KB | W: | H:

src/statics/icons/favicon-128x128.png
src/statics/icons/favicon-128x128.png
src/statics/icons/favicon-128x128.png
src/statics/icons/favicon-128x128.png
  • 2-up
  • Swipe
  • Onion skin
src/statics/icons/favicon-16x16.png

1.62 KB | W: | H:

src/statics/icons/favicon-16x16.png

498 Bytes | W: | H:

src/statics/icons/favicon-16x16.png
src/statics/icons/favicon-16x16.png
src/statics/icons/favicon-16x16.png
src/statics/icons/favicon-16x16.png
  • 2-up
  • Swipe
  • Onion skin
src/statics/icons/favicon-32x32.png

2.77 KB | W: | H:

src/statics/icons/favicon-32x32.png

915 Bytes | W: | H:

src/statics/icons/favicon-32x32.png
src/statics/icons/favicon-32x32.png
src/statics/icons/favicon-32x32.png
src/statics/icons/favicon-32x32.png
  • 2-up
  • Swipe
  • Onion skin
src/statics/icons/favicon-96x96.png

8.68 KB | W: | H:

src/statics/icons/favicon-96x96.png

2.9 KB | W: | H:

src/statics/icons/favicon-96x96.png
src/statics/icons/favicon-96x96.png
src/statics/icons/favicon-96x96.png
src/statics/icons/favicon-96x96.png
  • 2-up
  • Swipe
  • Onion skin
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