78da20a7 by zhangmeng

报名

1 parent d082a4b0
...@@ -15,7 +15,7 @@ const useUserStore = defineStore( ...@@ -15,7 +15,7 @@ const useUserStore = defineStore(
15 state: () => ({ 15 state: () => ({
16 token: getToken(), 16 token: getToken(),
17 user: null, // uType 1个人账号,2团体账号,3游客登录 17 user: null, // uType 1个人账号,2团体账号,3游客登录
18 group: {}, 18 group: {}, // type 0普通院校 1专业舞蹈学院 2培训机构/娱乐部 3地方协会 4国家协会
19 name: '', 19 name: '',
20 nickName: '', 20 nickName: '',
21 avatar: '', 21 avatar: '',
......
1 <template> 1 <template>
2 <div v-loading="loading" class="app-container"> 2 <div v-loading="loading" class="app-container">
3 <div class="mt30"/> 3 <div class="mt30" />
4 <div v-if="error"> 4 <div v-if="error">
5 <el-result 5 <el-result
6 :title="language==0?'未找到赛事':'No Data'" 6 :title="language==0?'未找到赛事':'No Data'"
7 icon="error" 7 icon="error"
8 > 8 >
9 <template #extra/> 9 <template #extra />
10 </el-result> 10 </el-result>
11 </div> 11 </div>
12 <div v-else class="box mb20"> 12 <div v-else class="box mb20">
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
124 <label>{{ language == 0 ? '邮&nbsp;&nbsp;&nbsp;&nbsp;箱' : 'EMAIL' }}</label> 124 <label>{{ language == 0 ? '邮&nbsp;&nbsp;&nbsp;&nbsp;箱' : 'EMAIL' }}</label>
125 {{ matchData.contactEmail }}</p> 125 {{ matchData.contactEmail }}</p>
126 </div> 126 </div>
127 <div style="height: 30px"/> 127 <div style="height: 30px" />
128 <div class="ppl_pb"> 128 <div class="ppl_pb">
129 <el-link 129 <el-link
130 v-if="matchData.signKnowUrl&&JSON.parse(matchData.signKnowUrl)?.length>0" 130 v-if="matchData.signKnowUrl&&JSON.parse(matchData.signKnowUrl)?.length>0"
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
133 target="_blank" type="primary" 133 target="_blank" type="primary"
134 > 134 >
135 <el-icon :size="20"> 135 <el-icon :size="20">
136 <Download/> 136 <Download />
137 </el-icon> 137 </el-icon>
138 {{ language == 0 ? '报名须知' : 'Notes' }} 138 {{ language == 0 ? '报名须知' : 'Notes' }}
139 </el-link> 139 </el-link>
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
145 target="_blank" type="primary" 145 target="_blank" type="primary"
146 > 146 >
147 <el-icon :size="20"> 147 <el-icon :size="20">
148 <Download/> 148 <Download />
149 </el-icon> 149 </el-icon>
150 {{ language == 0 ? '免责声明' : 'Disclaimers' }} 150 {{ language == 0 ? '免责声明' : 'Disclaimers' }}
151 </el-link> 151 </el-link>
...@@ -156,7 +156,7 @@ ...@@ -156,7 +156,7 @@
156 type="primary" 156 type="primary"
157 > 157 >
158 <el-icon :size="20"> 158 <el-icon :size="20">
159 <Download/> 159 <Download />
160 </el-icon> 160 </el-icon>
161 {{ language == 0 ? '赛事规程' : 'Competition Regulations' }} 161 {{ language == 0 ? '赛事规程' : 'Competition Regulations' }}
162 </el-link> 162 </el-link>
...@@ -201,8 +201,8 @@ ...@@ -201,8 +201,8 @@
201 </div> 201 </div>
202 </div> 202 </div>
203 <p class="text-gray text-center uppercase">{{ 203 <p class="text-gray text-center uppercase">{{
204 language == 0 ? '报名截止' : 'Registration Deadline' 204 language == 0 ? '报名截止' : 'Registration Deadline'
205 }}:{{ matchData.signEndTime?.slice(0, 10) }}</p> 205 }}:{{ matchData.signEndTime?.slice(0, 10) }}</p>
206 206
207 </el-col> 207 </el-col>
208 </el-row> 208 </el-row>
...@@ -210,7 +210,7 @@ ...@@ -210,7 +210,7 @@
210 </el-card> 210 </el-card>
211 211
212 <!-- 只联赛有--> 212 <!-- 只联赛有-->
213 <quick-row v-if="matchData.leagueId==0" :match-id="matchId"/> 213 <quick-row v-if="matchData.leagueId==0" :match-id="matchId" />
214 214
215 <el-row v-if="matchData.type=='0'" :gutter="20"> 215 <el-row v-if="matchData.type=='0'" :gutter="20">
216 <el-col :lg="18"> 216 <el-col :lg="18">
...@@ -222,11 +222,11 @@ ...@@ -222,11 +222,11 @@
222 </li> 222 </li>
223 </ul> 223 </ul>
224 </div> 224 </div>
225 <matchInfo v-if="menu[0].active==1" :form="matchData"/> 225 <matchInfo v-if="menu[0].active==1" :form="matchData" />
226 <div v-if="menu[1].active==1"> 226 <div v-if="menu[1].active==1">
227 <match-info-project-list :is-national="isNational" :match-id="matchData.id"/> 227 <match-info-project-list :is-national="isNational" :match-id="matchData.id" />
228 </div> 228 </div>
229 <match-schedule-list v-if="menu[2].active==1" :match-data="matchData"/> 229 <match-schedule-list v-if="menu[2].active==1" :match-data="matchData" />
230 <div v-if="menu[3].active==1"> 230 <div v-if="menu[3].active==1">
231 <div v-if="matchData.showPersonFlag=='1'"> 231 <div v-if="matchData.showPersonFlag=='1'">
232 <!-- <el-row :gutter="20" v-if="matchData.signType == '0'">--> 232 <!-- <el-row :gutter="20" v-if="matchData.signType == '0'">-->
...@@ -299,24 +299,24 @@ ...@@ -299,24 +299,24 @@
299 </el-row> 299 </el-row>
300 </div> 300 </div>
301 <div v-else> 301 <div v-else>
302 <el-empty :image="`/img/order_no.png`" :image-size="228" description=""/> 302 <el-empty :image="`/img/order_no.png`" :image-size="228" description="" />
303 </div> 303 </div>
304 304
305 </div> 305 </div>
306 <div v-if="menu[4].active==1"> 306 <div v-if="menu[4].active==1">
307 <!--成绩--> 307 <!--成绩-->
308 <el-empty :image="`/img/order_no.png`" :image-size="228" description=""/> 308 <el-empty :image="`/img/order_no.png`" :image-size="228" description="" />
309 </div> 309 </div>
310 <div v-if="menu[5].active==1" class="pd20"> 310 <div v-if="menu[5].active==1" class="pd20">
311 <div class="xzbox"> 311 <div class="xzbox">
312 <div v-html="matchData.signKnow"/> 312 <div v-html="matchData.signKnow" />
313 <div v-if="matchData.signKnowUrl"> 313 <div v-if="matchData.signKnowUrl">
314 <el-link 314 <el-link
315 v-for="(item,index) in JSON.parse(matchData.signKnowUrl)" :href="fillImgUrl(item.url)" 315 v-for="(item,index) in JSON.parse(matchData.signKnowUrl)" :key="index" :href="fillImgUrl(item.url)"
316 target="_blank" type="primary" 316 target="_blank" type="primary"
317 > 317 >
318 <el-icon :size="20"> 318 <el-icon :size="20">
319 <Download/> 319 <Download />
320 </el-icon> 320 </el-icon>
321 {{ item.name }} 321 {{ item.name }}
322 </el-link> 322 </el-link>
...@@ -324,11 +324,11 @@ ...@@ -324,11 +324,11 @@
324 </div> 324 </div>
325 </div> 325 </div>
326 </el-card> 326 </el-card>
327 <div style="height: 20px"/> 327 <div style="height: 20px" />
328 328
329 </el-col> 329 </el-col>
330 <el-col :lg="6"> 330 <el-col :lg="6">
331 <match-news :match-id="matchId"/> 331 <match-news :match-id="matchId" />
332 </el-col> 332 </el-col>
333 </el-row> 333 </el-row>
334 334
...@@ -343,9 +343,9 @@ ...@@ -343,9 +343,9 @@
343 </ul> 343 </ul>
344 </div> 344 </div>
345 <!-- 分站赛--> 345 <!-- 分站赛-->
346 <substation-list v-if="menu1[0].active==1" :list="matchData.cpts"/> 346 <substation-list v-if="menu1[0].active==1" :list="matchData.cpts" />
347 <matchInfo v-if="menu1[1].active==1" :form="matchData"/> 347 <matchInfo v-if="menu1[1].active==1" :form="matchData" />
348 <match-schedule-list v-if="menu1[2].active==1" :match-data="matchData"/> 348 <match-schedule-list v-if="menu1[2].active==1" :match-data="matchData" />
349 </el-card> 349 </el-card>
350 </el-col> 350 </el-col>
351 </el-row> 351 </el-row>
...@@ -356,8 +356,8 @@ ...@@ -356,8 +356,8 @@
356 <img v-else src="@/assets/logo/Invitation_e.png"> 356 <img v-else src="@/assets/logo/Invitation_e.png">
357 </div> 357 </div>
358 358
359 <affix-invitation ref="dialogInvitationRef"/> 359 <affix-invitation ref="dialogInvitationRef" />
360 <div style="height: 50px"/> 360 <div style="height: 50px" />
361 361
362 <el-dialog 362 <el-dialog
363 v-model="signTypePop" center class="pcloginpop" 363 v-model="signTypePop" center class="pcloginpop"
...@@ -391,9 +391,9 @@ ...@@ -391,9 +391,9 @@
391 v-if="matchData.isAirView" class="ding" 391 v-if="matchData.isAirView" class="ding"
392 @click="openPickup" 392 @click="openPickup"
393 >{{ language == 0 ? '接 / 送机服务' : 'Pick-up/drop-off service' }}</a> 393 >{{ language == 0 ? '接 / 送机服务' : 'Pick-up/drop-off service' }}</a>
394 <pickup ref="pickupRef"/> 394 <pickup ref="pickupRef" />
395 395
396 <checkAllSportsman ref="checkAllSportsmanRef"/> 396 <checkAllSportsman ref="checkAllSportsmanRef" />
397 </div> 397 </div>
398 </template> 398 </template>
399 399
...@@ -405,9 +405,9 @@ import SubstationList from '@/viewsPc/match/components/substation-list' ...@@ -405,9 +405,9 @@ import SubstationList from '@/viewsPc/match/components/substation-list'
405 import MatchInfoProjectList from '@/viewsPc/match/components/matchInfo-projectList' 405 import MatchInfoProjectList from '@/viewsPc/match/components/matchInfo-projectList'
406 import QuickRow from '@/viewsPc/match/components/quick-row' 406 import QuickRow from '@/viewsPc/match/components/quick-row'
407 import Pickup from '@/viewsPc/components/pickup' 407 import Pickup from '@/viewsPc/components/pickup'
408 import {getCurrentInstance, ref} from 'vue' 408 import { getCurrentInstance, ref } from 'vue'
409 import {reactive, onMounted} from '@vue/runtime-core' 409 import { reactive, onMounted } from '@vue/runtime-core'
410 import {useRoute, useRouter} from 'vue-router' 410 import { useRoute, useRouter } from 'vue-router'
411 import AffixInvitation from '@/viewsPc/match/components/affix-invitation' 411 import AffixInvitation from '@/viewsPc/match/components/affix-invitation'
412 import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman' 412 import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman'
413 413
...@@ -415,14 +415,14 @@ import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman' ...@@ -415,14 +415,14 @@ import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman'
415 const language = useStorage('language', 0) 415 const language = useStorage('language', 0)
416 const route = useRoute() 416 const route = useRoute()
417 const router = useRouter() 417 const router = useRouter()
418 const {proxy} = getCurrentInstance() 418 const { proxy } = getCurrentInstance()
419 import * as match from '@/apiPc/match' 419 import * as match from '@/apiPc/match'
420 import {toRefs} from '@vueuse/shared' 420 import { toRefs } from '@vueuse/shared'
421 import {dayjs, ElMessage, ElMessageBox} from 'element-plus' 421 import { dayjs, ElMessage, ElMessageBox } from 'element-plus'
422 import useUserStore from '@/store/modules/user' 422 import useUserStore from '@/store/modules/user'
423 import {useStorage} from '@vueuse/core/index' 423 import { useStorage } from '@vueuse/core/index'
424 import {Search} from '@element-plus/icons-vue' 424 import { Search } from '@element-plus/icons-vue'
425 import {preCheckForGroup} from '@/apiPc/match' 425 import { preCheckForGroup } from '@/apiPc/match'
426 426
427 const user = useUserStore().user 427 const user = useUserStore().user
428 const group = useUserStore().group 428 const group = useUserStore().group
...@@ -434,16 +434,16 @@ const data = reactive({ ...@@ -434,16 +434,16 @@ const data = reactive({
434 groupId: '', 434 groupId: '',
435 activeName2: 'first', 435 activeName2: 'first',
436 menu: [ 436 menu: [
437 {name: 'Event details', cn: '赛事详情', active: 1}, 437 { name: 'Event details', cn: '赛事详情', active: 1 },
438 {name: 'Event settings', cn: '赛事设项', active: 0}, 438 { name: 'Event settings', cn: '赛事设项', active: 0 },
439 {name: 'Schedule', cn: '日程', active: 0}, 439 { name: 'Schedule', cn: '日程', active: 0 },
440 {name: 'Participating teams', cn: '参赛人员', active: 0}, 440 { name: 'Participating teams', cn: '参赛人员', active: 0 },
441 {name: 'Achievement', cn: '成绩', active: 0}, 441 { name: 'Achievement', cn: '成绩', active: 0 },
442 {name: 'Notes', cn: '报名须知', active: 0}], 442 { name: 'Notes', cn: '报名须知', active: 0 }],
443 menu1: [ 443 menu1: [
444 {name: 'Tournaments', cn: '分站赛', active: 1}, 444 { name: 'Tournaments', cn: '分站赛', active: 1 },
445 {name: 'Event details', cn: '赛事详情', active: 0}, 445 { name: 'Event details', cn: '赛事详情', active: 0 },
446 {name: 'Schedule', cn: '日程', active: 0}], 446 { name: 'Schedule', cn: '日程', active: 0 }],
447 signDoneGroupList: [], 447 signDoneGroupList: [],
448 signDoneGroupListToTal: 0, 448 signDoneGroupListToTal: 0,
449 queryGroupList: { 449 queryGroupList: {
...@@ -468,6 +468,7 @@ const { ...@@ -468,6 +468,7 @@ const {
468 } = toRefs(data) 468 } = toRefs(data)
469 const signTypePop = ref(false) 469 const signTypePop = ref(false)
470 const upgradePop = ref(false) 470 const upgradePop = ref(false)
471
471 onMounted(() => { 472 onMounted(() => {
472 if (group) { 473 if (group) {
473 groupId.value = group.id 474 groupId.value = group.id
...@@ -484,7 +485,7 @@ onMounted(() => { ...@@ -484,7 +485,7 @@ onMounted(() => {
484 }) 485 })
485 486
486 function getMatchId() { 487 function getMatchId() {
487 match.getMaList({topFlag: 1, status: 1}).then((res) => { 488 match.getMaList({ topFlag: 1, status: 1 }).then((res) => {
488 matchId.value = res.rows[0].id 489 matchId.value = res.rows[0].id
489 getMatch(matchId.value) 490 getMatch(matchId.value)
490 getGroupListByCptId() 491 getGroupListByCptId()
...@@ -493,10 +494,10 @@ function getMatchId() { ...@@ -493,10 +494,10 @@ function getMatchId() {
493 494
494 function getMatch(id) { 495 function getMatch(id) {
495 loading.value = true 496 loading.value = true
496 match.getMatchById({id: id}).then(res => { 497 match.getMatchById({ id: id }).then(res => {
497 matchData.value = res.data 498 matchData.value = res.data
498 loading.value = false 499 loading.value = false
499 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 500 const today = dayjs().format('YYYY-MM-DD HH:mm:ss')
500 time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond') 501 time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond')
501 startSign.value = dayjs(res.data.signBeginTime).diff(today, 'millisecond') 502 startSign.value = dayjs(res.data.signBeginTime).diff(today, 'millisecond')
502 if (matchData.value.languageSource == '100') { 503 if (matchData.value.languageSource == '100') {
...@@ -505,7 +506,7 @@ function getMatch(id) { ...@@ -505,7 +506,7 @@ function getMatch(id) {
505 isNational.value = true 506 isNational.value = true
506 } 507 }
507 }).catch(res => { 508 }).catch(res => {
508 router.push({path: '/match/list'}) 509 router.push({ path: '/match/list' })
509 loading.value = false 510 loading.value = false
510 // setTimeout("window.location.reload()", 1000) 511 // setTimeout("window.location.reload()", 1000)
511 }) 512 })
...@@ -592,7 +593,6 @@ function goTeamSign() { ...@@ -592,7 +593,6 @@ function goTeamSign() {
592 ) 593 )
593 return 594 return
594 } 595 }
595
596 handelPreCheckForGroup(goTeamSignCn) 596 handelPreCheckForGroup(goTeamSignCn)
597 } else { 597 } else {
598 // 国际赛 598 // 国际赛
...@@ -656,7 +656,7 @@ function goGeren() { ...@@ -656,7 +656,7 @@ function goGeren() {
656 // 注册 656 // 注册
657 router.push({ 657 router.push({
658 name: 'personalRegister', 658 name: 'personalRegister',
659 query: {matchId: matchId.value} 659 query: { matchId: matchId.value }
660 }) 660 })
661 } 661 }
662 662
...@@ -667,7 +667,7 @@ function popChangeType() { ...@@ -667,7 +667,7 @@ function popChangeType() {
667 667
668 // 获取已报信息 668 // 获取已报信息
669 function checkIsSign() { 669 function checkIsSign() {
670 var obj = { 670 const obj = {
671 cptId: matchId.value, 671 cptId: matchId.value,
672 groupId: groupId.value || 0 672 groupId: groupId.value || 0
673 } 673 }
...@@ -786,7 +786,6 @@ function switchSignType() { ...@@ -786,7 +786,6 @@ function switchSignType() {
786 break 786 break
787 case '1':// 团体 787 case '1':// 团体
788 788
789
790 if (user.utype == '1') { 789 if (user.utype == '1') {
791 ElMessageBox.confirm( 790 ElMessageBox.confirm(
792 language.value == 0 ? '当前活动是团队活动,无法报名' : 'The current event is a team event, cannot register', 791 language.value == 0 ? '当前活动是团队活动,无法报名' : 'The current event is a team event, cannot register',
...@@ -829,7 +828,7 @@ function switchSignType() { ...@@ -829,7 +828,7 @@ function switchSignType() {
829 828
830 // 个人报名校验 829 // 个人报名校验
831 async function handelGeRenNext() { 830 async function handelGeRenNext() {
832 const res = await match.preCheckForPerson({type: '1'}) 831 const res = await match.preCheckForPerson({ type: '1' })
833 // 不给报名 832 // 不给报名
834 if (res.data == 0) { 833 if (res.data == 0) {
835 await proxy.$modal.confirm( 834 await proxy.$modal.confirm(
...@@ -841,7 +840,7 @@ async function handelGeRenNext() { ...@@ -841,7 +840,7 @@ async function handelGeRenNext() {
841 } 840 }
842 // 正常报名 841 // 正常报名
843 if (res.data == 1) { 842 if (res.data == 1) {
844 const flag = await getCheckOcr({type: '1'}) 843 const flag = await getCheckOcr({ type: '1' })
845 if (flag) await goPersonalSign() 844 if (flag) await goPersonalSign()
846 } 845 }
847 // 提示 846 // 提示
...@@ -851,8 +850,8 @@ async function handelGeRenNext() { ...@@ -851,8 +850,8 @@ async function handelGeRenNext() {
851 ? '运动员的WDSF会员号已变更,是否更新?' 850 ? '运动员的WDSF会员号已变更,是否更新?'
852 : 'The athlete`s WDSF membership number has been changed. Should it be updated?' 851 : 'The athlete`s WDSF membership number has been changed. Should it be updated?'
853 ) 852 )
854 await match.preCheckForPerson({type: '2'}) 853 await match.preCheckForPerson({ type: '2' })
855 const flag = await getCheckOcr({type: '1'}) 854 const flag = await getCheckOcr({ type: '1' })
856 if (flag) await goPersonalSign() 855 if (flag) await goPersonalSign()
857 } 856 }
858 } 857 }
...@@ -877,7 +876,7 @@ const openPickup = () => { ...@@ -877,7 +876,7 @@ const openPickup = () => {
877 async function handelPreCheckForGroup(fn) { 876 async function handelPreCheckForGroup(fn) {
878 const res = await match.preCheckForGroup(groupId.value, '1') 877 const res = await match.preCheckForGroup(groupId.value, '1')
879 if (res.data == 1 || res.data == 0) { 878 if (res.data == 1 || res.data == 0) {
880 const flag = await getCheckOcr({type: '2', groupId: groupId.value}) 879 const flag = await getCheckOcr({ type: '2', groupId: groupId.value })
881 if (flag) await fn() 880 if (flag) await fn()
882 } 881 }
883 if (res.data == 2) { 882 if (res.data == 2) {
...@@ -886,13 +885,13 @@ async function handelPreCheckForGroup(fn) { ...@@ -886,13 +885,13 @@ async function handelPreCheckForGroup(fn) {
886 ? '运动员的WDSF会员号已变更,是否更新?' 885 ? '运动员的WDSF会员号已变更,是否更新?'
887 : 'The athlete`s WDSF membership number has been changed. Should it be updated?') 886 : 'The athlete`s WDSF membership number has been changed. Should it be updated?')
888 await match.preCheckForGroup(groupId.value, '2') 887 await match.preCheckForGroup(groupId.value, '2')
889 const flag = await getCheckOcr({type: '2', groupId: groupId.value}) 888 const flag = await getCheckOcr({ type: '2', groupId: groupId.value })
890 if (flag) await fn() 889 if (flag) await fn()
891 } 890 }
892 } 891 }
893 892
894 async function getCheckOcr(obj) { 893 async function getCheckOcr(obj) {
895 const {data} = await match.checkOcr(obj) 894 const { data } = await match.checkOcr(obj)
896 if (!data) { 895 if (!data) {
897 // 人员ocr未通过 896 // 人员ocr未通过
898 await proxy.$modal.confirm(language.value == 0 ? '请完善人员信息' : 'Please complete the personnel information') 897 await proxy.$modal.confirm(language.value == 0 ? '请完善人员信息' : 'Please complete the personnel information')
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!