Commit a54f50cf authored by 黄奎's avatar 黄奎

页面修改

parent af9420dc
<template> <template>
<div v-if="$q.platform.is.mobile" class="rounded-borders bg-white row items-center q-ma-sm q-py-md q-mb-md q-px-md"> <div
<q-input v-model="searchClone.searchKey" class="SearchMain-height" dense reverse-fill-mask ftype="text" standout :label="$t('v103.scheduledTrip.searchinput')" @update:model-value="changeAddrSearchHandler"/> v-if="$q.platform.is.mobile"
<div class="col"></div> class="rounded-borders bg-white row items-center q-ma-sm q-py-md q-mb-md q-px-md"
<q-btn unelevated class="bg-grey-3 hover q-mr-md" :title="$t('morequery')"> >
<q-badge rounded class="din bg-red-2 text-red-14 text-weight-bold" floating :label="searchCnt" <q-input
v-if="searchCnt > 0" /> v-model="searchClone.searchKey"
<svg-icon color="dark" icon="Text/Filter.svg" :tips="$t('morequery')" :size="20"></svg-icon> class="SearchMain-height"
<q-tooltip>{{ $t('morequery') }}</q-tooltip> dense
<q-popup-proxy class="no-shadow" style="box-shadow: 0 0 50px #ddd !important" :offset="[0, 20]" reverse-fill-mask
:model-value="canHide"> ftype="text"
<q-card class="q-pa-md rounded-borders" style="width: 300px"> standout
<div class="q-mb-md text-subtitle2">{{ $t('morequery') }}</div> :label="$t('v103.scheduledTrip.searchinput')"
<div class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3"> @update:model-value="changeAddrSearchHandler"
<div class="q-px-sm q-py-xs row justify-between"> />
<span>{{$t('v103.scheduledTrip.companylocation')}}</span> <div class="col"></div>
<template v-for="(x, i) in chosenAddress"> <q-btn unelevated class="bg-grey-3 hover q-mr-md" :title="$t('morequery')">
<span class="text-primary" v-if="i==0">{{x.Name}}</span> <q-badge
</template> rounded
class="din bg-red-2 text-red-14 text-weight-bold"
</div> floating
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy0"> :label="searchCnt"
<div class="bg-white q-pb-lg" style="width: 300px;"> v-if="searchCnt > 0"
<div class="q-px-lg q-py-md fz18">{{$t('v103.scheduledTrip.companylocation')}}</div> />
<div v-for="(x, i) in sites" :key="i"> <svg-icon
<div class="addr"> color="dark"
<div icon="Text/Filter.svg"
class="q-mx-md" :tips="$t('morequery')"
> :size="20"
<template v-for="(y, yi) in x.SubList"> ></svg-icon>
<q-radio <q-tooltip>{{ $t("morequery") }}</q-tooltip>
class="addr-list q-px-md q-py-sm row items-center" <q-popup-proxy
:key="yi" class="no-shadow"
v-if="y.isShow" v-model="companyId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.companyId" :label="y.siteName" size="sm" @update:model-value="changeCheckHandler(y, x,0)"/> style="box-shadow: 0 0 50px #ddd !important"
</template> :offset="[0, 20]"
</div> :model-value="canHide"
</div> >
</div> <q-card class="q-pa-md rounded-borders" style="width: 300px">
</div> <div class="q-mb-md text-subtitle2">{{ $t("morequery") }}</div>
</q-popup-proxy> <div class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3">
</div> <div class="q-px-sm q-py-xs row justify-between">
<div class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3"> <span>{{ $t("v103.scheduledTrip.companylocation") }}</span>
<div class="q-px-sm q-py-xs row justify-between"> <template v-for="(x, i) in chosenAddress">
<span>{{$t('v103.scheduledTrip.line')}}</span> <span class="text-primary" v-if="i == 0">{{ x.Name }}</span>
<template v-for="(x, i) in chosenAddress"> </template>
<span class="text-primary" v-if="x.type==1"> </div>
{{x.Name}} <q-popup-proxy :offset="[0, 10]" ref="qDateProxy0">
<q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,1)"/> <div class="bg-white q-pb-lg" style="width: 300px">
</span> <div class="q-px-lg q-py-md fz18">
</template> {{ $t("v103.scheduledTrip.companylocation") }}
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy1"> <div v-for="(x, i) in sites" :key="i">
<div class="bg-white q-pb-lg" style="width: 300px;"> <div class="addr">
<div class="q-px-lg q-py-md fz18">{{$t('v103.scheduledTrip.line')}}</div> <div class="q-mx-md">
<div class="add" v-for="(x, i) in lines" :key="i"> <template v-for="(y, yi) in x.SubList">
<div class="q-mx-md"> <q-radio
<template v-for="(y, yi) in x.SubList">
<q-radio
class="addr-list q-px-md q-py-sm row items-center" class="addr-list q-px-md q-py-sm row items-center"
:key="yi" :key="yi"
v-if="y.isShow" v-model="search.msg.lineId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.name" size="sm" @update:model-value="changeCheckHandler(y, x,1)"/> v-if="y.isShow"
v-model="companyId"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
:val="y.companyId"
:label="y.siteName"
size="sm"
@update:model-value="changeCheckHandler(y, x, 0)"
/>
</template> </template>
</div> </div>
</div>
</div> </div>
</q-popup-proxy> </div>
</div> </div>
<div v-if="search.msg.lineId&&xilies.length>0" class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3"> </q-popup-proxy>
<div class="q-px-sm q-py-xs row justify-between"> </div>
<span class="text-grey-8 col-12 row justify-between"> <div class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3">
<span>{{$t('v103.scheduledTrip.commlineteam')}}</span> <div class="q-px-sm q-py-xs row justify-between">
<span v-if="!searchClone.lineTeamId">{{$t('v103.scheduledTrip.closelineteam')}}</span> <span>{{ $t("v103.scheduledTrip.line") }}</span>
<template v-for="(x, i) in chosenAddress"> <template v-for="(x, i) in chosenAddress">
<span class="text-primary" v-if="x.type==2"> <span class="text-primary" v-if="x.type == 1">
{{x.Name}} {{ x.Name }}
<q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,2)"/> <q-icon
</span> class="cursor-pointer text-grey-6"
name="close"
@click.stop="removeChosen(x, i, 1)"
/>
</span>
</template>
</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy1">
<div class="bg-white q-pb-lg" style="width: 300px">
<div class="q-px-lg q-py-md fz18">
{{ $t("v103.scheduledTrip.line") }}
</div>
<div class="add" v-for="(x, i) in lines" :key="i">
<div class="q-mx-md">
<template v-for="(y, yi) in x.SubList">
<q-radio
class="addr-list q-px-md q-py-sm row items-center"
:key="yi"
v-if="y.isShow"
v-model="search.msg.lineId"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
:val="y.id"
:label="y.name"
size="sm"
@update:model-value="changeCheckHandler(y, x, 1)"
/>
</template> </template>
</div>
</div>
</div>
</q-popup-proxy>
</div>
<div
v-if="search.msg.lineId && xilies.length > 0"
class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3"
>
<div class="q-px-sm q-py-xs row justify-between">
<span class="text-grey-8 col-12 row justify-between">
<span>{{ $t("v103.scheduledTrip.commlineteam") }}</span>
<span v-if="!searchClone.lineTeamId">{{
$t("v103.scheduledTrip.closelineteam")
}}</span>
<template v-for="(x, i) in chosenAddress">
<span class="text-primary" v-if="x.type == 2">
{{ x.Name }}
<q-icon
class="cursor-pointer text-grey-6"
name="close"
@click.stop="removeChosen(x, i, 2)"
/>
</span> </span>
</template>
</span>
</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy2">
<div class="bg-white q-pb-lg" style="width: 300px">
<div class="q-px-lg q-py-md fz18">
{{ $t("v103.scheduledTrip.lineteam") }}
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy2"> <div class="add" v-for="(x, i) in xilies" :key="i">
<div class="bg-white q-pb-lg" style="width: 300px;"> <div class="q-mx-md">
<div class="q-px-lg q-py-md fz18">{{$t('v103.scheduledTrip.lineteam')}}</div> <template v-for="(y, yi) in x.SubList">
<div class="add" v-for="(x, i) in xilies" :key="i"> <q-radio
<div class="q-mx-md"> class="addr-list q-px-md q-py-sm row items-center"
<template v-for="(y, yi) in x.SubList"> :key="yi"
<q-radio v-if="y.isShow"
class="addr-list q-px-md q-py-sm row items-center" v-model="searchClone.lineTeamId"
:key="yi" checked-icon="task_alt"
v-if="y.isShow" v-model="searchClone.lineTeamId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.name" size="sm" @update:model-value="changeCheckHandler(y, x,2)"/> unchecked-icon="panorama_fish_eye"
</template> :val="y.id"
</div> :label="y.name"
</div> size="sm"
@update:model-value="changeCheckHandler(y, x, 2)"
/>
</template>
</div> </div>
</q-popup-proxy> </div>
</div> </div>
<div class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3"> </q-popup-proxy>
<div class="q-px-sm q-py-xs row justify-between"> </div>
<span class="text-grey-8 col-12 row justify-between"> <div class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3">
<span>{{$t('v103.scheduledTrip.departurecity')}}</span> <div class="q-px-sm q-py-xs row justify-between">
<span v-if="!searchClone.startCityId">{{$t('v103.scheduledTrip.closedeparturecity')}}</span> <span class="text-grey-8 col-12 row justify-between">
<template v-for="(x, i) in chosenAddress"> <span>{{ $t("v103.scheduledTrip.departurecity") }}</span>
<span class="text-primary" v-if="x.type==3"> <span v-if="!searchClone.startCityId">{{
{{x.Name}} $t("v103.scheduledTrip.closedeparturecity")
<q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,3)"/> }}</span>
</span> <template v-for="(x, i) in chosenAddress">
</template> <span class="text-primary" v-if="x.type == 3">
{{ x.Name }}
<q-icon
class="cursor-pointer text-grey-6"
name="close"
@click.stop="removeChosen(x, i, 3)"
/>
</span> </span>
</template>
</span>
</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy3">
<div class="bg-white q-pb-lg" style="width: 300px">
<div class="q-px-lg q-py-md fz18">
{{ $t("v103.scheduledTrip.departurecity") }}
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy3"> <div class="add" v-for="(x, i) in startCitys" :key="i">
<div class="bg-white q-pb-lg" style="width: 300px;"> <div class="q-mx-md">
<div class="q-px-lg q-py-md fz18">{{$t('v103.scheduledTrip.departurecity')}}</div> <template v-for="(y, yi) in x.SubList">
<div class="add" v-for="(x, i) in startCitys" :key="i"> <q-radio
<div class="q-mx-md"> class="addr-list q-px-md q-py-sm row items-center"
<template v-for="(y, yi) in x.SubList"> :key="yi"
<q-radio v-if="y.isShow"
class="addr-list q-px-md q-py-sm row items-center" v-model="searchClone.startCityId"
:key="yi" checked-icon="task_alt"
v-if="y.isShow" v-model="searchClone.startCityId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.startCityName" size="sm" @update:model-value="changeCheckHandler(y, x,3)"/> unchecked-icon="panorama_fish_eye"
</template> :val="y.id"
</div> :label="y.startCityName"
</div> size="sm"
@update:model-value="changeCheckHandler(y, x, 3)"
/>
</template>
</div> </div>
</q-popup-proxy> </div>
</div> </div>
<div> </q-popup-proxy>
<div v-if="(searchClone.startDate&&!searchClone.endDate)||(!searchClone.startDate&&!searchClone.endDate)" class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3"> </div>
<div class="q-px-sm q-py-xs row justify-between"> <div>
<span class="text-grey-8 col-12 row justify-between"> <div
<span>{{$t('v103.scheduledTrip.startdate')}}</span> v-if="
<span v-if="!datesId">{{$t('v103.scheduledTrip.closestartdate')}}</span> (searchClone.startDate && !searchClone.endDate) ||
<template v-for="(x, i) in chosenAddress"> (!searchClone.startDate && !searchClone.endDate)
<span class="text-primary" v-if="x.type==5"> "
{{x.Name}} class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3"
<q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,5)"/> >
</span> <div class="q-px-sm q-py-xs row justify-between">
</template> <span class="text-grey-8 col-12 row justify-between">
<span>{{ $t("v103.scheduledTrip.startdate") }}</span>
<span v-if="!datesId">{{
$t("v103.scheduledTrip.closestartdate")
}}</span>
<template v-for="(x, i) in chosenAddress">
<span class="text-primary" v-if="x.type == 5">
{{ x.Name }}
<q-icon
class="cursor-pointer text-grey-6"
name="close"
@click.stop="removeChosen(x, i, 5)"
/>
</span> </span>
</template>
</div> </span>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy5"> </div>
<div class="bg-white q-pb-lg" style="width: 300px;"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy5">
<div class="q-px-lg q-py-md fz18">{{$t('v103.scheduledTrip.startdate')}}</div> <div class="bg-white q-pb-lg" style="width: 300px">
<div class="add" v-for="(x, i) in dates" :key="i"> <div class="q-px-lg q-py-md fz18">
<div class="q-mx-md"> {{ $t("v103.scheduledTrip.startdate") }}
<template v-for="(y, yi) in x.SubList">
<q-radio class="addr-list q-px-md q-py-sm row items-center"
:key="yi"
v-if="y.isShow" v-model="datesId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.Name" size="sm"
@update:model-value="changeCheckHandler(y, x,5)"/>
</template>
</div>
</div>
</div>
</q-popup-proxy>
</div>
<!-- v-if="(!search.msg.startDate&&!search.msg.endDate)||(search.msg.startDate&&search.msg.endDate)" -->
<div class="q-my-md row no-padding bg-grey-3" v-if="(!searchClone.startDate&&!searchClone.endDate)||(searchClone.startDate&&searchClone.endDate)">
<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>
<div class="row items-center justify-center col"> <div class="add" v-for="(x, i) in dates" :key="i">
<span class="text-grey-8">{{ <div class="q-mx-md">
dateRange.from <template v-for="(y, yi) in x.SubList">
? `${dateRange.from} - ${dateRange.to}` <q-radio
: $t('v103.scheduledTrip.screeningdate') class="addr-list q-px-md q-py-sm row items-center"
}} :key="yi"
<template v-for="(x, i) in chosenAddress"> v-if="y.isShow"
<template v-if="x.type==6"> v-model="datesId"
<q-icon class="cursor-pointer text-grey-6 q-pl-lg" name="close" @click.stop="removeChosen(x,i,6)"/> checked-icon="task_alt"
</template> unchecked-icon="panorama_fish_eye"
:val="y.id"
:label="y.Name"
size="sm"
@update:model-value="changeCheckHandler(y, x, 5)"
/>
</template> </template>
</span> </div>
<!-- <q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,6)"/> -->
<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> </div>
</div> </div>
</q-popup-proxy>
</div>
<!-- v-if="(!search.msg.startDate&&!search.msg.endDate)||(search.msg.startDate&&search.msg.endDate)" -->
<div
class="q-my-md row no-padding bg-grey-3"
v-if="
(!searchClone.startDate && !searchClone.endDate) ||
(searchClone.startDate && searchClone.endDate)
"
>
<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>
<div class="row items-center justify-center col">
<!-- <div class="q-my-md"> <span class="text-grey-8"
>{{
dateRange.from
? `${dateRange.from} - ${dateRange.to}`
: $t("v103.scheduledTrip.screeningdate")
}}
<template v-for="(x, i) in chosenAddress">
<template v-if="x.type == 6">
<q-icon
class="cursor-pointer text-grey-6 q-pl-lg"
name="close"
@click.stop="removeChosen(x, i, 6)"
/>
</template>
</template>
</span>
<!-- <q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,6)"/> -->
<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>
</div>
</div>
<!-- <div class="q-my-md">
<div class="text-subtitle1 text-weight-bold">{{$t('v103.scheduledTrip.screeningprice')}}({{domain==`id.oytour`?'IDR':'CNY'}})</div> <div class="text-subtitle1 text-weight-bold">{{$t('v103.scheduledTrip.screeningprice')}}({{domain==`id.oytour`?'IDR':'CNY'}})</div>
<div class="q-mt-md text-grey-6 text-subtitle1"> <div class="q-mt-md text-grey-6 text-subtitle1">
{{ searchClone.priceRange.min }} - {{ searchClone.priceRange.max }} {{ searchClone.priceRange.min }} - {{ searchClone.priceRange.max }}
...@@ -208,38 +320,53 @@ ...@@ -208,38 +320,53 @@
class="q-mt-md" class="q-mt-md"
/> />
</div> --> </div> -->
<div class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3"> <div class="rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3">
<div class="q-px-sm q-py-xs row justify-between"> <div class="q-px-sm q-py-xs row justify-between">
<span>{{$t('v103.scheduledTrip.journeytime')}}</span> <span>{{ $t("v103.scheduledTrip.journeytime") }}</span>
<template v-for="(x, i) in chosenAddress"> <template v-for="(x, i) in chosenAddress">
<span class="text-primary" v-if="x.type==4"> <span class="text-primary" v-if="x.type == 4">
{{x.Name}} {{ x.Name }}
<q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,4)"/> <q-icon
</span> class="cursor-pointer text-grey-6"
</template> name="close"
@click.stop="removeChosen(x, i, 4)"
/>
</span>
</template>
</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy4">
<div class="bg-white q-pb-lg" style="width: 300px">
<div class="q-px-lg q-py-md fz18">
{{ $t("v103.scheduledTrip.journeytime") }}
</div>
<div class="addr-list q-px-md q-py-sm row items-center">
<q-radio
class="addr-list q-px-md q-py-sm row items-center"
v-for="(y, yi) in dayArray"
:key="yi"
v-model="DayId"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
:val="y.id"
:label="y.text"
size="sm"
@update:model-value="changeCheckHandler(y, dayArray, 4)"
/>
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy4">
<div class="bg-white q-pb-lg" style="width: 300px;">
<div class="q-px-lg q-py-md fz18">{{$t('v103.scheduledTrip.journeytime')}}</div>
<div
class="addr-list q-px-md q-py-sm row items-center">
<q-radio class="addr-list q-px-md q-py-sm row items-center"
v-for="(y, yi) in dayArray"
:key="yi" v-model="DayId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.text" size="sm" @update:model-value="changeCheckHandler(y,dayArray,4)"/>
</div>
</div>
</q-popup-proxy>
</div> </div>
</q-card> </q-popup-proxy>
</q-popup-proxy> </div>
</q-btn> </q-card>
<q-btn color="primary" unelevated :label="$t('query')" @click="queryList"/> </q-popup-proxy>
</q-btn>
<q-btn color="primary" unelevated :label="$t('query')" @click="queryList" />
</div> </div>
<template v-else> <template v-else>
<q-card flat class="rounded-borders q-py-md"> <q-card flat class="rounded-borders q-py-md">
<div class="row justify-between q-mx-md"> <div class="row justify-between q-mx-md">
<span class="text-subtitle1 text-weight-bold ">{{$t('v103.scheduledTrip.screeningtitle')}}</span> <span class="text-subtitle1 text-weight-bold">{{
$t("v103.scheduledTrip.screeningtitle")
}}</span>
</div> </div>
<!-- @update:model-value="changeAddrSearchHandler" --> <!-- @update:model-value="changeAddrSearchHandler" -->
<q-input <q-input
...@@ -256,16 +383,19 @@ ...@@ -256,16 +383,19 @@
class="addr-list q-px-md q-py-sm cursor-pointer row items-center" class="addr-list q-px-md q-py-sm cursor-pointer row items-center"
v-if="x.isShow" v-if="x.isShow"
> >
<span class="col" @click="changeExplesdHandler(x)">{{$t('v103.scheduledTrip.companylocation')}}</span> <span class="col" @click="changeExplesdHandler(x)">{{
$t("v103.scheduledTrip.companylocation")
}}</span>
<div> <div>
<span v-if="chosenAddress.length>0" class="q-mr-md text-primary">{{chosenAddress[0].Name}}</span> <span v-if="chosenAddress.length > 0" class="q-mr-md text-primary">{{
chosenAddress[0].Name
}}</span>
<q-icon <q-icon
@click="changeExplesdHandler(x)" @click="changeExplesdHandler(x)"
:name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'" :name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'"
size="20px" size="20px"
/> />
</div> </div>
</div> </div>
<div <div
class="q-mx-md" class="q-mx-md"
...@@ -275,23 +405,33 @@ ...@@ -275,23 +405,33 @@
" "
> >
<template v-for="(y, yi) in x.SubList"> <template v-for="(y, yi) in x.SubList">
<q-radio <q-radio
class="addr-list q-px-md q-py-sm row items-center" class="addr-list q-px-md q-py-sm row items-center"
:key="yi" :key="yi"
v-if="y.isShow" v-model="companyId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.companyId" :label="y.siteName" size="sm" @update:model-value="changeCheckHandler(y, x,0)"/> v-if="y.isShow"
<!-- <span class="col">{{ y.siteName }}</span> --> v-model="companyId"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
:val="y.companyId"
:label="y.siteName"
size="sm"
@update:model-value="changeCheckHandler(y, x, 0)"
/>
<!-- <span class="col">{{ y.siteName }}</span> -->
</template> </template>
</div> </div>
</div> </div>
</div> </div>
<template v-if="xilies.length==0||!searchClone.lineId"> <template v-if="xilies.length == 0 || !searchClone.lineId">
<div v-for="(x, i) in lines" :key="i"> <div v-for="(x, i) in lines" :key="i">
<div class="addr"> <div class="addr">
<div <div
class="addr-list q-px-md q-py-sm cursor-pointer row items-center" class="addr-list q-px-md q-py-sm cursor-pointer row items-center"
v-if="x.isShow" v-if="x.isShow"
> >
<span class="col" @click="changeExplesdHandler(x)">{{$t('v103.scheduledTrip.line')}}</span> <span class="col" @click="changeExplesdHandler(x)">{{
$t("v103.scheduledTrip.line")
}}</span>
<q-icon <q-icon
@click="changeExplesdHandler(x)" @click="changeExplesdHandler(x)"
:name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'" :name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'"
...@@ -306,24 +446,33 @@ ...@@ -306,24 +446,33 @@
" "
> >
<template v-for="(y, yi) in x.SubList"> <template v-for="(y, yi) in x.SubList">
<q-radio <q-radio
class="addr-list q-px-md q-py-sm row items-center" class="addr-list q-px-md q-py-sm row items-center"
:key="yi" :key="yi"
v-if="y.isShow" v-model="search.msg.lineId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.name" size="sm" @update:model-value="changeCheckHandler(y, x,1)"/> v-if="y.isShow"
v-model="search.msg.lineId"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
:val="y.id"
:label="y.name"
size="sm"
@update:model-value="changeCheckHandler(y, x, 1)"
/>
</template> </template>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<template v-if="searchClone.startCityId==0"> <template v-if="searchClone.startCityId == 0">
<div v-for="(x, i) in startCitys" :key="i"> <div v-for="(x, i) in startCitys" :key="i">
<div class="addr"> <div class="addr">
<div <div
class="addr-list q-px-md q-py-sm cursor-pointer row items-center" class="addr-list q-px-md q-py-sm cursor-pointer row items-center"
v-if="x.isShow" v-if="x.isShow"
> >
<span class="col" @click="changeExplesdHandler(x)">{{$t('v103.scheduledTrip.departurecity')}}</span> <span class="col" @click="changeExplesdHandler(x)">{{
$t("v103.scheduledTrip.departurecity")
}}</span>
<q-icon <q-icon
@click="changeExplesdHandler(x)" @click="changeExplesdHandler(x)"
:name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'" :name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'"
...@@ -338,24 +487,41 @@ ...@@ -338,24 +487,41 @@
" "
> >
<template v-for="(y, yi) in x.SubList"> <template v-for="(y, yi) in x.SubList">
<q-radio class="addr-list q-px-md q-py-sm row items-center" <q-radio
class="addr-list q-px-md q-py-sm row items-center"
:key="yi" :key="yi"
v-if="y.isShow" v-model="search.msg.startCityId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.startCityName" size="sm" @update:model-value="changeCheckHandler(y, x,3)"/> v-if="y.isShow"
v-model="search.msg.startCityId"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
:val="y.id"
:label="y.startCityName"
size="sm"
@update:model-value="changeCheckHandler(y, x, 3)"
/>
</template> </template>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
</q-card> </q-card>
<q-card flat class="rounded-borders q-py-md q-mt-lg" v-if="searchClone.lineId>0&&searchClone.lineTeamId==0"> <q-card
<div class="text-subtitle1 text-weight-bold q-mx-md">{{$t('v103.scheduledTrip.allcommoditytype')}}</div> flat
class="rounded-borders q-py-md q-mt-lg"
v-if="searchClone.lineId > 0 && searchClone.lineTeamId == 0"
>
<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 xilies" :key="i"> <div class="add q-mt-md" v-for="(x, i) in xilies" :key="i">
<div class="addr"> <div class="addr">
<div <div
class="addr-list q-px-md q-py-sm cursor-pointer row items-center" class="addr-list q-px-md q-py-sm cursor-pointer row items-center"
v-if="x.isShow" v-if="x.isShow"
> >
<span class="col" @click="changeExplesdHandler(x)">{{$t('v103.scheduledTrip.lineteam')}}</span> <span class="col" @click="changeExplesdHandler(x)">{{
$t("v103.scheduledTrip.lineteam")
}}</span>
<q-icon <q-icon
@click="changeExplesdHandler(x)" @click="changeExplesdHandler(x)"
:name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'" :name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'"
...@@ -370,9 +536,18 @@ ...@@ -370,9 +536,18 @@
" "
> >
<template v-for="(y, yi) in x.SubList"> <template v-for="(y, yi) in x.SubList">
<q-radio class="addr-list q-px-md q-py-sm row items-center" <q-radio
:key="yi" class="addr-list q-px-md q-py-sm row items-center"
v-if="y.isShow" v-model="search.msg.lineTeamId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.name" size="sm" @update:model-value="changeCheckHandler(y, x,2)"/> :key="yi"
v-if="y.isShow"
v-model="search.msg.lineTeamId"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
:val="y.id"
:label="y.name"
size="sm"
@update:model-value="changeCheckHandler(y, x, 2)"
/>
</template> </template>
</div> </div>
</div> </div>
...@@ -380,14 +555,16 @@ ...@@ -380,14 +555,16 @@
</q-card> </q-card>
<q-card flat class="rounded-borders q-mt-lg column no-padding"> <q-card flat class="rounded-borders q-mt-lg column no-padding">
<template v-if="!searchClone.startDate&&!searchClone.endDate"> <template v-if="!searchClone.startDate && !searchClone.endDate">
<div v-for="(x, i) in dates" :key="i"> <div v-for="(x, i) in dates" :key="i">
<div class="addr"> <div class="addr">
<div <div
class="addr-list q-px-md q-py-md cursor-pointer row items-center" class="addr-list q-px-md q-py-md cursor-pointer row items-center"
v-if="x.isShow" v-if="x.isShow"
> >
<span class="col" @click="changeExplesdHandler(x)">{{$t('v103.scheduledTrip.startdate')}}</span> <span class="col" @click="changeExplesdHandler(x)">{{
$t("v103.scheduledTrip.startdate")
}}</span>
<q-icon <q-icon
@click="changeExplesdHandler(x)" @click="changeExplesdHandler(x)"
:name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'" :name="!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'"
...@@ -402,9 +579,18 @@ ...@@ -402,9 +579,18 @@
" "
> >
<template v-for="(y, yi) in x.SubList"> <template v-for="(y, yi) in x.SubList">
<q-radio class="addr-list q-px-md q-py-sm row items-center" <q-radio
class="addr-list q-px-md q-py-sm row items-center"
:key="yi" :key="yi"
v-if="y.isShow" v-model="datesId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.Name" size="sm" @update:model-value="changeCheckHandler(y, x,5)"/> v-if="y.isShow"
v-model="datesId"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
:val="y.id"
:label="y.Name"
size="sm"
@update:model-value="changeCheckHandler(y, x, 5)"
/>
</template> </template>
</div> </div>
</div> </div>
...@@ -412,30 +598,30 @@ ...@@ -412,30 +598,30 @@
</template> </template>
<div class="row bg-grey-3" v-if="!searchClone.startDate"> <div class="row bg-grey-3" v-if="!searchClone.startDate">
<div <div
class="q-px-md q-py-md" class="q-px-md q-py-md"
style="border-right: 1px solid #eee; border-radius: 0 !important" style="border-right: 1px solid #eee; border-radius: 0 !important"
> >
<q-icon name="event" size="24px" /> <q-icon name="event" size="24px" />
</div> </div>
<div class="row items-center justify-center col"> <div class="row items-center justify-center col">
<span class="text-grey-8">{{ <span class="text-grey-8">{{
dateRange.from dateRange.from
? `${dateRange.from} - ${dateRange.to}` ? `${dateRange.from} - ${dateRange.to}`
: $t('v103.scheduledTrip.screeningdate') : $t("v103.scheduledTrip.screeningdate")
}}</span> }}</span>
<q-popup-proxy :offset="[0, 0]" ref="qDateProxy"> <q-popup-proxy :offset="[0, 0]" ref="qDateProxy">
<div> <div>
<q-date <q-date
v-model="dateRange" v-model="dateRange"
:options="optionsFn" :options="optionsFn"
range range
@range-end="dateRangeHandler" @range-end="dateRangeHandler"
mask="YYYY/MM/DD" mask="YYYY/MM/DD"
></q-date> ></q-date>
</div> </div>
</q-popup-proxy> </q-popup-proxy>
</div> </div>
</div> </div>
</q-card> </q-card>
<!-- <q-card flat class="rounded-borders q-pa-md q-mt-lg"> <!-- <q-card flat class="rounded-borders q-pa-md q-mt-lg">
...@@ -454,614 +640,651 @@ ...@@ -454,614 +640,651 @@
/> />
</q-card> --> </q-card> -->
<q-card flat class="rounded-borders q-mt-lg overflow-hidden"> <q-card flat class="rounded-borders q-mt-lg overflow-hidden">
<q-expansion-item <q-expansion-item
expand-separator expand-separator
:label="$t('v103.scheduledTrip.journeytime')" :label="$t('v103.scheduledTrip.journeytime')"
class="text-subtitle1 text-weight-bold rounded-borders" class="text-subtitle1 text-weight-bold rounded-borders"
> >
<q-radio class="addr-list q-px-md q-py-sm row items-center" <q-radio
v-for="(y, yi) in dayArray" class="addr-list q-px-md q-py-sm row items-center"
:key="yi" v-model="DayId" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="y.id" :label="y.text" size="sm" @update:model-value="changeCheckHandler(y,dayArray,4)"/> v-for="(y, yi) in dayArray"
</q-expansion-item> :key="yi"
v-model="DayId"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
:val="y.id"
:label="y.text"
size="sm"
@update:model-value="changeCheckHandler(y, dayArray, 4)"
/>
</q-expansion-item>
</q-card> </q-card>
</template> </template>
</template> </template>
<script lang="ts"> <script lang="ts">
import { useI18n } from 'vue-i18n' import { useI18n } from "vue-i18n";
import svgIcon from '../global/svg-icon.vue' import svgIcon from "../global/svg-icon.vue";
import { computed, inject, provide, reactive, ref, toRefs, defineComponent, onMounted, watch } from 'vue' import {
import HotelService from '../../api/hotel' computed,
import message from '../../utils/message' inject,
import { ApiResult } from '../../@types/enumHelper' provide,
import { CascaderOption,NCascader,NSelect } from 'naive-ui' reactive,
import { date } from 'quasar' ref,
import { HotelRate,HotelArea, useHotel } from '../../utils/hotelRate' toRefs,
import { useQuasar } from 'quasar' defineComponent,
import useScrollModule from '../../module/scrollbar/scrollModule' onMounted,
// import { dateDiffer } from '../../utils/tools' watch,
import { DirtionmaryHelper } from '../../config/dictionary' } from "vue";
import scheduledTripService from 'src/api/scheduledTrip' import HotelService from "../../api/hotel";
import { getStoreGetter } from '../../store/utils' import message from "../../utils/message";
import { UserGetter } from '../../store/modules/user/getters' import { ApiResult } from "../../@types/enumHelper";
export default defineComponent({ import { CascaderOption, NCascader, NSelect } from "naive-ui";
components: { svgIcon, NCascader, NSelect }, import { date } from "quasar";
setup(props, context) { import { HotelRate, HotelArea, useHotel } from "../../utils/hotelRate";
const $q = useQuasar() import { useQuasar } from "quasar";
const qDateProxy = ref(null) as any import useScrollModule from "../../module/scrollbar/scrollModule";
const qDateProxy0 = ref(null) as any // import { dateDiffer } from '../../utils/tools'
const qDateProxy1 = ref(null) as any import { DirtionmaryHelper } from "../../config/dictionary";
const qDateProxy2 = ref(null) as any import scheduledTripService from "src/api/scheduledTrip";
const qDateProxy3 = ref(null) as any import { getStoreGetter } from "../../store/utils";
const qDateProxy4 = ref(null) as any import { UserGetter } from "../../store/modules/user/getters";
const qDateProxy5 = ref(null) as any export default defineComponent({
const qDateProxy6 = ref(null) as any components: { svgIcon, NCascader, NSelect },
const qNameProxy = ref(null) as any setup(props, context) {
const { locale, t } = useI18n() const $q = useQuasar();
const data = reactive({ const qDateProxy = ref(null) as any;
datesId: 0,//日期 const qDateProxy0 = ref(null) as any;
DayId:0,//旅程天数 const qDateProxy1 = ref(null) as any;
xilies: [],//系列 const qDateProxy2 = ref(null) as any;
lines: [],//线路 const qDateProxy3 = ref(null) as any;
startCitys: [],//出发城市表 const qDateProxy4 = ref(null) as any;
searchItem: [], const qDateProxy5 = ref(null) as any;
sites: [],//公司所在城市 const qDateProxy6 = ref(null) as any;
city: 0,//公司城市 const qNameProxy = ref(null) as any;
companyId:0, const { locale, t } = useI18n();
dates: [],//开始日期 const data = reactive({
areaList: [], datesId: 0, //日期
chosenAddress: [],//已选项 DayId: 0, //旅程天数
goodsType: [], xilies: [], //系列
dateRange: null,//起止时间 lines: [], //线路
searchClone: null, startCitys: [], //出发城市表
dayArray: [ searchItem: [],
{ sites: [], //公司所在城市
id: 1, city: 0, //公司城市
min: 1, companyId: 0,
max: 1, dates: [], //开始日期
text: "1"+t('v103.scheduledTrip.day'), areaList: [],
}, chosenAddress: [], //已选项
{ goodsType: [],
id: 2, dateRange: null, //起止时间
min: 2, searchClone: null,
max: 2, dayArray: [
text: "2"+t('v103.scheduledTrip.day'), {
}, id: 1,
{ min: 1,
id: 3, max: 1,
min: 3, text: "1" + t("v103.scheduledTrip.day"),
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,
userInfo: {} as any,
})
const search = inject(DirtionmaryHelper.TICKET_QUERY_PARAM)
const domain =inject(DirtionmaryHelper.DOMAIN_NAME)
data.chosenAddress = JSON.parse(JSON.stringify(search.chosenAddress))
data.searchClone = JSON.parse(JSON.stringify(search.msg))
data.DayId = search.DayId
data.datesId = search.datesId
data.dayArray.forEach((x) => {
x.checked = false;
});
data.dateRange = { from: data.searchClone.startDate, to: data.searchClone.endDate };
data.userInfo = getStoreGetter<UserGetter>('user', 'getUser')
const methods = {
// 删除目的地、商品类别、旅游时间
removeChosen(x,i,type) {
if(type==1||type==2){
if(type==1){
search.msg.lineId = 0
}if(type==2){
search.msg.lineTeamId = 0
}
}else if(type==3){
search.msg.startCityId = 0
}else if(type==4){
search.DayId = 0
search.msg.minTripDay = ""
search.msg.maxTripDay = ""
}else if(type==5){
search.datesId = 0
search.msg.startDate = ''
search.msg.endDate = ''
}else if(type==6){
data.dateRange = null
search.datesId = 0
search.msg.startDate = ''
search.msg.endDate = ''
}
search.chosenAddress.splice(i,1)
}, },
// 初始化出发城市 {
initCityList() { id: 2,
methods.GetB2BSite() min: 2,
let d=new Date().getMonth() max: 2,
for(let i=0;i<3;i++){ text: "2" + t("v103.scheduledTrip.day"),
d++ },
d=d>12?d-12:d {
let obj = { id: 3,
Name: `${d}${t('v103.scheduledTrip.month')}`, min: 3,
id: 1+i, max: 3,
MM: d text: "3" + t("v103.scheduledTrip.day"),
} },
data.dates.push(obj) {
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,
userInfo: {} as any,
});
const search = inject(DirtionmaryHelper.TICKET_QUERY_PARAM);
const domain = inject(DirtionmaryHelper.DOMAIN_NAME);
data.chosenAddress = JSON.parse(JSON.stringify(search.chosenAddress));
data.searchClone = JSON.parse(JSON.stringify(search.msg));
data.DayId = search.DayId;
data.datesId = search.datesId;
data.dayArray.forEach((x) => {
x.checked = false;
});
data.dateRange = { from: data.searchClone.startDate, to: data.searchClone.endDate };
data.userInfo = getStoreGetter<UserGetter>("user", "getUser");
const methods = {
// 删除目的地、商品类别、旅游时间
removeChosen(x, i, type) {
if (type == 1 || type == 2) {
if (type == 1) {
search.msg.lineId = 0;
} }
let arrList = function(arr){ if (type == 2) {
arr.forEach(item=>{ search.msg.lineTeamId = 0;
item.isShow = true
item.explsed = false
})
} }
arrList(data.dates) } else if (type == 3) {
let list = [] search.msg.startCityId = 0;
list.push({SubList: [],explsed: false,isShow:true}) } else if (type == 4) {
list[0].SubList = data.dates search.DayId = 0;
data.dates = list; search.msg.minTripDay = "";
search.msg.maxTripDay = "";
}, } else if (type == 5) {
// 获取当前城市 search.datesId = 0;
GetB2BSite(){ search.msg.startDate = "";
let state=false; search.msg.endDate = "";
scheduledTripService.GetB2BSite({}).then(r => { } else if (type == 6) {
data.dateRange = null;
search.datesId = 0;
search.msg.startDate = "";
search.msg.endDate = "";
}
search.chosenAddress.splice(i, 1);
},
// 初始化出发城市
initCityList() {
methods.GetB2BSite();
let d = new Date().getMonth();
for (let i = 0; i < 3; i++) {
d++;
d = d > 12 ? d - 12 : d;
let obj = {
Name: `${d}${t("v103.scheduledTrip.month")}`,
id: 1 + i,
MM: d,
};
data.dates.push(obj);
}
let arrList = function (arr) {
arr.forEach((item) => {
item.isShow = true;
item.explsed = false;
});
};
arrList(data.dates);
let list = [];
list.push({ SubList: [], explsed: false, isShow: true });
list[0].SubList = data.dates;
data.dates = list;
},
// 获取当前城市
GetB2BSite() {
let state = false;
scheduledTripService
.GetB2BSite({})
.then((r) => {
if (r.data.resultCode == ApiResult.SUCCESS) { if (r.data.resultCode == ApiResult.SUCCESS) {
let arrList = function(arr){ let arrList = function (arr) {
arr.forEach(item=>{ arr.forEach((item) => {
item.isShow = true item.isShow = true;
item.explsed = false item.explsed = false;
}) });
} };
arrList(r.data.data) arrList(r.data.data);
let list = [] let list = [];
list.push({SubList: [],explsed: false,isShow:true}) list.push({ SubList: [], explsed: false, isShow: true });
if(data.userInfo){ if (data.userInfo) {
let rB_Branch_id = data.userInfo.salesBaseInfo.rB_Branch_id; let rB_Branch_id = data.userInfo.salesBaseInfo.rB_Branch_id;
search.msg.companyId = data.rB_Branch_id search.msg.companyId = data.rB_Branch_id;
if(domain == 'id.oytour') { if (domain == "id.oytour") {
search.msg.companyId = 1252 search.msg.companyId = 1252;
list[0].SubList = r.data.data.filter(branch=>branch.companyId==1252) list[0].SubList = r.data.data.filter(
list[0].SubList[0].siteName = 'Jakarta' (branch) => branch.companyId == 1252
}else{ );
list[0].SubList = r.data.data list[0].SubList[0].siteName = "Jakarta";
search.msg.companyId = data.rB_Branch_id } else {
list[0].SubList = r.data.data;
search.msg.companyId = data.rB_Branch_id;
} }
data.companyId = search.msg.companyId data.companyId = search.msg.companyId;
search.RetrievalState = true search.RetrievalState = true;
data.sites = list; data.sites = list;
data.sites[0].SubList.forEach(item=>{ data.sites[0].SubList.forEach((item) => {
if(item.companyId==rB_Branch_id){ if (item.companyId == rB_Branch_id) {
state = true; state = true;
data.city = item.companyId; data.city = item.companyId;
data.searchClone.cityId = item.cityId data.searchClone.cityId = item.cityId;
// localStorage.setItem('site', data.city) // localStorage.setItem('site', data.city)
// localStorage.setItem('cityId', item.cityId) // localStorage.setItem('cityId', item.cityId)
methods.changeChosenHandler(item) methods.changeChosenHandler(item);
} }
}) });
if(!state) { if (!state) {
state = true; state = true;
data.city = data.sites[0].SubList[0].companyId; data.city = data.sites[0].SubList[0].companyId;
data.searchClone.cityId = data.sites[0].SubList[0].cityId data.searchClone.cityId = data.sites[0].SubList[0].cityId;
search.msg.companyId = data.companyId search.msg.companyId = data.companyId;
// localStorage.setItem('site', data.city) // localStorage.setItem('site', data.city)
// localStorage.setItem('cityId', data.searchClone.cityId) // localStorage.setItem('cityId', data.searchClone.cityId)
methods.changeChosenHandler(data.sites[0].SubList[0],data.sites[0]) methods.changeChosenHandler(data.sites[0].SubList[0], data.sites[0]);
} }
search.msg.cityId = data.searchClone.cityId search.msg.cityId = data.searchClone.cityId;
methods.loadRecoItems() methods.loadRecoItems();
}else{ } else {
message.errorMsg(r.data.message) message.errorMsg(r.data.message);
} }
} }
}).catch(e => {
message.errorMsg(e.message)
}) })
}, .catch((e) => {
// 系列 message.errorMsg(e.message);
loadRecoItems(){ });
let param = { },
companyId: data.city, // 系列
cityId: data.searchClone.cityId, loadRecoItems() {
} let param = {
scheduledTripService.GetB2BGroupSearchItem(param).then(r => { companyId: data.city,
cityId: data.searchClone.cityId,
};
scheduledTripService
.GetB2BGroupSearchItem(param)
.then((r) => {
if (r.data.resultCode == ApiResult.SUCCESS) { if (r.data.resultCode == ApiResult.SUCCESS) {
let arrList = function(arr){ let arrList = function (arr) {
arr.forEach(item=>{ arr.forEach((item) => {
item.isShow = true item.isShow = true;
item.explsed = false item.explsed = false;
}) });
} };
arrList(r.data.data.line) arrList(r.data.data.line);
arrList(r.data.data.startCity) arrList(r.data.data.startCity);
let list = [] let list = [];
let obj = { let obj = {
SubList: [],explsed: false,isShow:true SubList: [],
} explsed: false,
list.push(JSON.parse(JSON.stringify(obj))) isShow: true,
list[0].SubList = r.data.data.line };
data.lines=JSON.parse(JSON.stringify(list)) list.push(JSON.parse(JSON.stringify(obj)));
let list2 = [] list[0].SubList = r.data.data.line;
list2.push(JSON.parse(JSON.stringify(obj))) data.lines = JSON.parse(JSON.stringify(list));
list2[0].SubList = r.data.data.startCity let list2 = [];
data.startCitys = list2 list2.push(JSON.parse(JSON.stringify(obj)));
data.startCitys.forEach(x=>{ list2[0].SubList = r.data.data.startCity;
x.SubList.forEach(y=>{ data.startCitys = list2;
data.chosenAddress.forEach((z,index)=>{ data.startCitys.forEach((x) => {
if(y.id!=z.id){ x.SubList.forEach((y) => {
if(z.type==1){ data.chosenAddress.forEach((z, index) => {
search.chosenAddress.splice(index,1); if (y.id != z.id) {
if (z.type == 1) {
search.chosenAddress.splice(index, 1);
} }
if(z.type==2){ if (z.type == 2) {
search.chosenAddress.splice(index,1); search.chosenAddress.splice(index, 1);
} }
if(z.type==3){ if (z.type == 3) {
search.chosenAddress.splice(index,1); search.chosenAddress.splice(index, 1);
} }
} }
}) });
}) });
}) });
} }
}).catch(e => {
message.errorMsg(e.message)
}) })
}, .catch((e) => {
// 旅游时间 message.errorMsg(e.message);
changeExplesdHandler(x) { });
x.explsed = !x.explsed; },
if (x.SubList) { // 旅游时间
changeExplesdHandler(x) {
x.explsed = !x.explsed;
if (x.SubList) {
}
},
// 商品类型
changeGoodTypeHandler(x) {
if (x.checked && data.searchClone.teamType.indexOf(x.Id) == -1) {
data.searchClone.teamType.push(x.Id);
} else if (!x.checked && data.searchClone.teamType.indexOf(x.Id) != -1) {
let i = data.searchClone.teamType.findIndex((item) => item == x.Id);
data.searchClone.teamType.splice(i, 1);
}
},
// 出发地
changeCheckHandler(x, p = null, type) {
if (!type) {
search.msg.companyId = x.companyId;
methods.loadRecoItems();
} else if (type == 1) {
let arrList = function (arr) {
arr.forEach((item) => {
item.isShow = true;
item.explsed = false;
});
};
arrList(x.lineTeam);
let list = [];
list.push({ SubList: [], explsed: false, isShow: true });
list[0].SubList = x.lineTeam;
data.xilies = list;
search.msg.lineId = x.id;
}
setTimeout(() => {
methods.changeChosenHandler(x, p, type);
}, 200);
},
changeChosenHandler(x, p, type) {
let obj = {};
if (!type) {
obj = {
Name: x.siteName,
Id: x.cityId,
checked: x.checked,
cityId: x.cityId,
companyId: x.companyId,
companyName: x.companyName,
explsed: x.explsed,
isShow: x.isShow,
province: x.province,
siteName: x.siteName,
type: type,
};
search.chosenAddress.splice(0, 1);
if ($q.platform.is.mobile) {
if (qDateProxy0.value) qDateProxy0.value.hide();
} }
}, setTimeout(() => {
// 商品类型 search.chosenAddress.unshift(obj);
changeGoodTypeHandler(x) { }, 200);
if (x.checked && data.searchClone.teamType.indexOf(x.Id) == -1) { } else if (type == 1 || type == 2) {
data.searchClone.teamType.push(x.Id); obj = {
} else if (!x.checked && data.searchClone.teamType.indexOf(x.Id) != -1) { Name: x.name,
let i = data.searchClone.teamType.findIndex((item) => item == x.Id); Id: x.id,
data.searchClone.teamType.splice(i, 1); type: type,
};
// let status = false
p.SubList.forEach((y) => {
search.chosenAddress.forEach((z, index) => {
if (y.id == z.Id && type == z.type) {
// status = true
search.chosenAddress.splice(index, 1);
}
});
});
if (type == 1) {
search.msg.lineId = x.id;
} }
}, if (type == 2) {
// 出发地 search.msg.lineTeamId = x.id;
changeCheckHandler(x, p = null,type) { }
if(!type){ if ($q.platform.is.mobile) {
// data.city = x.companyId; if (type == 1 && qDateProxy1.value) qDateProxy1.value.hide();
// search.msg.cityId = data.searchClone.cityId if (type == 2 && qDateProxy2.value) qDateProxy2.value.hide();
search.msg.companyId = x.companyId }
methods.loadRecoItems() setTimeout(() => {
}else if(type==1){ search.chosenAddress.push(obj);
let arrList = function(arr){ }, 200);
arr.forEach(item=>{ } else if (type == 3) {
item.isShow = true obj = {
item.explsed = false Name: x.startCityName,
}) Id: x.id,
type: type,
};
p.SubList.forEach((y) => {
search.chosenAddress.forEach((z, index) => {
if (y.id == z.Id && type == z.type) {
search.chosenAddress.splice(index, 1);
} }
arrList(x.lineTeam) });
let list = [] });
list.push({SubList: [],explsed: false,isShow:true}) search.msg.startCityId = x.id;
list[0].SubList = x.lineTeam if ($q.platform.is.mobile) {
data.xilies = list if (qDateProxy3.value) qDateProxy3.value.hide();
search.msg.lineId = x.id
} }
setTimeout(()=>{ setTimeout(() => {
methods.changeChosenHandler(x,p,type);
},200)
},
changeChosenHandler(x,p,type) {
let obj= {}
if(!type){
obj= {
Name: x.siteName,
Id: x.cityId,
checked: x.checked,
cityId : x.cityId,
companyId: x.companyId,
companyName: x.companyName,
explsed: x.explsed,
isShow: x.isShow,
province: x.province,
siteName: x.siteName,
type: type
}
search.chosenAddress.splice(0,1);
if($q.platform.is.mobile){
if(qDateProxy0.value) qDateProxy0.value.hide()
}
setTimeout(()=>{
search.chosenAddress.unshift(obj);
},200)
}else if(type==1||type==2){
obj= {
Name: x.name,
Id: x.id,
type: type
}
// let status = false
p.SubList.forEach(y=>{
search.chosenAddress.forEach((z,index)=>{
if(y.id==z.Id&&type==z.type){
// status = true
search.chosenAddress.splice(index,1);
}
})
})
if(type==1){
search.msg.lineId = x.id
}if(type==2){
search.msg.lineTeamId = x.id
}
if($q.platform.is.mobile){
if(type==1&&qDateProxy1.value) qDateProxy1.value.hide()
if(type==2&&qDateProxy2.value) qDateProxy2.value.hide()
}
setTimeout(()=>{
search.chosenAddress.push(obj);
},200)
}else if(type==3){
obj= {
Name: x.startCityName,
Id: x.id,
type: type
}
p.SubList.forEach(y=>{
search.chosenAddress.forEach((z,index)=>{
if(y.id==z.Id&&type==z.type){
search.chosenAddress.splice(index,1);
}
})
})
search.msg.startCityId = x.id
if($q.platform.is.mobile){
if(qDateProxy3.value) qDateProxy3.value.hide()
}
setTimeout(()=>{
search.chosenAddress.push(obj);
},500)
}else if(type==4){
obj= {
Name: x.text,
Id: x.id,
min: x.min,
max: x.max,
type: type
}
p.forEach(y=>{
search.chosenAddress.forEach((z,index)=>{
if(y.id==z.Id&&type==z.type){
search.chosenAddress.splice(index,1);
}
})
})
search.DayId = data.DayId
search.msg.minTripDay = x.min
search.msg.maxTripDay = x.max
if($q.platform.is.mobile){
if(qDateProxy4.value) qDateProxy4.value.hide()
}
setTimeout(()=>{
search.chosenAddress.push(obj);
methods.changeTripDayHandler()
},200)
}else if(type==5){
obj= {
Name: x.Name,
Id: x.id,
type: type,
min: new Date().getFullYear()+'/'+x.MM+'/01',
max: new Date().getFullYear()+'/'+x.MM+'/'+new Date(new Date().getFullYear(), x.MM, 0).getDate(),
}
p.SubList.forEach(y=>{
search.chosenAddress.forEach((z,index)=>{
if(y.id==z.Id&&type==z.type){
search.chosenAddress.splice(index,1);
}
})
})
if($q.platform.is.mobile){
if(qDateProxy5.value) qDateProxy5.value.hide()
}
search.datesId = x.id
search.msg.startDate = obj.min
search.msg.endDate = obj.max
console.log(search.msg)
search.chosenAddress.push(obj); search.chosenAddress.push(obj);
}else if(type==6){ }, 500);
obj= { } else if (type == 4) {
Name: x.startDate+'-'+x.endDate, obj = {
startDate: x.startDate, Name: x.text,
type: type, Id: x.id,
} min: x.min,
search.chosenAddress.forEach((z,index)=>{ max: x.max,
if(type==z.type){ type: type,
search.chosenAddress.splice(index,1); };
p.forEach((y) => {
search.chosenAddress.forEach((z, index) => {
if (y.id == z.Id && type == z.type) {
search.chosenAddress.splice(index, 1);
} }
}) });
if($q.platform.is.mobile){ });
if(qDateProxy6.value) qDateProxy6.value.hide() search.DayId = data.DayId;
} search.msg.minTripDay = x.min;
// search.msg.startDate = x.startDate search.msg.maxTripDay = x.max;
// search.msg.startDate = x.endDate if ($q.platform.is.mobile) {
setTimeout(()=>{ if (qDateProxy4.value) qDateProxy4.value.hide();
search.chosenAddress.push(obj);
},200)
} }
search.RetrievalState = true setTimeout(() => {
if(p){ search.chosenAddress.push(obj);
p.explsed = false; methods.changeTripDayHandler();
}, 200);
} else if (type == 5) {
obj = {
Name: x.Name,
Id: x.id,
type: type,
min: new Date().getFullYear() + "/" + x.MM + "/01",
max:
new Date().getFullYear() +
"/" +
x.MM +
"/" +
new Date(new Date().getFullYear(), x.MM, 0).getDate(),
};
p.SubList.forEach((y) => {
search.chosenAddress.forEach((z, index) => {
if (y.id == z.Id && type == z.type) {
search.chosenAddress.splice(index, 1);
}
});
});
if ($q.platform.is.mobile) {
if (qDateProxy5.value) qDateProxy5.value.hide();
} }
}, search.datesId = x.id;
// 价格区间 search.msg.startDate = obj.min;
changeTripDayHandler() { search.msg.endDate = obj.max;
data.searchClone.minTripDay = "0"; search.chosenAddress.push(obj);
data.searchClone.maxTripDay = "0"; } else if (type == 6) {
data.dayArray.forEach((x) => { obj = {
if (x.id==data.DayId) { Name: x.startDate + "-" + x.endDate,
data.searchClone.minPrice = startDate: x.startDate,
data.searchClone.minPrice > x.min ? x.min : data.searchClone.minPrice; type: type,
data.searchClone.maxPrice = };
data.searchClone.maxPrice < x.max ? x.max : data.searchClone.maxPrice; search.chosenAddress.forEach((z, index) => {
if (type == z.type) {
search.chosenAddress.splice(index, 1);
} }
}); });
data.searchClone.minTripDay = if ($q.platform.is.mobile) {
data.searchClone.minTripDay == "0" ? "" : data.searchClone.minTripDay; if (qDateProxy6.value) qDateProxy6.value.hide();
data.searchClone.maxTripDay =
data.searchClone.maxTripDay == "0" ? "" : data.searchClone.maxTripDay;
},
testHandler(e) {
data.searchClone.minPrice = e.min;
data.searchClone.maxPrice = e.max;
search.msg.priceRange.min = e.min;
search.msg.priceRange.max = e.max;
search.msg.minPrice = e.min;
search.msg.maxPrice = e.max;
methods.queryList()
},
queryList(){
search.RetrievalState=true
},
// 选择时间区间
optionsFn(cd) {
return (
cd >=
date.formatDate(date.addToDate(new Date(), { days: 1 }), "YYYY/MM/DD")
);
},
dateRangeHandler(e) {
let startDate = `${e.from.year}/${e.from.month}/${e.from.day}`;
let endDate = `${e.to.year}/${e.to.month}/${e.to.day} `;
if (qDateProxy.value) qDateProxy.value.hide()
let obj= {
startDate: startDate,
endDate: endDate,
} }
search.msg.startDate = startDate // search.msg.startDate = x.startDate
search.msg.endDate = endDate // search.msg.startDate = x.endDate
methods.changeChosenHandler(obj,null,6) setTimeout(() => {
}, search.chosenAddress.push(obj);
// 商品类型 }, 200);
initGoods() { }
data.goodsType.push({ search.RetrievalState = true;
Id: 1, if (p) {
Name: t('v103.scheduledTrip.sightseeingitinerary'), p.explsed = false;
explsed: $q.platform.is.desktop? false:true, }
SubList: [ },
{ // 价格区间
Id: 2, changeTripDayHandler() {
Name: t('v103.scheduledTrip.daytrip'), data.searchClone.minTripDay = "0";
checked: false, data.searchClone.maxTripDay = "0";
}, data.dayArray.forEach((x) => {
{ if (x.id == data.DayId) {
Id: 3, data.searchClone.minPrice =
Name: t('v103.scheduledTrip.multiday'), data.searchClone.minPrice > x.min ? x.min : data.searchClone.minPrice;
checked: false, data.searchClone.maxPrice =
}, data.searchClone.maxPrice < x.max ? x.max : data.searchClone.maxPrice;
], }
}); });
}, data.searchClone.minTripDay =
// 搜寻关键词 data.searchClone.minTripDay == "0" ? "" : data.searchClone.minTripDay;
changeAddrSearchHandler(v) { data.searchClone.maxTripDay =
search.RetrievalState = true data.searchClone.maxTripDay == "0" ? "" : data.searchClone.maxTripDay;
}, },
} testHandler(e) {
watch(data.searchClone, (n, o) => { data.searchClone.minPrice = e.min;
data.searchClone.maxPrice = e.max;
search.msg.priceRange.min = e.min;
search.msg.priceRange.max = e.max;
search.msg.minPrice = e.min;
search.msg.maxPrice = e.max;
methods.queryList();
},
queryList() {
search.RetrievalState = true;
},
// 选择时间区间
optionsFn(cd) {
return (
cd >= date.formatDate(date.addToDate(new Date(), { days: 1 }), "YYYY/MM/DD")
);
},
dateRangeHandler(e) {
let startDate = `${e.from.year}/${e.from.month}/${e.from.day}`;
let endDate = `${e.to.year}/${e.to.month}/${e.to.day} `;
if (qDateProxy.value) qDateProxy.value.hide();
let obj = {
startDate: startDate,
endDate: endDate,
};
search.msg.startDate = startDate;
search.msg.endDate = endDate;
methods.changeChosenHandler(obj, null, 6);
},
// 商品类型
initGoods() {
data.goodsType.push({
Id: 1,
Name: t("v103.scheduledTrip.sightseeingitinerary"),
explsed: $q.platform.is.desktop ? false : true,
SubList: [
{
Id: 2,
Name: t("v103.scheduledTrip.daytrip"),
checked: false,
},
{
Id: 3,
Name: t("v103.scheduledTrip.multiday"),
checked: false,
},
],
});
},
// 搜寻关键词
changeAddrSearchHandler(v) {
search.RetrievalState = true;
},
};
watch(
data.searchClone,
(n, o) => {
// search.searchClone = JSON.parse(JSON.stringify(n)) // search.searchClone = JSON.parse(JSON.stringify(n))
},{deep: true}) },
watch(search, (n, o) => { { deep: true }
data.searchClone = JSON.parse(JSON.stringify(n.msg)) );
data.chosenAddress = JSON.parse(JSON.stringify(n.chosenAddress)) watch(
if(n.DayId==0){ search,
data.DayId = n.DayId (n, o) => {
data.searchClone = JSON.parse(JSON.stringify(n.msg));
data.chosenAddress = JSON.parse(JSON.stringify(n.chosenAddress));
if (n.DayId == 0) {
data.DayId = n.DayId;
} }
if(n.datesId==0){ if (n.datesId == 0) {
data.datesId = n.datesId data.datesId = n.datesId;
data.searchClone.startDate = "" data.searchClone.startDate = "";
} }
data.dateRange = { from: n.msg.startDate, to: n.msg.endDate }; data.dateRange = { from: n.msg.startDate, to: n.msg.endDate };
data.searchClone.startDate = n.msg.startDate data.searchClone.startDate = n.msg.startDate;
data.searchClone.endDate = n.msg.endDate data.searchClone.endDate = n.msg.endDate;
if(n.deleteChosen){ if (n.deleteChosen) {
data.areaList.forEach(x=>{ data.areaList.forEach((x) => {
x.SubList.forEach(y=>{ x.SubList.forEach((y) => {
if(x.Id==n.deleteChosen.Pid&&y.Id==n.deleteChosen.Id){ if (x.Id == n.deleteChosen.Pid && y.Id == n.deleteChosen.Id) {
methods.changeCheckHandler(y,x) methods.changeCheckHandler(y, x);
} }
}) });
}) });
}
},{deep: true})
const searchCnt = computed(() => {
let setCnt = 2
if ($q.platform.is.mobile) {
setCnt = setCnt+search.chosenAddress.length-1
} }
return setCnt },
}) { deep: true }
);
methods.initCityList(); const searchCnt = computed(() => {
methods.initGoods(); let setCnt = 2;
return { if ($q.platform.is.mobile) {
...toRefs(data), setCnt = setCnt + search.chosenAddress.length - 1;
...methods,
search,
searchCnt,
qDateProxy,
qDateProxy0,
qDateProxy1,
qDateProxy2,
qDateProxy3,
qDateProxy4,
qDateProxy5,
qDateProxy6,
qNameProxy,
domain
} }
} return setCnt;
}) });
</script>
methods.initCityList();
<style> methods.initGoods();
.SearchMain .SearchMain-height .q-field__control { return {
height: 40px; ...toRefs(data),
min-height: 40px !important; ...methods,
} search,
</style> searchCnt,
qDateProxy,
\ No newline at end of file qDateProxy0,
qDateProxy1,
qDateProxy2,
qDateProxy3,
qDateProxy4,
qDateProxy5,
qDateProxy6,
qNameProxy,
domain,
};
},
});
</script>
<style>
.SearchMain .SearchMain-height .q-field__control {
height: 40px;
min-height: 40px !important;
}
</style>
...@@ -161,9 +161,7 @@ export default defineComponent({ ...@@ -161,9 +161,7 @@ export default defineComponent({
x.typeInfo = data.status.find(y => y.StatusId == x.orderState) ?? data.status[1] x.typeInfo = data.status.find(y => y.StatusId == x.orderState) ?? data.status[1]
}) })
data.orders = r.data.data.pageData data.orders = r.data.data.pageData
console.log(r)
data.pages.pageCount = r.data.data.pageCount data.pages.pageCount = r.data.data.pageCount
// methods.GetWaitDealOrderPageList()
} else { } else {
message.errorMsg(r.data.message) message.errorMsg(r.data.message)
} }
......
...@@ -10,22 +10,36 @@ ...@@ -10,22 +10,36 @@
flat flat
/> />
</div> </div>
<div class="text-grey-6 f12 q-my-md">{{$t('v103.scheduledTripDetails.selectionquantity')}}</div> <div class="text-grey-6 f12 q-my-md">
{{ $t("v103.scheduledTripDetails.selectionquantity") }}
</div>
<div class="row items-end"> <div class="row items-end">
<div class="col" :class="{'column':$q.platform.is.mobile}"> <div class="col" :class="{ column: $q.platform.is.mobile }">
<div> <div>
<span class="text-subtitle2 text-weight-bold">{{$t('v103.scheduledTripDetails.cr')}}</span> <span class="text-subtitle2 text-weight-bold">{{
<span class="text-grey-6 f12 q-ml-sm">(12-99{{$t('v103.scheduledTripDetails.age')}})</span> $t("v103.scheduledTripDetails.cr")
}}</span>
<span class="text-grey-6 f12 q-ml-sm"
>(12-99{{ $t("v103.scheduledTripDetails.age") }})</span
>
</div> </div>
<div v-if="$q.platform.is.mobile"> <div v-if="$q.platform.is.mobile">
<span class="text-grey-7 product-price" style="font-size: 13px"> <span class="text-grey-7 product-price" style="font-size: 13px">
{{domain==`id.oytour`?'IDR':'CNY'}} {{ p.originalB2BPrice }} /{{$t('v103.scheduledTripDetails.each')}} {{ domain == `id.oytour` ? "IDR" : "CNY" }} {{ p.originalB2BPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
</div> </div>
</div> </div>
<div class="row items-end"> <div class="row items-end">
<span v-if="$q.platform.is.desktop" class="text-grey-7 product-price" style="font-size: 13px"> <span
{{domain==`id.oytour`?'IDR':'CNY'}} {{ p.originalB2BPrice }} /{{$t('v103.scheduledTripDetails.each')}} v-if="$q.platform.is.desktop"
class="text-grey-7 product-price"
style="font-size: 13px"
>
{{ domain == `id.oytour` ? "IDR" : "CNY" }} {{ p.originalB2BPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
<q-input <q-input
style="width: 150px" style="width: 150px"
...@@ -67,22 +81,36 @@ ...@@ -67,22 +81,36 @@
</div> </div>
<div class="row items-end q-mt-md" v-if="p.isSupportChildren == 1"> <div class="row items-end q-mt-md" v-if="p.isSupportChildren == 1">
<div class="col" :class="{'column':$q.platform.is.mobile}"> <div class="col" :class="{ column: $q.platform.is.mobile }">
<div> <div>
<span class="text-subtitle2 text-weight-bold">{{$t('v103.scheduledTripDetails.et')}}</span> <span class="text-subtitle2 text-weight-bold">{{
<span class="text-grey-6 f12 q-ml-sm">(2-11{{$t('v103.scheduledTripDetails.age')}},{{$t('v103.scheduledTripDetails.noroom')}})</span> $t("v103.scheduledTripDetails.et")
}}</span>
<span class="text-grey-6 f12 q-ml-sm"
>(2-11{{ $t("v103.scheduledTripDetails.age") }},{{
$t("v103.scheduledTripDetails.noroom")
}})</span
>
</div> </div>
<div v-if="$q.platform.is.mobile"> <div v-if="$q.platform.is.mobile">
<span class="text-grey-7 product-price" style="font-size: 13px"> <span class="text-grey-7 product-price" style="font-size: 13px">
{{domain==`id.oytour`?'IDR':'CNY'}} {{ domain == `id.oytour` ? "IDR" : "CNY" }}
{{ p.originalB2BPrice - p.childNoNeedPrice }} /{{$t('v103.scheduledTripDetails.each')}} {{ p.originalB2BPrice - p.childNoNeedPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
</div> </div>
</div> </div>
<div class="row items-end"> <div class="row items-end">
<span v-if="$q.platform.is.desktop" class="text-grey-7 product-price" style="font-size: 13px"> <span
{{domain==`id.oytour`?'IDR':'CNY'}} v-if="$q.platform.is.desktop"
{{ p.originalB2BPrice - p.childNoNeedPrice }} /{{$t('v103.scheduledTripDetails.each')}} class="text-grey-7 product-price"
style="font-size: 13px"
>
{{ domain == `id.oytour` ? "IDR" : "CNY" }}
{{ p.originalB2BPrice - p.childNoNeedPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
<q-input <q-input
style="width: 150px" style="width: 150px"
...@@ -126,13 +154,21 @@ ...@@ -126,13 +154,21 @@
<div class="row items-end q-mt-md" v-if="p.isSupportChildren == 1"> <div class="row items-end q-mt-md" v-if="p.isSupportChildren == 1">
<div class="col" :class="{ column: $q.platform.is.mobile }"> <div class="col" :class="{ column: $q.platform.is.mobile }">
<div> <div>
<span class="text-subtitle2 text-weight-bold">{{$t('v103.scheduledTripDetails.et')}}</span> <span class="text-subtitle2 text-weight-bold">{{
<span class="text-grey-6 f12 q-ml-sm">(2-11{{$t('v103.scheduledTripDetails.age')}},{{$t('v103.scheduledTripDetails.room')}})</span> $t("v103.scheduledTripDetails.et")
}}</span>
<span class="text-grey-6 f12 q-ml-sm"
>(2-11{{ $t("v103.scheduledTripDetails.age") }},{{
$t("v103.scheduledTripDetails.room")
}})</span
>
</div> </div>
<div v-if="$q.platform.is.mobile"> <div v-if="$q.platform.is.mobile">
<span class="text-grey-7 product-price" style="font-size: 13px"> <span class="text-grey-7 product-price" style="font-size: 13px">
{{domain==`id.oytour`?'IDR':'CNY'}} {{ domain == `id.oytour` ? "IDR" : "CNY" }}
{{ p.childNeedPrice + p.originalB2BPrice }} /{{$t('v103.scheduledTripDetails.each')}} {{ p.childNeedPrice + p.originalB2BPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
</div> </div>
</div> </div>
...@@ -142,8 +178,10 @@ ...@@ -142,8 +178,10 @@
class="text-grey-7 product-price" class="text-grey-7 product-price"
style="font-size: 13px" style="font-size: 13px"
> >
{{domain==`id.oytour`?'IDR':'CNY'}} {{ domain == `id.oytour` ? "IDR" : "CNY" }}
{{ p.childNeedPrice + p.originalB2BPrice }} /{{$t('v103.scheduledTripDetails.each')}} {{ p.childNeedPrice + p.originalB2BPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
<q-input <q-input
style="width: 150px" style="width: 150px"
...@@ -185,20 +223,37 @@ ...@@ -185,20 +223,37 @@
</div> </div>
<div class="row items-end q-mt-md" v-if="p.isSupportChildren == 1"> <div class="row items-end q-mt-md" v-if="p.isSupportChildren == 1">
<div class="col" :class="{'column':$q.platform.is.mobile}"> <div class="col" :class="{ column: $q.platform.is.mobile }">
<div> <div>
<span class="text-subtitle2 text-weight-bold">{{$t('v103.scheduledTripDetails.ye')}}</span> <span class="text-subtitle2 text-weight-bold">{{
<span class="text-grey-6 f12 q-ml-sm">(2{{$t('v103.scheduledTripDetails.age')}}{{$t('v103.scheduledTripDetails.yixia')}})</span> $t("v103.scheduledTripDetails.ye")
}}</span>
<span class="text-grey-6 f12 q-ml-sm"
>(2{{ $t("v103.scheduledTripDetails.age")
}}{{ $t("v103.scheduledTripDetails.yixia") }})</span
>
</div> </div>
<div v-if="$q.platform.is.mobile"> <div v-if="$q.platform.is.mobile">
<span v-if="$q.platform.is.desktop" class="text-grey-7 product-price" style="font-size: 13px"> <span
{{domain==`id.oytour`?'IDR':'CNY'}} {{ p.babyPrice }} /{{$t('v103.scheduledTripDetails.each')}} v-if="$q.platform.is.desktop"
class="text-grey-7 product-price"
style="font-size: 13px"
>
{{ domain == `id.oytour` ? "IDR" : "CNY" }} {{ p.babyPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
</div> </div>
</div> </div>
<div class="row items-end"> <div class="row items-end">
<span v-if="$q.platform.is.desktop" class="text-grey-7 product-price" style="font-size: 13px"> <span
{{domain==`id.oytour`?'IDR':'CNY'}} {{ p.babyPrice }} /{{$t('v103.scheduledTripDetails.each')}} v-if="$q.platform.is.desktop"
class="text-grey-7 product-price"
style="font-size: 13px"
>
{{ domain == `id.oytour` ? "IDR" : "CNY" }} {{ p.babyPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
<q-input <q-input
style="width: 150px" style="width: 150px"
...@@ -240,29 +295,41 @@ ...@@ -240,29 +295,41 @@
</div> </div>
<div class="text-grey-6 f12 q-mt-mb" v-if="p.isSupportChildren == 2"> <div class="text-grey-6 f12 q-mt-mb" v-if="p.isSupportChildren == 2">
{{$t('v103.scheduledTripDetails.prompt')}} {{ $t("v103.scheduledTripDetails.prompt") }}
</div> </div>
<div <div
v-if="p.singleRoomPrice && p.singleRoomPrice > 0" v-if="p.singleRoomPrice && p.singleRoomPrice > 0"
class="q-pt-md q-mt-md" class="q-pt-md q-mt-md"
style="border-top: 1px dashed #eee" style="border-top: 1px dashed #eee"
> >
<div class="text-grey-6 f12">{{$t('v103.scheduledTripDetails.service')}}</div> <div class="text-grey-6 f12">{{ $t("v103.scheduledTripDetails.service") }}</div>
<div class="row items-end"> <div class="row items-end">
<div class="col" :class="{'column':$q.platform.is.mobile}"> <div class="col" :class="{ column: $q.platform.is.mobile }">
<div> <div>
<span class="text-subtitle2 text-weight-bold">{{$t('v103.scheduledTripDetails.service')}}</span> <span class="text-subtitle2 text-weight-bold">{{
<span class="text-grey-6 f12 q-ml-sm">({{$t('v103.scheduledTripDetails.singleroom')}})</span> $t("v103.scheduledTripDetails.service")
}}</span>
<span class="text-grey-6 f12 q-ml-sm"
>({{ $t("v103.scheduledTripDetails.singleroom") }})</span
>
</div> </div>
<div v-if="$q.platform.is.mobile"> <div v-if="$q.platform.is.mobile">
<span class="text-grey-7 product-price" style="font-size: 13px"> <span class="text-grey-7 product-price" style="font-size: 13px">
{{domain==`id.oytour`?'IDR':'CNY'}} {{ p.singleRoomPrice }} /{{$t('v103.scheduledTripDetails.each')}} {{ domain == `id.oytour` ? "IDR" : "CNY" }} {{ p.singleRoomPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
</div> </div>
</div> </div>
<div class="row items-end"> <div class="row items-end">
<span v-if="$q.platform.is.desktop" class="text-grey-7 product-price" style="font-size: 13px"> <span
{{domain==`id.oytour`?'IDR':'CNY'}} {{ p.singleRoomPrice }} /{{$t('v103.scheduledTripDetails.each')}} v-if="$q.platform.is.desktop"
class="text-grey-7 product-price"
style="font-size: 13px"
>
{{ domain == `id.oytour` ? "IDR" : "CNY" }} {{ p.singleRoomPrice }} /{{
$t("v103.scheduledTripDetails.each")
}}
</span> </span>
<q-input <q-input
style="width: 150px" style="width: 150px"
...@@ -308,85 +375,121 @@ ...@@ -308,85 +375,121 @@
class="q-pt-md q-mt-md row items-center" class="q-pt-md q-mt-md row items-center"
style="border-top: 1px dashed #eee" style="border-top: 1px dashed #eee"
> >
<div class="text-grey-6 f12 col">{{$t('v103.scheduledTripDetails.insurance')}}</div> <div class="text-grey-6 f12 col">
<div class="product-money f12">{{domain==`id.oytour`?'IDR':'CNY'}} {{ p.safeMoney }}/{{$t('v103.scheduledTripDetails.each')}}</div> {{ $t("v103.scheduledTripDetails.insurance") }}
</div>
<div class="product-money f12">
{{ domain == `id.oytour` ? "IDR" : "CNY" }} {{ p.safeMoney }}/{{
$t("v103.scheduledTripDetails.each")
}}
</div>
</div> </div>
</div> </div>
<div class="q-mt-md q-pt-md" style="border-top: 1px dashed #eee"> <div class="q-mt-md q-pt-md" style="border-top: 1px dashed #eee">
<div class="row items-center"> <div class="row items-center">
<span class="text-subtitle2 text-grey-6 col">{{$t('v103.scheduledTripDetails.total')}}</span> <span class="text-subtitle2 text-grey-6 col">{{
<span class="text-h6 text-primary product-price">{{domain==`id.oytour`?'IDR':'CNY'}} {{ sumPrice }}</span> $t("v103.scheduledTripDetails.total")
}}</span>
<span class="text-h6 text-primary product-price"
>{{ domain == `id.oytour` ? "IDR" : "CNY" }} {{ sumPrice }}</span
>
</div> </div>
<div class="q-mt-md text-right"> <div class="q-mt-md text-right">
<span class="q-mr-lg f12 text-negative" v-if="!p.startDate" >{{$q.platform.is.mobile?$t('v103.scheduledTripDetails.selectdatetop'):$t('v103.scheduledTripDetails.selectdateleft')}} </span> <span class="q-mr-lg f12 text-negative" v-if="!p.startDate"
<q-btn color="primary" :label="$t('v103.scheduledTripDetails.book')" unelevated class="q-px-lg" :disable="sumPrice==0" @click="goOrderHandler"/> >{{
$q.platform.is.mobile
? $t("v103.scheduledTripDetails.selectdatetop")
: $t("v103.scheduledTripDetails.selectdateleft")
}}
</span>
<q-btn
color="primary"
:label="$t('v103.scheduledTripDetails.book')"
unelevated
class="q-px-lg"
:disable="sumPrice == 0"
@click="goOrderHandler"
/>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { date,useQuasar } from "quasar"; import { date, useQuasar } from "quasar";
import { inject, provide, reactive, toRefs, defineComponent,onMounted,ref,watch, getCurrentInstance } from 'vue'; import {
import { useRouter } from 'vue-router' inject,
import { useI18n } from 'vue-i18n' provide,
import { DirtionmaryHelper } from 'src/config/dictionary' reactive,
import scheduledTripService from 'src/api/scheduledTrip' toRefs,
import { ApiResult } from 'src/@types/enumHelper' defineComponent,
import message from 'src/utils/message' onMounted,
import { moneyFormat } from 'src/utils/tools' ref,
watch,
getCurrentInstance,
} from "vue";
import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
import { DirtionmaryHelper } from "src/config/dictionary";
import scheduledTripService from "src/api/scheduledTrip";
import { ApiResult } from "src/@types/enumHelper";
import message from "src/utils/message";
import { moneyFormat } from "src/utils/tools";
import md5 from "md5-ts"; import md5 from "md5-ts";
export default defineComponent({ export default defineComponent({
components: { }, components: {},
props: ['msg','price'], props: ["msg", "price"],
setup(props, context) { setup(props, context) {
const domain =inject(DirtionmaryHelper.DOMAIN_NAME) const domain = inject(DirtionmaryHelper.DOMAIN_NAME);
const $router = useRouter() const $router = useRouter();
const { t } = useI18n() const { t } = useI18n();
const $q = useQuasar() const $q = useQuasar();
const qDateProxy = ref(null) as any const qDateProxy = ref(null) as any;
let {ctx:that, proxy} = getCurrentInstance() let { ctx: that, proxy } = getCurrentInstance();
const data= reactive({ const data = reactive({
p: props.price, p: props.price,
chosenObj: null, chosenObj: null,
sumPrice:0 sumPrice: 0,
}) });
watch(() => props.price,(n,o) => { watch(
() => props.price,
(n, o) => {
data.p = n; data.p = n;
data.chosenObj.startDate = n.startDate; data.chosenObj.startDate = n.startDate;
methods.calcMoney() methods.calcMoney();
},{deep: true} },
) { deep: true }
);
const methods = { const methods = {
goOrderHandler(){ goOrderHandler() {
let order = { let order = {
configId: props.msg.configId, configId: props.msg.configId,
tcid: data.p.tcid, tcid: data.p.tcid,
startCityId: 0, startCityId: 0,
orderInfo: data.chosenObj orderInfo: data.chosenObj,
} };
let key = md5(JSON.stringify(order)) let key = md5(JSON.stringify(order));
let lineTrip = localStorage.getItem('lineTrip') let lineTrip = localStorage.getItem("lineTrip");
lineTrip = lineTrip?JSON.parse(lineTrip):[] lineTrip = lineTrip ? JSON.parse(lineTrip) : [];
lineTrip.push({ lineTrip.push({
key, key,
order order,
}) });
localStorage.setItem("lineTrip",JSON.stringify(lineTrip)) localStorage.setItem("lineTrip", JSON.stringify(lineTrip));
$router.push({ path:`/scheduledTrip/preview/${key}`}) $router.push({ path: `/scheduledTrip/preview/${key}` });
}, },
initModel() { initModel() {
data.sumPrice=0 data.sumPrice = 0;
data.chosenObj = { data.chosenObj = {
startDate: "", startDate: "",
crCount: 1, crCount: 1, //成人
etCount: 0, etCount: 0, //儿童
yeCount: 0, yeCount: 0, //婴儿
lrCount: 0, lrCount: 0, //老人
etzcCount: 0, etzcCount: 0, //儿童占床
etbzcCount: 0, etbzcCount: 0, //儿童不占床
etzc: 0, etzc: 0,
df: 0, df: 0, //单房数量
dcf: 0, dcf: 0,
srf: 0, srf: 0,
isUnico: false, isUnico: false,
...@@ -407,7 +510,7 @@ export default defineComponent({ ...@@ -407,7 +510,7 @@ export default defineComponent({
}, },
resetHandler() { resetHandler() {
data.p = {}; data.p = {};
methods.initModel() methods.initModel();
context.emit("reset"); context.emit("reset");
}, },
changePeople(val) {}, changePeople(val) {},
...@@ -419,55 +522,66 @@ export default defineComponent({ ...@@ -419,55 +522,66 @@ export default defineComponent({
data.chosenObj[m] = data.chosenObj[m] < 1 ? 1 : data.chosenObj[m]; data.chosenObj[m] = data.chosenObj[m] < 1 ? 1 : data.chosenObj[m];
} }
if (!isDf) { if (!isDf) {
if ( if (data.chosenObj.crCount + data.chosenObj.etzcCount > data.p.remainNum) {
data.chosenObj.crCount + data.chosenObj.etzcCount >
data.p.remainNum
) {
data.chosenObj[m] = data.chosenObj[m] - 1; data.chosenObj[m] = data.chosenObj[m] - 1;
} }
} else { } else {
if ( if (data.chosenObj.crCount + data.chosenObj.etzcCount < data.chosenObj.df) {
data.chosenObj.crCount + data.chosenObj.etzcCount <
data.chosenObj.df
) {
data.chosenObj[m] = data.chosenObj[m] - 1; data.chosenObj[m] = data.chosenObj[m] - 1;
} }
} }
methods.calcMoney() methods.calcMoney();
}, },
calcMoney() { calcMoney() {
if (!data.p || !data.p.originalB2BPrice) return data.sumPrice=0; if (!data.p || !data.p.originalB2BPrice) return (data.sumPrice = 0);
data.chosenObj.etCount = data.chosenObj.etbzcCount + data.chosenObj.etzcCount data.chosenObj.etCount = data.chosenObj.etbzcCount + data.chosenObj.etzcCount;
let money = //成人价格=成人人数*(成交单价-早鸟优惠)
data.p.originalB2BPrice * data.chosenObj.crCount; let crMoney = data.p.originalB2BPrice * data.chosenObj.crCount;
money += //儿童价格=儿童人数*(单价-早鸟优惠+儿童附加费)
(data.p.originalB2BPrice-data.p.childNoNeedPrice+data.p.babyChargePrice) * data.chosenObj.etCount; let erMoney =
money += data.p.babyPrice * data.chosenObj.yeCount; (data.p.originalB2BPrice - data.p.childNoNeedPrice + data.p.babyChargePrice) *
money += data.p.singleRoomPrice * data.chosenObj.df; data.chosenObj.etCount;
//婴儿价格=婴儿人数*婴儿价格
let babyMoney = data.p.babyPrice * data.chosenObj.yeCount;
let singMoney = data.p.singleRoomPrice * data.chosenObj.df;
let sumCount = let sumCount =
data.chosenObj.crCount + data.chosenObj.crCount +
data.chosenObj.etCount + data.chosenObj.etCount +
data.chosenObj.lrCount; data.chosenObj.lrCount +
money += data.p.visaPrice * sumCount; data.chosenObj.yeCount;
money += data.p.otherPrice * sumCount; let visaMoney = data.p.visaPrice * sumCount;
let otherMoney = data.p.otherPrice * sumCount;
// console.log("sumCount", sumCount);
// console.log("crMoney", crMoney);
// console.log("erMoney", erMoney);
// console.log("babyMoney", babyMoney);
// console.log("singMoney", singMoney);
// console.log("visaMoney", visaMoney);
// console.log("otherMoney", otherMoney);
let money = crMoney;
money += erMoney;
money += babyMoney;
money += singMoney;
money += visaMoney;
money += otherMoney;
//console.log("money", money);
data.sumPrice = money; data.sumPrice = money;
}, },
};
}
methods.initModel(); methods.initModel();
if(data.p.startDate){ if (data.p.startDate) {
data.chosenObj.startDate = data.p.startDate; data.chosenObj.startDate = data.p.startDate;
methods.calcMoney() methods.calcMoney();
} }
return { return {
...toRefs(data), ...toRefs(data),
...methods, ...methods,
domain, domain,
moneyFormat, moneyFormat,
} };
} },
}) });
</script> </script>
<style></style> <style></style>
...@@ -277,7 +277,7 @@ ...@@ -277,7 +277,7 @@
</div> </div>
</div> </div>
<div v-if="price.visaPrice > 0 || price.otherPrice > 0"> <div v-if="price.visaPrice > 0 || price.otherPrice > 0">
<hr <!-- <hr
style="border: none; border-top: 1px dashed #eee !important" style="border: none; border-top: 1px dashed #eee !important"
class="bg-transparent q-mb-sm" class="bg-transparent q-mb-sm"
/> />
...@@ -297,7 +297,7 @@ ...@@ -297,7 +297,7 @@
) )
}} }}
</div> </div>
</div> </div> -->
<div class="row q-mb-sm" v-if="price.otherPrice > 0"> <div class="row q-mb-sm" v-if="price.otherPrice > 0">
<div class="col"> <div class="col">
{{ $t("v103.scheduledTripDetails.miscellaneous") }} x {{ $t("v103.scheduledTripDetails.miscellaneous") }} x
...@@ -322,7 +322,8 @@ ...@@ -322,7 +322,8 @@
{{ $t("v103.scheduledTripDetails.surcharge") }} x {{ chosenObj.etCount }} {{ $t("v103.scheduledTripDetails.surcharge") }} x {{ chosenObj.etCount }}
</div> </div>
<div> <div>
{{ domain == `id.oytour` ? "IDR" : "CNY" }} {{ price.babyChargePrice }} {{ domain == `id.oytour` ? "IDR" : "CNY" }}
{{ price.babyChargePrice * chosenObj.etCount }}
</div> </div>
</div> </div>
<div class="row q-mb-sm" v-if="chosenObj.df > 0"> <div class="row q-mb-sm" v-if="chosenObj.df > 0">
...@@ -550,15 +551,19 @@ export default defineComponent({ ...@@ -550,15 +551,19 @@ export default defineComponent({
data.price.discountPrice = data.price.discountPrice data.price.discountPrice = data.price.discountPrice
? data.price.discountPrice ? data.price.discountPrice
: 0; : 0;
//成人价格 //成人价格=成人人数*(成交单价-早鸟优惠)
let crMoney = data.price.originalB2BPrice * data.chosenObj.crCount; let crMoney = data.price.originalB2BPrice * data.chosenObj.crCount;
//儿童不占床价格 //儿童不占床价格
let etbzcMoney = let etbzcMoney =
(data.price.originalB2BPrice - data.price.childNoNeedPrice) * (data.price.originalB2BPrice -
data.price.childNoNeedPrice +
data.price.babyChargePrice) *
data.chosenObj.etbzcCount; data.chosenObj.etbzcCount;
//儿童占床价格 //儿童占床价格
let etzcMoney = let etzcMoney =
(data.price.originalB2BPrice + data.price.childNeedPrice) * (data.price.originalB2BPrice +
data.price.childNeedPrice +
data.price.babyChargePrice) *
data.chosenObj.etzcCount; data.chosenObj.etzcCount;
//婴儿价格 //婴儿价格
let babyMoney = data.price.babyPrice * data.chosenObj.yeCount; let babyMoney = data.price.babyPrice * data.chosenObj.yeCount;
...@@ -569,8 +574,9 @@ export default defineComponent({ ...@@ -569,8 +574,9 @@ export default defineComponent({
data.chosenObj.etbzcCount + data.chosenObj.etbzcCount +
data.chosenObj.etzcCount + data.chosenObj.etzcCount +
data.chosenObj.yeCount; data.chosenObj.yeCount;
//签证费 //签证费(团费包含了签证费)
let visaMoney = data.price.visaPrice * sumCount; let visaMoney = 0;
//visaMoney=data.price.visaPrice * sumCount;
let safeMoney = data.price.safeMoney * sumCount; let safeMoney = data.price.safeMoney * sumCount;
let otherMoney = data.price.otherPrice * sumCount; let otherMoney = data.price.otherPrice * sumCount;
// console.log("totalPersion", sumCount); // console.log("totalPersion", sumCount);
...@@ -678,7 +684,7 @@ export default defineComponent({ ...@@ -678,7 +684,7 @@ export default defineComponent({
PreferPrice: data.sumPrice, //实付价格 PreferPrice: data.sumPrice, //实付价格
DiscountMoney: 0, //优惠价格 DiscountMoney: 0, //优惠价格
CouponAllotIds: "", //优惠券id CouponAllotIds: "", //优惠券id
YSeatNum: y, //盈收 YSeatNum: y, //
ESeatNum: f, ESeatNum: f,
FSeatNum: c, FSeatNum: c,
Commission: ( Commission: (
......
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