Commit ed8cfdad authored by 黄奎's avatar 黄奎

11

parent 237c87d7
...@@ -9,324 +9,317 @@ import message from './message' ...@@ -9,324 +9,317 @@ import message from './message'
import product from './product' import product from './product'
import VueViewer from 'v-viewer' import VueViewer from 'v-viewer'
// import VueCoreVideoPlayer from 'vue-core-video-player' // import VueCoreVideoPlayer from 'vue-core-video-player'
import 'animate.css'; // import 'animate.css';
// 或者只引入需要的动画类 // 或者只引入需要的动画类
import 'animate.css/source/attention_seekers/bounce.css'; // import 'animate.css/source/attention_seekers/bounce.css';
Vue.prototype.$EventBus = new Vue() Vue.prototype.$EventBus = new Vue()
Vue.use(VueCoreVideoPlayer) Vue.use(VueCoreVideoPlayer)
Vue.use(VueViewer) Vue.use(VueViewer)
Vue.prototype.$md5 = md5; Vue.prototype.$md5 = md5;
Vue.prototype.$message = message Vue.prototype.$message = message
Vue.prototype.$product = product Vue.prototype.$product = product
//域名管理对象 //域名管理对象
Vue.prototype.domainManager = function() { Vue.prototype.domainManager = function () {
let domainUrl = ''; let domainUrl = "http://192.168.5.214";
domainUrl = "http://192.168.2.214:8082"; let domainNameUrl = this.GetDomain();
domainUrl = "http://192.168.5.46"; if (domainNameUrl.indexOf('oytour') !== -1) {
// domainUrl = "http://reborn.oytour.com"; domainUrl = "http://reborn.oytour.com";
let domainNameUrl = ''; }
domainNameUrl = this.GetDomain(); //domainUrl = "http://192.168.5.46:8501";
// domainNameUrl = "http://tmb2b.oytour.com/" var obj = {
domainNameUrl = window.location.hostname //主地址
if (domainNameUrl.indexOf('testerp.oytour') !== -1) { DomainUrl: domainUrl,
domainUrl = "http://testapi.oytour.com"; //常用提交数据URL
} else if (domainNameUrl.indexOf('oytour') !== -1) { PostUrl: domainUrl + "/api/common/post",
domainUrl = "http://reborn.oytour.com"; javaUrl: 'http://efficient.oytour.com'
// domainUrl = 'http://192.168.10.68' //'http://192.168.10.226:8015' ''http://192.168.10.9:8083' ' };
} return obj;
var obj = {
//主地址
DomainUrl: domainUrl,
//常用提交数据URL
PostUrl: domainUrl + "/api/common/post",
javaUrl: 'http://efficient.oytour.com'
};
return obj;
}
//获取当前域名
Vue.prototype.GetDomain = function() {
var domainNameUrl = window.location.hostname;
domainNameUrl = "www.oytour.com";
return domainNameUrl;
} }
Vue.prototype.groupBy = function(array, f) { //获取当前域名
const groups = {}; Vue.prototype.GetDomain = function () {
array.forEach((item) => { var domainNameUrl = window.location.hostname;
const group = JSON.stringify(f(item)); domainNameUrl = "www.oytour.com";
groups[group] = groups[group] || []; return domainNameUrl;
groups[group].push(item);
});
return Object.keys(groups).map((group) => {
return {
key: group.replace(/\"/g, ""),
data: groups[group]
};
});
} }
Vue.prototype.moneyFormat = function(num, decimal = 2, split = ',') { Vue.prototype.groupBy = function (array, f) {
function thousandFormat(num) { const groups = {};
const len = num.length array.forEach((item) => {
return len <= 3 ? num : thousandFormat(num.substr(0, len - 3)) + split + num.substr(len - 3, 3) const group = JSON.stringify(f(item));
} groups[group] = groups[group] || [];
if (isFinite(num)) { // num是数字 groups[group].push(item);
if (num === 0) { // 为0 });
return num.toFixed(decimal) return Object.keys(groups).map((group) => {
} else { // 非0 return {
var res = '' key: group.replace(/\"/g, ""),
var dotIndex = String(num).indexOf('.') data: groups[group]
if (dotIndex === -1) { // 整数 };
res = thousandFormat(String(num)) + (decimal > 0 ? '.' : '') + '0'.repeat(decimal) });
} else { }
decimal = decimal == 0 ? 2 : decimal Vue.prototype.moneyFormat = function (num, decimal = 2, split = ',') {
const numStr = String((Math.round(num * Math.pow(10, decimal)) / Math.pow(10, decimal)).toFixed(decimal)) // 四舍五入,然后固定保留2位小数 function thousandFormat(num) {
const decimals = numStr.slice(dotIndex, dotIndex + decimal + 1) // 截取小数位 const len = num.length
res = thousandFormat(numStr.slice(0, dotIndex)) + decimals return len <= 3 ? num : thousandFormat(num.substr(0, len - 3)) + split + num.substr(len - 3, 3)
} }
return res if (isFinite(num)) { // num是数字
} if (num === 0) { // 为0
} else { return num.toFixed(decimal)
return '--' } else { // 非0
} var res = ''
var dotIndex = String(num).indexOf('.')
if (dotIndex === -1) { // 整数
res = thousandFormat(String(num)) + (decimal > 0 ? '.' : '') + '0'.repeat(decimal)
} else {
decimal = decimal == 0 ? 2 : decimal
const numStr = String((Math.round(num * Math.pow(10, decimal)) / Math.pow(10, decimal)).toFixed(decimal)) // 四舍五入,然后固定保留2位小数
const decimals = numStr.slice(dotIndex, dotIndex + decimal + 1) // 截取小数位
res = thousandFormat(numStr.slice(0, dotIndex)) + decimals
}
return res
} }
//HTTP提交数据 } else {
Vue.prototype.apipost = function(cmd, msg, successCall, faildCall) { return '--'
}
}
//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;
var GroupId = 0;
if (this.getLocalStorage() != null) {
token = this.getLocalStorage().token;
key = this.getLocalStorage().SecretKey;
}
if (localStorage.groupinfo && localStorage.groupinfo != 'undefined') {
var groupJson = JSON.parse(localStorage.groupinfo);
GroupId = groupJson.GroupId;
}
var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
const path = this.$route.path
var postData = {
msg: msg,
cmd: cmd,
timestamp: timestamp,
token: token,
sign: md5Str,
languageId: tempLanguage,
GroupId: GroupId
}
this.$axios.post(apiurl, postData, {
headers: {
'Content-Type': 'application/json',
'Referer-Viitto': this.$route.path
}
})
.then(res => {
if (res.data.resultCode === 10000) {
this.$router.replace({
path: '/login',
query: {
path: path
}
});
return
}
successCall(res);
}, faildCall)
}
Vue.prototype.apiJavaPost = function (cmd, msg, successCall, faildCall) {
if (msg == null || msg == "") { if (msg == null || msg == "") {
msg = {} msg = {}
} }
var apiurl = this.domainManager().javaUrl + cmd;
var timestamp = (new Date()).valueOf(); var timestamp = (new Date()).valueOf();
var apiurl = this.domainManager().PostUrl; this.apiurl = apiurl;
var token = ""; var token = "";
var key = ""; var key = "";
var tempLanguage = 0;
var GroupId = 0; var GroupId = 0;
if (this.getLocalStorage() != null) { if (this.getLocalStorage() != null) {
token = this.getLocalStorage().token; token = this.getLocalStorage().token;
key = this.getLocalStorage().SecretKey; key = '' //this.getLocalStorage().secretKey;
} }
if (localStorage.groupinfo && localStorage.groupinfo != 'undefined') { if (localStorage.groupinfo && localStorage.groupinfo != 'undefined') {
var groupJson = JSON.parse(localStorage.groupinfo); var groupJson = JSON.parse(localStorage.groupinfo);
GroupId = groupJson.GroupId; GroupId = groupJson.GroupId;
} }
var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase(); var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`); var md5Str = md5(`msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
const path = this.$route.path
var postData = { var postData = {
msg: msg, "msg": msg,
cmd: cmd, "timestamp": timestamp,
timestamp: timestamp, "token": token,
token: token, "sign": md5Str,
sign: md5Str, "GroupId": GroupId
languageId: tempLanguage,
GroupId: GroupId
} }
this.$axios.post(apiurl, postData, { this.$axios.post(apiurl, postData, {
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'Referer-Viitto': this.$route.path 'Referer-Viitto': this.$route.path
}
})
.then(res => {
if(res.data.resultCode === 10000) {
this.$router.replace({
path: '/login',
query: {path: path}
});
return
}
successCall(res);
}, faildCall)
}
Vue.prototype.apiJavaPost = function(cmd, msg, successCall, faildCall) {
if (msg == null || msg == "") {
msg = {}
} }
var apiurl = this.domainManager().javaUrl + cmd; })
var timestamp = (new Date()).valueOf(); .then(res => {
this.apiurl = apiurl; successCall(res)
var token = ""; }, faildCall)
var key = ""; },
var GroupId = 0;
if (this.getLocalStorage() != null) {
token = this.getLocalStorage().token;
key = '' //this.getLocalStorage().secretKey;
}
if (localStorage.groupinfo && localStorage.groupinfo != 'undefined') {
var groupJson = JSON.parse(localStorage.groupinfo);
GroupId = groupJson.GroupId;
}
var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
var md5Str = md5(`msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
var postData = {
"msg": msg,
"timestamp": timestamp,
"token": token,
"sign": md5Str,
"GroupId": GroupId
}
this.$axios.post(apiurl, postData, {
headers: {
'Content-Type': 'application/json',
'Referer-Viitto': this.$route.path
}
})
.then(res => {
successCall(res)
}, faildCall)
},
//获取缓存
Vue.prototype.getLocalStorage = function() {
try {
var localStorageData = window.localStorage["b2bUser"];
if (localStorageData !== undefined && localStorageData != 'undefined') {
return JSON.parse(localStorageData);
} else {
return null;
}
} catch (error) {
return null;
}
//获取缓存
Vue.prototype.getLocalStorage = function () {
try {
var localStorageData = window.localStorage["b2bUser"];
if (localStorageData !== undefined && localStorageData != 'undefined') {
return JSON.parse(localStorageData);
} else {
return null;
}
} catch (error) {
return null;
} }
}
//向外跳转 //向外跳转
Vue.prototype.OpenNewUrl = function(URL) { Vue.prototype.OpenNewUrl = function (URL) {
if (URL && URL != '') { if (URL && URL != '') {
if (URL.indexOf("https") != -1) { if (URL.indexOf("https") != -1) {
var str = 'http://' + URL.substring(8); var str = 'http://' + URL.substring(8);
window.open(str, '_blank'); window.open(str, '_blank');
} else if (URL.indexOf("http") != -1) { } else if (URL.indexOf("http") != -1) {
var str = 'http://' + URL.substring(7); var str = 'http://' + URL.substring(7);
window.open(str, '_blank'); window.open(str, '_blank');
} else { } else {
window.open("http://" + URL, '_blank'); window.open("http://" + URL, '_blank');
}
} }
}
} }
//公用跳转 //公用跳转
Vue.prototype.CommonJump = function(path, obj, type = 'push') { Vue.prototype.CommonJump = function (path, obj, type = 'push') {
let p = typeof(path) == 'string' ? path : this.$product.genernalUrl(path) let p = typeof (path) == 'string' ? path : this.$product.genernalUrl(path)
if (type === 'blank') { // 新窗口打开 if (type === 'blank') { // 新窗口打开
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
path: p, path: p,
query: obj query: obj
}); });
window.open(routeUrl.href, '_blank'); window.open(routeUrl.href, '_blank');
} else if (type === 'replace') { // replace } else if (type === 'replace') { // replace
this.$router.replace({ this.$router.replace({
path: p, path: p,
query: obj query: obj
}); });
} else if (type === 'push') { // push } else if (type === 'push') { // push
this.$router.push({ this.$router.push({
path: p, path: p,
query: obj query: obj
}); });
} }
} }
Vue.prototype.$user = user Vue.prototype.$user = user
Vue.prototype.createCalendar = function(dateStr) { Vue.prototype.createCalendar = function (dateStr) {
var days = []; var days = [];
var date; var date;
if (dateStr) { if (dateStr) {
date = new Date(dateStr); date = new Date(dateStr);
} else { } else {
var now = new Date(); var now = new Date();
date = new Date(this.formatDate(now.getFullYear(), now.getMonth() + 1, 1)); date = new Date(this.formatDate(now.getFullYear(), now.getMonth() + 1, 1));
} }
var currentDay = date.getDate(); var currentDay = date.getDate();
var currentYear = date.getFullYear(); var currentYear = date.getFullYear();
var currentMonth = date.getMonth() + 1; var currentMonth = date.getMonth() + 1;
var currentWeek = date.getDay(); // 1...6,0 var currentWeek = date.getDay(); // 1...6,0
var str = this.formatDate( var str = this.formatDate(
currentYear, currentYear,
currentMonth, currentMonth,
currentDay currentDay
); );
days.length = 0; days.length = 0;
// 当月第一天是周日,放在第一行第1个位置,前面0个 // 当月第一天是周日,放在第一行第1个位置,前面0个
//初始化第一周 //初始化第一周
for (var i = currentWeek; i >= 0; i--) { for (var i = currentWeek; i >= 0; i--) {
var d = new Date(str); var d = new Date(str);
d.setDate(d.getDate() - i); d.setDate(d.getDate() - i);
var dayobject = {}; var dayobject = {};
dayobject.day = d; dayobject.day = d;
days.push(dayobject); //将日期放入data 中的days数组 供页面渲染使用 days.push(dayobject); //将日期放入data 中的days数组 供页面渲染使用
} }
//其他周 //其他周
var temp = 35; var temp = 35;
if ( if (
currentWeek + currentWeek +
new Date(currentYear, currentMonth, 0).getDate() > 35 new Date(currentYear, currentMonth, 0).getDate() > 35
) { ) {
temp = 41; temp = 41;
} }
for (var i = 1; i < temp - currentWeek; i++) { for (var i = 1; i < temp - currentWeek; i++) {
var d = new Date(str); var d = new Date(str);
d.setDate(d.getDate() + i); d.setDate(d.getDate() + i);
var dayobject = {}; var dayobject = {};
dayobject.day = d; dayobject.day = d;
days.push(dayobject); days.push(dayobject);
} }
return { return {
DayArray: days, DayArray: days,
CurrentDay: currentDay, CurrentDay: currentDay,
CurrentMonth: currentMonth, CurrentMonth: currentMonth,
CurrentYear: currentYear, CurrentYear: currentYear,
CurrentWeek: currentWeek CurrentWeek: currentWeek
}; };
} }
//格式化日期 //格式化日期
Vue.prototype.formatDate = function(year, month, day) { Vue.prototype.formatDate = function (year, month, day) {
var y = year; var y = year;
var m = month; var m = month;
if (m < 10) m = "0" + m; if (m < 10) m = "0" + m;
var d = day; var d = day;
if (d < 10) d = "0" + d; if (d < 10) d = "0" + d;
return y + "-" + m + "-" + d; return y + "-" + m + "-" + d;
} }
//格式化日期二 //格式化日期二
Vue.prototype.formatDate2 = function(dateStr) { Vue.prototype.formatDate2 = function (dateStr) {
var date = new Date(dateStr); var date = new Date(dateStr);
return { return {
CYear: date.getFullYear(), CYear: date.getFullYear(),
CMonth: (date.getMonth() + 1), CMonth: (date.getMonth() + 1),
CDay: date.getDate(), CDay: date.getDate(),
} }
} }
//添加月份 //添加月份
Vue.prototype.AddMonth = function(dateStr, month) { Vue.prototype.AddMonth = function (dateStr, month) {
var v = new Date(dateStr); var v = new Date(dateStr);
if (v) { if (v) {
var t = new Date(v.getFullYear(), v.getMonth(), v.getDate(), v.getHours(), v.getMinutes(), v.getSeconds(), v.getMilliseconds()); var t = new Date(v.getFullYear(), v.getMonth(), v.getDate(), v.getHours(), v.getMinutes(), v.getSeconds(), v.getMilliseconds());
t.setMonth(v.getMonth() + month); t.setMonth(v.getMonth() + month);
if (t.getDate() != v.getDate()) { if (t.getDate() != v.getDate()) {
t.setDate(0); t.setDate(0);
}
return t;
} }
return t;
}
} }
//获取URL中参数 //获取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 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 != "") { if (str && str != "") {
return str.replace(/&lt;/g, '<').replace(/&gt;/g, '>') return str.replace(/&lt;/g, '<').replace(/&gt;/g, '>')
.replace(/&amp;/g, '&').replace(/&quot;/g, '"').replace(/&apos;/g, "'"); .replace(/&amp;/g, '&').replace(/&quot;/g, '"').replace(/&apos;/g, "'");
} }
return str; return str;
} }
...@@ -565,8 +565,11 @@ export default { ...@@ -565,8 +565,11 @@ export default {
}, },
created() { created() {
this.msg = this.qMsg; this.msg = this.qMsg;
// this.msg.teamType = []; if(this.qMsg&&this.qMsg.TeamType==1)
//this.initAreaList(); {
this.msg.TeamType=1;
}
this.initGoods(); this.initGoods();
this.msg.priceRange = { this.msg.priceRange = {
min: 1, min: 1,
......
<style> <style>
.SearchMain { .SearchMain {
min-height: 800px; min-height: 800px;
} }
.SearchTop { .SearchTop {
width: 100%; width: 100%;
/* margin: 32px 0 30px 0; /* margin: 32px 0 30px 0;
background-color: rgba(255, 255, 255, .95); background-color: rgba(255, 255, 255, .95);
border-top: 1px solid #eee; border-top: 1px solid #eee;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, .03); */ box-shadow: 0 2px 6px 0 rgba(0, 0, 0, .03); */
min-height: 600px; min-height: 600px;
} }
.SearchContent { .SearchContent {
position: relative; position: relative;
display: flex; display: flex;
width: 100%; width: 100%;
margin: 6px auto 0; margin: 6px auto 0;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.03); box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.03);
} }
.SearchMain .showbox { .SearchMain .showbox {
position: absolute; position: absolute;
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
height: 345px; height: 345px;
background: #fff; background: #fff;
left: 0; left: 0;
top: 60px; top: 60px;
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3), 0px 0px 20px rgba(0, 0, 0, 0.1); box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3), 0px 0px 20px rgba(0, 0, 0, 0.1);
}
.Search_Zhi {
display: inline-block;
margin: 0 10px;
height: 40px;
line-height: 40px;
}
.full_price {
width: 40%;
display: inline-block;
margin-left: 20px;
}
.moreTiaojiao {
width: 100%;
height: 60px;
text-align: center;
line-height: 60px;
font-size: 18px;
border-bottom: 1px solid #eee;
color: #333;
}
.full_listDiv {
padding: 20px;
border-bottom: 1px solid #eee;
}
.full_title {
margin-bottom: 10px;
font-size: 15px;
font-weight: 700;
color: #666;
}
.full_btndiv {
position: absolute;
bottom: 0;
left: 0;
z-index: 2;
display: flex;
justify-content: space-between;
width: 100%;
border-top: 1px solid #eee;
padding: 20px 10px;
background-color: #fff;
}
.search-bar-m {
display: flex;
width: 100%;
border-right: 1px solid #eee;
border-bottom: 1px solid #eee;
}
.search-bar-m .keyword-input {
width: calc(100% - 40px);
cursor: pointer;
}
.keyword-input {
height: 44px;
border: 0;
margin: 0;
padding: 0;
font-size: 14px;
outline: none;
color: #333;
padding-left: 20px;
}
.search-bar-m i {
height: 45px;
line-height: 45px;
text-align: center;
margin-left: 20px;
color: #999;
}
.sortDiv {
width: 100%;
display: flex;
justify-content: space-between;
border-top: 1px solid #eee;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.03);
}
.sortShaixuan {
width: 50%;
height: 57px;
line-height: 57px;
text-align: center;
}
@media only screen and (max-width: 1200px) {
.pd-list .pd-box {
flex-basis: calc(50% - 10px) !important;
} }
.pd-list .pd-box:nth-child(even) { .Search_Zhi {
margin-right: 0 !important; display: inline-block;
margin: 0 10px;
height: 40px;
line-height: 40px;
} }
}
@media only screen and (min-width: 768px) { .full_price {
.pd-box:hover { width: 40%;
transform: translate(0, -4px) !important; display: inline-block;
box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.2), 0 0 0 0 rgba(0, 0, 0, 0.1) !important; margin-left: 20px;
}
.moreTiaojiao {
width: 100%;
height: 60px;
text-align: center;
line-height: 60px;
font-size: 18px;
border-bottom: 1px solid #eee;
color: #333;
}
.full_listDiv {
padding: 20px;
border-bottom: 1px solid #eee;
}
.full_title {
margin-bottom: 10px;
font-size: 15px;
font-weight: 700;
color: #666;
}
.full_btndiv {
position: absolute;
bottom: 0;
left: 0;
z-index: 2;
display: flex;
justify-content: space-between;
width: 100%;
border-top: 1px solid #eee;
padding: 20px 10px;
background-color: #fff;
}
.search-bar-m {
display: flex;
width: 100%;
border-right: 1px solid #eee;
border-bottom: 1px solid #eee;
}
.search-bar-m .keyword-input {
width: calc(100% - 40px);
cursor: pointer;
}
.keyword-input {
height: 44px;
border: 0;
margin: 0;
padding: 0;
font-size: 14px;
outline: none;
color: #333;
padding-left: 20px;
}
.search-bar-m i {
height: 45px;
line-height: 45px;
text-align: center;
margin-left: 20px;
color: #999;
}
.sortDiv {
width: 100%;
display: flex;
justify-content: space-between;
border-top: 1px solid #eee;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.03);
}
.sortShaixuan {
width: 50%;
height: 57px;
line-height: 57px;
text-align: center;
}
@media only screen and (max-width: 1200px) {
.pd-list .pd-box {
flex-basis: calc(50% - 10px) !important;
}
.pd-list .pd-box:nth-child(even) {
margin-right: 0 !important;
}
}
@media only screen and (min-width: 768px) {
.pd-box:hover {
transform: translate(0, -4px) !important;
box-shadow: 0 4px 25px 0 rgba(0, 0, 0, 0.2), 0 0 0 0 rgba(0, 0, 0, 0.1) !important;
}
}
@media only screen and (max-width: 425px) {
.pd-list .pd-box {
flex-basis: 100% !important;
margin-right: 0 !important;
}
} }
}
@media only screen and (max-width: 425px) {
.pd-list .pd-box { .pd-list .pd-box {
flex-basis: 100% !important; margin-right: 20px;
margin-right: 0 !important; margin-bottom: 30px;
} flex-basis: calc(25% - 15px);
} border-radius: 3px;
background-clip: padding-box;
.pd-list .pd-box { box-shadow: 0 2px 3px rgba(0, 0, 0, 0.09);
margin-right: 20px; transition: -webkit--webkit-transform 0.2s ease, box-shadow 0.2s ease;
margin-bottom: 30px; background-color: #fff;
flex-basis: calc(25% - 15px); }
border-radius: 3px;
background-clip: padding-box; .pd-box .pd-img {
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.09); position: relative;
transition: -webkit--webkit-transform 0.2s ease, box-shadow 0.2s ease; width: 100%;
background-color: #fff; padding-bottom: 66.237%;
} -webkit-background-size: cover;
-moz-background-size: cover;
.pd-box .pd-img { -o-background-size: cover;
position: relative; background-size: cover;
width: 100%; background-position: center;
padding-bottom: 66.237%; }
-webkit-background-size: cover;
-moz-background-size: cover; .pd-box .pd-img .pd-price {
-o-background-size: cover; position: absolute;
background-size: cover; right: 0;
background-position: center; bottom: 0;
} z-index: 2;
width: 100%;
.pd-box .pd-img .pd-price { border-bottom: 4px solid #00afff;
position: absolute; text-align: right;
right: 0; }
bottom: 0;
z-index: 2; .pd-box .pd-img .pd-price .price {
width: 100%; display: inline-block;
border-bottom: 4px solid #00afff; padding: 4px 12px 0;
text-align: right; color: #fff;
} font-size: 22px;
font-weight: 700;
.pd-box .pd-img .pd-price .price { background-color: #00afff;
display: inline-block; -webkit-border-radius: 5px 0 0;
padding: 4px 12px 0; -webkit-background-clip: padding-box;
color: #fff; -moz-border-radius: 5px 0 0;
font-size: 22px; -moz-background-clip: padding;
font-weight: 700; border-radius: 5px 0 0;
background-color: #00afff; background-clip: padding-box;
-webkit-border-radius: 5px 0 0; }
-webkit-background-clip: padding-box;
-moz-border-radius: 5px 0 0; .pd-box .pd-img .pd-price .price small {
-moz-background-clip: padding; padding: 0 4px;
border-radius: 5px 0 0; font-size: 14px;
background-clip: padding-box; }
}
.pd-box .pd-content {
.pd-box .pd-img .pd-price .price small { padding: 15px 15px 20px;
padding: 0 4px; }
font-size: 14px;
} .pd-box .pd-title {
font-size: 15px;
.pd-box .pd-content { line-height: 1.5;
padding: 15px 15px 20px; font-weight: 400;
} color: #333;
overflow: hidden;
.pd-box .pd-title { text-overflow: ellipsis;
font-size: 15px; display: -webkit-box;
line-height: 1.5; -webkit-line-clamp: 3;
font-weight: 400; -webkit-box-orient: vertical;
color: #333; }
overflow: hidden;
text-overflow: ellipsis; .pd-box .pd-departure {
display: -webkit-box; padding-top: 10px;
-webkit-line-clamp: 3; font-size: 14px;
-webkit-box-orient: vertical; color: #999;
} }
.pd-box .pd-departure { .pd-box .pd-departure .more {
padding-top: 10px; float: right;
font-size: 14px; font-size: 14px;
color: #999; }
}
.Search_center {
.pd-box .pd-departure .more { width: 100%;
float: right; max-width: 1200px;
font-size: 14px; margin: 20px auto;
} padding: 0 20px;
}
.Search_center {
width: 100%; .Search_center .pd-list {
max-width: 1200px; display: flex;
margin: 20px auto; flex-flow: wrap;
padding: 0 20px; width: 100%;
} margin: 0;
padding: 0;
.Search_center .pd-list { }
display: flex;
flex-flow: wrap; .pd-list li:nth-child(4n) {
width: 100%; margin-right: 0;
margin: 0; }
padding: 0;
} .pd-list li {
list-style-type: none;
.pd-list li:nth-child(4n) { }
margin-right: 0;
} .SearchMain .search-content {
display: flex;
.pd-list li { align-items: flex-start;
list-style-type: none; margin-top: 20px;
} }
.SearchMain .search-content { .wl-section-block {
display: flex; width: 100%;
align-items: flex-start; max-width: 1200px;
margin-top: 20px; margin: 0 auto;
} padding: 0 20px;
}
.wl-section-block {
width: 100%; .search-filter-aside {
max-width: 1200px; width: 300px;
margin: 0 auto; margin-right: 30px;
padding: 0 20px; margin-bottom: 30px;
} background-color: #fff;
.search-filter-aside {
width: 300px;
margin-right: 30px;
margin-bottom: 30px;
background-color: #fff;
}
.search-content .group-result-list {
display: flex;
flex-flow: wrap;
width: calc(100% - 300px);
}
.search-filter-aside .search-header {
position: relative;
padding: 10px 15px;
border-bottom: 1px solid #eee;
font-size: 18px;
font-weight: 700;
}
.search-filter-aside .clear-filter {
position: absolute;
top: 15px;
right: 15px;
bottom: auto;
left: auto;
z-index: 1;
display: flex;
align-items: center;
font-size: 13px;
color: #999;
cursor: pointer;
}
.search-filter-aside .search-type {
position: relative;
padding: 15px;
border-bottom: 1px solid #eee;
}
.search-filter-aside .search-type .search-title {
margin-bottom: 20px;
font-size: 16px;
font-weight: 700;
color: #333;
}
.range-text {
display: flex;
justify-content: space-between;
letter-spacing: 0;
font-weight: 700;
color: #333;
font-size: 15px;
}
.SearchMain .row.inline {
display: flex !important;
}
.group-statis-block {
display: flex;
justify-content: flex-start;
width: 100%;
font-weight: 700;
margin-bottom: 15px;
font-size: 15px;
height: 45px;
}
.group-result-list .group-statis-block > * {
display: inline-block;
height: 100%;
line-height: 45px;
}
.group-result-list .group-statis-block .group-share {
position: relative;
width: 150px;
text-align: center;
background-color: #2a8dbd;
color: #fff;
margin-right: 15px;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 2px 7px 0 rgba(0, 0, 0, 0.12);
}
.group-result-list .group-statis-block .group-statis-detail {
padding-left: 10px;
background: #fff;
width: calc(100% - 150px);
}
.group-statis-detail .title {
font-size: 18px;
}
.group-statis-detail .num {
color: #fd992d;
margin: 0 3px;
font-size: 16px;
}
.group-box {
width: 100%;
display: flex;
flex-wrap: wrap;
background-color: #fff;
border-radius: 3px;
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.09);
transition: transform 0.2s ease, box-shadow 0.2s ease;
margin-bottom: 20px;
}
.group-cover {
position: relative;
width: 270px;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
background-position: center;
overflow: hidden;
}
.group-cover img {
position: absolute;
top: 0;
right: null;
bottom: null;
left: 0;
z-index: 1;
width: 100%;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
pointer-events: none;
}
.group-box .group-main {
display: flex;
flex-wrap: wrap;
width: calc(100% - 270px);
flex-basis: calc(100% - 270px);
}
.group-box > div {
flex: 1;
}
.group-box .group-main .group-info {
padding: 20px;
width: calc(100% - 200px);
border-right: 1px solid #eee;
}
.group-box .group-main .group-info .group-detail {
margin-bottom: 5px;
font-size: 14px;
color: #666;
}
.group-box .group-main .group-info .group-detail i {
margin-right: 5px;
font-size: 18px;
}
.group-box .group-main .group-info .group-detail > * {
display: inline-block;
vertical-align: middle;
}
.group-name {
color: #333;
font-size: 16px;
line-height: 1.2;
font-weight: bold;
}
.group-list {
margin: 0;
padding: 0;
}
.group-list li {
display: inline-block;
vertical-align: middle;
margin-right: 10px;
margin-bottom: 5px;
list-style-type: none;
}
.group-list li a {
padding: 5px;
font-size: 12px;
background-color: #d9edf7;
border-color: #bce8f1;
color: #0083bd;
border-radius: 3px;
background-clip: padding-box;
}
.price-info {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
padding: 20px 15px;
width: 200px;
font-size: 14px;
}
.price-wrap {
width: 100%;
text-align: right;
}
.price-wrap > * {
display: block;
width: 100%;
}
.price_Search {
font-size: 32px;
font-weight: 700;
color: #ff9a14;
}
.price_unit {
font-size: 14px;
padding-right: 5px;
}
.btn_warning {
text-align: center;
cursor: pointer;
padding: 0 15px;
height: 40px;
min-width: 135px;
font-size: 15px;
border-radius: 2px;
background-clip: padding-box;
letter-spacing: 0.05em;
background-color: #ff9a14;
color: #fff;
margin-top: 10px;
line-height: 40px;
}
@media only screen and (max-width: 1200px) {
.search-content .search-filter-aside {
display: none;
} }
.search-content .group-result-list { .search-content .group-result-list {
display: flex;
flex-flow: wrap;
width: calc(100% - 300px);
}
.search-filter-aside .search-header {
position: relative;
padding: 10px 15px;
border-bottom: 1px solid #eee;
font-size: 18px;
font-weight: 700;
}
.search-filter-aside .clear-filter {
position: absolute;
top: 15px;
right: 15px;
bottom: auto;
left: auto;
z-index: 1;
display: flex;
align-items: center;
font-size: 13px;
color: #999;
cursor: pointer;
}
.search-filter-aside .search-type {
position: relative;
padding: 15px;
border-bottom: 1px solid #eee;
}
.search-filter-aside .search-type .search-title {
margin-bottom: 20px;
font-size: 16px;
font-weight: 700;
color: #333;
}
.range-text {
display: flex;
justify-content: space-between;
letter-spacing: 0;
font-weight: 700;
color: #333;
font-size: 15px;
}
.SearchMain .row.inline {
display: flex !important;
}
.group-statis-block {
display: flex;
justify-content: flex-start;
width: 100%; width: 100%;
font-weight: 700;
margin-bottom: 15px;
font-size: 15px;
height: 45px;
}
.group-result-list .group-statis-block>* {
display: inline-block;
height: 100%;
line-height: 45px;
} }
}
@media only screen and (max-width: 1200px) { .group-result-list .group-statis-block .group-share {
.search-content { position: relative;
max-width: 768px; width: 150px;
text-align: center;
background-color: #2a8dbd;
color: #fff;
margin-right: 15px;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 2px 7px 0 rgba(0, 0, 0, 0.12);
} }
}
@media only screen and (max-width: 768px) { .group-result-list .group-statis-block .group-statis-detail {
.group-statis-block .group-statis-detail { padding-left: 10px;
width: calc(100% - 45px); background: #fff;
width: calc(100% - 150px);
} }
.group-box .group-cover { .group-statis-detail .title {
display: block; font-size: 18px;
}
.group-statis-detail .num {
color: #fd992d;
margin: 0 3px;
font-size: 16px;
}
.group-box {
width: 100%; width: 100%;
padding-bottom: 60%; display: flex;
flex-wrap: wrap;
background-color: #fff;
border-radius: 3px;
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.09);
transition: transform 0.2s ease, box-shadow 0.2s ease;
margin-bottom: 20px;
} }
.group-box .group-main { .group-cover {
display: block; position: relative;
width: 270px;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
background-position: center;
overflow: hidden;
}
.group-cover img {
position: absolute;
top: 0;
right: null;
bottom: null;
left: 0;
z-index: 1;
width: 100%; width: 100%;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
pointer-events: none;
}
.group-box .group-main {
display: flex;
flex-wrap: wrap;
width: calc(100% - 270px);
flex-basis: calc(100% - 270px);
}
.group-box>div {
flex: 1;
} }
.group-box .group-main .group-info { .group-box .group-main .group-info {
padding: 20px;
width: calc(100% - 200px);
border-right: 1px solid #eee;
}
.group-box .group-main .group-info .group-detail {
margin-bottom: 5px;
font-size: 14px;
color: #666;
}
.group-box .group-main .group-info .group-detail i {
margin-right: 5px;
font-size: 18px;
}
.group-box .group-main .group-info .group-detail>* {
display: inline-block;
vertical-align: middle;
}
.group-name {
color: #333;
font-size: 16px;
line-height: 1.2;
font-weight: bold;
}
.group-list {
margin: 0;
padding: 0;
}
.group-list li {
display: inline-block;
vertical-align: middle;
margin-right: 10px;
margin-bottom: 5px;
list-style-type: none;
}
.group-list li a {
padding: 5px;
font-size: 12px;
background-color: #d9edf7;
border-color: #bce8f1;
color: #0083bd;
border-radius: 3px;
background-clip: padding-box;
}
.price-info {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
padding: 20px 15px;
width: 200px;
font-size: 14px;
}
.price-wrap {
width: 100%; width: 100%;
padding-bottom: 0; text-align: right;
border-right: 0;
} }
.group-box .group-main .price-info { .price-wrap>* {
display: block; display: block;
width: 100%; width: 100%;
padding-top: 0; }
}
.price_Search {
.price-info .price-wrap .price_Search { font-size: 32px;
font-size: 28px; font-weight: 700;
} color: #ff9a14;
} }
.SearchMain .q-field__control { .price_unit {
height: 46px; font-size: 14px;
} padding-right: 5px;
}
.SearchMain .q-field__control {
min-height: 46px !important; .btn_warning {
} text-align: center;
cursor: pointer;
.SearchMain .q-field__native { padding: 0 15px;
min-height: 46px; height: 40px;
} min-width: 135px;
font-size: 15px;
.SearchMain .q-field__marginal { border-radius: 2px;
height: 46px; background-clip: padding-box;
} letter-spacing: 0.05em;
background-color: #ff9a14;
.search-filter-inner { color: #fff;
position: relative; margin-top: 10px;
display: flex; line-height: 40px;
flex-wrap: wrap; }
/* width: 100%; */
height: 48px; @media only screen and (max-width: 1200px) {
margin: 0 auto; .search-content .search-filter-aside {
max-width: 1160px; display: none;
align-items: center; }
border-top: 1px solid #eee;
border-bottom: 1px solid #eee; .search-content .group-result-list {
} width: 100%;
}
.SearchContent .search-item { }
display: flex;
border-right: 1px solid #eee; @media only screen and (max-width: 1200px) {
line-height: 44px; .search-content {
padding-right: 20px; max-width: 768px;
} }
.search-item:first-child { }
border-left: 1px solid #eee;
} @media only screen and (max-width: 768px) {
.search-filter-inner i { .group-statis-block .group-statis-detail {
width: 50px; width: calc(100% - 45px);
height: 45px; }
line-height: 45px;
text-align: center; .group-box .group-cover {
color: #999; display: block;
display: inline-block; width: 100%;
} padding-bottom: 60%;
}
.full-height .q-textarea .q-field__control {
min-height: 25px !important; .group-box .group-main {
} display: block;
width: 100%;
.full_price .q-placeholder { }
min-height: 25px !important;
} .group-box .group-main .group-info {
width: 100%;
/* .text-h6 { padding-bottom: 0;
border-right: 0;
}
.group-box .group-main .price-info {
display: block;
width: 100%;
padding-top: 0;
}
.price-info .price-wrap .price_Search {
font-size: 28px;
}
}
.SearchMain .q-field__control {
height: 46px;
}
.SearchMain .q-field__control {
min-height: 46px !important;
}
.SearchMain .q-field__native {
min-height: 46px;
}
.SearchMain .q-field__marginal {
height: 46px;
}
.search-filter-inner {
position: relative;
display: flex;
flex-wrap: wrap;
/* width: 100%; */
height: 48px;
margin: 0 auto;
max-width: 1160px;
align-items: center;
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
}
.SearchContent .search-item {
display: flex;
border-right: 1px solid #eee;
line-height: 44px;
padding-right: 20px;
}
.search-item:first-child {
border-left: 1px solid #eee;
}
.search-filter-inner i {
width: 50px;
height: 45px;
line-height: 45px;
text-align: center;
color: #999;
display: inline-block;
}
.full-height .q-textarea .q-field__control {
min-height: 25px !important;
}
.full_price .q-placeholder {
min-height: 25px !important;
}
/* .text-h6 {
text-align: center; text-align: center;
padding: 0 20px; padding: 0 20px;
height: 60px; height: 60px;
...@@ -627,73 +629,82 @@ ...@@ -627,73 +629,82 @@
font-weight: 700; font-weight: 700;
position: relative; position: relative;
} */ } */
.text-h6 i { .text-h6 i {
position: absolute; position: absolute;
right: 20px; right: 20px;
cursor: pointer; cursor: pointer;
font-size: 23px; font-size: 23px;
}
.SearchContent .q-field--filled .q-field__control {
background: #fff;
}
.SearchContent .q-field--filled .q-field__control:before {
background-color: #fff;
border-bottom: 0;
}
.SearchContent .q-field--filled.q-field--focused .q-field__control:before {
background-color: #fff !important;
}
.sortDiv .q-field--filled .q-field__control {
background: #fff;
}
.sortDiv .q-field--filled .q-field__control:before {
background-color: #fff;
border-bottom: 0;
}
.sortDiv .q-field--filled.q-field--focused .q-field__control:before {
background-color: #fff !important;
}
.mobileSearch {
display: none;
}
@media only screen and (max-width: 768px) {
.SearchContent {
display: none;
} }
.SearchContent .q-field--filled .q-field__control {
background: #fff;
}
.SearchContent .q-field--filled .q-field__control:before {
background-color: #fff;
border-bottom: 0;
}
.SearchContent .q-field--filled.q-field--focused .q-field__control:before {
background-color: #fff !important;
}
.sortDiv .q-field--filled .q-field__control {
background: #fff;
}
.sortDiv .q-field--filled .q-field__control:before {
background-color: #fff;
border-bottom: 0;
}
.sortDiv .q-field--filled.q-field--focused .q-field__control:before {
background-color: #fff !important;
}
.mobileSearch { .mobileSearch {
display: block; display: none;
}
@media only screen and (max-width: 768px) {
.SearchContent {
display: none;
}
.mobileSearch {
display: block;
}
}
.SearchMain .blank-block {
margin: 100px auto;
width: 300px;
text-align: center;
}
.SearchMain .blank-block i {
font-size: 80px;
color: #ddd;
}
.SearchMain .blank-block p {
color: #999;
font-size: 15px;
letter-spacing: 1px;
} }
}
.SearchMain .blank-block { .desktop-page {
margin: 100px auto; max-width: 1200px;
width: 300px; margin: 0 auto;
text-align: center; }
}
.SearchMain .blank-block i {
font-size: 80px;
color: #ddd;
}
.SearchMain .blank-block p {
color: #999;
font-size: 15px;
letter-spacing: 1px;
}
.desktop-page {
max-width: 1200px;
margin: 0 auto;
}
</style> </style>
<template> <template>
<div class="SearchMain" :class="{'desktop-page':$q.platform.is.desktop}"> <div class="SearchMain" :class="{'desktop-page':$q.platform.is.desktop}">
<div class="SearchTop"> <div class="SearchTop">
<div class="q-my-md" v-if="qMsg.searchKey"> <div class="q-my-md" v-if="qMsg.searchKey">
<q-breadcrumbs> <q-breadcrumbs>
<q-breadcrumbs-el <q-breadcrumbs-el icon="home" label="首頁" class="cursor-pointer" @click="CommonJump('/index', {})" />
icon="home"
label="首頁"
class="cursor-pointer"
@click="CommonJump('/index', {})"
/>
<q-breadcrumbs-el :label="qMsg.searchKey" /> <q-breadcrumbs-el :label="qMsg.searchKey" />
</q-breadcrumbs> </q-breadcrumbs>
</div> </div>
...@@ -704,11 +715,7 @@ ...@@ -704,11 +715,7 @@
<!-- 电脑端 --> <!-- 电脑端 -->
<div class="row SearchContent q-mt-md" v-if="!$q.screen.xs && 1==0"> <div class="row SearchContent q-mt-md" v-if="!$q.screen.xs && 1==0">
<div class="search-filter-inner"> <div class="search-filter-inner">
<div <div class="search-item" style="width:200px;cursor:pointer;" @click="isShowDialog=true,goSearchHandler">
class="search-item"
style="width:200px;cursor:pointer;"
@click="isShowDialog=true,goSearchHandler"
>
<i class="iconfont iconchazhao"></i> <i class="iconfont iconchazhao"></i>
{{qMsg.searchKey}} {{qMsg.searchKey}}
</div> </div>
...@@ -718,40 +725,19 @@ ...@@ -718,40 +725,19 @@
</div> </div>
<div class="search-item" style="margin-left:20px;"> <div class="search-item" style="margin-left:20px;">
<q-select <q-select filled v-model="sortNum" :options="sortArray" @input="changeData" emit-value map-options />
filled
v-model="sortNum"
:options="sortArray"
@input="changeData"
emit-value
map-options
/>
</div> </div>
<div class="search-item" style="margin-left:20px;"> <div class="search-item" style="margin-left:20px;">
<span style="display:inline-block;cursor:pointer;" @click="fullHeight = true">更多篩選條件</span> <span style="display:inline-block;cursor:pointer;" @click="fullHeight = true">更多篩選條件</span>
</div> </div>
</div> </div>
<div <div v-show="showSplitPannel" id="sb" style="z-index:999" transition-show="fade" elevated
v-show="showSplitPannel" transition-hide="scale" class="showbox row">
id="sb"
style="z-index:999"
transition-show="fade"
elevated
transition-hide="scale"
class="showbox row"
>
<div style="width:180px;"> <div style="width:180px;">
<q-scroll-area :thumb-style="thumbStyle" :bar-style="barStyle" style="height: 100%;"> <q-scroll-area :thumb-style="thumbStyle" :bar-style="barStyle" style="height: 100%;">
<q-list> <q-list>
<q-item <q-item v-for="(x, i) in areas" :key="i" clickable v-ripple :active="crtAreaIndex==i"
v-for="(x, i) in areas" @click="clkAreaHandler(i)" active-class="my-menu-link">
:key="i"
clickable
v-ripple
:active="crtAreaIndex==i"
@click="clkAreaHandler(i)"
active-class="my-menu-link"
>
<q-item-section> <q-item-section>
<q-item-label>{{ x.Name }}</q-item-label> <q-item-label>{{ x.Name }}</q-item-label>
</q-item-section> </q-item-section>
...@@ -762,9 +748,7 @@ ...@@ -762,9 +748,7 @@
<q-separator vertical /> <q-separator vertical />
<div class="col q-pa-md"> <div class="col q-pa-md">
<q-scroll-area :thumb-style="thumbStyle" :bar-style="barStyle" style="height: 100%;"> <q-scroll-area :thumb-style="thumbStyle" :bar-style="barStyle" style="height: 100%;">
<template <template v-if="areas[crtAreaIndex]&&areas[crtAreaIndex].SubList&&areas[crtAreaIndex].SubList.length>0">
v-if="areas[crtAreaIndex]&&areas[crtAreaIndex].SubList&&areas[crtAreaIndex].SubList.length>0"
>
<div class="area-box" v-for="(x, i) in areas[crtAreaIndex].SubList" :key="i"> <div class="area-box" v-for="(x, i) in areas[crtAreaIndex].SubList" :key="i">
<div class="q-mb-md"> <div class="q-mb-md">
<div class="h3" @click="chosenAreaHandler(x.Name)">{{x.Name}}</div> <div class="h3" @click="chosenAreaHandler(x.Name)">{{x.Name}}</div>
...@@ -773,12 +757,8 @@ ...@@ -773,12 +757,8 @@
<div class="q-mb-sm row to-end" v-for="(y, yi) in x.SubList" :key="yi"> <div class="q-mb-sm row to-end" v-for="(y, yi) in x.SubList" :key="yi">
<div class="h4" @click="chosenAreaHandler(y.Name)">{{y.Name}}</div> <div class="h4" @click="chosenAreaHandler(y.Name)">{{y.Name}}</div>
<template v-if="y&&y.SubList&&y.SubList.length>0"> <template v-if="y&&y.SubList&&y.SubList.length>0">
<div <div class="h5" @click="chosenAreaHandler(z.Name)" v-for="(z, zi) in y.SubList" :key="zi">
class="h5" {{z.Name}}</div>
@click="chosenAreaHandler(z.Name)"
v-for="(z, zi) in y.SubList"
:key="zi"
>{{z.Name}}</div>
</template> </template>
</div> </div>
</template> </template>
...@@ -809,26 +789,12 @@ ...@@ -809,26 +789,12 @@
<div style="width:100%;height:57px;display:none"></div> <div style="width:100%;height:57px;display:none"></div>
<div class="range-text"> <div class="range-text">
<div class="min"> <div class="min">
<q-input <q-input class="full_price" style="width:80%" placeholder="最低价" v-model="qMsg.minPrice"
class="full_price" @input="changeData" filled autogrow />
style="width:80%"
placeholder="最低价"
v-model="qMsg.minPrice"
@input="changeData"
filled
autogrow
/>
</div> </div>
<div class="max"> <div class="max">
<q-input <q-input class="full_price" style="width:80%" placeholder="最高价" v-model="qMsg.maxPrice"
class="full_price" @input="changeData" filled autogrow />
style="width:80%"
placeholder="最高价"
v-model="qMsg.maxPrice"
@input="changeData"
filled
autogrow
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -837,15 +803,8 @@ ...@@ -837,15 +803,8 @@
天數 天數
<span class="clear-filter" @click="clearDays()">清除篩選</span> <span class="clear-filter" @click="clearDays()">清除篩選</span>
</div> </div>
<q-checkbox <q-checkbox right-label v-model="dayNum" v-for="(item,index) in dayArray" :label="item.text"
right-label :key="index" :val="item.id" @input="changeData" />
v-model="dayNum"
v-for="(item,index) in dayArray"
:label="item.text"
:key="index"
:val="item.id"
@input="changeData"
/>
</div> </div>
<div class="search-type"> <div class="search-type">
<div class="search-title"> <div class="search-title">
...@@ -866,15 +825,8 @@ ...@@ -866,15 +825,8 @@
<span class="clear-filter" @click="clearWeek()">清除篩選</span> <span class="clear-filter" @click="clearWeek()">清除篩選</span>
</div> </div>
<div class="q-gutter-sm"> <div class="q-gutter-sm">
<q-checkbox <q-checkbox v-model="WeekDay" v-for="(item,index) in weekList" :val="item.value" :label="item.label"
v-model="WeekDay" :key="index" color="teal" @input="changeData" />
v-for="(item,index) in weekList"
:val="item.value"
:label="item.label"
:key="index"
color="teal"
@input="changeData"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -897,61 +849,29 @@ ...@@ -897,61 +849,29 @@
<div class="moreTiaojiao">更多篩選條件</div> <div class="moreTiaojiao">更多篩選條件</div>
<div class="full_listDiv" style="padding-bottom:20px"> <div class="full_listDiv" style="padding-bottom:20px">
<span>價格:</span> <span>價格:</span>
<q-input <q-input class="full_price" style="width:30%;height:45px;" v-model="qMsg.minPrice" @input="changeData" filled
class="full_price" autogrow />
style="width:30%;height:45px;" <q-input class="full_price" style="width:30%;height:45px;" v-model="qMsg.maxPrice" @input="changeData" filled
v-model="qMsg.minPrice" autogrow />
@input="changeData"
filled
autogrow
/>
<q-input
class="full_price"
style="width:30%;height:45px;"
v-model="qMsg.maxPrice"
@input="changeData"
filled
autogrow
/>
</div> </div>
<div class="full_listDiv"> <div class="full_listDiv">
<div class="full_title">天數</div> <div class="full_title">天數</div>
<div class="q-gutter-sm"> <div class="q-gutter-sm">
<q-checkbox <q-checkbox right-label v-model="dayNum" v-for="(item,index) in dayArray" :label="item.text" :key="index"
right-label :val="item.id" @input="changeData" />
v-model="dayNum"
v-for="(item,index) in dayArray"
:label="item.text"
:key="index"
:val="item.id"
@input="changeData"
/>
</div> </div>
</div> </div>
<div class="full_listDiv"> <div class="full_listDiv">
<div class="full_title">出發星期</div> <div class="full_title">出發星期</div>
<div class="q-gutter-sm"> <div class="q-gutter-sm">
<q-checkbox <q-checkbox v-model="WeekDay" v-for="(item,index) in weekList" :val="item.value" :label="item.label"
v-model="WeekDay" :key="index" color="teal" @input="changeData" />
v-for="(item,index) in weekList"
:val="item.value"
:label="item.label"
:key="index"
color="teal"
@input="changeData"
/>
</div> </div>
</div> </div>
<div class="full_btndiv"> <div class="full_btndiv">
<q-btn color="white" style="width:49%" text-color="black" label="清除" /> <q-btn color="white" style="width:49%" text-color="black" label="清除" />
<q-btn <q-btn color="primary" style="width:49%" label="套用" v-close-popup @click="goSearchHandler" />
color="primary"
style="width:49%"
label="套用"
v-close-popup
@click="goSearchHandler"
/>
</div> </div>
</q-card> </q-card>
</q-dialog> </q-dialog>
...@@ -965,7 +885,7 @@ ...@@ -965,7 +885,7 @@
</div> </div>
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<div style="max-height: 550px;padding:20px 30px 30px 30px" class="scroll"> <div style="max-height: 550px;padding:20px 30px 30px 30px" class="scroll">
<div class="chosen-box"> <div class="chosen-box">
<div class="chosen-tab"> <div class="chosen-tab">
...@@ -975,99 +895,46 @@ ...@@ -975,99 +895,46 @@
</q-tabs> </q-tabs>
<div v-show="tab=='dest'"> <div v-show="tab=='dest'">
<div class="q-mb-md"> <div class="q-mb-md">
<q-select <q-select filled v-model="chosenResult.fl" :options="areas" option-label="Name" option-value="Name"
filled label="請選擇地區" />
v-model="chosenResult.fl"
:options="areas"
option-label="Name"
option-value="Name"
label="請選擇地區"
/>
</div> </div>
<div class="q-mb-md" v-if="chosenResult.fl.SubList"> <div class="q-mb-md" v-if="chosenResult.fl.SubList">
<q-select <q-select filled v-model="chosenResult.sl" :options="chosenResult.fl.SubList" option-label="Name"
filled option-value="Name" label="請選擇地區" />
v-model="chosenResult.sl"
:options="chosenResult.fl.SubList"
option-label="Name"
option-value="Name"
label="請選擇地區"
/>
</div> </div>
<div class="q-mb-md" v-if="chosenResult.sl.SubList"> <div class="q-mb-md" v-if="chosenResult.sl.SubList">
<q-select <q-select filled v-model="chosenResult.tl" :options="chosenResult.sl.SubList" option-label="Name"
filled option-value="Name" label="請選擇地區" />
v-model="chosenResult.tl"
:options="chosenResult.sl.SubList"
option-label="Name"
option-value="Name"
label="請選擇地區"
/>
</div> </div>
<div class="q-mb-md" v-if="chosenResult.tl.SubList"> <div class="q-mb-md" v-if="chosenResult.tl.SubList">
<q-select <q-select filled v-model="chosenResult.ful" @input="setSearchKey(chosenResult.ful)"
filled :options="chosenResult.tl.SubList" option-label="Name" option-value="Name" label="請選擇地區" />
v-model="chosenResult.ful"
@input="setSearchKey(chosenResult.ful)"
:options="chosenResult.tl.SubList"
option-label="Name"
option-value="Name"
label="請選擇地區"
/>
</div> </div>
</div> </div>
<div v-show="tab=='kw'" class="q-mb-md"> <div v-show="tab=='kw'" class="q-mb-md">
<q-input <q-input filled id="search_key" v-model="qMsg.searchKey" class="bg-grey-1" :label="$t('search')" />
filled
id="search_key"
v-model="qMsg.searchKey"
class="bg-grey-1"
:label="$t('search')"
/>
</div> </div>
<div class="q-mb-md row"> <div class="q-mb-md row">
<div class="col"> <div class="col">
<q-input <q-input filled v-model="qMsg.startDate" style="width:99%" :label="$t('search_date_begin')"
filled mask="date" class="bg-grey-1">
v-model="qMsg.startDate"
style="width:99%"
:label="$t('search_date_begin')"
mask="date"
class="bg-grey-1"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy7"> <q-popup-proxy ref="qDateProxy7">
<q-date <q-date mask="YYYY-MM-DD" :title="$t('search_date_begin')" subtitle="選擇"
mask="YYYY-MM-DD" v-model="qMsg.startDate" @input="() => $refs.qDateProxy7.hide()" />
:title="$t('search_date_begin')"
subtitle="選擇"
v-model="qMsg.startDate"
@input="() => $refs.qDateProxy7.hide()"
/>
</q-popup-proxy> </q-popup-proxy>
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
</div> </div>
<div class="col"> <div class="col">
<q-input <q-input filled v-model="qMsg.endDate" :label="$t('search_date_end')" mask="date" class="bg-grey-1">
filled
v-model="qMsg.endDate"
:label="$t('search_date_end')"
mask="date"
class="bg-grey-1"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy8"> <q-popup-proxy ref="qDateProxy8">
<q-date <q-date mask="YYYY-MM-DD" :title="$t('search_date_begin')" subtitle="選擇"
mask="YYYY-MM-DD" v-model="qMsg.endDate" @input="() => $refs.qDateProxy8.hide()" />
:title="$t('search_date_begin')"
subtitle="選擇"
v-model="qMsg.endDate"
@input="() => $refs.qDateProxy8.hide()"
/>
</q-popup-proxy> </q-popup-proxy>
</q-icon> </q-icon>
</template> </template>
...@@ -1075,14 +942,8 @@ ...@@ -1075,14 +942,8 @@
</div> </div>
</div> </div>
<div> <div>
<q-btn <q-btn color="primary" unelevated style="width:100%;height:50px;margin-top:20px;" filled label="搜尋"
color="primary" @click="isShowDialog=false,goSearchHandler()" />
unelevated
style="width:100%;height:50px;margin-top:20px;"
filled
label="搜尋"
@click="isShowDialog=false,goSearchHandler()"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -1101,98 +962,45 @@ ...@@ -1101,98 +962,45 @@
</q-tabs> </q-tabs>
<div v-show="tab=='dest'"> <div v-show="tab=='dest'">
<div class="q-mb-md"> <div class="q-mb-md">
<q-select <q-select filled v-model="chosenResult.fl" :options="areas" option-label="Name" option-value="Name"
filled label="請選擇地區" />
v-model="chosenResult.fl"
:options="areas"
option-label="Name"
option-value="Name"
label="請選擇地區"
/>
</div> </div>
<div class="q-mb-md" v-if="chosenResult.fl.SubList"> <div class="q-mb-md" v-if="chosenResult.fl.SubList">
<q-select <q-select filled v-model="chosenResult.sl" :options="chosenResult.fl.SubList" option-label="Name"
filled option-value="Name" label="請選擇地區" />
v-model="chosenResult.sl"
:options="chosenResult.fl.SubList"
option-label="Name"
option-value="Name"
label="請選擇地區"
/>
</div> </div>
<div class="q-mb-md" v-if="chosenResult.sl.SubList"> <div class="q-mb-md" v-if="chosenResult.sl.SubList">
<q-select <q-select filled v-model="chosenResult.tl" :options="chosenResult.sl.SubList" option-label="Name"
filled option-value="Name" label="請選擇地區" />
v-model="chosenResult.tl"
:options="chosenResult.sl.SubList"
option-label="Name"
option-value="Name"
label="請選擇地區"
/>
</div> </div>
<div class="q-mb-md" v-if="chosenResult.tl.SubList"> <div class="q-mb-md" v-if="chosenResult.tl.SubList">
<q-select <q-select filled v-model="chosenResult.ful" @input="setSearchKey(chosenResult.ful)"
filled :options="chosenResult.tl.SubList" option-label="Name" option-value="Name" label="請選擇地區" />
v-model="chosenResult.ful"
@input="setSearchKey(chosenResult.ful)"
:options="chosenResult.tl.SubList"
option-label="Name"
option-value="Name"
label="請選擇地區"
/>
</div> </div>
</div> </div>
<div v-show="tab=='kw'" class="q-mb-md"> <div v-show="tab=='kw'" class="q-mb-md">
<q-input <q-input filled id="search_key" v-model="qMsg.searchKey" class="bg-grey-1" :label="$t('search')" />
filled
id="search_key"
v-model="qMsg.searchKey"
class="bg-grey-1"
:label="$t('search')"
/>
</div> </div>
<div class="q-mb-md row"> <div class="q-mb-md row">
<div class="col"> <div class="col">
<q-input <q-input filled v-model="qMsg.startDate" :label="$t('search_date_begin')" mask="date" class="bg-grey-1">
filled
v-model="qMsg.startDate"
:label="$t('search_date_begin')"
mask="date"
class="bg-grey-1"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy7"> <q-popup-proxy ref="qDateProxy7">
<q-date <q-date mask="YYYY-MM-DD" :title="$t('search_date_begin')" subtitle="選擇" v-model="qMsg.startDate"
mask="YYYY-MM-DD" @input="() => $refs.qDateProxy7.hide()" />
:title="$t('search_date_begin')"
subtitle="選擇"
v-model="qMsg.startDate"
@input="() => $refs.qDateProxy7.hide()"
/>
</q-popup-proxy> </q-popup-proxy>
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
</div> </div>
<div class="col"> <div class="col">
<q-input <q-input filled v-model="qMsg.endDate" :label="$t('search_date_end')" mask="date" class="bg-grey-1">
filled
v-model="qMsg.endDate"
:label="$t('search_date_end')"
mask="date"
class="bg-grey-1"
>
<template v-slot:append> <template v-slot:append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy ref="qDateProxy8"> <q-popup-proxy ref="qDateProxy8">
<q-date <q-date mask="YYYY-MM-DD" :title="$t('search_date_begin')" subtitle="選擇" v-model="qMsg.endDate"
mask="YYYY-MM-DD" @input="() => $refs.qDateProxy8.hide()" />
:title="$t('search_date_begin')"
subtitle="選擇"
v-model="qMsg.endDate"
@input="() => $refs.qDateProxy8.hide()"
/>
</q-popup-proxy> </q-popup-proxy>
</q-icon> </q-icon>
</template> </template>
...@@ -1200,14 +1008,8 @@ ...@@ -1200,14 +1008,8 @@
</div> </div>
</div> </div>
<div> <div>
<q-btn <q-btn color="primary" unelevated style="width:100%" filled label="搜尋"
color="primary" @click="showPopup=false,goSearchHandler()" />
unelevated
style="width:100%"
filled
label="搜尋"
@click="showPopup=false,goSearchHandler()"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -1215,477 +1017,481 @@ ...@@ -1215,477 +1017,481 @@
</div> </div>
</template> </template>
<script> <script>
import popup from "../components/props/index"; import popup from "../components/props/index";
import searchBlock from "../components/searchProductdata/block"; import searchBlock from "../components/searchProductdata/block";
import searchList from "../components/searchProductdata/list"; import searchList from "../components/searchProductdata/list";
import kkday from "../components/searchProductdata/kkday.vue"; import kkday from "../components/searchProductdata/kkday.vue";
import {date} from 'quasar' import {
export default { date
components: { } from 'quasar'
popup, export default {
searchBlock, components: {
searchList, popup,
kkday searchBlock,
}, searchList,
data() { kkday
return { },
SearchResult: "", data() {
isShowDialog: false, return {
sortNum: 1, //排序 SearchResult: "",
dayNum: [], //天数 isShowDialog: false,
WeekDay: [], sortNum: 1, //排序
//天数数组 dayNum: [], //天数
dayArray: [ WeekDay: [],
{ //天数数组
id: 1, dayArray: [{
min: 1, id: 1,
max: 1, min: 1,
text: "1天" max: 1,
}, text: "1天"
{ },
id: 2, {
min: 2, id: 2,
max: 2, min: 2,
text: "2天" max: 2,
}, text: "2天"
{ },
id: 3, {
min: 3, id: 3,
max: 3, min: 3,
text: "3天" max: 3,
}, text: "3天"
{ },
id: 4, {
min: 4, id: 4,
max: 4, min: 4,
text: "4天" max: 4,
}, text: "4天"
{ },
id: 5, {
min: 5, id: 5,
max: 5, min: 5,
text: "5天" max: 5,
}, text: "5天"
{ },
id: 6, {
min: 6, id: 6,
max: 6, min: 6,
text: "6天" max: 6,
}, text: "6天"
{ },
id: 7, {
min: 7, id: 7,
max: 8, min: 7,
text: "7-8天" max: 8,
}, text: "7-8天"
{ },
id: 8, {
min: 9, id: 8,
max: 10, min: 9,
text: "9-10天" max: 10,
}, text: "9-10天"
{ },
id: 9, {
min: 10, id: 9,
max: null, min: 10,
text: "10天以上" max: null,
} text: "10天以上"
], }
flight: ["长荣"], ],
flight: ["长荣"],
showSplitPannel: false,
fullHeight: false, showSplitPannel: false,
//地区样式 fullHeight: false,
thumbStyle: { //地区样式
right: "4px", thumbStyle: {
borderRadius: "5px", right: "4px",
backgroundColor: "#027be3", borderRadius: "5px",
width: "5px", backgroundColor: "#027be3",
opacity: 0.75 width: "5px",
}, opacity: 0.75
//地区样式
barStyle: {
right: "2px",
borderRadius: "9px",
backgroundColor: "#027be3",
width: "9px",
opacity: 0.2
},
//地区数据
areas: [],
crtAreaIndex: 0,
sortArray: [
{
label: "依推薦程度",
value: 1
},
{
label: "低價優先",
value: 2
},
{
label: "高價優先",
value: 3
},
{
label: "最快出發日",
value: 4
},
{
label: "最晚出發日",
value: 5
},
{
label: "天數少到多",
value: 6
},
{
label: "天數多到少",
value: 7
}
],
weekList: [
{
label: "星期日",
value: 0
},
{
label: "星期一",
value: 1
},
{
label: "星期二",
value: 2
}, },
{ //地区样式
label: "星期三", barStyle: {
value: 3 right: "2px",
borderRadius: "9px",
backgroundColor: "#027be3",
width: "9px",
opacity: 0.2
}, },
{ //地区数据
label: "星期四", areas: [],
value: 4 crtAreaIndex: 0,
sortArray: [{
label: "依推薦程度",
value: 1
},
{
label: "低價優先",
value: 2
},
{
label: "高價優先",
value: 3
},
{
label: "最快出發日",
value: 4
},
{
label: "最晚出發日",
value: 5
},
{
label: "天數少到多",
value: 6
},
{
label: "天數多到少",
value: 7
}
],
weekList: [{
label: "星期日",
value: 0
},
{
label: "星期一",
value: 1
},
{
label: "星期二",
value: 2
},
{
label: "星期三",
value: 3
},
{
label: "星期四",
value: 4
},
{
label: "星期五",
value: 5
},
{
label: "星期六",
value: 6
}
],
showPopup: false,
tab: "dest",
chosenResult: {
fl: "",
sl: "",
tl: "",
ful: ""
}, },
{ //查询参数
label: "星期五", qMsg: {
value: 5 pageIndex: 1,
pageSize: 20,
companyId: 0,
startDate: "", //开始日期
endDate: "", //结束日期
// lineId: 0, //线路编号
// lineTeamId: 0, //系列编号
minPrice: "", //最低价格
maxPrice: "", //最高价格
// minTripDay: "", //最低行程条数
// maxTripDay: "", //最高行程天数
// orderByDate: 0,
// orderByPrice: 0,
// orderBySales: 0,
// pageIndex: 1,
// pageSize: 10,
// priceOrderByField: 4,
SeriesIds: "",
LineIds: "",
searchKey: "", // 搜索词
// startCityId: 0,
// PageCount: 0,
// TotalCount: 0,
dayNumList: [], // 天数
webSiteCategoryIds: "", // 分类Id
placeIds: "", // 目的地城市Id
orderBy: 0, // 排序 0默认 1价格升序 2价格降序
TeamType: 0, //私家团
StartCityList: [],
}, },
{ ShowType: 0, //显示样式(0-豆腐格,1-列表)
label: "星期六", //行程列表
value: 6 DataList: []
} };
], },
showPopup: false, created() {},
tab: "dest", watch: {
chosenResult: {
fl: "",
sl: "",
tl: "",
ful: ""
},
//查询参数
qMsg: { qMsg: {
pageIndex: 1, handler(n, o) {}
pageSize: 20,
companyId: 0,
startDate: "", //开始日期
endDate: "", //结束日期
// lineId: 0, //线路编号
// lineTeamId: 0, //系列编号
minPrice: "", //最低价格
maxPrice: "", //最高价格
// minTripDay: "", //最低行程条数
// maxTripDay: "", //最高行程天数
// orderByDate: 0,
// orderByPrice: 0,
// orderBySales: 0,
// pageIndex: 1,
// pageSize: 10,
// priceOrderByField: 4,
SeriesIds:"",
LineIds:"",
searchKey: "", // 搜索词
// startCityId: 0,
// PageCount: 0,
// TotalCount: 0,
dayNumList: [], // 天数
webSiteCategoryIds: "", // 分类Id
placeIds: "", // 目的地城市Id
orderBy: 0, // 排序 0默认 1价格升序 2价格降序
TeamType: 0,//私家团
StartCityList: [],
}, },
ShowType: 0, //显示样式(0-豆腐格,1-列表) '$route': {
//行程列表 handler(n, o) {
DataList: [] if (this.$route.params.TeamType) {
}; this.qMsg.TeamType = this.$route.params.TeamType
}, this.changeData()
created() {}, }
watch:{
qMsg:{
handler(n,o){
}
},
'$route':{
handler(n,o){
if(this.$route.params.TeamType){
this.qMsg.TeamType = this.$route.params.TeamType
this.changeData()
} }
} }
}
},
mounted() {
// 支付宝退款 测试使用
// this.apipost("GetAliPayReturn_post",{OrderNo:'D202304121702420001'},r=>{
// if(r.data.message=="退款成功"){
// this.$message.success("退款成功")
// }else{
// this.$message.error("退款失败")
// }
// },e=>{
// })
if (localStorage.baseifo) {
var jObj = JSON.parse(localStorage.baseifo);
this.areas = jObj.AreaList;
this.ShowType = jObj.Config.ShowType;
this.ShowType = 2;
} else {
//this.getAera();
}
document.addEventListener("click", this.clickHandler);
var qsearchKey = this.getUrlKey("qsearchKey", window.location.href);
var qsearchDate = this.getUrlKey("qsearchDate", window.location.href);
var qsearchEndDate = this.getUrlKey("qsearchEndDate", window.location.href);
var areaId = this.getUrlKey("areaId", window.location.href);
var areaIds = this.getUrlKey("areaIds", window.location.href)
var categoryId = this.getUrlKey("categoryId", window.location.href);
var seriesIds = this.getUrlKey("SeriesIds", window.location.href);
var lineIds = this.getUrlKey("LineIds", window.location.href);
console.log("qsearchKey",qsearchKey);
if (qsearchKey) {
this.qMsg.searchKey = qsearchKey;
}
console.log("qsearchDate",qsearchDate);
if (qsearchDate&&qsearchDate.length>0) {
this.qMsg.startDate = qsearchDate;
}
else{
this.qMsg.startDate =date.formatDate(date.addToDate(new Date(),{day:1}),'YYYY-MM-DD');
}
if (qsearchEndDate&&qsearchEndDate.length>0) {
this.qMsg.endDate = qsearchEndDate;
}
else{
this.qMsg.endDate =date.formatDate(date.addToDate(new Date(),{month:2}),'YYYY-MM-DD');
}
if (areaId) {
this.qMsg.areaId = Number(areaId);
}
if (areaIds) {
this.qMsg.areaIds = areaIds.split(',').map(item => Number(item));
}
if (categoryId) {
this.qMsg.categoryId = Number(categoryId);
}
if (seriesIds) {
this.qMsg.SeriesIds = seriesIds;
}
if (lineIds) {
this.qMsg.LineIds = lineIds;
}
if ((qsearchKey || qsearchDate || qsearchEndDate) && this.ShowType != 2) {
this.goSearchHandler();
this.$forceUpdate();
}
},
methods: {
handlerSearchChange(value) {
this.qMsg = value;
this.goSearchHandler();
},
//清除所有条件
clearAll() {
let msg = {
companyId: 0,
startDate: "", //开始日期
endDate: "", //结束日期
// lineId: 0, //线路编号
// lineTeamId: 0, //系列编号
minPrice: "", //最低价格
maxPrice: "", //最高价格
// minTripDay: "", //最低行程条数
// maxTripDay: "", //最高行程天数
// orderByDate: 0,
// orderByPrice: 0,
// orderBySales: 0,
// pageIndex: 1,
// pageSize: 10,
// priceOrderByField: 4,
searchKey: "", // 搜索词
SeriesIds:"",
LineIds:"",
// startCityId: 0,
// PageCount: 0,
// TotalCount: 0,
dayNumList: [], // 天数
webSiteCategoryIds: "", // 分类Id
placeIds: "", // 目的地城市Id
orderBy: 0 // 排序 0默认 1价格升序 2价格降序
};
this.qMsg = msg;
this.goSearchHandler();
},
//清除价格
clearPrice() {
this.qMsg.minPrice = "";
this.qMsg.maxPrice = "";
this.goSearchHandler();
},
//清除天数
clearDays() {
this.dayNum = [];
this.goSearchHandler();
},
//清除星期
clearWeek() {
this.WeekDay = [];
this.goSearchHandler();
},
//获取地区数据
getAera() {
this.apipost(
"ws_get_GetSearchArea",
{},
res => {
if (res.data.resultCode == 1) {
if (res.data.data) {
this.areas = res.data.data.AreaList;
}
}
},
err => {}
);
}, },
searchFocusHandler() { mounted() {
if (this.qMsg.searchKey == "") { // 支付宝退款 测试使用
setTimeout(() => { // this.apipost("GetAliPayReturn_post",{OrderNo:'D202304121702420001'},r=>{
this.showSplitPannel = true; // if(r.data.message=="退款成功"){
}, 200); // this.$message.success("退款成功")
// }else{
// this.$message.error("退款失败")
// }
// },e=>{
// })
if (localStorage.baseifo) {
var jObj = JSON.parse(localStorage.baseifo);
this.areas = jObj.AreaList;
this.ShowType = jObj.Config.ShowType;
this.ShowType = 2;
} else {
//this.getAera();
} }
}, document.addEventListener("click", this.clickHandler);
searchBlurHandler() {}, var qsearchKey = this.getUrlKey("qsearchKey", window.location.href);
searchChangeHandler() { var qsearchDate = this.getUrlKey("qsearchDate", window.location.href);
if (this.qMsg.searchKey == "") { var qsearchEndDate = this.getUrlKey("qsearchEndDate", window.location.href);
this.showSplitPannel = true; var areaId = this.getUrlKey("areaId", window.location.href);
var areaIds = this.getUrlKey("areaIds", window.location.href)
var categoryId = this.getUrlKey("categoryId", window.location.href);
var seriesIds = this.getUrlKey("SeriesIds", window.location.href);
var lineIds = this.getUrlKey("LineIds", window.location.href);
var TeamType = this.getUrlKey("TeamType", window.location.href);
console.log("TeamType", TeamType);
if (qsearchKey) {
this.qMsg.searchKey = qsearchKey;
}
if (qsearchDate && qsearchDate.length > 0) {
this.qMsg.startDate = qsearchDate;
} else { } else {
this.showSplitPannel = false; this.qMsg.startDate = date.formatDate(date.addToDate(new Date(), {
day: 1
}), 'YYYY-MM-DD');
} }
}, if (qsearchEndDate && qsearchEndDate.length > 0) {
clkAreaHandler(i) { this.qMsg.endDate = qsearchEndDate;
this.crtAreaIndex = i; } else {
}, this.qMsg.endDate = date.formatDate(date.addToDate(new Date(), {
clickHandler(e) { month: 2
if (document.querySelector("#sb")) { }), 'YYYY-MM-DD');
if (!document.querySelector("#sb").contains(e.target)) {
this.showSplitPannel = false;
}
} }
}, if (areaId) {
chosenAreaHandler(name) { this.qMsg.areaId = Number(areaId);
this.qMsg.searchKey = name;
this.showSplitPannel = false;
},
//数据改变
changeData() {
this.qMsg.pageIndex = 1;
this.goSearchHandler();
},
//分页方法
getPage() {
this.goSearchHandler();
},
setSearchKey(obj) {
this.qMsg.searchKey = obj.Name;
},
goSearchHandler() {
this.$q.loading.show();
this.DataList = [];
let minTripDay = -1,
maxTripDay = -1,
minPrice = -1,
maxPrice = -1;
if (this.qMsg.minPrice != "") {
minPrice = parseFloat(this.qMsg.minPrice);
} }
if (this.qMsg.maxPrice != "") { if (areaIds) {
maxPrice = parseFloat(this.qMsg.maxPrice); this.qMsg.areaIds = areaIds.split(',').map(item => Number(item));
if (minPrice > maxPrice) {
//this.Error('价格区间的最低价格不能低于最大价格')
return false;
}
} }
var companyId = -1; if (categoryId) {
if (localStorage.groupinfo) { this.qMsg.categoryId = Number(categoryId);
var groupinfo = JSON.parse(localStorage.groupinfo);
companyId = groupinfo.siteList[0].companyId;
} }
this.SearchResult = if (seriesIds) {
this.qMsg.startDate + this.qMsg.SeriesIds = seriesIds;
"-" + }
this.qMsg.endDate + if (lineIds) {
" " + this.qMsg.LineIds = lineIds;
this.qMsg.searchKey; }
let msg = { if (TeamType && TeamType == 1) {
pageIndex: this.qMsg.pageIndex, this.qMsg.TeamType = TeamType;
pageSize: this.qMsg.pageSize,
searchKey: this.qMsg.searchKey,
lineId: this.qMsg.lineId,
lineTeamId: this.qMsg.lineTeamId,
minTripDay: minTripDay,
maxTripDay: maxTripDay,
minPrice: minPrice,
maxPrice: maxPrice,
startDate: this.qMsg.startDate,
endDate: this.qMsg.endDate,
orderByDate: this.sortNum == 4 ? 1 : this.sortNum == 5 ? 2 : 0,
orderByPrice: this.sortNum == 2 ? 1 : this.sortNum == 3 ? 2 : 0,
orderByDay: this.sortNum == 6 ? 1 : this.sortNum == 7 ? 2 : 0,
priceOrderByField: 4,
companyId: companyId,
orderBySales: 0,
startCityId: this.qMsg.startCityId,
weekDayList: this.WeekDay,
dayNumList: this.dayNum,
SeriesIds:this.qMsg.SeriesIds,
LineIds:this.qMsg.LineIds,
TeamType:this.qMsg.TeamType,
StartCityList: [],
};
if (localStorage.b2bUser) {
var b2bUser = JSON.parse(window.localStorage.getItem("b2bUser"));
if (b2bUser) {
this.msg.priceOrderByField = 2;
}
} }
this.apipost( if ((qsearchKey || qsearchDate || qsearchEndDate) && this.ShowType != 2) {
"b2c_get_GetB2C2024TravelProductPage", this.goSearchHandler();
msg, this.$forceUpdate();
res => { }
this.$q.loading.hide(); },
if (res.data.resultCode == 1) { methods: {
this.qMsg.PageCount = res.data.data.pageCount; handlerSearchChange(value) {
this.qMsg.TotalCount = res.data.data.count; this.qMsg = value;
var tempArray = res.data.data.pageData.list; this.goSearchHandler();
if (tempArray && tempArray.length > 0) { },
this.DataList = tempArray; //清除所有条件
clearAll() {
let msg = {
companyId: 0,
startDate: "", //开始日期
endDate: "", //结束日期
// lineId: 0, //线路编号
// lineTeamId: 0, //系列编号
minPrice: "", //最低价格
maxPrice: "", //最高价格
// minTripDay: "", //最低行程条数
// maxTripDay: "", //最高行程天数
// orderByDate: 0,
// orderByPrice: 0,
// orderBySales: 0,
// pageIndex: 1,
// pageSize: 10,
// priceOrderByField: 4,
searchKey: "", // 搜索词
SeriesIds: "",
LineIds: "",
// startCityId: 0,
// PageCount: 0,
// TotalCount: 0,
dayNumList: [], // 天数
webSiteCategoryIds: "", // 分类Id
placeIds: "", // 目的地城市Id
orderBy: 0 // 排序 0默认 1价格升序 2价格降序
};
this.qMsg = msg;
this.goSearchHandler();
},
//清除价格
clearPrice() {
this.qMsg.minPrice = "";
this.qMsg.maxPrice = "";
this.goSearchHandler();
},
//清除天数
clearDays() {
this.dayNum = [];
this.goSearchHandler();
},
//清除星期
clearWeek() {
this.WeekDay = [];
this.goSearchHandler();
},
//获取地区数据
getAera() {
this.apipost(
"ws_get_GetSearchArea", {},
res => {
if (res.data.resultCode == 1) {
if (res.data.data) {
this.areas = res.data.data.AreaList;
}
} }
},
err => {}
);
},
searchFocusHandler() {
if (this.qMsg.searchKey == "") {
setTimeout(() => {
this.showSplitPannel = true;
}, 200);
}
},
searchBlurHandler() {},
searchChangeHandler() {
if (this.qMsg.searchKey == "") {
this.showSplitPannel = true;
} else {
this.showSplitPannel = false;
}
},
clkAreaHandler(i) {
this.crtAreaIndex = i;
},
clickHandler(e) {
if (document.querySelector("#sb")) {
if (!document.querySelector("#sb").contains(e.target)) {
this.showSplitPannel = false;
} }
}, }
err => {} },
); chosenAreaHandler(name) {
this.qMsg.searchKey = name;
this.showSplitPannel = false;
},
//数据改变
changeData() {
this.qMsg.pageIndex = 1;
this.goSearchHandler();
},
//分页方法
getPage() {
this.goSearchHandler();
},
setSearchKey(obj) {
this.qMsg.searchKey = obj.Name;
},
goSearchHandler() {
this.$q.loading.show();
this.DataList = [];
let minTripDay = -1,
maxTripDay = -1,
minPrice = -1,
maxPrice = -1;
if (this.qMsg.minPrice != "") {
minPrice = parseFloat(this.qMsg.minPrice);
}
if (this.qMsg.maxPrice != "") {
maxPrice = parseFloat(this.qMsg.maxPrice);
if (minPrice > maxPrice) {
//this.Error('价格区间的最低价格不能低于最大价格')
return false;
}
}
var companyId = -1;
if (localStorage.groupinfo) {
var groupinfo = JSON.parse(localStorage.groupinfo);
companyId = groupinfo.siteList[0].companyId;
}
this.SearchResult =
this.qMsg.startDate +
"-" +
this.qMsg.endDate +
" " +
this.qMsg.searchKey;
let msg = {
pageIndex: this.qMsg.pageIndex,
pageSize: this.qMsg.pageSize,
searchKey: this.qMsg.searchKey,
lineId: this.qMsg.lineId,
lineTeamId: this.qMsg.lineTeamId,
minTripDay: minTripDay,
maxTripDay: maxTripDay,
minPrice: minPrice,
maxPrice: maxPrice,
startDate: this.qMsg.startDate,
endDate: this.qMsg.endDate,
orderByDate: this.sortNum == 4 ? 1 : this.sortNum == 5 ? 2 : 0,
orderByPrice: this.sortNum == 2 ? 1 : this.sortNum == 3 ? 2 : 0,
orderByDay: this.sortNum == 6 ? 1 : this.sortNum == 7 ? 2 : 0,
priceOrderByField: 4,
companyId: companyId,
orderBySales: 0,
startCityId: this.qMsg.startCityId,
weekDayList: this.WeekDay,
dayNumList: this.dayNum,
SeriesIds: this.qMsg.SeriesIds,
LineIds: this.qMsg.LineIds,
TeamType: this.qMsg.TeamType,
StartCityList: [],
};
if (localStorage.b2bUser) {
var b2bUser = JSON.parse(window.localStorage.getItem("b2bUser"));
if (b2bUser) {
this.msg.priceOrderByField = 2;
}
}
this.apipost(
"b2c_get_GetB2C2024TravelProductPage",
msg,
res => {
this.$q.loading.hide();
if (res.data.resultCode == 1) {
this.qMsg.PageCount = res.data.data.pageCount;
this.qMsg.TotalCount = res.data.data.count;
var tempArray = res.data.data.pageData.list;
if (tempArray && tempArray.length > 0) {
this.DataList = tempArray;
}
}
},
err => {}
);
}
} }
} };
};
</script> </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