12d621d3 by zhangmeng

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

2 parents 73dc0e6e 182c235a
...@@ -39,11 +39,12 @@ export function getMySignDetailById(params) { ...@@ -39,11 +39,12 @@ export function getMySignDetailById(params) {
39 } 39 }
40 40
41 // 获取赛事下的已报团队 41 // 获取赛事下的已报团队
42 export function getGroupListByCptId(cptId) { 42 export function getGroupListByCptId(cptId,query) {
43 return request({ 43 return request({
44 // url: `/league/group/getGroupListByCptId/${cptId}`, 44 // url: `/league/group/getGroupListByCptId/${cptId}`,
45 url: `/league/sign/getSignInfoDataByCptId/${cptId}`, 45 url: `/league/sign/getSignInfoDataByCptId/${cptId}`,
46 method: 'get' 46 method: 'get',
47 params: query
47 }) 48 })
48 } 49 }
49 50
...@@ -363,6 +364,13 @@ export function savePersonForMyPerson(data) { ...@@ -363,6 +364,13 @@ export function savePersonForMyPerson(data) {
363 data: data 364 data: data
364 }) 365 })
365 } 366 }
367 export function savePersonForMyPerson2(data) {
368 return request({
369 url: `/systemj/personInfo/savePersonForMyPerson2`,
370 method: 'post',
371 data: data
372 })
373 }
366 374
367 // 人员修改 375 // 人员修改
368 export function editPersonInfo(params) { 376 export function editPersonInfo(params) {
...@@ -380,6 +388,13 @@ export function delPerson(id) { ...@@ -380,6 +388,13 @@ export function delPerson(id) {
380 method: 'delete' 388 method: 'delete'
381 }) 389 })
382 } 390 }
391 //个人账号
392 export function delPersonForPersonal(id) {
393 return request({
394 url: `/systemj/personInfo/singleDelete/${id}`,
395 method: 'delete'
396 })
397 }
383 398
384 export function singleSignSavePerson(data) { 399 export function singleSignSavePerson(data) {
385 return request({ 400 return request({
...@@ -650,6 +665,20 @@ export function checkMate(query) { ...@@ -650,6 +665,20 @@ export function checkMate(query) {
650 params:query 665 params:query
651 }) 666 })
652 } 667 }
668 export function checkIdcCode(query) {
669 return request({
670 url: `/systemj/personInfo/extractInfo`,
671 method: 'get',
672 params:query
673 })
674 }
675 export function getProjectByCptId(cptId,query) {
676 return request({
677 url: `/league/competitionProject/getTableByLanguageSourceAndCptId/${cptId}`,
678 method: 'get',
679 params: query
680 })
681 }
653 export function addInvitation(data) { 682 export function addInvitation(data) {
654 return request({ 683 return request({
655 url: `/league/person`, 684 url: `/league/person`,
......

57.3 KB | W: | H:

43.9 KB | W: | H:

src/assets/logo/Invitation_c.png
src/assets/logo/Invitation_c.png
src/assets/logo/Invitation_c.png
src/assets/logo/Invitation_c.png
  • 2-up
  • Swipe
  • Onion skin

56 KB | W: | H:

44.3 KB | W: | H:

src/assets/logo/Invitation_e.png
src/assets/logo/Invitation_e.png
src/assets/logo/Invitation_e.png
src/assets/logo/Invitation_e.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
83 <div @click="goHelpZH"> 83 <div @click="goHelpZH">
84 <a target="_blank" href="/file/操作指引.zip"> 84 <a target="_blank" href="/file/操作指引.zip">
85 <img class="kf" src="@/assets/logo/btn02.png"/> 85 <img class="kf" src="@/assets/logo/btn02.png"/>
86 <div class="text-center mt10 gradient-text">操作指引</div> 86 <div class="text-center mt10 gradient-text">指南下载</div>
87 </a> 87 </a>
88 </div> 88 </div>
89 </div> 89 </div>
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
95 </div> 95 </div>
96 <div @click="goHelp"> 96 <div @click="goHelp">
97 <img class="kf" src="@/assets/logo/btn02.png"/> 97 <img class="kf" src="@/assets/logo/btn02.png"/>
98 <div class="text-center gradient-text">GUIDELINE</div> 98 <div class="text-center gradient-text uppercase">Video Guide</div>
99 </div> 99 </div>
100 </div> 100 </div>
101 </div> 101 </div>
...@@ -104,18 +104,19 @@ ...@@ -104,18 +104,19 @@
104 <script setup> 104 <script setup>
105 import {useStorage} from "@vueuse/core/index"; 105 import {useStorage} from "@vueuse/core/index";
106 import {useRouter} from "vue-router"; 106 import {useRouter} from "vue-router";
107 import {ElMessage} from "element-plus";
107 const router = useRouter() 108 const router = useRouter()
108 const language = useStorage('language', 0) 109 const language = useStorage('language', 0)
109 const goHelp = () => { 110 const goHelp = () => {
110 router.push({ 111 router.push({
111 path: `/news/list/20000100`, 112 path: `/news/list/20000100`,
112 query:{ 113 query:{
113 kindName: language.value==0?'操作指引':'GUIDELINE' 114 kindName: language.value==0?'操作指引':'Video Guide'
114 } 115 }
115 }) 116 })
116 } 117 }
117 const goHelpZH = () => { 118 const goHelpZH = () => {
118 119 ElMessage.success('已下载文件')
119 } 120 }
120 </script> 121 </script>
121 122
......
...@@ -324,7 +324,7 @@ function getCode() { ...@@ -324,7 +324,7 @@ function getCode() {
324 324
325 325
326 .ropenbtn{padding: 10px;display: none; 326 .ropenbtn{padding: 10px;display: none;
327 img{ width: 50px;} 327 img{ width: 44px;}
328 } 328 }
329 329
330 :deep(.el-input){height: 100%} 330 :deep(.el-input){height: 100%}
......
...@@ -257,7 +257,7 @@ function getCode() { ...@@ -257,7 +257,7 @@ function getCode() {
257 257
258 258
259 .ropenbtn{padding: 10px;display: none; 259 .ropenbtn{padding: 10px;display: none;
260 img{ width: 50px;} 260 img{ width: 44px;}
261 } 261 }
262 262
263 :deep(.el-input){height: 100%} 263 :deep(.el-input){height: 100%}
......
...@@ -133,8 +133,6 @@ function goBooking(n) { ...@@ -133,8 +133,6 @@ function goBooking(n) {
133 break; 133 break;
134 case 4: 134 case 4:
135 //化妆 135 //化妆
136 building()
137
138 router.push({path: `/booking/makeup/${props.matchId}`}) 136 router.push({path: `/booking/makeup/${props.matchId}`})
139 break; 137 break;
140 case 5: 138 case 5:
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="banner"> 3 <div class="banner">
4 <el-carousel height="450px" :autoplay="false" arrow="hover" @change="carouselChange"> 4 <el-carousel class="forPc" height="450px" :autoplay="false" arrow="hover" @change="carouselChange">
5 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id"> 5 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id">
6 <div class="bannerItem"> 6 <div class="bannerItem">
7 <div class="h100"> 7 <div class="h100">
...@@ -40,6 +40,45 @@ ...@@ -40,6 +40,45 @@
40 </div> 40 </div>
41 </el-carousel-item> 41 </el-carousel-item>
42 </el-carousel> 42 </el-carousel>
43 <el-carousel class="forWei" height="160px" :autoplay="false" arrow="hover" @change="carouselChange">
44 <el-carousel-item style="height: 160px;" v-for="n in maList" :key="n.id">
45 <div class="bannerItem" style="height:100%">
46 <div class="h100" style="position: relative">
47 <img v-if="n.bgImgUrl" class="bannerImg" :src="fillImgUrl(n.bgImgUrl)">
48 <img v-else class="bannerImg" src="@/assets/dance/banner.png">
49 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;">
50
51 <div class="banner-count" v-if="n.time>0" @click="goMatch(n)">
52 距离开始还有
53 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
54 <template #default="timeData">
55 <div class="block">{{ timeData.days }}
56 <span class="colon"></span>
57 </div>
58
59 <div class="block">{{ timeData.hours }}
60 <span class="colon"></span>
61 </div>
62
63 <div class="block">{{ timeData.minutes }}
64 <span class="colon"></span>
65 </div>
66
67 <div class="block">{{ timeData.seconds }}
68 <span class="colon"></span>
69 </div>
70 </template>
71 </van-count-down>
72 </div>
73 <div class="banner-count bb" v-else @click="goMatch(n)">
74 开始报名
75 <!-- <el-button class="btn-lineG" style="font-size: 17px;height: 40px" round type="primary">开始报名</el-button>-->
76 </div>
77 </div>
78 </div>
79 </div>
80 </el-carousel-item>
81 </el-carousel>
43 </div> 82 </div>
44 83
45 <div class="box zn-bg"> 84 <div class="box zn-bg">
...@@ -885,7 +924,8 @@ const goGuide = () => { ...@@ -885,7 +924,8 @@ const goGuide = () => {
885 } 924 }
886 .bannerItem .banner-count { 925 .bannerItem .banner-count {
887 flex-direction: column; 926 flex-direction: column;
888 transform: scale(0.8); 927 transform: scale(0.5);
928 width: auto;
889 left: 0; 929 left: 0;
890 right: 0; 930 right: 0;
891 931
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="banner"> 3 <div class="banner">
4 <el-carousel height="450px" :autoplay="false" arrow="hover" @change="carouselChange"> 4 <el-carousel height="450px" class="forPc" :autoplay="false" arrow="hover" @change="carouselChange">
5 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id"> 5 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id">
6 <div class="bannerItem"> 6 <div class="bannerItem">
7 <div class="h100"> 7 <div class="h100">
...@@ -37,6 +37,45 @@ ...@@ -37,6 +37,45 @@
37 </div> 37 </div>
38 </el-carousel-item> 38 </el-carousel-item>
39 </el-carousel> 39 </el-carousel>
40 <el-carousel class="forWei" height="160px" :autoplay="false" arrow="hover" @change="carouselChange">
41 <el-carousel-item style="height: 160px;" v-for="n in maList" :key="n.id">
42 <div class="bannerItem" style="height:100%">
43 <div class="h100" style="position: relative">
44 <img v-if="n.bgImgUrl" class="bannerImg" :src="fillImgUrl(n.bgImgUrl)">
45 <img v-else class="bannerImg" src="@/assets/dance/banner.png">
46 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;">
47
48 <div class="banner-count" v-if="n.time>0" @click="goMatch(n)">
49 距离开始还有
50 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
51 <template #default="timeData">
52 <div class="block">{{ timeData.days }}
53 <span class="colon"></span>
54 </div>
55
56 <div class="block">{{ timeData.hours }}
57 <span class="colon"></span>
58 </div>
59
60 <div class="block">{{ timeData.minutes }}
61 <span class="colon"></span>
62 </div>
63
64 <div class="block">{{ timeData.seconds }}
65 <span class="colon"></span>
66 </div>
67 </template>
68 </van-count-down>
69 </div>
70 <div class="banner-count bb" v-else @click="goMatch(n)">
71 开始报名
72 <!-- <el-button class="btn-lineG" style="font-size: 17px;height: 40px" round type="primary">开始报名</el-button>-->
73 </div>
74 </div>
75 </div>
76 </div>
77 </el-carousel-item>
78 </el-carousel>
40 </div> 79 </div>
41 80
42 <div class="box zn-bg"> 81 <div class="box zn-bg">
...@@ -749,7 +788,8 @@ const goGuide = () => { ...@@ -749,7 +788,8 @@ const goGuide = () => {
749 display: none; 788 display: none;
750 } 789 }
751 .bannerItem .banner-count{flex-direction: column; 790 .bannerItem .banner-count{flex-direction: column;
752 transform: scale(0.8); left: 0; 791 transform: scale(0.5); width: auto;
792 left: 0;
753 right: 0; 793 right: 0;
754 .van-count-down{margin: 30px 0 0;} 794 .van-count-down{margin: 30px 0 0;}
755 } 795 }
......
...@@ -361,6 +361,7 @@ function goNext() { ...@@ -361,6 +361,7 @@ function goNext() {
361 } 361 }
362 362
363 function goPrev() { 363 function goPrev() {
364 console.log(languageSource.value)
364 if(languageSource.value=='100'){ 365 if(languageSource.value=='100'){
365 router.push({ 366 router.push({
366 name: `teamSignCn`, 367 name: `teamSignCn`,
...@@ -388,10 +389,10 @@ function editPerson(id) { ...@@ -388,10 +389,10 @@ function editPerson(id) {
388 id: id, 389 id: id,
389 groupId: groupId.value || 0 390 groupId: groupId.value || 0
390 } 391 }
391 if(language.value==0){ 392 if(isNational.value){
392 proxy.$refs['dialogAddCoachRef_En'].open(obj) 393 proxy.$refs['dialogAddCoachRef_En'].open(obj)
393 }else { 394 }else {
394 proxy.$refs['dialogAddCoachRef_En'].open(obj) 395 proxy.$refs['dialogAddCoachRef'].open(obj)
395 } 396 }
396 } 397 }
397 398
...@@ -402,11 +403,11 @@ function addCoach(n) { ...@@ -402,11 +403,11 @@ function addCoach(n) {
402 label: n, 403 label: n,
403 groupId: groupId.value 404 groupId: groupId.value
404 } 405 }
405 // if(language.value==0){ 406 if(isNational.value){
406 // proxy.$refs['dialogAddCoachRef'].open(obj)
407 // }else {
408 proxy.$refs['dialogAddCoachRef_En'].open(obj) 407 proxy.$refs['dialogAddCoachRef_En'].open(obj)
409 // } 408 }else {
409 proxy.$refs['dialogAddCoachRef'].open(obj)
410 }
410 } 411 }
411 </script> 412 </script>
412 413
......
...@@ -17,59 +17,64 @@ ...@@ -17,59 +17,64 @@
17 <h3 class="panel-title" v-else>My Information</h3> 17 <h3 class="panel-title" v-else>My Information</h3>
18 </div> 18 </div>
19 <div class="panel-body"> 19 <div class="panel-body">
20 <div v-if="form.danceMate">
21 <div class="text-danger fontsize14 mb10" v-if="language==0">*如果您报名双人舞项目,请勾选您的舞伴</div>
22 <div class="text-danger fontsize14 mb10" v-else>
23 *Please select your dance partner if you are registering for a couple event
24 </div>
25 </div>
26 <div class="chooseForm" style="display: flex;flex-wrap: wrap;"> 20 <div class="chooseForm" style="display: flex;flex-wrap: wrap;">
27 <div @click="editPerson" class="mb20" style="width: 50%;text-align: center;"> 21 <!-- <div @click="editPerson" class="mb20" style="width: 50%;text-align: center;">-->
28 <el-avatar fit="cover" v-if="form.picUrl" :size="60" :src="fillImgUrl(form.picUrl)"/> 22 <!-- <el-avatar fit="cover" v-if="form.picUrl" :size="60" :src="fillImgUrl(form.picUrl)"/>-->
29 <div v-else> 23 <!-- <div v-else>-->
30 <el-avatar fit="cover" v-if="form.sex == 0" :size="60" src="/img/head1.png"/> 24 <!-- <el-avatar fit="cover" v-if="form.sex == 0" :size="60" src="/img/head1.png"/>-->
31 <el-avatar fit="cover" v-if="form.sex == 1" :size="60" src="/img/head0.png"/> 25 <!-- <el-avatar fit="cover" v-if="form.sex == 1" :size="60" src="/img/head0.png"/>-->
32 </div> 26 <!-- </div>-->
33 <div class="text-center mt10"> 27 <!-- <div class="text-center mt10">-->
34 <span class="mName">{{ form.realName }}</span> 28 <!-- <span class="mName">{{ form.realName }}</span>-->
35 <el-icon size="20"> 29 <!-- <el-icon size="20">-->
36 <Edit/> 30 <!-- <Edit/>-->
37 </el-icon> 31 <!-- </el-icon>-->
38 </div> 32 <!-- </div>-->
39 </div> 33 <!-- </div>-->
40 <!--舞伴--> 34 <!-- &lt;!&ndash;舞伴&ndash;&gt;-->
41 <div style="width:50%;text-align: center;" v-if="form.danceMate"> 35 <!-- <div style="width:50%;text-align: center;" v-if="form.danceMate">-->
42 <el-checkbox-group v-model="mateChosed" @change="changeMate"> 36 <!-- <el-checkbox-group v-model="mateChosed" @change="changeMate">-->
43 <el-checkbox :label="form.danceMate.id"> 37 <!-- <el-checkbox :label="form.danceMate.id">-->
38 <!-- <div>-->
39 <!-- <el-avatar fit="cover" v-if="form.danceMate.picUrl" :size="60" :src="fillImgUrl(form.danceMate.picUrl)"/>-->
40 <!-- <el-avatar fit="cover" v-else-if="form.danceMate.sex == 0" :size="60"-->
41 <!-- src="/img/head1.png"/>-->
42 <!-- <el-avatar fit="cover" v-else-if="form.danceMate.sex == 1" :size="60"-->
43 <!-- src="/img/head0.png"/>-->
44 <!-- <div class="text-center mt10" @click="editMate(form.danceMate)">-->
45 <!-- <span class="mName">{{ form.danceMate.realName }}</span>-->
46 <!-- <el-icon @click.stop="editMate(form.danceMate)" size="20">-->
47 <!-- <Edit/>-->
48 <!-- </el-icon>-->
49 <!--&lt;!&ndash; <el-icon @click.stop="delMate(form.danceMate)">&ndash;&gt;-->
50 <!--&lt;!&ndash; <Delete/>&ndash;&gt;-->
51 <!--&lt;!&ndash; </el-icon>&ndash;&gt;-->
52 <!-- </div>-->
53 <!-- </div>-->
54 <!-- </el-checkbox>-->
55 <!-- </el-checkbox-group>-->
56 <!-- </div>-->
57 <div style="width:50%;text-align: center;" v-for="s in choosedList">
44 <div> 58 <div>
45 <el-avatar fit="cover" v-if="form.danceMate.picUrl" :size="60" :src="fillImgUrl(form.danceMate.picUrl)"/> 59 <el-avatar fit="cover" v-if="s.picUrl" :size="60" :src="fillImgUrl(form.danceMate.picUrl)"/>
46 <el-avatar fit="cover" v-else-if="form.danceMate.sex == 0" :size="60" 60 <el-avatar fit="cover" v-else-if="s.sex == 0" :size="60"
47 src="/img/head1.png"/> 61 src="/img/head1.png"/>
48 <el-avatar fit="cover" v-else-if="form.danceMate.sex == 1" :size="60" 62 <el-avatar fit="cover" v-else-if="s.sex == 1" :size="60"
49 src="/img/head0.png"/> 63 src="/img/head0.png"/>
50 <div class="text-center mt10" @click="editMate(form.danceMate)"> 64 <div class="text-center mt10" @click="editMate(s)">
51 <span class="mName">{{ form.danceMate.realName }}</span> 65 <span class="mName">{{ s.realName }}</span>
52 <el-icon @click.stop="editMate(form.danceMate)" size="20"> 66 <el-icon @click.stop="editMate(s)" size="20">
53 <Edit/> 67 <Edit/>
54 </el-icon> 68 </el-icon>
55 <!-- <el-icon @click.stop="delMate(form.danceMate)">-->
56 <!-- <Delete/>-->
57 <!-- </el-icon>-->
58 </div> 69 </div>
59 </div> 70 </div>
60 </el-checkbox>
61 </el-checkbox-group>
62 </div> 71 </div>
63 <!-- <div style="min-width:50%;" v-else @click="addMate" hidden>--> 72
64 <!-- <div class="addBttn" style="margin: 0 auto">+</div>-->
65 <!-- <div class="text-center mt10 text-primary text-sm">-->
66 <!-- Please add your partner-->
67 <!-- <el-icon>-->
68 <!-- <Edit/>-->
69 <!-- </el-icon>-->
70 <!-- </div>-->
71 <!-- </div>-->
72 </div> 73 </div>
74 <div class="text-center mt20">
75 <el-button type="primary" plain @click="switchPerson">{{language==0?'切换':'Switch'}}</el-button>
76 </div>
77
73 </div> 78 </div>
74 </div> 79 </div>
75 </el-col> 80 </el-col>
...@@ -84,9 +89,10 @@ ...@@ -84,9 +89,10 @@
84 clearable/> 89 clearable/>
85 </div> 90 </div>
86 </div> 91 </div>
92 <div class="pl-15 text-danger fontsize14" v-if="cantBao.flag">*{{language==0?`请上传 ${ cantBao.name } 的有效证件`:`Please upload the Valid Passport of ${cantBao.name}`}}</div>
87 <div v-loading="loadingProject" style="height: 55vh;overflow: auto;"> 93 <div v-loading="loadingProject" style="height: 55vh;overflow: auto;">
88 <el-checkbox-group v-model="projectIds"> 94 <el-checkbox-group v-model="projectIds">
89 <el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id"> 95 <el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id" :disabled="cantBao.flag">
90 <div class="flexBetween w100"> 96 <div class="flexBetween w100">
91 <div class="l"> 97 <div class="l">
92 {{ c.code }}:{{ c.name }} 98 {{ c.code }}:{{ c.name }}
...@@ -187,6 +193,7 @@ ...@@ -187,6 +193,7 @@
187 </el-card> 193 </el-card>
188 </div> 194 </div>
189 195
196 <DialogAllSportsmanListPerson ref="dialogAllSportsmanListPersonalRef" @transfer="getChoosed"/>
190 <dialogEditWdsf ref="dialogEditWdsfRef" @submitForm="changeMeDone"/> 197 <dialogEditWdsf ref="dialogEditWdsfRef" @submitForm="changeMeDone"/>
191 <dialogEditAccompany ref="dialogEditAccompanyRef" @submitForm="getMyMemberTable"/> 198 <dialogEditAccompany ref="dialogEditAccompanyRef" @submitForm="getMyMemberTable"/>
192 <addCoachEn ref="dialogAddCoachEnRef" @submitForm="getMyMemberTable"/> 199 <addCoachEn ref="dialogAddCoachEnRef" @submitForm="getMyMemberTable"/>
...@@ -201,7 +208,7 @@ import {getCurrentInstance, onMounted} from '@vue/runtime-core' ...@@ -201,7 +208,7 @@ import {getCurrentInstance, onMounted} from '@vue/runtime-core'
201 import DialogEditWdsf from './components/addWdsf' 208 import DialogEditWdsf from './components/addWdsf'
202 import DialogEditAccompany from './components/addAccompany' 209 import DialogEditAccompany from './components/addAccompany'
203 import AddCoachEn from './components/addCoach_en' 210 import AddCoachEn from './components/addCoach_en'
204 import DialogAllSportsmanList from './components/allSportsmanList' 211 import DialogAllSportsmanListPerson from './components/allSportsmanListForPersonal'
205 import DialogExtraForm from './components/extraForm' 212 import DialogExtraForm from './components/extraForm'
206 import {Search, Switch} from "@element-plus/icons-vue"; 213 import {Search, Switch} from "@element-plus/icons-vue";
207 214
...@@ -248,35 +255,31 @@ const data = reactive({ ...@@ -248,35 +255,31 @@ const data = reactive({
248 projectIds: [], 255 projectIds: [],
249 projectList: [], 256 projectList: [],
250 choosed2List: [], projectQuery: {}, tableType: 1, 257 choosed2List: [], projectQuery: {}, tableType: 1,
258 isNational:true,
259 cantBao: {
260 flag: false,
261 name:''
262 }
251 }) 263 })
252 const { 264 const {
253 activeTeam,
254 names, 265 names,
255 tableData, 266 tableData,
256 myMemberTable, 267 myMemberTable,
257 signInfoList, 268 signInfoList,
258 zuTableList, 269 zuTableList,
259 choosedList, 270 choosedList,isNational,
260 showExtraForm,
261 extraPersonInfoMapList,
262 teamList,
263 extraform, 271 extraform,
264 groupId, 272 groupId,
265 signType, 273 signType,
266 coachOrLeaderFlag, 274 coachOrLeaderFlag,
267 showResult,
268 noPhotoCanSign, 275 noPhotoCanSign,
269 extraTableHead,
270 coachForm,
271 projectIds, 276 projectIds,
272 choosedchoosed,
273 mateChosed, 277 mateChosed,
274 activeStep, 278 activeStep,
275 projectList, 279 projectList,
276 choosed2List,
277 loadingProject, 280 loadingProject,
278 projectQuery, 281 projectQuery,
279 tableType 282 tableType,cantBao
280 } = toRefs(data) 283 } = toRefs(data)
281 const matchId = ref(route.query.matchId) 284 const matchId = ref(route.query.matchId)
282 let signInfoType = null 285 let signInfoType = null
...@@ -289,7 +292,7 @@ onMounted(() => { ...@@ -289,7 +292,7 @@ onMounted(() => {
289 if (useUserStore().user) { 292 if (useUserStore().user) {
290 userId.value = useUserStore().user.userId 293 userId.value = useUserStore().user.userId
291 } 294 }
292 signType.value = route.query.signType 295 signType.value = route.query.signType || null
293 getSignInfoList() 296 getSignInfoList()
294 getMatch(matchId.value) 297 getMatch(matchId.value)
295 getMyInfo() 298 getMyInfo()
...@@ -300,6 +303,17 @@ onMounted(() => { ...@@ -300,6 +303,17 @@ onMounted(() => {
300 function getMyInfo() { 303 function getMyInfo() {
301 match.getMyPersonInfo().then(res => { 304 match.getMyPersonInfo().then(res => {
302 form.value = res.data 305 form.value = res.data
306 if(form.value.danceMate){
307 choosedList.value = [form.value,form.value.danceMate]
308 if(!form.value.danceMate.passportUrl){
309 cantBao.value.flag = true
310 cantBao.value.name = form.value.danceMate.realName
311 } else {
312 cantBao.value.flag = false
313 }
314 } else {
315 choosedList.value = [form.value]
316 }
303 myId.value = res.data.id 317 myId.value = res.data.id
304 getProjectList() 318 getProjectList()
305 }).catch(err => { 319 }).catch(err => {
...@@ -308,7 +322,6 @@ function getMyInfo() { ...@@ -308,7 +322,6 @@ function getMyInfo() {
308 } 322 }
309 323
310 function getMyMemberTable() { 324 function getMyMemberTable() {
311 //
312 match.getPerPersonList({cptId: matchId.value, searchLabels: '1,2,3,4,5,6'}, userId.value).then(res => { 325 match.getPerPersonList({cptId: matchId.value, searchLabels: '1,2,3,4,5,6'}, userId.value).then(res => {
313 myMemberTable.value = res.rows 326 myMemberTable.value = res.rows
314 if(res.rows.length > 0){ 327 if(res.rows.length > 0){
...@@ -455,45 +468,27 @@ function commit() { ...@@ -455,45 +468,27 @@ function commit() {
455 matchId: matchId.value 468 matchId: matchId.value
456 } 469 }
457 }) 470 })
458 // ElMessageBox.confirm(language.value == 0 ? '确定提交吗?' : 'Are you sure to submit?',
459 // language.value == 0 ? '提示' : 'Tip',
460 // {
461 // confirmButtonText: language.value == 0 ? '确定' : 'Yes',
462 // cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
463 // }).then(()=>{
464 // match.commitSign({
465 // groupId: 0,
466 // cptId: matchId.value
467 // }).then(res => {
468 // router.push({
469 // name: `commitDone`,
470 // params: {
471 // orderId: res.data
472 // }
473 // })
474 // })}
475 // )
476
477 } 471 }
478 472 function getChoosed(list) {
473 console.log(list)
474 choosedList.value = list
475 getProjectList()
476 }
479 function getProjectList() { 477 function getProjectList() {
478 let arr = []
479 for(var l of choosedList.value){
480 arr.push(l.id)
481 }
480 projectIds.value = [] 482 projectIds.value = []
481 loadingProject.value = true 483 loadingProject.value = true
482 //根据已选人员id 获取项目列表 484 //根据已选人员id 获取项目列表
483 var obj = {} 485 var obj = {}
484 if (mateChosed.value.length > 0 && form.value.danceMate) {
485 obj = { 486 obj = {
486 cptId: matchId.value, 487 cptId: matchId.value,
487 perIds: `${myId.value},${form.value.danceMate?.id}`, 488 perIds: arr.toString(),
488 name: projectQuery.value.name 489 name: projectQuery.value.name
489 } 490 }
490 } else { 491
491 obj = {
492 cptId: matchId.value,
493 perIds: myId.value,
494 name: projectQuery.value.name
495 }
496 }
497 match.getProjectPageByPerIds(obj).then(res => { 492 match.getProjectPageByPerIds(obj).then(res => {
498 projectList.value = res.rows 493 projectList.value = res.rows
499 loadingProject.value = false 494 loadingProject.value = false
...@@ -569,14 +564,14 @@ function signUp() { ...@@ -569,14 +564,14 @@ function signUp() {
569 } 564 }
570 return 565 return
571 } 566 }
567 let arr = []
568 for(var l of choosedList.value){
569 arr.push(l.id)
570 }
572 let obj = { 571 let obj = {
573 projectIds: projectIds.value.toString(), 572 projectIds: projectIds.value.toString(),
574 groupId: 0 573 groupId: 0,
575 } 574 athleteIds: arr.toString()
576 if (mateChosed.value.length > 0 && form.value.danceMate) {
577 obj.athleteIds= `${myId.value},${form.value.danceMate?.id}`
578 } else {
579 obj.athleteIds= myId.value
580 } 575 }
581 match.sportsmanDone(obj).then(res => { 576 match.sportsmanDone(obj).then(res => {
582 getSignInfoList() 577 getSignInfoList()
...@@ -600,21 +595,18 @@ function removeThis(id) { ...@@ -600,21 +595,18 @@ function removeThis(id) {
600 }) 595 })
601 } 596 }
602 597
603 function changeCoach(cptId, groupId) { 598 function switchPerson(){
604 // 更换教练
605 const params = { 599 const params = {
606 title: '修改教练', 600 title: language.value == 0 ? '选择运动员' : 'Participating athletes',
607 groupId: groupId, 601 matchId: matchId.value,
608 cptId: cptId 602 signType: signType.value,
603 noPhotoCanSign: noPhotoCanSign.value,
604 coachOrLeaderFlag: coachOrLeaderFlag.value,
605 choosedList: choosedList.value,
606 isNational: isNational.value,
607 mateId:form.value.danceMate?.id || 0,
609 } 608 }
610 proxy.$refs['popChangeCoach'].open(params) 609 proxy.$refs['dialogAllSportsmanListPersonalRef'].open(params)
611 }
612
613
614 function goMySign() {
615 router.push({
616 name: 'myMatch'
617 })
618 } 610 }
619 611
620 const goPersonInfo = (row) => { 612 const goPersonInfo = (row) => {
...@@ -630,8 +622,6 @@ const goPersonInfo = (row) => { ...@@ -630,8 +622,6 @@ const goPersonInfo = (row) => {
630 return 622 return
631 } 623 }
632 // 完善补充信息 624 // 完善补充信息
633 console.log(row)
634 // debugger
635 const params = { 625 const params = {
636 matchId: matchId.value, 626 matchId: matchId.value,
637 title: language.value==0?'完善补充信息':'Complete the supplementary information', 627 title: language.value==0?'完善补充信息':'Complete the supplementary information',
...@@ -644,13 +634,6 @@ const goPersonInfo = (row) => { ...@@ -644,13 +634,6 @@ const goPersonInfo = (row) => {
644 proxy.$refs['popExtraForm'].open(_.cloneDeep(params)) 634 proxy.$refs['popExtraForm'].open(_.cloneDeep(params))
645 } 635 }
646 636
647 function downloadVoucher() {
648 // 下载凭证
649 proxy.download(
650 `/pdf/getPayedOrderPdf/${matchId.value}/${groupId.value || 0}`, {}, '报项凭证.pdf'
651 )
652 }
653
654 function editPerson() { 637 function editPerson() {
655 proxy.$refs['dialogEditWdsfRef'].open({ 638 proxy.$refs['dialogEditWdsfRef'].open({
656 title: language.value == 0 ? '编辑个人信息' : 'Edit My Information', 639 title: language.value == 0 ? '编辑个人信息' : 'Edit My Information',
...@@ -658,14 +641,6 @@ function editPerson() { ...@@ -658,14 +641,6 @@ function editPerson() {
658 }) 641 })
659 } 642 }
660 643
661 function addMate() {
662 proxy.$refs['dialogEditWdsfRef'].open({
663 title: language.value == 0 ? '添加舞伴' : 'Add My Mate',
664 isMe: false,
665 cptId:matchId.value,
666 id: 0
667 })
668 }
669 function editMate(obj) { 644 function editMate(obj) {
670 proxy.$refs['dialogEditWdsfRef'].open({ 645 proxy.$refs['dialogEditWdsfRef'].open({
671 title: language.value == 0 ? '编辑舞伴' : 'Edit My Mate', 646 title: language.value == 0 ? '编辑舞伴' : 'Edit My Mate',
...@@ -676,18 +651,6 @@ function editMate(obj) { ...@@ -676,18 +651,6 @@ function editMate(obj) {
676 }) 651 })
677 } 652 }
678 653
679 function delMate(mate) {
680 delperson(mate)
681 // ElMessageBox.confirm(language.value == 0 ? '确定删除队友吗?' : 'Are you sure to delete the teammate?',
682 // language.value == 0 ? '提示' : 'Tip',
683 // {
684 // confirmButtonText: language.value == 0 ? '确定' : 'Yes',
685 // cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
686 // }).then(()=>{
687 //
688 // })
689 }
690
691 function changeMate(e) { 654 function changeMate(e) {
692 console.log(e, mateChosed.value,form.value.danceMate.passportUrl) 655 console.log(e, mateChosed.value,form.value.danceMate.passportUrl)
693 if(form.value.danceMate.passportUrl==''||!form.value.danceMate.passportUrl){ 656 if(form.value.danceMate.passportUrl==''||!form.value.danceMate.passportUrl){
......
1 <template>
2 <div>
3 <!-- 个人报名-国外-->
4 <div class="box ph-30">
5 <el-card class="mb20">
6 <single-sign-step :activeStep="1" :language="language"/>
7 </el-card>
8
9 <el-card :body-style="{'padding': '0'}">
10 <match-info-row :match-id="matchId"/>
11 <div class="pd20">
12 <el-row :gutter="20">
13 <el-col :lg="6">
14 <div class="panel border">
15 <div class="panel-header ">
16 <h3 class="panel-title" v-if="language==0">完善我的信息</h3>
17 <h3 class="panel-title" v-else>My Information</h3>
18 </div>
19 <div class="panel-body">
20 <div v-if="form.danceMate">
21 <div class="text-danger fontsize14 mb10" v-if="language==0">*如果您报名双人舞项目,请勾选您的舞伴</div>
22 <div class="text-danger fontsize14 mb10" v-else>
23 *Please select your dance partner if you are registering for a couple event
24 </div>
25 </div>
26 <div class="chooseForm" style="display: flex;flex-wrap: wrap;">
27 <div @click="editPerson" class="mb20" style="width: 50%;text-align: center;">
28 <el-avatar fit="cover" v-if="form.picUrl" :size="60" :src="fillImgUrl(form.picUrl)"/>
29 <div v-else>
30 <el-avatar fit="cover" v-if="form.sex == 0" :size="60" src="/img/head1.png"/>
31 <el-avatar fit="cover" v-if="form.sex == 1" :size="60" src="/img/head0.png"/>
32 </div>
33 <div class="text-center mt10">
34 <span class="mName">{{ form.realName }}</span>
35 <el-icon size="20">
36 <Edit/>
37 </el-icon>
38 </div>
39 </div>
40 <!--舞伴-->
41 <div style="width:50%;text-align: center;" v-if="form.danceMate">
42 <el-checkbox-group v-model="mateChosed" @change="changeMate">
43 <el-checkbox :label="form.danceMate.id">
44 <div>
45 <el-avatar fit="cover" v-if="form.danceMate.picUrl" :size="60" :src="fillImgUrl(form.danceMate.picUrl)"/>
46 <el-avatar fit="cover" v-else-if="form.danceMate.sex == 0" :size="60"
47 src="/img/head1.png"/>
48 <el-avatar fit="cover" v-else-if="form.danceMate.sex == 1" :size="60"
49 src="/img/head0.png"/>
50 <div class="text-center mt10" @click="editMate(form.danceMate)">
51 <span class="mName">{{ form.danceMate.realName }}</span>
52 <el-icon @click.stop="editMate(form.danceMate)" size="20">
53 <Edit/>
54 </el-icon>
55 <!-- <el-icon @click.stop="delMate(form.danceMate)">-->
56 <!-- <Delete/>-->
57 <!-- </el-icon>-->
58 </div>
59 </div>
60 </el-checkbox>
61 </el-checkbox-group>
62 </div>
63 <!-- <div style="min-width:50%;" v-else @click="addMate" hidden>-->
64 <!-- <div class="addBttn" style="margin: 0 auto">+</div>-->
65 <!-- <div class="text-center mt10 text-primary text-sm">-->
66 <!-- Please add your partner-->
67 <!-- <el-icon>-->
68 <!-- <Edit/>-->
69 <!-- </el-icon>-->
70 <!-- </div>-->
71 <!-- </div>-->
72 </div>
73 </div>
74 </div>
75 </el-col>
76
77 <el-col :lg="18">
78 <div class="panel border">
79 <div class="panel-header ">
80 <h3 class="panel-title" v-if="language==0">可参与报名的项目</h3>
81 <h3 class="panel-title" v-else>Search Events</h3>
82 <div class="fr">
83 <el-input size="small" v-model="projectQuery.name" :prefix-icon="Search" @change="getProjectList"
84 clearable/>
85 </div>
86 </div>
87 <div v-loading="loadingProject" style="height: 55vh;overflow: auto;">
88 <el-checkbox-group v-model="projectIds">
89 <el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id">
90 <div class="flexBetween w100">
91 <div class="l">
92 {{ c.code }}:{{ c.name }}
93 <div>{{ c.danceTypeDetailStr }}</div>
94 </div>
95 <div class="text-primary">{{ language == 0 ? '¥' : '€' }}{{ c.serviceFee }}</div>
96 </div>
97 </el-checkbox>
98 </el-checkbox-group>
99 <el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228"
100 :description="language==0?'无可选项目':''"/>
101 </div>
102 </div>
103 </el-col>
104 </el-row>
105 </div>
106 <el-row class="mt20">
107 <el-col :span="24">
108 <div class="text-center">
109 <el-button type="primary" class="btn-lineG w200px" round @click="signUp">
110 {{ language == 0 ? '确定' : 'Confirm' }}
111 </el-button>
112 </div>
113 </el-col>
114 </el-row>
115
116 <div class="m20">
117 <!-- <el-button type="success" @click="importSportman">批量导入人员</el-button>-->
118 <!-- <el-button type="success" @click="addCoach">新增运动员</el-button>-->
119 <div class="ttbb">
120 <div :class="tableType==1 ? 'active' : ''" @click="switchTabletype">
121 {{ language == 0 ? '按组别查看报项' : 'Check Registrations by Group' }}
122 </div>
123 <div :class="tableType==0 ? 'active' : ''" @click="switchTabletype">
124 {{ language == 0 ? '按人员查看报项' : 'Check Registrations by Participant' }}
125 </div>
126 </div>
127 <sign-info-table v-if="tableType==0" :match-id="matchId"
128 :extraform="extraform" :language="language" :list="signInfoList"
129 @editExtra="goPersonInfo"/>
130 <zu-table v-else :list="zuTableList" :language="language" @delete="removeThis"/>
131
132 <div v-if="showPersonList||myMemberTable.length>0">
133 <el-row class="mt20">
134 <el-col :span="24">
135 <el-button @click="addAccompany" type="primary" plain>
136 {{ language == 0 ? '添加随行人员' : 'Add accompanying personnel' }}
137 </el-button>
138 </el-col>
139 </el-row>
140 <el-table class="mt20" :data="myMemberTable" border>
141 <el-table-column type="index" :label="language==0?'序号':'Index'" width="70" align="center"/>
142 <el-table-column :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/>
143 <el-table-column :label="language==0?'名':'Name'" prop="ming" min-width="100"/>
144 <el-table-column :label="language==0?'国家/地区':'Nationality'" prop="countryName" min-width="100"/>
145 <!-- <el-table-column :label="language==0?'证件号':'Valid Documents'" prop="idcCode" min-width="120"/>-->
146 <!-- <el-table-column label="Birthday" prop="birth"/>-->
147 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
148 <el-table-column :label="language==0?'会员角色':'Role'" min-width="160">
149 <template #default="scope">
150 <div class="roletd">
151 <span v-for="item in scope.row.label?.split(',')" :key="item.id" class="text-primary">
152 <span v-if="item==='0'" class="ml5">{{ language == 0 ? '运动员' : 'Athletes' }}</span>
153 <span v-if="item==='1'" class="ml5">{{ language == 0 ? '教练' : 'Coach' }}</span>
154 <span v-if="item==='2'" class="ml5">{{ language == 0 ? '领队' : 'Head Of Team' }}</span>
155 <span v-if="item==='4'" class="ml5">{{ language == 0 ? '队医' : 'Team doctor' }}</span>
156 <span v-if="item==='5'" class="ml5">{{ language == 0 ? '翻译' : 'Interpreter' }}</span>
157 <span v-if="item==='6'" class="ml5">{{ language == 0 ? '官员' : 'Official' }}</span>
158 <span v-if="item==='3'" class="ml5">{{ language == 0 ? '其他' : 'Other' }}</span>
159 </span>
160 </div>
161 </template>
162 </el-table-column>
163 <el-table-column label="Actions">
164 <template #default="scope">
165 <a class="text-primary pd10" @click="delperson(scope.row)">
166 {{ language == 0 ? '删除' : 'Delete' }}
167 </a>
168 </template>
169 </el-table-column>
170 </el-table>
171 </div>
172
173 <div class="text-center mt20">
174 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">
175 {{ language == 0 ? '预览报名信息' : 'Preview Registration Information' }}
176 </el-button>
177 </div>
178 <!-- <div class="text-center mt20">-->
179 <!-- <el-button type="primary" class="" plain round @click="submitForm(0)">-->
180 <!-- {{ language == 0 ? '保存暂不提交审核' : 'Save, Do Not Submit for Review Yet' }}-->
181 <!-- </el-button>-->
182 <!-- <el-button type="primary" class="btn-lineG w200px" round @click="submitForm(1)">-->
183 <!-- {{ language == 0 ? '提交审核' : 'Submit for review' }}-->
184 <!-- </el-button>-->
185 <!-- </div>-->
186 </div>
187 </el-card>
188 </div>
189
190 <dialogEditWdsf ref="dialogEditWdsfRef" @submitForm="changeMeDone"/>
191 <dialogEditAccompany ref="dialogEditAccompanyRef" @submitForm="getMyMemberTable"/>
192 <addCoachEn ref="dialogAddCoachEnRef" @submitForm="getMyMemberTable"/>
193 <dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/>
194 </div>
195 </template>
196
197 <script setup>
198 import {ref, reactive, toRefs} from 'vue'
199 import * as match from '@/apiPc/match'
200 import {getCurrentInstance, onMounted} from '@vue/runtime-core'
201 import DialogEditWdsf from './components/addWdsf'
202 import DialogEditAccompany from './components/addAccompany'
203 import AddCoachEn from './components/addCoach_en'
204 import DialogAllSportsmanList from './components/allSportsmanList'
205 import DialogExtraForm from './components/extraForm'
206 import {Search, Switch} from "@element-plus/icons-vue";
207
208 const {proxy} = getCurrentInstance()
209 const router = useRouter()
210 const route = useRoute()
211 import _ from 'lodash'
212 import {ElMessage, ElMessageBox} from 'element-plus'
213 import cache from "@/plugins/cache"
214 import TeamSignStep from "@/viewsPc/match/components/teamSignStep"
215 import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row"
216 import SignInfoTable from "@/viewsPc/match/components/signInfo-table"
217 import ZuTable from '@/viewsPc/match/components/zu-table'
218 import SingleSignStep from "@/viewsPc/match/components/singleSignStep";
219 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
220 import useUserStore from "@/store/modules/user";
221 import {getPerPersonList} from "@/apiPc/match";
222 import {useStorage} from "@vueuse/core/index";
223
224 const language= useStorage('language',0)
225
226 const data = reactive({
227 coachForm: {}, activeStep: 2,
228 tableData: [],
229 signInfoList: [],
230 zuTableList: [],
231 choosedList: [],
232 myMemberTable: [],
233 extraPersonInfoMapList: [],
234 teamList: [],
235 extraform: [],
236 groupId: 0,
237 signType: '',
238 coachOrLeaderFlag: null,
239 noPhotoCanSign: null,
240 showResult: false,
241 showExtraForm: false,
242 loadingProject: false,
243 extraTableHead: [],
244 activeTeam: '',
245 names: {},
246 choosedchoosed: [],
247 mateChosed: [],
248 projectIds: [],
249 projectList: [],
250 choosed2List: [], projectQuery: {}, tableType: 1,
251 })
252 const {
253 activeTeam,
254 names,
255 tableData,
256 myMemberTable,
257 signInfoList,
258 zuTableList,
259 choosedList,
260 showExtraForm,
261 extraPersonInfoMapList,
262 teamList,
263 extraform,
264 groupId,
265 signType,
266 coachOrLeaderFlag,
267 showResult,
268 noPhotoCanSign,
269 extraTableHead,
270 coachForm,
271 projectIds,
272 choosedchoosed,
273 mateChosed,
274 activeStep,
275 projectList,
276 choosed2List,
277 loadingProject,
278 projectQuery,
279 tableType
280 } = toRefs(data)
281 const matchId = ref(route.query.matchId)
282 let signInfoType = null
283 const form = ref({})
284 const showPersonList = ref(false)
285 const signEndTime = ref('')
286 const userId = ref('')
287 const myId = ref('')
288 onMounted(() => {
289 if (useUserStore().user) {
290 userId.value = useUserStore().user.userId
291 }
292 signType.value = route.query.signType
293 getSignInfoList()
294 getMatch(matchId.value)
295 getMyInfo()
296 getMyMemberTable()
297 getMySignInfo()
298 })
299
300 function getMyInfo() {
301 match.getMyPersonInfo().then(res => {
302 form.value = res.data
303 myId.value = res.data.id
304 getProjectList()
305 }).catch(err => {
306 router.push({name: 'home'})
307 })
308 }
309
310 function getMyMemberTable() {
311 //
312 match.getPerPersonList({cptId: matchId.value, searchLabels: '1,2,3,4,5,6'}, userId.value).then(res => {
313 myMemberTable.value = res.rows
314 if(res.rows.length > 0){
315 showPersonList.value = true
316 }
317 })
318 }
319
320 function addAccompany() {
321 proxy.$refs['dialogAddCoachEnRef'].open({
322 title: language.value == 0 ? '添加随行人员' : 'Add accompanying personnel',
323 cptId: matchId.value,
324 id: 0
325 })
326 }
327
328 function changeMeDone(mateId) {
329 console.log(mateId)
330 getMyInfo()
331 getProjectList()
332 }
333
334 let chargeFlag
335
336 function getMatch(id) {
337 match.getMatchById({
338 id: id
339 }).then(res => {
340 signEndTime.value = res.data.signEndTime
341 chargeFlag = res.data.chargeFlag
342 noPhotoCanSign.value = res.data.noPhotoCanSign
343 coachOrLeaderFlag.value = res.data.coachOrLeaderFlag
344 extraform.value = JSON.parse(res.data.participantsInfo)
345 })
346 }
347
348 function getMySignInfo() {
349 // 获取已报
350 match.getMySignInfo({
351 cptId: matchId.value,
352 groupId: 0
353 }).then(res => {
354 tableData.value = res.data.signInfo
355 signInfoType = res.data.type
356 })
357 }
358
359 function getSignInfoList() {
360 match.getMySignInfoList({
361 cptId: matchId.value,
362 groupId: 0
363 }).then(res => {
364 signInfoList.value = res.data.singleData || []
365 zuTableList.value = res.data.zuData || []
366 })
367 }
368
369
370 function submitForm(n) {
371 if (signInfoList.value.length == 0) {
372 if (language.value == 0) {
373 ElMessage.warning('请至少选择一个项目')
374 } else {
375 ElMessage.warning('select at least one project')
376 }
377 return
378 }
379
380 if (signInfoType == '1') {
381 ElMessageBox.confirm(language.value==0?'已报项,前往我的报项':'Reported items, go to my submission',
382 language.value==0?'提示':'Tips', {
383 confirmButtonText: language.value==0?'确定':'OK',
384 cancelButtonText: language.value==0?'取消':'Cancel',
385 type: 'warning'
386 }).then(() => {
387 router.push({name: 'myMatch'})
388 })
389 return
390 }
391 if (extraform.value && extraform.value.length > 0) {
392 let needBuchong = false
393 for (const e of extraform.value) {
394 if (e.status == '0') {
395 needBuchong = true
396 }
397 }
398 for (const s of signInfoList.value) {
399 if (s.extraPersonInfo == null && needBuchong) {
400 ElMessage.warning(language.value == 0 ? '请完善运动员补充信息' : 'Complete Supplementary Information')
401 tableType.value = 0
402 return
403 }
404 }
405 }
406 if (showPersonList.value) {
407 if (myMemberTable.value.length == 0) {
408 ElMessageBox.confirm(language.value == 0 ? '是否继续添加随行人员?' : 'Do you want to add casual personnel?',
409 language.value == 0 ? '提示' : 'Tip', {
410 confirmButtonText: language.value == 0 ? '是' : 'Yes',
411 cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
412 type: 'warning'
413 }).then(() => {
414
415 }).catch(() => {
416 commit()
417 })
418 } else {
419 commit()
420 }
421 } else {
422 ElMessageBox.confirm(language.value == 0 ? '是否添加随行人员?' : 'Do you want to add casual personnel?',
423 language.value == 0 ? '提示' : 'Tip', {
424 confirmButtonText: language.value == 0 ? '是' : 'Yes',
425 cancelButtonText: language.value == 0 ? '否,进入下一步' : 'NO,Go Next',
426 type: 'warning'
427 }).then(() => {
428 showPersonList.value = true
429 }).catch(() => {
430 commit()
431 })
432 }
433 // if (n == 0) {
434 // ElMessageBox.confirm(language.value==0?`您当前的操作为暂存,并不是提交审核,
435 // 必须在报名截止时间${signEndTime.value}之前完成提交。
436 // 您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`:
437 // `Your current operation is temporary and not submitted for review,
438 // Submission must be completed before the registration deadline${signEndTime.value}。
439 // You can also find this registration in the My Registration section of your personal center and click submit for review.`,
440 // language.value == 0 ? '提示' : 'Tip', {
441 // confirmButtonText: language.value == 0 ? '去个人中心' : 'Go My Registration ',
442 // cancelButtonText: language.value == 0 ? '知道了' : 'OK',
443 // type: 'warning'
444 // }).then((res) => {
445 // console.log(res)
446 // router.push({name: 'myMatch'})
447 // })
448 // }
449 }
450
451 function commit() {
452 router.push({
453 name: 'signPreview',
454 query: {
455 matchId: matchId.value
456 }
457 })
458 // ElMessageBox.confirm(language.value == 0 ? '确定提交吗?' : 'Are you sure to submit?',
459 // language.value == 0 ? '提示' : 'Tip',
460 // {
461 // confirmButtonText: language.value == 0 ? '确定' : 'Yes',
462 // cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
463 // }).then(()=>{
464 // match.commitSign({
465 // groupId: 0,
466 // cptId: matchId.value
467 // }).then(res => {
468 // router.push({
469 // name: `commitDone`,
470 // params: {
471 // orderId: res.data
472 // }
473 // })
474 // })}
475 // )
476
477 }
478
479 function getProjectList() {
480 projectIds.value = []
481 loadingProject.value = true
482 //根据已选人员id 获取项目列表
483 var obj = {}
484 if (mateChosed.value.length > 0 && form.value.danceMate) {
485 obj = {
486 cptId: matchId.value,
487 perIds: `${myId.value},${form.value.danceMate?.id}`,
488 name: projectQuery.value.name
489 }
490 } else {
491 obj = {
492 cptId: matchId.value,
493 perIds: myId.value,
494 name: projectQuery.value.name
495 }
496 }
497 match.getProjectPageByPerIds(obj).then(res => {
498 projectList.value = res.rows
499 loadingProject.value = false
500 }).catch(err => {
501 loadingProject.value = false
502 ElMessage.warning(err.msg)
503 })
504 }
505
506 function addCoach() {
507 if (signInfoType == '2') {
508 match.recoverMySign({
509 cptId: matchId.value,
510 groupId: groupId.value
511 }).then(res => {
512 if (res.msg.indexOf('Exception:') > -1) {
513 const msg = res.msg.slice(10)
514 ElMessageBox.confirm(msg, '提示', {
515 confirmButtonText: '确定',
516 cancelButtonText: '取消',
517 type: 'warning'
518 }).then(() => {
519 console.log('用户点击确定')
520 })
521 return
522 }
523 getMySignInfo()
524 })
525 }
526 const params = {
527 title: '新增运动员',
528 id: 0,
529 groupId: groupId.value
530 }
531 proxy.$refs['dialogEditWdsfRef'].open(params)
532 }
533
534 function delperson(p) {
535 //删除团队下的人
536 let text = ''
537 let t = '提示'
538 let s = '确定'
539 let c = '取消'
540 let msg = '操作成功'
541 if (language.value == 0) {
542 text = `确定删除${p.realName}吗?`
543 } else {
544 text = `Delete ${p.realName}?`
545 t = 'Tips'
546 s = 'Confirm'
547 c = 'Cancel'
548 msg = ' Successful!'
549 }
550 ElMessageBox.confirm(text, t, {
551 confirmButtonText: s,
552 cancelButtonText: c,
553 type: 'warning'
554 }).then(() => {
555 match.delPerson(p.id).then(res => {
556 ElMessage.success(msg)
557 getMyMemberTable()
558 getMyInfo()
559 })
560 })
561 }
562
563 function signUp() {
564 if (projectIds.value.length == 0) {
565 if (language.value == 0) {
566 ElMessage.warning('请选择项目')
567 } else {
568 ElMessage.warning('Please select project')
569 }
570 return
571 }
572 let obj = {
573 projectIds: projectIds.value.toString(),
574 groupId: 0
575 }
576 if (mateChosed.value.length > 0 && form.value.danceMate) {
577 obj.athleteIds= `${myId.value},${form.value.danceMate?.id}`
578 } else {
579 obj.athleteIds= myId.value
580 }
581 match.sportsmanDone(obj).then(res => {
582 getSignInfoList()
583 getProjectList()
584 })
585 }
586
587 function removeThis(id) {
588 ElMessageBox.confirm(language.value == 0 ? '确定移除这条报项吗?' : 'Are you sure to remove this report item',
589 language.value == 0 ? '提示' : 'Tips', {
590 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
591 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
592 type: 'warning'
593 }).then(() => {
594 match.deleteSign(id).then(res => {
595 // 重新获取已报名信息
596 ElMessage.success(language.value == 0 ? '已移除该报项' : 'success')
597 getSignInfoList()
598 getProjectList()
599 })
600 })
601 }
602
603 function changeCoach(cptId, groupId) {
604 // 更换教练
605 const params = {
606 title: '修改教练',
607 groupId: groupId,
608 cptId: cptId
609 }
610 proxy.$refs['popChangeCoach'].open(params)
611 }
612
613
614 function goMySign() {
615 router.push({
616 name: 'myMatch'
617 })
618 }
619
620 const goPersonInfo = (row) => {
621 if (signInfoType == '1') {
622 ElMessageBox.alert(
623 language.value == 0 ? '已报项,前往我的报项' : 'Reported items, go to my submission',
624 language.value == 0 ? '提示' : 'Tips', {
625 confirmButtonText: 'OK',
626 callback: (Action) => {
627 router.push({name: 'myMatch'})
628 }
629 })
630 return
631 }
632 // 完善补充信息
633 console.log(row)
634 // debugger
635 const params = {
636 matchId: matchId.value,
637 title: language.value==0?'完善补充信息':'Complete the supplementary information',
638 participantsInfoArr: extraform.value,
639 personId: row.personInfo.id,
640 extraId: row.extraPersonInfo?.id || 0,
641 isNational:true
642
643 }
644 proxy.$refs['popExtraForm'].open(_.cloneDeep(params))
645 }
646
647 function downloadVoucher() {
648 // 下载凭证
649 proxy.download(
650 `/pdf/getPayedOrderPdf/${matchId.value}/${groupId.value || 0}`, {}, '报项凭证.pdf'
651 )
652 }
653
654 function editPerson() {
655 proxy.$refs['dialogEditWdsfRef'].open({
656 title: language.value == 0 ? '编辑个人信息' : 'Edit My Information',
657 isMe: true
658 })
659 }
660
661 function addMate() {
662 proxy.$refs['dialogEditWdsfRef'].open({
663 title: language.value == 0 ? '添加舞伴' : 'Add My Mate',
664 isMe: false,
665 cptId:matchId.value,
666 id: 0
667 })
668 }
669 function editMate(obj) {
670 proxy.$refs['dialogEditWdsfRef'].open({
671 title: language.value == 0 ? '编辑舞伴' : 'Edit My Mate',
672 isMe: false,
673 form: obj || {},
674 cptId:matchId.value,
675 id: obj?.id || 0
676 })
677 }
678
679 function delMate(mate) {
680 delperson(mate)
681 // ElMessageBox.confirm(language.value == 0 ? '确定删除队友吗?' : 'Are you sure to delete the teammate?',
682 // language.value == 0 ? '提示' : 'Tip',
683 // {
684 // confirmButtonText: language.value == 0 ? '确定' : 'Yes',
685 // cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
686 // }).then(()=>{
687 //
688 // })
689 }
690
691 function changeMate(e) {
692 console.log(e, mateChosed.value,form.value.danceMate.passportUrl)
693 if(form.value.danceMate.passportUrl==''||!form.value.danceMate.passportUrl){
694 mateChosed.value = []
695 ElMessageBox.confirm(language.value == 0 ? '请先上传舞伴的有效证件' : 'Please upload the valid certificate of the teammate',
696 language.value == 0 ? '提示' : 'Tip',
697 {
698 confirmButtonText: language.value == 0 ? '确定' : 'Yes',
699 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
700 }).then(()=>{
701 editMate(form.value.danceMate)
702 return
703 }).catch(()=>{
704 return
705 })
706 }
707 getProjectList()
708 }
709
710 function switchTabletype() {
711 if (tableType.value == 0) {
712 tableType.value = 1
713 } else {
714 tableType.value = 0
715 }
716 }
717 </script>
718
719 <style scoped lang="scss">
720 :deep(.el-checkbox__label) {
721 flex: 1 1 auto;
722 }
723
724 .flexBetweenBox {
725 width: 100%;margin-right: 0;
726 height: auto;
727 border-bottom: 1px solid #eee;
728 padding: 0 10px;
729 }
730
731 .flexBetweenBox:nth-child(odd) {
732 background: #FAFBFD;
733 }
734
735 .flexBetween {
736 padding: 10px;
737 border-left: 1px solid #eee;
738
739 .l {
740 div {
741 margin: 4px 0 0;
742 color: #999;
743 }
744 }
745 }
746
747 .app-container {
748 padding: 0;
749 background: #F5F7F9;
750 }
751
752 .panel-footer .el-button--success {
753 background: #254385;
754 border: none;
755 padding: 0 40px;
756 font-size: 16px;
757 }
758
759 .panel-footer .el-button--success.is-plain {
760 background: #fff;
761 border: 1px solid #2ED981;
762 color: #2ED981;
763 }
764
765 .hasChoose {
766 margin: 0 0 20px;
767 display: flex;
768 justify-content: space-between;
769
770 button {
771 position: relative;
772 margin: 10px;
773 }
774
775 .choseItem {
776 margin: 10px;
777 position: relative;
778
779 .poClose {
780 position: absolute;
781 right: -6px;
782 top: -12px;
783 z-index: 1;
784 }
785 }
786 }
787
788 .chooseForm {
789 :deep(.el-form-item__content) {
790 background: rgba(245, 247, 249, 0.38);
791 padding: 20px 40px 10px;
792 }
793
794 .el-checkbox {
795 height: auto;
796 margin-right: 20px;
797 }
798
799 :deep(.el-checkbox__input) {
800 position: absolute;
801 right: 0;
802 top: 0;
803 }
804
805 .name {
806 text-align: center;
807 }
808 }
809
810 :deep(.el-avatar) > img {
811 width: 100%;
812 }
813
814 .panel {
815 height: 100%;
816 }
817
818 .border-info {
819 .item {
820 margin: 5px 0;
821 color: #4C5359;
822 font-size: 14px;
823
824 label {
825 font-size: 14px;
826 margin-right: 14px
827 }
828 }
829 }
830
831 .ttbb {
832 font-size: 14px;
833 color: #4C5359;
834 display: flex;
835 justify-content: center;
836
837 div {
838 padding: 20px;
839 position: relative;
840 cursor: pointer;
841 }
842
843 div:first-child::after {
844 content: '';
845 position: absolute;
846 right: 0;
847 background: #ccc;
848 width: 1px;
849 height: 14px;
850 top: 0;
851 bottom: 0;
852 margin: auto;
853 }
854
855 .active {
856 color: var(--el-color-primary);
857
858 &::before {
859 width: 33px;
860 content: '';
861 position: absolute;
862 height: 2px;
863 bottom: 14px;
864 left: 0;
865 right: 0;
866 margin: auto;
867 background: #453DEA;
868 border-radius: 1px;
869 }
870 }
871 }
872
873 .roletd {
874 .ml5 {
875 display: inline-block
876 }
877 }
878 .mName{color: #000;font-size: 15px;display: inline-block;max-width: 6.5em;text-overflow: ellipsis;
879 overflow: hidden;}
880 </style>
...@@ -18,9 +18,10 @@ ...@@ -18,9 +18,10 @@
18 </el-button> 18 </el-button>
19 </div> 19 </div>
20 <div class="panel-body" style="padding: 10px"> 20 <div class="panel-body" style="padding: 10px">
21 <div class="tip text-right">
22 *{{ language == 0?'可通过[选手管理],增加和编辑运动员':'You can add and edit athletes through [Athlete Management]' }}
23 </div>
21 <div style="margin: 0 4px 10px;display: flex"> 24 <div style="margin: 0 4px 10px;display: flex">
22 <!-- 可通过选手管理,增加和编辑运动员-->
23
24 <el-select multiple v-model="choosedchoosed" collapse-tags-tooltip filterable 25 <el-select multiple v-model="choosedchoosed" collapse-tags-tooltip filterable
25 @change="changechoosed"> 26 @change="changechoosed">
26 <el-option v-for="c in athletesList" :key="c.id" :label="c.xing + c.ming" :value="c.id"> 27 <el-option v-for="c in athletesList" :key="c.id" :label="c.xing + c.ming" :value="c.id">
...@@ -601,7 +602,7 @@ function removeCurproject() { ...@@ -601,7 +602,7 @@ function removeCurproject() {
601 projectIds.value = _.without(projectIds.value, currProjectId.value) 602 projectIds.value = _.without(projectIds.value, currProjectId.value)
602 } 603 }
603 function checkTwo(a,b) { 604 function checkTwo(a,b) {
604 match.checkMate({per1Id:a,per2Id:b}).then(res=>{ 605 match.checkMate({per1Id:a,per2Id:b,cptId:matchId.value}).then(res=>{
605 if(!res.data){ 606 if(!res.data){
606 ElMessage.warning(language.value == 0 ? '他们不是固定组合':'They\'re not a couple') 607 ElMessage.warning(language.value == 0 ? '他们不是固定组合':'They\'re not a couple')
607 } 608 }
......
...@@ -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'"> 11 <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" required>
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"
...@@ -18,14 +18,11 @@ ...@@ -18,14 +18,11 @@
18 <span v-if="form.wdsfMin">{{form.wdsfMin}}</span> 18 <span v-if="form.wdsfMin">{{form.wdsfMin}}</span>
19 <el-input v-else v-model="form.wdsfMin" type="number"/> 19 <el-input v-else v-model="form.wdsfMin" type="number"/>
20 </el-form-item> 20 </el-form-item>
21 <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required> 21 <el-form-item :label="language==0?'姓名':'Name'" prop="realName" required>
22 <el-input v-model="form.xing"/> 22 <el-input v-model="form.realName"/>
23 </el-form-item>
24 <el-form-item :label="language==0?'名':'name'" prop="ming" required>
25 <el-input v-model="form.ming"/>
26 </el-form-item> 23 </el-form-item>
27 <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required> 24 <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required>
28 <el-select v-model="form.idcType" style="width: 100%;" :disabled="editgay"> 25 <el-select v-model="form.idcType" style="width: 100%;" :disabled="editgay&&form.idcType=='0'">
29 <el-option 26 <el-option
30 v-for="item in certificates" 27 v-for="item in certificates"
31 :key="item.value" 28 :key="item.value"
...@@ -35,10 +32,11 @@ ...@@ -35,10 +32,11 @@
35 </el-select> 32 </el-select>
36 </el-form-item> 33 </el-form-item>
37 <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> 34 <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required>
38 <el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay"/> 35 <el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay&&form.idcType=='0'"/>
39 </el-form-item> 36 </el-form-item>
40 <el-form-item :label="language==0?'有效证件':'Valid Passport'" required :required="form.idcType!='0'"> 37 <el-form-item :label="language==0?'有效证件':'Valid Passport'" :required="form.idcType!='0'">
41 <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" /> 38 <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" />
39 <span class="tip">*请上传有效证件扫描件</span>
42 </el-form-item> 40 </el-form-item>
43 <el-form-item :label="language==0?'性别':'Gender'" prop="sex"> 41 <el-form-item :label="language==0?'性别':'Gender'" prop="sex">
44 <el-radio-group v-model="form.sex" :disabled="form.idcType=='0'"> 42 <el-radio-group v-model="form.sex" :disabled="form.idcType=='0'">
...@@ -60,8 +58,9 @@ ...@@ -60,8 +58,9 @@
60 <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> 58 <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/>
61 </el-select> 59 </el-select>
62 </el-form-item> 60 </el-form-item>
63 <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone"> 61 <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required>
64 <el-input v-model="form.phone" type="number"/> 62 <el-input v-model="form.phone" type="number"/>
63 <span class="tip">*若未成年人没有手机号,请填写家长号码</span>
65 </el-form-item> 64 </el-form-item>
66 65
67 66
...@@ -133,8 +132,7 @@ const data = reactive({ ...@@ -133,8 +132,7 @@ const data = reactive({
133 sex:'0' 132 sex:'0'
134 }, 133 },
135 rules: { 134 rules: {
136 xing: [{required: true, message: '必填', trigger: 'blur'}], 135 realName: [{required: true, message: '必填', trigger: 'blur'}],
137 ming: [{required: true, message: '必填', trigger: 'blur'}],
138 // countryId: [{required: true, message: '必填', trigger: 'change'}], 136 // countryId: [{required: true, message: '必填', trigger: 'change'}],
139 idcType: [{required: true, message: '必填', trigger: 'change'}], 137 idcType: [{required: true, message: '必填', trigger: 'change'}],
140 idcCode: [{required: true, message: '必填', trigger: 'blur'}], 138 idcCode: [{required: true, message: '必填', trigger: 'blur'}],
...@@ -142,13 +140,12 @@ const data = reactive({ ...@@ -142,13 +140,12 @@ const data = reactive({
142 // regionId: [{ required: true, message: '必填', trigger: 'change' }], 140 // regionId: [{ required: true, message: '必填', trigger: 'change' }],
143 birth: [{required: true, message: '必填', trigger: 'change'}], 141 birth: [{required: true, message: '必填', trigger: 'change'}],
144 // address: [{ required: true, message: '必填', trigger: 'blur' }], 142 // address: [{ required: true, message: '必填', trigger: 'blur' }],
145 // picUrl: [{required: true, message: '必填', trigger: 'blur'}], 143 picUrl: [{required: true, message: '必填', trigger: 'blur'}],
146 sex: [{required: true, message: '必填', trigger: 'change'}], 144 sex: [{required: true, message: '必填', trigger: 'change'}],
147 labelArr: [{required: true, message: '必填', trigger: 'change'}] 145 labelArr: [{required: true, message: '必填', trigger: 'change'}]
148 }, 146 },
149 rules_cn:{ 147 rules_cn:{
150 xing: [{required: true, message: 'required', trigger: 'blur'}], 148 realName: [{required: true, message: 'required', trigger: 'blur'}],
151 ming: [{required: true, message: 'required', trigger: 'blur'}],
152 // countryId: [{required: true, message: 'required', trigger: 'change'}], 149 // countryId: [{required: true, message: 'required', trigger: 'change'}],
153 idcType: [{required: true, message: 'required', trigger: 'change'}], 150 idcType: [{required: true, message: 'required', trigger: 'change'}],
154 idcCode: [{required: true, message: 'required', trigger: 'blur'}], 151 idcCode: [{required: true, message: 'required', trigger: 'blur'}],
...@@ -156,7 +153,7 @@ const data = reactive({ ...@@ -156,7 +153,7 @@ const data = reactive({
156 // regionId: [{ required: true, message: 'required', trigger: 'change' }], 153 // regionId: [{ required: true, message: 'required', trigger: 'change' }],
157 birth: [{required: true, message: 'required', trigger: 'change'}], 154 birth: [{required: true, message: 'required', trigger: 'change'}],
158 // address: [{ required: true, message: 'required', trigger: 'blur' }], 155 // address: [{ required: true, message: 'required', trigger: 'blur' }],
159 // picUrl: [{required: true, message: 'required', trigger: 'blur'}], 156 picUrl: [{required: true, message: 'required', trigger: 'blur'}],
160 sex: [{required: true, message: 'required', trigger: 'change'}], 157 sex: [{required: true, message: 'required', trigger: 'change'}],
161 labelArr: [{required: true, message: 'required', trigger: 'change'}] 158 labelArr: [{required: true, message: 'required', trigger: 'change'}]
162 }, 159 },
...@@ -185,13 +182,14 @@ onMounted(() => { ...@@ -185,13 +182,14 @@ onMounted(() => {
185 }) 182 })
186 const editgay = ref(false) 183 const editgay = ref(false)
187 const open = (params) => { 184 const open = (params) => {
188 console.log(params.label)
189 show.value = true 185 show.value = true
190 title.value = params.title 186 title.value = params.title
191 groupId.value = params.groupId || '0' 187 groupId.value = params.groupId || '0'
192 isMe.value = params.isMe 188 isMe.value = params.isMe
193 if(params.label){ 189 if(params.label){
194 form.value.labelArr= [params.label] 190 form.value.labelArr= [params.label]
191 } else {
192 form.value.labelArr = []
195 } 193 }
196 if(language.value == 0){ 194 if(language.value == 0){
197 form.value.countryId = 240 195 form.value.countryId = 240
...@@ -261,20 +259,17 @@ function getRegionsList() { ...@@ -261,20 +259,17 @@ function getRegionsList() {
261 function checkCode() { 259 function checkCode() {
262 260
263 if (form.value.idcType=='0' && form.value.idcCode) { 261 if (form.value.idcType=='0' && form.value.idcCode) {
264 giveBirthDay() 262 // giveBirthDay()
265 var obj = { 263 var obj = {
266 idcType: form.value.idcType, 264 idcCode: form.value.idcCode,
267 idcCode: form.value.idcCode 265 name: form.value.realName
268 } 266 }
269 // match.checkPerson(obj).then(res => { 267 match.checkIdcCode(obj).then(res => {
270 // if (res.data.idcCode != null) { 268 if (res.data) {
271 // form.value = res.data 269 form.value.birth = res.data.birth
272 // if (form.value.label != null) { 270 form.value.sex = res.data.sex
273 // form.value.labelArr = form.value.label.split(',') 271 }
274 // } 272 })
275 // form.value.groupId = groupId.value
276 // }
277 // })
278 } 273 }
279 } 274 }
280 275
...@@ -324,10 +319,10 @@ function submitForm() { ...@@ -324,10 +319,10 @@ function submitForm() {
324 return 319 return
325 } 320 }
326 } 321 }
327 if(!form.value.passportUrl){ 322 // if(!form.value.passportUrl){
328 ElMessage.warning(language.value == 0 ? '请上传有效证件' :'Please upload your passport file') 323 // ElMessage.warning(language.value == 0 ? '请上传有效证件' :'Please upload your passport file')
329 return 324 // return
330 } 325 // }
331 if (typeof (form.value.regionId) === 'object') { 326 if (typeof (form.value.regionId) === 'object') {
332 form.value.regionId = _.last(form.value.regionId) 327 form.value.regionId = _.last(form.value.regionId)
333 } 328 }
......
...@@ -281,7 +281,7 @@ function submitForm() { ...@@ -281,7 +281,7 @@ function submitForm() {
281 } 281 }
282 } 282 }
283 function addPersonal() { 283 function addPersonal() {
284 match.savePersonForMyPerson(form.value).then(res => { 284 match.savePersonForMyPerson2(form.value).then(res => {
285 ElMessage.success('保存成功') 285 ElMessage.success('保存成功')
286 show.value = false 286 show.value = false
287 emit('submitForm', res.data) 287 emit('submitForm', res.data)
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
38 <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh" 38 <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh"
39 @selection-change="handleSelectionChange"> 39 @selection-change="handleSelectionChange">
40 <!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>--> 40 <!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>-->
41 <el-table-column align="center" type="index" :label="language==0?'序号':'Index'" width="60" :selectable="selectable"/> 41 <el-table-column align="center" type="index" :label="language==0?'序号':'Index'" width="70" :selectable="selectable"/>
42 <el-table-column v-if="isNational" :label="language==0?'WDSF 会员号':'WDSF MIN'" prop="wdsfMin" width="100"/> 42 <el-table-column v-if="isNational" :label="language==0?'WDSF 会员号':'WDSF MIN'" prop="wdsfMin" width="100"/>
43 <el-table-column align="center" :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/> 43 <el-table-column align="center" :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/>
44 <el-table-column align="center" :label="language==0?'名':'Name'" prop="ming" min-width="100"/> 44 <el-table-column align="center" :label="language==0?'名':'Name'" prop="ming" min-width="100"/>
...@@ -92,7 +92,9 @@ ...@@ -92,7 +92,9 @@
92 <!-- </template>--> 92 <!-- </template>-->
93 </el-dialog> 93 </el-dialog>
94 94
95 <!-- 国内赛运动员-->
95 <add-coach ref="dialogAddCoach" @submitForm="getList"/> 96 <add-coach ref="dialogAddCoach" @submitForm="getList"/>
97 <!-- 国际赛运动员-->
96 <add-wdsf ref="dialogAddWdsf" @submitForm="getList"/> 98 <add-wdsf ref="dialogAddWdsf" @submitForm="getList"/>
97 <Import ref="dialogImportProps" @submitForm="getList"/> 99 <Import ref="dialogImportProps" @submitForm="getList"/>
98 </template> 100 </template>
......
1 <template>
2 <el-dialog v-model="show" :title="title" width="1000px" append-to-body @close="close" center>
3 <div class="funcBtns">
4 <el-button type="primary" @click="addMember">
5 {{ language == 0 ? '添加选手' : 'Add Player' }}
6 </el-button>
7 </div>
8 <div class="from-Card">
9 <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small">
10 <el-form-item :label="language==0?'姓名':'Name'">
11 <el-input v-model="query.realName" style="width: 120px;" clearable/>
12 </el-form-item>
13 <el-form-item :label="language==0?'证件类型':'ID Type'" v-if="!isNational">
14 <el-select v-model="query.idcType" style="width: 100px;" clearable @change="getList" @clear="getList">
15 <el-option
16 v-for="item in certificates"
17 :key="item.value"
18 :label="item.label"
19 :value="item.value"
20 />
21 </el-select>
22 </el-form-item>
23 <el-form-item :label="language==0?'证件号码':'ID NO.'" v-if="!isNational">
24 <el-input v-model="query.idcode" style="width: 120px;" clearable/>
25 </el-form-item>
26 <!-- <el-form-item label="角色">-->
27 <!-- <el-input v-model="query.label" style="width: 120px;" clearable/>-->
28 <!-- </el-form-item>-->
29 <el-form-item>
30 <el-button type="primary" @click="getList">{{language==0?'查询':'Search'}}</el-button>
31 </el-form-item>
32 <el-form-item class="fr">
33 <el-button @click="resetChose" type="primary" plain>{{language==0?'清空选择':'Clear Selection'}}</el-button>
34 </el-form-item>
35 </el-form>
36 </div>
37 <p v-if="noPhotoCanSign == 0" class="text-danger">{{ language==0?'*需上传照片才可报名':'*Please upload photo before sign up' }}</p>
38 <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh"
39 @selection-change="handleSelectionChange" :row-key="getRowKeys">
40 <el-table-column type="selection" :label="language==0?'选择':'Selection'" :reserve-selection="true" :selectable="selectable"/>
41 <!-- <el-table-column align="center" type="index" :label="language==0?'序号':'Index'" width="60" :selectable="selectable"/>-->
42 <el-table-column v-if="isNational" :label="language==0?'WDSF MIN':'WDSF MIN'" prop="wdsfMin" width="100"/>
43 <el-table-column align="center" :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/>
44 <el-table-column align="center" :label="language==0?'名':'Name'" prop="ming" min-width="100"/>
45 <el-table-column align="center" v-if="isNational" :label="language==0?'代表':'Representing'" prop="representing" min-width="120"/>
46 <el-table-column align="center" v-if="!isNational" :label="language==0?'所属国家/地区':'Nationality'" prop="countryName" min-width="110"/>
47 <el-table-column :label="language==0?'性别':'Gender'" align="center" prop="sexStr"/>
48 <el-table-column align="center" v-if="isNational" :label="language==0?'年龄组':'Age group'" prop="ageGroup" min-width="100"/>
49 <el-table-column align="center" v-if="isNational" :label="language==0?'舞种':'Division'" prop="division" min-width="100"/>
50
51 <el-table-column v-if="!isNational" :label="language==0?'年龄':'Age'" prop="age"/>
52 <el-table-column v-if="!isNational" :label="language==0?'出生日期':'Date of Birth'" prop="birth" width="130"/>
53 <el-table-column v-if="!isNational" :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" width="120"/>
54 <el-table-column v-if="!isNational" :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/>
55 <!-- <el-table-column label="会员角色" width="200">-->
56 <!-- <template #default="scope">-->
57 <!-- <div>-->
58 <!-- <div style="white-space: nowrap" class="esp">-->
59 <!-- <span v-for="item in scope.row.label?.split(',')" :key="item.id">-->
60 <!-- <span v-if="item==='0'" class="ml5">{{ language==0?'运动员':'athletes' }}</span>-->
61 <!-- <span v-if="item==='1'" class="ml5">{{ language==0?'教练':'coach' }}</span>-->
62 <!-- <span v-if="item==='2'" class="ml5">{{ language==0?'领队':'team leader' }}</span>-->
63 <!-- <span v-if="item==='3'" class="ml5">{{ language==0?'队医':'team doctor' }}</span>-->
64 <!-- <span v-if="item==='4'" class="ml5">{{ language==0?'翻译':'translator' }}</span>-->
65 <!-- <span v-if="item==='5'" class="ml5">{{ language==0?'官员':'official' }}</span>-->
66 <!-- <span v-if="item==='6'" class="ml5">{{ language==0?'其他':'other' }}</span>-->
67 <!-- </span>-->
68 <!-- </div>-->
69 <!-- </div>-->
70 <!-- </template>-->
71 <!-- </el-table-column>-->
72 <el-table-column :label="language==0?'操作':'Actions'" :width="language==0?180:200" fixed="right" align="center">
73 <template #default="scope">
74 <span class="text-primary pointer" v-if="scope.row.passportUrl" @click="editPerson(scope.row)">
75 {{language==0?'编辑':'Edit'}}
76 </span>
77 <span v-else class="text-danger pointer" @click="editPerson(scope.row)">{{language==0?'上传证件':'Upload Valid Passport'}}</span>
78 <span class="text-primary pd10 pointer" v-if="scope.row.userId=='0'&&mateId!=scope.row.id" @click="deletePerson(scope.row)">
79 {{language==0?'删除':'Delete'}}
80 </span>
81 </template>
82 </el-table-column>
83 </el-table>
84 <paginationPc
85 v-show="total>0"
86 v-model:page="query.pageNum"
87 v-model:limit="query.pageSize"
88 :total="total"
89 @pagination="getList"
90 />
91 <template #footer>
92 <div class="dialog-footer text-center">
93 <el-button type="primary" @click="submit">{{language==0?'确定':'Confirm'}}</el-button>
94 <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button>
95 </div>
96 </template>
97 </el-dialog>
98
99 <!-- 国内赛运动员-->
100 <add-coach ref="dialogAddCoach" @submitForm="getList"/>
101 <!-- 国际赛运动员-->
102 <add-wdsf ref="dialogAddWdsf" @submitForm="getList"/>
103 <Import ref="dialogImportProps" @submitForm="getList"/>
104 </template>
105
106 <script setup>
107 import {reactive, ref, toRefs, watch} from 'vue'
108 import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core'
109 import * as match from '@/apiPc/match'
110 import AddCoach from '../components/addCoach'
111 import AddWdsf from '../components/addWdsf'
112 import Import from '../components/import'
113 import {useStorage} from "@vueuse/core/index";
114 import {delPersonForPersonal, getPerPersonList} from "@/apiPc/match";
115 import useUserStore from "@/store/modules/user";
116 import {ElMessage, ElMessageBox} from "element-plus";
117 import _ from "lodash";
118 const language= useStorage('language',0)
119 const user = useUserStore().user
120 const {proxy} = getCurrentInstance()
121 const emit = defineEmits([ 'transfer'])
122 const data = reactive({
123 query: {
124 label:'0',
125 pageSize: 10,
126 pageNum:1
127 },
128 tableData: [],
129 show: false,
130 loading: false,
131 title: '选择运动员',
132 noPhotoCanSign: 0,
133 total: 0,
134 isNational:false,
135 mateId:0
136 })
137 const {query, tableData, show, title, loading, noPhotoCanSign,total,isNational,mateId} = toRefs(data)
138 const certificates = ref([
139 {
140 value: '0',
141 label: language.value == 0 ? '居民身份证' : 'Resident ID card'
142 },
143 {
144 value: '1',
145 label: language.value == 0 ? '护照' : 'Passport'
146 },
147 {
148 value: '2',
149 label: language.value == 0 ? '其他' : 'Other'
150 }
151 ])
152 let matchId
153 let choosedList = []
154 let choosedIds = []
155 const open = (params) => {
156 title.value = params.title
157 matchId = params.matchId
158 mateId.value = params.mateId
159 noPhotoCanSign.value = params.noPhotoCanSign
160 show.value = true
161 isNational.value = params.isNational
162 choosedList = params.choosedList
163 getList()
164 }
165 defineExpose({
166 open
167 })
168 const reSetChoosed = () => {
169 choosedIds = []
170 for (const p of choosedList) {
171 choosedIds.push(p.id)
172 }
173 console.log(choosedIds,choosedList)
174 for (const n of tableData.value) {
175 if (choosedIds.indexOf(n.id) > -1) {
176 proxy.$refs['allSportmenTable'].toggleRowSelection(n, true)
177 }
178 }
179 }
180 const resetChose = () => {
181 proxy.$refs['allSportmenTable'].clearSelection()
182 }
183 const selectable = (row) => {
184 if (!row.picUrl && noPhotoCanSign.value == 0) {
185 return false
186 } else if (!row.passportUrl) {
187 // ElMessageBox.confirm(language.value == 0 ? `请上传${row.realName}的有效证件` : `Please Upload ${row.realName}'s Valid Passport`)
188 return false
189 } else {
190 return true
191 }
192 }
193 const getList = () => {
194 loading.value = true
195 getPerPersonList(query.value,user.userId).then(res => {
196 total.value = res.total
197 // const startIndex = (query.value.pageNum - 1) * query.value.pageSize;
198 // const endIndex = startIndex + query.value.pageSize;
199 // tableData.value = res.rows.slice(startIndex, endIndex)
200 tableData.value = res.rows
201 nextTick(() => {
202 reSetChoosed()
203 })
204 loading.value = false
205 })
206 }
207
208 function handleSelectionChange(val) {
209 // console.log('change',val)
210 choosedList = val
211 for (const p of val) {
212 choosedIds.push(p.id)
213 }
214 //判断是否队友
215 if(val.length==2){
216 if(val[0].sex!=val[1].sex){
217 checkTwo(val[0].id,val[1].id)
218 }
219 }
220 if(val.length>0){
221 const newVal = _.last(val)
222 match.signgetSignInfoConflict({
223 cptId: matchId,
224 perId: newVal.id,
225 groupId: '0'
226 }).then(res => {
227 if (!res.data) {
228 ElMessage.warning(language.value == 0 ? '该人员已在其他团队中报名,请重新选择' : 'This person has already registered in another team, please select again')
229 proxy.$refs['allSportmenTable'].toggleRowSelection(newVal, false)
230 }
231 })
232 }
233 }
234 function checkTwo(a,b) {
235 match.checkMate({per1Id:a,per2Id:b,cptId:matchId}).then(res=>{
236 if(!res.data){
237 ElMessage.warning(language.value == 0 ? '他们不是固定组合':'They\'re not a couple')
238 proxy.$refs['allSportmenTable'].clearSelection()
239 }
240 })
241 }
242 function submit() {
243 if (choosedIds.length == 0) {
244 ElMessage.warning(language.value == 0 ? '请选择运动员' : 'Please select athletes')
245 return
246 }
247 emit('transfer', choosedList)
248 show.value = false
249 }
250 function getRowKeys(row) {
251 return row.id
252 }
253 function close() {
254 choosedIds = []
255 }
256 function cancel() {
257 show.value = false
258 }
259
260 function editPerson(row) {
261 console.log(isNational.value)
262 const params = {
263 id: row.id,
264 title: language.value == 0 ?'编辑人员':'Edit Person',
265 groupId: '0',
266 label: '0'
267 }
268 if (isNational.value){
269 proxy.$refs['dialogAddWdsf'].open(params)
270 } else {
271 proxy.$refs['dialogAddCoach'].open(params)
272 }
273 }
274
275 function addMember() {
276 console.log(isNational.value)
277 const params = {
278 title: language.value == 0 ?'添加人员':'Add',
279 id: 0,
280 groupId: '0',
281 label: '0'
282 }
283 if (isNational.value){
284 proxy.$refs['dialogAddWdsf'].open(params)
285 } else {
286 proxy.$refs['dialogAddCoach'].open(params)
287 }
288 }
289 function deletePerson(p) {
290 let text = ''
291 let t = '提示'
292 let s = '确定'
293 let c = '取消'
294 let msg = '操作成功'
295 if (language.value==0){
296 text = `确定删除${p.realName}${p.sex=='1'?'他':'她'}的舞伴吗?`
297 } else {
298 text = `Delete ${p.realName} ${p.sex=='1'?'he':'she'} and ${p.sex=='1'?'his':'hers'} dance mate?`
299 t = 'Tips'
300 s = 'Confirm'
301 c = 'Cancel'
302 msg = ' Successful!'
303 }
304 ElMessageBox.confirm(text, t, {
305 confirmButtonText: s,
306 cancelButtonText: c,
307 type: 'warning'
308 }).then(() => {
309 match.delPersonForPersonal(p.id).then(res => {
310 ElMessage.success(msg)
311 getList()
312 })
313 })
314 }
315
316 </script>
317 <style scoped lang="scss">
318 .el-form--inline .el-form-item {
319 width: auto;
320 }
321 </style>
1 <template> 1 <template>
2 <div class="collapsebox"> 2 <div class="collapsebox">
3 <div class="pd20"> 3 <div class="pd20">
4 <div class="fr mb20">
5 <el-input size="small" v-model="query.projectName" :prefix-icon="Search"
6 @change="getList" clearable/>
7 </div>
4 <el-table :data="list" border> 8 <el-table :data="list" border>
5 <el-table-column :label="language==0?'组别编号':'Event Code'" prop="code" align="center"></el-table-column> 9 <el-table-column :label="language==0?'组别编号':'Event Code'" prop="code" align="center" :min-width="language==0?70:100">
10
11 </el-table-column>
6 <el-table-column :label="language==0?'组别名称':'Event'" min-width="150" prop="name" align="center"></el-table-column> 12 <el-table-column :label="language==0?'组别名称':'Event'" min-width="150" prop="name" align="center"></el-table-column>
7 <el-table-column :label="language==0?'舞种':'DISCIPLINE'" width="110" prop="danceType" align="center"> 13 <el-table-column :label="language==0?'舞种':'DISCIPLINE'" width="110" prop="danceType" align="center">
8 </el-table-column> 14 </el-table-column>
9 <el-table-column :label="language==0?'舞种明细':'Dance Detail'" width="120" prop="danceTypeDetailStr" align="center"></el-table-column> 15 <el-table-column :label="language==0?'舞种明细':'Dance Detail'" width="120" prop="danceTypeDetailStr" align="center">
16
17 </el-table-column>
10 18
11 <el-table-column :label="language==0?'参赛性别':'Sex'" align="center"> 19 <el-table-column :label="language==0?'参赛性别':'Sex'" align="center">
12 <template #default="scope"> 20 <template #default="scope">
...@@ -14,7 +22,7 @@ ...@@ -14,7 +22,7 @@
14 <span v-else>{{ scope.row.playType }}</span> 22 <span v-else>{{ scope.row.playType }}</span>
15 </template> 23 </template>
16 </el-table-column> 24 </el-table-column>
17 <el-table-column :label="language==0?'参赛年龄':'Age'" align="center" min-width="100"> 25 <el-table-column :label="language==0?'参赛年龄':'Age'" align="center" :min-width="isNational?100:240">
18 <template #default="scope"> 26 <template #default="scope">
19 <div v-if="isNational"> 27 <div v-if="isNational">
20 <span v-if="scope.row.ageGroup == '0'" >{{ language==0?'不限制':'Unlimited' }}</span> 28 <span v-if="scope.row.ageGroup == '0'" >{{ language==0?'不限制':'Unlimited' }}</span>
...@@ -34,8 +42,8 @@ ...@@ -34,8 +42,8 @@
34 <span v-if="scope.row.ageGroup == '14'" >Senior V</span> 42 <span v-if="scope.row.ageGroup == '14'" >Senior V</span>
35 </div> 43 </div>
36 <div v-else> 44 <div v-else>
37 <div>{{ scope.row.birthPeriod }}</div> 45 <div>{{ scope.row.birthPeriod.replace(',',language==0?' 至 ':' to ') }}</div>
38 <div>{{scope.row.birthPeriodSecond}}</div> 46 <div>{{scope.row.birthPeriodSecond?.replace(',',language==0?' 至 ':' to ')}}</div>
39 </div> 47 </div>
40 </template> 48 </template>
41 </el-table-column> 49 </el-table-column>
...@@ -45,76 +53,40 @@ ...@@ -45,76 +53,40 @@
45 </template> 53 </template>
46 </el-table-column> 54 </el-table-column>
47 </el-table> 55 </el-table>
48 56 <PaginationPc
49 <!-- <table class="table" cellspacing="0" cellpadding="0" v-if="list.length > 0">--> 57 v-show="total>0"
50 <!-- <tr v-if="language==0">--> 58 :total="total"
51 <!-- <th>组别编号</th>--> 59 v-model:page="query.pageNum"
52 <!-- <th>组别名称</th>--> 60 v-model:limit="query.pageSize"
53 <!-- <th>舞种</th>--> 61 @pagination="getList"
54 <!-- <th>舞种明细</th>--> 62 />
55 <!-- <th>参赛性别</th>-->
56 <!-- <th>参赛年龄</th>-->
57 <!-- <th>服务费(元)</th>-->
58 <!-- </tr>-->
59 <!-- <tr v-else>-->
60 <!-- <th>EVENT code</th>-->
61 <!-- <th>EVENT</th>-->
62 <!-- <th>DISCIPLINE</th>-->
63 <!-- <th>Dance Detail</th>-->
64 <!-- <th>Sex</th>-->
65 <!-- <th>Age</th>-->
66 <!-- <th>Registration Fee</th>-->
67 <!-- </tr>-->
68 <!-- <tr v-for="(p,index) in list" :key="index">-->
69 <!-- <td>{{ p.code }}</td>-->
70 <!-- <td>{{ p.name }}</td>-->
71 <!-- <td>{{ p.danceType }}</td>-->
72 <!-- <td>{{ p.danceTypeDetailStr }}</td>-->
73 <!-- <td>{{ p.playTypeStr }}</td>-->
74 <!-- <td>-->
75 <!--&lt;!&ndash; {{ isNational }}&ndash;&gt;-->
76 <!-- <div v-if="isNational">-->
77 <!-- <span v-if="p.ageGroup == '0'" >{{ language==0?'不限制':'Unlimited' }}</span>-->
78 <!-- <span v-if="p.ageGroup == '1'" >Juvenile I</span>-->
79 <!-- <span v-if="p.ageGroup == '2'" >Juvenile II</span>-->
80 <!-- <span v-if="p.ageGroup == '3'" >Juv1& II (comb.)</span>-->
81 <!-- <span v-if="p.ageGroup == '4'" >Junior I</span>-->
82 <!-- <span v-if="p.ageGroup == '5'" >Junior II</span>-->
83 <!-- <span v-if="p.ageGroup == '6'" >Juv I & II (comb.)</span>-->
84 <!-- <span v-if="p.ageGroup == '7'" >Youth</span>-->
85 <!-- <span v-if="p.ageGroup == '8'" >Under 21</span>-->
86 <!-- <span v-if="p.ageGroup == '9'" >Adult</span>-->
87 <!-- <span v-if="p.ageGroup == '10'" >Senior I</span>-->
88 <!-- <span v-if="p.ageGroup == '11'" >Senior II</span>-->
89 <!-- <span v-if="p.ageGroup == '12'" >Senior III</span>-->
90 <!-- <span v-if="p.ageGroup == '13'" >Senior IV</span>-->
91 <!-- <span v-if="p.ageGroup == '14'" >Senior V</span>-->
92 <!-- </div>-->
93 <!-- <div v-else>-->
94 <!-- <div>{{ p.birthPeriod }}</div>-->
95 <!-- <div>{{p.birthPeriodSecond}}</div>-->
96 <!-- </div>-->
97
98 <!-- &lt;!&ndash; <div>{{ p.birthAgeGroup }};{{p.birthAgeSecondGroup}}</div>&ndash;&gt;-->
99 <!-- </td>-->
100 <!-- <td>{{ language==0?'¥':'€' }}{{ p.serviceFee }}</td>-->
101 <!-- </tr>-->
102 <!-- </table>-->
103
104 </div> 63 </div>
105 <!-- <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list.length == 0" description=""/>--> 64 <!-- <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list.length == 0" description=""/>-->
106 </div> 65 </div>
107 </template> 66 </template>
108 67
109 <script setup> 68 <script setup>
69 import {Search} from "@element-plus/icons-vue";
110 import {useStorage} from "@vueuse/core/index" 70 import {useStorage} from "@vueuse/core/index"
71 import {getProjectByCptId} from "@/apiPc/match";
72 import PaginationPc from "@/components/PaginationPc";
111 const language= useStorage('language',0) 73 const language= useStorage('language',0)
112 74 const list = ref([])
75 const total = ref(0)
76 const query = ref({
77 projectName:'',
78 pageSize:10,
79 pageNum:1
80 })
113 const props = defineProps({ 81 const props = defineProps({
114 list: { 82 // list: {
115 type: Array, 83 // type: Array,
116 required: true, 84 // required: true,
117 default:[] 85 // default:[]
86 // },
87 matchId: {
88 type: String,
89 required: false
118 }, 90 },
119 isNational: { 91 isNational: {
120 type: Boolean, 92 type: Boolean,
...@@ -122,6 +94,13 @@ const props = defineProps({ ...@@ -122,6 +94,13 @@ const props = defineProps({
122 default: false 94 default: false
123 }, 95 },
124 }) 96 })
97 getList()
98 function getList() {
99 getProjectByCptId(props.matchId,query.value).then(res=>{
100 list.value = res.rows
101 total.value = res.total
102 })
103 }
125 </script> 104 </script>
126 105
127 <style scoped lang="scss"> 106 <style scoped lang="scss">
......
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
82 <!-- </div>--> 82 <!-- </div>-->
83 <div class="indexTitle" v-if="form.type==1 && form.cptProjectList?.length > 0"><h3 class="leftboderTT">Event settings</h3></div> 83 <div class="indexTitle" v-if="form.type==1 && form.cptProjectList?.length > 0"><h3 class="leftboderTT">Event settings</h3></div>
84 <div v-if="form.type==1 && form.cptProjectList?.length > 0"> 84 <div v-if="form.type==1 && form.cptProjectList?.length > 0">
85 <match-info-project-list :list="form.cptProjectList" :is-national="form.languageSource!='100'"/> 85 <match-info-project-list :match-id="form.id" :is-national="form.languageSource!='100'"/>
86 </div> 86 </div>
87 </div> 87 </div>
88 </template> 88 </template>
......
1 <template> 1 <template>
2 <!-- 已废弃-->
2 <div class="app-container" v-loading="loading"> 3 <div class="app-container" v-loading="loading">
3 <div class="mt30"/> 4 <div class="mt30"/>
4 <div v-if="error"> 5 <div v-if="error">
...@@ -99,7 +100,7 @@ ...@@ -99,7 +100,7 @@
99 </div> 100 </div>
100 <matchInfo :form="matchData" v-if="menu[0].active==1"/> 101 <matchInfo :form="matchData" v-if="menu[0].active==1"/>
101 <div v-if="menu[1].active==1"> 102 <div v-if="menu[1].active==1">
102 <match-info-project-list :list="matchData.cptProjectList" /> 103 <match-info-project-list :match-id="matchData.id" />
103 </div> 104 </div>
104 <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> 105 <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/>
105 <div v-if="menu[3].active==1"> 106 <div v-if="menu[3].active==1">
......
...@@ -185,31 +185,48 @@ ...@@ -185,31 +185,48 @@
185 </div> 185 </div>
186 <matchInfo :form="matchData" v-if="menu[0].active==1"/> 186 <matchInfo :form="matchData" v-if="menu[0].active==1"/>
187 <div v-if="menu[1].active==1"> 187 <div v-if="menu[1].active==1">
188 <match-info-project-list :list="matchData.cptProjectList" :is-national="isNational"/> 188 <match-info-project-list :match-id="matchData.id" :is-national="isNational"/>
189 </div> 189 </div>
190 <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> 190 <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/>
191 <div v-if="menu[3].active==1"> 191 <div v-if="menu[3].active==1">
192 <el-row :gutter="20" v-if="matchData.signType == '0'"> 192 <div v-if="matchData.showPersonFlag=='1'">
193 <el-col v-for="t in signDoneGroupList" :key="t.id" :span="8"> 193 <el-row :gutter="20" v-if="matchData.signType == '0'">
194 <div class="teamItem"> 194 <el-col v-for="t in signDoneGroupList" :key="t.id" :span="8">
195 <el-avatar :size="60" :src="fillImgUrl(t.imgUrl||t.avatar)"/> 195 <div class="teamItem">
196 <span class="name">{{ t.name }}</span> 196 <el-avatar :size="60" :src="fillImgUrl(t.imgUrl||t.avatar)"/>
197 </div> 197 <span class="name">{{ t.name }}</span>
198 </el-col> 198 </div>
199 </el-row> 199 </el-col>
200 <el-row :gutter="20" class="pd20" v-else> 200 </el-row>
201 <el-col :span="24"> 201 <el-row :gutter="20" class="pd20" v-else>
202 <el-table :data="signDoneGroupList"> 202 <el-col :span="24">
203 <el-table-column prop="groupCode" :label="language == 0 ? '组别代码' :'EVENT CODE'" min-width="120"/> 203 <div class="fr mb20">
204 <el-table-column prop="EVENT" :label="language == 0 ?'组别':'Group'" min-width="120"/> 204 <el-input size="small" v-model="queryGroupList.name" :prefix-icon="Search"
205 <el-table-column prop="maleAthName" :label="language == 0 ?'男运动员':'man name'" min-width="150"/> 205 @change="getGroupListByCptId" clearable/>
206 <el-table-column prop="femaleAthName" :label="language == 0 ?'女运动员':'woman name'" min-width="150"/> 206 </div>
207 <el-table-column prop="danceType" :label="language == 0 ?'舞种':'Division'" min-width="120"/> 207 <el-table :data="signDoneGroupList">
208 <el-table-column prop="countryName" :label="language == 0 ?'国籍':'Representing'" min-width="130"/> 208 <el-table-column prop="groupCode" align="center" :label="language == 0 ? '组别代码' :'EVENT CODE'" min-width="120"/>
209 <el-table-column prop="groupName" :label="language == 0 ?'参赛队名称':'Team name'" min-width="150"/> 209 <el-table-column prop="group" :label="language == 0 ?'组别':'EVENT'" min-width="120"/>
210 </el-table> 210 <el-table-column prop="maleAthName" :label="language == 0 ?'男运动员':'man name'" min-width="150"/>
211 </el-col> 211 <el-table-column prop="femaleAthName" :label="language == 0 ?'女运动员':'woman name'" min-width="150"/>
212 </el-row> 212 <el-table-column prop="danceType" :label="language == 0 ?'舞种':'Division'" min-width="120"/>
213 <el-table-column prop="countryName" align="center" :label="language == 0 ?'国籍':'Representing'" min-width="130"/>
214 <el-table-column prop="groupName" align="center" :label="language == 0 ?'参赛队名称':'Team name'" min-width="150"/>
215 </el-table>
216 <PaginationPc
217 v-show="signDoneGroupListToTal>0"
218 :total="signDoneGroupListToTal"
219 v-model:page="queryGroupList.pageNum"
220 v-model:limit="queryGroupList.pageSize"
221 @pagination="getGroupListByCptId"
222 />
223 </el-col>
224 </el-row>
225 </div>
226 <div v-else>
227 <el-empty :image="`/img/order_no.png`" :image-size="228" description=""/>
228 </div>
229
213 </div> 230 </div>
214 <div v-if="menu[4].active==1"> 231 <div v-if="menu[4].active==1">
215 <!--成绩--> 232 <!--成绩-->
...@@ -309,9 +326,9 @@ const {proxy} = getCurrentInstance() ...@@ -309,9 +326,9 @@ const {proxy} = getCurrentInstance()
309 import * as match from '@/apiPc/match' 326 import * as match from '@/apiPc/match'
310 import {toRefs} from '@vueuse/shared' 327 import {toRefs} from '@vueuse/shared'
311 import {dayjs, ElMessage, ElMessageBox} from 'element-plus' 328 import {dayjs, ElMessage, ElMessageBox} from 'element-plus'
312 import useUserStore from "@/store/modules/user"; 329 import useUserStore from "@/store/modules/user"
313 import {useStorage} from "@vueuse/core/index"; 330 import {useStorage} from "@vueuse/core/index"
314 331 import {Search} from "@element-plus/icons-vue"
315 const user = useUserStore().user 332 const user = useUserStore().user
316 const group = useUserStore().group 333 const group = useUserStore().group
317 const data = reactive({ 334 const data = reactive({
...@@ -333,6 +350,12 @@ const data = reactive({ ...@@ -333,6 +350,12 @@ const data = reactive({
333 {name: 'Event details', cn: '赛事详情', active: 0}, 350 {name: 'Event details', cn: '赛事详情', active: 0},
334 {name: 'Schedule', cn: '日程', active: 0}], 351 {name: 'Schedule', cn: '日程', active: 0}],
335 signDoneGroupList: [], 352 signDoneGroupList: [],
353 signDoneGroupListToTal:0,
354 queryGroupList:{
355 name:'',
356 pageSize:10,
357 pageNum:1
358 },
336 time: '', 359 time: '',
337 startSign: '', 360 startSign: '',
338 isNational:false 361 isNational:false
...@@ -343,10 +366,9 @@ const { ...@@ -343,10 +366,9 @@ const {
343 matchData, 366 matchData,
344 matchId, 367 matchId,
345 groupId, 368 groupId,
346 activeName2,
347 menu, 369 menu,
348 menu1, 370 menu1,
349 signDoneGroupList, 371 signDoneGroupList,signDoneGroupListToTal,queryGroupList,
350 time, startSign,isNational 372 time, startSign,isNational
351 } = toRefs(data) 373 } = toRefs(data)
352 const signTypePop = ref(false) 374 const signTypePop = ref(false)
...@@ -370,7 +392,7 @@ function getMatchId() { ...@@ -370,7 +392,7 @@ function getMatchId() {
370 match.getMaList({topFlag: 1, status: 1}).then((res) => { 392 match.getMaList({topFlag: 1, status: 1}).then((res) => {
371 matchId.value = res.rows[0].id 393 matchId.value = res.rows[0].id
372 getMatch(matchId.value) 394 getMatch(matchId.value)
373 getGroupListByCptId(matchId.value) 395 getGroupListByCptId()
374 }) 396 })
375 } 397 }
376 398
...@@ -394,9 +416,10 @@ function getMatch(id) { ...@@ -394,9 +416,10 @@ function getMatch(id) {
394 }) 416 })
395 } 417 }
396 418
397 function getGroupListByCptId(id) { 419 function getGroupListByCptId() {
398 match.getGroupListByCptId(id).then(res => { 420 match.getGroupListByCptId(matchId.value,queryGroupList.value).then(res => {
399 signDoneGroupList.value = res.data 421 signDoneGroupList.value = res.rows
422 signDoneGroupListToTal.value = res.total
400 }) 423 })
401 } 424 }
402 425
...@@ -552,7 +575,7 @@ function checkIsSign() { ...@@ -552,7 +575,7 @@ function checkIsSign() {
552 ).then(() => { 575 ).then(() => {
553 withDraw(res.data.orderId) 576 withDraw(res.data.orderId)
554 }) 577 })
555 // return Promise.reject('rejected message') 578 return Promise.reject('rejected message')
556 break 579 break
557 case '2': 580 case '2':
558 ElMessageBox.confirm( 581 ElMessageBox.confirm(
......
...@@ -335,9 +335,6 @@ import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"; ...@@ -335,9 +335,6 @@ import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
335 const {proxy} = getCurrentInstance() 335 const {proxy} = getCurrentInstance()
336 const route = useRoute() 336 const route = useRoute()
337 const router = useRouter() 337 const router = useRouter()
338 const matchInfo = ref({})
339 const approved = ref(true)
340 const tableData = ref([])
341 const payType = ref('2') 338 const payType = ref('2')
342 const orderId = ref(route.query.orderId) 339 const orderId = ref(route.query.orderId)
343 const matchId = ref() 340 const matchId = ref()
......
...@@ -174,7 +174,8 @@ const data = reactive({ ...@@ -174,7 +174,8 @@ const data = reactive({
174 // address: { required: true, message: 'required', trigger: 'blur' } 174 // address: { required: true, message: 'required', trigger: 'blur' }
175 }, 175 },
176 coachOrLeaderFlag: '', 176 coachOrLeaderFlag: '',
177 matchInfo:{} 177 matchInfo:{},
178 languageSource:''
178 }) 179 })
179 const { 180 const {
180 isNational,matchData, 181 isNational,matchData,
...@@ -186,7 +187,7 @@ const { ...@@ -186,7 +187,7 @@ const {
186 cptId, 187 cptId,
187 rules,rules_en, 188 rules,rules_en,
188 regionsList,countryList,matchInfo, 189 regionsList,countryList,matchInfo,
189 coachOrLeaderFlag, accept,typeOptions 190 coachOrLeaderFlag, accept,typeOptions,languageSource
190 } = toRefs(data) 191 } = toRefs(data)
191 const uploadUrl = ref('/upload/upLoadToFileServer') 192 const uploadUrl = ref('/upload/upLoadToFileServer')
192 193
...@@ -196,6 +197,7 @@ onMounted(() => { ...@@ -196,6 +197,7 @@ onMounted(() => {
196 getGroupInfo() 197 getGroupInfo()
197 signType.value = route.query.signType 198 signType.value = route.query.signType
198 isNational.value = route.query.isNational 199 isNational.value = route.query.isNational
200 languageSource.value = route.query.languageSource
199 201
200 getRegionsList() 202 getRegionsList()
201 getCountryList() 203 getCountryList()
...@@ -325,7 +327,8 @@ function goNext() { ...@@ -325,7 +327,8 @@ function goNext() {
325 query: { 327 query: {
326 matchId: cptId.value, 328 matchId: cptId.value,
327 groupId: groupId.value, 329 groupId: groupId.value,
328 isNational: isNational.value 330 isNational: isNational.value,
331 languageSource:languageSource.value
329 } 332 }
330 }) 333 })
331 } 334 }
......
...@@ -37,6 +37,9 @@ ...@@ -37,6 +37,9 @@
37 <el-form-item :label="language==0?'负责人姓名':'Contact Person'" prop="contactPerson"> 37 <el-form-item :label="language==0?'负责人姓名':'Contact Person'" prop="contactPerson">
38 <el-input v-model="form.contactPerson" :placeholder="language==0?'请输入联系人':''" /> 38 <el-input v-model="form.contactPerson" :placeholder="language==0?'请输入联系人':''" />
39 </el-form-item> 39 </el-form-item>
40 <el-form-item :label="language==0?'联系电话':'Contact Phone'" required prop="contactTelno">
41 <el-input v-model="form.contactTelno" type="phone" :placeholder="language==0?'请输入内容':''"/>
42 </el-form-item>
40 <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail"> 43 <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail">
41 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> 44 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
42 </el-form-item> 45 </el-form-item>
...@@ -148,13 +151,13 @@ const data = reactive({ ...@@ -148,13 +151,13 @@ const data = reactive({
148 regionsList: [], 151 regionsList: [],
149 countryList: [], 152 countryList: [],
150 participantsInfoArr: [], 153 participantsInfoArr: [],
151 rankList: [],
152 accept: '.doc, .pdf, .docx, .zip', 154 accept: '.doc, .pdf, .docx, .zip',
153 rules: { 155 rules: {
154 imgUrl: { required: true, message: '请上传', trigger: 'blur' }, 156 imgUrl: { required: true, message: '请上传', trigger: 'blur' },
155 name: { required: true, message: '请填写', trigger: 'blur' }, 157 name: { required: true, message: '请填写', trigger: 'blur' },
156 type: { required: true, message: '请选择', trigger: 'change' }, 158 type: { required: true, message: '请选择', trigger: 'change' },
157 contactPerson: { required: true, message: '请填写内容', trigger: 'blur' }, 159 contactPerson: { required: true, message: '请填写内容', trigger: 'blur' },
160 contactTelno: { required: true, message: '请填写内容', trigger: 'blur' },
158 contactEmail: { required: true, message: '请填写内容', trigger: 'blur' }, 161 contactEmail: { required: true, message: '请填写内容', trigger: 'blur' },
159 abreviations: { required: true, message: '请填写内容', trigger: 'blur' }, 162 abreviations: { required: true, message: '请填写内容', trigger: 'blur' },
160 address: { required: true, message: '请填写内容', trigger: 'blur' } 163 address: { required: true, message: '请填写内容', trigger: 'blur' }
...@@ -169,11 +172,11 @@ const data = reactive({ ...@@ -169,11 +172,11 @@ const data = reactive({
169 address: { required: true, message: 'required', trigger: 'blur' } 172 address: { required: true, message: 'required', trigger: 'blur' }
170 }, 173 },
171 coachOrLeaderFlag: '', 174 coachOrLeaderFlag: '',
175 languageSource: '',
172 matchInfo:{} 176 matchInfo:{}
173 }) 177 })
174 const { 178 const {
175 isRanks,matchData, 179 matchData,
176 rankList,
177 form, 180 form,
178 groupId, 181 groupId,
179 signType, 182 signType,
...@@ -181,7 +184,7 @@ const { ...@@ -181,7 +184,7 @@ const {
181 cptId, 184 cptId,
182 rules,rules_en, 185 rules,rules_en,
183 regionsList,countryList,matchInfo, 186 regionsList,countryList,matchInfo,
184 coachOrLeaderFlag, accept,typeOptions 187 coachOrLeaderFlag, accept,typeOptions,languageSource
185 } = toRefs(data) 188 } = toRefs(data)
186 const uploadUrl = ref('/upload/upLoadToFileServer') 189 const uploadUrl = ref('/upload/upLoadToFileServer')
187 190
...@@ -190,7 +193,7 @@ onMounted(() => { ...@@ -190,7 +193,7 @@ onMounted(() => {
190 // 获取团体信息 193 // 获取团体信息
191 getGroupInfo() 194 getGroupInfo()
192 signType.value = route.query.signType 195 signType.value = route.query.signType
193 196 languageSource.value = route.query.languageSource
194 getRegionsList() 197 getRegionsList()
195 getCountryList() 198 getCountryList()
196 match.getMatchById({ id: cptId.value }).then(res => { 199 match.getMatchById({ id: cptId.value }).then(res => {
...@@ -249,11 +252,6 @@ function getGroupInfo() { ...@@ -249,11 +252,6 @@ function getGroupInfo() {
249 }) 252 })
250 } 253 }
251 254
252 function getTeamList() {
253 return match.getMyTeamList(cptId.value, groupId.value).then(response => {
254 rankList.value = response.data
255 })
256 }
257 255
258 function goPrev() { 256 function goPrev() {
259 router.go(-1) 257 router.go(-1)
...@@ -315,7 +313,8 @@ function goNext() { ...@@ -315,7 +313,8 @@ function goNext() {
315 query: { 313 query: {
316 matchId: cptId.value, 314 matchId: cptId.value,
317 groupId: groupId.value, 315 groupId: groupId.value,
318 signType: signType.value 316 signType: signType.value,
317 languageSource:languageSource.value
319 } 318 }
320 }) 319 })
321 } 320 }
......
...@@ -330,7 +330,7 @@ function bigNext(){ ...@@ -330,7 +330,7 @@ function bigNext(){
330 ElMessage.warning(language.value == 0 ? '请选择性别' : 'Please select your gender') 330 ElMessage.warning(language.value == 0 ? '请选择性别' : 'Please select your gender')
331 return 331 return
332 } 332 }
333 if(user.utype=='3'){ 333 if(user&&user.utype=='3'){
334 let obj = { 334 let obj = {
335 card: form.value.card, 335 card: form.value.card,
336 userId: user.userId, 336 userId: user.userId,
......
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
93 </el-icon> 93 </el-icon>
94 <div v-if="language==0"> 94 <div v-if="language==0">
95 我已阅读并接受<a class="text-primary" @click.stop="showAgreeMent">《注册协议》</a> 95 我已阅读并接受<a class="text-primary" @click.stop="showAgreeMent">《注册协议》</a>
96 <a class="text-primary" @click.stop="showAgreeMent">《个人信息保护政策》</a> 96 <a class="text-primary" @click.stop="showPolicy">《个人信息保护政策》</a>
97 </div> 97 </div>
98 <div v-else style="white-space: nowrap"> 98 <div v-else style="white-space: nowrap">
99 I have read and agree to the User 99 I have read and agree to the User
......
...@@ -76,15 +76,15 @@ export default defineConfig(({ mode, command }) => { ...@@ -76,15 +76,15 @@ export default defineConfig(({ mode, command }) => {
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: 'https://dance.itechtop.cn/stage-api', 79 target: 'https://dance.itechtop.cn/stage-api',
80 target: 'http://192.168.1.118:8081/', 80 // target: 'http://192.168.1.118:8081/',
81 changeOrigin: true, 81 changeOrigin: true,
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://dance.itechtop.cn/stage-api', 86 // target: 'https://dance.itechtop.cn/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 }
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!