Commit 4846e72d authored by youjie's avatar youjie

no message

parent 1a00973d
......@@ -10,11 +10,13 @@ let converterSW = OpenCC.Converter({ from: 'tw', to: 'cn' }) //转简
let datas: any // 接收需要转简数据
let language = '' as any //语言
let currencyCode = 'JPY' //币种
const request = (cmd:string,msg:any): Promise<HttpResponse>=>{
const request = (cmd:string,msg:any,isTrans:boolean=true): Promise<HttpResponse>=>{
datas = msg
if(locale.value=='zhTW'){
// let stringifyData = converterSW(JSON.stringify(msg))
// datas = JSON.parse(stringifyData)
if(isTrans){
let stringifyData = converterSW(JSON.stringify(msg))
datas = JSON.parse(stringifyData)
}
language = 'zh_TW'
// currencyCode = 'TWD'
}else if(locale.value=='zhSW'){
......
......@@ -45,7 +45,7 @@ class HotelService {
param.reviewRatingLowerLimits=param.reviewRatingLowerLimits&&param.reviewRatingLowerLimits!=''?param.reviewRatingLowerLimits:0
param.searchMaxRate=param.searchMaxRate&&param.searchMaxRate!=''?param.searchMaxRate:0
param.searchMinRate=param.searchMinRate&&param.searchMinRate!=''?param.searchMinRate:0
return request('dmc_post_Get_GetJAPAN_HotelList',param)
return request('dmc_post_Get_GetJAPAN_HotelList',param,false)
}
}
......
......@@ -2,9 +2,17 @@ import { HttpResponse } from '../@types'
import request from './request'
class TicketService {
// 取消门票訂單
static async setTicketOrderCancel(OrderId:number):Promise<HttpResponse>{
return request('ticket_post_CancelTicketOrder',{OrderId})
}
// 门票訂單
static async getTicketOrderList(param:any):Promise<HttpResponse>{
return request('ticket_post_GetMyTicketOrderPageList',param)
}
// 提交訂單
static async setTicketOrder(param:any):Promise<HttpResponse>{
return request('ticket_post_SetSaleTicketOrder',param)
return request('ticket_post_SetTicketOrder',param)
}
// 门票详情
static async getTicketInfo(param:any):Promise<HttpResponse>{
......
......@@ -79,7 +79,7 @@
</q-td>
</template>
<template v-slot:body-cell-HandFittingFee="props">
<q-td :props="props" :rowspan="x.DetailList.length" v-if="props.rowIndex == 0">
<q-td :props="props" :colspan="x.DetailList.length" v-if="props.rowIndex == 0">
{{ moneyFormat(x.HandFittingFee) }}
<div class="q-mt-sm" v-if="x.OrderStatus==2">
<q-btn size="sm" dense outline color="primary" v-if="x.ContractUrl">
......@@ -145,7 +145,7 @@
<div class="row items-center justify-between q-mb-sm q-pb-sm" style="border-bottom: 1px dashed #ddd">
<div class="f12 text-grey">{{ $t('hotelorder.orderMoney') }}</div>
<div class="dark q-ml-xl">
<span class="f12">{{ $t('unit.jpc') }}</span>
<!-- <span class="f12">{{ $t('unit.jpc') }}</span> -->
<span class="din text-subtitle1">{{ moneyFormat(x.Money) }}</span>
<span class="f12">{{ $t('unit.jp') }}</span>
</div>
......
......@@ -6,59 +6,135 @@
<div class="row items-center">
<span class="f12 text-grey-900 text-subtitle2 text-weight-bold" :class="{ 'col-2': $q.platform.is.desktop, 'col-3': $q.platform.is.mobile }">{{ $t('v102.ticket.gi') }}</span>
<span class="col f12">
<q-radio v-model="m.OrderType" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="0" :label="$t('v102.ticket.zq')" />
<q-radio v-model="m.OrderType" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="1" :label="$t('v102.ticket.yj')" />
<q-radio v-model="m.MailingState" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="1" :label="$t('v102.ticket.zq')" />
<q-radio v-model="m.MailingState" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="2" :label="$t('v102.ticket.yj')" />
</span>
</div>
<div v-if="m.OrderType == 0" class="bg-light-blue-1 q-pa-md fz14 rounded-borders q-mt-md">
<div v-if="m.MailingState == 1" class="bg-light-blue-1 q-pa-md fz14 rounded-borders q-mt-md">
<div class="text-weight-bold">{{ $t('v102.ticket.zqs') }}</div>
<div class="text-grey-900 q-mt-sm f12">{{ $t('v102.ticket.zqd') }}</div>
</div>
<div v-else>
<div>
<div class="q-mt-md">
<span class="f12 text-grey-900 text-subtitle2 text-weight-bold">{{ $t('v102.ticket.sj') }}</span>
</div>
<div class="row items-center q-mt-md text-grey-600 q-mb-md" v-if="$q.platform.is.desktop">
<div class="col q-mr-md">{{ $t('v102.ticket.sjc.c1') }}</div>
<div class="col q-mr-md">{{ $t('v102.ticket.sjc.c2') }}</div>
<!-- <div class="col-2 q-mr-md">{{ $t('v102.ticket.sjc.c3') }}</div> -->
<div class="col-2 q-mr-md">{{ $t('v102.ticket.sjc.c3') }}</div>
<div class="col q-mr-md">{{ $t('v102.ticket.sjc.c4') }}</div>
<div class="col-4">{{ $t('v102.ticket.sjc.c5') }}</div>
<div class="col-4" v-if="m.MailingState == 2">{{ $t('v102.ticket.sjc.c5') }}</div>
</div>
<div style="border-top: 1px dashed #eee" :class="{ 'row items-center': $q.platform.is.desktop, column: $q.platform.is.mobile }">
<q-input dense standout v-model="m.ContactName" class="col q-mt-md" :class="{ 'q-mr-md': $q.platform.is.desktop }" :placeholder="$t('v102.ticket.sjcp.c1')" />
<q-input dense standout v-model="m.ContactEnName" class="col q-mt-md" :class="{ 'q-mr-md': $q.platform.is.desktop }" :placeholder="$t('v102.ticket.sjcp.c2')" />
<q-input dense standout v-model="m.ContactPhone" class="col q-mt-md" :class="{ 'q-mr-md': $q.platform.is.desktop }" :placeholder="$t('v102.ticket.sjcp.c4')" />
<q-input dense standout v-model="m.Address" class="col-4 q-mt-md" :placeholder="$t('v102.ticket.sjcp.c5')" />
<q-input dense standout v-model="m.Name" class="col q-mt-md" :class="{ 'q-mr-md': $q.platform.is.desktop }" :placeholder="$t('v102.ticket.sjcp.c1')" :rules="[ val => val && val.length > 0 || ' ']" ref="guestName"/>
<q-input dense standout v-model="m.EName" class="col q-mt-md" :class="{ 'q-mr-md': $q.platform.is.desktop }" :placeholder="$t('v102.ticket.sjcp.c2')" :rules="[ val => val && val.length > 0 || ' ']" ref="guestEName"/>
<div class="col q-mt-md" :class="{ 'q-mr-md': $q.platform.is.desktop }">
<q-radio v-model="m.Sex" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="Number(1)" :label="$t('v102.ticket.sex.man')" />
<q-radio v-model="m.Sex" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" :val="Number(2)" :label="$t('v102.ticket.sex.women')" />
</div>
<q-input dense standout v-model="m.Mobile" class="col q-mt-md" :class="{ 'q-mr-md': $q.platform.is.desktop }" :placeholder="$t('v102.ticket.sjcp.c4')" :rules="[ val => val && val.length == 11 || ' ']" ref="guestMobile"/>
<q-input v-if="m.MailingState == 2" dense standout v-model="m.MailingAddress" class="col-4 q-mt-md" :placeholder="$t('v102.ticket.sjcp.c5')" :rules="[ val => val && val.length > 0 || ' ']" ref="guestAddress"/>
</div>
</div>
<div class="q-mt-md">
<q-input v-model="m.Remark" standout autogrow :label="$t('v102.ticket.or')" />
</div>
<div class="q-mt-lg text-right">
<q-btn color="negative" class="q-px-lg" :label="$t('v102.to.m.c')" v-close-popup flat dense />
<q-btn color="primary" class="q-ml-md q-px-lg" :label="$t('v102.to.m.c')" v-close-popup unelevated dense />
<!-- v-close-popup flat dense -->
<q-btn color="negative" class="q-px-lg" :label="$t('v102.to.m.c')" @click="close" />
<q-btn color="primary" class="q-ml-md q-px-lg" :label="$t('v102.to.m.s')" @click="submit"/>
</div>
</q-card>
</template>
<script lang="ts">
import { defineComponent, reactive, toRefs, watch } from 'vue'
import { ref, defineComponent, reactive, toRefs, watch} from 'vue'
import { ApiResult } from 'src/@types/enumHelper'
import TicketService from '../../../api/ticket'
import message from '../../../utils/message'
import { useI18n } from 'vue-i18n'
export default defineComponent({
props: ['order'],
setup(props) {
setup(props, context) {
watch(
() => props.order,
(n, o) => {
data.m = JSON.parse(JSON.stringify(n))
// data.m = JSON.parse(JSON.stringify(n))
}
)
const { t } = useI18n()
const guestName = ref(null) as any
const guestEName = ref(null) as any
const guestMobile = ref(null) as any
const guestAddress = ref(null) as any
const data = reactive({
m: {} as any
m: {} as any,
loading: false
})
const methods = {}
data.m=JSON.parse(JSON.stringify(props.order))
return { ...toRefs(data), ...methods }
const methods = {
close(){
context.emit('close')
},
submit(){
if(data.loading) return
data.loading = true
let flag = false
guestName.value.validate()
guestEName.value.validate()
guestMobile.value.validate()
if(data.m.MailingState=='2'){
guestAddress.value.validate()
flag = !guestName.value.hasError && !guestEName.value.hasError && !guestMobile.value.hasError && !guestAddress.value.hasError
}else{
flag = !guestName.value.hasError && !guestEName.value.hasError && !guestMobile.value.hasError
data.m.MailingAddress = ''
}
if(!flag) return
let m = {
IsUpdateMailing: 1,
OrderId: data.m.OrderId,
CouponsId: data.m.CouponsId,
Money: data.m.Money,
UseDate: data.m.UseDate,
Birthday: data.m.Birthday,
DetailList: data.m.DetailList,
MailingState: data.m.MailingState,//邮寄状态 1自取 2邮寄
MailingAddress: data.m.MailingAddress,//MailingState =2 填写邮寄
Name: data.m.Name,
EName: data.m.EName,
Sex: data.m.Sex,//1男2女
Mobile: data.m.Mobile,
Remark: data.m.Remark,
}
let param = Object.assign(m)
TicketService.setTicketOrder(param)
.then(r => {
if (r.data.resultCode == ApiResult.SUCCESS) {
context.emit('success')
message.successMsg(`${t('success')}`)
} else {
message.errorMsg(r.data.message)
}
data.loading = false
}).catch(e => {
data.loading = false
message.errorMsg(e.message)
})
}
}
return {
...toRefs(data),
...methods,
guestName,
guestEName,
guestMobile,
guestAddress
}
}
})
</script>
......
......@@ -2,7 +2,7 @@
<div class="rounded-borders bg-white row items-center q-pa-md">
<q-select v-if="$q.platform.is.desktop" class="q-mr-md" v-model="search.OrderStatus" @update:model-value="setOrderStatus" dense :options="status" emit-value option-label="StatusName" option-value="StatusId" map-options :label="$t('hotelorder.search.status')" standout />
<q-input v-if="$q.platform.is.desktop" class="q-mr-md" v-model="search.OrderNo" dense standout :label="$t('hotelorder.search.orderNum')" />
<q-field v-if="$q.platform.is.desktop" clearable v-model="dateRangeFormat" :label="$t('hotelorder.search.daterange')" standout class="col-2" style="min-width: 190px" dense>
<q-field v-if="$q.platform.is.desktop" clearable v-model="dateRangeFormat" :label="$t('hotelorder.search.daterange')" standout class="col-2" style="min-width: 190px" dense @clear="getDateRange">
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" landscape @range-end="dateRangeHandler"></q-date>
......@@ -21,20 +21,33 @@
<q-input v-model="search.OrderId" dense standout :label="$t('hotelorder.search.orderId')" class="col" />
</div>
<div class="mobile-only q-mt-md">
<q-field clearable v-model="dateRangeFormat" :label="$t('hotelorder.search.daterange')" standout style="min-width: 190px" dense>
<q-field clearable v-model="dateRangeFormat" :label="$t('hotelorder.search.daterange')" standout style="min-width: 190px" dense @clear="getDateRange">
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" @range-end="dateRangeHandler"></q-date>
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" @range-end="dateRangeHandler" ></q-date>
</q-popup-proxy>
</q-field>
</div>
<div class="mobile-only q-mt-md">
<q-field clearable v-model="dateRangeFormatUse" :label="$t('hotelorder.search.daterange')" standout style="min-width: 190px" dense @clear="getDateRangeUse">
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormatUse }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxyUse">
<q-date v-model="dateRangeUse" :options="optionsFnUse" range mask="YYYY/MM/DD" @range-end="dateRangeHandlerUse" ></q-date>
</q-popup-proxy>
</q-field>
</div>
<!-- <div class="q-mt-md">
<q-field clearable v-model="dateRangeFormatUse" :label="$t('v102.ticket.starttime')" standout class="col" style="min-width: 190px" dense @clear="getDateRangeUse">
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormatUse }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxyUse">
<q-date v-model="dateRangeUse" :options="optionsFnUse" range mask="YYYY/MM/DD" @range-end="dateRangeHandlerUse" ></q-date>
</q-popup-proxy>
</q-field>
</div> -->
<div class="q-mt-md">
<q-input v-model="search.TicketName" dense standout :label="$t('v102.to.ticketName')" />
<q-input v-model="search.Name" dense standout :label="$t('v102.to.Name')" />
</div>
<q-select class="q-mt-md" v-model="search.OrderType" dense :options="orderTypes" emit-value option-label="TypeName" option-value="TypeId" map-options :label="$t('v102.to.qj')" standout />
<q-input v-model="search.ContactName" dense standout :label="$t('v102.to.qjc')" class="q-mt-md" v-if="search.OrderType == 1" />
<q-input v-model="search.ContactNumber" dense standout :label="$t('v102.to.qjp')" class="q-mt-md" v-if="search.OrderType == 1" />
<q-select class="q-mt-md" v-model="search.MailingState" dense :options="orderTypes" emit-value option-label="TypeName" option-value="TypeId" map-options :label="$t('v102.to.qj')" standout />
</q-card>
</q-popup-proxy>
......@@ -61,13 +74,16 @@ export default defineComponent({
components: { svgIcon },
setup(props) {
const qDateProxy = ref(null) as any
const qDateProxyUse = ref(null) as any
const $q = useQuasar()
const data = reactive({
status: [] as Array<StandardStatus>,
cancelStatus: {} as StandardStatus | undefined,
dateRangeFormat: '',
dateRangeFormatUse: '',
dateRange: {} as any,
dateRangeUse: {} as any,
orderTypes: [] as Array<OrderType>,
canHide: false
})
......@@ -85,9 +101,28 @@ export default defineComponent({
})
data.orderTypes = getTicketOrderType(true)
},
optionsFnUse(cd: any) {
return true
},
optionsFn(cd: any) {
return cd < date.formatDate(date.addToDate(new Date(), { days: 1 }), 'YYYY/MM/DD')
},
getDateRangeUse(value){
search.UseSTime = ''
search.UseETime = ''
data.dateRangeFormatUse = ''
},
getDateRange(value){
search.StartTime = ''
search.EndTime = ''
data.dateRangeFormat = ''
},
dateRangeHandlerUse(e: any) {
search.UseSTime = `${e.from.year}/${e.from.month}/${e.from.day}`
search.UseETime = `${e.to.year}/${e.to.month}/${e.to.day} `
data.dateRangeFormatUse = `${search.UseSTime} - ${search.UseETime} `
if (qDateProxyUse.value) qDateProxyUse.value.hide()
},
dateRangeHandler(e: any) {
search.StartTime = `${e.from.year}/${e.from.month}/${e.from.day}`
search.EndTime = `${e.to.year}/${e.to.month}/${e.to.day} `
......@@ -99,12 +134,12 @@ export default defineComponent({
realSearch.RoomType = search.RoomType
realSearch.StartTime = search.StartTime
realSearch.EndTime = search.EndTime
realSearch.UseSTime = search.UseSTime
realSearch.UseETime = search.UseETime
realSearch.OrderStatus = search.OrderStatus
realSearch.OrderNo = search.OrderNo
realSearch.OrderType = search.OrderType
realSearch.TCNum = search.TCNum
realSearch.ContactName = search.ContactName
realSearch.ContactNumber = search.ContactNumber
realSearch.MailingState = search.MailingState
realSearch.Name = search.Name
console.log(realSearch)
},
setOrderStatus(statusId: number) {
......@@ -120,10 +155,9 @@ export default defineComponent({
if (search.OrderNo > 0) setCnt++
}
if (search.OrderId.length > 0) setCnt++
if (search.RoomType > 0) setCnt++
if (search.OrderType > 0) setCnt++
if (search.OrderType == 1 && search.ContactName.length > 0) setCnt++
if (search.OrderType == 2 && search.ContactNumber.length > 0) setCnt++
if (search.UseSTime.length > 0) setCnt++
if (search.MailingState > 0) setCnt++
if (search.Name) setCnt++
return setCnt
})
......
......@@ -3,7 +3,7 @@
<q-card class="light-shadow q-pa-md bg-white rounded-borders q-mb-md" flat v-for="x in orders">
<div class="row items-center desktop-only">
<div class="q-mr-md">
<q-btn :color="x.OrderType == 0 ? 'cyan' : 'negative'" unelevated disable size="sm" :label="`${x.OrderType == 0 ? $t('v102.ticket.zq') : $t('v102.ticket.yj')}`"></q-btn>
<q-btn :color="x.MailingState == 1 ? 'cyan' : 'negative'" unelevated disable size="sm" :label="`${x.MailingState == 1 ? $t('v102.ticket.zq') : $t('v102.ticket.yj')}`"></q-btn>
</div>
<div class="f12 text-grey-6">{{ $t('hotelorder.search.orderNum') }}{{ x.OrderNo }}</div>
<div class="q-ml-md">
......@@ -11,7 +11,7 @@
<q-btn color="cyan" icon="check" outline size="sm" :label="$t('hotelorder.copyed')" v-else></q-btn>
</div>
<div class="col text-center f12 text-grey-6">
<span v-if="x.OrderType == 1">{{ $t('v102.ticket.sj') }}{{ x.ContactName }}({{ x.ContactEnName }})/{{ x.ContactPhone }}</span>
<span v-if="x.MailingState">{{ $t('v102.ticket.sj') }}{{ x.Name }}({{ x.EName }})/{{ x.Mobile }}</span>
</div>
<div class="f12 text-grey-6">{{ $t('hotelorder.createTime') }}{{ x.CreateTime }}</div>
<div class="q-ml-md f12" :class="[x.typeInfo.Color]">
......@@ -22,7 +22,7 @@
<div class="mobile-only">
<div class="row justify-between">
<div class="q-mr-md">
<q-btn :color="x.OrderType == 1 ? 'cyan' : 'negative'" unelevated disable size="sm" :label="`${x.OrderType == 1 ? $t('hotelorder.orderType.guest') : $t('hotelorder.orderType.tour')}`"></q-btn>
<q-btn :color="x.MailingState == 1 ? 'cyan' : 'negative'" unelevated disable size="sm" :label="`${x.MailingState == 1 ? $t('hotelorder.orderType.guest') : $t('hotelorder.orderType.tour')}`"></q-btn>
</div>
<div class="q-ml-md f12" :class="[x.typeInfo.Color]">
<q-icon :name="x.typeInfo.Icon" />
......@@ -38,21 +38,17 @@
</div>
</div>
<div class="f12 text-grey-6">
<span v-if="x.OrderType == 1">{{ $t('hotelorder.search.contactInfo') }}{{ x.ContactName }}({{ x.ContactEnName }})/{{ x.ContactPhone }}</span>
<span v-if="x.MailingState">{{ $t('hotelorder.search.contactInfo') }}{{ x.Name }}({{ x.EName }})/{{ x.ContactPhone }}</span>
</div>
<div class="f12 text-grey-6">{{ $t('hotelorder.createTime') }}{{ x.CreateTime }}</div>
</div>
</div>
<div class="q-mt-md row">
<q-table separator="cell" :hide-bottom="!x.Remark" :pagination="{ rowsPerPage: 100 }" dense :rows="x.DetailList" bordered :columns="cols" class="sticky-rightrowspan-column-table light-border col no-shadow">
<template v-slot:body-cell-TicketInfo="props">
<q-td :props="props">
<div class="room-item f12 text-grey-6" v-for="x in props.row.TicketList">
<span class="q-mr-md"> {{ x.TypeName }}: {{ x.Num }} {{ $t('v102.ticket.unit') }} </span>
<span class="q-mr-md"> {{ $t('hotelorder.unitPrice') }}: {{ x.Price ?? 1 }} </span>
<span class="q-mr-md"> {{ $t('hotelorder.xj') }}: {{ x.Money ?? 1 }} </span>
</div>
<q-table separator="cell" :hide-bottom="!x.Remark" :pagination="{ rowsPerPage: 100 }" :rows="x.DetailList" bordered :columns="cols" class="sticky-rightrowspan-column-table light-border col no-shadow">
<template v-slot:body-cell-Date="props">
<q-td :props="props" :rowspan="x.DetailList.length" v-if="props.rowIndex == 0">
{{x.UseDate}}
</q-td>
</template>
<template v-slot:body-cell-TicketName="props">
......@@ -61,6 +57,11 @@
<q-tooltip>{{ props.value }}</q-tooltip>
</q-td>
</template>
<template v-slot:body-cell-Money="props">
<q-td :props="props" >
{{props.row.Money}}
</q-td>
</template>
<template v-slot:bottom>
<div class="msl text-negative">{{ $t('v101.hotelRemark') }}{{ x.Remark }}</div>
</template>
......@@ -70,16 +71,18 @@
<div class="q-mt-md" v-if="x.OrderStatus != 3" :class="{ row: $q.platform.is.desktop, 'column reverse': $q.platform.is.mobile }">
<div class="pay row text-grey rounded-borders" :class="{ 'bg-grey-2 q-mt-md': $q.platform.is.mobile, col: $q.platform.is.desktop }">
<div class="bg-orange-1 col-12 rounded-borders q-pa-md">
<div v-if="x.OrderType == 1">
<div v-if="x.MailingState==1||x.MailingState==2">
<div class="text-subtitle2 text-dark text-weight-bolder row items-center">
<span class="col">{{ $t('v102.ticket.sjc.c5') }}:</span>
<span class="f12" :class="[x.SendType.Color]">{{ x.SendType.Name }}</span>
</div>
<div class="f12 text-dark q-mt-sm">{{ x.Address }}</div>
<div class="f12 text-dark q-mt-sm">{{ x.MailingAddress }}</div>
</div>
<div v-else>
<div class="text-subtitle2 text-dark text-weight-bolder">{{ $t('v102.ticket.zqa') }}:</div>
<div class="f12 text-dark q-mt-sm">{{ x.ReviceAddress?x.ReviceAddress:$t('v102.ticket.nzqa') }}</div>
<div class="f12 text-dark q-mt-sm">
{{ x.SelffetchAddress?x.SelffetchAddress:$t('v102.ticket.nzqa') }}
</div>
</div>
</div>
</div>
......@@ -88,7 +91,7 @@
<div class="row items-center justify-between q-mb-sm q-pb-sm" style="border-bottom: 1px dashed #ddd">
<div class="f12 text-grey">{{ $t('hotelorder.orderMoney') }}</div>
<div class="dark q-ml-xl">
<span class="f12">{{ $t('unit.jpc') }}</span>
<!-- <span class="f12">{{ $t('unit.jpc') }}</span> -->
<span class="din text-subtitle1">{{ moneyFormat(x.Money) }}</span>
<span class="f12">{{ $t('unit.jp') }}</span>
</div>
......@@ -123,7 +126,7 @@
<div v-else>
<div class="f12 text-green-4">{{ $t('hotelorder.payed') }}</div>
<div class="text-subtitle1 din text-green-14">
{{ x.OrderIncome.toFixed(2) }}
{{ x.Money.toFixed(2) }}
<span class="text-green-4 f12">{{ $t('unit.jp') }}</span>
</div>
</div>
......@@ -173,11 +176,12 @@
</q-card>
</q-dialog>
<q-dialog v-model="showModify" persistent>
<modify-order-address :order="modifyOrder"></modify-order-address>
<modify-order-address :order="modifyOrder" @close="showModify=false" @success="showModify=false,initOrders()"></modify-order-address>
</q-dialog>
</template>
<script lang="ts">
import TicketService from '../../../api/ticket'
import { DirtionmaryHelper } from '../../../config/dictionary'
import { defineComponent, inject, reactive, toRefs, watch } from 'vue'
import { ApiResult } from '../../../@types/enumHelper'
......@@ -218,22 +222,47 @@ export default defineComponent({
copyId: 0,
expendsOrderId: 0,
cols: [
{ name: 'Date', label: t('hotelorder.col.d'), field: (row: any) => row.Date, align: 'left' },
{ name: 'TicketName', label: t('hotelorder.col.hn'), field: (row: any) => row.TicketName, align: 'left' },
{ name: 'TicketInfo', label: t('hotelorder.col.r'), align: 'left' },
{ name: 'Money', label: t('hotelorder.col.m'), field: (row: any) => row.TicketMoney.toFixed(2), align: 'left' }
{ name: 'Date', label: t('v102.ticket.d'), field: (row: any) => row.Date, align: 'left' },
{ name: 'TicketName', label: t('v102.ticket.hn'), field: (row: any) => row.TicketName, align: 'left' },
{ name: 'Num', label: t('v102.ticket.sl'), field: (row: any) => row.Num, align: 'left' },
{ name: 'Money', label: t('hotelorder.col.m'), field: (row: any) => row.Money, align: 'left' }
] as any[],
modifyOrder:{} as any,
showModify:false
})
const methods = {
setSuccess(){
console.log('---===')
methods.init()
},
ViewPayment() {
data.showBankAccount = true
},
initOrders() {
data.loading = true
let param = Object.assign(data.pages, search)
//@TODO:
TicketService.getTicketOrderList(param)
.then(r => {
data.loading = false
if (r.data.resultCode == ApiResult.SUCCESS) {
r.data.data.pageData.forEach((x: any) => {
x.typeInfo = data.status.find(y => y.StatusId == x.OrderStatus) ?? data.status[1]
x.SendType = data.sends.find(y => y.Id == x.MailingState) ?? data.sends[0]
x.Money = 0
x.DetailList.forEach((y:any)=>{
x.Money+=y.Money
})
})
data.orders = r.data.data.pageData
data.pages.pageCount = r.data.data.pageCount
} else {
message.errorMsg(r.data.message)
}
}).catch(e => {
message.errorMsg(e.message)
data.loading = false
})
},
cancelConfirmHandler(orderId: number) {
$q.dialog({
......@@ -248,7 +277,20 @@ export default defineComponent({
cancelOrderHandler(orderId: number) {
if (data.loading) return
data.loading = true
//@TODO:
TicketService.setTicketOrderCancel(orderId)
.then(r => {
data.loading = false
if (r.data.resultCode == ApiResult.SUCCESS) {
methods.init()
message.successMsg(`${t('success')}`)
} else {
message.errorMsg(r.data.message)
}
}).catch(e => {
message.errorMsg(e.message)
data.loading = false
})
},
setShowWarnHander(id: number) {
data.expendsOrderId = id == data.expendsOrderId ? 0 : id
......@@ -263,6 +305,7 @@ export default defineComponent({
methods.initOrders()
},
modify(order:any) {
// order.Sex = JSON.stringify(order.Sex)
data.modifyOrder=order
data.showModify =true
},
......@@ -282,89 +325,89 @@ export default defineComponent({
}
methods.init()
data.orders.push(
{
OrderType: 0,
typeInfo: data.status[1],
OrderIncome: 0.0,
OrderNo: '20230106214591',
OrderId: 89123,
CreateTime: '2023/01/06 14:34:56',
DetailList: [
{
TicketName: '大阪環球影城',
TicketMoney: 4200.0,
Date: '2023/09/10',
TicketList: [
{
TypeName: '兒童票',
Num: 5,
Price: 400.0,
Money: 2000.0
},
{
TypeName: '成人票',
Num: 2,
Price: 800.0,
Money: 1600.0
},
{
TypeName: '學生票',
Num: 1,
Price: 600.0,
Money: 600.0
}
]
}
],
Remark: '迪士尼陆地乐园 客人姓名:Liu Chang+Hu Yuwei~~~~注意!!! 人数:2大 日期:1月3号 价格:大人490元/张 共收980元,全款已收!',
Money:4200.0,
OrderStatus:1
},
{
OrderType: 1,
typeInfo: data.status[2],
OrderIncome: 0.0,
OrderNo: '2023010621459800',
OrderId: 891452,
ContactName: '罗超',
ContactEnName: 'LUOCHAO',
ContactPhone: '892788812',
Address: '318国道2913公桩左边的祝桑乡境内',
CreateTime: '2023/01/06 14:34:56',
DetailList: [
{
TicketName: '大阪環球影城',
TicketMoney: 4200.0,
Date: '2023/09/10',
TicketList: [
{
TypeName: '兒童票',
Num: 5,
Price: 400.0,
Money: 2000.0
},
{
TypeName: '成人票',
Num: 2,
Price: 800.0,
Money: 1600.0
},
{
TypeName: '學生票',
Num: 1,
Price: 600.0,
Money: 600.0
}
]
}
],
Remark: '迪士尼陆地乐园 客人姓名:Liu Chang+Hu Yuwei~~~~注意!!! 人数:2大 日期:1月3号 价格:大人490元/张 共收980元,全款已收!',
Money:4200.0,
OrderStatus:2,
SendType: data.sends[0]
}
)
// data.orders.push(
// {
// OrderType: 0,
// typeInfo: data.status[1],
// OrderIncome: 0.0,
// OrderNo: '20230106214591',
// OrderId: 89123,
// CreateTime: '2023/01/06 14:34:56',
// DetailList: [
// {
// TicketName: '大阪環球影城',
// TicketMoney: 4200.0,
// Date: '2023/09/10',
// TicketList: [
// {
// TypeName: '兒童票',
// Num: 5,
// Price: 400.0,
// Money: 2000.0
// },
// {
// TypeName: '成人票',
// Num: 2,
// Price: 800.0,
// Money: 1600.0
// },
// {
// TypeName: '學生票',
// Num: 1,
// Price: 600.0,
// Money: 600.0
// }
// ]
// }
// ],
// Remark: '迪士尼陆地乐园 客人姓名:Liu Chang+Hu Yuwei~~~~注意!!! 人数:2大 日期:1月3号 价格:大人490元/张 共收980元,全款已收!',
// Money:4200.0,
// OrderStatus:1
// },
// {
// OrderType: 1,
// typeInfo: data.status[2],
// OrderIncome: 0.0,
// OrderNo: '2023010621459800',
// OrderId: 891452,
// ContactName: '罗超',
// ContactEnName: 'LUOCHAO',
// ContactPhone: '892788812',
// Address: '318国道2913公桩左边的祝桑乡境内',
// CreateTime: '2023/01/06 14:34:56',
// DetailList: [
// {
// TicketName: '大阪環球影城',
// TicketMoney: 4200.0,
// Date: '2023/09/10',
// TicketList: [
// {
// TypeName: '兒童票',
// Num: 5,
// Price: 400.0,
// Money: 2000.0
// },
// {
// TypeName: '成人票',
// Num: 2,
// Price: 800.0,
// Money: 1600.0
// },
// {
// TypeName: '學生票',
// Num: 1,
// Price: 600.0,
// Money: 600.0
// }
// ]
// }
// ],
// Remark: '迪士尼陆地乐园 客人姓名:Liu Chang+Hu Yuwei~~~~注意!!! 人数:2大 日期:1月3号 价格:大人490元/张 共收980元,全款已收!',
// Money:4200.0,
// OrderStatus:2,
// SendType: data.sends[0]
// }
// )
return {
...toRefs(data),
...methods,
......@@ -374,7 +417,10 @@ export default defineComponent({
})
</script>
<style>
<style scoped>
.light-border table td:first-child{
border-left: 1px solid #eee
}
.light-border table,
.light-border table td,
.light-border .q-table__middle,
......
......@@ -96,7 +96,7 @@ export default {
jian: '간',
ren: '사람이',
jp: '엔화',
jpc: '¥',
jpc: '',
night: '밤',
jf: '칸',
day: '일'
......
......@@ -96,7 +96,7 @@ export default {
jian: '間',
ren: '人',
jp: '日圓',
jpc: '¥',
jpc: '',
night: '晚',
jf: '間房',
day: '天'
......@@ -788,6 +788,10 @@ export default {
//#region v1.0.2
v102:{
ticket:{
d: '门票日期',
hn: '门票名称',
sl: '数量',
starttime:'门票時間',
pageTitle:"票券檢索",
name:'請輸入景點名稱',
toggleListType1:"列表模式",
......@@ -797,10 +801,6 @@ export default {
recommendTime: '推薦遊玩',
hour: '小時',
minutes: '分鐘',
ticketet: '兒童票',
ticketcr: '成人票',
ticketxs: '學生票',
ticketjt: '家庭套票(2大1小)',
load:'圖片加載失敗',
showtt:{
t1:'共',
......@@ -830,7 +830,7 @@ export default {
yj:'郵寄票券',
zqs:'自行取票說明',
zqd:'自行前往指定位置取票,當您完成付款後我們將通過郵件通知您取票的門票訊息',
sj:'收件人訊息',
sj:'人訊息',
unit:'張',
sex:{
man:'男',
......@@ -863,6 +863,7 @@ export default {
to:{
pageTitle:'票券訂單列表',
ticketName:'票券名稱',
Name: '客人名稱',
qj:'取券方式',
qjc:'取件人姓名(中/英)',
qjp:'取件人電話',
......
......@@ -29,9 +29,15 @@ export default defineComponent({
OrderStatus: 0,
StartTime: '',
EndTime: '',
TicketName:'',
ContactName: '',
ContactNumber: ''
// TicketName:'',//景区名称
// ContactName: '',//收件名称
// ContactNumber: '',//电话
Name: '',//顾客名称
UseSTime: '',//门票开始时间
UseETime: '',//门票结束时间
MailingState: -1
})
//search.OrderId = currentRouter.currentRoute.value.params.orderId
......
......@@ -8,8 +8,8 @@
<div class="q-mr-md">
<q-img v-if="detailsObj.PicPathList&&detailsObj.PicPathList.length>0" :src="detailsObj.PicPathList[0]" :ratio="16 / 9" spinner-color="grey" spinner-size="50px" width="100px" fit="cover" class="rounded-borders">
<template v-slot:error>
<div class="absolute-full flex flex-center bg-negative text-white">
Cannot load image
<div class="absolute-full flex flex-center bg-blue-1 text-dark">
{{$t('v102.ticket.load')}}
</div>
</template>
</q-img>
......@@ -31,7 +31,7 @@
<div class="self-center full-width no-outline" tabindex="0">{{ msg.UseDate }}</div>
</template>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="msg.UseDate" :options="optionsFn" mask="YYYY/MM/DD"></q-date>
<q-date v-model="msg.UseDate" :options="optionsFn" mask="YYYY/MM/DD" @update:model-value="getInfo"></q-date>
</q-popup-proxy>
</q-field>
</div>
......@@ -42,8 +42,10 @@
<div class="f12 text-dark" :class="{ 'col-2': $q.platform.is.desktop, 'col-3': $q.platform.is.mobile }">{{ $t('v102.ticket.tt') }}:</div>
<div class="row items-center col wrap q-mt-md">
<div class="q-pa-sm rounded-borders q-mr-md q-mb-md cursor-pointer row items-center" :class="{ 'bg-grey-2': !x.checked, 'bg-primary text-white': x.checked }" @click="changeDetailListHandler(x)" v-for="x in types">
<span style="border-right: 1px solid #eee" class="q-mr-sm q-pr-sm">{{ x.name }}</span>
<span>{{ x.price.toFixed(2) }}</span>
<template v-if="x.RemainingInventory>0">
<span style="border-right: 1px solid #eee" class="q-mr-sm q-pr-sm">{{ x.TicketName }}</span>
<span>{{ x.B2BPrice.toFixed(2) }}</span>
</template>
</div>
</div>
</div>
......@@ -83,26 +85,26 @@
<div class="text-weight-bold">{{ $t('v102.ticket.zqs') }}</div>
<div class="text-grey-900 q-mt-sm f12">{{ $t('v102.ticket.zqd') }}</div>
</div>
<div v-else>
<div>
<div class="q-mt-md">
<span class="f12 text-grey-900 text-subtitle2 text-weight-bold">{{ $t('v102.ticket.sj') }}</span>
</div>
<div class="row items-center q-mt-md text-grey-600 q-mb-md" v-if="$q.platform.is.desktop">
<div class="col q-mr-md">{{ $t('v102.ticket.sjc.c1') }}</div>
<div class="col q-mr-md">{{ $t('v102.ticket.sjc.c2') }}</div>
<!-- <div class="col-2 q-mr-md">{{ $t('v102.ticket.sjc.c3') }}</div> -->
<div class="col-2 q-mr-md">{{ $t('v102.ticket.sjc.c3') }}</div>
<div class="col q-mr-md">{{ $t('v102.ticket.sjc.c4') }}</div>
<div class="col-4">{{ $t('v102.ticket.sjc.c5') }}</div>
<div class="col-4" v-if="msg.MailingState == '2'">{{ $t('v102.ticket.sjc.c5') }}</div>
</div>
<div style="border-top: 1px dashed #eee" :class="{'row items-center':$q.platform.is.desktop,'column':$q.platform.is.mobile}">
<q-input dense standout v-model="msg.Name" class="col q-mt-md" :class="{'q-mr-md':$q.platform.is.desktop}" :placeholder="$t('v102.ticket.sjcp.c1')" :rules="[ val => val && val.length > 0 || ' ']" ref="guestEName"/>
<q-input dense standout v-model="msg.EName" class="col q-mt-md" :class="{'q-mr-md':$q.platform.is.desktop}" :placeholder="$t('v102.ticket.sjcp.c2')" :rules="[ val => val && val.length > 0 || ' ']" ref="guestName"/>
<!-- <div class="col-2 q-mr-md q-mt-md">
<q-input dense standout v-model="msg.Name" class="col q-mt-md" :class="{'q-mr-md':$q.platform.is.desktop}" :placeholder="$t('v102.ticket.sjcp.c1')" :rules="[ val => val && val.length > 0 || ' ']" ref="guestName"/>
<q-input dense standout v-model="msg.EName" class="col q-mt-md" :class="{'q-mr-md':$q.platform.is.desktop}" :placeholder="$t('v102.ticket.sjcp.c2')" :rules="[ val => val && val.length > 0 || ' ']" ref="guestEName"/>
<div class="col-2 q-mr-md q-mt-md">
<q-radio v-model="msg.Sex" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" val="1" :label="$t('v102.ticket.sex.man')" />
<q-radio v-model="msg.Sex" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" val="0" :label="$t('v102.ticket.sex.women')" />
</div> -->
<q-radio v-model="msg.Sex" checked-icon="task_alt" unchecked-icon="panorama_fish_eye" val="2" :label="$t('v102.ticket.sex.women')" />
</div>
<q-input dense standout v-model="msg.Mobile" class="col q-mt-md" :class="{'q-mr-md':$q.platform.is.desktop}" :placeholder="$t('v102.ticket.sjcp.c4')" :rules="[ val => val && val.length == 11 || ' ']" ref="guestMobile"/>
<q-input dense standout v-model="msg.MailingAddress" class="col-4 q-mt-md" :placeholder="$t('v102.ticket.sjcp.c5')" :rules="[(val:any, rules:any) => rules.email(val) || ' ']" ref="guestEmail"/>
<q-input v-if="msg.MailingState == '2'" dense standout v-model="msg.MailingAddress" class="col-4 q-mt-md" :placeholder="$t('v102.ticket.sjcp.c5')" :rules="[ val => val && val.length > 0 || ' ']" ref="guestAddress"/>
</div>
</div>
<div class="q-mt-md">
......@@ -115,8 +117,7 @@
<div class="bg-orange-1 q-pa-md rounded-borders fz14" style="border: 1px dashed orange">
<div class="text-weight-bold">{{ $t('v102.ticket.d5') }}</div>
<div class="text-grey-700 q-mt-sm">
景区营业时间:7:00-15:30 可提前 7天 网上预订, 亦可于当日15:30 前预订景区门票。 (景区严禁携带宠物 景区单日 游客限量18000/日) 1、本景区限网上及手机客户端预订,不接受电话预订,且实行实名制预定,所有游客订票须录入身份证信息方可预定。 2、每个身份证,每日限购一张门票。每个用户每单限购八张门票,超过八张须分别下单。 3、儿童免票也需购票,方可入园。儿童免票对象(实行门票免票优惠的范围和群体):6周岁(含6周岁)以下的儿童享受门票和观光车票全免。 4、优惠对象:在校学生(全日制教育含本科以下)、青少年(7周岁-18周岁)、省级宗教部门颁发证书的宗教界人士、60周岁-64周岁老年人(国家法定节假日)。 5、免票对象:对符合政策条件的现役军人、伤残军人、在职、退休、残疾消防员人员和消防救援院校学员、残疾人、离休干部、抗美援朝军人、6周岁(含6周岁)以下儿童、65周岁以上老年人(自2018年10月1日起执行)、60周岁以上老年人(非国家法定节假日)(自2018年10月1日起执行)。 联票预订规则: ①、景区联票限连续三天进入同一景区游览的游客预订;
②、联票分次预订分次使用,即在使用一次入园联票进入景区后,再预订二次入园联票;使用二次入园联票进入景区后,再预订三次入园联票。 ③、景区接待量到达单日限量时,联票停止预订。 ④、其余预订规则按照预订须知执行,退改签、取票规则按照退订须知、取票须知执行。 以上信息仅供参考,具体信息请以景区当天披露为准。
{{detailsObj.BookingInfo}}
</div>
</div>
</div>
......@@ -136,8 +137,8 @@
<div v-if="isCheck">
<template v-for="x in types">
<div class="row items-center q-mt-md" v-if="x.checked">
<q-badge color="grey-3" style="padding: 5px 8px" text-color="info" :label="x.name" />
<div class="col f12 text-right">{{x.price.toFixed(2)}} x {{x.num}}{{ $t('v102.ticket.unit') }}</div>
<q-badge color="grey-3" style="padding: 5px 8px" text-color="info" :label="x.TicketName" />
<div class="col f12 text-right">{{x.B2BPrice.toFixed(2)}} x {{x.num}}{{ $t('v102.ticket.unit') }}</div>
</div>
</template>
</div>
......@@ -161,8 +162,7 @@
<div class="bg-orange-1 q-pa-md rounded-borders fz14" style="border: 1px dashed orange">
<div class="text-weight-bold">{{ $t('v102.ticket.d5') }}</div>
<div class="text-grey-700 q-mt-sm">
景区营业时间:7:00-15:30 可提前 7天 网上预订, 亦可于当日15:30 前预订景区门票。 (景区严禁携带宠物 景区单日 游客限量18000/日) 1、本景区限网上及手机客户端预订,不接受电话预订,且实行实名制预定,所有游客订票须录入身份证信息方可预定。 2、每个身份证,每日限购一张门票。每个用户每单限购八张门票,超过八张须分别下单。 3、儿童免票也需购票,方可入园。儿童免票对象(实行门票免票优惠的范围和群体):6周岁(含6周岁)以下的儿童享受门票和观光车票全免。 4、优惠对象:在校学生(全日制教育含本科以下)、青少年(7周岁-18周岁)、省级宗教部门颁发证书的宗教界人士、60周岁-64周岁老年人(国家法定节假日)。 5、免票对象:对符合政策条件的现役军人、伤残军人、在职、退休、残疾消防员人员和消防救援院校学员、残疾人、离休干部、抗美援朝军人、6周岁(含6周岁)以下儿童、65周岁以上老年人(自2018年10月1日起执行)、60周岁以上老年人(非国家法定节假日)(自2018年10月1日起执行)。 联票预订规则: ①、景区联票限连续三天进入同一景区游览的游客预订;
②、联票分次预订分次使用,即在使用一次入园联票进入景区后,再预订二次入园联票;使用二次入园联票进入景区后,再预订三次入园联票。 ③、景区接待量到达单日限量时,联票停止预订。 ④、其余预订规则按照预订须知执行,退改签、取票规则按照退订须知、取票须知执行。 以上信息仅供参考,具体信息请以景区当天披露为准。
{{detailsObj.BookingInfo}}
</div>
</div>
</div>
......@@ -210,14 +210,8 @@ export default defineComponent({
Mobile:'',
CouponsId:'',//景点id
DetailList:[] as any,
Address: '',
},
types: [
{ id: 1, name: `${t('v102.ticket.ticketet')}`, price: 900.0, checked: false, num: 1 },
{ id: 2, name: `${t('v102.ticket.ticketcr')}`, price: 1800.0, checked: false, num: 1 },
{ id: 13, name: `${t('v102.ticket.ticketxs')}`, price: 1200.0, checked: false, num: 1 },
{ id: 23, name: `${t('v102.ticket.ticketjt')}`, price: 4000.0, checked: false, num: 1 }
],
types: [],
isCheck: false,
OpenTime: '',
detailsObj: {} as any,
......@@ -225,26 +219,35 @@ export default defineComponent({
const guestName = ref(null) as any
const guestEName = ref(null) as any
const guestMobile = ref(null) as any
const guestEmail = ref(null) as any
const guestAddress = ref(null) as any
let time = currentRouter.currentRoute.value.params.Time
data.OpenTime = time.substring(0,4)+'-'+time.substring(4,6)+'-'+time.substring(6,8)
data.msg.CouponsId = currentRouter.currentRoute.value.params.ticketId
data.msg.UseDate = date.formatDate(date.addToDate(new Date(), { days: 1 }), 'MM月DD日 ddd')
// date.formatDate(date.addToDate(new Date(), { days: 1 }), 'MM月DD日 ddd')
data.msg.UseDate = date.formatDate(date.addToDate(new Date(), { days: 1 }), 'YYYY/MM/DD')
const menu = inject(DirtionmaryHelper.MENU_KEYS) as any
menu.value = 8
const methods = {
getInfo(){
if(data.OpenTime){
getInfo(value:String, reason:any, details:any){
if(data.OpenTime||value){
let param = {
CouponsId:data.msg.CouponsId,
OpenTime:data.OpenTime
OpenTime: value?value:data.OpenTime
}
TicketService.getTicketInfo(param)
.then(r => {
if (r.data.resultCode == ApiResult.SUCCESS) {
data.detailsObj = r.data.data
console.log(data.detailsObj,'----')
let addList = function (arr) {
arr.forEach(item => {
item.checked = false
item.num = 1
});
};
addList(r.data.data.TicketPriceList);
data.types = r.data.data.TicketPriceList
} else {
message.errorMsg(r.data.message)
}
......@@ -255,36 +258,49 @@ export default defineComponent({
}
},
submit(){
console.log(data.isCheck,'0099')
methods.getNum()
if(!data.isCheck) return
if(data.msg.MailingState=='2'){
if(data.loading) return
data.loading = true
let flag = false
guestName.value.validate()
guestEName.value.validate()
guestMobile.value.validate()
guestEmail.value.validate()
flag = !guestName.value.hasError && !guestEName.value.hasError && !guestMobile.value.hasError && !guestEmail.value.hasError
if(!flag) return
if(data.msg.MailingState=='2'){
guestAddress.value.validate()
flag = !guestName.value.hasError && !guestEName.value.hasError && !guestMobile.value.hasError && !guestAddress.value.hasError
}else{
data.msg.Name = ''
data.msg.EName = ''
data.msg.Mobile = ''
flag = !guestName.value.hasError && !guestEName.value.hasError && !guestMobile.value.hasError
data.msg.MailingAddress = ''
}
if(!flag) return
data.msg.DetailList = [] as any
data.types.forEach(x=>{
if(x.checked){
let y = {
TicketType: x.TicketCouponsType,
TicketName: x.TicketName,
Unit_Price: x.B2BPrice,
Num: x.num,
Money: x.B2BPrice*x.num,
TicketId: x.TicketID
}
data.msg.DetailList.push(y)
}
})
let param = Object.assign(data.msg)
return
TicketService.setTicketOrder(param)
.then(r => {
if (r.data.resultCode == ApiResult.SUCCESS) {
data.isCheck = false
data.pages.PageCount = r.data.data.pageCount
message.successMsg(`${t('success')}`)
} else {
message.errorMsg(r.data.message)
}
methods.getInfo()
data.loading = false
}).catch(e => {
data.loading = false
message.errorMsg(e.message)
data.isCheck = false
})
},
showCardHandler() {
......@@ -315,15 +331,23 @@ export default defineComponent({
methods.calcMoneyHandler()
},
changePeople(val: string) {
// setTimeout(()=>{
// methods.calculateNum()
// },50)
methods.getNum()
},
getNum(){
data.types.forEach(x=>{
if(x.num>x.RemainingInventory){
x.num = x.RemainingInventory
}
})
setTimeout(()=>{
methods.calcMoneyHandler()
},50)
},
calcMoneyHandler(){
data.msg.Money=0.0
data.types.forEach(x=>{
if(x.checked){
data.msg.Money+=x.price*x.num
data.msg.Money+=x.B2BPrice*x.num
}
})
}
......@@ -336,7 +360,7 @@ export default defineComponent({
guestName,
guestEName,
guestMobile,
guestEmail
guestAddress
}
}
})
......
......@@ -227,7 +227,7 @@ export function getTicketOrderType(getNormal:boolean = false):Array<OrderType>{
let typeLangs=[t('v102.ticket.zq'),t('v102.ticket.yj')]
typeLangs.forEach((x:string,i:number)=>{
types.push({
TypeId:i,
TypeId:i+1,
TypeName:x
})
})
......
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