8621078b by 杨炀

no message

1 parent 8ede71b2
Showing 62 changed files with 538 additions and 762 deletions
...@@ -33,3 +33,4 @@ export function getExamRegionsList() { ...@@ -33,3 +33,4 @@ export function getExamRegionsList() {
33 method: 'get' 33 method: 'get'
34 }) 34 })
35 } 35 }
36
......
...@@ -555,6 +555,14 @@ export function getPayedOrderPdf(cptId, groupId) { ...@@ -555,6 +555,14 @@ export function getPayedOrderPdf(cptId, groupId) {
555 method: 'get' 555 method: 'get'
556 }) 556 })
557 } 557 }
558 export function checkNoRepeat(query) {
559 return request({
560 url: `/league/wdsf/checkNoRepeat`,
561 method: 'get',
562 params: query
563 })
564 }
565
558 //todo 566 //todo
559 export function bindWdsf(perId,card) { 567 export function bindWdsf(perId,card) {
560 return request({ 568 return request({
......
...@@ -140,3 +140,10 @@ export function getDropsorts() { ...@@ -140,3 +140,10 @@ export function getDropsorts() {
140 method: 'get' 140 method: 'get'
141 }) 141 })
142 } 142 }
143
144 export function getWeather() {
145 return request({
146 url: '/weather',
147 method: 'get'
148 })
149 }
......
...@@ -335,7 +335,7 @@ export const rankList = [ ...@@ -335,7 +335,7 @@ export const rankList = [
335 yin: '0', 335 yin: '0',
336 tong: '2' 336 tong: '2'
337 }, 337 },
338 {index: '7', code: 'cn', name: 'Yan Bangbang - Du Yujun', gj: '中国', en_gj: 'China', jin: '0', yin: '0', tong: '1'} 338 {index: '7', code: 'cn', name: 'Yan Bangbang - Du Yujun', gj: '中国', en_gj: 'CHN', jin: '0', yin: '0', tong: '1'}
339 ] 339 ]
340 export const cjList = [ 340 export const cjList = [
341 { 341 {
......
This diff could not be displayed because it is too large.
...@@ -1002,14 +1002,48 @@ img{display: block;} ...@@ -1002,14 +1002,48 @@ img{display: block;}
1002 &:hover{filter: brightness(1.1)} 1002 &:hover{filter: brightness(1.1)}
1003 1003
1004 } 1004 }
1005 1005 .fixed_gg {
1006 position: fixed;right:0;
1007 top: 25%;
1008 z-index: 10;
1009 .cclose.el-icon{font-size:0;color: #fff;z-index: 2;
1010 transition: font-size 0.2s;cursor: pointer;
1011 position: absolute;right: 0;}
1012 &:hover .el-icon{font-size: 26px;}
1013 img {
1014 width: 100%;
1015 }
1016 .bg-lineg{position: relative;border-radius: 15px;}
1017 .cover{position: absolute;width: 100%;z-index: 1;height: 100%;background: red;opacity: 0;top:0;}
1018 }
1019 .smallToday{display: flex;align-items: center;
1020 .type{margin-right: 20px;}
1021 h3{margin: 0 0 10px;}
1022 }
1023 .weatherbox{padding: 20px 0;
1024 .today{text-align: center;display: flex;justify-content: center;align-items: center;margin: 0 0 30px;
1025 .type{margin-left: 30px;}
1026 .wd{font-size: 50px;font-weight: bold;font-family: "DIN"}
1027 .wd_p{font-size: 14px;}
1028 .week{display: none}
1029 }
1030 .wlist{
1031 display: flex;justify-content: space-between;
1032 li{text-align: center;margin: 0 10px;
1033 .wd{font-size: 15px;font-weight: bold;margin: 10px 0;white-space: nowrap}
1034 .week{font-size: 14px;}
1035 .type{}
1036 }
1037 }
1038 }
1006 //赛事 1039 //赛事
1007 .ph-30{padding-top: 30px;padding-bottom: 30px;} 1040 .ph-30{padding-top: 30px;padding-bottom: 30px;}
1008 .panel{border-radius: 0;background: #FFFFFF;padding: 1px 0 0; 1041 .panel{border-radius: 0;background: #FFFFFF;padding: 1px 0 0;
1009 .panel-header{line-height: 50px;height: 50px;border-bottom: 1px solid #EEEEEE; 1042 .panel-header{line-height: 50px;height: 50px;border-bottom: 1px solid #EEEEEE;
1010 padding: 0 20px;position: relative; 1043 padding: 0 20px;position: relative;
1011 .fr{position: absolute;right: 20px;top: 0px;font-size: 14px;color: #666; 1044 .fr{position: absolute;right: 20px;top: 0px;font-size: 14px;}
1012 text-decoration: underline;} 1045 a.fr{color: #666;
1046 text-decoration: underline;}
1013 } 1047 }
1014 .panel-title{font-size: 16px;line-height: 50px;margin: 0; 1048 .panel-title{font-size: 16px;line-height: 50px;margin: 0;
1015 color: var(--el-color-primary)} 1049 color: var(--el-color-primary)}
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
48 </el-col> 48 </el-col>
49 <el-col :lg="6" :md="12" :xs="24"> 49 <el-col :lg="6" :md="12" :xs="24">
50 <ul style="text-align: right"> 50 <ul style="text-align: right">
51 <li>Telephone:15606190026</li> 51 <li>Telephone:086-15606190026</li>
52 <li>E-mail:info@wdsfwuxicenter.com</li> 52 <li>E-mail:info@wdsfwuxicenter.com</li>
53 <li> 53 <li>
54 54
......
...@@ -103,6 +103,7 @@ ...@@ -103,6 +103,7 @@
103 <el-menu-item index="/about/wuDao">舞蹈节</el-menu-item> 103 <el-menu-item index="/about/wuDao">舞蹈节</el-menu-item>
104 <el-menu-item index="/about/culture">地方文化</el-menu-item> 104 <el-menu-item index="/about/culture">地方文化</el-menu-item>
105 </el-sub-menu> 105 </el-sub-menu>
106 <el-menu-item v-if="isLogin" index="/center/myInfo">个人中心</el-menu-item>
106 </el-menu> 107 </el-menu>
107 <el-menu class="weiMenu" 108 <el-menu class="weiMenu"
108 v-if="language==1" 109 v-if="language==1"
...@@ -337,9 +338,7 @@ function getCode() { ...@@ -337,9 +338,7 @@ function getCode() {
337 .home-menu .el-menu--horizontal > .el-menu-item{font-size: 15px} 338 .home-menu .el-menu--horizontal > .el-menu-item{font-size: 15px}
338 } 339 }
339 @media (max-width: 1340px) { 340 @media (max-width: 1340px) {
340 .loginBtn { 341
341 display: none;
342 }
343 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0; } 342 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0; }
344 } 343 }
345 @media (max-width: 1250px) { 344 @media (max-width: 1250px) {
...@@ -354,7 +353,9 @@ function getCode() { ...@@ -354,7 +353,9 @@ function getCode() {
354 display: none; 353 display: none;
355 } 354 }
356 .ropenbtn{display: block} 355 .ropenbtn{display: block}
357 356 .loginBtn {
357 display: none;
358 }
358 } 359 }
359 </style> 360 </style>
360 361
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
44 </el-row> 44 </el-row>
45 </el-col> 45 </el-col>
46 </el-row> 46 </el-row>
47 <el-alert v-if="n.reason" :title="language==0?'驳回理由:':'Reason:'+n.reason" type="error" show-icon :closable="false"/> 47 <el-alert v-if="n.reason" :title="language==0?'驳回理由:'+n.reason :'Reason:'+n.reason" type="error" show-icon :closable="false"/>
48 </div> 48 </div>
49 49
50 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="billList?.length == 0"/> 50 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="billList?.length == 0"/>
......
1 <template>
2 <div :style="`width: ${width}px`" class="mauto">
3 <img v-if="type == '晴'" src="@/assets/weather/01_sunny_color_w64.png"/>
4 <img v-if="type == '多云'" src="@/assets/weather/04_sun_cloudy_color_w64.png"/>
5 <img v-if="type == '阴'" src="@/assets/weather/03_cloud_color_w64.png"/>
6 <img v-if="type == '小雨'" src="@/assets/weather/09_light_rain_color_w64.png"/>
7 <img v-if="type == '中雨'" src="@/assets/weather/10_moderate_rain_color_w64.png"/>
8 <img v-if="type == '大雨'" src="@/assets/weather/12_rainstorm_color_w64.png"/>
9 <img v-if="type == '暴雨'" src="@/assets/weather/13_heavy_rainstorm_color_w64.png"/>
10 <img v-if="type.indexOf('雷') > -1" src="@/assets/weather/14_thunderstorm_color_w64.png"/>
11 <img v-if="type.indexOf('雾') > -1" src="@/assets/weather/15_fog_color_w64.png"/>
12 <img v-if="type.indexOf('雪') > -1" src="@/assets/weather/22_snow_color_w64.png"/>
13 <img v-if="type.indexOf('风') > -1" src="@/assets/weather/23_windy_color_w64.png"/>
14 </div>
15 </template>
16
17 <script setup>
18 const props = defineProps({
19 type: {
20 type: String,
21 default: '晴',
22 required: false
23 },
24 width: {
25 type: Number,
26 default: 32,
27 required: false
28 }
29 })
30 </script>
31
32 <style scoped lang="scss">
33 img{width: 100%}
34 </style>
...@@ -105,23 +105,12 @@ ...@@ -105,23 +105,12 @@
105 </template> 105 </template>
106 </el-calendar> 106 </el-calendar>
107 <div class="calendarList"> 107 <div class="calendarList">
108 <ul> 108 <!-- <ul>-->
109 <li> 109 <!-- <li v-for="n in 6">-->
110 <label>08:00~10:30</label> 无锡公开赛 110 <!-- <label>08:00~10:30</label> 无锡公开赛-->
111 </li> 111 <!-- </li>-->
112 <li> 112 <!-- </ul>-->
113 <label>11:00</label> 2024年WDSF公开赛 A组 113 <el-empty style="--el-empty-padding:0;--el-empty-description-margin-top:0" :image="`/img/order_no.png`" :image-size="200"/>
114 </li>
115 <li>
116 <label>12:00</label> 2024年WDSF公开赛 B组
117 </li>
118 <li>
119 <label>13:00</label> 2024年WDSF公开赛 C组
120 </li>
121 <li>
122 <label>15:00</label> 2024年WDSF公开赛 D组
123 </li>
124 </ul>
125 114
126 </div> 115 </div>
127 </el-card> 116 </el-card>
...@@ -366,17 +355,65 @@ ...@@ -366,17 +355,65 @@
366 355
367 <div v-if="showgg" class="fixed_gg"> 356 <div v-if="showgg" class="fixed_gg">
368 <!--天气--> 357 <!--天气-->
369 <el-icon @click="showgg=false"> 358 <el-icon class="cclose" @click.stop="showgg=false"><circle-close /></el-icon>
370 <circle-close/> 359 <!-- <img src="@/assets/dance/weather_en.png">-->
371 </el-icon> 360 <div class="bg-lineg pd10">
372 <img src="@/assets/dance/weather.png"> 361 <div class="smallToday" @click="popWeather">
362 <div>
363 <div class="type">
364 <weather-icon :type="weatherObj.forecast[0]?.type" :width="50"/>
365 </div>
366 </div>
367 <div>
368 <h3>无锡</h3>
369 <div class="wd_p">{{weatherObj.forecast[0]?.low.slice(2)}}~{{weatherObj.forecast[0]?.high.slice(2)}}</div>
370 </div>
371 </div>
372
373 <!-- <iframe width="150" scrolling="no" height="60" frameborder="0" allowtransparency="true" src="https://i.tianqi.com?c=code&id=84&color=%23FFFFFF&bgc=%23&icon=1&py=binhuqu&site=17"></iframe>-->
374 </div>
375 <el-dialog v-model="weatherdialog" width="540" :close-on-click-modal="true" :show-close="false"
376 style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px;
377 --el-dialog-bg-color:transparent;overflow: hidden;">
378 <div class="bg-lineg pd20">
379 <!-- <iframe width="500" scrolling="no" height="270" frameborder="0" allowtransparency="true" src="https://i.tianqi.com?c=code&id=95&color=%23FFFFFF&icon=4&py=binhuqu&site=15"></iframe>-->
380 <div class="weatherbox">
381 <div class="today">
382 <div>
383 <div class="wd">{{weatherObj.wendu}}°c</div>
384 <div class="wd_p">{{weatherObj.forecast[0]?.low.slice(2)}}~{{weatherObj.forecast[0]?.high.slice(2)}}</div>
385 <div class="week">{{weatherObj.forecast[0]?.week}}</div>
386 </div>
387 <div>
388 <div class="type">
389 <weather-icon :type="weatherObj.forecast[0].type" :width="64"/>
390 <!-- <div class="mt10">{{weatherObj.forecast[0].type}}</div>-->
391 </div>
392 </div>
393 </div>
394 <ul class="wlist">
395 <li v-for="n in weatherObj.forecast.slice(1,6)">
396 <div class="type">
397 <weather-icon :type="n.type" :width="32"/>
398 </div>
399 <div class="wd">{{n.low.slice(2,-1)}}/{{n.high.slice(2)}}</div>
400 <!-- <div class="date">{{n.ymd}}</div>-->
401 <div class="week">
402 {{n.week}}
403 </div>
404 </li>
405 </ul>
406 </div>
407
408 </div>
409 </el-dialog>
373 </div> 410 </div>
374 </div> 411 </div>
375 </template> 412 </template>
376 <script setup> 413 <script setup>
377 import {ref, nextTick, onMounted, watch} from 'vue' 414 import {ref, nextTick, onMounted, watch} from 'vue'
378 import {getCurrentInstance} from '@vue/runtime-core' 415 import {getCurrentInstance} from '@vue/runtime-core'
379 import {getHomePage, getNewsListById, getNewsList} from '@/apiPc/webSite' 416 import {getHomePage, getNewsListById, getNewsList, getWeather} from '@/apiPc/webSite'
380 import {useRouter} from 'vue-router' 417 import {useRouter} from 'vue-router'
381 import {rankList} from '@/assets/js/data' 418 import {rankList} from '@/assets/js/data'
382 import _ from 'lodash' 419 import _ from 'lodash'
...@@ -386,7 +423,7 @@ import {Autoplay, Navigation} from 'swiper' ...@@ -386,7 +423,7 @@ import {Autoplay, Navigation} from 'swiper'
386 import 'swiper/css' 423 import 'swiper/css'
387 import {dayjs} from 'element-plus' 424 import {dayjs} from 'element-plus'
388 import * as match from "@/apiPc/match"; 425 import * as match from "@/apiPc/match";
389 426 import WeatherIcon from '@/viewsPc/components/weatherIcon'
390 const modules = [Autoplay, Navigation] 427 const modules = [Autoplay, Navigation]
391 const navigationPic = ref({ 428 const navigationPic = ref({
392 nextEl: '.picnext', 429 nextEl: '.picnext',
...@@ -399,6 +436,9 @@ const isPlay = ref(false) ...@@ -399,6 +436,9 @@ const isPlay = ref(false)
399 const canPrev = ref(false) 436 const canPrev = ref(false)
400 const canNext = ref(false) 437 const canNext = ref(false)
401 const activeRankName = ref(0) 438 const activeRankName = ref(0)
439 const weatherObj = ref({
440 forecast:[]
441 })
402 const time = ref(0) 442 const time = ref(0)
403 const personList = ref([ 443 const personList = ref([
404 { name: 'Wolfgang Eliasch', pp: '拉丁舞裁判长 奥地利', src: '/img/1.png' }, 444 { name: 'Wolfgang Eliasch', pp: '拉丁舞裁判长 奥地利', src: '/img/1.png' },
...@@ -421,6 +461,7 @@ const livelist = ref([]) ...@@ -421,6 +461,7 @@ const livelist = ref([])
421 const matchData = ref({}) 461 const matchData = ref({})
422 const maList = ref([]) 462 const maList = ref([])
423 const loading = ref(false) 463 const loading = ref(false)
464 const weatherdialog = ref(false)
424 const picList = ref([]) 465 const picList = ref([])
425 const calendarValue = ref(dayjs('2024-07-22').toDate()) 466 const calendarValue = ref(dayjs('2024-07-22').toDate())
426 const calendarRange = ref([dayjs('2024-07-21').toDate(), dayjs('2024-07-27').toDate()]) 467 const calendarRange = ref([dayjs('2024-07-21').toDate(), dayjs('2024-07-27').toDate()])
...@@ -472,6 +513,11 @@ const init = () => { ...@@ -472,6 +513,11 @@ const init = () => {
472 } 513 }
473 matchData.value = maList.value[0] 514 matchData.value = maList.value[0]
474 }) 515 })
516
517 getWeather().then(res=>{
518 weatherObj.value = JSON.parse(res.data).data
519 console.log(weatherObj.value)
520 })
475 } 521 }
476 const carouselChange = (e) => { 522 const carouselChange = (e) => {
477 console.log(e) 523 console.log(e)
...@@ -508,6 +554,9 @@ const goMatch = (n) => { ...@@ -508,6 +554,9 @@ const goMatch = (n) => {
508 path: `/match/list/${n.id}` 554 path: `/match/list/${n.id}`
509 }) 555 })
510 } 556 }
557 const popWeather = () => {
558 weatherdialog.value = true
559 }
511 </script> 560 </script>
512 561
513 <style scoped lang="scss"> 562 <style scoped lang="scss">
...@@ -816,33 +865,6 @@ const goMatch = (n) => { ...@@ -816,33 +865,6 @@ const goMatch = (n) => {
816 position: relative; 865 position: relative;
817 height: 400px; 866 height: 400px;
818 } 867 }
819
820
821 .fixed_gg {
822 position: fixed;
823 right: 0;
824 top: 25%;
825 z-index: 10;
826 width: 200px;
827
828 .el-icon {
829 font-size: 0;
830 color: #fff;
831 transition: font-size 0.2s;
832 cursor: pointer;
833 position: absolute;
834 right: 0;
835 }
836
837 &:hover .el-icon {
838 font-size: 26px;
839 }
840
841 img {
842 width: 100%;
843 }
844 }
845
846 .ggbond { 868 .ggbond {
847 height: 230px; 869 height: 230px;
848 position: relative; 870 position: relative;
......
...@@ -108,24 +108,12 @@ ...@@ -108,24 +108,12 @@
108 </template> 108 </template>
109 </el-calendar> 109 </el-calendar>
110 <div class="calendarList"> 110 <div class="calendarList">
111 <ul> 111 <!-- <ul>-->
112 <li class="esp"> 112 <!-- <li class="esp" v-for="n in 6">-->
113 <label>08:00~10:30</label> Wuxi Open 113 <!-- <label>08:00~10:30</label> 2024 WDSF Open Group B-->
114 </li> 114 <!-- </li>-->
115 <li class="esp"> 115 <!-- </ul>-->
116 <label>11:00</label> 2024 WDSF Open Group A 116 <el-empty style="--el-empty-padding:0;--el-empty-description-margin-top:0" :image="`/img/order_no.png`" :image-size="200"/>
117 </li>
118 <li class="esp">
119 <label>12:00</label> 2024 WDSF Open Group B
120 </li>
121 <li class="esp">
122 <label>13:00</label> 2024 WDSF Open Group C
123 </li>
124 <li class="esp">
125 <label>15:00</label> 2024 WDSF Open Group D
126 </li>
127 </ul>
128
129 </div> 117 </div>
130 </el-card> 118 </el-card>
131 </el-col> 119 </el-col>
...@@ -369,16 +357,62 @@ ...@@ -369,16 +357,62 @@
369 357
370 <div v-if="showgg" class="fixed_gg"> 358 <div v-if="showgg" class="fixed_gg">
371 <!--天气--> 359 <!--天气-->
372 <el-icon @click="showgg=false"><circle-close /></el-icon> 360 <el-icon class="cclose" @click.stop="showgg=false"><circle-close /></el-icon>
373 <img src="@/assets/dance/weather_en.png"> 361 <div class="bg-lineg pd20">
362 <div class="smallToday" @click="popWeather">
363 <div>
364 <div class="type">
365 <weather-icon :type="weatherObj.forecast[0]?.type" :width="50"/>
366 </div>
367 </div>
368 <div>
369 <h3>WUXI</h3>
370 <div class="wd_p">{{weatherObj.forecast[0]?.low.slice(2)}}~{{weatherObj.forecast[0]?.high.slice(2)}}</div>
371 </div>
372 </div>
373 </div>
374 <el-dialog v-model="weatherdialog" width="540" :close-on-click-modal="true"
375 style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px;
376 --el-dialog-bg-color:transparent;overflow: hidden;">
377 <div class="bg-lineg pd20">
378 <!-- <iframe width="500" scrolling="no" height="270" frameborder="0" allowtransparency="true" src="https://i.tianqi.com?c=code&id=95&color=%23FFFFFF&icon=4&py=binhuqu&site=15"></iframe>-->
379 <div class="weatherbox">
380 <div class="today">
381 <div>
382 <div class="wd">{{weatherObj.wendu}}°c</div>
383 <div class="wd_p">{{weatherObj.forecast[0]?.low.slice(2)}}~{{weatherObj.forecast[0]?.high.slice(2)}}</div>
384 <div class="week">{{weatherObj.forecast[0]?.week}}</div>
385 </div>
386 <div>
387 <div class="type">
388 <weather-icon :type="weatherObj.forecast[0].type" :width="64"/>
389 </div>
390 </div>
391 </div>
392 <ul class="wlist">
393 <li v-for="n in weatherObj.forecast.slice(1,6)">
394 <div class="type">
395 <weather-icon :type="n.type" :width="32"/>
396 </div>
397 <div class="wd">{{n.low.slice(2,-1)}}/{{n.high.slice(2)}}</div>
398 <!-- <div class="date">{{n.ymd}}</div>-->
399 <div class="week">
400 {{n.week=='星期一'?'Mon':n.week=='星期二'?'Tue':n.week=='星期三'?'Wed':n.week=='星期四'?'Thu':n.week=='星期五'?'Fri':n.week=='星期六'?'Sat':n.week=='星期日'?'Sun':''}}
401 </div>
402 </li>
403 </ul>
404 </div>
405 </div>
406 </el-dialog>
374 </div> 407 </div>
375 </div> 408 </div>
376 </template> 409 </template>
377 <script setup> 410 <script setup>
378 import { ref, nextTick, onMounted, watch } from 'vue' 411 import { ref, nextTick, onMounted, watch } from 'vue'
379 import { getCurrentInstance } from '@vue/runtime-core' 412 import { getCurrentInstance } from '@vue/runtime-core'
380 import { getNewsListById, getNewsList } from '@/apiPc/webSite' 413 import { getNewsListById, getNewsList,getWeather} from '@/apiPc/webSite'
381 import { useRouter } from 'vue-router' 414 import { useRouter } from 'vue-router'
415 import WeatherIcon from '@/viewsPc/components/weatherIcon'
382 import _ from 'lodash' 416 import _ from 'lodash'
383 import { Swiper, SwiperSlide } from 'swiper/vue' 417 import { Swiper, SwiperSlide } from 'swiper/vue'
384 import { Autoplay, Navigation } from 'swiper' 418 import { Autoplay, Navigation } from 'swiper'
...@@ -394,6 +428,10 @@ const navigationPic = ref({ ...@@ -394,6 +428,10 @@ const navigationPic = ref({
394 const router = useRouter() 428 const router = useRouter()
395 const { proxy } = getCurrentInstance() 429 const { proxy } = getCurrentInstance()
396 const time = ref(0) 430 const time = ref(0)
431 const weatherObj = ref({
432 forecast:[]
433 })
434 const weatherdialog = ref(false)
397 const personList = ref([ 435 const personList = ref([
398 { name: 'Wolfgang Eliasch', pp: 'Chairperson for Latin AUT', src: '/img/1.png' }, 436 { name: 'Wolfgang Eliasch', pp: 'Chairperson for Latin AUT', src: '/img/1.png' },
399 { name: 'Nenad Jeftic', pp: 'Chairperson for Standard SRB', src: '/img/2.png' }, 437 { name: 'Nenad Jeftic', pp: 'Chairperson for Standard SRB', src: '/img/2.png' },
...@@ -456,6 +494,10 @@ const init = () => { ...@@ -456,6 +494,10 @@ const init = () => {
456 } 494 }
457 matchData.value = maList.value[0] 495 matchData.value = maList.value[0]
458 }) 496 })
497 getWeather().then(res=>{
498 weatherObj.value = JSON.parse(res.data).data
499 console.log(weatherObj.value)
500 })
459 } 501 }
460 502
461 503
...@@ -490,6 +532,10 @@ const goMatch = (n) => { ...@@ -490,6 +532,10 @@ const goMatch = (n) => {
490 path: `/match/list/${n.id}` 532 path: `/match/list/${n.id}`
491 }) 533 })
492 } 534 }
535 const popWeather = () => {
536 weatherdialog.value = true
537 }
538
493 </script> 539 </script>
494 540
495 <style scoped lang="scss"> 541 <style scoped lang="scss">
...@@ -665,20 +711,6 @@ const goMatch = (n) => { ...@@ -665,20 +711,6 @@ const goMatch = (n) => {
665 } 711 }
666 712
667 713
668 .fixed_gg {
669 position: fixed;right: 0;
670 top: 25%;
671 z-index: 10;
672 width: 200px;
673 .el-icon{font-size: 0;color: #fff;
674 transition: font-size 0.2s;cursor: pointer;
675 position: absolute;right: 0;}
676 &:hover .el-icon{font-size: 26px;}
677 img {
678 width: 100%;
679 }
680 }
681
682 .ggbond { 714 .ggbond {
683 height: 230px; 715 height: 230px;
684 position: relative; 716 position: relative;
......
...@@ -196,7 +196,6 @@ import dialogEditWdsf from './components/addWdsf' ...@@ -196,7 +196,6 @@ import dialogEditWdsf from './components/addWdsf'
196 import dialogEditAccompany from './components/addAccompany' 196 import dialogEditAccompany from './components/addAccompany'
197 import dialogAllSportsmanList from './components/allSportsmanList' 197 import dialogAllSportsmanList from './components/allSportsmanList'
198 import dialogExtraForm from './components/extraForm' 198 import dialogExtraForm from './components/extraForm'
199 import dialogMates from './components/dialogMates'
200 import {Search, Switch} from "@element-plus/icons-vue"; 199 import {Search, Switch} from "@element-plus/icons-vue";
201 200
202 const {proxy} = getCurrentInstance() 201 const {proxy} = getCurrentInstance()
......
...@@ -7,67 +7,53 @@ ...@@ -7,67 +7,53 @@
7 7
8 <el-card :body-style="{'padding-top': '0'}"> 8 <el-card :body-style="{'padding-top': '0'}">
9 <el-row class="mt20" :gutter="20"> 9 <el-row class="mt20" :gutter="20">
10 <el-col :lg="8"> 10 <el-col :lg="24">
11 <div class="panel border"> 11 <div class="panel border">
12 <div class="panel-header "> 12 <div class="panel-header ">
13 <h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3> 13 <h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3>
14 <h3 class="panel-title" v-else>Select list of participating athletes</h3> 14 <h3 class="panel-title" v-else>Select list of participating athletes</h3>
15 <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a> 15 <!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>-->
16 <el-button type="primary" plain class="fr" @click="chooseSportman">选手管理</el-button>
16 </div> 17 </div>
17 <div class="panel-body" style="padding: 10px"> 18 <div class="panel-body" style="padding: 10px">
18 <div style="margin: 0 4px 10px"> 19 <div style="margin: 0 4px 10px;display: flex">
19 <el-input size="small" v-model="athletesQuery.name" :prefix-icon="Search" 20 <el-select multiple v-model="choosedchoosed" collapse-tags-tooltip filterable
20 @change="queryAthletes" 21 @change="changechoosed">
21 clearable/> 22 <el-option v-for="c in athletesList" :key="c.id" :label="c.xing + c.ming" :value="c.id">
22 </div> 23 <div class="flexOption">
23 <div class="noPicChooseForm" id="chooseArr"> 24 {{ c.xing }}{{ c.ming }}
24 <el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
25 <el-button id="addRef" plain @click="chooseSportman">+{{ language == 0 ? '选择' : 'add' }}</el-button>
26 <el-checkbox v-for="c in choosedListBak" :value="c.id" border>
27 <p class="name">{{ c.realName }}
28 <!-- ({{ c.sexStr }})-->
29 <img v-if="c.sex=='0'" src="@/assets/img/female.png"/>
30 <img v-if="c.sex=='1'" src="@/assets/img/male.png"/>
31 </p>
32 </el-checkbox>
33 </el-checkbox-group>
34 </div>
35 </div>
36 </div>
37 </el-col>
38 <el-col :lg="8">
39 <div class="panel border">
40 <div class="panel-header ">
41 <h3 class="panel-title" v-if="language==0">选择一个参赛组合</h3>
42 <h3 class="panel-title" v-else>Select a Participating team</h3>
43 <a class="fr" @click="emptyChangechoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>
44 </div>
45 <div class="panel-body" style="padding: 10px">
46 <div class="mb20">
47 <el-input size="small" v-model="zuQuery.name" :prefix-icon="Search"
48 @change="queryTeam" clearable/>
49 </div>
50 <div class="chooseForm">
51 <el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
52 <!-- v-show="choosedchoosed.indexOf(c.id) !== -1"-->
53 <el-checkbox v-for="c in choosed2Listbak" :value="c.id" checked>
54 <el-avatar fit="cover" v-if="c.picUrl" :size="60" :src="fillImgUrl(c.picUrl)"/>
55 <el-avatar fit="cover" v-else-if="c.sex == 0" :size="60" src="/img/head1.png"/>
56 <el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="/img/head0.png"/>
57 <p class="name">{{ c.realName }}
58 <img v-if="c.sex=='0'" src="@/assets/img/female.png"/> 25 <img v-if="c.sex=='0'" src="@/assets/img/female.png"/>
59 <img v-if="c.sex=='1'" src="@/assets/img/male.png"/> 26 <img v-if="c.sex=='1'" src="@/assets/img/male.png"/>
60 <!-- <el-icon @click.stop="editPerson(c.id)">--> 27 <!-- ({{ c.sexStr }})-->
61 <!-- <Edit/>--> 28 -{{ c.age }}
62 <!-- </el-icon>--> 29 </div>
63 </p> 30 </el-option>
64 </el-checkbox> 31 <template #tag>
65 </el-checkbox-group> 32 <el-tag v-for="v in choosed2List" :key="v.value" type="primary">
33 {{ v.xing + v.ming }}
34 </el-tag>
35 </template>
36 </el-select>
37 <el-button type="primary" @click="emptychoosedchoosed">{{
38 language == 0 ? '重选' : 'Re-select'
39 }}
40 </el-button>
66 </div> 41 </div>
42 <!-- <div class="noPicChooseForm" id="chooseArr">-->
43 <!-- <el-checkbox-group v-model="choosedchoosed" @change="changechoosed">-->
44 <!-- <el-checkbox v-for="c in choosedListBak" :value="c.id" border>-->
45 <!-- <p class="name">{{ c.xing }}{{c.ming}}-->
46 <!-- &lt;!&ndash; ({{ c.sexStr }})&ndash;&gt;-->
47 <!-- <img v-if="c.sex=='0'" src="@/assets/img/female.png"/>-->
48 <!-- <img v-if="c.sex=='1'" src="@/assets/img/male.png"/>-->
49 <!-- </p>-->
50 <!-- </el-checkbox>-->
51 <!-- </el-checkbox-group>-->
52 <!-- </div>-->
67 </div> 53 </div>
68 </div> 54 </div>
69 </el-col> 55 </el-col>
70 <el-col :lg="8"> 56 <el-col :lg="24">
71 <div class="panel border"> 57 <div class="panel border">
72 <div class="panel-header "> 58 <div class="panel-header ">
73 <h3 class="panel-title" v-if="language==0">可参与报名的项目</h3> 59 <h3 class="panel-title" v-if="language==0">可参与报名的项目</h3>
...@@ -78,7 +64,7 @@ ...@@ -78,7 +64,7 @@
78 clearable/> 64 clearable/>
79 </div> 65 </div>
80 </div> 66 </div>
81 <div v-loading="loadingProject" id="projectbox" style="height: 60vh;overflow: auto;"> 67 <div v-loading="loadingProject" id="projectbox" style="height: 50vh;overflow: auto;">
82 <el-checkbox-group v-model="projectIds" @change="changeProject"> 68 <el-checkbox-group v-model="projectIds" @change="changeProject">
83 <el-checkbox class="flexBetweenBox" v-for="c in projectList" :value="c.id" :key="c.id"> 69 <el-checkbox class="flexBetweenBox" v-for="c in projectList" :value="c.id" :key="c.id">
84 <div class="flexBetween w100"> 70 <div class="flexBetween w100">
...@@ -100,19 +86,19 @@ ...@@ -100,19 +86,19 @@
100 <el-col :span="24"> 86 <el-col :span="24">
101 <div class="text-center"> 87 <div class="text-center">
102 <el-button type="primary" class="btn-lineG w200px" id="signUpBtn" 88 <el-button type="primary" class="btn-lineG w200px" id="signUpBtn"
103 :disabled="projectIds.length==0||choosedchoosed.length==0" round @click="signUp"> 89 :disabled="projectIds.length==0||choosedchoosed.length==0" round @click="signUp">
104 {{ language == 0 ? '确定' : 'Confirm' }} 90 {{ language == 0 ? '确定' : 'Confirm' }}
105 </el-button> 91 </el-button>
106 </div> 92 </div>
107 </el-col> 93 </el-col>
108 </el-row> 94 </el-row>
109 </el-card> 95 </el-card>
96 <!-- <el-button type="success" @click="importSportman">批量导入人员</el-button>-->
97 <!-- <el-button type="success" @click="addCoach">新增运动员</el-button>-->
110 98
111 <el-card class="mt20" :body-style="{'padding': '0'}"> 99 <el-card class="mt20" :body-style="{'padding': '0'}">
112 <coach-info-row :match-id="matchId" :group-id="groupId" :language="language"/> 100 <coach-info-row :match-id="matchId" :group-id="groupId" :language="language"/>
113 <div class="m20"> 101 <div class="m20">
114 <!-- <el-button type="success" @click="importSportman">批量导入人员</el-button>-->
115 <!-- <el-button type="success" @click="addCoach">新增运动员</el-button>-->
116 <div class="ttbb"> 102 <div class="ttbb">
117 <div :class="tableType==1 ? 'active' : ''" @click="switchTabletype"> 103 <div :class="tableType==1 ? 'active' : ''" @click="switchTabletype">
118 {{ language == 0 ? '按组别查看报项' : 'View Entries by Group' }} 104 {{ language == 0 ? '按组别查看报项' : 'View Entries by Group' }}
...@@ -130,9 +116,9 @@ ...@@ -130,9 +116,9 @@
130 <!-- </el-button>--> 116 <!-- </el-button>-->
131 <!-- </div>--> 117 <!-- </div>-->
132 <sign-info-table v-if="tableType==0" :match-id="matchId" 118 <sign-info-table v-if="tableType==0" :match-id="matchId"
133 :extraform="extraform" :list="signInfoList" 119 :extraform="extraform" :list="signInfoList"
134 @editExtra="goPersonInfo"/> 120 @editExtra="goPersonInfo"/>
135 <zu-table v-else :list="zuTableList" @delete="removeThis"/> 121 <zu-table v-else :list="zuTableList" @delete="removeThis"/>
136 <div class="text-center mt20"> 122 <div class="text-center mt20">
137 <el-button type="primary" class="w200px" plain round @click="goPrev()"> 123 <el-button type="primary" class="w200px" plain round @click="goPrev()">
138 {{ language == 0 ? "上一步" : 'Go back' }} 124 {{ language == 0 ? "上一步" : 'Go back' }}
...@@ -158,7 +144,7 @@ ...@@ -158,7 +144,7 @@
158 144
159 </el-dialog> 145 </el-dialog>
160 <dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/> 146 <dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/>
161 <dialogWdsf ref="popWdsf" @submitForm="getSignInfoList"/> 147 <dialogWdsf ref="popWdsf" @submitForm="getProjectList" @cancel="removeCurproject"/>
162 <el-tour v-model="openTour" :current="tourCurrent"> 148 <el-tour v-model="openTour" :current="tourCurrent">
163 <el-tour-step target="#addRef" title="第一步" description="点击选择运动员" :next-button-props="nextButtonProps"/> 149 <el-tour-step target="#addRef" title="第一步" description="点击选择运动员" :next-button-props="nextButtonProps"/>
164 <el-tour-step v-if="choosedList.length>0" target="#chooseArr" title="第二步" description="勾选报项运动员"/> 150 <el-tour-step v-if="choosedList.length>0" target="#chooseArr" title="第二步" description="勾选报项运动员"/>
...@@ -178,6 +164,7 @@ import DialogImport from './components/import' ...@@ -178,6 +164,7 @@ import DialogImport from './components/import'
178 import DialogExtraForm from './components/extraForm' 164 import DialogExtraForm from './components/extraForm'
179 import DialogWdsf from './components/wdsfForm' 165 import DialogWdsf from './components/wdsfForm'
180 import {Search, Switch} from "@element-plus/icons-vue"; 166 import {Search, Switch} from "@element-plus/icons-vue";
167
181 const {proxy} = getCurrentInstance() 168 const {proxy} = getCurrentInstance()
182 const router = useRouter() 169 const router = useRouter()
183 const route = useRoute() 170 const route = useRoute()
...@@ -190,14 +177,16 @@ import SignInfoTable from "@/viewsPc/match/components/signInfo-table" ...@@ -190,14 +177,16 @@ import SignInfoTable from "@/viewsPc/match/components/signInfo-table"
190 import ZuTable from '@/viewsPc/match/components/zu-table' 177 import ZuTable from '@/viewsPc/match/components/zu-table'
191 import {signgetSignInfoConflict} from "@/apiPc/match"; 178 import {signgetSignInfoConflict} from "@/apiPc/match";
192 import {useStorage} from "@vueuse/core/index"; 179 import {useStorage} from "@vueuse/core/index";
193 const language= useStorage('language',0) 180
181 const language = useStorage('language', 0)
194 const data = reactive({ 182 const data = reactive({
195 coachForm: {}, activeStep: 2, 183 coachForm: {}, activeStep: 2,
196 tourCurrent:0, 184 tourCurrent: 0,
197 tableData: [], 185 tableData: [],
198 signInfoList: [], 186 signInfoList: [],
199 zuTableList: [], 187 zuTableList: [],
200 choosedList: [], 188 choosedList: [],
189 athletesList: [],
201 choosedListBak: [], 190 choosedListBak: [],
202 athletesQuery: { 191 athletesQuery: {
203 name: '' 192 name: ''
...@@ -223,12 +212,36 @@ const data = reactive({ ...@@ -223,12 +212,36 @@ const data = reactive({
223 choosed2List: [], 212 choosed2List: [],
224 choosed2Listbak: [], 213 choosed2Listbak: [],
225 projectQuery: {}, tableType: 1, 214 projectQuery: {}, tableType: 1,
226 openTour:false 215 currProjectId: '',
216 openTour: false
227 }) 217 })
228 const { 218 const {
229 activeTeam, names, tableData, signInfoList, zuTableList, choosedList,choosedListBak, 219 activeTeam,
230 extraform, groupId, signType, coachOrLeaderFlag, showResult, noPhotoCanSign, projectIds, choosedchoosed, activeStep, projectList, choosed2List,choosed2Listbak, loadingProject, 220 names,
231 projectQuery, tableType, athletesQuery, zuQuery,openTour,tourCurrent 221 tableData,
222 signInfoList,
223 zuTableList,
224 choosedList,
225 choosedListBak,
226 athletesList,
227 extraform,
228 groupId,
229 signType,
230 coachOrLeaderFlag,
231 showResult,
232 noPhotoCanSign,
233 projectIds,
234 choosedchoosed,
235 activeStep,
236 projectList,
237 choosed2List,
238 choosed2Listbak,
239 loadingProject,
240 projectQuery,
241 tableType,
242 zuQuery,
243 openTour, currProjectId,
244 tourCurrent
232 } = toRefs(data) 245 } = toRefs(data)
233 const nextButtonProps = ref({}) 246 const nextButtonProps = ref({})
234 const matchId = ref(route.query.matchId) 247 const matchId = ref(route.query.matchId)
...@@ -238,11 +251,19 @@ onMounted(() => { ...@@ -238,11 +251,19 @@ onMounted(() => {
238 getSignInfoList() 251 getSignInfoList()
239 getMatch(matchId.value) 252 getMatch(matchId.value)
240 getMySignInfo() 253 getMySignInfo()
254 getAthletesList()
241 // openTour.value = true 255 // openTour.value = true
242 }) 256 })
243 257
244 let chargeFlag 258 let chargeFlag
245 259
260 function getAthletesList() {
261 // athletesList.value
262 match.getGroupPersonList({label: '0'}, groupId.value).then(res => {
263 athletesList.value = res.rows
264 })
265 }
266
246 function getMatch(id) { 267 function getMatch(id) {
247 match.getMatchById({ 268 match.getMatchById({
248 id: id 269 id: id
...@@ -328,6 +349,11 @@ function goPrev() { ...@@ -328,6 +349,11 @@ function goPrev() {
328 }) 349 })
329 } 350 }
330 351
352 function emptychoosedchoosed() {
353 choosedchoosed.value = []
354 choosed2List.value = []
355 }
356
331 function chooseSportman() { 357 function chooseSportman() {
332 const params = { 358 const params = {
333 title: language.value == 0 ? '选择运动员' : 'Participating athletes', 359 title: language.value == 0 ? '选择运动员' : 'Participating athletes',
...@@ -345,17 +371,16 @@ function chooseSportman() { ...@@ -345,17 +371,16 @@ function chooseSportman() {
345 function changechoosed(e) { 371 function changechoosed(e) {
346 // console.log(e) 372 // console.log(e)
347 choosed2List.value = [] 373 choosed2List.value = []
348 choosed2Listbak.value = [] 374 for (var c of athletesList.value) {
349
350 for (var c of choosedList.value) {
351 if (choosedchoosed.value.indexOf(c.id) > -1) { 375 if (choosedchoosed.value.indexOf(c.id) > -1) {
352 choosed2List.value.push(c) 376 choosed2List.value.push(c)
353 choosed2Listbak.value.push(c)
354 } 377 }
355 } 378 }
379 getProjectList()
356 } 380 }
357 381
358 function getProjectList() { 382 function getProjectList() {
383 console.log(choosedchoosed.value)
359 projectIds.value = [] 384 projectIds.value = []
360 if (choosedchoosed.value.length == 0) { 385 if (choosedchoosed.value.length == 0) {
361 projectList.value = [] 386 projectList.value = []
...@@ -370,42 +395,18 @@ function getProjectList() { ...@@ -370,42 +395,18 @@ function getProjectList() {
370 match.getProjectPageByPerIds(obj).then(res => { 395 match.getProjectPageByPerIds(obj).then(res => {
371 projectList.value = res.rows 396 projectList.value = res.rows
372 loadingProject.value = false 397 loadingProject.value = false
373 if(choosed2Listbak.value.length>0 && projectList.value.length>0){
374 tourCurrent.value = 2
375 }
376 }).catch(err => { 398 }).catch(err => {
377 loadingProject.value = false 399 loadingProject.value = false
378 ElMessage.warning(err.msg) 400 ElMessage.warning(err.msg)
379 }) 401 })
380 } 402 }
381 403
382 function queryAthletes() {
383 choosedListBak.value = []
384 for (var t of choosedList.value) {
385 if (t.realName.indexOf(athletesQuery.value.name) > -1) {
386 // 筛选
387 choosedListBak.value.push(t)
388 }
389 }
390 }
391
392 function queryTeam() {
393 choosed2Listbak.value = []
394 choosedchoosed.value = []
395 for (var t of choosed2List.value) {
396 if (t.realName.indexOf(zuQuery.value.name) > -1) {
397 // 筛选
398 choosed2Listbak.value.push(t)
399 choosedchoosed.value.push(t.id)
400 }
401 }
402 }
403 404
404 function getChoosed(list) { 405 function getChoosed(list) {
405 console.log(list) 406 console.log(list)
406 choosedList.value = list 407 choosedList.value = list
407 choosedListBak.value = list 408 choosedListBak.value = list
408 if(list.length>0){ 409 if (list.length > 0) {
409 // openTour.value = false 410 // openTour.value = false
410 tourCurrent.value = 1 411 tourCurrent.value = 1
411 } 412 }
...@@ -420,12 +421,12 @@ function addCoach() { ...@@ -420,12 +421,12 @@ function addCoach() {
420 }).then(res => { 421 }).then(res => {
421 if (res.msg.indexOf('Exception:') > -1) { 422 if (res.msg.indexOf('Exception:') > -1) {
422 const msg = res.msg.slice(10) 423 const msg = res.msg.slice(10)
423 ElMessageBox.confirm(msg, '提示', { 424 ElMessageBox.confirm(msg, language.value == 0 ? '提示' : 'Tips', {
424 confirmButtonText: '确定', 425 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
425 cancelButtonText: '取消', 426 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
426 type: 'warning' 427 type: 'warning'
427 }).then(() => { 428 }).then(() => {
428 console.log('用户点击确定') 429 console.log('Confirm')
429 }) 430 })
430 return 431 return
431 } 432 }
...@@ -433,26 +434,13 @@ function addCoach() { ...@@ -433,26 +434,13 @@ function addCoach() {
433 }) 434 })
434 } 435 }
435 const params = { 436 const params = {
436 title: '新增运动员', 437 title: language.value == 0 ? '提新增运动员' : 'Add',
437 id: 0, 438 id: 0,
438 groupId: groupId.value 439 groupId: groupId.value
439 } 440 }
440 proxy.$refs['dialogAddCoachRef'].open(params) 441 proxy.$refs['dialogAddCoachRef'].open(params)
441 } 442 }
442 443
443 function emptyChoosed() {
444 choosedList.value = []
445 choosedListBak.value = []
446 }
447
448 function emptyChangechoosed() {
449 choosedchoosed.value = []
450 choosed2List.value = []
451 choosed2Listbak.value = []
452 projectList.value = []
453 projectIds.value = []
454 }
455
456 function signUp() { 444 function signUp() {
457 if (projectIds.value.length == 0) { 445 if (projectIds.value.length == 0) {
458 return 446 return
...@@ -468,7 +456,6 @@ function signUp() { ...@@ -468,7 +456,6 @@ function signUp() {
468 match.sportsmanDone(obj).then(res => { 456 match.sportsmanDone(obj).then(res => {
469 choosedchoosed.value = [] 457 choosedchoosed.value = []
470 choosed2List.value = [] 458 choosed2List.value = []
471 choosed2Listbak.value = []
472 projectList.value = [] 459 projectList.value = []
473 projectIds.value = [] 460 projectIds.value = []
474 getSignInfoList() 461 getSignInfoList()
...@@ -476,14 +463,15 @@ function signUp() { ...@@ -476,14 +463,15 @@ function signUp() {
476 } 463 }
477 464
478 function removeThis(id) { 465 function removeThis(id) {
479 ElMessageBox.confirm('确定移除这条报项吗?', '提示', { 466 ElMessageBox.confirm(language.value == 0 ? '确定移除这条报项吗?' : 'Are you sure to remove this report item',
480 confirmButtonText: '确定', 467 language.value == 0 ? '提示' : 'Tips', {
481 cancelButtonText: '取消', 468 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
482 type: 'warning' 469 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
483 }).then(() => { 470 type: 'warning'
471 }).then(() => {
484 match.deleteSign(id).then(res => { 472 match.deleteSign(id).then(res => {
485 // 重新获取已报名信息 473 // 重新获取已报名信息
486 ElMessage.success('已移除该报项') 474 ElMessage.success(language.value == 0 ? '已移除该报项' : 'success')
487 getSignInfoList() 475 getSignInfoList()
488 }) 476 })
489 }) 477 })
...@@ -527,7 +515,7 @@ const goPersonInfo = (row) => { ...@@ -527,7 +515,7 @@ const goPersonInfo = (row) => {
527 console.log(row) 515 console.log(row)
528 // debugger 516 // debugger
529 const params = { 517 const params = {
530 matchId:matchId.value, 518 matchId: matchId.value,
531 title: language.value == 0 ? '完善补充信息' : 'Complete the supplementary information', 519 title: language.value == 0 ? '完善补充信息' : 'Complete the supplementary information',
532 participantsInfoArr: extraform.value, 520 participantsInfoArr: extraform.value,
533 personId: row.personInfo.id, 521 personId: row.personInfo.id,
...@@ -559,45 +547,69 @@ function switchTabletype() { ...@@ -559,45 +547,69 @@ function switchTabletype() {
559 } 547 }
560 } 548 }
561 549
550 watch(projectIds, (newVal, oldVal) => {
551 console.log(projectIds.value)
552 if (newVal.length > oldVal.length) {
553 currProjectId.value = _.last(newVal)
554 } else {
555 currProjectId.value = ''
556 }
557 })
558
562 function changeProject(e) { 559 function changeProject(e) {
563 console.log(projectIds.value,e) 560 console.log(projectIds.value, e)
564 var obj 561 var obj = {}
565 obj = _.find(projectList.value, (c) => { 562 obj = _.find(projectList.value, (c) => {
566 return e.indexOf(c.id)>-1 563 return e.indexOf(c.id) > -1
567 }) 564 })
568 // if(obj.majorFlag==1){ 565 //循环choosed2List 检查是否存在WDSF号
569 //需要填wdsf 566 let n = 0
570 // const params = { 567 for(var cc of choosed2List.value){
571 // title: '验证WDSF', 568 if(!cc.wdsf){
572 // list:choosed2Listbak.value 569 n++
573 // } 570 }
574 // proxy.$refs['popWdsf'].open(_.cloneDeep(params)) 571 }
575 // } 572 //obj需要wdsf 且 currProjectId非空
573 if (obj.checkMemberFlag == '1'&&currProjectId.value != ''&& n>0) {
574 const params = {
575 title: '验证WDSF',
576 groupId: groupId.value,
577 matchId: matchId.value,
578 list: choosed2List.value
579 }
580 proxy.$refs['popWdsf'].open(_.cloneDeep(params))
581 }
582 }
583
584 function removeCurproject() {
585 // projectIds.value
586 projectIds.value = _.without(projectIds.value, currProjectId.value)
576 } 587 }
588
577 watch(choosedchoosed, (newVal, oldVal) => { 589 watch(choosedchoosed, (newVal, oldVal) => {
578 // console.log(choosedchoosed.value) 590 // console.log(choosedchoosed.value)
579 if(newVal.length>oldVal.length){ 591 if (newVal.length > oldVal.length) {
580 match.signgetSignInfoConflict({ 592 match.signgetSignInfoConflict({
581 cptId: matchId.value, 593 cptId: matchId.value,
582 perId: _.last(newVal), 594 perId: _.last(newVal),
583 groupId: groupId.value 595 groupId: groupId.value
584 }).then(res => { 596 }).then(res => {
585 if(!res.data){ 597 if (!res.data) {
586 ElMessage.warning(language.value==0?'该人员已在其他团队中报名,请重新选择':'This person has already registered in another team, please select again') 598 ElMessage.warning(language.value == 0 ? '该人员已在其他团队中报名,请重新选择' : 'This person has already registered in another team, please select again')
587 choosedchoosed.value = _.without(choosedchoosed.value,_.last(newVal)) 599 choosedchoosed.value = _.without(choosedchoosed.value, _.last(newVal))
588 600
589 for(var c of choosed2List.value){ 601 for (var c of choosed2List.value) {
590 if(c.id == _.last(newVal)){ 602 if (c.id == _.last(newVal)) {
591 choosed2List.value = _.without(choosed2List.value,c) 603 choosed2List.value = _.without(choosed2List.value, c)
592 }
593 } 604 }
594 for(var c of choosed2Listbak.value){ 605 }
595 if(c.id == _.last(newVal)){ 606 for (var c of choosed2Listbak.value) {
596 choosed2Listbak.value = _.without(choosed2Listbak.value,c) 607 if (c.id == _.last(newVal)) {
597 } 608 choosed2Listbak.value = _.without(choosed2Listbak.value, c)
598 } 609 }
599 projectList.value = [] 610 }
600 console.log(choosedchoosed.value,choosed2List.value,choosed2Listbak.value) 611 projectList.value = []
612 console.log(choosedchoosed.value, choosed2List.value, choosed2Listbak.value)
601 return 613 return
602 } else { 614 } else {
603 getProjectList() 615 getProjectList()
...@@ -616,7 +628,8 @@ watch(choosedchoosed, (newVal, oldVal) => { ...@@ -616,7 +628,8 @@ watch(choosedchoosed, (newVal, oldVal) => {
616 628
617 .flexBetweenBox { 629 .flexBetweenBox {
618 width: 100%; 630 width: 100%;
619 height: auto;margin-right: 0; 631 height: auto;
632 margin: 0;
620 border-bottom: 1px solid #eee; 633 border-bottom: 1px solid #eee;
621 padding: 0 10px; 634 padding: 0 10px;
622 } 635 }
...@@ -625,7 +638,7 @@ watch(choosedchoosed, (newVal, oldVal) => { ...@@ -625,7 +638,7 @@ watch(choosedchoosed, (newVal, oldVal) => {
625 background: #FAFBFD; 638 background: #FAFBFD;
626 } 639 }
627 640
628 .flexBetween {white-space: normal; 641 .flexBetween {
629 padding: 10px; 642 padding: 10px;
630 border-left: 1px solid #eee; 643 border-left: 1px solid #eee;
631 644
...@@ -799,4 +812,13 @@ watch(choosedchoosed, (newVal, oldVal) => { ...@@ -799,4 +812,13 @@ watch(choosedchoosed, (newVal, oldVal) => {
799 margin-left: 4px; 812 margin-left: 4px;
800 } 813 }
801 } 814 }
815
816 .flexOption {
817 display: flex;
818 align-items: center;
819
820 img {
821 height: 18px;
822 }
823 }
802 </style> 824 </style>
......
...@@ -7,26 +7,22 @@ ...@@ -7,26 +7,22 @@
7 7
8 <el-card :body-style="{'padding-top': '0'}"> 8 <el-card :body-style="{'padding-top': '0'}">
9 <el-row class="mt20" :gutter="20"> 9 <el-row class="mt20" :gutter="20">
10 <el-col :lg="12"> 10 <el-col :lg="8">
11 <div class="panel border"> 11 <div class="panel border">
12 <div class="panel-header "> 12 <div class="panel-header ">
13 <h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3> 13 <h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3>
14 <h3 class="panel-title" v-else>Select list of participating athletes</h3> 14 <h3 class="panel-title" v-else>Select list of participating athletes</h3>
15 <!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>--> 15 <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>
16 <el-button type="primary" style="color: #fff" class="fr" @click="chooseSportman">选手管理</el-button>
17 </div> 16 </div>
18 <div class="panel-body" style="padding: 10px"> 17 <div class="panel-body" style="padding: 10px">
19 <div style="margin: 0 4px 10px"> 18 <div style="margin: 0 4px 10px">
20 <el-select multiple v-model="choosedchoosed" collapse-tags-tooltip filterable 19 <el-input size="small" v-model="athletesQuery.name" :prefix-icon="Search"
21 @change="getProjectList"> 20 @change="queryAthletes"
22 <el-option v-for="c in athletesList" :key="c.id" :label="c.realName" :value="c.id" > 21 clearable/>
23 {{c.realName}}({{c.sexStr}})-{{c.age}}
24 </el-option>
25 </el-select>
26 <el-button type="primary" @change="emptychoosedchoosed">重选</el-button>
27 </div> 22 </div>
28 <div class="noPicChooseForm" id="chooseArr"> 23 <div class="noPicChooseForm" id="chooseArr">
29 <el-checkbox-group v-model="choosedchoosed" @change="changechoosed"> 24 <el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
25 <el-button id="addRef" plain @click="chooseSportman">+{{ language == 0 ? '选择' : 'add' }}</el-button>
30 <el-checkbox v-for="c in choosedListBak" :value="c.id" border> 26 <el-checkbox v-for="c in choosedListBak" :value="c.id" border>
31 <p class="name">{{ c.realName }} 27 <p class="name">{{ c.realName }}
32 <!-- ({{ c.sexStr }})--> 28 <!-- ({{ c.sexStr }})-->
...@@ -39,7 +35,39 @@ ...@@ -39,7 +35,39 @@
39 </div> 35 </div>
40 </div> 36 </div>
41 </el-col> 37 </el-col>
42 <el-col :lg="12"> 38 <el-col :lg="8">
39 <div class="panel border">
40 <div class="panel-header ">
41 <h3 class="panel-title" v-if="language==0">选择一个参赛组合</h3>
42 <h3 class="panel-title" v-else>Select a Participating team</h3>
43 <a class="fr" @click="emptyChangechoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>
44 </div>
45 <div class="panel-body" style="padding: 10px">
46 <div class="mb20">
47 <el-input size="small" v-model="zuQuery.name" :prefix-icon="Search"
48 @change="queryTeam" clearable/>
49 </div>
50 <div class="chooseForm">
51 <el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
52 <!-- v-show="choosedchoosed.indexOf(c.id) !== -1"-->
53 <el-checkbox v-for="c in choosed2Listbak" :value="c.id" checked>
54 <el-avatar fit="cover" v-if="c.picUrl" :size="60" :src="fillImgUrl(c.picUrl)"/>
55 <el-avatar fit="cover" v-else-if="c.sex == 0" :size="60" src="/img/head1.png"/>
56 <el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="/img/head0.png"/>
57 <p class="name">{{ c.realName }}
58 <img v-if="c.sex=='0'" src="@/assets/img/female.png"/>
59 <img v-if="c.sex=='1'" src="@/assets/img/male.png"/>
60 <!-- <el-icon @click.stop="editPerson(c.id)">-->
61 <!-- <Edit/>-->
62 <!-- </el-icon>-->
63 </p>
64 </el-checkbox>
65 </el-checkbox-group>
66 </div>
67 </div>
68 </div>
69 </el-col>
70 <el-col :lg="8">
43 <div class="panel border"> 71 <div class="panel border">
44 <div class="panel-header "> 72 <div class="panel-header ">
45 <h3 class="panel-title" v-if="language==0">可参与报名的项目</h3> 73 <h3 class="panel-title" v-if="language==0">可参与报名的项目</h3>
...@@ -170,7 +198,6 @@ const data = reactive({ ...@@ -170,7 +198,6 @@ const data = reactive({
170 signInfoList: [], 198 signInfoList: [],
171 zuTableList: [], 199 zuTableList: [],
172 choosedList: [], 200 choosedList: [],
173 athletesList: [],
174 choosedListBak: [], 201 choosedListBak: [],
175 athletesQuery: { 202 athletesQuery: {
176 name: '' 203 name: ''
...@@ -199,7 +226,7 @@ const data = reactive({ ...@@ -199,7 +226,7 @@ const data = reactive({
199 openTour:false 226 openTour:false
200 }) 227 })
201 const { 228 const {
202 activeTeam, names, tableData, signInfoList, zuTableList, choosedList,choosedListBak,athletesList, 229 activeTeam, names, tableData, signInfoList, zuTableList, choosedList,choosedListBak,
203 extraform, groupId, signType, coachOrLeaderFlag, showResult, noPhotoCanSign, projectIds, choosedchoosed, activeStep, projectList, choosed2List,choosed2Listbak, loadingProject, 230 extraform, groupId, signType, coachOrLeaderFlag, showResult, noPhotoCanSign, projectIds, choosedchoosed, activeStep, projectList, choosed2List,choosed2Listbak, loadingProject,
204 projectQuery, tableType, athletesQuery, zuQuery,openTour,tourCurrent 231 projectQuery, tableType, athletesQuery, zuQuery,openTour,tourCurrent
205 } = toRefs(data) 232 } = toRefs(data)
...@@ -211,18 +238,11 @@ onMounted(() => { ...@@ -211,18 +238,11 @@ onMounted(() => {
211 getSignInfoList() 238 getSignInfoList()
212 getMatch(matchId.value) 239 getMatch(matchId.value)
213 getMySignInfo() 240 getMySignInfo()
214 getAthletesList()
215 // openTour.value = true 241 // openTour.value = true
216 }) 242 })
217 243
218 let chargeFlag 244 let chargeFlag
219 245
220 function getAthletesList() {
221 // athletesList.value
222 match.getGroupPersonList({}, groupId.value).then(res => {
223 athletesList.value = res.rows
224 })
225 }
226 function getMatch(id) { 246 function getMatch(id) {
227 match.getMatchById({ 247 match.getMatchById({
228 id: id 248 id: id
...@@ -307,9 +327,7 @@ function goPrev() { ...@@ -307,9 +327,7 @@ function goPrev() {
307 } 327 }
308 }) 328 })
309 } 329 }
310 function emptychoosedchoosed() { 330
311 choosedchoosed.value = []
312 }
313 function chooseSportman() { 331 function chooseSportman() {
314 const params = { 332 const params = {
315 title: language.value == 0 ? '选择运动员' : 'Participating athletes', 333 title: language.value == 0 ? '选择运动员' : 'Participating athletes',
...@@ -345,11 +363,9 @@ function getProjectList() { ...@@ -345,11 +363,9 @@ function getProjectList() {
345 } 363 }
346 loadingProject.value = true 364 loadingProject.value = true
347 //根据已选人员id 获取项目列表 365 //根据已选人员id 获取项目列表
348 var obj = { 366 projectQuery.value.cptId = matchId.value
349 cptId: matchId.value, 367 projectQuery.value.perIds = choosedchoosed.value.toString()
350 perIds: choosedchoosed.value.toString() 368 match.getProjectPageByPerIds(projectQuery.value).then(res => {
351 }
352 match.getProjectPageByPerIds(obj).then(res => {
353 projectList.value = res.rows 369 projectList.value = res.rows
354 loadingProject.value = false 370 loadingProject.value = false
355 if(choosed2Listbak.value.length>0 && projectList.value.length>0){ 371 if(choosed2Listbak.value.length>0 && projectList.value.length>0){
...@@ -361,6 +377,15 @@ function getProjectList() { ...@@ -361,6 +377,15 @@ function getProjectList() {
361 }) 377 })
362 } 378 }
363 379
380 function queryAthletes() {
381 choosedListBak.value = []
382 for (var t of choosedList.value) {
383 if (t.realName.indexOf(athletesQuery.value.name) > -1) {
384 // 筛选
385 choosedListBak.value.push(t)
386 }
387 }
388 }
364 389
365 function queryTeam() { 390 function queryTeam() {
366 choosed2Listbak.value = [] 391 choosed2Listbak.value = []
...@@ -413,6 +438,19 @@ function addCoach() { ...@@ -413,6 +438,19 @@ function addCoach() {
413 proxy.$refs['dialogAddCoachRef'].open(params) 438 proxy.$refs['dialogAddCoachRef'].open(params)
414 } 439 }
415 440
441 function emptyChoosed() {
442 choosedList.value = []
443 choosedListBak.value = []
444 }
445
446 function emptyChangechoosed() {
447 choosedchoosed.value = []
448 choosed2List.value = []
449 choosed2Listbak.value = []
450 projectList.value = []
451 projectIds.value = []
452 }
453
416 function signUp() { 454 function signUp() {
417 if (projectIds.value.length == 0) { 455 if (projectIds.value.length == 0) {
418 return 456 return
...@@ -443,7 +481,7 @@ function removeThis(id) { ...@@ -443,7 +481,7 @@ function removeThis(id) {
443 }).then(() => { 481 }).then(() => {
444 match.deleteSign(id).then(res => { 482 match.deleteSign(id).then(res => {
445 // 重新获取已报名信息 483 // 重新获取已报名信息
446 ElMessage.success('已移除该报项') 484 ElMessage.success(language.value == 0 ? '已移除该报项' : 'success')
447 getSignInfoList() 485 getSignInfoList()
448 }) 486 })
449 }) 487 })
...@@ -526,12 +564,12 @@ function changeProject(e) { ...@@ -526,12 +564,12 @@ function changeProject(e) {
526 return e.indexOf(c.id)>-1 564 return e.indexOf(c.id)>-1
527 }) 565 })
528 // if(obj.majorFlag==1){ 566 // if(obj.majorFlag==1){
529 //需要填wdsf 567 // 需要填wdsf
530 // const params = { 568 const params = {
531 // title: '验证WDSF', 569 title: '验证WDSF',
532 // list:choosed2Listbak.value 570 list:choosed2Listbak.value
533 // } 571 }
534 // proxy.$refs['popWdsf'].open(_.cloneDeep(params)) 572 proxy.$refs['popWdsf'].open(_.cloneDeep(params))
535 // } 573 // }
536 } 574 }
537 watch(choosedchoosed, (newVal, oldVal) => { 575 watch(choosedchoosed, (newVal, oldVal) => {
...@@ -576,7 +614,7 @@ watch(choosedchoosed, (newVal, oldVal) => { ...@@ -576,7 +614,7 @@ watch(choosedchoosed, (newVal, oldVal) => {
576 614
577 .flexBetweenBox { 615 .flexBetweenBox {
578 width: 100%; 616 width: 100%;
579 height: auto;margin: 0; 617 height: auto;margin-right: 0;
580 border-bottom: 1px solid #eee; 618 border-bottom: 1px solid #eee;
581 padding: 0 10px; 619 padding: 0 10px;
582 } 620 }
...@@ -585,7 +623,7 @@ watch(choosedchoosed, (newVal, oldVal) => { ...@@ -585,7 +623,7 @@ watch(choosedchoosed, (newVal, oldVal) => {
585 background: #FAFBFD; 623 background: #FAFBFD;
586 } 624 }
587 625
588 .flexBetween { 626 .flexBetween {white-space: normal;
589 padding: 10px; 627 padding: 10px;
590 border-left: 1px solid #eee; 628 border-left: 1px solid #eee;
591 629
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
24 <el-input v-model="form.ming"/> 24 <el-input v-model="form.ming"/>
25 </el-form-item> 25 </el-form-item>
26 <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required> 26 <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required>
27 <el-select v-model="form.idcType" style="width: 100%;"> 27 <el-select v-model="form.idcType" style="width: 100%;" :disabled="editgay">
28 <el-option 28 <el-option
29 v-for="item in certificates" 29 v-for="item in certificates"
30 :key="item.value" 30 :key="item.value"
...@@ -34,10 +34,10 @@ ...@@ -34,10 +34,10 @@
34 </el-select> 34 </el-select>
35 </el-form-item> 35 </el-form-item>
36 <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> 36 <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required>
37 <el-input v-model="form.idcCode" @blur="checkCode"/> 37 <el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay"/>
38 </el-form-item> 38 </el-form-item>
39 <el-form-item :label="language==0?'性别':'sex'" prop="sex"> 39 <el-form-item :label="language==0?'性别':'sex'" prop="sex">
40 <el-radio-group v-model="form.sex"> 40 <el-radio-group v-model="form.sex" :disabled="form.idcType=='0'">
41 <el-radio value="0">{{ language==0?'女':'female' }}</el-radio> 41 <el-radio value="0">{{ language==0?'女':'female' }}</el-radio>
42 <el-radio value="1">{{ language==0?'男':'male' }}</el-radio> 42 <el-radio value="1">{{ language==0?'男':'male' }}</el-radio>
43 </el-radio-group> 43 </el-radio-group>
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
46 <el-col :lg="12"> 46 <el-col :lg="12">
47 <el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required> 47 <el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required>
48 <el-date-picker 48 <el-date-picker
49 v-model="form.birth" 49 v-model="form.birth" :disabled="form.idcType=='0'"
50 style="width: 100%;" 50 style="width: 100%;"
51 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 51 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
52 /> 52 />
...@@ -178,7 +178,7 @@ onMounted(() => { ...@@ -178,7 +178,7 @@ onMounted(() => {
178 getRegionsList() 178 getRegionsList()
179 179
180 }) 180 })
181 let editgay = false 181 const editgay = ref(false)
182 const open = (params) => { 182 const open = (params) => {
183 console.log(params.label) 183 console.log(params.label)
184 show.value = true 184 show.value = true
...@@ -206,7 +206,7 @@ const open = (params) => { ...@@ -206,7 +206,7 @@ const open = (params) => {
206 }) 206 })
207 } else { 207 } else {
208 if (params.id != 0) { // 编辑 208 if (params.id != 0) { // 编辑
209 editgay = true 209 editgay.value = true
210 match.getPersonInfoById(params.id).then(res => { 210 match.getPersonInfoById(params.id).then(res => {
211 form.value = res.data 211 form.value = res.data
212 form.value.id = params.id 212 form.value.id = params.id
...@@ -215,6 +215,8 @@ const open = (params) => { ...@@ -215,6 +215,8 @@ const open = (params) => {
215 form.value.labelArr = form.value.label.split(',') 215 form.value.labelArr = form.value.label.split(',')
216 } 216 }
217 }) 217 })
218 } else {
219 editgay.value = false
218 } 220 }
219 } 221 }
220 } 222 }
...@@ -332,7 +334,7 @@ function submitForm() { ...@@ -332,7 +334,7 @@ function submitForm() {
332 emit('submitForm') 334 emit('submitForm')
333 }) 335 })
334 } else { 336 } else {
335 if (editgay) { 337 if (editgay.value) {
336 // id不是0 338 // id不是0
337 match.editPersonInfo(form.value).then(res => { 339 match.editPersonInfo(form.value).then(res => {
338 ElMessage.success(language.value == 0 ?'保存成功':'Save successful') 340 ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
14 <el-input v-model="query.realName" style="width: 120px;" clearable/> 14 <el-input v-model="query.realName" style="width: 120px;" clearable/>
15 </el-form-item> 15 </el-form-item>
16 <el-form-item :label="language==0?'证件类型':'ID Type'"> 16 <el-form-item :label="language==0?'证件类型':'ID Type'">
17 <el-select v-model="query.idcType" style="width: 100px;" clearable> 17 <el-select v-model="query.idcType" style="width: 100px;" clearable @change="getList">
18 <el-option 18 <el-option
19 v-for="item in certificates" 19 v-for="item in certificates"
20 :key="item.value" 20 :key="item.value"
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
37 <p v-if="noPhotoCanSign == 0" class="text-danger">{{ language==0?'*需上传照片才可报名':'*Please upload photo before sign up' }}</p> 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" 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 type="index" :label="language==0?'序号':'Index'" :selectable="selectable"/>--> 41 <el-table-column type="index" :label="language==0?'序号':'Index'" width="50" :selectable="selectable"/>
42 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> 42 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
43 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> 43 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
44 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> 44 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
...@@ -72,19 +72,19 @@ ...@@ -72,19 +72,19 @@
72 </template> 72 </template>
73 </el-table-column> 73 </el-table-column>
74 </el-table> 74 </el-table>
75 <!-- <paginationPc--> 75 <paginationPc
76 <!-- v-show="total>0"--> 76 v-show="total>0"
77 <!-- v-model:page="query.pageNum"--> 77 v-model:page="query.pageNum"
78 <!-- v-model:limit="query.pageSize"--> 78 v-model:limit="query.pageSize"
79 <!-- :total="total"--> 79 :total="total"
80 <!-- @pagination="getList"--> 80 @pagination="getList"
81 <!-- />--> 81 />
82 <template #footer> 82 <!-- <template #footer>-->
83 <div class="dialog-footer text-center"> 83 <!-- <div class="dialog-footer text-center">-->
84 <el-button type="primary" @click="submit">{{language==0?'确定':'Confirm'}}</el-button> 84 <!-- <el-button type="primary" @click="submit">{{language==0?'确定':'Confirm'}}</el-button>-->
85 <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button> 85 <!-- <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button>-->
86 </div> 86 <!-- </div>-->
87 </template> 87 <!-- </template>-->
88 </el-dialog> 88 </el-dialog>
89 89
90 <addCoach ref="dialogAddCoach" @submitForm="getList"/> 90 <addCoach ref="dialogAddCoach" @submitForm="getList"/>
...@@ -104,7 +104,9 @@ const {proxy} = getCurrentInstance() ...@@ -104,7 +104,9 @@ const {proxy} = getCurrentInstance()
104 const emit = defineEmits([ 'transfer']) 104 const emit = defineEmits([ 'transfer'])
105 const data = reactive({ 105 const data = reactive({
106 query: { 106 query: {
107 label:'0' 107 label:'0',
108 pageSize: 10,
109 pageNum:1
108 }, 110 },
109 tableData: [], 111 tableData: [],
110 show: false, 112 show: false,
......
1 <template>
2 <el-dialog
3 v-model="show" destroy-on-close :title="title" width="800px" append-to-body
4 draggable
5 :close-on-click-modal="false" @close="mateClose"
6 >
7 <div class="mb20">
8 <span v-if="mateConfig.minCount!=mateConfig.maxCount">请选择{{ mateConfig.minCount }}~{{
9 mateConfig.maxCount
10 }}个队友</span>
11 <span v-else-if="mateConfig.minCount=='-1'&&mateConfig.maxCount=='-1'">请至少选择1个队友</span>
12 <span v-else>请选择{{ mateConfig.minCount }}个队友</span>
13
14 <span v-if="mateConfig.minMaleCount!=-1||mateConfig.maxMaleCount!=-1" style="margin:0 20px;">男子:
15 <span v-show="mateConfig.minMaleCount!=mateConfig.maxMaleCount&&mateConfig.minMaleCount!=-1"> 最少{{ mateConfig.minMaleCount }}</span>
16 <span v-show="mateConfig.minMaleCount!=mateConfig.maxMaleCount&&mateConfig.maxMaleCount!=-1"> 最多{{ mateConfig.maxMaleCount }}</span>
17 <span v-show="mateConfig.minMaleCount==mateConfig.maxMaleCount&&mateConfig.maxMaleCount!=-1">{{ mateConfig.maxMaleCount }}</span>
18 </span>
19 <span v-if="mateConfig.minFemaleCount!=-1||mateConfig.maxFemaleCount!=-1" style="margin:0 20px;">女子:
20 <span v-show="mateConfig.minFemaleCount!=mateConfig.maxFemaleCount&&mateConfig.minFemaleCount>0"> 最少{{ mateConfig.minFemaleCount }}</span>
21 <span v-show="mateConfig.minFemaleCount!=mateConfig.maxFemaleCount&&mateConfig.maxFemaleCount>0"> 最多{{ mateConfig.maxFemaleCount }}</span>
22 <span v-show="mateConfig.minFemaleCount==mateConfig.maxFemaleCount&&mateConfig.minFemaleCount>0">{{ mateConfig.minFemaleCount }}</span>
23 </span>
24
25 </div>
26 <!-- <el-button v-if="teammateList.length<minCount" type="text" @click="addTeamMate">新增队友</el-button>-->
27 <el-empty v-if="teammateList.length==0" description="暂无可选队友" />
28 <div class="teammateList" style="max-height:60vh;overflow: auto;">
29 <el-checkbox-group v-model="form.mates" class="ml-4" @change="changeTeammates">
30 <el-checkbox disabled checked :label="personal.sex+'_'+personal.id" size="large">
31 <div class="optionFlex" style="width: auto;">
32 <el-avatar v-show="personal.picUrl" :size="40" :src="personal.picUrl" />
33 <p class="name" style="width: 200px">{{ personal.realName }}
34 <span v-show="personal.sex=='0'">(女)</span>
35 <span v-show="personal.sex=='1'">(男)</span>
36 </p>
37 <el-select v-show="sonLevelList.length>0" v-model="personal.sonlevel" clearable>
38 <el-option v-for="son in sonLevelList" :value="son.id" :label="son.name">{{ son.name }}</el-option>
39 </el-select>
40 </div>
41 </el-checkbox>
42
43 <div v-for="item in teammateList" :key="item.id" class="mb20">
44 <el-checkbox :label="item.sex+'_'+item.id" size="large" :disabled="item.cantchosemate">
45 <div class="optionFlex" style="width: auto;">
46 <el-avatar v-show="item.picUrl" :size="40" :src="item.picUrl" />
47 <p class="name" style="width: 200px">{{ item.realName }}
48 <span v-if="item.sex=='0'">(女)</span>
49 <span v-else>(男)</span>
50 </p>
51 <el-select v-show="sonLevelList.length>0" v-model="item.sonlevel" clearable>
52 <el-option v-for="son in sonLevelList" :value="son.id" :label="son.name">{{ son.name }}</el-option>
53 </el-select>
54 </div>
55 </el-checkbox>
56 <el-button v-if="noPhotoCanSign=='0'&&(!item.picUrl)" class="ml20" type="text" @click="editPersonInfo(item.id,nowMan.groupId)">
57 上传照片
58 </el-button>
59 </div>
60 </el-checkbox-group>
61 </div>
62 <template #footer>
63 <div class="dialog-footer text-center">
64 <el-button type="primary" @click="chooseMateDone">确定</el-button>
65 </div>
66 </template>
67
68 </el-dialog>
69 </template>
70
71 <script setup>
72 import { reactive, ref, toRefs, watch } from 'vue'
73 import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core'
74 import * as match from '@/apiPc/match'
75 import { ElMessage } from 'element-plus'
76
77 const { proxy } = getCurrentInstance()
78 const emit = defineEmits(['submitForm'])
79 import dialogPersonInfo from '../components/addCoach'
80 import _ from 'lodash'
81
82 const data = reactive({
83 show: false,
84 title: '选择队友',
85 signType: '',
86 form: {
87 levelId: [],
88 mates: []
89 },
90 athletesList: [],
91 signProjectList: [],
92 signGroupList: [],
93 showMateList: false,
94 showBtn: false,
95 teammateList: [],
96 rankId: '0',
97 treeData: [],
98 loading: false,
99 mateConfig: {},
100 noPhotoCanSign: null,
101 coachOrLeaderFlag: null,
102 personal: {},
103 activeNames: [0]
104 })
105 const {
106 signType,
107 form,
108 rules,
109 loading,
110 activeNames,
111 athletesList,
112 show,
113 title,
114 personal,
115 rankId,
116 showMateList,
117 showBtn,
118 teammateList,
119 mateConfig,
120 noPhotoCanSign,
121 coachOrLeaderFlag
122 } = toRefs(data)
123 let matchId
124 let groupId
125 let levelId
126 let noLevelId
127
128 const open = (params) => {
129 show.value = true
130 matchId = params.matchId
131 levelId = params.levelId
132 groupId = params.groupId
133 signType.value = params.signType
134 title.value = params.title
135 rankId.value = params.rankId || ''
136 noPhotoCanSign.value = params.noPhotoCanSign
137 coachOrLeaderFlag.value = params.coachOrLeaderFlag
138 if (params.personal) {
139 form.value.manId = params.personal.id
140 personal.value = params.personal
141 }
142 if (groupId !== 0) {
143
144 }
145 getTeammate(levelId)
146 }
147 defineExpose({
148 open
149 })
150
151 const nowMan = ref({})
152 const sonLevelList = ref([])
153 let sonLevelIds = []
154
155 function editPersonInfo(id, groupId) {
156 const params = {
157 id: id,
158 groupId: groupId
159 }
160 proxy.$refs['editPersonInfoRef'].open(params)
161 }
162
163 function addTeamMate() {
164 const params = {
165 id: 0,
166 groupId: groupId
167 }
168 proxy.$refs['editPersonInfoRef'].open(params)
169 }
170
171 const getTeammate = (levelId) => {
172 const obj = {
173 levelId: levelId,
174 groupId: groupId,
175 personId: form.value.manId
176 }
177 match.getCanSignLevelPerson(obj).then(res => {
178 mateConfig.value = res.data
179 teammateList.value = res.data.personList
180 for (const p of teammateList.value) {
181 p.cantchosemate = false
182 if (mateConfig.value.maxMaleCount == 0 && p.sex == '1') {
183 p.cantchosemate = true
184 }
185 if (mateConfig.value.maxFemaleCount == 0 && p.sex == '0') {
186 p.cantchosemate = true
187 }
188 }
189 getSonLevels(levelId)
190 showMateList.value = true
191 form.value.mates = []
192 sonLevelIds = []
193 personal.value.sonlevel = ''
194 }).catch(error => {
195
196 })
197 }
198
199 function getSonLevels(level) {
200 sonLevelList.value = []
201 match.querySonLevel(level).then(res => {
202 sonLevelList.value = res.data
203 })
204 }
205
206 let manNum = 0
207 let femaleNum = 0
208 let mates = []
209 const changeTeammates = (e) => {
210 mates = []
211 manNum = 0
212 femaleNum = 0
213 for (const m of e) {
214 const arr = m.split('_')
215 mates.push(arr[1])
216 if (personal.value.id == arr[1]) {
217 continue
218 }
219 if (arr[0] == '1') {
220 manNum++
221 } else {
222 femaleNum++
223 }
224 }
225 // console.log(mates, mateConfig.value)
226 for (const p of teammateList.value) {
227 if (mateConfig.value.maxMaleCount != -1 && manNum == mateConfig.value.maxMaleCount && p.sex == '1' && mates.indexOf(p.id) == -1) {
228 p.cantchosemate = true
229 } else if (mateConfig.value.maxFemaleCount != -1 && femaleNum == mateConfig.value.maxFemaleCount && p.sex == '0' && mates.indexOf(p.id) == -1) {
230 p.cantchosemate = true
231 } else if (mates.indexOf(p.id) == -1 && mateConfig.value.maxCount != -1 && (mates.length - 1) == mateConfig.value.maxCount) {
232 p.cantchosemate = true
233 } else {
234 p.cantchosemate = false
235 }
236 }
237 }
238 const mateClose = () => {
239 mates = []
240 form.value.mates = []
241 sonLevelIds = []
242 teammateList.value = []
243 }
244
245 function chooseMateDone() {
246 if (mateConfig.value.minMaleCount != '-1' && manNum < mateConfig.value.minMaleCount) {
247 ElMessage.warning(`至少选择${mateConfig.value.minMaleCount}个男队友`)
248 return
249 }
250 if (mateConfig.value.maxMaleCount != '-1' && manNum > mateConfig.value.maxMaleCount) {
251 ElMessage.warning(`最多选择${mateConfig.value.maxMaleCount}个男队友`)
252 return
253 }
254 if (mateConfig.value.minFemaleCount != '-1' && femaleNum < mateConfig.value.minFemaleCount) {
255 ElMessage.warning(`至少选择${mateConfig.value.minFemaleCount}个女队友`)
256 return
257 }
258 if (mateConfig.value.maxFemaleCount != '-1' && femaleNum > mateConfig.value.maxFemaleCount) {
259 ElMessage.warning(`最多选择${mateConfig.value.maxFemaleCount}个女队友`)
260 return
261 }
262 if ((mates.length < mateConfig.value.minCount) && mateConfig.value.minCount > 0) {
263 ElMessage.warning(`至少选择${mateConfig.value.minCount}个队友`)
264 return
265 }
266 const athleteIds = []
267 console.log('mates', mates)
268 for (const p of teammateList.value) {
269 if (mates.indexOf(p.id) != -1) {
270 if (sonLevelList.value.length > 0 && !p.sonlevel) {
271 ElMessage.warning(`请分配级别`)
272 return
273 }
274 sonLevelIds.push(p.sonlevel)
275 athleteIds.push(p.id)
276 }
277 }
278 if (sonLevelList.value.length > 0 && !personal.value.sonlevel) {
279 ElMessage.warning(`请分配级别`)
280 return
281 }
282 sonLevelIds.push(personal.value.sonlevel)
283 athleteIds.push(personal.value.id)
284 if (sonLevelList.value.length == 0) {
285 sonLevelIds = []
286 }
287 const obj = {
288 levelId: noLevelId,
289 athleteIds: athleteIds.toString(),
290 sonLevelIds: sonLevelIds.toString() || '',
291 groupId: groupId,
292 teamId: rankId.value || ''
293 }
294 // 半提交
295 saveOne(obj)
296 }
297
298 const saveOne = (obj) => {
299 loading.value = true
300 match.sportsmanDone(obj).then(res => {
301 if (res.msg.indexOf('Exception:') > -1) {
302 const msg = res.msg.slice(10)
303 ElMessage({
304 type: 'warning',
305 message: msg
306 })
307 // form.value.mates = []
308 sonLevelIds = []
309 return
310 }
311 sonLevelIds = []
312 // form.value.mates = []
313 showMateList.value = false
314 sonLevelList.value = []
315 emit('submitForm')
316 }).catch(err => {
317 // 取消这个勾
318 sonLevelIds = []
319 })
320 }
321
322 </script>
323
324 <style lang="scss" scoped>
325 .optiontitle {
326 font-size: 14px;
327 padding: 0 10px;
328 line-height: 1;
329 margin: 10px 0;
330 border-left: 2px solid #1ab394;
331 }
332
333 .optionFlex {
334 display: flex;
335 align-items: center;
336 padding: 10px 0;
337 width: 200px;
338
339 .name {
340 margin: 0 20px;
341 font-size: 16px;
342 }
343 }
344
345 .el-radio-group {
346 width: 100%;
347 display: block;
348 }
349
350 .athleteBox {
351 height: 80px;
352 display: flex;
353 align-items: center;
354
355 :deep(.el-radio__label) {
356 display: flex;
357 align-items: center;
358 margin: 0 20px;
359 }
360
361 .el-radio__inner {
362 scale: 1.5;
363 }
364
365 .name {
366 margin: 0 20px;
367 font-size: 16px;
368 }
369 }
370
371 .athleteBox:hover {
372 background: #efefef;
373 }
374
375 .tip {
376 font-size: 13px;
377 color: #999;
378 margin: 10px 0;
379
380 i {
381 color: red;
382 margin: 0 4px 0 0;
383 }
384 }
385
386 p.title {
387 font-size: 16px;
388 margin: 0 0 15px;
389 }
390
391 :deep(.el-collapse-item) {
392 background: #FBFCFD;
393 margin: 0 0 16px;
394 padding: 0 15px;
395 }
396
397 :deep(.el-collapse-item__wrap) {
398 background: #FBFCFD;
399 border: none;
400 padding: 0 10px;
401 }
402
403 :deep(.el-collapse) {
404 border: none;
405 }
406
407 :deep(.el-collapse-item__header) {
408 border: none;
409 background: #ececec;
410 padding: 0 0 0 10px; font-size: 15px;
411 }
412
413 :deep(.el-collapse-item__content) {
414 padding-bottom: 0;
415 }
416
417 :deep(.el-checkbox__input.is-disabled+span.el-checkbox__label) {
418 color: #4C5359;
419 }
420
421 .fake-collapse-item {
422 background: #FBFCFD;
423 margin: 0 0 16px;
424 padding: 0 15px;
425 }
426 :deep(.el-checkbox.el-checkbox--large .el-checkbox__label){
427 font-size: 16px;
428 }
429 .teammateList :deep(.el-checkbox.el-checkbox--large) {
430 height: auto;
431 }
432 </style>
...@@ -62,6 +62,12 @@ function submit(res) { ...@@ -62,6 +62,12 @@ function submit(res) {
62 proxy.$modal.msgError(`${res.data.repeatInFileColumn}${language.value == 0? '文件内重复' : 'Repeat In File'}`) 62 proxy.$modal.msgError(`${res.data.repeatInFileColumn}${language.value == 0? '文件内重复' : 'Repeat In File'}`)
63 } 63 }
64 64
65 if(res.data.errIdcTypeColumn.length==0&&res.data.errSexColumn.length==0&&
66 res.data.incompleteColumn.length==0&&res.data.repeatInFileColumn.length==0&&
67 res.data.repeatInSystemColumn.length==0
68 ){
69 proxy.$modal.msgSuccess(res.msg)
70 }
65 } 71 }
66 proxy.$refs['upload'].handleClear() 72 proxy.$refs['upload'].handleClear()
67 emit('submitForm') 73 emit('submitForm')
......
1 <template> 1 <template>
2 <el-dialog 2 <el-dialog
3 v-model="show" :title="title" width="500px" append-to-body :close-on-click-modal="false" 3 v-model="show" :title="title" width="500px" append-to-body :close-on-click-modal="false"
4 destroy-on-close 4 destroy-on-close @close="cancel"
5 > 5 >
6 <el-form label-width="120"> 6 <el-form label-width="120">
7 <el-form-item required :label="item.realName" v-for="item in list"> 7 <el-form-item required :label="item.realName" v-for="item in list">
...@@ -35,7 +35,7 @@ import { ElMessage } from 'element-plus' ...@@ -35,7 +35,7 @@ import { ElMessage } from 'element-plus'
35 import { useRoute } from 'vue-router' 35 import { useRoute } from 'vue-router'
36 36
37 const { proxy } = getCurrentInstance() 37 const { proxy } = getCurrentInstance()
38 const emit = defineEmits(['submitForm']) 38 const emit = defineEmits(['submitForm', 'cancel'])
39 const uploadUrl = ref('/upload/upLoadToFileServer') 39 const uploadUrl = ref('/upload/upLoadToFileServer')
40 const route = useRoute() 40 const route = useRoute()
41 import {useStorage} from "@vueuse/core/index"; 41 import {useStorage} from "@vueuse/core/index";
...@@ -58,6 +58,7 @@ const open = (params) => { ...@@ -58,6 +58,7 @@ const open = (params) => {
58 show.value = true 58 show.value = true
59 title.value = params.title 59 title.value = params.title
60 matchId = params.matchId 60 matchId = params.matchId
61 groupId.value= params.groupId
61 list.value = params.list 62 list.value = params.list
62 init() 63 init()
63 } 64 }
...@@ -88,7 +89,7 @@ function checkCode(item) { ...@@ -88,7 +89,7 @@ function checkCode(item) {
88 return 89 return
89 } 90 }
90 91
91 match.checkWdsf({card: item.wdsfMin}).then(res => { 92 match.checkNoRepeat({card: item.wdsfMin,groupId: groupId.value}).then(res => {
92 if(res.data.wdsfFlag=='0'){ 93 if(res.data.wdsfFlag=='0'){
93 if (language.value == 0) { 94 if (language.value == 0) {
94 ElMessage.warning('验证失败,卡号不存在') 95 ElMessage.warning('验证失败,卡号不存在')
...@@ -103,13 +104,23 @@ function checkCode(item) { ...@@ -103,13 +104,23 @@ function checkCode(item) {
103 }) 104 })
104 } 105 }
105 function submitForm() { 106 function submitForm() {
106 //list.value 107 var arr = []
107 show.value = false 108 for(var n of list.value){
108 emit('submitForm') 109 arr.push({
110 id: n.id,
111 wdsfMin: n.wdsfMin
112 })
113 }
114 // match.saveWdsfMin(arr).then(res=>{
115 // show.value = false
116 // })
117
118 // emit('submitForm')
109 } 119 }
110 120
111 function cancel() { 121 function cancel() {
112 show.value = false 122 show.value = false
123 emit('cancel')
113 } 124 }
114 </script> 125 </script>
115 126
......
...@@ -159,10 +159,10 @@ function getSignList() { ...@@ -159,10 +159,10 @@ function getSignList() {
159 signInfoList.value = res.data.singleData 159 signInfoList.value = res.data.singleData
160 zuTableList.value = res.data.zuData 160 zuTableList.value = res.data.zuData
161 for(var s of signInfoList.value){ 161 for(var s of signInfoList.value){
162 signTotal.value = signTotal.value + Number(s.insuranceFee) 162 signTotal.value = (Number(signTotal.value) + Number(s.insuranceFee)).toFixed(2)
163 } 163 }
164 for(var z of zuTableList.value){ 164 for(var z of zuTableList.value){
165 zuTotal.value = zuTotal.value + Number(z.project.serviceFee) 165 zuTotal.value = (Number(zuTotal.value) + Number(z.project.serviceFee)).toFixed(2)
166 } 166 }
167 }) 167 })
168 } 168 }
......
...@@ -21,25 +21,13 @@ ...@@ -21,25 +21,13 @@
21 </el-col> 21 </el-col>
22 <el-col :sm="24" :lg="12"> 22 <el-col :sm="24" :lg="12">
23 <div class="calendarList"> 23 <div class="calendarList">
24 <ul> 24 <!-- <ul>-->
25 <li> 25 <!-- <li v-for="n in schList">-->
26 <label>08:00~10:30</label> 无锡公开赛 26 <!-- <label>08:00~10:30</label> 无锡公开赛-->
27 </li> 27 <!-- </li>-->
28 <li> 28 <!-- </ul>-->
29 <label>11:00</label> 2024年WDSF公开赛 A组
30 </li>
31 <li>
32 <label>12:00</label> 2024年WDSF公开赛 B组
33 </li>
34 <li>
35 <label>13:00</label> 2024年WDSF公开赛 C组
36 </li>
37 <li>
38 <label>15:00</label> 2024年WDSF公开赛 D组
39 </li>
40 </ul>
41
42 </div> 29 </div>
30 <el-empty :image="`/img/order_no.png`" :image-size="200"/>
43 31
44 </el-col> 32 </el-col>
45 </el-row> 33 </el-row>
...@@ -95,6 +83,7 @@ const years = ref([]) ...@@ -95,6 +83,7 @@ const years = ref([])
95 const currYear = ref(null) 83 const currYear = ref(null)
96 const ztxPlanList = ref([]) 84 const ztxPlanList = ref([])
97 const planList = ref([]) 85 const planList = ref([])
86 const schList = ref([])
98 const loading = ref(false) 87 const loading = ref(false)
99 const calendarValue = ref('2024-07-22') 88 const calendarValue = ref('2024-07-22')
100 89
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!