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
})
......
......@@ -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
......
This diff is collapsed.
......@@ -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