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"
class="rounded-borders bg-white row items-center q-ma-sm q-py-md q-mb-md q-px-md"
>
<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"
/>
<div class="col"></div> <div class="col"></div>
<q-btn unelevated class="bg-grey-3 hover q-mr-md" :title="$t('morequery')"> <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-badge
v-if="searchCnt > 0" /> rounded
<svg-icon color="dark" icon="Text/Filter.svg" :tips="$t('morequery')" :size="20"></svg-icon> class="din bg-red-2 text-red-14 text-weight-bold"
<q-tooltip>{{ $t('morequery') }}</q-tooltip> floating
<q-popup-proxy class="no-shadow" style="box-shadow: 0 0 50px #ddd !important" :offset="[0, 20]" :label="searchCnt"
:model-value="canHide"> v-if="searchCnt > 0"
/>
<svg-icon
color="dark"
icon="Text/Filter.svg"
:tips="$t('morequery')"
:size="20"
></svg-icon>
<q-tooltip>{{ $t("morequery") }}</q-tooltip>
<q-popup-proxy
class="no-shadow"
style="box-shadow: 0 0 50px #ddd !important"
:offset="[0, 20]"
:model-value="canHide"
>
<q-card class="q-pa-md rounded-borders" style="width: 300px"> <q-card class="q-pa-md rounded-borders" style="width: 300px">
<div class="q-mb-md text-subtitle2">{{ $t('morequery') }}</div> <div class="q-mb-md text-subtitle2">{{ $t("morequery") }}</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.companylocation')}}</span> <span>{{ $t("v103.scheduledTrip.companylocation") }}</span>
<template v-for="(x, i) in chosenAddress"> <template v-for="(x, i) in chosenAddress">
<span class="text-primary" v-if="i==0">{{x.Name}}</span> <span class="text-primary" v-if="i == 0">{{ x.Name }}</span>
</template> </template>
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy0"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy0">
<div class="bg-white q-pb-lg" style="width: 300px;"> <div class="bg-white q-pb-lg" style="width: 300px">
<div class="q-px-lg q-py-md fz18">{{$t('v103.scheduledTrip.companylocation')}}</div> <div class="q-px-lg q-py-md fz18">
{{ $t("v103.scheduledTrip.companylocation") }}
</div>
<div v-for="(x, i) in sites" :key="i"> <div v-for="(x, i) in sites" :key="i">
<div class="addr"> <div class="addr">
<div <div class="q-mx-md">
class="q-mx-md"
>
<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"
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>
...@@ -41,54 +74,86 @@ ...@@ -41,54 +74,86 @@
</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.line')}}</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==1"> <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,1)"/> <q-icon
class="cursor-pointer text-grey-6"
name="close"
@click.stop="removeChosen(x, i, 1)"
/>
</span> </span>
</template> </template>
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy1"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy1">
<div class="bg-white q-pb-lg" style="width: 300px;"> <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="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="add" v-for="(x, i) in lines" :key="i">
<div class="q-mx-md"> <div class="q-mx-md">
<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>
</q-popup-proxy> </q-popup-proxy>
</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"> <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"> <div class="q-px-sm q-py-xs row justify-between">
<span class="text-grey-8 col-12 row justify-between"> <span class="text-grey-8 col-12 row justify-between">
<span>{{$t('v103.scheduledTrip.commlineteam')}}</span> <span>{{ $t("v103.scheduledTrip.commlineteam") }}</span>
<span v-if="!searchClone.lineTeamId">{{$t('v103.scheduledTrip.closelineteam')}}</span> <span v-if="!searchClone.lineTeamId">{{
$t("v103.scheduledTrip.closelineteam")
}}</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 == 2">
{{x.Name}} {{ x.Name }}
<q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,2)"/> <q-icon
class="cursor-pointer text-grey-6"
name="close"
@click.stop="removeChosen(x, i, 2)"
/>
</span> </span>
</template> </template>
</span> </span>
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy2"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy2">
<div class="bg-white q-pb-lg" style="width: 300px;"> <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 class="q-px-lg q-py-md fz18">
{{ $t("v103.scheduledTrip.lineteam") }}
</div>
<div class="add" v-for="(x, i) in xilies" :key="i"> <div class="add" v-for="(x, i) in xilies" :key="i">
<div class="q-mx-md"> <div class="q-mx-md">
<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="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)"/> 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)"
/>
</template> </template>
</div> </div>
</div> </div>
...@@ -98,27 +163,42 @@ ...@@ -98,27 +163,42 @@
<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 class="text-grey-8 col-12 row justify-between"> <span class="text-grey-8 col-12 row justify-between">
<span>{{$t('v103.scheduledTrip.departurecity')}}</span> <span>{{ $t("v103.scheduledTrip.departurecity") }}</span>
<span v-if="!searchClone.startCityId">{{$t('v103.scheduledTrip.closedeparturecity')}}</span> <span v-if="!searchClone.startCityId">{{
$t("v103.scheduledTrip.closedeparturecity")
}}</span>
<template v-for="(x, i) in chosenAddress"> <template v-for="(x, i) in chosenAddress">
<span class="text-primary" v-if="x.type==3"> <span class="text-primary" v-if="x.type == 3">
{{x.Name}} {{ x.Name }}
<q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,3)"/> <q-icon
class="cursor-pointer text-grey-6"
name="close"
@click.stop="removeChosen(x, i, 3)"
/>
</span> </span>
</template> </template>
</span> </span>
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy3"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy3">
<div class="bg-white q-pb-lg" style="width: 300px;"> <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 class="q-px-lg q-py-md fz18">
{{ $t("v103.scheduledTrip.departurecity") }}
</div>
<div class="add" v-for="(x, i) in startCitys" :key="i"> <div class="add" v-for="(x, i) in startCitys" :key="i">
<div class="q-mx-md"> <div class="q-mx-md">
<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="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)"/> 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)"
/>
</template> </template>
</div> </div>
</div> </div>
...@@ -126,30 +206,51 @@ ...@@ -126,30 +206,51 @@
</q-popup-proxy> </q-popup-proxy>
</div> </div>
<div> <div>
<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
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 class="q-px-sm q-py-xs row justify-between"> <div class="q-px-sm q-py-xs row justify-between">
<span class="text-grey-8 col-12 row justify-between"> <span class="text-grey-8 col-12 row justify-between">
<span>{{$t('v103.scheduledTrip.startdate')}}</span> <span>{{ $t("v103.scheduledTrip.startdate") }}</span>
<span v-if="!datesId">{{$t('v103.scheduledTrip.closestartdate')}}</span> <span v-if="!datesId">{{
$t("v103.scheduledTrip.closestartdate")
}}</span>
<template v-for="(x, i) in chosenAddress"> <template v-for="(x, i) in chosenAddress">
<span class="text-primary" v-if="x.type==5"> <span class="text-primary" v-if="x.type == 5">
{{x.Name}} {{ x.Name }}
<q-icon class="cursor-pointer text-grey-6" name="close" @click.stop="removeChosen(x,i,5)"/> <q-icon
class="cursor-pointer text-grey-6"
name="close"
@click.stop="removeChosen(x, i, 5)"
/>
</span> </span>
</template> </template>
</span> </span>
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy5"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy5">
<div class="bg-white q-pb-lg" style="width: 300px;"> <div class="bg-white q-pb-lg" style="width: 300px">
<div class="q-px-lg q-py-md fz18">{{$t('v103.scheduledTrip.startdate')}}</div> <div class="q-px-lg q-py-md fz18">
{{ $t("v103.scheduledTrip.startdate") }}
</div>
<div class="add" v-for="(x, i) in dates" :key="i"> <div class="add" v-for="(x, i) in dates" :key="i">
<div class="q-mx-md"> <div class="q-mx-md">
<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" v-if="y.isShow"
@update:model-value="changeCheckHandler(y, x,5)"/> 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>
...@@ -157,7 +258,13 @@ ...@@ -157,7 +258,13 @@
</q-popup-proxy> </q-popup-proxy>
</div> </div>
<!-- v-if="(!search.msg.startDate&&!search.msg.endDate)||(search.msg.startDate&&search.msg.endDate)" --> <!-- 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-my-md row no-padding bg-grey-3"
v-if="
(!searchClone.startDate && !searchClone.endDate) ||
(searchClone.startDate && searchClone.endDate)
"
>
<div <div
class="q-px-md q-py-sm" class="q-px-md q-py-sm"
style="border-right: 1px solid #eee; border-radius: 0 !important" style="border-right: 1px solid #eee; border-radius: 0 !important"
...@@ -165,14 +272,19 @@ ...@@ -165,14 +272,19 @@
<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")
}} }}
<template v-for="(x, i) in chosenAddress"> <template v-for="(x, i) in chosenAddress">
<template v-if="x.type==6"> <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)"/> <q-icon
class="cursor-pointer text-grey-6 q-pl-lg"
name="close"
@click.stop="removeChosen(x, i, 6)"
/>
</template> </template>
</template> </template>
</span> </span>
...@@ -210,36 +322,51 @@ ...@@ -210,36 +322,51 @@
</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
class="cursor-pointer text-grey-6"
name="close"
@click.stop="removeChosen(x, i, 4)"
/>
</span> </span>
</template> </template>
</div> </div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy4"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy4">
<div class="bg-white q-pb-lg" style="width: 300px;"> <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="q-px-lg q-py-md fz18">
<div {{ $t("v103.scheduledTrip.journeytime") }}
class="addr-list q-px-md q-py-sm row items-center"> </div>
<q-radio class="addr-list q-px-md q-py-sm row items-center" <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" 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)"/> :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>
</div> </div>
</q-popup-proxy> </q-popup-proxy>
</div> </div>
</q-card> </q-card>
</q-popup-proxy> </q-popup-proxy>
</q-btn> </q-btn>
<q-btn color="primary" unelevated :label="$t('query')" @click="queryList"/> <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"
...@@ -278,20 +408,30 @@ ...@@ -278,20 +408,30 @@
<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"
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> --> <!-- <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'"
...@@ -309,21 +449,30 @@ ...@@ -309,21 +449,30 @@
<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
class="addr-list q-px-md q-py-sm row items-center"
:key="yi" :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)"/> 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>
...@@ -421,7 +607,7 @@ ...@@ -421,7 +607,7 @@
<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>
...@@ -459,291 +645,320 @@ ...@@ -459,291 +645,320 @@
: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
class="addr-list q-px-md q-py-sm row items-center"
v-for="(y, yi) in dayArray" 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)"/> :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-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";
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";
import { getStoreGetter } from "../../store/utils";
import { UserGetter } from "../../store/modules/user/getters";
export default defineComponent({
components: { svgIcon, NCascader, NSelect }, components: { svgIcon, NCascader, NSelect },
setup(props, context) { setup(props, context) {
const $q = useQuasar() const $q = useQuasar();
const qDateProxy = ref(null) as any const qDateProxy = ref(null) as any;
const qDateProxy0 = ref(null) as any const qDateProxy0 = ref(null) as any;
const qDateProxy1 = ref(null) as any const qDateProxy1 = ref(null) as any;
const qDateProxy2 = ref(null) as any const qDateProxy2 = ref(null) as any;
const qDateProxy3 = ref(null) as any const qDateProxy3 = ref(null) as any;
const qDateProxy4 = ref(null) as any const qDateProxy4 = ref(null) as any;
const qDateProxy5 = ref(null) as any const qDateProxy5 = ref(null) as any;
const qDateProxy6 = ref(null) as any const qDateProxy6 = ref(null) as any;
const qNameProxy = ref(null) as any const qNameProxy = ref(null) as any;
const { locale, t } = useI18n() const { locale, t } = useI18n();
const data = reactive({ const data = reactive({
datesId: 0,//日期 datesId: 0, //日期
DayId:0,//旅程天数 DayId: 0, //旅程天数
xilies: [],//系列 xilies: [], //系列
lines: [],//线路 lines: [], //线路
startCitys: [],//出发城市表 startCitys: [], //出发城市表
searchItem: [], searchItem: [],
sites: [],//公司所在城市 sites: [], //公司所在城市
city: 0,//公司城市 city: 0, //公司城市
companyId:0, companyId: 0,
dates: [],//开始日期 dates: [], //开始日期
areaList: [], areaList: [],
chosenAddress: [],//已选项 chosenAddress: [], //已选项
goodsType: [], goodsType: [],
dateRange: null,//起止时间 dateRange: null, //起止时间
searchClone: null, searchClone: null,
dayArray: [ dayArray: [
{ {
id: 1, id: 1,
min: 1, min: 1,
max: 1, max: 1,
text: "1"+t('v103.scheduledTrip.day'), text: "1" + t("v103.scheduledTrip.day"),
}, },
{ {
id: 2, id: 2,
min: 2, min: 2,
max: 2, max: 2,
text: "2"+t('v103.scheduledTrip.day'), text: "2" + t("v103.scheduledTrip.day"),
}, },
{ {
id: 3, id: 3,
min: 3, min: 3,
max: 3, max: 3,
text: "3"+t('v103.scheduledTrip.day'), text: "3" + t("v103.scheduledTrip.day"),
}, },
{ {
id: 4, id: 4,
min: 4, min: 4,
max: 4, max: 4,
text: "4"+t('v103.scheduledTrip.day'), text: "4" + t("v103.scheduledTrip.day"),
}, },
{ {
id: 5, id: 5,
min: 5, min: 5,
max: 5, max: 5,
text: "5"+t('v103.scheduledTrip.day'), text: "5" + t("v103.scheduledTrip.day"),
}, },
{ {
id: 6, id: 6,
min: 6, min: 6,
max: 6, max: 6,
text: "6"+t('v103.scheduledTrip.day'), text: "6" + t("v103.scheduledTrip.day"),
}, },
{ {
id: 7, id: 7,
min: 7, min: 7,
max: 8, max: 8,
text: "7-8"+t('v103.scheduledTrip.day'), text: "7-8" + t("v103.scheduledTrip.day"),
}, },
{ {
id: 8, id: 8,
min: 9, min: 9,
max: 10, max: 10,
text: "9-10"+t('v103.scheduledTrip.day'), text: "9-10" + t("v103.scheduledTrip.day"),
}, },
{ {
id: 9, id: 9,
min: 10, min: 10,
max: 1000, max: 1000,
text: "10"+t('v103.scheduledTrip.above'), text: "10" + t("v103.scheduledTrip.above"),
}, },
], ],
sortNum: 1, sortNum: 1,
userInfo: {} as any, userInfo: {} as any,
}) });
const search = inject(DirtionmaryHelper.TICKET_QUERY_PARAM) const search = inject(DirtionmaryHelper.TICKET_QUERY_PARAM);
const domain =inject(DirtionmaryHelper.DOMAIN_NAME) const domain = inject(DirtionmaryHelper.DOMAIN_NAME);
data.chosenAddress = JSON.parse(JSON.stringify(search.chosenAddress)) data.chosenAddress = JSON.parse(JSON.stringify(search.chosenAddress));
data.searchClone = JSON.parse(JSON.stringify(search.msg)) data.searchClone = JSON.parse(JSON.stringify(search.msg));
data.DayId = search.DayId data.DayId = search.DayId;
data.datesId = search.datesId data.datesId = search.datesId;
data.dayArray.forEach((x) => { data.dayArray.forEach((x) => {
x.checked = false; x.checked = false;
}); });
data.dateRange = { from: data.searchClone.startDate, to: data.searchClone.endDate }; data.dateRange = { from: data.searchClone.startDate, to: data.searchClone.endDate };
data.userInfo = getStoreGetter<UserGetter>('user', 'getUser') data.userInfo = getStoreGetter<UserGetter>("user", "getUser");
const methods = { const methods = {
// 删除目的地、商品类别、旅游时间 // 删除目的地、商品类别、旅游时间
removeChosen(x,i,type) { removeChosen(x, i, type) {
if(type==1||type==2){ if (type == 1 || type == 2) {
if(type==1){ if (type == 1) {
search.msg.lineId = 0 search.msg.lineId = 0;
}if(type==2){ }
search.msg.lineTeamId = 0 if (type == 2) {
search.msg.lineTeamId = 0;
} }
}else if(type==3){ } else if (type == 3) {
search.msg.startCityId = 0 search.msg.startCityId = 0;
}else if(type==4){ } else if (type == 4) {
search.DayId = 0 search.DayId = 0;
search.msg.minTripDay = "" search.msg.minTripDay = "";
search.msg.maxTripDay = "" search.msg.maxTripDay = "";
}else if(type==5){ } else if (type == 5) {
search.datesId = 0 search.datesId = 0;
search.msg.startDate = '' search.msg.startDate = "";
search.msg.endDate = '' search.msg.endDate = "";
}else if(type==6){ } else if (type == 6) {
data.dateRange = null data.dateRange = null;
search.datesId = 0 search.datesId = 0;
search.msg.startDate = '' search.msg.startDate = "";
search.msg.endDate = '' search.msg.endDate = "";
} }
search.chosenAddress.splice(i,1) search.chosenAddress.splice(i, 1);
}, },
// 初始化出发城市 // 初始化出发城市
initCityList() { initCityList() {
methods.GetB2BSite() methods.GetB2BSite();
let d=new Date().getMonth() let d = new Date().getMonth();
for(let i=0;i<3;i++){ for (let i = 0; i < 3; i++) {
d++ d++;
d=d>12?d-12:d d = d > 12 ? d - 12 : d;
let obj = { let obj = {
Name: `${d}${t('v103.scheduledTrip.month')}`, Name: `${d}${t("v103.scheduledTrip.month")}`,
id: 1+i, id: 1 + i,
MM: d MM: d,
} };
data.dates.push(obj) data.dates.push(obj);
}
let arrList = function(arr){
arr.forEach(item=>{
item.isShow = true
item.explsed = false
})
} }
arrList(data.dates) let arrList = function (arr) {
let list = [] arr.forEach((item) => {
list.push({SubList: [],explsed: false,isShow:true}) item.isShow = true;
list[0].SubList = data.dates item.explsed = false;
});
};
arrList(data.dates);
let list = [];
list.push({ SubList: [], explsed: false, isShow: true });
list[0].SubList = data.dates;
data.dates = list; data.dates = list;
}, },
// 获取当前城市 // 获取当前城市
GetB2BSite(){ GetB2BSite() {
let state=false; let state = false;
scheduledTripService.GetB2BSite({}).then(r => { 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(){ loadRecoItems() {
let param = { let param = {
companyId: data.city, companyId: data.city,
cityId: data.searchClone.cityId, cityId: data.searchClone.cityId,
} };
scheduledTripService.GetB2BGroupSearchItem(param).then(r => { 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) { changeExplesdHandler(x) {
...@@ -761,171 +976,173 @@ ...@@ -761,171 +976,173 @@
} }
}, },
// 出发地 // 出发地
changeCheckHandler(x, p = null,type) { changeCheckHandler(x, p = null, type) {
if(!type){ if (!type) {
// data.city = x.companyId; search.msg.companyId = x.companyId;
// search.msg.cityId = data.searchClone.cityId methods.loadRecoItems();
search.msg.companyId = x.companyId } else if (type == 1) {
methods.loadRecoItems() let arrList = function (arr) {
}else if(type==1){ arr.forEach((item) => {
let arrList = function(arr){ item.isShow = true;
arr.forEach(item=>{ item.explsed = false;
item.isShow = true });
item.explsed = false };
}) arrList(x.lineTeam);
} let list = [];
arrList(x.lineTeam) list.push({ SubList: [], explsed: false, isShow: true });
let list = [] list[0].SubList = x.lineTeam;
list.push({SubList: [],explsed: false,isShow:true}) data.xilies = list;
list[0].SubList = x.lineTeam search.msg.lineId = x.id;
data.xilies = list
search.msg.lineId = x.id
} }
setTimeout(()=>{ setTimeout(() => {
methods.changeChosenHandler(x,p,type); methods.changeChosenHandler(x, p, type);
},200) }, 200);
}, },
changeChosenHandler(x,p,type) { changeChosenHandler(x, p, type) {
let obj= {} let obj = {};
if(!type){ if (!type) {
obj= { obj = {
Name: x.siteName, Name: x.siteName,
Id: x.cityId, Id: x.cityId,
checked: x.checked, checked: x.checked,
cityId : x.cityId, cityId: x.cityId,
companyId: x.companyId, companyId: x.companyId,
companyName: x.companyName, companyName: x.companyName,
explsed: x.explsed, explsed: x.explsed,
isShow: x.isShow, isShow: x.isShow,
province: x.province, province: x.province,
siteName: x.siteName, siteName: x.siteName,
type: type type: type,
} };
search.chosenAddress.splice(0,1); search.chosenAddress.splice(0, 1);
if($q.platform.is.mobile){ if ($q.platform.is.mobile) {
if(qDateProxy0.value) qDateProxy0.value.hide() if (qDateProxy0.value) qDateProxy0.value.hide();
} }
setTimeout(()=>{ setTimeout(() => {
search.chosenAddress.unshift(obj); search.chosenAddress.unshift(obj);
},200) }, 200);
}else if(type==1||type==2){ } else if (type == 1 || type == 2) {
obj= { obj = {
Name: x.name, Name: x.name,
Id: x.id, Id: x.id,
type: type type: type,
} };
// let status = false // let status = false
p.SubList.forEach(y=>{ p.SubList.forEach((y) => {
search.chosenAddress.forEach((z,index)=>{ search.chosenAddress.forEach((z, index) => {
if(y.id==z.Id&&type==z.type){ if (y.id == z.Id && type == z.type) {
// status = true // status = true
search.chosenAddress.splice(index,1); search.chosenAddress.splice(index, 1);
} }
}) });
}) });
if(type==1){ if (type == 1) {
search.msg.lineId = x.id search.msg.lineId = x.id;
}if(type==2){
search.msg.lineTeamId = x.id
} }
if($q.platform.is.mobile){ if (type == 2) {
if(type==1&&qDateProxy1.value) qDateProxy1.value.hide() search.msg.lineTeamId = x.id;
if(type==2&&qDateProxy2.value) qDateProxy2.value.hide()
} }
setTimeout(()=>{ 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); search.chosenAddress.push(obj);
},200) }, 200);
}else if(type==3){ } else if (type == 3) {
obj= { obj = {
Name: x.startCityName, Name: x.startCityName,
Id: x.id, Id: x.id,
type: type type: type,
} };
p.SubList.forEach(y=>{ p.SubList.forEach((y) => {
search.chosenAddress.forEach((z,index)=>{ search.chosenAddress.forEach((z, index) => {
if(y.id==z.Id&&type==z.type){ if (y.id == z.Id && type == z.type) {
search.chosenAddress.splice(index,1); search.chosenAddress.splice(index, 1);
} }
}) });
}) });
search.msg.startCityId = x.id search.msg.startCityId = x.id;
if($q.platform.is.mobile){ if ($q.platform.is.mobile) {
if(qDateProxy3.value) qDateProxy3.value.hide() if (qDateProxy3.value) qDateProxy3.value.hide();
} }
setTimeout(()=>{ setTimeout(() => {
search.chosenAddress.push(obj); search.chosenAddress.push(obj);
},500) }, 500);
}else if(type==4){ } else if (type == 4) {
obj= { obj = {
Name: x.text, Name: x.text,
Id: x.id, Id: x.id,
min: x.min, min: x.min,
max: x.max, max: x.max,
type: type type: type,
} };
p.forEach(y=>{ p.forEach((y) => {
search.chosenAddress.forEach((z,index)=>{ search.chosenAddress.forEach((z, index) => {
if(y.id==z.Id&&type==z.type){ if (y.id == z.Id && type == z.type) {
search.chosenAddress.splice(index,1); search.chosenAddress.splice(index, 1);
} }
}) });
}) });
search.DayId = data.DayId search.DayId = data.DayId;
search.msg.minTripDay = x.min search.msg.minTripDay = x.min;
search.msg.maxTripDay = x.max search.msg.maxTripDay = x.max;
if($q.platform.is.mobile){ if ($q.platform.is.mobile) {
if(qDateProxy4.value) qDateProxy4.value.hide() if (qDateProxy4.value) qDateProxy4.value.hide();
} }
setTimeout(()=>{ setTimeout(() => {
search.chosenAddress.push(obj); search.chosenAddress.push(obj);
methods.changeTripDayHandler() methods.changeTripDayHandler();
},200) }, 200);
}else if(type==5){ } else if (type == 5) {
obj= { obj = {
Name: x.Name, Name: x.Name,
Id: x.id, Id: x.id,
type: type, type: type,
min: new Date().getFullYear()+'/'+x.MM+'/01', min: new Date().getFullYear() + "/" + x.MM + "/01",
max: new Date().getFullYear()+'/'+x.MM+'/'+new Date(new Date().getFullYear(), x.MM, 0).getDate(), max:
} new Date().getFullYear() +
p.SubList.forEach(y=>{ "/" +
search.chosenAddress.forEach((z,index)=>{ x.MM +
if(y.id==z.Id&&type==z.type){ "/" +
search.chosenAddress.splice(index,1); 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 ($q.platform.is.mobile) {
if(qDateProxy5.value) qDateProxy5.value.hide() if (qDateProxy5.value) qDateProxy5.value.hide();
} }
search.datesId = x.id search.datesId = x.id;
search.msg.startDate = obj.min search.msg.startDate = obj.min;
search.msg.endDate = obj.max search.msg.endDate = obj.max;
console.log(search.msg)
search.chosenAddress.push(obj); search.chosenAddress.push(obj);
}else if(type==6){ } else if (type == 6) {
obj= { obj = {
Name: x.startDate+'-'+x.endDate, Name: x.startDate + "-" + x.endDate,
startDate: x.startDate, startDate: x.startDate,
type: type, type: type,
};
search.chosenAddress.forEach((z, index) => {
if (type == z.type) {
search.chosenAddress.splice(index, 1);
} }
search.chosenAddress.forEach((z,index)=>{ });
if(type==z.type){ if ($q.platform.is.mobile) {
search.chosenAddress.splice(index,1); if (qDateProxy6.value) qDateProxy6.value.hide();
}
})
if($q.platform.is.mobile){
if(qDateProxy6.value) qDateProxy6.value.hide()
} }
// search.msg.startDate = x.startDate // search.msg.startDate = x.startDate
// search.msg.startDate = x.endDate // search.msg.startDate = x.endDate
setTimeout(()=>{ setTimeout(() => {
search.chosenAddress.push(obj); search.chosenAddress.push(obj);
},200) }, 200);
} }
search.RetrievalState = true search.RetrievalState = true;
if(p){ if (p) {
p.explsed = false; p.explsed = false;
} }
}, },
...@@ -934,7 +1151,7 @@ ...@@ -934,7 +1151,7 @@
data.searchClone.minTripDay = "0"; data.searchClone.minTripDay = "0";
data.searchClone.maxTripDay = "0"; data.searchClone.maxTripDay = "0";
data.dayArray.forEach((x) => { data.dayArray.forEach((x) => {
if (x.id==data.DayId) { if (x.id == data.DayId) {
data.searchClone.minPrice = data.searchClone.minPrice =
data.searchClone.minPrice > x.min ? x.min : data.searchClone.minPrice; data.searchClone.minPrice > x.min ? x.min : data.searchClone.minPrice;
data.searchClone.maxPrice = data.searchClone.maxPrice =
...@@ -953,45 +1170,44 @@ ...@@ -953,45 +1170,44 @@
search.msg.priceRange.max = e.max; search.msg.priceRange.max = e.max;
search.msg.minPrice = e.min; search.msg.minPrice = e.min;
search.msg.maxPrice = e.max; search.msg.maxPrice = e.max;
methods.queryList() methods.queryList();
}, },
queryList(){ queryList() {
search.RetrievalState=true search.RetrievalState = true;
}, },
// 选择时间区间 // 选择时间区间
optionsFn(cd) { optionsFn(cd) {
return ( return (
cd >= cd >= date.formatDate(date.addToDate(new Date(), { days: 1 }), "YYYY/MM/DD")
date.formatDate(date.addToDate(new Date(), { days: 1 }), "YYYY/MM/DD")
); );
}, },
dateRangeHandler(e) { dateRangeHandler(e) {
let startDate = `${e.from.year}/${e.from.month}/${e.from.day}`; let startDate = `${e.from.year}/${e.from.month}/${e.from.day}`;
let endDate = `${e.to.year}/${e.to.month}/${e.to.day} `; let endDate = `${e.to.year}/${e.to.month}/${e.to.day} `;
if (qDateProxy.value) qDateProxy.value.hide() if (qDateProxy.value) qDateProxy.value.hide();
let obj= { let obj = {
startDate: startDate, startDate: startDate,
endDate: endDate, endDate: endDate,
} };
search.msg.startDate = startDate search.msg.startDate = startDate;
search.msg.endDate = endDate search.msg.endDate = endDate;
methods.changeChosenHandler(obj,null,6) methods.changeChosenHandler(obj, null, 6);
}, },
// 商品类型 // 商品类型
initGoods() { initGoods() {
data.goodsType.push({ data.goodsType.push({
Id: 1, Id: 1,
Name: t('v103.scheduledTrip.sightseeingitinerary'), Name: t("v103.scheduledTrip.sightseeingitinerary"),
explsed: $q.platform.is.desktop? false:true, explsed: $q.platform.is.desktop ? false : true,
SubList: [ SubList: [
{ {
Id: 2, Id: 2,
Name: t('v103.scheduledTrip.daytrip'), Name: t("v103.scheduledTrip.daytrip"),
checked: false, checked: false,
}, },
{ {
Id: 3, Id: 3,
Name: t('v103.scheduledTrip.multiday'), Name: t("v103.scheduledTrip.multiday"),
checked: false, checked: false,
}, },
], ],
...@@ -999,42 +1215,50 @@ ...@@ -999,42 +1215,50 @@
}, },
// 搜寻关键词 // 搜寻关键词
changeAddrSearchHandler(v) { changeAddrSearchHandler(v) {
search.RetrievalState = true search.RetrievalState = true;
}, },
} };
watch(data.searchClone, (n, o) => { 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}) },
{ deep: true }
);
const searchCnt = computed(() => { const searchCnt = computed(() => {
let setCnt = 2 let setCnt = 2;
if ($q.platform.is.mobile) { if ($q.platform.is.mobile) {
setCnt = setCnt+search.chosenAddress.length-1 setCnt = setCnt + search.chosenAddress.length - 1;
} }
return setCnt return setCnt;
}) });
methods.initCityList(); methods.initCityList();
methods.initGoods(); methods.initGoods();
...@@ -1052,16 +1276,15 @@ ...@@ -1052,16 +1276,15 @@
qDateProxy5, qDateProxy5,
qDateProxy6, qDateProxy6,
qNameProxy, qNameProxy,
domain domain,
} };
} },
}) });
</script> </script>
<style> <style>
.SearchMain .SearchMain-height .q-field__control { .SearchMain .SearchMain-height .q-field__control {
height: 40px; height: 40px;
min-height: 40px !important; min-height: 40px !important;
} }
</style> </style>
\ No newline at end of file
...@@ -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