19522552 by 华明祺

Merge branch 'dev' of https://code.itechtop.cn/yangyang/dance-pc into dev

2 parents 6332ec8d 36649f49

159 KB | W: | H:

75.6 KB | W: | H:

public/img/code.jpg
public/img/code.jpg
public/img/code.jpg
public/img/code.jpg
  • 2-up
  • Swipe
  • Onion skin
...@@ -344,6 +344,15 @@ export function getPerPersonList(query, userId) { ...@@ -344,6 +344,15 @@ export function getPerPersonList(query, userId) {
344 }) 344 })
345 } 345 }
346 346
347 // 选择队友
348 export function getMate(data) {
349 return request({
350 url: `/systemj/personInfo/getMate`,
351 method: 'post',
352 data
353 })
354 }
355
347 356
348 // 获取团队报名时已选人员 357 // 获取团队报名时已选人员
349 export function getChooseDoneGroupCoachs(cptId, groupId) { 358 export function getChooseDoneGroupCoachs(cptId, groupId) {
...@@ -789,10 +798,11 @@ export function getZNList(params) { ...@@ -789,10 +798,11 @@ export function getZNList(params) {
789 } 798 }
790 799
791 // 团体报名校验 800 // 团体报名校验
792 export function preCheckForGroup(groupId) { 801 export function preCheckForGroup(groupId, type) {
793 return request({ 802 return request({
794 url: `/systemj/personInfo/preCheckForGroup/${groupId}`, 803 url: `/systemj/personInfo/preCheckForGroup/${groupId}`,
795 method: 'get' 804 method: 'get',
805 params: { type }
796 }) 806 })
797 } 807 }
798 808
......
1 import { ElMessage, ElMessageBox, ElNotification, ElLoading } from 'element-plus' 1 import { ElMessage, ElMessageBox, ElNotification, ElLoading } from 'element-plus'
2 import {useStorage} from "@vueuse/core/index"; 2 import { useStorage } from '@vueuse/core/index'
3 3
4 const language= useStorage('language',0) 4 const language = useStorage('language', 0)
5 let loadingInstance 5 let loadingInstance
6 6
7 export default { 7 export default {
...@@ -23,19 +23,19 @@ export default { ...@@ -23,19 +23,19 @@ export default {
23 }, 23 },
24 // 弹出提示 24 // 弹出提示
25 alert(content) { 25 alert(content) {
26 return ElMessageBox.alert(content, language.value==0 ? language.value==0 ? '系统提示' :'Tips' :'Tips') 26 return ElMessageBox.alert(content, language.value == 0 ? language.value == 0 ? '系统提示' : 'Tips' : 'Tips')
27 }, 27 },
28 // 错误提示 28 // 错误提示
29 alertError(content) { 29 alertError(content) {
30 return ElMessageBox.alert(content, language.value==0 ? language.value==0 ? '系统提示' :'Tips' :'Tips', { type: 'error' }) 30 return ElMessageBox.alert(content, language.value == 0 ? language.value == 0 ? '系统提示' : 'Tips' : 'Tips', { type: 'error' })
31 }, 31 },
32 // 成功提示 32 // 成功提示
33 alertSuccess(content) { 33 alertSuccess(content) {
34 return ElMessageBox.alert(content, language.value==0 ? '系统提示' :'Tips', { type: 'success' }) 34 return ElMessageBox.alert(content, language.value == 0 ? '系统提示' : 'Tips', { type: 'success' })
35 }, 35 },
36 // 警告提示 36 // 警告提示
37 alertWarning(content) { 37 alertWarning(content) {
38 return ElMessageBox.alert(content, language.value==0 ? '系统提示' :'Tips', { type: 'warning' }) 38 return ElMessageBox.alert(content, language.value == 0 ? '系统提示' : 'Tips', { type: 'warning' })
39 }, 39 },
40 // 通知提示 40 // 通知提示
41 notify(content) { 41 notify(content) {
...@@ -55,17 +55,17 @@ export default { ...@@ -55,17 +55,17 @@ export default {
55 }, 55 },
56 // 确认窗体 56 // 确认窗体
57 confirm(content) { 57 confirm(content) {
58 return ElMessageBox.confirm(content, language.value==0 ? '系统提示' :'Tips', { 58 return ElMessageBox.confirm(content, language.value == 0 ? '系统提示' : 'Tips', {
59 confirmButtonText: language.value==0 ? '确定' :'OK', 59 confirmButtonText: language.value == 0 ? '确定' : 'OK',
60 cancelButtonText: language.value==0 ? '取消' :'Cancel', 60 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
61 type: 'warning' 61 type: 'warning'
62 }) 62 })
63 }, 63 },
64 // 提交内容 64 // 提交内容
65 prompt(content) { 65 prompt(content) {
66 return ElMessageBox.prompt(content, language.value==0 ? '系统提示' :'Tips', { 66 return ElMessageBox.prompt(content, language.value == 0 ? '系统提示' : 'Tips', {
67 confirmButtonText: language.value==0 ? '确定' :'OK', 67 confirmButtonText: language.value == 0 ? '确定' : 'OK',
68 cancelButtonText: language.value==0 ? '取消' :'Cancel', 68 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
69 type: 'warning' 69 type: 'warning'
70 }) 70 })
71 }, 71 },
......
1 <template> 1 <template>
2 <el-dialog v-model="show" title="出行人信息" center append-to-body> 2 <el-dialog v-model="show" width="500" :title="languageFormat(language, '出行人信息', 'Travelers')" center append-to-body>
3 <el-button type="primary" plain @click="addPeopl">{{ languageFormat(language, "新增", "Add") }}</el-button> 3 <el-button type="primary" plain @click="addPeopl">{{ languageFormat(language, "新增", "Add") }}</el-button>
4
5 <el-form>
6 <el-form-item prop="message">
7 <div class="p_box">
8 <div class="people">
9 <el-radio-group v-model="personId"> 4 <el-radio-group v-model="personId">
10 <div 5 <div v-for="(it, index) in personList" :key="index" class="e_item">
11 v-for="(it, index) in personList" :key="index" class="e_item"
12 >
13 <el-radio border :value="it.id" :disabled="hasPersonIds?.indexOf(it.id)!=-1"> 6 <el-radio border :value="it.id" :disabled="hasPersonIds?.indexOf(it.id)!=-1">
14 <div> 7
15 {{ it.name }} {{ it.idCard }} 8 <div class="name">{{ it.name }}</div>
9 <div class="code">
10 <span v-if="it.idcType==0">{{ language == 0 ? '身份证' : 'ID number' }}</span>
11 <span v-if="it.idcType==1">{{ language == 0 ? '护照' : 'Passport' }}</span>
12 <span v-if="it.idcType==2">{{ language == 0 ? '其他' : 'Other' }}</span>
13
14 {{ it.idCard }}
16 </div> 15 </div>
16
17 </el-radio> 17 </el-radio>
18 </div> 18 </div>
19 </el-radio-group> 19 </el-radio-group>
20 </div>
21 </div>
22 </el-form-item>
23 </el-form>
24 <template #footer> 20 <template #footer>
25 <div class="dialog-footer"> 21 <div class="dialog-footer">
26 <el-button @click="show = false">取 消</el-button> 22 <el-button @click="show = false">{{ languageFormat(language, "取 消", "Cancel") }}</el-button>
27 <el-button type="primary" @click="addPerson">完成</el-button> 23 <el-button type="primary" @click="addPerson">{{ languageFormat(language, "完 成", "Ok") }}</el-button>
28 </div> 24 </div>
29 </template> 25 </template>
30 </el-dialog> 26 </el-dialog>
...@@ -36,17 +32,17 @@ ...@@ -36,17 +32,17 @@
36 style="margin: 80px" 32 style="margin: 80px"
37 > 33 >
38 <el-form-item :label="language==0?'姓名':'name'" prop="name" required :show-message="false"> 34 <el-form-item :label="language==0?'姓名':'name'" prop="name" required :show-message="false">
39 <el-input v-model="form.name" :placeholder="language==0?'请输入':'Please input'" /> 35 <el-input v-model="form.name" :placeholder="language==0?'请输入':'Please input'"/>
40 </el-form-item> 36 </el-form-item>
41 <el-form-item :label="language==0?'证件类型':'ID Type'" prop="idcType" required :show-message="false"> 37 <el-form-item :label="language==0?'证件类型':'ID Type'" prop="idcType" required :show-message="false">
42 <el-select v-model="form.idcType" :placeholder="language==0?'请选择':'Please choose'"> 38 <el-select v-model="form.idcType" :placeholder="language==0?'请选择':'Please choose'">
43 <el-option :label="language==0?'身份证':'Identity card'" value="0" /> 39 <el-option :label="language==0?'身份证':'Identity card'" value="0"/>
44 <el-option :label="language==0?'护照':'Passport'" value="1" /> 40 <el-option :label="language==0?'护照':'Passport'" value="1"/>
45 <el-option :label="language==0?'其他':'Other'" value="2" /> 41 <el-option :label="language==0?'其他':'Other'" value="2"/>
46 </el-select> 42 </el-select>
47 </el-form-item> 43 </el-form-item>
48 <el-form-item :label="language==0?'证件号':'ID number'" prop="idCard" required :show-message="false"> 44 <el-form-item :label="language==0?'证件号':'ID number'" prop="idCard" required :show-message="false">
49 <el-input v-model="form.idCard" :placeholder="language==0?'请输入证件号':'Please enter the ID after ah'" /> 45 <el-input v-model="form.idCard" :placeholder="language==0?'请输入证件号':'Please enter the ID after ah'"/>
50 </el-form-item> 46 </el-form-item>
51 </el-form> 47 </el-form>
52 48
...@@ -61,15 +57,15 @@ ...@@ -61,15 +57,15 @@
61 </template> 57 </template>
62 58
63 <script setup> 59 <script setup>
64 import { aadSceneCustomer, checkSceneCustomer, getMyFriends } from '/@/apiPc/booking' 60 import {aadSceneCustomer, checkSceneCustomer, getMyFriends} from '/@/apiPc/booking'
65 import { languageFormat } from '/@/viewsPc/seat/utils/language' 61 import {languageFormat} from '/@/viewsPc/seat/utils/language'
66 import { onMounted, ref } from 'vue' 62 import {onMounted, ref} from 'vue'
67 import { useStorage } from '@vueuse/core/index' 63 import {useStorage} from '@vueuse/core/index'
68 import _ from 'lodash' 64 import _ from 'lodash'
69 import { getCurrentInstance } from '@vue/runtime-core' 65 import {getCurrentInstance} from '@vue/runtime-core'
70 66
71 const emit = defineEmits(['addPerson']) 67 const emit = defineEmits(['addPerson'])
72 const { proxy } = getCurrentInstance() 68 const {proxy} = getCurrentInstance()
73 69
74 const show = ref(false) 70 const show = ref(false)
75 const showAdd = ref(false) 71 const showAdd = ref(false)
...@@ -104,11 +100,11 @@ const addPerson = () => { ...@@ -104,11 +100,11 @@ const addPerson = () => {
104 gateType: currParams.gateType 100 gateType: currParams.gateType
105 }).then((res) => { 101 }).then((res) => {
106 if (res.data == 201) { 102 if (res.data == 201) {
107 proxy.$modal.msgError('护照只能购买成人票') 103 proxy.$modal.msgError(language.value == 0 ? '护照只能购买成人票' : 'Passport can only buy adult tickets')
108 } else if (res.data == 202) { 104 } else if (res.data == 202) {
109 proxy.$modal.msgError('此身份证不能购买老人票') 105 proxy.$modal.msgError(language.value == 0 ? '此身份证不能购买老人票' : 'This ID cannot buy senior tickets')
110 } else if (res.data == 203) { 106 } else if (res.data == 203) {
111 proxy.$modal.msgError('此身份证不能购买儿童票') 107 proxy.$modal.msgError(language.value == 0 ? '此身份证不能购买儿童票' : 'This ID cannot buy child tickets')
112 } else { 108 } else {
113 show.value = false 109 show.value = false
114 emit('addPerson', Object.assign(currParams, { 110 emit('addPerson', Object.assign(currParams, {
...@@ -155,5 +151,28 @@ defineExpose({ ...@@ -155,5 +151,28 @@ defineExpose({
155 </script> 151 </script>
156 152
157 <style scoped lang="scss"> 153 <style scoped lang="scss">
158 .e_item{margin: 20px 20px 0 0;} 154 .el-radio-group {
155 display: block;
156 }
157
158 .e_item {
159 margin: 20px 0 0 0;
160 width: 100%;
161
162 .el-radio {
163 width: 100%;
164 height: auto;
165 padding: 10px;
166 }
167
168 .name {
169 font-size: 16px;
170 }
171
172 .code {
173 font-size: 14px;
174 margin: 4px 0 0;
175 color: #999;
176 }
177 }
159 </style> 178 </style>
......
...@@ -14,36 +14,55 @@ ...@@ -14,36 +14,55 @@
14 14
15 <div class="info"> 15 <div class="info">
16 <div class="name">{{ TickForm2.ticketTypeName }}</div> 16 <div class="name">{{ TickForm2.ticketTypeName }}</div>
17 <div class="address">{{ TickForm2.stadiumName }}</div> 17 <div class="address">
18 <div class="address">{{ TickForm2.sessionType=='1000'?'日间场':'夜间场' }}</div> 18 {{ TickForm2.stadiumName }}
19 <div class="address">{{ TickForm2.ticketName }}</div> 19 <span v-if="TickForm2.sessionType=='1000'">{{ language == 0 ? '日间场' : 'Day' }}</span>
20 <span v-else>{{ language == 0 ? '夜间场' : 'Night' }}</span>
21 {{ TickForm2.ticketName }}
22 </div>
20 23
21 <div v-if="TickForm2.ticketType=='0'" class="address">剩余数量{{ leftCount }}</div> 24 <div v-if="TickForm2.ticketType=='0'" class="address">{{ language==0?'剩余数量':'Remaining Quantity' }}{{ leftCount }}</div>
22 </div> 25 </div>
23 26
24 <div class="ticket_info mb20"> 27 <div class="ticket_info mb20">
25 <div class="tit_box"> 28 <div class="tit_box">
26 <div class="line" /> 29 <div class="line"/>
27 <div class="txt"> 30 <div class="txt">
28 {{ languageFormat(language, "订票信息", "Ticket Info") }} 31 {{ languageFormat(language, "订票信息", "Ticket Info") }}
29 </div> 32 </div>
30 </div> 33 </div>
31 34
32 <div class="form"> 35 <div class="form">
33 <el-form ref="formRef" :model="orderForm" :rules="rules" label-width="120px"> 36 <el-form ref="formRef" :model="orderForm" :rules="rules" label-width="140px">
34 <div v-if="TickForm2.ticketType == '1'"> 37 <div v-if="TickForm2.ticketType == '1'">
35 <el-form-item :label="language == 0 ? '桌号' : 'zuohao'"> 38 <el-form-item :label="language == 0 ? '桌号' : 'Table'">
39
40 <el-popover placement="right" :width="400" trigger="hover">
41 <template #reference>
42 <div class="text-primary underline pointer" @click="showImg">
43 {{ language == 0 ? '查看区域布局' : ' View Area Layout' }}
44 </div>
45 </template>
46 <el-image :src="fillImgUrl(tickImg)" style="width: 100%;"
47 :preview-src-list="[fillImgUrl(tickImg)]"/>
48 </el-popover>
49
50
36 <el-radio-group v-model="currDesk"> 51 <el-radio-group v-model="currDesk">
37 <el-radio-button v-for="(it, index) in deskList" :key="index" :label="it.deskNo" :value="it" :disabled="it.status!=0" /> 52 <el-radio-button v-for="(it, index) in deskList" :key="index" :label="it.deskNo" :value="it"
53 :disabled="it.status!=0"/>
38 </el-radio-group> 54 </el-radio-group>
39 </el-form-item> 55 </el-form-item>
40 <el-form-item :label="language == 0 ? '座位号' : 'zuoweihao'"> 56 <el-form-item :label="language == 0 ? '座位号' : 'Seat'">
41 <el-checkbox-group v-model="currSeat"> 57 <el-checkbox-group v-model="currSeat">
42 <el-checkbox-button v-for="(it, index) in currDesk?.seatList" :key="index" :label="it.seatNo" :value="it" :disabled="it.status!=0" /> 58 <el-checkbox-button v-for="(it, index) in currDesk?.seatList" :key="index" :label="it.seatNo"
59 :value="it" :disabled="it.status!=0"/>
43 </el-checkbox-group> 60 </el-checkbox-group>
44 </el-form-item> 61 </el-form-item>
45 <el-form-item label="已选座位号"> 62 <el-form-item :label="language == 0 ?'已选座位号':'Selected Seat'">
46 <el-tag v-for="s in currSeat" :key="s.id">{{ s.deskNo }} - {{ s.seatNo }}</el-tag> 63 <el-tag class="mr10" v-for="(s,index) in currSeat" :key="s.id" closable @close="delSeat(s,index)">
64 {{ s.deskNo }} - {{ s.seatNo }}
65 </el-tag>
47 </el-form-item> 66 </el-form-item>
48 </div> 67 </div>
49 <el-form-item 68 <el-form-item
...@@ -68,9 +87,7 @@ ...@@ -68,9 +87,7 @@
68 <div class="p_box"> 87 <div class="p_box">
69 <div class="people"> 88 <div class="people">
70 <el-checkbox-group v-model="orderForm.customerIds" @change="changeGroup"> 89 <el-checkbox-group v-model="orderForm.customerIds" @change="changeGroup">
71 <div 90 <div v-for="(it, index) in personnelList" :key="index" class="prople_item">
72 v-for="(it, index) in personnelList" :key="index" class="prople_item"
73 >
74 <div> 91 <div>
75 <div class="name">{{ it.name }} 92 <div class="name">{{ it.name }}
76 <!-- <span v-if="it.discount" class="tag_t p-right">{{--> 93 <!-- <span v-if="it.discount" class="tag_t p-right">{{-->
...@@ -79,10 +96,7 @@ ...@@ -79,10 +96,7 @@
79 </div> 96 </div>
80 <div class="idcard">{{ it.idCard }}</div> 97 <div class="idcard">{{ it.idCard }}</div>
81 </div> 98 </div>
82 <el-checkbox 99 <el-checkbox :value="it.id" :disabled="!!it.disabled"/>
83 :value="it.id"
84 :disabled="!!it.disabled"
85 />
86 </div> 100 </div>
87 </el-checkbox-group> 101 </el-checkbox-group>
88 </div> 102 </div>
...@@ -98,7 +112,7 @@ ...@@ -98,7 +112,7 @@
98 112
99 <el-col :lg="8" class="right"> 113 <el-col :lg="8" class="right">
100 <div class="tit_box"> 114 <div class="tit_box">
101 <div class="line" /> 115 <div class="line"/>
102 <div class="txt"> 116 <div class="txt">
103 {{ languageFormat(language, "订单明细", "Order summary") }} 117 {{ languageFormat(language, "订单明细", "Order summary") }}
104 </div> 118 </div>
...@@ -109,7 +123,7 @@ ...@@ -109,7 +123,7 @@
109 <div class="time"> 123 <div class="time">
110 {{ language == 0 ? '票价' : 'Cost Ticket' }} 124 {{ language == 0 ? '票价' : 'Cost Ticket' }}
111 </div> 125 </div>
112 <p /> 126 <p/>
113 <div class="ticket"> 127 <div class="ticket">
114 {{ language == 0 ? TickForm2.price : TickForm2.priceEn }} 128 {{ language == 0 ? TickForm2.price : TickForm2.priceEn }}
115 <span> {{ language == 0 ? '元' : 'Euro' }}</span> 129 <span> {{ language == 0 ? '元' : 'Euro' }}</span>
...@@ -123,7 +137,9 @@ ...@@ -123,7 +137,9 @@
123 </div> 137 </div>
124 <div class="price_num"> 138 <div class="price_num">
125 <span>{{ language == 0 ? "¥" : "€" }}</span> 139 <span>{{ language == 0 ? "¥" : "€" }}</span>
126 {{ ((language == 0 ?TickForm2.price:TickForm2.priceEn) * orderForm.customerIds.length).toFixed(2) }} 140 {{
141 ((language == 0 ? TickForm2.price : TickForm2.priceEn) * orderForm.customerIds.length).toFixed(2)
142 }}
127 </div> 143 </div>
128 </div> 144 </div>
129 </div> 145 </div>
...@@ -137,7 +153,7 @@ ...@@ -137,7 +153,7 @@
137 </span> 153 </span>
138 <span class="value"> 154 <span class="value">
139 <span>{{ language == 0 ? "¥" : "€" }}</span> 155 <span>{{ language == 0 ? "¥" : "€" }}</span>
140 {{ ((language == 0 ?TickForm2.price:TickForm2.priceEn) * orderForm.customerIds.length).toFixed(2) }} 156 {{ ((language == 0 ? TickForm2.price : TickForm2.priceEn) * orderForm.customerIds.length).toFixed(2) }}
141 </span> 157 </span>
142 </div> 158 </div>
143 <div class="pay" @click="paymentHandle"> 159 <div class="pay" @click="paymentHandle">
...@@ -150,7 +166,7 @@ ...@@ -150,7 +166,7 @@
150 </template> 166 </template>
151 167
152 <script setup> 168 <script setup>
153 import { ref, computed, onMounted } from 'vue' 169 import {ref, computed, onMounted} from 'vue'
154 import { 170 import {
155 customerListApi, 171 customerListApi,
156 submitOrderTicket, 172 submitOrderTicket,
...@@ -160,12 +176,12 @@ import { ...@@ -160,12 +176,12 @@ import {
160 checkPurchasedCustomers, 176 checkPurchasedCustomers,
161 getDeskInfo 177 getDeskInfo
162 } from '@/apiPc/booking' 178 } from '@/apiPc/booking'
163 import { ElMessage, ElMessageBox } from 'element-plus' 179 import {ElMessage, ElMessageBox} from 'element-plus'
164 import { languageFormat } from '@/viewsPc/seat/utils/language.js' 180 import {languageFormat} from '@/viewsPc/seat/utils/language.js'
165 import useUserStore from '/@/store/modules/user' 181 import useUserStore from '/@/store/modules/user'
166 import { useStorage } from '@vueuse/core/index' 182 import {useStorage} from '@vueuse/core/index'
167 import _ from 'lodash' 183 import _ from 'lodash'
168 import { useRoute, useRouter } from 'vue-router' 184 import {useRoute, useRouter} from 'vue-router'
169 185
170 const useStore = useUserStore() 186 const useStore = useUserStore()
171 187
...@@ -211,8 +227,9 @@ const leftCount = ref({}) ...@@ -211,8 +227,9 @@ const leftCount = ref({})
211 const deskList = ref([]) 227 const deskList = ref([])
212 const currDesk = ref(null) 228 const currDesk = ref(null)
213 const currSeat = ref([]) 229 const currSeat = ref([])
214 230 const tickImg = ref()
215 onMounted(() => { 231 onMounted(() => {
232 tickImg.value = route.query.tickImg
216 customerList() 233 customerList()
217 getDetail() 234 getDetail()
218 235
...@@ -241,6 +258,10 @@ onMounted(() => { ...@@ -241,6 +258,10 @@ onMounted(() => {
241 }) 258 })
242 }) 259 })
243 260
261 function delSeat(item, index) {
262 currSeat.value.splice(index, 1)
263 }
264
244 function changeGroup(e) { 265 function changeGroup(e) {
245 if (e.length > 0) { 266 if (e.length > 0) {
246 checkPurchasedCustomers({ 267 checkPurchasedCustomers({
...@@ -300,7 +321,7 @@ async function paymentHandle() { ...@@ -300,7 +321,7 @@ async function paymentHandle() {
300 confirmButtonText: language.value == 0 ? '确定' : 'Confirm', 321 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
301 cancelButtonText: language.value == 0 ? '取消' : 'Cancel', 322 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
302 type: 'warning' 323 type: 'warning'
303 }).then(async() => { 324 }).then(async () => {
304 try { 325 try {
305 const orderCustomerList = [] 326 const orderCustomerList = []
306 _.each(orderForm.value.customerIds, (id, index) => { 327 _.each(orderForm.value.customerIds, (id, index) => {
...@@ -369,7 +390,7 @@ async function paymentHandle() { ...@@ -369,7 +390,7 @@ async function paymentHandle() {
369 } 390 }
370 391
371 async function getDetail() { 392 async function getDetail() {
372 const res = await getTicketInfoByActivityId({ activityId: orderForm.value.activeId }) 393 const res = await getTicketInfoByActivityId({activityId: orderForm.value.activeId})
373 TickForm.value = res.data 394 TickForm.value = res.data
374 } 395 }
375 396
...@@ -379,6 +400,10 @@ function addPeopl() { ...@@ -379,6 +400,10 @@ function addPeopl() {
379 path: '/booking/ticket/peopleManage' 400 path: '/booking/ticket/peopleManage'
380 }) 401 })
381 } 402 }
403
404 const showImg = () => {
405
406 }
382 </script> 407 </script>
383 408
384 409
...@@ -503,7 +528,7 @@ div { ...@@ -503,7 +528,7 @@ div {
503 528
504 .name { 529 .name {
505 font-size: 16px; 530 font-size: 16px;
506 color: #929aa0; 531 //color: #929aa0;
507 margin-bottom: 20px; 532 margin-bottom: 20px;
508 533
509 .tag_t { 534 .tag_t {
......
...@@ -221,8 +221,8 @@ ...@@ -221,8 +221,8 @@
221 221
222 <div class="container bottom"> 222 <div class="container bottom">
223 <div style="display: flex"> 223 <div style="display: flex">
224 <div :class="{'bg':active==1}" class="buBg" @click="active=1">购票说明</div> 224 <div :class="{'bg':active==1}" class="buBg" @click="active=1">{{ language==0?'购票说明':'Notice' }}</div>
225 <div :class="{'bg' :active==2}" class="buBg" @click="active=2">购票须知</div> 225 <div :class="{'bg' :active==2}" class="buBg" @click="active=2">{{ language==0?'购票须知':'Instructions' }}</div>
226 </div> 226 </div>
227 <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes" /> 227 <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes" />
228 <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice" /> 228 <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice" />
...@@ -394,6 +394,9 @@ function toSelectSeat() { ...@@ -394,6 +394,9 @@ function toSelectSeat() {
394 params: { 394 params: {
395 activeId: activeId.value, 395 activeId: activeId.value,
396 latstId: selectForm.value.latstId 396 latstId: selectForm.value.latstId
397 },
398 query: {
399 tickImg: currTick.value.images
397 } 400 }
398 }) 401 })
399 } else { 402 } else {
......
...@@ -126,10 +126,11 @@ ...@@ -126,10 +126,11 @@
126 126
127 <div class="text-center mt30"> 127 <div class="text-center mt30">
128 <el-button 128 <el-button
129 style="color: #fff" :disabled="btnDisable" size="large" 129 style="color: #fff" size="large"
130 class="w200px btn-lineG" :class="{'forbid':!(!hotTime[0])}" round @click="goOrder" 130 class="w200px btn-lineG" :class="{'forbid':!(!hotTime[0])}" round @click="goOrder"
131 > 131 >
132 {{ language==0?'立即预订':'BOOK NOW' }} 132 <span v-if="btnDisable">{{ language==0?'不在预定时间内':'OUT OF ORDER TIME' }}</span>
133 <span v-else>{{ language==0?'立即预订':'BOOK NOW' }}</span>
133 </el-button> 134 </el-button>
134 </div> 135 </div>
135 </el-card> 136 </el-card>
...@@ -191,6 +192,7 @@ function dateChange() { ...@@ -191,6 +192,7 @@ function dateChange() {
191 } 192 }
192 193
193 function selectDate(date) { 194 function selectDate(date) {
195 query.value.currentDate = date
194 currentDate1.value = currentDate.value = dayjs(date).toDate() 196 currentDate1.value = currentDate.value = dayjs(date).toDate()
195 console.log(date) 197 console.log(date)
196 } 198 }
...@@ -209,7 +211,10 @@ const btnDisable = computed(() => { ...@@ -209,7 +211,10 @@ const btnDisable = computed(() => {
209 }) 211 })
210 212
211 213
212 function goOrder(room) { 214 function goOrder() {
215 if(btnDisable.value){
216 return
217 }
213 ElMessageBox.confirm(language.value == 0 ? `你当前选择的出行日期为${dayjs(currentDate.value).format('YYYY-MM-DD')}是否确定?` : `Your current check-in time is ${dayjs(currentDate.value).format('YYYY-MM-DD')} Are you sure?`, { type: 'warning' }).then({}).then(() => { 218 ElMessageBox.confirm(language.value == 0 ? `你当前选择的出行日期为${dayjs(currentDate.value).format('YYYY-MM-DD')}是否确定?` : `Your current check-in time is ${dayjs(currentDate.value).format('YYYY-MM-DD')} Are you sure?`, { type: 'warning' }).then({}).then(() => {
214 checkOrderPay(6).then(res => { 219 checkOrderPay(6).then(res => {
215 if (res.data == -100) { 220 if (res.data == -100) {
......
...@@ -58,22 +58,25 @@ ...@@ -58,22 +58,25 @@
58 58
59 <!-- :picker-options="pickerOptions"--> 59 <!-- :picker-options="pickerOptions"-->
60 </el-form-item> 60 </el-form-item>
61 <el-form-item v-for="(n,i) in gateList" :key="i" :label="language==0? n.name:'Rooms'" prop="count"> 61 <el-form-item v-for="(n,i) in gateList" :key="i" :label="language==0? n.name:n.name" prop="count">
62 <el-input-number v-model="n.count" :min="0" :max="n.leftNum" @change="changeNum(n)" /> 62 <el-input-number v-model="n.count" :min="0" :max="n.leftNum" @change="changeNum(n)" />
63 <div class="red ml20"> 63 <div class="red ml20">
64 <span v-if="language == 0">单价:{{ n.price }}</span> 64 <span v-if="language == 0">单价: ¥{{ n.price }}</span>
65 <span v-else>{{ n.priceEn }}</span> 65 <span v-else>{{ n.priceEn }} / Ticket</span>
66 </div> 66 </div>
67 <div class="red ml20"> 67 <div class="red ml20">
68 <span v-if="language == 0">剩余票数:{{ n.leftNum }}</span> 68 <span v-if="language == 0">剩余票数:{{ n.leftNum }}</span>
69 <span v-else>{{ n.leftNum }} Remaining rooms</span> 69 <span v-else>{{ n.leftNum }} sheet remaining </span>
70 </div> 70 </div>
71 </el-form-item> 71 </el-form-item>
72 72
73 <div v-if="needPersonNum>0" class="fakeFormItem"> 73 <div v-if="needPersonNum>0" class="fakeFormItem">
74 <label>需填写{{ needPersonNum }}位游客</label> 74 <label v-if="language == 0">需填写{{ needPersonNum }}位游客</label>
75 <label v-else>Need {{ needPersonNum }} visitors</label>
75 <div> 76 <div>
76 <label class="text-warning" v-show="needPersonNum > hasPersonNum">还需填写{{ needPersonNum-hasPersonNum }}位游客</label> 77 <label class="text-warning" v-show="needPersonNum > hasPersonNum && language==0">
78 还需填写{{ needPersonNum-hasPersonNum }}位游客
79 </label>
77 </div> 80 </div>
78 </div> 81 </div>
79 <div v-for="(n,i) in gateList" :key="i"> 82 <div v-for="(n,i) in gateList" :key="i">
...@@ -84,9 +87,12 @@ ...@@ -84,9 +87,12 @@
84 </label> 87 </label>
85 <div v-if="p.name" class="mation"> 88 <div v-if="p.name" class="mation">
86 <div>{{ p.name }}</div> 89 <div>{{ p.name }}</div>
87 身份证:{{ p.idCard }} 90 <span v-if="p.idcType==0">{{language==0?'身份证':'ID number'}}</span>
91 <span v-if="p.idcType==1">{{language==0?'护照':'Passport'}}</span>
92 <span v-if="p.idcType==2">{{language==0?'其他':'Other'}}</span>
93 {{ p.idCard }}
88 </div> 94 </div>
89 <el-icon @click="showAddPerson(n, j,p)"><Edit /></el-icon> 95 <el-icon @click="showAddPerson(n, j,p)" color="#453DEA"><Edit /></el-icon>
90 </div> 96 </div>
91 </div> 97 </div>
92 98
...@@ -107,13 +113,13 @@ ...@@ -107,13 +113,13 @@
107 <div v-for="(c, index) in gateList" v-show="c.count>0" :key="index" class="ccitem"> 113 <div v-for="(c, index) in gateList" v-show="c.count>0" :key="index" class="ccitem">
108 114
109 {{ c.name }} 115 {{ c.name }}
110 <span v-if="language==0">{{ c.count }}*{{ '¥' }}{{ c.price }}</span> 116 <span v-if="language==0">{{ c.count }} * {{ '¥' }}{{ c.price }}</span>
111 <span v-else>{{ c.count }}*{{ '€' }}{{ c.priceEn }}</span> 117 <span v-else>{{ c.count }} * {{ '€' }} {{ c.priceEn }}</span>
112 </div> 118 </div>
113 119
114 <label>{{ language == 0 ? '共计' : 'Total' }}<span 120 <label>{{ language == 0 ? '共计' : 'Total' }}<span
115 class="fr bigMoney" 121 class="fr bigMoney"
116 >{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label> 122 >{{ language == 0 ? '¥' : '€' }} {{ money }}</span></label>
117 123
118 </div> 124 </div>
119 </el-col> 125 </el-col>
...@@ -457,7 +463,7 @@ function submit() { ...@@ -457,7 +463,7 @@ function submit() {
457 line-height: 32px;flex: 0 0 auto; 463 line-height: 32px;flex: 0 0 auto;
458 display: inline-flex; 464 display: inline-flex;
459 justify-content: flex-end; 465 justify-content: flex-end;
460 align-items: center;gap: 10px;} 466 align-items: center;gap: 10px;white-space: nowrap;}
461 } 467 }
462 .tip{font-size: 14px;color: #666;padding: 0 10px;} 468 .tip{font-size: 14px;color: #666;padding: 0 10px;}
463 .personIt{display: flex;align-items: center; 469 .personIt{display: flex;align-items: center;
......
...@@ -8,17 +8,17 @@ ...@@ -8,17 +8,17 @@
8 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'发票开具':'Invoice' }}</el-button>--> 8 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'发票开具':'Invoice' }}</el-button>-->
9 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'我的发票':'My Invoice' }}</el-button>--> 9 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'我的发票':'My Invoice' }}</el-button>-->
10 </div> 10 </div>
11 <el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228" /> 11 <el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228"/>
12 12
13 <div class="pd20"> 13 <div class="pd20">
14 <div v-for="b in list" class="item"> 14 <div v-for="b in list" class="item">
15 <div class="title"> 15 <div class="title">
16 <label v-if="b.orderType == 0" class="blueTag"> {{ language == 0 ? '酒店' : 'HOTEL' }} </label> 16 <label v-if="b.orderType == 0" class="blueTag"> {{ language == 0 ? '酒店' : 'HOTEL' }} </label>
17 <label v-if="b.orderType == 1" class="purpleTag"> {{ language == 0 ? '车辆' : 'TRANSPORTATION' }} </label> 17 <label v-if="b.orderType == 1" class="purpleTag"> {{ language == 0 ? '车辆' : 'TRANSPORTATION' }} </label>
18 <label v-if="b.orderType == 2" class="orangeTag"> {{ language == 0 ? '餐饮' : 'DINING' }} </label> 18 <label v-if="b.orderType == 2" class="blueTag"> {{ language == 0 ? '餐饮' : 'DINING' }} </label>
19 <label v-if="b.orderType == 3" class="orangeTag"> {{ language == 0 ? '化妆' : 'MakeUp' }} </label> 19 <label v-if="b.orderType == 3" class="purpleTag"> {{ language == 0 ? '化妆' : 'MakeUp' }} </label>
20 <label v-if="b.orderType == 4" class="orangeTag"> {{ language == 0 ? '拍摄' : 'Shooting ' }} </label> 20 <label v-if="b.orderType == 4" class="orangeTag"> {{ language == 0 ? '拍摄' : 'Shooting ' }} </label>
21 <label v-if="b.orderType == 5" class="orangeTag"> {{ language == 0 ? '票务' : 'TICKETING ' }} </label> 21 <label v-if="b.orderType == 5" class="greenTag"> {{ language == 0 ? '票务' : 'TICKETING ' }} </label>
22 <label v-if="b.orderType == 6" class="orangeTag"> {{ language == 0 ? '旅游' : 'Travel ' }} </label> 22 <label v-if="b.orderType == 6" class="orangeTag"> {{ language == 0 ? '旅游' : 'Travel ' }} </label>
23 23
24 <span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span> 24 <span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
...@@ -28,9 +28,8 @@ ...@@ -28,9 +28,8 @@
28 <span v-if="b.status == '0'&&b.surplus!='0,0'&&b.surplus!='0'" class="bg-warning"> 28 <span v-if="b.status == '0'&&b.surplus!='0,0'&&b.surplus!='0'" class="bg-warning">
29 {{ language == 0 ? '待支付' : 'Unpaid' }} 29 {{ language == 0 ? '待支付' : 'Unpaid' }}
30 </span> 30 </span>
31 <span v-if="b.status == '0'&&(b.surplus=='0,0'||b.surplus=='0')" class="bg-warning">{{ 31 <span v-if="b.status == '0'&&(b.surplus=='0,0'||b.surplus=='0')"
32 language == 0 ? '已取消' : 'Canceled' 32 class="bg-warning">{{ language == 0 ? '已取消' : 'Canceled' }}</span>
33 }}</span>
34 <span v-if="b.status == '1'" class="bg-blue">{{ language == 0 ? '支付成功' : 'successful' }}</span> 33 <span v-if="b.status == '1'" class="bg-blue">{{ language == 0 ? '支付成功' : 'successful' }}</span>
35 <span v-if="b.status == '2'" class="bg-warning">{{ language == 0 ? '已取消' : 'Canceled' }}</span> 34 <span v-if="b.status == '2'" class="bg-warning">{{ language == 0 ? '已取消' : 'Canceled' }}</span>
36 <span v-if="b.status == '3'||b.status == '4'" class="bg-danger">{{ 35 <span v-if="b.status == '3'||b.status == '4'" class="bg-danger">{{
...@@ -39,9 +38,7 @@ ...@@ -39,9 +38,7 @@
39 <span v-if="b.status == '7'" class="bg-danger">{{ 38 <span v-if="b.status == '7'" class="bg-danger">{{
40 language == 0 ? '退款审核中' : 'Refund in review' 39 language == 0 ? '退款审核中' : 'Refund in review'
41 }}</span> 40 }}</span>
42 <span v-if="b.status == '-1'" class="bg-blue">{{ 41 <span v-if="b.status == '-1'" class="bg-blue">{{ language == 0 ? '已核销' : 'Completed' }}</span>
43 language == 0 ? '已核销' : 'Completed'
44 }}</span>
45 </div> 42 </div>
46 43
47 <el-row align="middle" class="pd20 mt10" justify="space-between"> 44 <el-row align="middle" class="pd20 mt10" justify="space-between">
...@@ -56,7 +53,7 @@ ...@@ -56,7 +53,7 @@
56 <div v-if="b.orderType == 1"> 53 <div v-if="b.orderType == 1">
57 <h3 class="name">{{ b.name }}</h3> 54 <h3 class="name">{{ b.name }}</h3>
58 <div> 55 <div>
59 <p>{{ b.extJsonObj.pickUpBo.count }} </p> 56 <p>{{ b.extJsonObj.pickUpBo.count }} {{ language == 0 ? '人' : 'people' }}</p>
60 <p>{{ b.extJsonObj.pickUpBo.revTime }}</p> 57 <p>{{ b.extJsonObj.pickUpBo.revTime }}</p>
61 </div> 58 </div>
62 <!-- <p>{{b.messageObj}}</p>--> 59 <!-- <p>{{b.messageObj}}</p>-->
...@@ -84,16 +81,18 @@ ...@@ -84,16 +81,18 @@
84 81
85 <div v-if="b.orderType==5"> 82 <div v-if="b.orderType==5">
86 <h3 class="name">{{ b.name }}</h3> 83 <h3 class="name">{{ b.name }}</h3>
87 <p> 84 <p v-if="b.extJsonObj.ticketDate.name">
88 <!-- {{-->
89 <!-- dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[0] + '-' + dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[1]-->
90 <!-- }}-->
91 {{ b.extJsonObj.ticketDate.name }} 85 {{ b.extJsonObj.ticketDate.name }}
92 </p> 86 </p>
87 <p>{{ b.extJsonObj.atName }}{{ b.extJsonObj.atsName }}{{ b.extJsonObj.atstName }}</p>
88 <p v-for="p in b.extJsonObj?.orderCustomerList">
89 <el-tag class="mr10" v-if="p.deskNo">{{p.deskNo}}-{{p.seatNo}}</el-tag>
90 {{ p.name }} - {{ p.paymentType == '3' ? '€' : '¥' }}{{ b.extJsonObj.price }}
91 </p>
93 </div> 92 </div>
94 <div v-if="b.orderType == 6"> 93 <div v-if="b.orderType == 6">
95 <h3 class="name">{{ b.name }}</h3> 94 <h3 class="name">{{ b.name }}</h3>
96 <p>出行时间{{ b.extJsonObj.dcStart }}</p> 95 <p>{{ language == 0 ? '出行时间' : 'Travel Time' }}{{ b.extJsonObj.dcStart }}</p>
97 <p v-for="t in b.extJsonObj.touristList">{{ t.gateName }}{{ t.name }}</p> 96 <p v-for="t in b.extJsonObj.touristList">{{ t.gateName }}{{ t.name }}</p>
98 </div> 97 </div>
99 </el-col> 98 </el-col>
...@@ -102,8 +101,8 @@ ...@@ -102,8 +101,8 @@
102 <p>{{ b.messageObj?.roomName }}</p> 101 <p>{{ b.messageObj?.roomName }}</p>
103 <p>{{ b.messageObj?.roomInfo }}</p> 102 <p>{{ b.messageObj?.roomInfo }}</p>
104 </div> 103 </div>
105 <div v-if="b.orderType == 1" /> 104 <div v-if="b.orderType == 1"/>
106 <div v-if="b.orderType == 2" /> 105 <div v-if="b.orderType == 2"/>
107 <div v-if="b.orderType == 3||b.orderType == 4"> 106 <div v-if="b.orderType == 3||b.orderType == 4">
108 <p>{{ b.extJsonObj.packageName }}</p> 107 <p>{{ b.extJsonObj.packageName }}</p>
109 </div> 108 </div>
...@@ -167,26 +166,26 @@ ...@@ -167,26 +166,26 @@
167 </div> 166 </div>
168 </div> 167 </div>
169 </el-card> 168 </el-card>
170 <div class="pd20" /> 169 <div class="pd20"/>
171 170
172 </div> 171 </div>
173 </template> 172 </template>
174 173
175 <script setup> 174 <script setup>
176 import { onMounted, getCurrentInstance } from '@vue/runtime-core' 175 import {onMounted, getCurrentInstance} from '@vue/runtime-core'
177 import { useStorage } from '@vueuse/core/index' 176 import {useStorage} from '@vueuse/core/index'
178 import { newbilllist } from '@/apiPc/common' 177 import {newbilllist} from '@/apiPc/common'
179 import useUserStore from '@/store/modules/user' 178 import useUserStore from '@/store/modules/user'
180 import dayjs from 'dayjs' 179 import dayjs from 'dayjs'
181 import { cancelOrder2, cancelOrder } from '/@/apiPc/booking' 180 import {cancelOrder2, cancelOrder} from '/@/apiPc/booking'
182 181
183 import { ElMessage } from 'element-plus' 182 import {ElMessage} from 'element-plus'
184 183
185 const router = useRouter() 184 const router = useRouter()
186 const language = useStorage('language', 0) 185 const language = useStorage('language', 0)
187 const list = ref([]) 186 const list = ref([])
188 const user = useUserStore().user 187 const user = useUserStore().user
189 const { proxy } = getCurrentInstance() 188 const {proxy} = getCurrentInstance()
190 189
191 onMounted(() => { 190 onMounted(() => {
192 getList() 191 getList()
...@@ -198,7 +197,7 @@ function finish(bill) { ...@@ -198,7 +197,7 @@ function finish(bill) {
198 } 197 }
199 198
200 function getList() { 199 function getList() {
201 newbilllist({ createById: user.userId }).then(res => { 200 newbilllist({createById: user.userId}).then(res => {
202 list.value = res.rows || [] 201 list.value = res.rows || []
203 for (const b of list.value) { 202 for (const b of list.value) {
204 b.messageObj = JSON.parse(b.message) || {} 203 b.messageObj = JSON.parse(b.message) || {}
...@@ -386,6 +385,10 @@ function toInvoice() { ...@@ -386,6 +385,10 @@ function toInvoice() {
386 } 385 }
387 386
388 .blueTag { 387 .blueTag {
388 background-color: #1e62c8;
389 }
390
391 .greenTag {
389 background-color: #1EC886; 392 background-color: #1EC886;
390 } 393 }
391 394
......
...@@ -36,9 +36,14 @@ ...@@ -36,9 +36,14 @@
36 <p>TRANSPORTATION RESERVATION</p> 36 <p>TRANSPORTATION RESERVATION</p>
37 </div> 37 </div>
38 </el-col> 38 </el-col>
39 <!-- <el-col :sm="12" :lg="8" :xs="12">-->
40 <!-- <div class="item_en" @click="popRemark(3)"><img src="@/assets/dance/btn03.png">-->
41 <!-- <p>DINING RESERVATION</p>-->
42 <!-- </div>-->
43 <!-- </el-col>-->
39 <el-col :sm="12" :lg="8" :xs="12"> 44 <el-col :sm="12" :lg="8" :xs="12">
40 <div class="item_en" @click="popRemark(3)"><img src="@/assets/dance/btn03.png"> 45 <div class="item_en" @click="popRemark(8)"><img src="@/assets/dance/btn08.png">
41 <p>DINING RESERVATION</p> 46 <p>TRAVEL SERVICE</p>
42 </div> 47 </div>
43 </el-col> 48 </el-col>
44 <el-col :sm="12" :lg="8" :xs="12"> 49 <el-col :sm="12" :lg="8" :xs="12">
......
...@@ -8,13 +8,14 @@ ...@@ -8,13 +8,14 @@
8 <div style="min-height: 300px" v-loading="loading"> 8 <div style="min-height: 300px" v-loading="loading">
9 9
10 <div v-if="!type||type==''"> 10 <div v-if="!type||type==''">
11 <div @click="type='0'" class="rItem">{{ language==0?'个人查询':'Personal Query' }}</div> 11 <div @click="type='0'" class="rItem">{{ language == 0 ? '个人查询' : 'Personal Query' }}</div>
12 <div @click="type='1'" class="rItem">{{ language==0?'团队查询':'Team Query' }}</div> 12 <div @click="type='1'" class="rItem">{{ language == 0 ? '团队查询' : 'Team Query' }}</div>
13 </div> 13 </div>
14 14
15 <div v-if="type=='0'"> 15 <div v-if="type=='0'">
16 <div class="flex mt30"> 16 <div class="flex mt30">
17 <el-input :placeholder="language==0?'输入会员号 / 姓名查询':'Enter WDSF MIN / Name to Query'" v-model="query" clearable 17 <el-input :placeholder="language==0?'输入会员号 / 姓名查询':'Enter WDSF MIN / Name to Query'" v-model="query"
18 clearable
18 @enter="search" @blur="search" @empty="search"/> 19 @enter="search" @blur="search" @empty="search"/>
19 <el-button @click="search" class="btn-lineG" style="color: #fff">{{ 20 <el-button @click="search" class="btn-lineG" style="color: #fff">{{
20 language == 0 ? '查询' : 'Search' 21 language == 0 ? '查询' : 'Search'
...@@ -29,19 +30,19 @@ ...@@ -29,19 +30,19 @@
29 <span class="text-primary">{{ form.number }}</span> 30 <span class="text-primary">{{ form.number }}</span>
30 </div> 31 </div>
31 <div> 32 <div>
32 <label>{{ language==0?'选手1':'Name1' }}</label>{{ form.maleName }} 33 <label>{{ language == 0 ? '选手1' : 'Name1' }}</label>{{ form.maleName }}
33 <span v-if="form.maleWdsf"> - {{ form.maleWdsf }}</span> 34 <span v-if="form.maleWdsf"> - {{ form.maleWdsf }}</span>
34 </div> 35 </div>
35 <div> 36 <div>
36 <label>{{ language==0?'选手2':'Name2' }}</label>{{ form.femaleName }} 37 <label>{{ language == 0 ? '选手2' : 'Name2' }}</label>{{ form.femaleName }}
37 <span v-if="form.femaleWdsf"> - {{ form.femaleWdsf }}</span> 38 <span v-if="form.femaleWdsf"> - {{ form.femaleWdsf }}</span>
38 </div> 39 </div>
39 <div> 40 <div>
40 <label>{{ language==0?'代表队':'Represent' }}</label> 41 <label>{{ language == 0 ? '代表队' : 'Represent' }}</label>
41 {{ form.groupName }} 42 {{ form.groupName }}
42 </div> 43 </div>
43 <div v-if="form.zuInfo"> 44 <div v-if="form.zuInfo">
44 <label> {{ language==0?'组别':'Event' }}</label>{{ form.zuInfo }} 45 <label> {{ language == 0 ? '组别' : 'Event' }}</label>{{ form.zuInfo }}
45 </div> 46 </div>
46 </div> 47 </div>
47 </div> 48 </div>
...@@ -52,19 +53,24 @@ ...@@ -52,19 +53,24 @@
52 </div> 53 </div>
53 <div v-if="type=='1'"> 54 <div v-if="type=='1'">
54 <div class="flex mt20"> 55 <div class="flex mt20">
55 <el-input :placeholder="language==0?'请输入代表队名称至少两字符':'Enter the representing team name,At least two characters'" 56 <el-input
57 :placeholder="language==0?'请输入代表队名称至少两字符':'Enter the representing team name,At least two characters'"
56 v-model="query2" clearable 58 v-model="query2" clearable
57 @enter="searchTeam" @blur="searchTeam" @empty="searchTeam"/> 59 @enter="searchTeam" @blur="searchTeam" @empty="searchTeam"/>
58 <el-button @click="searchTeam" class="btn-lineG" style="color: #fff"> 60 <el-button @click="searchTeam" class="btn-lineG" style="color: #fff">
59 {{language == 0 ? '查询' : 'Search' }} 61 {{ language == 0 ? '查询' : 'Search' }}
60 </el-button> 62 </el-button>
61 </div> 63 </div>
62 <span class="tip">*{{ language == 0 ?'模糊查询':'Fuzzy query' }}</span> 64 <span class="tip">*{{ language == 0 ? '模糊查询' : 'Fuzzy query' }}</span>
63 <div class="text-danger text-center" v-if="showGroupList">{{ language == 0 ?'找到多个团体':'Found multiple teams' }}</div> 65 <div class="text-danger text-center" v-if="showGroupList">
66 {{ language == 0 ? '找到多个团体' : 'Found multiple teams' }}
67 </div>
64 <div class="groupList" v-if="showGroupList"> 68 <div class="groupList" v-if="showGroupList">
65 <ul> 69 <ul>
66 <li v-for="(item, index) in groupList" @click="showDetail(item)" :key="index">{{item}} 70 <li v-for="(item, index) in groupList" @click="showDetail(item)" :key="index">{{ item }}
67 <el-icon class="fr"><ArrowRight /></el-icon> 71 <el-icon class="fr">
72 <ArrowRight/>
73 </el-icon>
68 </li> 74 </li>
69 </ul> 75 </ul>
70 </div> 76 </div>
...@@ -72,11 +78,11 @@ ...@@ -72,11 +78,11 @@
72 <el-collapse v-model="activeNames" accordion> 78 <el-collapse v-model="activeNames" accordion>
73 <el-collapse-item :name="index" :title="team[0][0].groupName" v-for="(team,index) in teamlist" :key="index"> 79 <el-collapse-item :name="index" :title="team[0][0].groupName" v-for="(team,index) in teamlist" :key="index">
74 <div class="nowteamItem" v-for="(p,jndex) in team" :key="jndex"> 80 <div class="nowteamItem" v-for="(p,jndex) in team" :key="jndex">
75 <div class="fontSize14 text-bold">{{p[0].zuInfo}}</div> 81 <div class="fontSize14 text-bold">{{ p[0].zuInfo }}</div>
76 <div v-for="f in p" :key="f.id"> 82 <div v-for="f in p" :key="f.id">
77 <span class="nowName text-primary">{{f.number}}</span> 83 <span class="nowName text-primary">{{ f.number }}</span>
78 <span class="mr10">{{ language==0?'选手1':'Name1' }}{{f.maleName}} </span> 84 <span class="mr10">{{ language == 0 ? '选手1' : 'Name1' }}{{ f.maleName }} </span>
79 <span>{{ language==0?'选手2':'Name2' }}{{f.femaleName}} </span> 85 <span>{{ language == 0 ? '选手2' : 'Name2' }}{{ f.femaleName }} </span>
80 </div> 86 </div>
81 </div> 87 </div>
82 </el-collapse-item> 88 </el-collapse-item>
...@@ -111,7 +117,7 @@ const search = () => { ...@@ -111,7 +117,7 @@ const search = () => {
111 return 117 return
112 } 118 }
113 getBackNumber({query: query.value}).then(res => { 119 getBackNumber({query: query.value}).then(res => {
114 if (!res.data||res.data.length==0) { 120 if (!res.data || res.data.length == 0) {
115 list.value = [] 121 list.value = []
116 //提示 '未找到结果,请重新查询' 122 //提示 '未找到结果,请重新查询'
117 ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result') 123 ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result')
...@@ -123,24 +129,24 @@ const search = () => { ...@@ -123,24 +129,24 @@ const search = () => {
123 } 129 }
124 const searchTeam = () => { 130 const searchTeam = () => {
125 teamlist.value = [] 131 teamlist.value = []
126 if (!query2.value||query2.value.length < 2) { 132 if (!query2.value || query2.value.length < 2) {
127 ElMessage.warning(language.value == 0 ? '请输入代表队名称至少两字符' : 'Enter the representing team name,At least two characters') 133 ElMessage.warning(language.value == 0 ? '请输入代表队名称至少两字符' : 'Enter the representing team name,At least two characters')
128 return 134 return
129 } 135 }
130 loading.value = true 136 loading.value = true
131 getTeamBackNumberPre({query: query2.value}).then(res => { 137 getTeamBackNumberPre({query: query2.value}).then(res => {
132 loading.value = false 138 loading.value = false
133 if (!res.data||res.data.length==0) { 139 if (!res.data || res.data.length == 0) {
134 groupList.value = [] 140 groupList.value = []
135 //提示 '未找到结果,请重新查询' 141 //提示 '未找到结果,请重新查询'
136 ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result') 142 ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result')
137 return 143 return
138 } 144 }
139 groupList.value = res.data 145 groupList.value = res.data
140 if(groupList.value.length==1){ 146 if (groupList.value.length == 1) {
141 showDetail(groupList.value[0]) 147 showDetail(groupList.value[0])
142 } 148 }
143 if(groupList.value.length>1){ 149 if (groupList.value.length > 1) {
144 showGroupList.value = true 150 showGroupList.value = true
145 } 151 }
146 152
...@@ -157,6 +163,7 @@ const open = (param) => { ...@@ -157,6 +163,7 @@ const open = (param) => {
157 defineExpose({ 163 defineExpose({
158 open 164 open
159 }) 165 })
166
160 function showDetail(name) { 167 function showDetail(name) {
161 query2.value = name 168 query2.value = name
162 showGroupList.value = false 169 showGroupList.value = false
...@@ -169,21 +176,40 @@ function showDetail(name) { ...@@ -169,21 +176,40 @@ function showDetail(name) {
169 </script> 176 </script>
170 177
171 <style scoped lang="scss"> 178 <style scoped lang="scss">
172 .tip{font-size: 12px;margin: 4px 0 0;display: inline-block;} 179 .tip {
173 .rItem{ 180 font-size: 12px;
181 margin: 4px 0 0;
182 display: inline-block;
183 }
184
185 .rItem {
174 height: 130px; 186 height: 130px;
175 cursor: pointer;border: 1px solid #e1e1e1;border-radius: 4px; 187 cursor: pointer;
176 width: 350px;text-align: center;line-height: 130px; 188 border: 1px solid #e1e1e1;
177 padding: 1px; font-size: 30px;color: #fff; 189 border-radius: 4px;
178 margin: 20px auto;background:linear-gradient(90deg, #8623FC, #453DEA); 190 width: 350px;
179 &:hover{ 191 text-align: center;
180 background:linear-gradient(90deg, #453DEA, #8623FC); 192 line-height: 130px;
181 box-shadow: 0 4px 10px #453DEA;border: none; 193 padding: 1px;
194 font-size: 30px;
195 color: #fff;
196 margin: 20px auto;
197 background: linear-gradient(90deg, #8623FC, #453DEA);
198
199 &:hover {
200 background: linear-gradient(90deg, #453DEA, #8623FC);
201 box-shadow: 0 4px 10px #453DEA;
202 border: none;
182 } 203 }
183 } 204 }
205
184 .nowteamItem { 206 .nowteamItem {
185 width: 100%;border: 1px solid #c8c5ff; margin-top: 20px; 207 width: 100%;
186 position: relative;border-radius: 4px;padding: 0 0 20px; 208 border: 1px solid #c8c5ff;
209 margin-top: 20px;
210 position: relative;
211 border-radius: 4px;
212 padding: 0 0 20px;
187 background: #FFFFFF; 213 background: #FFFFFF;
188 box-sizing: border-box; 214 box-sizing: border-box;
189 215
...@@ -210,14 +236,38 @@ function showDetail(name) { ...@@ -210,14 +236,38 @@ function showDetail(name) {
210 } 236 }
211 } 237 }
212 } 238 }
239
213 .temell { 240 .temell {
214 .nowteamItem{padding: 10px;margin: 0 0 10px; 241 .nowteamItem {
215 .nowName{font-size: 15px;font-weight: bold;margin-right: 10px} 242 padding: 10px;
216 .text-bold{font-weight: bold;} 243 margin: 0 0 10px;
217 .fontsize14{font-size: 14px;} 244
245 .nowName {
246 font-size: 15px;
247 font-weight: bold;
248 margin-right: 10px
249 }
250
251 .text-bold {
252 font-weight: bold;
253 }
254
255 .fontsize14 {
256 font-size: 14px;
257 }
218 } 258 }
219 } 259 }
220 .groupList{max-height: 70vh;overflow: auto;border: 1px solid #e1e1e1;margin-top: 10px; 260
221 li{padding: 10px;border-bottom: 1px solid #e1e1e1;cursor: pointer;} 261 .groupList {
262 max-height: 70vh;
263 overflow: auto;
264 border: 1px solid #e1e1e1;
265 margin-top: 10px;
266
267 li {
268 padding: 10px;
269 border-bottom: 1px solid #e1e1e1;
270 cursor: pointer;
271 }
222 } 272 }
223 </style> 273 </style>
......
...@@ -412,6 +412,14 @@ ...@@ -412,6 +412,14 @@
412 </el-col> 412 </el-col>
413 </el-row> 413 </el-row>
414 </div> 414 </div>
415
416 <!-- 邀请函-->
417 <div v-if="matchData.leagueId==0" class="fixed_gg_l yaoQing" @click="applyInvitation">
418 <img v-if="language==0" src="@/assets/logo/Invitation_c.png">
419 <img v-else src="@/assets/logo/Invitation_e.png">
420 </div>
421
422 <affix-invitation ref="dialogInvitationRef" />
415 </div> 423 </div>
416 </template> 424 </template>
417 <script setup> 425 <script setup>
...@@ -430,6 +438,11 @@ import { dayjs } from 'element-plus' ...@@ -430,6 +438,11 @@ import { dayjs } from 'element-plus'
430 import * as match from '@/apiPc/match' 438 import * as match from '@/apiPc/match'
431 import { getAboutUs, getppInfo, getZNList } from '@/apiPc/match' 439 import { getAboutUs, getppInfo, getZNList } from '@/apiPc/match'
432 440
441 import AffixInvitation from '/@/viewsPc/match/components/affix-invitation.vue'
442 import { useStorage } from '@vueuse/core/index'
443
444 const language = useStorage('language', 0)
445
433 const modules = [Autoplay, Navigation] 446 const modules = [Autoplay, Navigation]
434 const navigationPic = ref({ 447 const navigationPic = ref({
435 nextEl: '.picnext', 448 nextEl: '.picnext',
...@@ -605,6 +618,15 @@ const handlePickup = () => { ...@@ -605,6 +618,15 @@ const handlePickup = () => {
605 emit('pickup', params) 618 emit('pickup', params)
606 } 619 }
607 620
621 function applyInvitation() {
622 var obj = {
623 title: language.value == 0 ? '邀请函申请' : 'Visa Invitation Letter ',
624 cptId: matchData.value.id
625 }
626 console.log(matchData.value.id)
627 proxy.$refs['dialogInvitationRef'].open(obj)
628 }
629
608 </script> 630 </script>
609 631
610 <style lang="scss" scoped> 632 <style lang="scss" scoped>
...@@ -1195,4 +1217,11 @@ const handlePickup = () => { ...@@ -1195,4 +1217,11 @@ const handlePickup = () => {
1195 width: 192px; 1217 width: 192px;
1196 text-align: center; 1218 text-align: center;
1197 } 1219 }
1220
1221 .yaoQing {
1222 width: 160px;
1223 left: 5px;
1224 top: 40%;
1225
1226 }
1198 </style> 1227 </style>
......
...@@ -392,7 +392,13 @@ ...@@ -392,7 +392,13 @@
392 </el-row> 392 </el-row>
393 </div> 393 </div>
394 394
395 <!-- 邀请函-->
396 <div v-if="matchData.leagueId==0" class="fixed_gg_l yaoQing" @click="applyInvitation">
397 <img v-if="language==0" src="@/assets/logo/Invitation_c.png">
398 <img v-else src="@/assets/logo/Invitation_e.png">
399 </div>
395 400
401 <affix-invitation ref="dialogInvitationRef" />
396 </div> 402 </div>
397 </template> 403 </template>
398 <script setup> 404 <script setup>
...@@ -409,7 +415,10 @@ import 'swiper/css' ...@@ -409,7 +415,10 @@ import 'swiper/css'
409 import { dayjs, ElMessage } from 'element-plus' 415 import { dayjs, ElMessage } from 'element-plus'
410 import * as match from '@/apiPc/match' 416 import * as match from '@/apiPc/match'
411 import { rankList } from '@/assets/js/data' 417 import { rankList } from '@/assets/js/data'
418 import AffixInvitation from '/@/viewsPc/match/components/affix-invitation.vue'
419 import { useStorage } from '@vueuse/core/index'
412 420
421 const language = useStorage('language', 0)
413 const modules = [Autoplay, Navigation] 422 const modules = [Autoplay, Navigation]
414 const navigationPic = ref({ 423 const navigationPic = ref({
415 nextEl: '.picnext', 424 nextEl: '.picnext',
...@@ -580,6 +589,15 @@ const handlePickup = () => { ...@@ -580,6 +589,15 @@ const handlePickup = () => {
580 } 589 }
581 emit('pickup', params) 590 emit('pickup', params)
582 } 591 }
592
593 function applyInvitation() {
594 var obj = {
595 title: language.value == 0 ? '邀请函申请' : 'Visa Invitation Letter ',
596 cptId: matchData.value.id
597 }
598 console.log(matchData.value.id)
599 proxy.$refs['dialogInvitationRef'].open(obj)
600 }
583 </script> 601 </script>
584 602
585 <style lang="scss" scoped> 603 <style lang="scss" scoped>
...@@ -1321,4 +1339,11 @@ const handlePickup = () => { ...@@ -1321,4 +1339,11 @@ const handlePickup = () => {
1321 height: 60px; 1339 height: 60px;
1322 } 1340 }
1323 } 1341 }
1342
1343 .yaoQing {
1344 width: 160px;
1345 left: 5px;
1346 top: 40%;
1347
1348 }
1324 </style> 1349 </style>
......
...@@ -144,11 +144,12 @@ import AddCoach from '../components/addCoach' ...@@ -144,11 +144,12 @@ import AddCoach from '../components/addCoach'
144 import AddWdsf from '../components/addWdsf' 144 import AddWdsf from '../components/addWdsf'
145 import Import from '../components/import' 145 import Import from '../components/import'
146 import { useStorage } from '@vueuse/core/index' 146 import { useStorage } from '@vueuse/core/index'
147 import { delPersonForPersonal, getPerPersonList } from '@/apiPc/match' 147 import { delPersonForPersonal, getPerPersonList, getMate } from '@/apiPc/match'
148 import useUserStore from '@/store/modules/user' 148 import useUserStore from '@/store/modules/user'
149 import { ElMessage, ElMessageBox } from 'element-plus' 149 import { ElMessage, ElMessageBox } from 'element-plus'
150 import _ from 'lodash' 150 import _ from 'lodash'
151 151
152 const dancing = ref(null)// 舞伴
152 const language = useStorage('language', 0) 153 const language = useStorage('language', 0)
153 const user = useUserStore().user 154 const user = useUserStore().user
154 const { proxy } = getCurrentInstance() 155 const { proxy } = getCurrentInstance()
...@@ -194,6 +195,7 @@ const open = (params) => { ...@@ -194,6 +195,7 @@ const open = (params) => {
194 show.value = true 195 show.value = true
195 isNational.value = params.isNational 196 isNational.value = params.isNational
196 choosedList = params.choosedList 197 choosedList = params.choosedList
198 tableData.value = []
197 getList() 199 getList()
198 } 200 }
199 defineExpose({ 201 defineExpose({
...@@ -225,6 +227,7 @@ const selectable = (row) => { ...@@ -225,6 +227,7 @@ const selectable = (row) => {
225 } 227 }
226 } 228 }
227 const getList = () => { 229 const getList = () => {
230 console.log(user.userId)
228 loading.value = true 231 loading.value = true
229 getPerPersonList(query.value, user.userId).then(res => { 232 getPerPersonList(query.value, user.userId).then(res => {
230 total.value = res.total 233 total.value = res.total
...@@ -245,6 +248,10 @@ function handleSelectionChange(val) { ...@@ -245,6 +248,10 @@ function handleSelectionChange(val) {
245 for (const p of val) { 248 for (const p of val) {
246 choosedIds.push(p.id) 249 choosedIds.push(p.id)
247 } 250 }
251 if (val.length == 1) {
252 handelTeammate(val[0].id)
253 }
254 if (val.length == 0) getList()
248 // 判断是否队友 255 // 判断是否队友
249 if (val.length == 2) { 256 if (val.length == 2) {
250 if (val[0].sex != val[1].sex) { 257 if (val[0].sex != val[1].sex) {
...@@ -266,6 +273,27 @@ function handleSelectionChange(val) { ...@@ -266,6 +273,27 @@ function handleSelectionChange(val) {
266 } 273 }
267 } 274 }
268 275
276 async function handelTeammate(id) {
277 const res = await getMate({
278 type: '1',
279 id
280 })
281 dancing.value = res.data
282 const arr = []
283 for (const v of tableData.value) {
284 if (v.id == id || v.id == dancing.value) {
285 arr.push(v)
286 }
287 }
288 tableData.value = arr
289 nextTick(() => {
290 reSetChoosed()
291 })
292 console.log(res)
293 console.log(tableData.value)
294 }
295
296
269 function checkTwo(a, b) { 297 function checkTwo(a, b) {
270 match.checkMate({ per1Id: a.id, per2Id: b.id, cptId: matchId }).then(res => { 298 match.checkMate({ per1Id: a.id, per2Id: b.id, cptId: matchId }).then(res => {
271 if (!res.data) { 299 if (!res.data) {
......
...@@ -588,6 +588,8 @@ function goTeamSign() { ...@@ -588,6 +588,8 @@ function goTeamSign() {
588 ) 588 )
589 return 589 return
590 } 590 }
591
592 handelPreCheckForGroup(
591 router.push({ 593 router.push({
592 path: `${route.params.id}/teamSignCn`, 594 path: `${route.params.id}/teamSignCn`,
593 query: { 595 query: {
...@@ -598,6 +600,7 @@ function goTeamSign() { ...@@ -598,6 +600,7 @@ function goTeamSign() {
598 isNational: false 600 isNational: false
599 } 601 }
600 }) 602 })
603 )
601 } else { 604 } else {
602 // 国际赛 605 // 国际赛
603 if (group?.type != '4' && matchData.value.countryLimit == '1') { 606 if (group?.type != '4' && matchData.value.countryLimit == '1') {
...@@ -612,6 +615,7 @@ function goTeamSign() { ...@@ -612,6 +615,7 @@ function goTeamSign() {
612 ) 615 )
613 return 616 return
614 } 617 }
618 handelPreCheckForGroup(
615 router.push({ 619 router.push({
616 path: `${route.params.id}/teamSign`, 620 path: `${route.params.id}/teamSign`,
617 query: { 621 query: {
...@@ -622,6 +626,7 @@ function goTeamSign() { ...@@ -622,6 +626,7 @@ function goTeamSign() {
622 languageSource: matchData.value.languageSource 626 languageSource: matchData.value.languageSource
623 } 627 }
624 }) 628 })
629 )
625 } 630 }
626 } 631 }
627 632
...@@ -754,17 +759,7 @@ function switchSignType() { ...@@ -754,17 +759,7 @@ function switchSignType() {
754 switch (matchData.value.signType) { 759 switch (matchData.value.signType) {
755 case '0':// 个人 760 case '0':// 个人
756 if (user.utype == '1') { 761 if (user.utype == '1') {
757 match.preCheckForPerson().then(res => { 762 handelGeRenNext()
758 if (res.data == 1) {
759 goPersonalSign()
760 } else {
761 return proxy.$modal.msgError(
762 language.value == 0
763 ? '您绑定的WDSF会员号已过期,请先到WDSF官网激活您的会员号。'
764 : 'Your bound WDSF Number has expired. Please activate your WDSF Number on the WDSF official website first.'
765 )
766 }
767 })
768 } 763 }
769 if (user.utype == '2') { 764 if (user.utype == '2') {
770 ElMessageBox.confirm( 765 ElMessageBox.confirm(
...@@ -796,7 +791,9 @@ function switchSignType() { ...@@ -796,7 +791,9 @@ function switchSignType() {
796 ) 791 )
797 } 792 }
798 if (user.utype == '2') { 793 if (user.utype == '2') {
799 match.preCheckForGroup(groupId.value).then(goTeamSign) 794 // match.preCheckForGroup(groupId.value).then(goTeamSign)
795 // handelPreCheckForGroup(goTeamSign)
796 goTeamSign()
800 } 797 }
801 if (user.utype == '3') { 798 if (user.utype == '3') {
802 // 团队活动 且 游客 799 // 团队活动 且 游客
...@@ -805,12 +802,14 @@ function switchSignType() { ...@@ -805,12 +802,14 @@ function switchSignType() {
805 break 802 break
806 case '2':// 团体队伍 803 case '2':// 团体队伍
807 if (user.utype == '1') { 804 if (user.utype == '1') {
808 match.preCheckForGroup(groupId.value).then(goPersonalSign) 805 // match.preCheckForGroup(groupId.value).then(goPersonalSign)
809 // goPersonalSign() 806 // goPersonalSign()
807 handelPreCheckForGroup(goPersonalSign)
810 } 808 }
811 if (user.utype == '2') { 809 if (user.utype == '2') {
812 match.preCheckForGroup(groupId.value).then(goTeamSign) 810 // handelPreCheckForGroup(goTeamSign)
813 // goTeamSign() 811 // match.preCheckForGroup(groupId.value).then(goTeamSign)
812 goTeamSign()
814 } 813 }
815 if (user.utype == '3') { 814 if (user.utype == '3') {
816 // 游客 815 // 游客
...@@ -820,8 +819,35 @@ function switchSignType() { ...@@ -820,8 +819,35 @@ function switchSignType() {
820 } 819 }
821 } 820 }
822 821
822 async function handelGeRenNext() {
823 const res = await match.preCheckForPerson({ type: '1' })
824 // 不给报名
825 if (res.data == 0) {
826 await proxy.$modal.confirm(
827 language.value == 0
828 ? '您绑定的WDSF会员号已过期,请先到WDSF官网激活您的会员号。'
829 : 'Your bound WDSF Number has expired. Please activate your WDSF Number on the WDSF official website first.'
830 )
831 return
832 }
833 // 正常报名
834 if (res.data == 1) {
835 goPersonalSign()
836 }
837 // 提示
838 if (res.data == 2) {
839 await proxy.$modal.confirm(
840 language.value == 0
841 ? '运动员的WDSF会员号已变更,是否更新?'
842 : 'The athlete`s WDSF membership number has been changed. Should it be updated?'
843 )
844 await match.preCheckForPerson({ type: '2' })
845 await goPersonalSign()
846 }
847 }
848
823 function applyInvitation() { 849 function applyInvitation() {
824 var obj = { 850 const obj = {
825 title: language.value == 0 ? '邀请函申请' : 'Visa Invitation Letter ', 851 title: language.value == 0 ? '邀请函申请' : 'Visa Invitation Letter ',
826 cptId: matchId.value 852 cptId: matchId.value
827 } 853 }
...@@ -835,6 +861,21 @@ const openPickup = () => { ...@@ -835,6 +861,21 @@ const openPickup = () => {
835 } 861 }
836 proxy.$refs['pickupRef'].open(obj) 862 proxy.$refs['pickupRef'].open(obj)
837 } 863 }
864
865 async function handelPreCheckForGroup(fn) {
866 const res = await match.preCheckForGroup(groupId.value, '1')
867 if (res.data == 1 || res.data == 0) {
868 await fn()
869 }
870 if (res.data == 2) {
871 await proxy.$modal.confirm(
872 language.value == 0
873 ? '运动员的WDSF会员号已变更,是否更新?'
874 : 'The athlete`s WDSF membership number has been changed. Should it be updated?')
875 await match.preCheckForGroup(groupId.value, '2')
876 await fn()
877 }
878 }
838 </script> 879 </script>
839 880
840 <style lang="scss" scoped> 881 <style lang="scss" scoped>
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
38 </el-card> 38 </el-card>
39 <el-card class="mt20 mb20"> 39 <el-card class="mt20 mb20">
40 <el-table :data="rank" stripe> 40 <el-table :data="rank" stripe>
41 <el-table-column align="center" label="名次" type="index" width="100"> 41 <el-table-column align="center" :label="language==0?'名次':'Rank'" type="index" width="100">
42 <template #default="scope"> 42 <template #default="scope">
43 <span v-if="scope.row.mingCi == 1" style="color:#F8A617">{{ scope.row.mingCi }}</span> 43 <span v-if="scope.row.mingCi == 1" style="color:#F8A617">{{ scope.row.mingCi }}</span>
44 <span v-else-if="scope.row.mingCi == 2" style="color:#778B92">{{ scope.row.mingCi }}</span> 44 <span v-else-if="scope.row.mingCi == 2" style="color:#778B92">{{ scope.row.mingCi }}</span>
...@@ -47,15 +47,15 @@ ...@@ -47,15 +47,15 @@
47 </template> 47 </template>
48 </el-table-column> 48 </el-table-column>
49 49
50 <el-table-column label="国家" prop="name"> 50 <el-table-column :label="language==0?'国家':'Country'" prop="name">
51 <template #default="scope"> 51 <template #default="scope">
52 <div> 52 <div>
53 <span :class="`flag-icon flag-icon-${scope.row.code}`" /> 53 <span :class="`flag-icon flag-icon-${scope.row.code}`" />
54 {{ scope.row.countryName }} 54 {{ language==0?scope.row.countryName :scope.row.countryShortName }}
55 </div> 55 </div>
56 </template> 56 </template>
57 </el-table-column> 57 </el-table-column>
58 <el-table-column align="center" label="组合"> 58 <el-table-column align="center" :label="language==0?'组合':'Couple'" min-width="200">
59 <template #default="scope"> 59 <template #default="scope">
60 <div class="text-primary esp">{{ scope.row.zuHe }}</div> 60 <div class="text-primary esp">{{ scope.row.zuHe }}</div>
61 </template> 61 </template>
......
...@@ -64,32 +64,32 @@ export default defineConfig(({ mode, command }) => { ...@@ -64,32 +64,32 @@ export default defineConfig(({ mode, command }) => {
64 proxy: { 64 proxy: {
65 // https://cn.vitejs.dev/config/#server-proxy 65 // https://cn.vitejs.dev/config/#server-proxy
66 '/dev-api/ztx-train': { 66 '/dev-api/ztx-train': {
67 target: 'http://192.168.1.243:1896/stage-api', 67 target: 'http://192.168.1.242:1896/stage-api',
68 // target: 'https://jijin.wtwuxicenter.com/stage-api', 68 // target: 'https://jijin.wtwuxicenter.com/stage-api',
69 changeOrigin: true, 69 changeOrigin: true,
70 rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '') 70 rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '')
71 }, 71 },
72 '/dev-api/ztx-match': { 72 '/dev-api/ztx-match': {
73 target: 'http://192.168.1.243:8081', 73 target: 'http://192.168.1.242:8081',
74 // target: 'https://wdsfwuxicenter.com/stage-api/', 74 // target: 'https://wdsfwuxicenter.com/stage-api/',
75 changeOrigin: true, 75 changeOrigin: true,
76 rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '') 76 rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '')
77 }, 77 },
78 '/dev-api/ztx-webSite': { 78 '/dev-api/ztx-webSite': {
79 target: 'http://192.168.1.243:8081', 79 target: 'http://192.168.1.242:8081',
80 changeOrigin: true, 80 changeOrigin: true,
81 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') 81 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
82 }, 82 },
83 '/dev-api': { 83 '/dev-api': {
84 target: 'http://192.168.1.118:8081/', 84 target: 'http://192.168.1.118:8081/',
85 // target: 'http://192.168.1.243:8081', 85 // target: 'http://192.168.1.242:8081',
86 // target: 'https://jijin.wtwuxicenter.com/stage-api', 86 // target: 'https://jijin.wtwuxicenter.com/stage-api',
87 // target: 'https://wdsfwuxicenter.com/stage-api/', 87 // target: 'https://wdsfwuxicenter.com/stage-api/',
88 changeOrigin: true, 88 changeOrigin: true,
89 rewrite: (p) => p.replace(/^\/dev-api/, '') 89 rewrite: (p) => p.replace(/^\/dev-api/, '')
90 }, 90 },
91 '/ticket': { 91 '/ticket': {
92 target: 'http://192.168.1.243:8081/', 92 target: 'http://192.168.1.242:8081/',
93 // target: 'https://jijin.wtwuxicenter.com/h5/', 93 // target: 'https://jijin.wtwuxicenter.com/h5/',
94 // target: 'https://ticketh5.wdsfwuxicenter.com/h5/', 94 // target: 'https://ticketh5.wdsfwuxicenter.com/h5/',
95 changeOrigin: true, 95 changeOrigin: true,
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!