Merge branch 'dev' of https://code.itechtop.cn/yangyang/dance-pc into dev
Showing
15 changed files
with
150 additions
and
75 deletions
This diff is collapsed.
Click to expand it.
| ... | @@ -48,9 +48,11 @@ | ... | @@ -48,9 +48,11 @@ |
| 48 | <span v-if="language == 0">剩余房间数:{{ canOrderNum }}</span> | 48 | <span v-if="language == 0">剩余房间数:{{ canOrderNum }}</span> |
| 49 | <span v-else>{{ canOrderNum }} Remaining rooms</span> | 49 | <span v-else>{{ canOrderNum }} Remaining rooms</span> |
| 50 | </div> | 50 | </div> |
| 51 | <div class="tip" v-if="language==1">If you need to make a hotel reservation, please fill in the full names of all required persons when booking the hotel. (For two or more people, please use ',')</div> | ||
| 52 | |||
| 51 | </el-form-item> | 53 | </el-form-item> |
| 52 | <el-form-item v-for="(n,index) in form.roomNum" :key="index" :label="language==1?`Name${index+1}`:`入住人${index+1}`" required> | 54 | <el-form-item v-for="(n,index) in form.roomNum" :key="index" :label="language==1?`Room${index+1}`:`入住人${index+1}`" required> |
| 53 | <el-input v-model="rzUserArr[index]" :placeholder="language==0?'每间填一位住客姓名':'Each room fill in one name of the guest'"/> | 55 | <el-input v-model="rzUserArr[index]" :placeholder="language==0?'请完整填写该房间所有的入住人姓名,以“,”符号分隔':'please fill in the name of the actual check-in person'"/> |
| 54 | </el-form-item> | 56 | </el-form-item> |
| 55 | <el-form-item :label="language==0?'预计到店':'Expected check-in'" required> | 57 | <el-form-item :label="language==0?'预计到店':'Expected check-in'" required> |
| 56 | <el-select v-model="form.ddDate" | 58 | <el-select v-model="form.ddDate" |
| ... | @@ -482,11 +484,7 @@ function submit() { | ... | @@ -482,11 +484,7 @@ function submit() { |
| 482 | } | 484 | } |
| 483 | }) | 485 | }) |
| 484 | } | 486 | } |
| 485 | } else { | ||
| 486 | ElMessage.warning(language.value == 0 ? '无可预订的房间' : 'No rooms available to book') | ||
| 487 | } | 487 | } |
| 488 | }).catch(err => { | ||
| 489 | ElMessage.warning(language.value == 0 ? '无可预订的房间' : 'No rooms available to book') | ||
| 490 | }) | 488 | }) |
| 491 | }) | 489 | }) |
| 492 | } | 490 | } | ... | ... |
| ... | @@ -242,6 +242,11 @@ | ... | @@ -242,6 +242,11 @@ |
| 242 | <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span> | 242 | <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span> |
| 243 | </div> | 243 | </div> |
| 244 | </el-col> | 244 | </el-col> |
| 245 | <el-col :lg="24"> | ||
| 246 | <el-link v-if="form.viewStatus=='1'||form.viewStatus=='5'" type="primary" @click="exportPdf"><el-icon><Upload /></el-icon> | ||
| 247 | {{ language==0?'导出酒店预订单':'Export PDF' }} | ||
| 248 | </el-link> | ||
| 249 | </el-col> | ||
| 245 | </el-row> | 250 | </el-row> |
| 246 | </div> | 251 | </div> |
| 247 | </div> | 252 | </div> |
| ... | @@ -633,6 +638,21 @@ const unsubscribe = () => { | ... | @@ -633,6 +638,21 @@ const unsubscribe = () => { |
| 633 | }) | 638 | }) |
| 634 | } | 639 | } |
| 635 | 640 | ||
| 641 | function exportPdf() { | ||
| 642 | var obj = { | ||
| 643 | orderId: orderId.value | ||
| 644 | } | ||
| 645 | if(language.value==0){ | ||
| 646 | proxy.download('/ota/orderRoom/downRoomConfirmation', { | ||
| 647 | ...obj | ||
| 648 | }, `订房确认书.pdf`) | ||
| 649 | } else { | ||
| 650 | proxy.download('/ota/orderRoom/downRoomConfirmation', { | ||
| 651 | ...obj | ||
| 652 | }, `Hotel Reservation.pdf`) | ||
| 653 | } | ||
| 654 | |||
| 655 | } | ||
| 636 | 656 | ||
| 637 | </script> | 657 | </script> |
| 638 | 658 | ... | ... |
| ... | @@ -26,11 +26,13 @@ | ... | @@ -26,11 +26,13 @@ |
| 26 | <el-col :sm="12" :lg="8"> | 26 | <el-col :sm="12" :lg="8"> |
| 27 | <div class="item_en" @click="popRemark(1)"><img src="@/assets/dance/btn01.png"> | 27 | <div class="item_en" @click="popRemark(1)"><img src="@/assets/dance/btn01.png"> |
| 28 | <p>HOTEL RESERVATION</p> | 28 | <p>HOTEL RESERVATION</p> |
| 29 | </div></el-col> | 29 | </div> |
| 30 | </el-col> | ||
| 30 | <el-col :sm="12" :lg="8"> | 31 | <el-col :sm="12" :lg="8"> |
| 31 | <div class="item_en" @click="popRemark(2)"><img src="@/assets/dance/btn02.png"> | 32 | <div class="item_en" @click="popRemark(2)"><img src="@/assets/dance/btn02.png"> |
| 32 | <p>TRANSPORTATION RESERVATION</p> | 33 | <p>TRANSPORTATION RESERVATION</p> |
| 33 | </div></el-col> | 34 | </div> |
| 35 | </el-col> | ||
| 34 | <el-col :sm="12" :lg="8"> | 36 | <el-col :sm="12" :lg="8"> |
| 35 | <div class="item_en" @click="popRemark(3)"><img src="@/assets/dance/btn03.png"> | 37 | <div class="item_en" @click="popRemark(3)"><img src="@/assets/dance/btn03.png"> |
| 36 | <p>DINING RESERVATION</p> | 38 | <p>DINING RESERVATION</p> |
| ... | @@ -45,11 +47,13 @@ | ... | @@ -45,11 +47,13 @@ |
| 45 | <el-col :sm="12" :lg="8"> | 47 | <el-col :sm="12" :lg="8"> |
| 46 | <div class="item_en" @click="popRemark(4)"><img src="@/assets/dance/btn05.png"> | 48 | <div class="item_en" @click="popRemark(4)"><img src="@/assets/dance/btn05.png"> |
| 47 | <p>MAKEUP APPOINTMENT</p> | 49 | <p>MAKEUP APPOINTMENT</p> |
| 48 | </div></el-col> | 50 | </div> |
| 51 | </el-col> | ||
| 49 | <el-col :sm="12" :lg="8"> | 52 | <el-col :sm="12" :lg="8"> |
| 50 | <div class="item_en" @click="popRemark(5)"><img src="@/assets/dance/btn06.png"> | 53 | <div class="item_en" @click="popRemark(5)"><img src="@/assets/dance/btn06.png"> |
| 51 | <p>PHOTOGRAPHY APPOINTMENT</p> | 54 | <p>PHOTOGRAPHY APPOINTMENT</p> |
| 52 | </div></el-col> | 55 | </div> |
| 56 | </el-col> | ||
| 53 | </el-row> | 57 | </el-row> |
| 54 | </div> | 58 | </div> |
| 55 | <order-remark ref="orderRemarkRef" @submit="goBooking"/> | 59 | <order-remark ref="orderRemarkRef" @submit="goBooking"/> |
| ... | @@ -61,12 +65,14 @@ import {useRouter} from "vue-router"; | ... | @@ -61,12 +65,14 @@ import {useRouter} from "vue-router"; |
| 61 | 65 | ||
| 62 | const router = useRouter() | 66 | const router = useRouter() |
| 63 | import OrderRemark from '@/viewsPc/components/orderRemark' | 67 | import OrderRemark from '@/viewsPc/components/orderRemark' |
| 68 | |||
| 64 | const {proxy} = getCurrentInstance() | 69 | const {proxy} = getCurrentInstance() |
| 65 | import {useStorage} from "@vueuse/core/index"; | 70 | import {useStorage} from "@vueuse/core/index"; |
| 66 | import {ElMessage} from "element-plus"; | 71 | import {ElMessage} from "element-plus"; |
| 67 | import {getCurrentInstance} from "@vue/runtime-core"; | 72 | import {getCurrentInstance} from "@vue/runtime-core"; |
| 68 | import {computed, onMounted, watch} from "vue"; | 73 | import {computed, onMounted, watch} from "vue"; |
| 69 | import {getBaseInfoByActiveId} from "@/apiPc/booking"; | 74 | import {getBaseInfoByActiveId} from "@/apiPc/booking"; |
| 75 | |||
| 70 | const props = defineProps({ | 76 | const props = defineProps({ |
| 71 | matchId: { | 77 | matchId: { |
| 72 | type: String, | 78 | type: String, |
| ... | @@ -74,45 +80,52 @@ const props = defineProps({ | ... | @@ -74,45 +80,52 @@ const props = defineProps({ |
| 74 | default: '0' | 80 | default: '0' |
| 75 | } | 81 | } |
| 76 | }) | 82 | }) |
| 77 | const language= useStorage('language',0) | 83 | const language = useStorage('language', 0) |
| 78 | const form = ref({}) | 84 | const form = ref({}) |
| 79 | const matchId = computed(()=>props.matchId); | 85 | const matchId = computed(() => props.matchId); |
| 80 | 86 | ||
| 81 | watch(matchId,(val)=>{ | 87 | watch(matchId, (val) => { |
| 82 | if(val && val!='0'){ | 88 | if (val && val != '0') { |
| 83 | getBaseInfoByActiveId(props.matchId).then(res=>{ | 89 | getBaseInfoByActiveId(props.matchId).then(res => { |
| 84 | form.value = res.data || null | 90 | form.value = res.data || null |
| 85 | }).catch(err=>{ | 91 | }).catch(err => { |
| 86 | console.log(err) | 92 | console.log(err) |
| 87 | form.value = null | 93 | form.value = null |
| 88 | }) | 94 | }) |
| 89 | } | 95 | } |
| 90 | }) | 96 | }) |
| 91 | 97 | ||
| 92 | onMounted(()=>{ | 98 | onMounted(() => { |
| 93 | 99 | ||
| 94 | }) | 100 | }) |
| 101 | |||
| 95 | function building() { | 102 | function building() { |
| 96 | ElMessage.warning(language.value==0?'感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。':'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') | 103 | ElMessage.warning(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') |
| 97 | return | 104 | return |
| 98 | } | 105 | } |
| 99 | function popRemark(type){ | 106 | |
| 100 | // debugger | 107 | function popRemark(type) { |
| 101 | if(!form.value){ | 108 | if (!form.value) { |
| 102 | building() | 109 | building() |
| 103 | return | 110 | return |
| 104 | } | 111 | } |
| 105 | if((form.value.isJdView == 0&&type=='1') || (form.value.isCarView == 0&&type=='2') || (form.value.isFoodView == 0&&type=='3') || (form.value.isMealView == 0&&type=='4') || (type=='5'&&form.value.isPhotoView == 0)){ | 112 | if ((form.value.isJdView == 0 && type == '1') |
| 113 | || (form.value.isCarView == 0 && type == '2') | ||
| 114 | || (form.value.isFoodView == 0 && type == '3') | ||
| 115 | || (form.value.isMealView == 0 && type == '4') | ||
| 116 | || (form.value.isPhotoView == 0 && type == '5') | ||
| 117 | ) { | ||
| 106 | building() | 118 | building() |
| 107 | return | 119 | return |
| 108 | } | 120 | } |
| 109 | const params = { | 121 | const params = { |
| 110 | matchId: props.matchId, | 122 | matchId: props.matchId, |
| 111 | title: language.value == 0 ?'预订说明':'Booking Instructions', | 123 | title: language.value == 0 ? '预订说明' : 'Booking Instructions', |
| 112 | type: type | 124 | type: type |
| 113 | } | 125 | } |
| 114 | proxy.$refs['orderRemarkRef'].open(params) | 126 | proxy.$refs['orderRemarkRef'].open(params) |
| 115 | } | 127 | } |
| 128 | |||
| 116 | function goBooking(n) { | 129 | function goBooking(n) { |
| 117 | switch (n) { | 130 | switch (n) { |
| 118 | case 0: | 131 | case 0: |
| ... | @@ -151,10 +164,19 @@ function goBooking(n) { | ... | @@ -151,10 +164,19 @@ function goBooking(n) { |
| 151 | .itemBox { | 164 | .itemBox { |
| 152 | padding: 20px 40px; | 165 | padding: 20px 40px; |
| 153 | } | 166 | } |
| 154 | .itemBox_en{ | 167 | |
| 168 | .itemBox_en { | ||
| 155 | padding: 20px 40px; | 169 | padding: 20px 40px; |
| 156 | p{margin: 0;height: 40px;line-height: 20px;display: flex;align-items: center;} | 170 | |
| 171 | p { | ||
| 172 | margin: 0; | ||
| 173 | height: 40px; | ||
| 174 | line-height: 20px; | ||
| 175 | display: flex; | ||
| 176 | align-items: center; | ||
| 177 | } | ||
| 157 | } | 178 | } |
| 179 | |||
| 158 | .item { | 180 | .item { |
| 159 | box-shadow: 0px 0px 21px 0px rgba(41, 23, 101, 0.14); | 181 | box-shadow: 0px 0px 21px 0px rgba(41, 23, 101, 0.14); |
| 160 | margin: 10px 0; | 182 | margin: 10px 0; |
| ... | @@ -169,17 +191,39 @@ function goBooking(n) { | ... | @@ -169,17 +191,39 @@ function goBooking(n) { |
| 169 | margin: 0 5%; | 191 | margin: 0 5%; |
| 170 | } | 192 | } |
| 171 | } | 193 | } |
| 172 | .item_en{box-shadow: 0px 0px 21px 0px rgba(41,23,101,0.14);margin: 40px 0 0;cursor: pointer; | 194 | |
| 173 | display: flex;align-items: center;text-align: center;color: #333; | 195 | .item_en { |
| 174 | font-size: 18px; flex-direction: column;padding: 35px 10px 20px; | 196 | box-shadow: 0px 0px 21px 0px rgba(41, 23, 101, 0.14); |
| 175 | background:url("@/assets/dance/znbb.png") no-repeat left #FFFFFF; | 197 | margin: 40px 0 0; |
| 198 | cursor: pointer; | ||
| 199 | display: flex; | ||
| 200 | align-items: center; | ||
| 201 | text-align: center; | ||
| 202 | color: #333; | ||
| 203 | font-size: 18px; | ||
| 204 | flex-direction: column; | ||
| 205 | padding: 35px 10px 20px; | ||
| 206 | background: url("@/assets/dance/znbb.png") no-repeat left #FFFFFF; | ||
| 176 | background-size: cover; | 207 | background-size: cover; |
| 177 | position: relative; | 208 | position: relative; |
| 178 | border-radius: 15px; | 209 | border-radius: 15px; |
| 179 | img{position: absolute;top: -30px;transition: all 0.2s;} | 210 | |
| 180 | &:hover{box-shadow: 0 0 10px #333; | 211 | img { |
| 181 | img{transform: rotateY(180deg);} | 212 | position: absolute; |
| 182 | p{color: #000;} | 213 | top: -30px; |
| 214 | transition: all 0.2s; | ||
| 215 | } | ||
| 216 | |||
| 217 | &:hover { | ||
| 218 | box-shadow: 0 0 10px #333; | ||
| 219 | |||
| 220 | img { | ||
| 221 | transform: rotateY(180deg); | ||
| 222 | } | ||
| 223 | |||
| 224 | p { | ||
| 225 | color: #000; | ||
| 226 | } | ||
| 183 | } | 227 | } |
| 184 | } | 228 | } |
| 185 | </style> | 229 | </style> | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -94,7 +94,7 @@ | ... | @@ -94,7 +94,7 @@ |
| 94 | </el-icon> | 94 | </el-icon> |
| 95 | </a> | 95 | </a> |
| 96 | <!-- <el-button type="primary" @click="popMaster">青少年公益课</el-button>--> | 96 | <!-- <el-button type="primary" @click="popMaster">青少年公益课</el-button>--> |
| 97 | <a class="zn-btn ml20 btn-q" @click="popMaster">青少年公益课</a> | 97 | <a class="zn-btn ml20 btn-q" @click="popMaster">青少年公益课报名</a> |
| 98 | </div> | 98 | </div> |
| 99 | </el-col> | 99 | </el-col> |
| 100 | <el-col :sm="24" :lg="14"> | 100 | <el-col :sm="24" :lg="14"> | ... | ... |
| ... | @@ -85,12 +85,10 @@ | ... | @@ -85,12 +85,10 @@ |
| 85 | <el-col :sm="24" :lg="10"> | 85 | <el-col :sm="24" :lg="10"> |
| 86 | <div class="bgbg"> | 86 | <div class="bgbg"> |
| 87 | <h1 style="color: #fff">{{matchData?.name}}</h1> | 87 | <h1 style="color: #fff">{{matchData?.name}}</h1> |
| 88 | <div> | 88 | <div style="margin-bottom: 30px"> |
| 89 | <a class="zn-btn" @click="goGuide"> | 89 | <a class="zn-btn" style="font-size: 15px" @click="goGuide">GUIDELINE<el-icon><download /></el-icon> |
| 90 | GUIDELINE | ||
| 91 | <el-icon><download /></el-icon> | ||
| 92 | </a> | 90 | </a> |
| 93 | <a class="zn-btn ml20 btn-q " @click="popMaster">Junior &Youth Camp <el-icon><Edit /></el-icon> | 91 | <a class="zn-btn ml20 btn-q" style="font-size: 15px" @click="popMaster">Junior &Youth Camp REGISTER<el-icon><Edit /></el-icon> |
| 94 | </a> | 92 | </a> |
| 95 | </div> | 93 | </div> |
| 96 | 94 | ... | ... |
| ... | @@ -7,7 +7,7 @@ | ... | @@ -7,7 +7,7 @@ |
| 7 | <team-sign-step v-if="user.utype=='2'" :activeStep="1" :language="language"/> | 7 | <team-sign-step v-if="user.utype=='2'" :activeStep="1" :language="language"/> |
| 8 | </el-card> | 8 | </el-card> |
| 9 | 9 | ||
| 10 | <el-card class="mt20"> | 10 | <el-card class="mt20" v-if="isNational"> |
| 11 | <h3 class="text-center text-danger" v-if="language==0">是否添加随行人员,如果没有,请点击下一步,跳过此步骤</h3> | 11 | <h3 class="text-center text-danger" v-if="language==0">是否添加随行人员,如果没有,请点击下一步,跳过此步骤</h3> |
| 12 | <h3 class="text-center text-danger" v-else> | 12 | <h3 class="text-center text-danger" v-else> |
| 13 | Do you need to add accompanying persons? If not, please proceed to the next step. | 13 | Do you need to add accompanying persons? If not, please proceed to the next step. |
| ... | @@ -49,8 +49,8 @@ | ... | @@ -49,8 +49,8 @@ |
| 49 | <div class="card-header"> | 49 | <div class="card-header"> |
| 50 | <img src="@/assets/sign/tag02.png"/> | 50 | <img src="@/assets/sign/tag02.png"/> |
| 51 | {{ language==0?'领队':'HEAD OF TEAM' }} | 51 | {{ language==0?'领队':'HEAD OF TEAM' }} |
| 52 | <!-- <span class="tip" v-if="language==0">(教练/领队,至少选择一项)</span>--> | 52 | <span class="tip" v-if="language==0&&!isNational">(必选一位领队)</span> |
| 53 | <!-- <span class="tip" v-else>(Coach/Team Leader, select at least one)</span>--> | 53 | <span class="tip" v-if="language==1&&!isNational">(Team Leader select at least one)</span> |
| 54 | </div> | 54 | </div> |
| 55 | </template> | 55 | </template> |
| 56 | <div class="chooseForm"> | 56 | <div class="chooseForm"> |
| ... | @@ -313,10 +313,10 @@ function geren() { | ... | @@ -313,10 +313,10 @@ function geren() { |
| 313 | } | 313 | } |
| 314 | 314 | ||
| 315 | function goNext() { | 315 | function goNext() { |
| 316 | // if ((form.value.coachs.length < 1) && (form.value.leader.length < 1)) { | 316 | if (!isNational.value && (form.value.leader.length == 0)) { |
| 317 | // ElMessage.warning(language.value==0?'至少选一个教练或领队':'Coach/Team Leader, select at least one') | 317 | ElMessage.warning(language.value==0?'必选一位领队':'Team Leaders select at least one') |
| 318 | // return | 318 | return |
| 319 | // } | 319 | } |
| 320 | // (personAllList.value.coaches.length>=0 && form.value.coachs?.toString().length == 0)&& | 320 | // (personAllList.value.coaches.length>=0 && form.value.coachs?.toString().length == 0)&& |
| 321 | // (personAllList.value.teamDoctors.length>=0 && form.value.doctor?.toString().length == 0)&& | 321 | // (personAllList.value.teamDoctors.length>=0 && form.value.doctor?.toString().length == 0)&& |
| 322 | // (personAllList.value.translators.length>=0 && form.value.translator?.toString().length == 0)&& | 322 | // (personAllList.value.translators.length>=0 && form.value.translator?.toString().length == 0)&& | ... | ... |
| ... | @@ -620,7 +620,14 @@ function checkTwo(a,b) { | ... | @@ -620,7 +620,14 @@ function checkTwo(a,b) { |
| 620 | if(isNational.value){ | 620 | if(isNational.value){ |
| 621 | ElMessage.warning(language.value == 0 ? '他们不是固定组合':'They\'re not a couple') | 621 | ElMessage.warning(language.value == 0 ? '他们不是固定组合':'They\'re not a couple') |
| 622 | } else { | 622 | } else { |
| 623 | ElMessage.warning(language.value == 0 ? `${a.realName}/${b.realName} 已经和其他人组成舞伴,无法报名,请重新选择`:`${a.realName}/${b.realName} has already formed a dancer with another person, cannot sign up: please select again`) | 623 | ElMessageBox.confirm(language.value == 0 ? `${a.realName}/${b.realName} 已经和其他人组成舞伴,无法报名,请重新选择`:`${a.realName}/${b.realName} has already formed a dancer with another person, cannot sign up: please select again`, |
| 624 | language.value == 0 ? '提示' : 'Tips', { | ||
| 625 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', | ||
| 626 | showCancelButton: false, | ||
| 627 | type: 'warning' | ||
| 628 | }).then(() => { | ||
| 629 | console.log('Confirm') | ||
| 630 | }) | ||
| 624 | } | 631 | } |
| 625 | } | 632 | } |
| 626 | }) | 633 | }) | ... | ... |
| ... | @@ -8,7 +8,7 @@ | ... | @@ -8,7 +8,7 @@ |
| 8 | <el-row :gutter="30" class="mt30"> | 8 | <el-row :gutter="30" class="mt30"> |
| 9 | <el-col :lg="12" class="touxiang"> | 9 | <el-col :lg="12" class="touxiang"> |
| 10 | 10 | ||
| 11 | <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" required> | 11 | <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" :required="form.labelArr.indexOf('0')>-1"> |
| 12 | <ImageUpload2 | 12 | <ImageUpload2 |
| 13 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" | 13 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" |
| 14 | :is-show-tip="false" | 14 | :is-show-tip="false" |
| ... | @@ -140,7 +140,7 @@ const data = reactive({ | ... | @@ -140,7 +140,7 @@ const data = reactive({ |
| 140 | // regionId: [{ required: true, message: '必填', trigger: 'change' }], | 140 | // regionId: [{ required: true, message: '必填', trigger: 'change' }], |
| 141 | birth: [{required: true, message: '必填', trigger: 'change'}], | 141 | birth: [{required: true, message: '必填', trigger: 'change'}], |
| 142 | // address: [{ required: true, message: '必填', trigger: 'blur' }], | 142 | // address: [{ required: true, message: '必填', trigger: 'blur' }], |
| 143 | picUrl: [{required: true, message: '必填', trigger: 'blur'}], | 143 | // picUrl: [{required: true, message: '必填', trigger: 'blur'}], |
| 144 | sex: [{required: true, message: '必填', trigger: 'change'}], | 144 | sex: [{required: true, message: '必填', trigger: 'change'}], |
| 145 | labelArr: [{required: true, message: '必填', trigger: 'change'}] | 145 | labelArr: [{required: true, message: '必填', trigger: 'change'}] |
| 146 | }, | 146 | }, |
| ... | @@ -153,7 +153,7 @@ const data = reactive({ | ... | @@ -153,7 +153,7 @@ const data = reactive({ |
| 153 | // regionId: [{ required: true, message: 'required', trigger: 'change' }], | 153 | // regionId: [{ required: true, message: 'required', trigger: 'change' }], |
| 154 | birth: [{required: true, message: 'required', trigger: 'change'}], | 154 | birth: [{required: true, message: 'required', trigger: 'change'}], |
| 155 | // address: [{ required: true, message: 'required', trigger: 'blur' }], | 155 | // address: [{ required: true, message: 'required', trigger: 'blur' }], |
| 156 | picUrl: [{required: true, message: 'required', trigger: 'blur'}], | 156 | // picUrl: [{required: true, message: 'required', trigger: 'blur'}], |
| 157 | sex: [{required: true, message: 'required', trigger: 'change'}], | 157 | sex: [{required: true, message: 'required', trigger: 'change'}], |
| 158 | labelArr: [{required: true, message: 'required', trigger: 'change'}] | 158 | labelArr: [{required: true, message: 'required', trigger: 'change'}] |
| 159 | }, | 159 | }, |
| ... | @@ -304,6 +304,10 @@ function giveBirthDay() { | ... | @@ -304,6 +304,10 @@ function giveBirthDay() { |
| 304 | function submitForm() { | 304 | function submitForm() { |
| 305 | proxy.$refs['dialogRef'].validate((valid) => { | 305 | proxy.$refs['dialogRef'].validate((valid) => { |
| 306 | if (valid) { | 306 | if (valid) { |
| 307 | if(!form.value.picUrl&&form.value.labelArr.indexOf('0')>-1){ | ||
| 308 | ElMessage.warning(language.value == 0 ? '请上传个人照片' :'Please upload your photo') | ||
| 309 | return | ||
| 310 | } | ||
| 307 | // 验证身份证号 | 311 | // 验证身份证号 |
| 308 | if (form.value.idcType == 0 && !(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(form.value.idcCode))) { | 312 | if (form.value.idcType == 0 && !(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(form.value.idcCode))) { |
| 309 | ElMessage.warning('请输入正确的身份证号码') | 313 | ElMessage.warning('请输入正确的身份证号码') | ... | ... |
| ... | @@ -88,10 +88,11 @@ import OrderRemark from '@/viewsPc/components/orderRemark' | ... | @@ -88,10 +88,11 @@ import OrderRemark from '@/viewsPc/components/orderRemark' |
| 88 | import {getBaseInfoByActiveId} from "@/apiPc/booking"; | 88 | import {getBaseInfoByActiveId} from "@/apiPc/booking"; |
| 89 | import {getCurrentInstance} from "@vue/runtime-core"; | 89 | import {getCurrentInstance} from "@vue/runtime-core"; |
| 90 | import {onMounted} from "vue"; | 90 | import {onMounted} from "vue"; |
| 91 | |||
| 91 | const {proxy} = getCurrentInstance() | 92 | const {proxy} = getCurrentInstance() |
| 92 | 93 | ||
| 93 | const router = useRouter() | 94 | const router = useRouter() |
| 94 | const language= useStorage('language',0) | 95 | const language = useStorage('language', 0) |
| 95 | const props = defineProps({ | 96 | const props = defineProps({ |
| 96 | matchId: { | 97 | matchId: { |
| 97 | type: String, | 98 | type: String, |
| ... | @@ -100,38 +101,45 @@ const props = defineProps({ | ... | @@ -100,38 +101,45 @@ const props = defineProps({ |
| 100 | } | 101 | } |
| 101 | }) | 102 | }) |
| 102 | const form = ref({}) | 103 | const form = ref({}) |
| 103 | onMounted(()=>{ | 104 | onMounted(() => { |
| 104 | getBaseInfoByActiveId(props.matchId).then(res=>{ | 105 | getBaseInfoByActiveId(props.matchId).then(res => { |
| 105 | form.value = res.data || null | 106 | form.value = res.data || null |
| 106 | }).catch(err=>{ | 107 | }).catch(err => { |
| 107 | form.value = null | 108 | form.value = null |
| 108 | console.log(err) | 109 | console.log(err) |
| 109 | }) | 110 | }) |
| 110 | }) | 111 | }) |
| 111 | 112 | ||
| 112 | function building() { | 113 | function building() { |
| 113 | ElMessage.warning(language.value==0?'感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。':'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') | 114 | ElMessage.warning(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') |
| 114 | return | 115 | return |
| 115 | } | 116 | } |
| 116 | function popRemark(type){ | 117 | |
| 117 | if(!form.value){ | 118 | function popRemark(type) { |
| 119 | if (!form.value) { | ||
| 118 | building() | 120 | building() |
| 119 | return | 121 | return |
| 120 | } | 122 | } |
| 121 | 123 | ||
| 122 | if((form.value.isJdView == 0&&type=='1') || (form.value.isCarView == 0&&type=='2') || (form.value.isFoodView == 0&&type=='3')|| (form.value.isMealView == 0&&type=='4') || (type=='5'&&form.value.isPhotoView == 0)|| type=='0' ){ | 124 | if ((form.value.isJdView == 0 && type == '1') |
| 125 | || (form.value.isCarView == 0 && type == '2') | ||
| 126 | || (form.value.isFoodView == 0 && type == '3') | ||
| 127 | || (form.value.isMealView == 0 && type == '4') | ||
| 128 | || (type == '5' && form.value.isPhotoView == 0) | ||
| 129 | || (type == '0')) { | ||
| 123 | building() | 130 | building() |
| 124 | return | 131 | return |
| 125 | } | 132 | } |
| 126 | 133 | ||
| 127 | const params = { | 134 | const params = { |
| 128 | matchId: props.matchId, | 135 | matchId: props.matchId, |
| 129 | title: language.value == 0 ?'预订说明':'Booking Instructions', | 136 | title: language.value == 0 ? '预订说明' : 'Booking Instructions', |
| 130 | type: type | 137 | type: type |
| 131 | } | 138 | } |
| 132 | proxy.$refs['orderRemarkRef'].open(params) | 139 | proxy.$refs['orderRemarkRef'].open(params) |
| 133 | 140 | ||
| 134 | } | 141 | } |
| 142 | |||
| 135 | function goBooking(n) { | 143 | function goBooking(n) { |
| 136 | switch (n) { | 144 | switch (n) { |
| 137 | case 0: | 145 | case 0: |
| ... | @@ -164,5 +172,7 @@ function goBooking(n) { | ... | @@ -164,5 +172,7 @@ function goBooking(n) { |
| 164 | </script> | 172 | </script> |
| 165 | 173 | ||
| 166 | <style scoped lang="scss"> | 174 | <style scoped lang="scss"> |
| 167 | h4{padding: 0 10px;} | 175 | h4 { |
| 176 | padding: 0 10px; | ||
| 177 | } | ||
| 168 | </style> | 178 | </style> | ... | ... |
| ... | @@ -25,12 +25,6 @@ const people = reactive({ | ... | @@ -25,12 +25,6 @@ const people = reactive({ |
| 25 | message: languageFormat(language.value, "请输入证件号", "ID Numbe"), | 25 | message: languageFormat(language.value, "请输入证件号", "ID Numbe"), |
| 26 | }); | 26 | }); |
| 27 | 27 | ||
| 28 | // 使用正则验证身份证号码格式 | ||
| 29 | const idCardRegex = | ||
| 30 | /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[\dXx]$/; | ||
| 31 | if (!idCardRegex.test(people.form.idCard) && language.value == 0) | ||
| 32 | return ElMessage({ type: "warning", message: "身份证号格式不正确" }); | ||
| 33 | |||
| 34 | addViewPeople(people.form).then((res) => { | 28 | addViewPeople(people.form).then((res) => { |
| 35 | ElMessage({ | 29 | ElMessage({ |
| 36 | type: "success", | 30 | type: "success", |
| ... | @@ -59,7 +53,7 @@ const people = reactive({ | ... | @@ -59,7 +53,7 @@ const people = reactive({ |
| 59 | :placeholder="language == 0 ? '请输入姓名' : 'Name'" | 53 | :placeholder="language == 0 ? '请输入姓名' : 'Name'" |
| 60 | /> | 54 | /> |
| 61 | </div> | 55 | </div> |
| 62 | <div> | 56 | <!-- <div> |
| 63 | <div class="label"> | 57 | <div class="label"> |
| 64 | {{ languageFormat(language, "证件类型", "Type of Document") }} | 58 | {{ languageFormat(language, "证件类型", "Type of Document") }} |
| 65 | </div> | 59 | </div> |
| ... | @@ -69,17 +63,17 @@ const people = reactive({ | ... | @@ -69,17 +63,17 @@ const people = reactive({ |
| 69 | placeholder="Please input" | 63 | placeholder="Please input" |
| 70 | readonly | 64 | readonly |
| 71 | /> | 65 | /> |
| 72 | </div> | 66 | </div> --> |
| 73 | </div> | 67 | </div> |
| 74 | <div class="form-item"> | 68 | <div class="form-item"> |
| 75 | <div> | 69 | <div> |
| 76 | <div class="label"> | 70 | <div class="label"> |
| 77 | {{ languageFormat(language, "身份证号", "Identity Card") }} | 71 | {{ languageFormat(language, "有效证件号", "Identity Card") }} |
| 78 | </div> | 72 | </div> |
| 79 | <el-input | 73 | <el-input |
| 80 | v-model="people.form.idCard" | 74 | v-model="people.form.idCard" |
| 81 | style="width: 570px" | 75 | style="width: 570px" |
| 82 | :placeholder="language == 0 ? '请输入身份证号' : 'ID Number'" | 76 | :placeholder="language == 0 ? '请输入有效证件号' : 'ID Number'" |
| 83 | /> | 77 | /> |
| 84 | </div> | 78 | </div> |
| 85 | </div> | 79 | </div> | ... | ... |
| ... | @@ -80,7 +80,7 @@ const startCheckSuccessListener = (orderSn, actId) => { | ... | @@ -80,7 +80,7 @@ const startCheckSuccessListener = (orderSn, actId) => { |
| 80 | clearInterval(timer); | 80 | clearInterval(timer); |
| 81 | timer = null; | 81 | timer = null; |
| 82 | }); | 82 | }); |
| 83 | }, 3000); | 83 | }, 1500); |
| 84 | }; | 84 | }; |
| 85 | 85 | ||
| 86 | const detail = reactive({ | 86 | const detail = reactive({ |
| ... | @@ -352,7 +352,7 @@ detail.fetchData(); | ... | @@ -352,7 +352,7 @@ detail.fetchData(); |
| 352 | > | 352 | > |
| 353 | <div>{{ it.name }}</div> | 353 | <div>{{ it.name }}</div> |
| 354 | <div class="idcard"> | 354 | <div class="idcard"> |
| 355 | {{ languageFormat(language, "身份证", "ID number") }}:{{ | 355 | {{ languageFormat(language, "证件号", "ID number") }}:{{ |
| 356 | it.idCard | 356 | it.idCard |
| 357 | }} | 357 | }} |
| 358 | </div> | 358 | </div> | ... | ... |
| ... | @@ -68,7 +68,7 @@ audience.fetchData(); | ... | @@ -68,7 +68,7 @@ audience.fetchData(); |
| 68 | > | 68 | > |
| 69 | <div class="name">{{ it.name }}</div> | 69 | <div class="name">{{ it.name }}</div> |
| 70 | <div class="idcard"> | 70 | <div class="idcard"> |
| 71 | {{ languageFormat(language, "身份证", "Identity Card") }}:{{ | 71 | {{ languageFormat(language, "证件号", "Identity Card") }}:{{ |
| 72 | it.idCard | 72 | it.idCard |
| 73 | }} | 73 | }} |
| 74 | </div> | 74 | </div> | ... | ... |
| ... | @@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => { | ... | @@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => { |
| 82 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') | 82 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') |
| 83 | }, | 83 | }, |
| 84 | '/dev-api': { | 84 | '/dev-api': { |
| 85 | // target: 'http://192.168.1.118:8081/', | 85 | target: 'http://192.168.1.118:8081/', |
| 86 | target: 'https://jijin.wtwuxicenter.com/stage-api', | 86 | // target: 'https://jijin.wtwuxicenter.com/stage-api', |
| 87 | changeOrigin: true, | 87 | changeOrigin: true, |
| 88 | rewrite: (p) => p.replace(/^\/dev-api/, '') | 88 | rewrite: (p) => p.replace(/^\/dev-api/, '') |
| 89 | } | 89 | } | ... | ... |
-
Please register or sign in to post a comment