Merge branch 'dev' of https://code.itechtop.cn/yangyang/dance-pc into dev
Showing
18 changed files
with
496 additions
and
247 deletions
| ... | @@ -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 | <el-radio-group v-model="personId"> | ||
| 5 | <div v-for="(it, index) in personList" :key="index" class="e_item"> | ||
| 6 | <el-radio border :value="it.id" :disabled="hasPersonIds?.indexOf(it.id)!=-1"> | ||
| 4 | 7 | ||
| 5 | <el-form> | 8 | <div class="name">{{ it.name }}</div> |
| 6 | <el-form-item prop="message"> | 9 | <div class="code"> |
| 7 | <div class="p_box"> | 10 | <span v-if="it.idcType==0">{{ language == 0 ? '身份证' : 'ID number' }}</span> |
| 8 | <div class="people"> | 11 | <span v-if="it.idcType==1">{{ language == 0 ? '护照' : 'Passport' }}</span> |
| 9 | <el-radio-group v-model="personId"> | 12 | <span v-if="it.idcType==2">{{ language == 0 ? '其他' : 'Other' }}</span> |
| 10 | <div | 13 | |
| 11 | v-for="(it, index) in personList" :key="index" class="e_item" | 14 | {{ it.idCard }} |
| 12 | > | ||
| 13 | <el-radio border :value="it.id" :disabled="hasPersonIds?.indexOf(it.id)!=-1"> | ||
| 14 | <div> | ||
| 15 | {{ it.name }} {{ it.idCard }} | ||
| 16 | </div> | ||
| 17 | </el-radio> | ||
| 18 | </div> | ||
| 19 | </el-radio-group> | ||
| 20 | </div> | 15 | </div> |
| 21 | </div> | 16 | |
| 22 | </el-form-item> | 17 | </el-radio> |
| 23 | </el-form> | 18 | </div> |
| 19 | </el-radio-group> | ||
| 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> |
| ... | @@ -32,21 +28,21 @@ | ... | @@ -32,21 +28,21 @@ |
| 32 | 28 | ||
| 33 | <el-dialog v-model="showAdd" title="新增出行人" center append-to-body> | 29 | <el-dialog v-model="showAdd" title="新增出行人" center append-to-body> |
| 34 | <el-form | 30 | <el-form |
| 35 | ref="formRef" :model="form" label-width="100px" size="large" | 31 | ref="formRef" :model="form" label-width="100px" size="large" |
| 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> | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -14,63 +14,80 @@ | ... | @@ -14,63 +14,80 @@ |
| 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 |
| 50 | :label="language == 0 ? '联系人' : 'contact person'" prop="contacts" | 69 | :label="language == 0 ? '联系人' : 'contact person'" prop="contacts" |
| 51 | > | 70 | > |
| 52 | <el-input | 71 | <el-input |
| 53 | v-model="orderForm.contacts" | 72 | v-model="orderForm.contacts" |
| 54 | :placeholder=" language == 0 ? '请输入联系人' : 'Please enter the contact person'" | 73 | :placeholder=" language == 0 ? '请输入联系人' : 'Please enter the contact person'" |
| 55 | style="width: 320px" | 74 | style="width: 320px" |
| 56 | /> | 75 | /> |
| 57 | </el-form-item> | 76 | </el-form-item> |
| 58 | <el-form-item | 77 | <el-form-item |
| 59 | :label="language == 0 ? '联系电话' : 'contact phone'" prop="phone" | 78 | :label="language == 0 ? '联系电话' : 'contact phone'" prop="phone" |
| 60 | > | 79 | > |
| 61 | <el-input | 80 | <el-input |
| 62 | v-model="orderForm.phone" | 81 | v-model="orderForm.phone" |
| 63 | :placeholder=" language == 0 ? '请输入联系电话' : 'Please enter the contact phone number'" | 82 | :placeholder=" language == 0 ? '请输入联系电话' : 'Please enter the contact phone number'" |
| 64 | style="width: 320px" | 83 | style="width: 320px" |
| 65 | /> | 84 | /> |
| 66 | </el-form-item> | 85 | </el-form-item> |
| 67 | <el-form-item :label="language == 0 ? '观看人' : 'Viewer'" prop="customerIds"> | 86 | <el-form-item :label="language == 0 ? '观看人' : 'Viewer'" prop="customerIds"> |
| 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,20 +28,17 @@ | ... | @@ -28,20 +28,17 @@ |
| 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">{{ |
| 37 | language == 0 ? '已退订' : 'Refunded' | 36 | language == 0 ? '已退订' : 'Refunded' |
| 38 | }}</span> | 37 | }}</span> |
| 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> |
| ... | @@ -119,44 +118,44 @@ | ... | @@ -119,44 +118,44 @@ |
| 119 | <el-col :lg="6" :md="16" :sm="16" :xs="16"> | 118 | <el-col :lg="6" :md="16" :sm="16" :xs="16"> |
| 120 | <div class="text-right mb20 text-danger"> | 119 | <div class="text-right mb20 text-danger"> |
| 121 | <el-countdown | 120 | <el-countdown |
| 122 | v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')" | 121 | v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')" |
| 123 | :value="b.countdown" | 122 | :value="b.countdown" |
| 124 | format="mm:ss" | 123 | format="mm:ss" |
| 125 | value-style="color:#E60012;font-size:16px;" | 124 | value-style="color:#E60012;font-size:16px;" |
| 126 | @finish="finish(b)" | 125 | @finish="finish(b)" |
| 127 | /> | 126 | /> |
| 128 | </div> | 127 | </div> |
| 129 | 128 | ||
| 130 | <div class="text-right"> | 129 | <div class="text-right"> |
| 131 | <el-button | 130 | <el-button |
| 132 | v-if="(b.orderType == 0||b.orderType == 5)&&b.viewStatus!=0" class="mb10" plain round | 131 | v-if="(b.orderType == 0||b.orderType == 5)&&b.viewStatus!=0" class="mb10" plain round |
| 133 | size="small" type="success" | 132 | size="small" type="success" |
| 134 | @click="Rebook(b)" | 133 | @click="Rebook(b)" |
| 135 | > | 134 | > |
| 136 | {{ language == 0 ? '再次预订' : 'Rebook' }} | 135 | {{ language == 0 ? '再次预订' : 'Rebook' }} |
| 137 | </el-button> | 136 | </el-button> |
| 138 | <el-button | 137 | <el-button |
| 139 | class="mb10" plain round size="small" type="primary" | 138 | class="mb10" plain round size="small" type="primary" |
| 140 | @click="goDetail(b)" | 139 | @click="goDetail(b)" |
| 141 | > | 140 | > |
| 142 | {{ language == 0 ? '详情' : 'Detail' }} | 141 | {{ language == 0 ? '详情' : 'Detail' }} |
| 143 | </el-button> | 142 | </el-button> |
| 144 | <el-button | 143 | <el-button |
| 145 | v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')" class="mb10" | 144 | v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')" class="mb10" |
| 146 | plain round size="small" type="primary" @click="goDetail(b)" | 145 | plain round size="small" type="primary" @click="goDetail(b)" |
| 147 | > | 146 | > |
| 148 | {{ language == 0 ? '支付' : 'Pay' }} | 147 | {{ language == 0 ? '支付' : 'Pay' }} |
| 149 | </el-button> | 148 | </el-button> |
| 150 | <el-button | 149 | <el-button |
| 151 | v-if="b.viewStatus==0" class="mb10" plain round size="small" | 150 | v-if="b.viewStatus==0" class="mb10" plain round size="small" |
| 152 | type="warning" | 151 | type="warning" |
| 153 | @click="cancel(b)" | 152 | @click="cancel(b)" |
| 154 | > | 153 | > |
| 155 | {{ language == 0 ? '取消订单' : 'Cancel Order' }} | 154 | {{ language == 0 ? '取消订单' : 'Cancel Order' }} |
| 156 | </el-button> | 155 | </el-button> |
| 157 | <el-button | 156 | <el-button |
| 158 | v-if="b.viewStatus==5" class="mb10" plain round size="small" | 157 | v-if="b.viewStatus==5" class="mb10" plain round size="small" |
| 159 | type="" @click="unsubscribe(b)" | 158 | type="" @click="unsubscribe(b)" |
| 160 | > | 159 | > |
| 161 | {{ language == 0 ? '退订' : 'Unsubscribe' }} | 160 | {{ language == 0 ? '退订' : 'Unsubscribe' }} |
| 162 | </el-button> | 161 | </el-button> |
| ... | @@ -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 |
| 56 | v-model="query2" clearable | 57 | :placeholder="language==0?'请输入代表队名称至少两字符':'Enter the representing team name,At least two characters'" |
| 57 | @enter="searchTeam" @blur="searchTeam" @empty="searchTeam"/> | 58 | v-model="query2" clearable |
| 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> | ... | ... |
| ... | @@ -391,8 +391,14 @@ | ... | @@ -391,8 +391,14 @@ |
| 391 | </el-col> | 391 | </el-col> |
| 392 | </el-row> | 392 | </el-row> |
| 393 | </div> | 393 | </div> |
| 394 | 394 | ||
| 395 | 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> | ||
| 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,16 +588,19 @@ function goTeamSign() { | ... | @@ -588,16 +588,19 @@ function goTeamSign() { |
| 588 | ) | 588 | ) |
| 589 | return | 589 | return |
| 590 | } | 590 | } |
| 591 | router.push({ | 591 | |
| 592 | path: `${route.params.id}/teamSignCn`, | 592 | handelPreCheckForGroup( |
| 593 | query: { | 593 | router.push({ |
| 594 | matchId: matchId.value, | 594 | path: `${route.params.id}/teamSignCn`, |
| 595 | groupId: groupId.value, | 595 | query: { |
| 596 | signType: matchData.value.signType, | 596 | matchId: matchId.value, |
| 597 | languageSource: matchData.value.languageSource, | 597 | groupId: groupId.value, |
| 598 | isNational: false | 598 | signType: matchData.value.signType, |
| 599 | } | 599 | languageSource: matchData.value.languageSource, |
| 600 | }) | 600 | isNational: false |
| 601 | } | ||
| 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,16 +615,18 @@ function goTeamSign() { | ... | @@ -612,16 +615,18 @@ function goTeamSign() { |
| 612 | ) | 615 | ) |
| 613 | return | 616 | return |
| 614 | } | 617 | } |
| 615 | router.push({ | 618 | handelPreCheckForGroup( |
| 616 | path: `${route.params.id}/teamSign`, | 619 | router.push({ |
| 617 | query: { | 620 | path: `${route.params.id}/teamSign`, |
| 618 | matchId: matchId.value, | 621 | query: { |
| 619 | groupId: groupId.value, | 622 | matchId: matchId.value, |
| 620 | signType: matchData.value.signType, | 623 | groupId: groupId.value, |
| 621 | isNational: true, | 624 | signType: matchData.value.signType, |
| 622 | languageSource: matchData.value.languageSource | 625 | isNational: true, |
| 623 | } | 626 | languageSource: matchData.value.languageSource |
| 624 | }) | 627 | } |
| 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, | ... | ... |
-
Please register or sign in to post a comment