Commit 823d72a2 authored by youjie's avatar youjie

no message

parent 7f9aa695
<template>
<div class="rounded-borders bg-white q-col-gutter-sm">
<div class="row q-col-gutter-sm items-center q-pa-md">
<div class="text-subtitle2 q-mr-md">
<span class="text-weight-bold text-primary q-mr-sm">{{
TotalCount
}}</span>
<span>{{$t('v103.scheduledTrip.experiencetrip')}}</span>
</div>
<q-chip
v-for="(x, i) in chosenAddress"
size="13px"
:key="i"
removable
outline
color="grey"
:label="x.Name"
@remove="removeChosen(x,i)"
/>
</div>
<div
class="q-pa-md row items-center"
style="border-top: 1px solid #eee"
>
<span class="f12">{{$t('v103.scheduledTrip.sort')}}</span>
<q-chip
square
:icon="x.icon"
class="cursor-pointer"
clickable
:text-color="sortNum != x.value ? 'dark' : 'white'"
:class="{
'bg-grey-3': sortNum != x.value,
'bg-primary': sortNum == x.value,
}"
v-for="(x, i) in sortArray"
:key="i"
@click="chosenSortHandler(x)"
>{{ x.label }}</q-chip
>
</div>
</div>
<div class="q-mt-lg">
<div
class="rounded-borders cursor-pointer overflow-hidden q-mb-md row bg-white"
@click="GotoDetails(x)"
v-for="(x, i) in DataList"
:key="i"
>
<q-img
:src="x.newCoverImg"
:ratio="1"
spinner-color="grey"
spinner-size="20px"
width="272px"
class="bg-grey-3"
/>
<div class="q-pa-md col column">
<div class="text-subtitle1 text-weight-bold text-grey-9">
{{ x.title }}
</div>
<div class="col">
<div class="row items-center q-my-sm">
<q-chip
style="background: #E9F6F5;"
size="sm"
class="f12 rounded-borders text-secondary text-teal-7"
:label="$t('v103.scheduledTrip.quickconfirmation')"
/>
<q-chip
style="background: #E9F6F5;"
size="sm"
class="f12 rounded-borders text-secondary text-teal-7"
:label="x.ltName"
/>
</div>
<div
class="text-subtitle2 text-grey-6 text-weight-regular ellipsis-2-lines"
style="line-height: 1.6"
>
{{ x.productRecommend }}
</div>
<div class="row items-center f12 text-grey-6 q-mt-md">
<q-icon
size="12px"
name="place"
class="q-mr-sm"
/>
<span class="q-mr-lg">{{ x.countryName }}</span>
<q-icon
size="12px"
name="event"
class="q-mr-sm"
></q-icon>
<span>{{ x.startDate }}</span>
</div>
</div>
<div class="row items-end">
<div class="col f12">
<span>{{$t('v103.scheduledTrip.residualvacancy')}}</span>
<span
class="text-primary text-weight-bold q-pr-sm q-mr-sm"
style="border-right: 1px solid #efefef"
>{{ x.surplus }}</span
>
<span>{{$t('v103.scheduledTrip.daysoftravel')}}</span>
<span class="text-secondary text-weight-bold text-teal-7"
>{{ x.dayNum }} {{$t('v103.scheduledTrip.day')}}</span
>
</div>
<div class="text-h6 product-price">CNY:{{ x.b2CPrice }}</div>
</div>
</div>
</div>
</div>
<div class="q-mb-md row justify-center">
<q-pagination
v-if="PageCount > 1"
v-model="msg.pageIndex"
:max="PageCount"
@update:model-value="goSearchHandler"
:direction-links="true"
color="white"
text-color="dark"
active-color="primary"
active-text-color="white"
active-design="unelevated"
unelevated
glossy
size="13px"
padding="xs xs"
>
</q-pagination>
</div>
</template>
<script lang="ts">
import { useI18n } from 'vue-i18n'
import svgIcon from '../global/svg-icon.vue'
import { computed, inject, provide, reactive, ref, toRefs, defineComponent, onMounted, watch } from 'vue'
import { useRouter } from 'vue-router'
import HotelService from '../../api/hotel'
import message from '../../utils/message'
import { ApiResult } from '../../@types/enumHelper'
import { CascaderOption,NCascader,NSelect } from 'naive-ui'
import { date } from 'quasar'
import { useQuasar } from 'quasar'
import { DirtionmaryHelper } from '../../config/dictionary'
import scheduledTripService from 'src/api/scheduledTrip'
export default defineComponent({
components: { svgIcon, NCascader, NSelect },
setup() {
const $router = useRouter()
const $q = useQuasar()
const qDateProxy = ref(null) as any
const qNameProxy = ref(null) as any
const { locale, t } = useI18n()
const data = reactive({
searchAdd: {
name: "",
value: 0,
},
areaList: [],
chosenAddress: [],
goodsType: [],
dateRange: null,
msg: null,
qMsg: null,
dataList: [],
sortNum: 1,
sortArray: [
{
label: t('v103.scheduledTrip.recommend'),
value: 1,
icon: "iconfont icongood",
},
{
label: t('v103.scheduledTrip.ascendingorder'),
value: 2,
icon: "iconfont iconmeiyuan",
},
{
label: t('v103.scheduledTrip.descendingorder'),
value: 3,
icon: "iconfont iconmeiyuan",
},
],
TotalCount: 0,
PageCount: 0,
})
const search = inject(DirtionmaryHelper.TICKET_QUERY_PARAM) as any
data.chosenAddress = JSON.parse(JSON.stringify(search.chosenAddress))
data.qMsg = JSON.parse(JSON.stringify(search.msg))
data.msg = JSON.parse(JSON.stringify(search.msg))
data.msg.teamType = [];
data.msg.priceRange = {
min: 1,
max: 100000,
};
data.msg.minPrice = 0;
data.msg.maxPrice = 100000;
data.dateRange = { from: data.msg.startDate, to: data.msg.endDate };
watch(data.msg, (n, o) => {
data.msg.pageIndex = 1
methods.goSearchHandler()
},{deep: true})
watch(search, (n, o) => {
data.chosenAddress = JSON.parse(JSON.stringify(n.chosenAddress))
data.qMsg = JSON.parse(JSON.stringify(n.msg))
data.msg = JSON.parse(JSON.stringify(n.msg))
// methods.goSearchHandler();
},{deep:true})
const methods = {
removeChosen(x,i) {
console.log(x,'00000')
search.deleteChosen = JSON.parse(JSON.stringify(x))
data.chosenAddress.splice(i,1)
search.chosenAddress = JSON.parse(JSON.stringify(data.chosenAddress))
},
chosenSortHandler(x) {
data.sortNum = x.value;
data.msg.orderByDate = data.sortNum == 4 ? 1 : data.sortNum == 5 ? 2 : 0;
data.msg.orderByPrice = data.sortNum == 2 ? 1 : data.sortNum == 3 ? 2 : 0;
data.msg.orderByDay = data.sortNum == 6 ? 1 : data.sortNum == 7 ? 2 : 0;
},
goSearchHandler() {
$q.loading.show();
data.DataList = [];
let minTripDay = -1,
maxTripDay = -1,
minPrice = -1,
maxPrice = -1;
if (data.qMsg.minPrice != "") {
minPrice = parseFloat(data.qMsg.minPrice);
}
if (data.qMsg.maxPrice != "") {
maxPrice = parseFloat(data.qMsg.maxPrice);
if (minPrice > maxPrice) {
message.errorMsg(t('v103.scheduledTrip.interval'));
return false;
}
}
var companyId = -1;
if (localStorage.groupinfo) {
var groupinfo = JSON.parse(localStorage.groupinfo);
companyId = groupinfo.siteList[0].companyId;
}
if (localStorage.b2bUser) {
var b2bUser = JSON.parse(window.localStorage.getItem("b2bUser"));
if (b2bUser) {
data.msg.priceOrderByField = 2;
}
}
let param = Object.assign(data.msg)
scheduledTripService.GetB2BTravelPageList(param).then(r => {
$q.loading.hide();
if (r.data.resultCode == ApiResult.SUCCESS) {
if (r.data.data) {
data.PageCount = r.data.data.pageCount;
data.TotalCount = r.data.data.count;
var tempArray = r.data.data.pageData;
if (tempArray && tempArray.length > 0) {
tempArray.forEach((item) => {
if (item.imgCover && item.imgCover != "") {
try {
var imgArray = JSON.parse(item.imgCover);
if (imgArray && imgArray.length > 0) {
item.newCoverImg = imgArray[0].Url;
} else {
item.newCoverImg = "";
}
} catch (e) {}
}
});
data.DataList = tempArray;
}
}
} else {
message.errorMsg(r.data.message)
}
}).catch(e => {
$q.loading.hide();
message.errorMsg(e.message)
})
},
GotoDetails(item) {
$router.push({
path:`/scheduledTrip/details/${encodeURIComponent(item.id)}/${item.tcid}`
})
},
}
const searchCnt = computed(() => {
let setCnt = 0
if ($q.platform.is.mobile) {
if (data.msg.min) setCnt++
}
return setCnt
})
methods.goSearchHandler();
return {
...toRefs(data),
search,
...methods,
}
}
})
</script>
<style>
</style>
\ No newline at end of file
<template>
<q-card flat class="rounded-borders q-py-md">
<div class="text-subtitle1 text-weight-bold q-mx-md">{{$t('v103.scheduledTrip.screeningtitle')}}</div>
<q-input
v-model="searchAdd.name"
type="text"
standout
:placeholder="$t('v103.scheduledTrip.searchinput')"
class="q-ma-md"
@update:model-value="changeAddrSearchHandler"
/>
<div v-for="(x, i) in areaList" :key="i">
<div class="addr">
<div
class="addr-list q-px-md q-py-sm cursor-pointer row items-center"
v-if="x.isShow"
>
<q-checkbox
indeterminate-value="half"
@update:model-value="changeCheckHandler(x)"
v-model="x.checked"
size="xs"
/>
<span class="col" @click="changeExplesdHandler(x)">{{
x.Name
}}</span>
<q-icon
@click="changeExplesdHandler(x)"
v-if="
searchAdd.name.length == 0 ||
(searchAdd.name.length > 0 && x.isShowChild)
"
:name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'"
size="20px"
/>
</div>
<div
class="q-mx-md"
v-if="
x.explsed ||
(x.SubList && x.isShowChild && searchAdd.name.length > 0)
"
>
<template v-for="(y, yi) in x.SubList">
<div
class="addr-list q-px-md q-py-sm row items-center"
:key="yi"
v-if="y.isShow"
>
<q-checkbox
@update:model-value="changeCheckHandler(y, x)"
v-model="y.checked"
size="xs"
/>
<span class="col">{{ y.Name }}</span>
</div>
</template>
</div>
</div>
</div>
</q-card>
<q-card flat class="rounded-borders q-py-md q-mt-lg">
<div class="text-subtitle1 text-weight-bold q-mx-md">{{$t('v103.scheduledTrip.allcommoditytype')}}</div>
<div class="add q-mt-md" v-for="(x, i) in goodsType" :key="i">
<div
class="addr-list q-px-md q-py-sm cursor-pointer row items-center"
>
<span class="col" @click="changeExplesdHandler(x)">{{
x.Name
}}</span>
<q-icon
@click="changeExplesdHandler(x)"
:name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'"
size="20px"
/>
</div>
<div class="q-mx-md" v-if="x.explsed">
<div
class="addr-list q-px-md q-py-sm row items-center"
v-for="(y, yi) in x.SubList"
:key="yi"
>
<q-checkbox
v-model="y.checked"
size="xs"
@update:model-value="changeGoodTypeHandler(y)"
/>
<span class="col">{{ y.Name }}</span>
</div>
</div>
</div>
</q-card>
<q-card flat class="rounded-borders q-mt-lg row no-padding">
<div
class="q-px-md q-py-sm"
style="border-right: 1px solid #eee; border-radius: 0 !important"
>
<q-icon name="event" size="24px" />
</div>
<div class="row items-center justify-center col">
<span class="text-grey-8">{{
dateRange.from
? `${dateRange.from} - ${dateRange.to}`
: $t('v103.scheduledTrip.screeningdate')
}}</span>
<q-popup-proxy :offset="[0, 0]" ref="qDateProxy">
<div>
<q-date
v-model="dateRange"
:options="optionsFn"
range
@range-end="dateRangeHandler"
mask="YYYY/MM/DD"
></q-date>
</div>
</q-popup-proxy>
</div>
</q-card>
<q-card flat class="rounded-borders q-pa-md q-mt-lg">
<div class="text-subtitle1 text-weight-bold">{{$t('v103.scheduledTrip.screeningprice')}}(CNY)</div>
<div class="q-mt-md text-grey-6 text-subtitle1">
{{ msg.priceRange.min }} - {{ msg.priceRange.max }}
</div>
<q-range
v-model="msg.priceRange"
:min="1"
:max="100000"
:step="1"
@input="testHandler"
color="primary"
class="q-mt-md"
/>
</q-card>
<q-card flat class="rounded-borders q-mt-lg overflow-hidden">
<q-expansion-item
expand-separator
:label="$t('v103.scheduledTrip.journeytime')"
class="text-subtitle1 text-weight-bold rounded-borders"
>
<div
class="addr-list q-px-md q-py-sm row items-center"
v-for="(y, yi) in dayArray"
:key="yi"
>
<q-checkbox
v-model="y.checked"
size="xs"
@update:model-value="changeTripDayHandler"
/>
<span class="col text-grey-8" style="font-weight: 400">{{
y.text
}}</span>
</div>
</q-expansion-item>
</q-card>
</template>
<script lang="ts">
import { useI18n } from 'vue-i18n'
import svgIcon from '../global/svg-icon.vue'
import { computed, inject, provide, reactive, ref, toRefs, defineComponent, onMounted, watch } from 'vue'
import HotelService from '../../api/hotel'
import message from '../../utils/message'
import { ApiResult } from '../../@types/enumHelper'
import { CascaderOption,NCascader,NSelect } from 'naive-ui'
import { date } from 'quasar'
import { HotelRate,HotelArea, useHotel } from '../../utils/hotelRate'
import { useQuasar } from 'quasar'
import useScrollModule from '../../module/scrollbar/scrollModule'
// import { dateDiffer } from '../../utils/tools'
import { DirtionmaryHelper } from '../../config/dictionary'
import scheduledTripService from 'src/api/scheduledTrip'
export default defineComponent({
components: { svgIcon, NCascader, NSelect },
setup() {
const $q = useQuasar()
const qDateProxy = ref(null) as any
const qNameProxy = ref(null) as any
const { locale, t } = useI18n()
const data = reactive({
searchAdd: {
name: "",
value: 0,
},
areaList: [],
chosenAddress: [],
goodsType: [],
dateRange: null,
msg: null,
dayArray: [
{
id: 1,
min: 1,
max: 1,
text: "1"+t('v103.scheduledTrip.day'),
},
{
id: 2,
min: 2,
max: 2,
text: "2"+t('v103.scheduledTrip.day'),
},
{
id: 3,
min: 3,
max: 3,
text: "3"+t('v103.scheduledTrip.day'),
},
{
id: 4,
min: 4,
max: 4,
text: "4"+t('v103.scheduledTrip.day'),
},
{
id: 5,
min: 5,
max: 5,
text: "5"+t('v103.scheduledTrip.day'),
},
{
id: 6,
min: 6,
max: 6,
text: "6"+t('v103.scheduledTrip.day'),
},
{
id: 7,
min: 7,
max: 8,
text: "7-8"+t('v103.scheduledTrip.day'),
},
{
id: 8,
min: 9,
max: 10,
text: "9-10"+t('v103.scheduledTrip.day'),
},
{
id: 9,
min: 10,
max: 1000,
text: "10"+t('v103.scheduledTrip.above'),
},
],
sortNum: 1,
})
const search = inject(DirtionmaryHelper.TICKET_QUERY_PARAM)
data.chosenAddress = JSON.parse(JSON.stringify(search.chosenAddress))
data.msg = JSON.parse(JSON.stringify(search.msg))
data.dayArray.forEach((x) => {
x.checked = false;
});
data.dateRange = { from: data.msg.startDate, to: data.msg.endDate };
watch(data.msg, (n, o) => {
search.msg = JSON.parse(JSON.stringify(n))
},{deep: true})
const methods = {
initAreaList() {
let jObj = JSON.parse(localStorage.getItem("baseifo"));
jObj.AreaList.forEach((x) => {
x.SubList.forEach((y) => {
y.checked = false;
y.explsed = false;
y.isShow = true;
if (y.SubList) {
y.SubList.forEach((z) => {
z.checked = false;
z.explsed = false;
z.isShow = true;
});
}
});
data.areaList.push(...x.SubList);
});
},
changeExplesdHandler(x) {
x.explsed = !x.explsed;
if (x.SubList) {
}
},
changeGoodTypeHandler(x) {
if (x.checked && data.msg.teamType.indexOf(x.Id) == -1) {
data.msg.teamType.push(x.Id);
} else if (!x.checked && data.msg.teamType.indexOf(x.Id) != -1) {
let i = data.msg.teamType.findIndex((item) => item == x.Id);
data.msg.teamType.splice(i, 1);
}
},
changeCheckHandler(x, p = null) {
if(x.checked=='half'){
x.checked = true
}else{
x.checked = !x.checked
}
if (p) {
let t = p.SubList.filter((x) => x.checked);
p.checked = t.length == p.SubList.length ? true : t.length == 0 ? false : "half";
methods.changeChosenHandler(x);
} else {
x.SubList.forEach((item) => {
item.checked = x.checked;
methods.changeChosenHandler(item);
});
}
},
changeChosenHandler(x) {
let i = search.chosenAddress.findIndex((item) => item.Id == x.Id) ?? -1;
if (!x.checked) {
if (i > -1) {
search.chosenAddress.splice(i, 1);
}
} else {
if (i == -1) {
search.chosenAddress.push(x);
}
}
},
changeTripDayHandler() {
data.msg.minTripDay = "0";
data.msg.maxTripDay = "0";
data.dayArray.forEach((x) => {
if (x.checked) {
data.msg.minPrice =
data.msg.minPrice > x.min ? x.min : data.msg.minPrice;
data.msg.maxPrice =
data.msg.maxPrice < x.max ? x.max : data.msg.maxPrice;
}
});
data.msg.minTripDay =
data.msg.minTripDay == "0" ? "" : data.msg.minTripDay;
data.msg.maxTripDay =
data.msg.maxTripDay == "0" ? "" : data.msg.maxTripDay;
},
optionsFn(cd) {
return (
cd >=
date.formatDate(date.addToDate(new Date(), { days: 1 }), "YYYY/MM/DD")
);
},
testHandler(e) {
data.msg.minPrice = e.min;
data.msg.maxPrice = e.max;
},
dateRangeHandler(e) {
data.msg.startDate = `${e.from.year}/${e.from.month}/${e.from.day}`;
data.msg.endDate = `${e.to.year}/${e.to.month}/${e.to.day} `;
if (qDateProxy.value) qDateProxy.value.hide()
},
initGoods() {
data.goodsType.push({
Id: 1,
Name: t('v103.scheduledTrip.sightseeingitinerary'),
explsed: false,
SubList: [
{
Id: 2,
Name: t('v103.scheduledTrip.daytrip'),
checked: false,
},
{
Id: 3,
Name: t('v103.scheduledTrip.multiday'),
checked: false,
},
],
});
},
changeAddrSearchHandler(v) {
data.areaList.forEach((x) => {
x.isShow = x.Name.indexOf(v) != -1;
x.isShowChild = false;
x.SubList.forEach((y) => {
y.isShow = y.Name.indexOf(v) != -1;
if (y.isShow) {
x.isShow = true;
x.isShowChild = true;
}
});
});
},
}
watch(search, (n, o) => {
console.log(search.deleteChosen,'===-======')
methods.changeGoodTypeHandler(n.deleteChosen)
},{deep: true})
const searchCnt = computed(() => {
let setCnt = 0
if ($q.platform.is.mobile) {
if (data.msg.min) setCnt++
}
return setCnt
})
methods.initAreaList();
methods.initGoods();
return {
...toRefs(data),
search,
...methods,
qDateProxy,
qNameProxy,
}
}
})
</script>
<style>
</style>
\ No newline at end of file
<style>
.SearchMain {
min-height: 800px;
}
.SearchTop {
width: 100%;
/* margin: 32px 0 30px 0;
background-color: rgba(255, 255, 255, .95);
border-top: 1px solid #eee;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, .03); */
min-height: 600px;
}
.SearchContent {
position: relative;
display: flex;
width: 100%;
margin: 6px auto 0;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, .03);
}
.SearchMain .showbox {
position: absolute;
box-sizing: border-box;
width: 100%;
height: 345px;
background: #fff;
left: 0;
top: 60px;
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,.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;
}
}
.pd-list .pd-box {
margin-right: 20px;
margin-bottom: 30px;
flex-basis: calc(25% - 15px);
border-radius: 3px;
background-clip: padding-box;
box-shadow: 0 2px 3px rgba(0, 0, 0, .09);
transition: -webkit--webkit-transform .2s ease, box-shadow .2s ease;
background-color: #fff;
}
.pd-box .pd-img {
position: relative;
width: 100%;
padding-bottom: 66.237%;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
background-position: center;
}
.pd-box .pd-img .pd-price {
position: absolute;
right: 0;
bottom: 0;
z-index: 2;
width: 100%;
border-bottom: 4px solid #00afff;
text-align: right;
}
.pd-box .pd-img .pd-price .price {
display: inline-block;
padding: 4px 12px 0;
color: #fff;
font-size: 22px;
font-weight: 700;
background-color: #00afff;
-webkit-border-radius: 5px 0 0;
-webkit-background-clip: padding-box;
-moz-border-radius: 5px 0 0;
-moz-background-clip: padding;
border-radius: 5px 0 0;
background-clip: padding-box;
}
.pd-box .pd-img .pd-price .price small {
padding: 0 4px;
font-size: 14px;
}
.pd-box .pd-content {
padding: 15px 15px 20px;
}
.pd-box .pd-title {
font-size: 15px;
line-height: 1.5;
font-weight: 400;
color: #333;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
.pd-box .pd-departure {
padding-top: 10px;
font-size: 14px;
color: #999;
}
.pd-box .pd-departure .more {
float: right;
font-size: 14px;
}
.Search_center {
width: 100%;
max-width: 1200px;
margin: 20px auto;
padding: 0 20px;
}
.Search_center .pd-list {
display: flex;
flex-flow: wrap;
width: 100%;
margin: 0;
padding: 0;
}
.pd-list li:nth-child(4n) {
margin-right: 0;
}
.pd-list li {
list-style-type: none;
}
.SearchMain .search-content {
display: flex;
align-items: flex-start;
margin-top: 20px;
}
.wl-section-block {
width: 100%;
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
.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, .16), 0 2px 7px 0 rgba(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, .09);
transition: transform .2s ease, box-shadow .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: .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 {
width: 100%;
}
}
@media only screen and (max-width: 1200px) {
.search-content {
max-width: 768px;
}
}
@media only screen and (max-width: 768px) {
.group-statis-block .group-statis-detail {
width: calc(100% - 45px);
}
.group-box .group-cover {
display: block;
width: 100%;
padding-bottom: 60%;
}
.group-box .group-main {
display: block;
width: 100%;
}
.group-box .group-main .group-info {
width: 100%;
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;
padding: 0 20px;
height: 60px;
line-height: 60px;
font-size: 18px;
color: #333;
font-weight: 700;
position: relative;
} */
.text-h6 i {
position: absolute;
right:20px;
cursor: pointer;
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;
}
.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;
}
.desktop-page{
max-width:1200px;
margin:0 auto;
}
</style>
<template>
<div class="fix-height-subpage column no-wrap q-pa-md">
<div class="SearchMain" :class="{'desktop-page':$q.platform.is.desktop}">
<div class="SearchTop">
<kkday></kkday>
<div class="row items-start q-mt-lg">
<div class="col-3 q-mr-lg">
<search></search>
</div>
<div class="col q-mt-sm">
<rightList></rightList>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import { date,useQuasar } from 'quasar'
import { inject, provide, reactive, toRefs, defineComponent,onMounted } from 'vue';
import useMetaModule from '../../module/meta/metaModule'
import { date,useQuasar } from "quasar";
import { provide,inject, reactive, toRefs, defineComponent,ref,watch, getCurrentInstance } from 'vue';
import { useI18n } from 'vue-i18n'
import { DirtionmaryHelper } from '../../config/dictionary';
import kkday from 'src/components/searchdata/kkday.vue'
import scheduledTripService from 'src/api/scheduledTrip'
import { getUrlKey } from 'src/utils/tools'
import { ApiResult } from 'src/@types/enumHelper'
import message from 'src/utils/message'
import { DirtionmaryHelper } from 'src/config/dictionary'
import search from 'src/components/searchdata/search.vue'
import rightList from 'src/components/searchdata/rightList.vue'
export default defineComponent({
components: {
kkday
},
components: { search,rightList },
props: [],
setup(props) {
let { setTitle } = useMetaModule()
const { t } = useI18n()
const $q = useQuasar()
const pageTitle = inject(DirtionmaryHelper.PAGE_TITLE_KEY) as any
pageTitle.value = t('v103.scheduledTrip.pageTitle')
setTitle(pageTitle.value)
let {ctx:that, proxy} = getCurrentInstance()
const data= reactive({
})
const search = reactive({
chosenAddress: [] as Array<any>,
deleteChosen: null as any,
msg:{
cityId: 0,
companyId: 0,
......@@ -728,8 +39,8 @@ export default defineComponent({
endDate: "", //结束日期
lineId: 0, //线路编号
lineTeamId: 0, //系列编号
minPrice: "", //最低价格
maxPrice: "", //最高价格
minPrice: "0", //最低价格
maxPrice: "100000", //最高价格
minTripDay: "", //最低行程条数
maxTripDay: "", //最高行程天数
orderByDate: 0,
......@@ -742,25 +53,44 @@ export default defineComponent({
startCityId: 0,
PageCount: 0,
TotalCount: 0,
teamType: [],
priceRange:{
min: 1,
max: 100000,
}
}
})
provide(DirtionmaryHelper.TICKET_QUERY_PARAM, search)
const menu=inject(DirtionmaryHelper.MENU_KEYS) as any
menu.value=17
const methods = {
}
onMounted(()=>{
})
}
const menu=inject(DirtionmaryHelper.MENU_KEYS) as any
menu.value=17
return {
...toRefs(data),
...methods
...methods,
}
}
})
</script>
<style>
.blank-block{
margin: 100px auto;
width: 300px;
text-align: center;
}
.blank-block i{
font-size: 80px;
color: #ddd;
}
.blank-block p{
color: #999;
font-size: 15px;
letter-spacing: 1px;
}
.addr-list:hover {
background: #f1416c1a;
}
</style>
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