ee263aea by zhangmeng

Merge branch 'order' into dev-order

2 parents d2718611 71087b02
...@@ -47,6 +47,7 @@ export function newbilllist(query) { ...@@ -47,6 +47,7 @@ export function newbilllist(query) {
47 params: query 47 params: query
48 }) 48 })
49 } 49 }
50
50 export function vistorRegister(data) { 51 export function vistorRegister(data) {
51 return request({ 52 return request({
52 url: `/pcSimpleRegister`, 53 url: `/pcSimpleRegister`,
...@@ -68,3 +69,41 @@ export function upgradeTeam(data) { ...@@ -68,3 +69,41 @@ export function upgradeTeam(data) {
68 data: data 69 data: data
69 }) 70 })
70 } 71 }
72
73 export function submitMasterApply(data) {
74 return request({
75 url: `/league/courseUser`,
76 method: 'post',
77 data: data
78 })
79 }
80 export function masterClassList(query) {
81 return request({
82 // url: `/league/courseItem/list`,
83 url: `/league/courseItem/getCoursrItemByCourseId`,
84 method: 'get',
85 params: query
86 })
87 }
88 export function getByCard(query) {
89 return request({
90 url: `/league/courseUser/getByCard`,
91 method: 'get',
92 params: query
93 })
94 }
95 export function getMasterApply(query) {
96 return request({
97 url: `/league/courseUser/getCourseByUser`,
98 method: 'get',
99 params: query
100 })
101 }
102 export function delByCard(card) {
103 return request({
104 url: `/league/courseUser/delByCard?card=${card}`,
105 method: 'delete'
106 })
107 }
108
109
......
...@@ -286,7 +286,7 @@ export const rankList = [ ...@@ -286,7 +286,7 @@ export const rankList = [
286 tong: '0' 286 tong: '0'
287 }, 287 },
288 { 288 {
289 index: '2', 289 index: '1',
290 code: 'md', 290 code: 'md',
291 name: 'Alexey Glukhov - Anastasia Glazunova', 291 name: 'Alexey Glukhov - Anastasia Glazunova',
292 gj: '摩尔多瓦共和国', 292 gj: '摩尔多瓦共和国',
...@@ -296,7 +296,7 @@ export const rankList = [ ...@@ -296,7 +296,7 @@ export const rankList = [
296 tong: '0' 296 tong: '0'
297 }, 297 },
298 { 298 {
299 index: '3', 299 index: '1',
300 code: 'de', 300 code: 'de',
301 name: 'Marius-Andrei Balan - Khrystyna Moshenska', 301 name: 'Marius-Andrei Balan - Khrystyna Moshenska',
302 gj: '德国', 302 gj: '德国',
......
...@@ -440,12 +440,24 @@ export const constantRoutes = [ ...@@ -440,12 +440,24 @@ export const constantRoutes = [
440 meta: { title: 'pay' } 440 meta: { title: 'pay' }
441 }, 441 },
442 { 442 {
443 path: 'payticket',
444 component: () => import('@/viewsPc/booking/payticket'),
445 name: 'payticket',
446 meta: { title: '票务' }
447 },
448 {
443 path: 'payOk', 449 path: 'payOk',
444 component: () => import('@/viewsPc/booking/payOk'), 450 component: () => import('@/viewsPc/booking/payOk'),
445 name: 'bookingPayOk', 451 name: 'bookingPayOk',
446 meta: { title: 'payOk' } 452 meta: { title: 'payOk' }
447 }, 453 },
448 { 454 {
455 path: 'payticketOk',
456 component: () => import('@/viewsPc/booking/payticketOk'),
457 name: 'payticketOk',
458 meta: { title: '票务-paypal' }
459 },
460 {
449 path: 'invoice', 461 path: 'invoice',
450 component: () => import('@/viewsPc/booking/invoicing'), 462 component: () => import('@/viewsPc/booking/invoicing'),
451 name: 'invoice', 463 name: 'invoice',
......
...@@ -47,8 +47,8 @@ ...@@ -47,8 +47,8 @@
47 <h3 class="name flex">{{ r.carType }} 47 <h3 class="name flex">{{ r.carType }}
48 <div class="tagbox"> 48 <div class="tagbox">
49 <span class="tag">{{r.carColor}}</span> 49 <span class="tag">{{r.carColor}}</span>
50 <span class="tag" v-show="r.checkOut==1">可送车</span> 50 <span class="tag" v-show="r.checkOut==1">{{ language==0?'可送车':'drop-off' }}</span>
51 <span class="tag" v-show="r.checkIn==1">可接车</span> 51 <span class="tag" v-show="r.checkIn==1">{{ language==0?'可接车':'pick-up' }}</span>
52 </div> 52 </div>
53 </h3> 53 </h3>
54 <div class="text-gray mt20"> 54 <div class="text-gray mt20">
......
...@@ -3,10 +3,8 @@ ...@@ -3,10 +3,8 @@
3 <div class="box"> 3 <div class="box">
4 <el-card class="mt30" v-loading="loading"> 4 <el-card class="mt30" v-loading="loading">
5 <el-row v-if="form" class="hotel" align="middle" :gutter="20"> 5 <el-row v-if="form" class="hotel" align="middle" :gutter="20">
6 <!-- <el-col :span="6">--> 6
7 <!-- <img class="w100" :src="fillImgUrl(form.photos?.split(',')[0])"/>--> 7 <el-col :lg="16" :sm="24">
8 <!-- </el-col>-->
9 <el-col :span="16">
10 <h3 class="esp flex">{{ form?.name }} 8 <h3 class="esp flex">{{ form?.name }}
11 </h3> 9 </h3>
12 10
...@@ -18,25 +16,18 @@ ...@@ -18,25 +16,18 @@
18 {{ form?.addName }} 16 {{ form?.addName }}
19 </p> 17 </p>
20 </el-col> 18 </el-col>
19 <el-col :lg="8" :sm="24">
20 <el-carousel height="120px">
21 <el-carousel-item v-for="item in form.photos?.split(',')" :key="item">
22 <el-image class="w100 h100" fit="contain" :src="fillImgUrl(item)"/>
23 </el-carousel-item>
24 </el-carousel>
25 </el-col>
21 </el-row> 26 </el-row>
22 <el-empty v-else :image="`/img/order_no.png`" :image-size="228" description=""/> 27 <el-empty v-else :image="`/img/order_no.png`" :image-size="228" description=""/>
23 </el-card> 28 </el-card>
24 29
25 <div class="mt30"> 30 <div class="mt30">
26 <el-row :gutter="20">
27 <el-col :span="10">
28 <div class="imgbox hotelImg">
29 <el-image :src="fillImgUrl(form?.photos?.split(',')[0])" fit="cover" :preview-src-list="form?.photos?.split(',')"/>
30 </div>
31 </el-col>
32 <el-col :span="14">
33 <el-row class="h100" :gutter="20">
34 <el-col :span="8" v-for="(p,index) in form?.photos?.split(',').slice(1,7)" style="height: calc(50% - 10px)">
35 <div class="imgbox hotelImg"><el-image :src="fillImgUrl(p)" fit="cover" :preview-src-list="form?.photos?.split(',')"/></div>
36 </el-col>
37 </el-row>
38 </el-col>
39 </el-row>
40 </div> 31 </div>
41 32
42 <el-card class="mt30 mb60"> 33 <el-card class="mt30 mb60">
...@@ -57,8 +48,8 @@ ...@@ -57,8 +48,8 @@
57 <h3 class="name">{{ r.name }}<span class="text-primary">({{ r.categoryName }})</span></h3> 48 <h3 class="name">{{ r.name }}<span class="text-primary">({{ r.categoryName }})</span></h3>
58 <el-row :gutter="10"> 49 <el-row :gutter="10">
59 <el-col :span="24"> 50 <el-col :span="24">
60 <p>{{ language==0?'配送时间':'Delivery time' }}{{ r.psStart }}~{{ r.psEnd }}</p> 51 <p>{{ language == 0 ? '配送时间' : 'Delivery time' }}{{ r.psStart }}~{{ r.psEnd }}</p>
61 <p>{{ language==0?'配送地址':'Delivery address' }}{{ r.address }}</p> 52 <p>{{ language == 0 ? '配送地址' : 'Delivery address' }}{{ r.address }}</p>
62 </el-col> 53 </el-col>
63 </el-row> 54 </el-row>
64 </el-col> 55 </el-col>
...@@ -83,9 +74,9 @@ ...@@ -83,9 +74,9 @@
83 </template> 74 </template>
84 75
85 <script setup> 76 <script setup>
86 import {useRouter,useRoute} from "vue-router"; 77 import {useRouter, useRoute} from "vue-router";
87 import {ref, onMounted} from "vue"; 78 import {ref, onMounted} from "vue";
88 import { getMenuById} from "@/apiPc/booking" 79 import {getMenuById} from "@/apiPc/booking"
89 import {useStorage} from "@vueuse/core/index"; 80 import {useStorage} from "@vueuse/core/index";
90 import useUserStore from "@/store/modules/user"; 81 import useUserStore from "@/store/modules/user";
91 import {fillImgUrl} from "@/utils/ruoyi"; 82 import {fillImgUrl} from "@/utils/ruoyi";
...@@ -118,7 +109,7 @@ function getData() { ...@@ -118,7 +109,7 @@ function getData() {
118 var arr = [] 109 var arr = []
119 m.photosList = [] 110 m.photosList = []
120 arr = m.photos?.split(',') 111 arr = m.photos?.split(',')
121 for (var a of arr){ 112 for (var a of arr) {
122 m.photosList.push(fillImgUrl(a)) 113 m.photosList.push(fillImgUrl(a))
123 } 114 }
124 m.num = 0 115 m.num = 0
...@@ -135,7 +126,7 @@ function getData() { ...@@ -135,7 +126,7 @@ function getData() {
135 126
136 function goOrder(n) { 127 function goOrder(n) {
137 if (!user) { 128 if (!user) {
138 useUserStore().setReLogin() 129 useUserStore().setVisitor()
139 return 130 return
140 } 131 }
141 router.push({ 132 router.push({
......
...@@ -113,6 +113,7 @@ const canOrderNum = ref(0) ...@@ -113,6 +113,7 @@ const canOrderNum = ref(0)
113 const form = ref({ 113 const form = ref({
114 num: 1, 114 num: 1,
115 phone: user.phonenumber||'', 115 phone: user.phonenumber||'',
116 total:0
116 }) 117 })
117 const rzRange = ref([]) 118 const rzRange = ref([])
118 const rzUserArr = ref([]) 119 const rzUserArr = ref([])
...@@ -126,11 +127,7 @@ onMounted(() => { ...@@ -126,11 +127,7 @@ onMounted(() => {
126 food.value = JSON.parse(decodeURIComponent(route.query.food)) 127 food.value = JSON.parse(decodeURIComponent(route.query.food))
127 form.value = food.value 128 form.value = food.value
128 restaurant.value = JSON.parse(decodeURIComponent(route.query.restaurant)) 129 restaurant.value = JSON.parse(decodeURIComponent(route.query.restaurant))
129 if(language.value == 0){ 130 form.value.total = 0
130 form.value.total = food.value.foodPrice
131 } else {
132 form.value.total = food.value.foodPriceEn
133 }
134 console.log(food.value,restaurant.value) 131 console.log(food.value,restaurant.value)
135 initDays() 132 initDays()
136 const today = dayjs() 133 const today = dayjs()
......
1 <template>
2 <div style="min-height: 100vh">
3 <div class="box" v-if="!errorBox">
4 <el-card :body-style="{ padding: '0px' }" class="mt20 mb60">
5 <div slot="header">
6 <div class="bg-lineg">{{ language == 0 ? '缴费清单' : 'Payment List' }}</div>
7 </div>
8 <div v-if="isLogin">
9 <div class="pd20">
10 <div v-if="type == 'hotel'">
11 <div class="leftboderTT">{{ language == 0 ? '酒店信息' : 'Hotel Information' }}</div>
12 <div class="border-info mt20">
13 <h3>{{ form.hotelName }}</h3>
14 <el-row>
15 <el-col>
16 {{ language == 0 ?'地址':'Address' }}
17 <span v-if="language == 0">{{ form.provinceName }} {{ form.cityName }} {{ form.areaName }} </span>
18 {{ form.address }}
19 </el-col>
20 <el-col>
21 {{ language == 0 ?'入住信息':'Check-in&Check-out' }}{{ form.messageObj?.roomStayDate }}
22 </el-col>
23 <el-col>
24 {{ language == 0 ?'房间信息':'Room Information' }}{{ form.messageObj?.roomName }}{{ form.roomNum }}
25 {{ language == 0 ? '间':'rooms' }}
26 </el-col>
27 </el-row>
28 </div>
29 </div>
30 <div v-if="type == 'car'">
31 <div class="leftboderTT">{{ language == 0 ? '路线信息' : 'Car Information' }}</div>
32 <div class="border-info mt20">
33 <div class="flex aic">
34 <h3 class="esp">{{ form.checkIn }}</h3>
35 <img class="w40px mlr20 " style="height: 40px;" src="@/assets/booking/wf.png"/>
36 <h3 class="esp">{{ form.checkOut }}</h3>
37 </div>
38 </div>
39 </div>
40 <div v-if="type == 'food'">
41 <div class="leftboderTT">{{ language == 0 ? '饭店信息' : 'Restaurant Information' }}</div>
42 <div class="border-info mt20">
43 <h3>{{ form.name }}</h3>
44 <!-- <p>{{ language == 0 ?'地址':'Address' }}{{form.address}}</p>-->
45 <el-row>
46 <el-col :lg="12" :md="12" :sm="12" :xs="24">
47 <div class="mb10">{{ language==0?'送餐地址':'Delivery Address' }}{{ form.address || '-' }}</div>
48 </el-col>
49 <el-col :lg="12" :md="12" :sm="12" :xs="24">
50 <div>{{ language==0?'送餐时间':'Delivery Time' }}{{form.psStart}} ~ {{ form.psEnd}}</div>
51 </el-col>
52 </el-row>
53 </div>
54 </div>
55 <div v-if="type == 'makeUp'">
56 <div class="leftboderTT">{{ language == 0 ? '化妆信息' : 'Hotel Information' }}</div>
57 <div class="border-info mt20">
58 <h3>{{ formInfo.studioName }}</h3>
59 <el-row>
60 <el-col>
61 {{ language == 0 ?'地址':'Address' }}
62 <span >{{ formInfo.remarks }} </span>
63 </el-col>
64 <el-col>
65 {{ language == 0 ?'套餐':'Package' }}{{ formInfo.mealName }} <span style="margin-left: 40px">{{ language==0?'价格':'Price' }}</span><span class="price">{{language==0? '¥'+formInfo.mealPrice:'€'+ formInfo.mealPriceEn}}</span>
66 </el-col>
67 <el-col>
68 {{ language == 0 ?'套餐说明':'Package Description' }}{{ formInfo.introduction}}
69 </el-col>
70 </el-row>
71 </div>
72 </div>
73 <div v-if="type == 'photography'">
74 <div class="leftboderTT">{{ language == 0 ? '拍摄信息' : 'Shooting Information' }}</div>
75 <div class="border-info mt20">
76 <h3>{{ formInfo.shootName }}</h3>
77 <el-row>
78 <el-col>
79 {{ language == 0 ?'地址':'Address' }}
80 <span >{{ formInfo.remarks }} </span>
81 </el-col>
82 <el-col>
83 {{ language == 0 ?'套餐':'Package' }}{{ formInfo.photoName }} <span style="margin-left: 40px">{{ language==0?'价格':'Price' }}</span><span class="price">{{language==0? '¥'+formInfo.photoPrice:'€'+ formInfo.photoPriceEn}}</span>
84 </el-col>
85 <el-col>
86 {{ language == 0 ?'套餐说明':'Package Description' }}{{ formInfo.introduction}}
87 </el-col>
88 </el-row>
89 </div>
90 </div>
91
92 <div class="leftboderTT">{{ language == 0 ? '预订信息' : 'Booking information' }}</div>
93
94 <div class="border-info mt20">
95 <el-row v-if="type == 'hotel'">
96 <el-col :lg="8" :md="12" :sm="12" :xs="24">
97 <div>{{ language == 0 ?'入住人':'Check-in Person' }}{{ form.rzUsers }}</div>
98 </el-col>
99 <el-col :lg="8" :md="12" :sm="12" :xs="24">{{ language == 0 ?'联系方式':'Contact Information' }}{{ form.phone }}</el-col>
100 <el-col :lg="8" :md="12" :sm="12" :xs="24"></el-col>
101 </el-row>
102 <el-row v-if="type == 'car'">
103 <el-col :lg="12" :md="12" :sm="12" :xs="24" v-if="form.pickUpBo?.revTime">
104 <h4>{{ language == 0 ?'接站信息':'Pick-up Information' }}</h4>
105 <div class="st-info">
106 <div>{{ language == 0 ?'用车时间':'Delivery Time' }}{{ form.pickUpBo.revTime }}</div>
107 <div class="carLine" v-for="(car,index) in form.pickUpBo.carsList" :key="index">
108 <div v-if="car.num > 0">
109 <label>{{car.name}}</label>
110 <el-tag class="mr10">{{car.carSeat}} {{ language == 0 ?'座 ':'Sets'}}</el-tag>
111 <el-tag>{{car.carColor}}</el-tag>
112 </div>
113
114 <span v-if="car.num > 0"> {{car.num}}{{ language == 0 ?'辆':'Cars' }} * {{ language == 0 ?'¥':'€' }}{{car.price}}</span>
115 </div>
116
117 <div>{{ language == 0 ?'人数':'People' }}{{form.pickUpBo.count}}</div>
118 <div>{{ language == 0 ?'航班/火车班次':'Flight/Train' }}{{form.pickUpBo.no}}</div>
119 <div>{{ language == 0 ?'接机/接站地点':'Pick-up/Drop-off Place' }}{{form.pickUpBo.noAddress}}</div>
120 <div>{{ language == 0 ?'送达地点':'Delivery Place' }}{{form.pickUpBo.deliveryAddress}}</div>
121 <div>{{ language == 0 ?'联系人':'Contact Person' }}{{ form.dropOffBo.contacts }}</div>
122 <div>{{ language == 0 ?'联系电话':'Contact Phone' }}{{ form.dropOffBo.phone }}</div>
123 <div>{{ language == 0 ?'备注':'Remarks' }}{{ form.dropOffBo.remarks ||'-'}}</div>
124 </div>
125 </el-col>
126 <el-col :lg="12" :md="12" :sm="12" :xs="24" v-if="form.dropOffBo?.revTime">
127 <h4>{{ language == 0 ?'送站信息':'Drop-off Information' }}</h4>
128 <div class="st-info">
129 <div>{{ language == 0 ?'用车时间':'Delivery Time' }}{{ form.dropOffBo.revTime }}</div>
130 <div class="carLine" v-for="(car,index) in form.dropOffBo.carsList" :key="index">
131 <div v-if="car.num > 0">
132 <label>{{car.name}}</label>
133 <el-tag class="mr10">{{car.carSeat}} {{ language == 0 ?'座 ':'Sets'}}</el-tag>
134 <el-tag>{{car.carColor}}</el-tag>
135 </div>
136
137 <span v-if="car.num > 0"> {{car.num }}{{ language == 0 ?'辆':'Cars' }} * {{ language == 0 ? '¥' : '€' }}{{car.price}}</span>
138 </div>
139 <div>{{ language == 0 ?'人数':'Counts' }}{{ form.dropOffBo.count }}</div>
140 <div>{{ language == 0 ?'联系人':'Contact Person' }}{{ form.dropOffBo.contacts }}</div>
141 <div>{{ language == 0 ?'联系电话':'Contact Phone' }}{{ form.dropOffBo.phone }}</div>
142 <div>{{ language == 0 ?'备注':'Remarks' }}{{ form.dropOffBo.remarks ||'-'}}</div>
143 </div>
144 </el-col>
145 </el-row>
146 <el-row v-if="type == 'food'">
147 <el-col :lg="8" :md="12" :sm="12" :xs="24">
148 <div v-for="f in form.messageObj?.foodsList">
149 <span v-if="f.category==0">{{language==0?'早餐':'Breakfast'}}</span>
150 <span v-if="f.category==1">{{language==0?'午餐':'Lunch'}}</span>
151 <span v-if="f.category==2">{{language==0?'晚餐':'Dinner'}}</span>
152 {{f.name}} * {{f.num}} {{language==0?'份':'pcs'}}
153 </div>
154 </el-col>
155 <el-col :lg="12" :md="12" :sm="12" :xs="24">
156 <div class="mb10">{{ language==0?'订餐周期':'Check-in date' }}{{ form.extJsonObj?.dcStart || '-' }} ~ {{form.extJsonObj?.dcEnd|| '-'}}</div>
157 </el-col>
158 <el-col :lg="8" :md="12" :sm="12" :xs="24">
159 <div class="mb10">{{ language==0?'联系人':'Contact Person' }}{{ form.contacts }}</div>
160 </el-col>
161 <el-col :lg="8" :md="12" :sm="12" :xs="24">{{ language==0?'联系方式':'Contact Phone' }}{{ form.phone }}</el-col>
162 <el-col :span="24" >{{ language==0?'备注':'Remarks' }}{{ form.remarks || '-' }}</el-col>
163 </el-row>
164 <el-row v-if="type == 'makeUp'">
165 <el-col :lg="8" :md="12" :sm="12" :xs="24">
166 <div class="mb10">{{ language==0?'化妆时间':'Makeup time' }}
167 <!-- {{ dayjs(form.dcStart).format('YYYY-MM-DD') +'&nbsp;' }} ~ {{dayjs(form.dcStart).format('YYYY-MM-DD') +'&nbsp;'}}-->
168 {{ dayjs(form.dcStart).format('YYYY-MM-DD') +'&nbsp;'+ form.nameStart }} ~ {{dayjs(form.dcStart).format('YYYY-MM-DD') +'&nbsp;'+form.nameEnd}}
169 </div>
170 </el-col>
171 <el-col :lg="12" :md="12" :sm="12" :xs="24">
172 <div class="mb10">{{ language==0?'预约数':'Number of appointments' }}{{ form.num }} </div>
173 </el-col>
174 <el-col :lg="8" :md="12" :sm="12" :xs="24">
175 <div class="mb10">{{ language==0?'联系人':'Contact Person' }}{{ form.contacts }}</div>
176 </el-col>
177 <el-col :lg="8" :md="12" :sm="12" :xs="24">{{ language==0?'联系方式':'Contact Phone' }}{{ form.phone }}</el-col>
178 <el-col :span="24" >{{ language==0?'备注':'Remarks' }}{{ form.remarks }}</el-col>
179 </el-row>
180 <el-row v-if="type == 'photography'">
181 <el-col :lg="8" :md="12" :sm="12" :xs="24">
182 <div class="mb10">{{ language==0?'拍摄时间':'Makeup time' }}
183 {{ dayjs(form.dcStart).format('YYYY-MM-DD') +'&nbsp;'+ form.nameStart }} ~ {{dayjs(form.dcStart).format('YYYY-MM-DD') +'&nbsp;'+form.nameEnd}}
184 </div>
185 </el-col>
186 <el-col :lg="12" :md="12" :sm="12" :xs="24">
187 <div class="mb10">{{ language==0?'预约数':'Number of appointments' }}{{ form.num }} </div>
188 </el-col>
189 <el-col :lg="8" :md="12" :sm="12" :xs="24">
190 <div class="mb10">{{ language==0?'联系人':'Contact Person' }}{{ form.contacts }}</div>
191 </el-col>
192 <el-col :lg="8" :md="12" :sm="12" :xs="24">{{ language==0?'联系方式':'Contact Phone' }}{{ form.phone }}</el-col>
193 <el-col :span="24" >{{ language==0?'备注':'Remarks' }}{{ form.remarks }}</el-col>
194 </el-row>
195 </div>
196
197 <el-row justify="space-between" align="middle">
198 <el-col :lg="12">
199 <div v-if="form.payDate">{{ language == 0 ? '支付时间' : 'Payment Time' }}{{form.payDate}}</div>
200 <div class="mt10" v-if="form.payDate">{{ language == 0 ? '支付方式':'Payment Method'}}
201 <span v-if="form.paymentType=='1'">{{language==0?'微信支付':'WePay'}}</span>
202 <span v-if="form.paymentType=='3'">PayPal</span>
203 </div>
204 </el-col>
205 <el-col :lg="12" class="result">
206 <div class="priceb" v-if="form.viewStatus=='0'">{{ language == 0 ? '待支付金额' : 'Amount Due' }}
207 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
208 </div>
209 <div class="priceb" v-if="form.viewStatus=='1'||form.viewStatus=='5'">{{ language == 0 ? '已支付金额' : 'Amount Due' }}
210 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
211 </div>
212 <div class="priceb" v-if="form.viewStatus=='4'">{{ language == 0 ? '已退订' : 'Refunded' }}
213 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
214 </div>
215 <div class="priceb" v-if="form.viewStatus=='2'">{{ language == 0 ? '已取消' : 'Canceled' }}
216 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
217 </div>
218 <div class="priceb" v-if="form.viewStatus=='7'">{{ language == 0 ? '退款审核中' : 'Refund in review' }}
219 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
220 </div>
221 </el-col>
222 </el-row>
223 </div>
224 </div>
225 <div v-else class="pd20 skeletonBox">
226 <el-skeleton :rows="8"/>
227 <el-button type="primary" class="btn-lineG" size="large" :style="language == 0 ?'width:200px':'width:400px'"
228 round @click="showLogin">
229 {{ language == 0 ? '登录后查看明细' : 'View detailed information after logging in' }}
230 </el-button>
231 </div>
232
233 <div class="pd20" v-if="form.viewStatus == '0'&&(form.surplus!='0,0'&&form.surplus!='0')">
234
235 <div class="leftboderTT">{{ language == 0 ? '选择支付方式' : 'Choose payment method' }}</div>
236 <div class="mt20">
237 <el-radio-group v-model="payType" >
238 <el-radio value="2" v-if="language==0" border>
239 <!-- 微信-->
240 <svg t="1709002960407" class="icon" viewBox="0 0 3152 1024" version="1.1"
241 xmlns="http://www.w3.org/2000/svg" p-id="24747" width="94" height="40">
242 <path
243 d="M381.998922 630.960647c-4.416173 2.208086-8.832345 3.312129-14.352561 3.312129-12.144474 0-22.080863-7.17628-28.1531-17.66469l-2.208086-4.968194-87.771428-204.247978c-1.104043-2.208086-1.104043-4.416173-1.104043-6.624259 0-9.384367 6.624259-16.560647 15.456603-16.560647 3.312129 0 6.624259 1.104043 9.936388 3.312129l103.780054 78.387062c7.728302 4.968194 16.560647 8.280323 26.497035 8.280324 5.520216 0 11.040431-1.104043 16.560647-3.312129l486.330998-230.192992C819.752022 131.381132 676.226415 60.17035 513.380054 60.17035 248.409704 59.618329 32.017251 250.61779 32.017251 486.883019c0 128.069003 64.586523 244.545553 166.15849 322.932614 7.728302 6.072237 13.248518 16.560647 13.248518 27.601079 0 3.312129-1.104043 7.17628-2.208086 10.488409-7.728302 32.017251-20.976819 84.459299-20.97682 86.667386-1.104043 3.312129-2.208086 8.280323-2.208086 13.248517 0 9.384367 6.624259 16.560647 15.456604 16.560647 3.312129 0 6.624259-1.104043 8.832345-3.312129l104.884097-65.138545c7.728302-4.968194 16.560647-8.280323 25.392992-8.280323 4.416173 0 9.936388 1.104043 14.35256 2.208086 49.129919 15.456604 102.676011 23.736927 157.326146 23.736927 265.522372 0 481.362803-191.551482 481.362803-427.816711 0-71.210782-19.872776-139.109434-54.650135-198.175741L385.863073 628.752561l-3.864151 2.208086z"
244 fill="#09BB07" p-id="24748"></path>
245 <path
246 d="M1398.822642 381.998922c-9.384367 19.320755-20.424798 38.641509-32.017251 57.962264v263.866307h-31.465229V485.226954c-13.248518 18.216712-27.049057 34.225337-40.297574 48.025876-3.864151-7.17628-14.352561-23.736927-20.424798-30.361186 34.777358-33.673315 71.210782-82.803235 93.843666-131.933153l30.361186 11.040431z m-8.280324-91.63558c-22.632884 36.985445-59.066307 78.939084-91.635579 105.98814-4.416173-7.17628-13.248518-19.320755-19.320755-25.945013 29.809164-23.736927 62.378437-61.274394 78.939083-92.187601l32.017251 12.144474z m181.615094 289.811321c1.656065 7.728302 6.072237 19.320755 8.832345 24.84097-55.754178 37.537466-66.242588 46.369811-72.866846 54.650135-1.656065-7.728302-8.280323-22.080863-12.696496-28.705121 4.968194-3.312129 12.696496-10.48841 12.696496-28.705121v-54.098114h-60.17035v27.049057c0 38.641509-7.728302 91.083558-42.505661 128.069003-4.416173-7.17628-16.560647-19.320755-22.632884-23.184906 29.809164-31.465229 34.225337-72.866846 34.225337-105.436119v-54.098113h118.684636v82.251213l36.433423-22.632884z m123.100809-176.094879c-9.384367 73.970889-23.184906 136.349326-48.025876 187.687332 16.560647 36.433423 39.193531 66.242588 67.346631 83.355256-7.17628 6.072237-17.112668 18.216712-22.632884 27.049057-25.945013-18.216712-46.369811-45.265768-62.930459-78.939084-20.424798 32.017251-45.81779 59.066307-78.939083 81.699191-3.864151-6.624259-13.248518-19.872776-19.872776-25.392992 36.985445-22.632884 64.034501-52.99407 83.907277-89.979514-12.696496-34.777358-22.080863-73.418868-28.705121-115.372507-4.968194 11.040431-10.48841 22.632884-16.560647 31.465229-3.864151-4.416173-10.48841-13.248518-17.112668-20.424798v5.520216h-154.014017v-29.809165h154.014017v9.384367c24.84097-49.129919 37.537466-118.684636 44.713746-191.551483l31.465229 4.968195c-3.864151 31.465229-8.280323 61.274394-13.800539 90.531536h96.051752v29.809164h-14.904582z m-142.973585 22.632884h-145.181671v-110.404312h24.84097v82.251213h35.32938V278.770889h26.497035v119.78868h33.673316V316.308356h25.392992v110.404312z m55.202156-22.632884c-1.656065 6.624259-3.312129 12.696496-4.416172 18.768734 6.072237 46.369811 14.904582 91.083558 28.1531 130.277088 16.560647-43.057682 26.497035-91.63558 32.569272-149.045822h-56.3062zM1882.393531 289.259299c-10.48841 31.465229-24.288949 62.378437-39.193531 91.63558v324.036657h-32.017251V437.201078c-13.800539 22.632884-29.257143 42.50566-44.161725 60.170351-3.312129-7.728302-13.248518-24.288949-19.320754-32.017251 41.953639-45.265768 80.043127-114.820485 103.780053-184.927224l30.913208 8.832345z m288.707278 65.690566v29.257143h-294.779515v-29.257143h294.779515z m-267.730459 199.831806h235.713208v147.941779h-30.913208v-16.560647h-174.438814v18.216712h-30.361186v-149.597844z m231.297035-104.332075H1909.994609v-28.1531h224.672776v28.1531zM1909.994609 486.883019h224.672776v28.1531H1909.994609v-28.1531z m23.736927 96.603773V656.90566h174.438814v-73.418868h-174.438814z m81.699192-231.297035c-6.072237-16.560647-20.424798-43.057682-32.017251-61.826415l29.257143-12.144474c13.248518 19.320755 27.601078 44.161725 34.225337 60.722372l-31.465229 13.248517zM2586.221024 468.114286c-26.497035 63.48248-69.002695 111.508356-122.548787 147.941779 50.785984 25.945013 110.956334 43.609704 180.511051 52.442048-7.728302 8.280323-16.560647 23.184906-21.528841 33.673316-75.074933-11.592453-139.661456-32.569272-192.655525-64.034502-57.962264 32.017251-125.308895 52.99407-195.415634 66.794609-3.312129-9.384367-12.696496-25.392992-19.320754-33.121293 66.242588-10.48841 129.173046-28.1531 183.271159-55.202157-44.161725-32.017251-78.939084-72.866846-103.780054-123.65283l10.48841-3.864151h-49.12992v-34.225337h155.670081V383.654987h-176.6469v-34.225337h176.6469V278.770889h35.32938v70.658761h177.750944v34.225337h-177.750944v71.210781H2555.859838l7.176281-1.656064 23.184905 14.904582z m-255.033962 20.976819c23.184906 43.609704 56.858221 80.043127 100.467925 108.748248 44.161725-28.1531 80.043127-63.48248 104.332075-108.748248h-204.8zM2834.630728 292.571429c-13.800539 34.777358-30.361186 69.554717-49.129919 101.571967v308.580054h-34.225337V447.689488c-14.904582 20.976819-31.465229 40.297574-46.921833 56.306199-4.416173-7.728302-14.904582-25.945013-21.528841-34.225337 47.473854-45.265768 91.63558-115.924528 118.132614-188.239353l33.673316 11.040432z m270.490566 123.65283h-58.514286v240.12938c0 25.945013-7.728302 36.985445-24.84097 41.953639-18.216712 5.520216-49.129919 6.072237-99.915903 5.520215-1.656065-8.832345-8.280323-24.84097-13.248518-34.225337 39.193531 1.656065 77.283019 1.656065 88.32345 1.104043 10.48841-1.104043 14.352561-3.864151 14.352561-14.35256V416.224259h-187.687332v-34.225337h187.687332V283.739084h34.777359v97.707816h58.514285v34.777359z m-184.375202 178.854986c-13.800539-28.705121-43.609704-78.939084-67.346631-115.924528l29.809164-13.800539c24.288949 35.881402 55.202156 84.459299 70.106739 112.612399l-32.569272 17.112668z"
247 fill="#595757" p-id="24749"></path>
248 </svg>
249 </el-radio>
250 <el-radio value="3" v-if="language==1" border>
251 <!--paypal-->
252 <svg t="1709002828937" class="icon" viewBox="0 0 4220 1024" version="1.1"
253 xmlns="http://www.w3.org/2000/svg" p-id="22654" width="94" height="40">
254 <path
255 d="M3249.722604 229.409369h-232.537679c-15.641548 0-29.197556 11.470468-32.325865 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h118.875764c11.470468 0 20.855397-8.342159 21.898167-18.769858l27.112016-168.928717c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641547c41.710794 0 81.336049 0 102.191447 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731z"
256 fill="#009CDE" p-id="22655"></path>
257 <path
258 d="M1594.84684 229.409369h-232.537678c-15.641548 0-29.197556 11.470468-32.325866 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h110.533605c15.641548 0 29.197556-11.470468 32.325866-27.112017l25.026476-160.586558c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641548c41.710794 0 81.336049 0 102.191446 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731zM2288.288795 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.213849 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710794 171.014257 34.411405 39.625255 82.378819 56.309572 139.731161 56.309572 99.063136 0 153.287169-63.608961 153.287169-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480652-380.610998c2.08554-10.427699-6.256619-21.898167-18.769858-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.079429-30.240326-16.684318-19.812627-22.940937-46.924644-17.727088-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z"
259 fill="#003087" p-id="22656"></path>
260 <path
261 d="M3943.164559 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.21385 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710795 171.014257 34.411405 39.625255 82.378819 56.309572 139.73116 56.309572 99.063136 0 153.287169-63.608961 153.28717-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480651-380.610998c2.08554-10.427699-6.256619-21.898167-18.769857-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.07943-30.240326-16.684318-19.812627-22.940937-46.924644-17.727087-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z"
262 fill="#009CDE" p-id="22657"></path>
263 <path
264 d="M2880.582074 443.177189h-111.576375c-10.427699 0-20.855397 5.213849-27.112016 14.598778l-154.329939 227.323829-65.694501-217.9389c-4.171079-13.556008-16.684318-22.940937-31.283096-22.940937h-109.490835c-13.556008 0-22.940937 13.556008-18.769857 26.069247l123.046843 360.79837-115.747454 162.672098c-9.384929 12.513238 0 30.240326 15.641548 30.240326h111.576375c10.427699 0 20.855397-5.213849 26.069246-13.556008l371.226069-535.983707c11.470468-13.556008 2.08554-31.283096-13.556008-31.283096z"
265 fill="#003087" p-id="22658"></path>
266 <path
267 d="M4074.553561 245.050916l-94.892057 605.849288c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h95.934827c15.641548 0 29.197556-11.470468 32.325866-27.112017l93.849287-595.421588c2.08554-11.470468-7.299389-21.898167-18.769857-21.898167h-107.405296c-10.427699 1.04277-18.769857 7.299389-19.812627 16.684317z"
268 fill="#009CDE" p-id="22659"></path>
269 <path
270 d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l-13.556008 85.507128c-2.08554 14.598778 9.384929 27.112016 23.983707 27.112016h165.800407c19.812627 0 36.496945-14.598778 39.625255-33.368635l2.08554-8.342159 31.283095-198.126273 2.08554-10.427699c3.12831-19.812627 19.812627-33.368635 39.625255-33.368635h25.026476c160.586558 0 285.718941-64.651731 322.215886-253.393075 15.641548-79.250509 7.299389-144.94501-33.368635-190.826884-12.513238-13.556008-28.154786-26.069246-45.881874-35.454175"
271 fill="#009CDE" p-id="22660"></path>
272 <path
273 d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958-1.04277 9.384929c3.12831-21.898167 21.898167-38.582485 44.839104-38.582485h93.849287c183.527495 0 327.429735-74.03666 369.140529-289.89002l3.12831-18.769857"
274 fill="#012169" p-id="22661"></path>
275 <path
276 d="M326.838693 260.692464c2.08554-13.556008 10.427699-23.983707 21.898167-30.240326 5.213849-2.08554 11.470468-4.171079 16.684318-4.171079h250.264766c29.197556 0 57.352342 2.08554 82.378819 6.256619 7.299389 1.04277 14.598778 2.08554 20.855397 4.17108 7.299389 1.04277 13.556008 3.12831 19.812627 5.213849l9.384929 3.128309c12.513238 4.171079 23.983707 9.384929 34.411405 14.598779 12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958L326.838693 260.692464z"
277 fill="#003087" p-id="22662"></path>
278 </svg>
279 </el-radio>
280 </el-radio-group>
281 <div v-if="payType == '2'&&wePayCodeUrl">
282 <div class="payImgbox flexCenter">
283 <div>
284 <img width="260" class="border" :src="wePayCodeUrl"/>
285 <img class="mt20" src="@/assets/img/sm.png"/>
286 </div>
287 <div class="ml20">
288 <img height="360" src="@/assets/img/rr.jpg"/>
289 </div>
290 </div>
291 <div class="tip text-center text-danger" v-if="language==0">
292 支付后不要关闭此窗口,等待确认支付成功.
293 若长时间未收到支付成功提醒,请刷新页面
294 </div>
295 <div class="tip text-center text-danger" v-else>
296 After payment, do not close this window and wait for confirmation of successful payment.
297 <br/>
298 If you have not received a notification of successful payment for a long time,
299 please refresh the page
300 </div>
301 </div>
302 </div>
303 </div>
304 <el-row class="mt20 mb60" align="middle" justify="center">
305 <el-col :span="24" class="text-center">
306 <el-button v-if="!hideconfirmbtn&&form.viewStatus == '0'" type="primary" @click="goPay" round class="btn-lineG w200px">
307 {{ language == 0 ? '确定' : 'Submit' }}
308 </el-button>
309 <el-button round @click="unsubscribe" v-if="form.viewStatus == '5'">{{ language==0?'退订':'Unsubscribe' }}</el-button>
310 <el-button link class="underline" @click="cancel" v-if="form.viewStatus == '0'">
311 {{ language==0?'取消订单':'Cancel Order' }}
312 </el-button>
313 </el-col>
314 </el-row>
315
316 <div v-if="form.payDate&&form.viewStatus=='1'">
317 <div class="text-center">
318 <el-icon color="#32B16C" size="80">
319 <SuccessFilled/>
320 </el-icon>
321 <p class="text-success">{{ language == 0 ? '支付成功' : 'successful!' }}</p>
322 <h3 class="wePrice">{{ language == 0 ? '¥' : '€' }}{{ totalFee || 0 }}</h3>
323 </div>
324 </div>
325 </el-card>
326 </div>
327
328 <div class="box" v-if="errorBox">
329 <el-result
330 icon="error"
331 :title="language==0?'未找到对应订单':'No corresponding order found'"
332 :sub-title="language==0?'请确认订单号是否正确':'Please confirm if the order number is correct'"
333 >
334 <template #extra>
335 <el-button type="primary" @click="goHome" class="btn-lineG w200px" round>
336 {{ language == 0 ? '返回首页' : 'Home' }}
337 </el-button>
338 </template>
339 </el-result>
340 </div>
341 </div>
342 </template>
343
344 <script setup>
345 import {Search} from "@element-plus/icons-vue"
346 import {getCurrentInstance, ref} from 'vue'
347 import {onMounted} from "@vue/runtime-core"
348 import {useRoute, useRouter} from "vue-router"
349 import * as booking from "@/apiPc/booking"
350 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
351
352 const {proxy} = getCurrentInstance()
353 const route = useRoute()
354 const router = useRouter()
355 const matchInfo = ref({})
356 const approved = ref(true)
357 const tableData = ref([])
358 const payType = ref('2')
359 const orderId = ref(route.query.orderId)
360 const matchId = ref()
361 const groupId = ref()
362 import useUserStore from "@/store/modules/user";
363 import FileUpload from "@/components/FileUpload";
364 import {useStorage} from "@vueuse/core/index";
365 import {ElMessage} from "element-plus";
366 import {
367 cancelOrder,
368 cancelOrder2,
369 getCarBilldetailbyId,
370 getFoodBilldetailbyId,
371 getMealOrderInfoByLogex, getPhotoOrderInfo, getPhotoOrderInfoByLogex
372 } from "@/apiPc/booking";
373 import dayjs from 'dayjs'
374 import {delPerson} from "@/api/exam/person";
375
376 const isLogin = ref(false)
377 const language = useStorage('language', 0)
378 const totalFee = ref('')
379 const wePayCodeUrl = ref('')
380 const form = ref({})
381 const formInfo=ref({})
382 const type = ref('')
383 const errorBox = ref(false)
384 const hideconfirmbtn = ref(false)
385
386 const user = useUserStore().user
387 if (useUserStore().user) {
388 isLogin.value = true
389 }
390 onMounted(() => {
391 if (language.value == 0) {
392 payType.value = '2'
393 } else {
394 payType.value = '3'
395 }
396 if(route.query.type){
397 type.value = route.query.type
398 }
399 if(route.query.orderType){
400 switch (route.query.orderType){
401 case '0':
402 type.value = 'hotel'
403 break
404 case '1':
405 type.value = 'car'
406 break
407 case '2':
408 type.value = 'food'
409 break
410 case '3':
411 type.value = 'makeUp'
412 break
413 case '4':
414 type.value = 'photography'
415 break
416 }
417 }
418
419 getData()
420 })
421
422 function getData() {
423 if(type.value=='car') {
424 return booking.getCarBilldetailbyId({orderId: orderId.value}).then(res => {
425 form.value = res.data
426 if(language.value==0){
427 totalFee.value = res.data.total
428 } else {
429 totalFee.value = res.data.totalEn
430 }
431 }).catch(err => {
432 console.log(err)
433 errorBox.value = true
434 })
435 }
436 if(type.value=='food') {
437 return booking.getFoodBilldetailbyId({orderId: orderId.value}).then(res => {
438 if(language.value==0){
439 totalFee.value = res.data.total
440 } else {
441 totalFee.value = res.data.totalEn
442 }
443 form.value = res.data
444 form.value.messageObj = JSON.parse(form.value.message)
445 form.value.extJsonObj = JSON.parse(form.value.extJson)
446 console.log(form.value)
447 })
448 }
449 if(type.value=='hotel') {
450 return booking.getRoomBilldetailbyId({orderId: orderId.value}).then(res => {
451 if(language.value==0){
452 totalFee.value = res.data.total
453 } else {
454 totalFee.value = res.data.totalEn
455 }
456 form.value = res.data
457 form.value.messageObj = JSON.parse(form.value.message) || {}
458 form.value.extJsonObj = JSON.parse(form.value.extJson) || {}
459 matchId.value = form.value.extJsonObj?.activeId
460 }).catch(err => {
461 console.log(err)
462 errorBox.value = true
463 })
464 }
465 if(type.value=='makeUp') {
466 MakeUpOrder()
467 // MakeUpIno()
468 }
469 if(type.value=='photography') {
470 photographyOrder()
471 // photographyInfo()
472 }
473
474 console.log(payType.value)
475 }
476
477 function goHome() {
478 router.push('/')
479 }
480
481 function goPay() {
482 if (payType.value == '2') {
483 booking.createWePay({orderId: orderId.value}).then(res => {
484 wePayCodeUrl.value = res.data
485 hideconfirmbtn.value = true
486 startforGetData()
487 })
488 }
489 if (payType.value == '3') {
490 booking.createPalPay({orderId: orderId.value}).then(res => {
491 if (res.data) {
492 location.href = res.data
493 }
494 })
495 }
496 }
497
498 let handle;
499
500 function startforGetData() {
501 handle = setTimeout(() => {
502 if (type.value=='photography'){
503 photographyOrder().then(res=>{
504 if (form.value.payDate) {
505 if (handle) {
506 clearTimeout(handle)
507 handle = null
508 }
509 } else {
510 startforGetData()
511 }
512 })
513 }else if(type.value=='makeUp'){
514 MakeUpOrder().then(res=>{
515 if (form.value.payDate) {
516 if (handle) {
517 clearTimeout(handle)
518 handle = null
519 }
520 } else {
521 startforGetData()
522 }
523 })
524 }else{
525 getData().then( res => {
526 if (form.value.payDate) {
527 if (handle) {
528 clearTimeout(handle)
529 handle = null
530 }
531 } else {
532 startforGetData()
533 }
534 })
535 }
536 }, 2000)
537 }
538
539 function showLogin() {
540 useUserStore().setReLogin()
541 }
542
543
544 function MakeUpOrder(){
545 return booking.getMealOrderInfo({orderId: orderId.value}).then(res => {
546 form.value=res.data
547 totalFee.value=language.value==0?form.value.total:form.value.totalEn
548 MakeUpIno()
549 console.log(res)
550 }).catch(err => {
551 console.log(err)
552 errorBox.value = true
553 })
554 }
555
556 function MakeUpIno(){
557 booking.getMealOrderInfoByLogex({asmId: form.value.asmId}).then(res=>{
558 formInfo.value=res.data
559 console.log(res)
560 })
561 .catch((e) => {
562 console.log(e)
563 errorBox.value = true
564 })
565 }
566
567
568 function photographyOrder(){
569 return booking.getPhotoOrderInfo({orderId: orderId.value}).then(res => {
570 form.value=res.data
571 totalFee.value=language.value==0?form.value.total:form.value.totalEn
572 photographyInfo()
573 }).catch(err => {
574 console.log(err)
575 errorBox.value = true
576 })
577 }
578
579 function photographyInfo(){
580 booking.getPhotoOrderInfoByLogex({aspId: form.value.aspId}).then(res=>{
581 formInfo.value=res.data
582 })
583 // .catch((e) => {
584 // console.log(e)
585 // errorBox.value = true
586 // })
587 }
588
589 const cancel = () => {
590 //取消订单
591 proxy.$modal.confirm(language.value == 0 ? '确定取消订单吗 ?' :`Are you sure to cancel the order?`).then(() => {
592 return cancelOrder2(orderId.value).then(res=>{
593 getData()
594 ElMessage({
595 message: language.value == 0?'操作成功':'Successful operation!',
596 type: 'success'
597 })
598 })
599 })
600 }
601 const unsubscribe = () => {
602 proxy.$modal.confirm(language.value == 0 ?`确定退款吗 ?`:'Are you sure to refund?').then(() => {
603 return cancelOrder(orderId.value).then(res=>{
604 getData()
605 ElMessage({
606 message: language.value == 0?'已提交退款,请等待审核!':'Refund has been submitted, please wait for review!',
607 type: 'success'
608 })
609 })
610 })
611 }
612
613
614 </script>
615
616 <style scoped lang="scss">
617 .st-info{line-height: 2;font-size: 14px;}
618 .underline{text-decoration: underline;}
619 .wePrice {
620 font-size: 24px;font-family: "DIN Alternate";
621 font-weight: 400;
622 }
623
624 .el-radio.is-bordered {
625 height: 40px;
626 }
627
628 .border {
629 border: 1px solid #e1e1e1;
630 }
631
632 .leftboderTT {
633 font-weight: 600;
634 font-size: 16px;
635 color: #453DEA;
636 }
637
638 .bg-lineg {
639 height: 40px;
640 line-height: 40px;
641 font-size: 18px;
642 text-align: center;
643 }
644
645 .table {
646 width: 100%;
647 max-width: 1000px;
648 margin: 20px auto;
649
650 .head {
651 background: #EFF2F7;
652 height: 50px;
653 font-size: 16px;
654 font-weight: 400;
655 }
656
657 th {
658 background: #FAFBFD;
659 font-size: 14px;
660 border-bottom: 1px solid #E5E5E5;
661 border-right: 1px solid #E5E5E5;
662 }
663
664 td {
665 border-bottom: 1px solid #E5E5E5;
666 border-right: 1px solid #E5E5E5;
667 padding: 10px;
668 }
669
670 &.table-border {
671 border-top: 1px solid #E5E5E5;
672 border-left: 1px solid #E5E5E5;
673 }
674 }
675
676 .text-gray {
677 font-weight: 400;
678 font-size: 12px;
679 color: #929AA0;
680 }
681
682 .size12 {
683 font-size: 12px;
684 }
685
686 .result {
687 font-size: 22px;
688
689 .flex {
690 display: flex;
691 align-items: center;
692 font-weight: 500;
693
694 img {
695 margin-right: 10px
696 }
697 }
698
699 .priceb {
700 color: #7B7F83;
701 font-size: 16px;
702 text-align: right;
703 line-height: 50px;
704
705 span {
706 font-weight: bold;
707 font-size: 22px;
708 font-family: DIN Alternate;
709 color: #EB6100;
710 }
711 }
712 }
713
714 .skeletonBox {
715 position: relative;
716 overflow: hidden;
717
718 .btn-lineG {
719 position: absolute;
720 left: 0;
721 right: 0;
722 margin: auto;
723 top: 0;
724 bottom: 0;
725 width: 200px;
726 box-shadow: 0 0 1000px 500px rgba(255, 255, 255, 0.5);
727
728 }
729 }
730
731 .payImgbox {
732 text-align: center;
733 border: 1px solid #fff;
734 padding: 20px;
735 }
736
737 .priceBar {
738 padding: 0 0 20px;
739
740 .flex {
741 display: flex;
742 justify-content: right;
743 align-items: baseline;
744
745 .item {
746 font-size: 16px;
747 margin-right: 15px;
748
749 label {
750 color: #95A1A6;
751 }
752
753 span {
754 font-family: DIN Alternate;
755 }
756 }
757 }
758
759 .size26 {
760 font-size: 26px;
761 }
762 }
763
764 .rre {
765 color: #333;
766 font-size: 16px;
767 margin-top: 10px
768 }
769
770 .price{
771 color:orange;
772 }
773 </style>
1 <template>
2 <div>
3 <div class="box">
4 <el-card class="mb60 mt30" v-loading="loading">
5 <div class="text-center mt30">
6 <el-icon color="#32B16C" size="80">
7 <SuccessFilled/>
8 </el-icon>
9 <p class="text-success mb20">{{ language == 0 ? '支付成功' : 'successfully!' }}</p>
10
11 <el-button type="primary" class="btn-lineG mb60" @click="goBillDetail" round>
12 {{ language == 0 ? '返回订单详情' : 'Return order details' }}
13 </el-button>
14 </div>
15 </el-card>
16 </div>
17 </div>
18 </template>
19
20 <script setup>
21 import {ref} from "vue";
22 import {useRoute, useRouter} from "vue-router";
23 import {onMounted} from "@vue/runtime-core";
24 import {callbackPalPay} from "@/apiPc/booking";
25 import {useStorage} from "@vueuse/core/index";
26
27 const route = useRoute()
28 const router = useRouter()
29 const language= useStorage('language',0)
30 const orderId = ref(route.query.orderId)
31 const type = ref('')
32 const loading = ref(false)
33
34 onMounted(() => {
35 var code = decodeURIComponent(orderId.value)
36 console.log(code)
37 loading.value = true
38 callbackPalPay(code).then(res => {
39 loading.value = false
40 type.value = res.data.orderType
41 })
42 })
43
44 function goBillDetail() {
45 router.push({
46 name: 'bookingPay',
47 query: {
48 orderId: route.query.orderId,
49 orderType: type.value
50 }
51 })
52 }
53 </script>
54
55 <style scoped lang="scss">
56
57 </style>
...@@ -143,6 +143,13 @@ const menus3 = ref([ ...@@ -143,6 +143,13 @@ const menus3 = ref([
143 picUrl1: '/img/nav_29.png', 143 picUrl1: '/img/nav_29.png',
144 picUrl2: '/img/nav_29_dwn.png', 144 picUrl2: '/img/nav_29_dwn.png',
145 isActive: false 145 isActive: false
146 },
147 {
148 name: language.value==0?'票务预订':'Ticket Reservation',
149 routeName: 'seat_order',
150 picUrl1: '/img/c7.png',
151 picUrl2: '/img/c7.png',
152 isActive: false
146 } 153 }
147 ]) 154 ])
148 const menusPersonal = ref([ 155 const menusPersonal = ref([
...@@ -174,6 +181,13 @@ const menusPersonal = ref([ ...@@ -174,6 +181,13 @@ const menusPersonal = ref([
174 picUrl2: '/img/nav_29_dwn.png', 181 picUrl2: '/img/nav_29_dwn.png',
175 isActive: false 182 isActive: false
176 }, 183 },
184 {
185 name: language.value==0?'票务预订':'Ticket Reservation',
186 routeName: 'seat_order',
187 picUrl1: '/img/c7.png',
188 picUrl2: '/img/c7.png',
189 isActive: false
190 },
177 { 191 {
178 name: language.value==0?'系统消息':'System messages', 192 name: language.value==0?'系统消息':'System messages',
179 routeName: 'mySms', 193 routeName: 'mySms',
......
...@@ -5,81 +5,130 @@ ...@@ -5,81 +5,130 @@
5 destroy-on-close 5 destroy-on-close
6 > 6 >
7 <div class="boxInvitation pd20"> 7 <div class="boxInvitation pd20">
8 <el-steps :active="activeStep" align-center class="mb20">
9 <el-step :title="language==0?'报名须知':'Notice'" />
10 <el-step :title="language==0?'填写信息':'Information'" />
11 <el-step :title="language==0?'选择课程':'Courses'" />
12 </el-steps>
13 <div v-if="activeStep==0">
14 <div class="mb60 xzRich" style="max-height: 50vh;overflow: auto">
15 <div v-if="language==0" style="width: 300px;margin: auto"><br/>
16 培训地点:无锡君来世尊酒店<br/>
17 详细地址:江苏省 无锡市 滨湖区 和风路111号<br/>
18 报到时间:2024年7月14日13:30 -17:00<br/>
19 联系人:蒋璐<br/>
20 联系电话:15961580050<br/>
21 </div>
22 <div v-else style="width: 400px;margin: auto"><br/>
23 Training Camp venue:Worldhotel Grand Juna Wuxi<br/>
24 Address:No.111 Hefeng Road, Binhu District, Wuxi, Jiangsu<br/>
25 Check-in:From 13:30 to 17:00 on July 14, 2024.<br/>
26 Contact Person:Dean Ding<br/>
27 Tel: +86 19951486130<br/>
28 </div>
29 </div>
30 <div class="text-center">
31 <el-button type="primary" v-if="courseList.length>0" class="btn-lineG" round @click="setActive(1)">{{ language == 0 ? '下一步' : 'NEXT' }}</el-button>
32 <el-button type="primary" class="btn-lineG" round v-else @click="close">{{language==0?'暂无可报课程':'No courses available for reporting'}}</el-button>
33 </div>
34 </div>
35 <div v-if="activeStep==1">
36 <el-form :model="form" :rules="rules" ref="iformRef" label-position="right" :label-width="language==0?'80px':'150px'">
37 <el-form-item :label="language==0?'姓名':'Name'" required prop="name">
38 <el-input v-model="form.name"/>
39 </el-form-item>
40 <el-form-item :label="language==0?'性别':'Gender'" required prop="gender">
41 <el-radio-group v-model="form.gender">
42 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
43 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
44 </el-radio-group>
45 </el-form-item>
46 <el-form-item :label="language==0?'国籍':'Nationality'" required prop="nationality">
47 <el-select filterable v-model="form.nationality" style="width: 100%;">
48 <el-option v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
49 :value="item.id"/>
50 </el-select>
51 </el-form-item>
52 <el-form-item :label="language==0?'出生日期':'Date of Birth'" required prop="birth">
53 <el-date-picker
54 v-model="form.birth"
55 style="width: 100%;" placeholder="YYYY-MM-DD"
56 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
57 />
58 </el-form-item>
59 <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
60 <el-input v-model="form.email" type="email"/>
61 </el-form-item>
62 <el-form-item :label="language==0?'证件号':'ID No.'" required prop="passportNo">
63 <el-input v-model="form.passportNo" @blur="checkCard"/>
64 </el-form-item>
65 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy">
66 <image-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false"
67 :button-text="language==0?'上传':'Upload'"/>
68 </el-form-item>
69 <!-- <el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">-->
70 <!-- <el-date-picker-->
71 <!-- v-model="form.arrival" placeholder="YYYY-MM-DD"-->
72 <!-- style="width: 100%;"-->
73 <!-- type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"-->
74 <!-- />-->
75 <!-- </el-form-item>-->
76 <!-- <el-form-item :label="language==0?'出发日期':'Date of Departure'" required prop="departure">-->
77 <!-- <el-date-picker-->
78 <!-- v-model="form.departure"-->
79 <!-- style="width: 100%;" placeholder="YYYY-MM-DD"-->
80 <!-- type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"-->
81 <!-- />-->
82 <!-- </el-form-item>-->
83 <el-form-item :label="language==0?'备注':'Remark '">
84 <el-input type="textarea" v-model="form.remark" rows="3"/>
85 </el-form-item>
8 86
9 <div class="text-center pd20" v-if="showR"> 87 <div class="text-center">
10 <img class="mauto" src="@/assets/dance/ok.png"/> 88 <el-button size="large" @click="setActive(0)" round plain type="primary">{{ language == 0 ? '上一步' : 'PREV' }}</el-button>
11 <!-- <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>--> 89 <el-button type="primary" size="large" @click="checkApplyCourse(2)" round class="btn-lineG">
12 <h4 class="text-center" v-if="language == 0"> 90 {{ language == 0 ? '下一步' : 'NEXT' }}
13 我们已收到您的邀请函申请,并将尽快处理。请耐心等待。 91 </el-button>
14 </h4> 92 </div>
15 <h4 v-else> 93 </el-form>
16 Your invitation letter application has been received,<br/>
17 and we will process it as soon as possible.
18 <br/>
19 Please be patient while waiting.
20 </h4>
21 <el-button size="large" type="primary" @click="conti" round class="btn-lineG">
22 {{ language == 0 ? '继续提交' : 'Continue To Submit' }}
23 </el-button>
24 </div> 94 </div>
95 <div v-if="activeStep==2">
96 <div class="text-center pd20" v-if="showR">
97 <img class="mauto" src="@/assets/dance/ok.png"/>
98 <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>
99 <h4 class="text-center" v-if="language == 0">
100 我们已收到您的申请,并将尽快处理。请耐心等待。
101 </h4>
102 <h4 v-else>
103 Your application has been received,<br/>
104 and we will process it as soon as possible.
105 <br/>
106 Please be patient while waiting.
107 </h4>
108 </div>
109 <div v-else>
110 <div class="tip text-danger mb20" v-if="language==0">*选择参加的课程(最少一项,最多两项)</div>
111 <div class="tip text-danger mb20" v-else>*Select the courses to enroll in (at least one, no more than two)</div>
112 <el-checkbox-group size="large" v-model="form.courseId" @change="courseChange">
113 <div v-for="c in courseList" class="mb20">
114 <el-checkbox :value="c.id" border class="w100" :disabled="(form.courseId?.length>=2&&form.courseId.indexOf(c.id)==-1)||disChoose||(form.nationality==240&&c.viewStateCn == 0)||(form.nationality!=240&&c.viewStateEn == 0)">
115 {{language == 0 ?c.name:c.nameEn}}
116 <el-tag class="ml20" v-if="(form.nationality==240&&c.viewStateCn == 0)||(form.nationality!=240&&c.viewStateEn == 0)" type="danger" effect="dark">{{language == 0 ?'已报满':'Already full'}}</el-tag>
117 </el-checkbox>
118 </div>
119 </el-checkbox-group>
25 120
26 <el-form :model="form" :rules="rules" ref="iformRef" label-position="right" label-width="150px" v-else>
27 <el-form-item :label="language==0?'姓名':'Name'" required prop="name">
28 <el-input v-model="form.name"/>
29 </el-form-item>
30 <el-form-item :label="language==0?'性别':'Gender'" required prop="gender">
31 <el-radio-group v-model="form.gender">
32 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
33 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
34 </el-radio-group>
35 </el-form-item>
36 <el-form-item :label="language==0?'国籍':'Nationality'" required prop="nationality">
37 <el-select filterable v-model="form.nationality" style="width: 100%;">
38 <el-option v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
39 :value="item.id"/>
40 </el-select>
41 </el-form-item>
42 <el-form-item :label="language==0?'出生日期':'Date of Birth'" required prop="birth">
43 <el-date-picker
44 v-model="form.birth"
45 style="width: 100%;" placeholder="YYYY-MM-DD"
46 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
47 />
48 </el-form-item>
49 <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
50 <el-input v-model="form.email" type="email"/>
51 </el-form-item>
52 <el-form-item :label="language==0?'护照号':'Passport No.'" required prop="passportNo">
53 <el-input v-model="form.passportNo"/>
54 </el-form-item>
55 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy">
56 <image-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false"
57 :button-text="language==0?'上传':'Upload'"/>
58 </el-form-item>
59 <el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">
60 <el-date-picker
61 v-model="form.arrival" placeholder="YYYY-MM-DD"
62 style="width: 100%;"
63 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
64 />
65 </el-form-item>
66 <el-form-item :label="language==0?'出发日期':'Date of Departure'" required prop="departure">
67 <el-date-picker
68 v-model="form.departure"
69 style="width: 100%;" placeholder="YYYY-MM-DD"
70 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
71 />
72 </el-form-item>
73 <el-form-item :label="language==0?'备注':'Remark '">
74 <el-input type="textarea" v-model="form.remark" rows="3"/>
75 </el-form-item>
76 121
77 <div class="text-center"> 122 <div class="text-center">
78 <el-button type="primary" size="large" @click="submit" round class="btn-lineG"> 123 <el-button size="large" @click="setActive(1)" round plain type="primary">{{ language == 0 ? '上一步' : 'PREV' }}</el-button>
124 <el-button type="primary" v-if="!disChoose" size="large" @click="submit" round class="btn-lineG w200px">
79 {{ language == 0 ? '提交' : 'SUBMIT' }} 125 {{ language == 0 ? '提交' : 'SUBMIT' }}
80 </el-button> 126 </el-button>
127
128 </div>
129
81 </div> 130 </div>
82 </el-form> 131 </div>
83 </div> 132 </div>
84 </el-dialog> 133 </el-dialog>
85 134
...@@ -92,6 +141,7 @@ import {nextTick} from "@vue/runtime-core"; ...@@ -92,6 +141,7 @@ import {nextTick} from "@vue/runtime-core";
92 import {ElMessage, ElMessageBox} from "element-plus"; 141 import {ElMessage, ElMessageBox} from "element-plus";
93 import {addInvitation, countryList} from "@/apiPc/match"; 142 import {addInvitation, countryList} from "@/apiPc/match";
94 import ImageUpload from "@/components/ImageUpload"; 143 import ImageUpload from "@/components/ImageUpload";
144 import {masterClassList, getByCard, submitMasterApply, getMasterApply, delByCard} from "@/apiPc/common";
95 145
96 const {proxy} = getCurrentInstance() 146 const {proxy} = getCurrentInstance()
97 const language = useStorage('language', 0) 147 const language = useStorage('language', 0)
...@@ -100,8 +150,11 @@ const form = ref({ ...@@ -100,8 +150,11 @@ const form = ref({
100 }) 150 })
101 const show = ref(false) 151 const show = ref(false)
102 const showR = ref(false) 152 const showR = ref(false)
153 const disChoose = ref(false)
103 const title = ref('') 154 const title = ref('')
155 const activeStep = ref(0)
104 const countrys = ref([]) 156 const countrys = ref([])
157 const courseList = ref([])
105 const cptId = ref('') 158 const cptId = ref('')
106 const rules = ref( 159 const rules = ref(
107 { 160 {
...@@ -117,8 +170,9 @@ const rules = ref( ...@@ -117,8 +170,9 @@ const rules = ref(
117 const open = (params) => { 170 const open = (params) => {
118 console.log(params) 171 console.log(params)
119 show.value = true 172 show.value = true
120 title.value = params.title 173 title.value = language.value==0?'亚洲青少年体育舞蹈公益课':'Asian Youth DanceSport Training Camp'
121 cptId.value = params.cptId 174 cptId.value = params.cptId
175 getCourse()
122 } 176 }
123 defineExpose({open}) 177 defineExpose({open})
124 watch(show, (value) => { 178 watch(show, (value) => {
...@@ -134,15 +188,49 @@ watch(show, (value) => { ...@@ -134,15 +188,49 @@ watch(show, (value) => {
134 // proxy.$refs['dialogRef'].clearValidate() 188 // proxy.$refs['dialogRef'].clearValidate()
135 }) 189 })
136 }) 190 })
137 getCountryList() 191 function getCourse() {
138 192 // '1777256058082189313'
139 function getCountryList() { 193 masterClassList({cptId:cptId.value}).then(res=>{
140 countryList().then(res => { 194 courseList.value = res.data
141 countrys.value = res.data
142 }) 195 })
143 } 196 }
197 function setActive(n) {
198 activeStep.value = n
199 }
200 function courseChange(e){
201 console.log('已选',e)
202 }
203 function checkApplyCourse(n) {
204 getMasterApply({card:form.value.passportNo}).then(res=>{
205 if(res.data?.length>0){
206 form.value.courseId = []
207 for(var n of res.data){
208 form.value.courseId.push(n.itemId)
209 }
210 ElMessageBox.confirm(
211 language.value == 0 ? '您已提交过信息,是否更新?' : 'You have submitted the information, do you want to update?',
212 language.value == 0 ? '提示' : 'Tips', {
213 confirmButtonText: language.value == 0 ? '是' : 'Confirm',
214 cancelButtonText: language.value == 0 ? '否' : 'Cancel',
215 type: 'warning'
216 }).then(()=>{
217 //删除原记录
218 delByCard(form.value.passportNo).then(res=>{
219 form.value.courseId = []
220 disChoose.value = false
221 to2()
222 })
223 }).catch(()=>{
224 disChoose.value = true
225 to2()
226 })
227 } else {
228 to2()
229 }
230 })
144 231
145 const submit = () => { 232 }
233 function to2() {
146 proxy.$refs.iformRef.validate(valid => { 234 proxy.$refs.iformRef.validate(valid => {
147 if (form.value.email.indexOf('@') == -1) { 235 if (form.value.email.indexOf('@') == -1) {
148 if (language.value == 0) { 236 if (language.value == 0) {
...@@ -153,34 +241,73 @@ const submit = () => { ...@@ -153,34 +241,73 @@ const submit = () => {
153 return 241 return
154 } 242 }
155 if (valid) { 243 if (valid) {
156 ElMessageBox.confirm( 244 setActive(2)
157 language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it', 245 }
158 language.value == 0 ? '提示' : 'Tips', { 246 })
159 confirmButtonText: language.value == 0 ? '确定' : 'Confirm', 247 }
160 cancelButtonText: language.value == 0 ? '取消' : 'Cancel', 248
161 type: 'warning' 249
162 }).then(() => { 250 function checkCard() {
163 form.value.cptId = cptId.value 251 getByCard({card:form.value.passportNo}).then(res=>{
164 if (Array.isArray(form.value.passportCopy)) { 252 if(res.data){
165 form.value.passportCopy = form.value.passportCopy[0].url 253 form.value = res.data
166 } 254 } else {
167 addInvitation(form.value).then((res) => { 255 form.value.courseId = []
168 ElMessage.success(language.value == 0 ?'提交成功':'Successfully!')
169 showR.value = true
170 })
171 })
172 } 256 }
173 }) 257 })
174 } 258 }
259 getCountryList()
260
261 function getCountryList() {
262 countryList().then(res => {
263 countrys.value = res.data
264 })
265 }
266
267 const submit = () => {
268 if (form.value.courseId.length == 0) {
269 if (language.value == 0) {
270 ElMessage.warning('请至少选择一门课程')
271 } else {
272 ElMessage.warning('Please select at least one course')
273 }
274 return
275 }
276 ElMessageBox.confirm(
277 language.value == 0 ? '确认提交吗?' : 'Are you sure to submit?',
278 language.value == 0 ? '提示' : 'Tips', {
279 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
280 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
281 type: 'warning'
282 }).then(() => {
283 // form.value.cptId = cptId.value
284 if (Array.isArray(form.value.passportCopy)) {
285 form.value.passportCopy = form.value.passportCopy[0].url
286 }
287 // form.value.courseId = form.value.courseId.toString()
288 form.value.itemIds = form.value.courseId.toString()
289 delete form.value.courseId
290 submitMasterApply(form.value).then((res) => {
291 ElMessage.success(language.value == 0 ?'提交成功':'Successfully!')
292 showR.value = true
293 }).catch(()=>{
294
295 })
296 })
297 }
175 const conti = () => { 298 const conti = () => {
176 showR.value = false 299 showR.value = false
177 form.value = { 300 form.value = {
178 gender: '0' 301 gender: '0'
179 } 302 }
180 } 303 }
304 const close = () =>{
305 show.value = false
306 }
181 </script> 307 </script>
182 308
183 <style scoped> 309 <style scoped>
310 .xzRich{line-height: 2;font-size: 14px;}
184 .boxInvitation { 311 .boxInvitation {
185 width: 90%; 312 width: 90%;
186 margin: auto 313 margin: auto
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <index-Ch v-if="language ==0"/> 3 <index-Ch v-if="language ==0" @pop="openMaster"/>
4 <index-En v-else/> 4 <index-En v-else @pop="openMaster"/>
5 <div v-if="showgg" class="fixed_gg"> 5 <div v-if="showgg" class="fixed_gg">
6 <!--天气--> 6 <!--天气-->
7 <el-icon class="cclose" @click.stop="showgg=false"><circle-close /></el-icon> 7 <el-icon class="cclose" @click.stop="showgg=false"><circle-close /></el-icon>
...@@ -59,6 +59,8 @@ ...@@ -59,6 +59,8 @@
59 </div> 59 </div>
60 </el-dialog> 60 </el-dialog>
61 </div> 61 </div>
62
63 <dialog-master-class ref="masterClassRef"/>
62 </div> 64 </div>
63 65
64 </template> 66 </template>
...@@ -67,10 +69,12 @@ ...@@ -67,10 +69,12 @@
67 import IndexCh from '/src/viewsPc/index' 69 import IndexCh from '/src/viewsPc/index'
68 import IndexEn from '/src/viewsPc/index_en' 70 import IndexEn from '/src/viewsPc/index_en'
69 import WeatherIcon from '@/viewsPc/components/weatherIcon' 71 import WeatherIcon from '@/viewsPc/components/weatherIcon'
70 72 import DialogMasterClass from '@/viewsPc/components/masterClass'
71 import {useStorage} from "@vueuse/core/index"; 73 import {useStorage} from "@vueuse/core/index";
72 import {ref} from "vue"; 74 import {ref} from "vue";
73 import {getWeather} from "@/apiPc/webSite"; 75 import {getWeather} from "@/apiPc/webSite";
76 import {getCurrentInstance} from "@vue/runtime-core";
77 const {proxy} = getCurrentInstance()
74 const showgg = ref(true) 78 const showgg = ref(true)
75 79
76 const language = useStorage('language', 0) 80 const language = useStorage('language', 0)
...@@ -91,7 +95,14 @@ function init(){ ...@@ -91,7 +95,14 @@ function init(){
91 const popWeather = () => { 95 const popWeather = () => {
92 weatherdialog.value = true 96 weatherdialog.value = true
93 } 97 }
94 98 const openMaster = (params) => {
99 console.log(params)
100 var obj = {
101 title:'大师课申请',
102 cptId:params.cptId
103 }
104 proxy.$refs['masterClassRef'].open(obj)
105 }
95 </script> 106 </script>
96 107
97 <style scoped lang="scss"> 108 <style scoped lang="scss">
......
...@@ -93,6 +93,8 @@ ...@@ -93,6 +93,8 @@
93 <download/> 93 <download/>
94 </el-icon> 94 </el-icon>
95 </a> 95 </a>
96 <!-- <el-button type="primary" @click="popMaster">青少年公益课</el-button>-->
97 <a class="zn-btn ml20 btn-q" @click="popMaster">青少年公益课</a>
96 </div> 98 </div>
97 </el-col> 99 </el-col>
98 <el-col :sm="24" :lg="14"> 100 <el-col :sm="24" :lg="14">
...@@ -359,7 +361,7 @@ import HomeQuick from '@/viewsPc/components/homeQuick' ...@@ -359,7 +361,7 @@ import HomeQuick from '@/viewsPc/components/homeQuick'
359 import HomeCalendar from '@/viewsPc/components/homeCalendar' 361 import HomeCalendar from '@/viewsPc/components/homeCalendar'
360 import {ref, nextTick, onMounted, watch} from 'vue' 362 import {ref, nextTick, onMounted, watch} from 'vue'
361 import {getCurrentInstance} from '@vue/runtime-core' 363 import {getCurrentInstance} from '@vue/runtime-core'
362 import {getHomePage, getNewsListById, getNewsList, getWeather} from '@/apiPc/webSite' 364 import {getHomePage, getNewsListById, getNewsList} from '@/apiPc/webSite'
363 import {useRouter} from 'vue-router' 365 import {useRouter} from 'vue-router'
364 import {rankList} from '@/assets/js/data' 366 import {rankList} from '@/assets/js/data'
365 import _ from 'lodash' 367 import _ from 'lodash'
...@@ -375,14 +377,7 @@ const navigationPic = ref({ ...@@ -375,14 +377,7 @@ const navigationPic = ref({
375 }) 377 })
376 const router = useRouter() 378 const router = useRouter()
377 const {proxy} = getCurrentInstance() 379 const {proxy} = getCurrentInstance()
378 const bannerVideo = ref(null) 380 const emit = defineEmits(['pop'])
379 const isPlay = ref(false)
380 const canPrev = ref(false)
381 const canNext = ref(false)
382 const activeRankName = ref(0)
383 const weatherObj = ref({
384 forecast:[]
385 })
386 const time = ref(0) 381 const time = ref(0)
387 const personList = ref([ 382 const personList = ref([
388 { name: 'Wolfgang Eliasch', pp: '拉丁舞裁判长 奥地利', src: '/img/1.png' }, 383 { name: 'Wolfgang Eliasch', pp: '拉丁舞裁判长 奥地利', src: '/img/1.png' },
...@@ -400,12 +395,10 @@ const news = ref([]) ...@@ -400,12 +395,10 @@ const news = ref([])
400 const notice = ref([]) 395 const notice = ref([])
401 const display = ref([]) 396 const display = ref([])
402 const scores = ref([]) 397 const scores = ref([])
403 const nowscores = ref([])
404 const livelist = ref([]) 398 const livelist = ref([])
405 const matchData = ref({}) 399 const matchData = ref({})
406 const maList = ref([]) 400 const maList = ref([])
407 const loading = ref(false) 401 const loading = ref(false)
408 const weatherdialog = ref(false)
409 const picList = ref([]) 402 const picList = ref([])
410 403
411 onMounted(() => { 404 onMounted(() => {
...@@ -491,9 +484,6 @@ const goMatch = (n) => { ...@@ -491,9 +484,6 @@ const goMatch = (n) => {
491 path: `/match/list/${n.id}` 484 path: `/match/list/${n.id}`
492 }) 485 })
493 } 486 }
494 const popWeather = () => {
495 weatherdialog.value = true
496 }
497 487
498 const goGuide = () => { 488 const goGuide = () => {
499 router.push({ 489 router.push({
...@@ -503,6 +493,13 @@ const goGuide = () => { ...@@ -503,6 +493,13 @@ const goGuide = () => {
503 } 493 }
504 }) 494 })
505 } 495 }
496 const popMaster = () => {
497 var params = {
498 cptId:matchData.value.id
499 }
500 emit('pop',params)
501 }
502
506 </script> 503 </script>
507 504
508 <style scoped lang="scss"> 505 <style scoped lang="scss">
...@@ -945,4 +942,32 @@ const goGuide = () => { ...@@ -945,4 +942,32 @@ const goGuide = () => {
945 } 942 }
946 } 943 }
947 } 944 }
945 :deep(.btn-q) {
946 //background: #FFFFFF;
947 //font-size: 18px;
948 //color: #453DEA;
949 //border-radius: 23px;
950 //padding: 10px 20px;
951 //display: inline-flex;
952 //align-items: center;
953
954 padding: 20px 40px;
955 font-size: 20px;
956 align-items: center;
957 overflow: hidden;
958 background: url(/src/assets/dance/time_bg.png) no-repeat center !important;
959 background-size: 100% 100%;
960 bottom: 40%;
961 display: flex;
962 flex-wrap: nowrap;
963 color: #fff !important;
964 box-sizing: inherit;
965 }
966
967 .btn-q:hover{
968 box-shadow: 0 0 20px #453DEA;
969 border-radius: 100px;
970 background: linear-gradient(-90deg, #8623FC, #453DEA) !important;
971 }
972
948 </style> 973 </style>
......
...@@ -85,10 +85,15 @@ ...@@ -85,10 +85,15 @@
85 <el-col :sm="24" :lg="10"> 85 <el-col :sm="24" :lg="10">
86 <div class="bgbg"> 86 <div class="bgbg">
87 <h1 style="color: #fff">{{matchData?.name}}</h1> 87 <h1 style="color: #fff">{{matchData?.name}}</h1>
88 <a class="zn-btn" @click="goGuide"> 88 <div>
89 GUIDELINE 89 <a class="zn-btn" @click="goGuide">
90 <el-icon><download /></el-icon> 90 GUIDELINE
91 </a> 91 <el-icon><download /></el-icon>
92 </a>
93 <a class="zn-btn ml20" @click="popMaster">Junior &Youth Camp <el-icon><Edit /></el-icon>
94 </a>
95 </div>
96
92 </div> 97 </div>
93 </el-col> 98 </el-col>
94 <el-col :sm="24" :lg="14"> 99 <el-col :sm="24" :lg="14">
...@@ -385,6 +390,7 @@ const navigationPic = ref({ ...@@ -385,6 +390,7 @@ const navigationPic = ref({
385 }) 390 })
386 const router = useRouter() 391 const router = useRouter()
387 const { proxy } = getCurrentInstance() 392 const { proxy } = getCurrentInstance()
393 const emit = defineEmits(['pop'])
388 const time = ref(0) 394 const time = ref(0)
389 395
390 const personList = ref([ 396 const personList = ref([
...@@ -498,6 +504,12 @@ const goGuide = () => { ...@@ -498,6 +504,12 @@ const goGuide = () => {
498 } 504 }
499 }) 505 })
500 } 506 }
507 const popMaster = () => {
508 var params = {
509 cptId:matchData.value.id
510 }
511 emit('pop',params)
512 }
501 </script> 513 </script>
502 514
503 <style scoped lang="scss"> 515 <style scoped lang="scss">
...@@ -516,7 +528,7 @@ const goGuide = () => { ...@@ -516,7 +528,7 @@ const goGuide = () => {
516 p{margin: 0;height: 40px;line-height: 20px;display: flex;align-items: center;} 528 p{margin: 0;height: 40px;line-height: 20px;display: flex;align-items: center;}
517 } 529 }
518 border-radius: 15px; 530 border-radius: 15px;
519 .zn-btn{background: #FFFFFF; 531 .zn-btn{background: #FFFFFF;text-transform: uppercase;
520 font-size: 18px; width: fit-content; 532 font-size: 18px; width: fit-content;
521 color: #453DEA; 533 color: #453DEA;
522 border-radius: 23px;padding: 10px 20px;display: inline-flex;align-items: center;} 534 border-radius: 23px;padding: 10px 20px;display: inline-flex;align-items: center;}
......
...@@ -83,7 +83,6 @@ export default defineConfig(({ mode, command }) => { ...@@ -83,7 +83,6 @@ export default defineConfig(({ mode, command }) => {
83 }, 83 },
84 '/dev-api': { 84 '/dev-api': {
85 // target: 'http://192.168.1.118:8081/', 85 // target: 'http://192.168.1.118:8081/',
86 // target: 'https://jijin.wtwuxicenter.com/stage-api',
87 target: 'https://jijin.wtwuxicenter.com/stage-api', 86 target: 'https://jijin.wtwuxicenter.com/stage-api',
88 changeOrigin: true, 87 changeOrigin: true,
89 rewrite: (p) => p.replace(/^\/dev-api/, '') 88 rewrite: (p) => p.replace(/^\/dev-api/, '')
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!