c22b116f by 杨炀

no message

1 parent 4d8b424f
Showing 42 changed files with 605 additions and 341 deletions
...@@ -148,7 +148,7 @@ li.el-select-dropdown__item { ...@@ -148,7 +148,7 @@ li.el-select-dropdown__item {
148 } 148 }
149 149
150 .el-sub-menu .el-sub-menu__title { 150 .el-sub-menu .el-sub-menu__title {
151 font-size: 20px;color: #000; 151 font-size: 18px;color: #000;
152 } 152 }
153 153
154 .el-menu--horizontal > .el-sub-menu.is-active .el-sub-menu__title { 154 .el-menu--horizontal > .el-sub-menu.is-active .el-sub-menu__title {
......
...@@ -599,3 +599,10 @@ export function upReceipt(data) { ...@@ -599,3 +599,10 @@ export function upReceipt(data) {
599 data:data 599 data:data
600 }) 600 })
601 } 601 }
602 export function signgetSignInfoConflict(query) {
603 return request({
604 url: `/league/sign/getSignInfoConflict`,
605 method: 'get',
606 params:query
607 })
608 }
......
...@@ -74,11 +74,15 @@ div:focus { ...@@ -74,11 +74,15 @@ div:focus {
74 .pl-5 { 74 .pl-5 {
75 padding-left: 5px; 75 padding-left: 5px;
76 } 76 }
77 .pl-15 {
78 padding-left: 15px;
79 }
77 .mr5{margin-right: 5px;} 80 .mr5{margin-right: 5px;}
78 .block { 81 .block {
79 display: block; 82 display: block;
80 } 83 }
81 84 .text-right{text-align: right;
85 }
82 .pointer { 86 .pointer {
83 cursor: pointer; 87 cursor: pointer;
84 } 88 }
......
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
61 import { getToken } from '@/utils/auth' 61 import { getToken } from '@/utils/auth'
62 import _ from 'lodash' 62 import _ from 'lodash'
63 import { computed } from 'vue' 63 import { computed } from 'vue'
64 import cache from "@/plugins/cache";
64 65
65 const props = defineProps({ 66 const props = defineProps({
66 modelValue: [String, Object, Array], 67 modelValue: [String, Object, Array],
...@@ -114,7 +115,11 @@ const fileOriginalName = ref('') ...@@ -114,7 +115,11 @@ const fileOriginalName = ref('')
114 const uploadList = ref([]) 115 const uploadList = ref([])
115 // const baseUrl = import.meta.env.VITE_APP_BASE_API; 116 // const baseUrl = import.meta.env.VITE_APP_BASE_API;
116 const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + props.action) // 上传文件服务器地址 117 const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + props.action) // 上传文件服务器地址
117 const headers = ref({ Authorization: 'Bearer ' + getToken() }) 118 const language = cache.local.get('language') || 0
119 const headers = ref({
120 Authorization: 'Bearer ' + getToken(),
121 ['Content-Language'] : language==0? 'zh_CN':'en_US' ,
122 })
118 const fileList = ref([]) 123 const fileList = ref([])
119 const showTip = computed( 124 const showTip = computed(
120 () => props.isShowTip && (props.fileType || props.fileSize) 125 () => props.isShowTip && (props.fileType || props.fileSize)
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
5 <el-col :lg="12" :md="12" :xs="24"> 5 <el-col :lg="12" :md="12" :xs="24">
6 <ul> 6 <ul>
7 <li> 7 <li>
8 <router-link to="/about">亚洲体育舞蹈节版权所有</router-link> 8 <router-link to="/about"></router-link>
9 </li> 9 </li>
10 <li> 10 <li>
11 <a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:苏ICP备2023054420号-2</a> 11 <a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:苏ICP备2023054420号-2</a>
......
1 <template> 1 <template>
2 <div class="topNav"> 2 <div class="topNav">
3 <router-link to="/"> 3 <router-link to="/">
4 <img class="logo" src="@/assets/v1/nav_logo.png"> 4 <!-- <img class="logo" src="@/assets/v1/nav_logo.png">-->
5 <img class="logo" src="/img/logoArr.png">
5 </router-link> 6 </router-link>
6 7
7 <div class="home-menu forPc" style="margin: 0 20px"> 8 <div class="home-menu forPc" style="margin: 0 20px">
8 <el-menu 9 <el-menu v-if="language==0"
10 router :default-active="activeIndex" :mode="mode" :ellipsis="true"
11 popper-effect="dark" @select="handleSelect"
12 >
13 <el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item>
14 <el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item>
15 <el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item>
16 <el-menu-item index="/match/list/0">{{ language==0?'大赛报名':'SIGN UP' }}</el-menu-item>
17 <el-menu-item index="/saiC">{{ language==0?'赛程安排':'COMPETITIONS' }}</el-menu-item>
18 <el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item>
19 <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>
20 <el-sub-menu index="/about">
21 <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>
22 <el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>
23 <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>
24 <el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>
25 </el-sub-menu>
26 </el-menu>
27 <el-menu v-else class="enMenu"
9 router :default-active="activeIndex" :mode="mode" :ellipsis="true" 28 router :default-active="activeIndex" :mode="mode" :ellipsis="true"
10 popper-effect="dark" @select="handleSelect" 29 popper-effect="dark" @select="handleSelect"
11 > 30 >
...@@ -220,6 +239,9 @@ function getCode() { ...@@ -220,6 +239,9 @@ function getCode() {
220 </script> 239 </script>
221 240
222 <style scoped lang="scss"> 241 <style scoped lang="scss">
242 .home-menu .enMenu{
243 //.el-menu-item{margin: 0 3px!important;}
244 }
223 .loginBtn {color: #fff;margin-right: 15px;border: none; 245 .loginBtn {color: #fff;margin-right: 15px;border: none;
224 background: linear-gradient(-90deg, #8623FC, #453DEA);box-shadow:0 0 10px #fff; 246 background: linear-gradient(-90deg, #8623FC, #453DEA);box-shadow:0 0 10px #fff;
225 &:active { 247 &:active {
...@@ -296,7 +318,7 @@ function getCode() { ...@@ -296,7 +318,7 @@ function getCode() {
296 :deep(.el-input){height: 100%} 318 :deep(.el-input){height: 100%}
297 :deep(.el-form-item){height: 40px;} 319 :deep(.el-form-item){height: 40px;}
298 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0 5px; font-size: 18px;} 320 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0 5px; font-size: 18px;}
299 .home-menu .el-sub-menu .el-sub-menu__title{font-size: 18px;} 321 .home-menu .el-sub-menu{font-size: 16px;}
300 .weiMenu.el-menu{ 322 .weiMenu.el-menu{
301 border: none; 323 border: none;
302 :deep(.el-menu-item.is-active){color: var(--el-color-primary);} 324 :deep(.el-menu-item.is-active){color: var(--el-color-primary);}
...@@ -309,31 +331,36 @@ function getCode() { ...@@ -309,31 +331,36 @@ function getCode() {
309 :deep(.el-sub-menu__title){font-size: 20px} 331 :deep(.el-sub-menu__title){font-size: 20px}
310 :deep(.el-sub-menu .el-sub-menu__icon-arrow){font-size: 20px} 332 :deep(.el-sub-menu .el-sub-menu__icon-arrow){font-size: 20px}
311 } 333 }
312 334 @media (max-width: 1675px) {
313 @media (max-width: 1400px) {
314 .search { 335 .search {
315 display: none; 336 display: none;
316 } 337 }
317 } 338 }
339 @media (max-width: 1620px) {
340 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0 2px; }
341 }
342 @media (max-width: 1450px) {
343 .home-menu .el-menu--horizontal > .el-menu-item{font-size: 15px}
344 }
318 @media (max-width: 1340px) { 345 @media (max-width: 1340px) {
319 .loginBtn { 346 .loginBtn {
320 display: none; 347 display: none;
321 } 348 }
322 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0; } 349 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0; }
323 } 350 }
351 @media (max-width: 1250px) {
352 .home-menu .el-menu--horizontal > .el-menu-item{font-size: 14px}
353 .topNav .logo{height: 50px}
354 }
324 @media (max-width: 1000px) { 355 @media (max-width: 1000px) {
325 .box { 356 .box {
326 width: 100% 357 width: 100%
327 } 358 }
328 }
329
330 @media (max-width: 800px) {
331
332 .ropenbtn{display: block}
333
334 .forPc { 359 .forPc {
335 display: none; 360 display: none;
336 } 361 }
362 .ropenbtn{display: block}
363
337 } 364 }
338 365
339 </style> 366 </style>
......
1 <template> 1 <template>
2 <div class="topNav"> 2 <div class="topNav">
3 <router-link to="/"> 3 <router-link to="/">
4 <img class="logo" src="@/assets/v1/nav_logo.png"> 4 <img class="logo" src="/img/logoArr.png">
5 </router-link> 5 </router-link>
6 6
7 <div class="flex-right" style="display:none;"> 7 <div class="flex-right" style="display:none;">
......
...@@ -353,6 +353,49 @@ export const constantRoutes = [ ...@@ -353,6 +353,49 @@ export const constantRoutes = [
353 ] 353 ]
354 }, 354 },
355 { 355 {
356 path: 'booking',
357 component: Empty,
358 redirect: '/booking',
359 children: [
360 {
361 path: '0/:cptId',
362 component: () => import('@/viewsPc/booking/ticket'),
363 name: 'ticket',
364 meta: { title: '票务预订' }
365 },
366 {
367 path: '1/:cptId',
368 component: () => import('@/viewsPc/booking/hotel'),
369 name: 'hotel',
370 meta: { title: '酒店预约' }
371 },
372 {
373 path: '2/:cptId',
374 component: () => import('@/viewsPc/booking/car'),
375 name: 'car',
376 meta: { title: '车辆预约' }
377 },
378 {
379 path: '3/:cptId',
380 component: () => import('@/viewsPc/booking/dinner'),
381 name: 'dinner',
382 meta: { title: '餐饮预订' }
383 },
384 {
385 path: '4/:cptId',
386 component: () => import('@/viewsPc/booking/makeUp'),
387 name: 'makeUp',
388 meta: { title: '化妆预约' }
389 },
390 {
391 path: '5/:cptId',
392 component: () => import('@/viewsPc/booking/photo'),
393 name: 'photo',
394 meta: { title: '拍照预约' }
395 },
396 ]
397 },
398 {
356 path: 'search', 399 path: 'search',
357 component: Empty, 400 component: Empty,
358 redirect: '/search', 401 redirect: '/search',
......
1 <template>
2 <div>
3 <div class="box">
4
5 </div>
6
7 </div>
8 </template>
9
10 <script setup>
11
12 </script>
13
14 <style scoped>
15
16 </style>
1 <template>
2 <div>
3 <div class="box">
4
5 </div>
6
7 </div>
8 </template>
9
10 <script setup>
11
12 </script>
13
14 <style scoped>
15
16 </style>
1 <template>
2 <div>
3 <div class="box">
4
5 </div>
6
7 </div>
8 </template>
9
10 <script setup>
11
12 </script>
13
14 <style scoped>
15
16 </style>
1 <template>
2 <div>
3 <div class="box">
4
5 </div>
6
7 </div>
8 </template>
9
10 <script setup>
11
12 </script>
13
14 <style scoped>
15
16 </style>
1 <template>
2 <div>
3 <div class="box">
4
5 </div>
6
7 </div>
8 </template>
9
10 <script setup>
11
12 </script>
13
14 <style scoped>
15
16 </style>
1 <template>
2 <div>
3 <div class="box">
4
5 </div>
6
7 </div>
8 </template>
9
10 <script setup>
11
12 </script>
13
14 <style scoped>
15
16 </style>
...@@ -45,13 +45,13 @@ import {useRoute, useRouter} from 'vue-router' ...@@ -45,13 +45,13 @@ import {useRoute, useRouter} from 'vue-router'
45 import {onMounted} from '@vue/runtime-core' 45 import {onMounted} from '@vue/runtime-core'
46 import useUserStore from '@/store/modules/user' 46 import useUserStore from '@/store/modules/user'
47 import _ from 'lodash' 47 import _ from 'lodash'
48 import cache from "@/plugins/cache"; 48 import {useStorage} from "@vueuse/core/index";
49 const language = ref(cache.local.get('language') || 0) 49 const language= useStorage('language',0)
50 50
51 const route = useRoute() 51 const route = useRoute()
52 const router = useRouter() 52 const router = useRouter()
53 53
54 const user = ref({}) 54 const user = useUserStore().user || {}
55 const menus = ref([ 55 const menus = ref([
56 { 56 {
57 name: language.value==0?'基础信息':'Basic Information', 57 name: language.value==0?'基础信息':'Basic Information',
...@@ -118,13 +118,6 @@ const menusPersonal = ref([ ...@@ -118,13 +118,6 @@ const menusPersonal = ref([
118 picUrl2: '/img/nav_27_dwn.png', 118 picUrl2: '/img/nav_27_dwn.png',
119 isActive: false 119 isActive: false
120 }, 120 },
121 {
122 name: language.value==0?'选手管理':'Player Management',
123 routeName: 'myMember',
124 picUrl1: '/img/nav_31.png',
125 picUrl2: '/img/nav_31_dwn.png',
126 isActive: false
127 },
128 { 121 {
129 name: language.value==0?'我的报名':'My Registration', 122 name: language.value==0?'我的报名':'My Registration',
130 routeName: 'myMatch', 123 routeName: 'myMatch',
...@@ -149,20 +142,25 @@ const menusPersonal = ref([ ...@@ -149,20 +142,25 @@ const menusPersonal = ref([
149 ]) 142 ])
150 let currMenu 143 let currMenu
151 onMounted(() => { 144 onMounted(() => {
152 user.value = useUserStore().user || {} 145 if(!user.utype){
146 router.push({name: 'home'})
147 return
148 }
153 if(user.utype=='1'){ 149 if(user.utype=='1'){
154 currMenu = _.find(menus.value, (m) => {
155 return m.routeName === route.name
156 })
157 }else {
158 currMenu = _.find(menusPersonal.value, (m) => { 150 currMenu = _.find(menusPersonal.value, (m) => {
159 return m.routeName === route.name 151 return m.routeName === route.name
160 }) 152 })
153 currMenu.isActive = true
161 } 154 }
155 console.log(route.name)
162 156
163 if (currMenu) { 157 if(user.utype=='2'){
158 currMenu = _.find(menus.value, (m) => {
159 return m.routeName === route.name
160 })
164 currMenu.isActive = true 161 currMenu.isActive = true
165 } 162 }
163
166 }) 164 })
167 165
168 const toInfo = (item,list) => { 166 const toInfo = (item,list) => {
......
...@@ -68,10 +68,10 @@ ...@@ -68,10 +68,10 @@
68 <legend>{{ language==0?'机构法人信息':'Institutional legal person information' }} </legend> 68 <legend>{{ language==0?'机构法人信息':'Institutional legal person information' }} </legend>
69 <div class="pt30" style="max-width: 500px"> 69 <div class="pt30" style="max-width: 500px">
70 <el-form-item :label="language==0?'法人姓名':'Legal Person Name'" required> 70 <el-form-item :label="language==0?'法人姓名':'Legal Person Name'" required>
71 <el-input type="text" v-model="form.orgCode" :placeholder="language==0?'请输入内容':''"/> 71 <el-input type="text" v-model="form.legalName" :placeholder="language==0?'请输入内容':''"/>
72 </el-form-item> 72 </el-form-item>
73 <el-form-item :label="language==0?'法定代表人身份文件':'Identity documents of the legal representative'" required > 73 <el-form-item :label="language==0?'法定代表人身份文件':'Identity documents of the legal representative'" required >
74 <file-upload :is-show-tip="false" v-model="form.orgCert" :button-text="language==0?'上传文件':'Upload'"/> 74 <file-upload :is-show-tip="false" v-model="form.legalFile" :button-text="language==0?'上传文件':'Upload'"/>
75 </el-form-item> 75 </el-form-item>
76 76
77 </div> 77 </div>
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
79 79
80 </el-form> 80 </el-form>
81 <div class="text-center mt30"> 81 <div class="text-center mt30">
82 <el-button type="primary" class="btn-lineG w200px" round>{{ language==0?'提交审核':'Submit' }}</el-button> 82 <el-button type="primary" class="btn-lineG w200px" @click="submit" round>{{ language==0?'提交审核':'Submit' }}</el-button>
83 </div> 83 </div>
84 </div> 84 </div>
85 </el-card> 85 </el-card>
...@@ -100,7 +100,7 @@ const form = ref({}) ...@@ -100,7 +100,7 @@ const form = ref({})
100 const regionsList = ref([]) 100 const regionsList = ref([])
101 const countryList = ref([]) 101 const countryList = ref([])
102 function submit() { 102 function submit() {
103 commitAudit().then(res => { 103 commitAudit(form.value).then(res => {
104 104
105 }) 105 })
106 } 106 }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
10 </div> 10 </div>
11 <!-- uType字段 1 是个人 2是团体--> 11 <!-- uType字段 1 是个人 2是团体-->
12 <!-- {{user}}--> 12 <!-- {{user}}-->
13 <team-info :form="myform" :language="language" v-if="user.utype=='2'"/> 13 <team-info :form="myform" v-if="user.utype=='2'"/>
14 <div class="pd20" v-else> 14 <div class="pd20" v-else>
15 <div class="d-form-border" style="margin-top: 0"> 15 <div class="d-form-border" style="margin-top: 0">
16 <el-form class="d-form" label-width="120" :rules="rules" ref="formref"> 16 <el-form class="d-form" label-width="120" :rules="rules" ref="formref">
......
...@@ -57,12 +57,6 @@ ...@@ -57,12 +57,6 @@
57 :total="total" 57 :total="total"
58 @pagination="getList" 58 @pagination="getList"
59 /> 59 />
60
61 <!-- 报项详情-->
62 <dialogModifySign :props="dialogModifySignProps"/>
63 <!-- 订单详情-->
64 <dialogModifyBill :props="dialogModifyBillProps"/>
65
66 </el-card> 60 </el-card>
67 61
68 </template> 62 </template>
...@@ -71,14 +65,13 @@ ...@@ -71,14 +65,13 @@
71 import {ref} from 'vue' 65 import {ref} from 'vue'
72 import {useRouter} from 'vue-router' 66 import {useRouter} from 'vue-router'
73 import {getCurrentInstance, onMounted} from '@vue/runtime-core' 67 import {getCurrentInstance, onMounted} from '@vue/runtime-core'
74 import dialogModifySign from './component/modifySign'
75 import dialogModifyBill from './component/modifyBill'
76 import * as match from '@/apiPc/match' 68 import * as match from '@/apiPc/match'
77 import {ElMessage, ElMessageBox} from 'element-plus' 69 import {ElMessage, ElMessageBox} from 'element-plus'
78 import _ from 'lodash' 70 import _ from 'lodash'
79 import useUserStore from "@/store/modules/user"; 71 import useUserStore from "@/store/modules/user";
80 import cache from "@/plugins/cache"; 72 import cache from "@/plugins/cache";
81 const language = ref(cache.local.get('language') || 0) 73 import {useStorage} from "@vueuse/core/index";
74 const language= useStorage('language',0)
82 const router = useRouter() 75 const router = useRouter()
83 const {proxy} = getCurrentInstance() 76 const {proxy} = getCurrentInstance()
84 const total = ref(0) 77 const total = ref(0)
...@@ -96,9 +89,6 @@ const dialogModifyBillProps = ref({ ...@@ -96,9 +89,6 @@ const dialogModifyBillProps = ref({
96 ...dialogPropsBase 89 ...dialogPropsBase
97 }) 90 })
98 const activeName = ref('first') 91 const activeName = ref('first')
99 const myform = ref({})
100
101 const groupList = ref([])
102 const cptPeriodArr = ref([]) 92 const cptPeriodArr = ref([])
103 const payTimeArr = ref([]) 93 const payTimeArr = ref([])
104 const commitTimeArr = ref([]) 94 const commitTimeArr = ref([])
...@@ -113,12 +103,6 @@ const query2 = ref({ ...@@ -113,12 +103,6 @@ const query2 = ref({
113 pageNum: 1, 103 pageNum: 1,
114 pageSize: 10 104 pageSize: 10
115 }) 105 })
116 const payType = ref('')
117 const payPop = ref(false)
118 const showOrganizerInfo = ref(false)
119 const showResult = ref(false)
120 const myBalance = ref('')
121 const nowBill = ref({})
122 const org = ref({}) 106 const org = ref({})
123 const user = useUserStore().user 107 const user = useUserStore().user
124 const group = useUserStore().group 108 const group = useUserStore().group
...@@ -194,74 +178,12 @@ function getList() { ...@@ -194,74 +178,12 @@ function getList() {
194 }) 178 })
195 } 179 }
196 180
197 function signRow(row) {
198 _.assign(dialogModifySignProps.value, dialogPropsBase, {
199 open: true,
200 isView: true,
201 title: '报项详情',
202 data: {...row}
203 })
204 }
205
206 // function getMemberInfoByCptId(cptId) { 181 // function getMemberInfoByCptId(cptId) {
207 // match.getMemberInfoByCptId(cptId).then((res) => { 182 // match.getMemberInfoByCptId(cptId).then((res) => {
208 // myBalance.value = res.data.balance 183 // myBalance.value = res.data.balance
209 // }) 184 // })
210 // } 185 // }
211 186
212 function goPay(bill) {
213 console.log(bill)
214 payPop.value = true
215 nowBill.value = bill
216 // getMemberInfoByCptId(bill.cptId)
217 }
218
219 function payBill() {
220 if (!payType.value) {
221 ElMessage.error('请选择支付方式')
222 return
223 }
224 match.payMatch({orderId: nowBill.value.id, payType: payType.value}).then(res => {
225 if (payType.value == 2) {
226 org.value = res.data.org
227 showOrganizerInfo.value = true
228 } else if (payType.value == 1) {
229 // 微信
230 proxy.$refs['wePayRef'].open(res.data)
231 } else {
232 showResult.value = true
233 }
234 })
235 }
236
237 function billDetail(bill) {
238 _.assign(dialogModifyBillProps.value, dialogPropsBase, {
239 open: true,
240 isView: true,
241 title: '订单详情',
242 data: {...bill}
243 })
244 }
245
246 function cancelBill(bill) {
247 ElMessageBox.confirm('确定取消订单吗?', '提示', {
248 confirmButtonText: '确定',
249 cancelButtonText: '取消',
250 type: 'warning'
251 }).then(() => {
252 match.cancelMyUnPayedOrder(bill.id).then(Response => {
253 console.log(Response.data)
254 // 刷新数据
255 getList()
256 })
257 })
258 }
259
260 function downloadVoucher(row) {
261 proxy.download(
262 `/ztx-match/pdf/getPayedOrderPdf/${row.id}/${row.groupId || 0}`, {}, '报项凭证.pdf'
263 )
264 }
265 </script> 187 </script>
266 188
267 <style scoped lang="scss"> 189 <style scoped lang="scss">
...@@ -364,7 +286,7 @@ function downloadVoucher(row) { ...@@ -364,7 +286,7 @@ function downloadVoucher(row) {
364 width: auto; 286 width: auto;
365 } 287 }
366 .ppl{font-size: 14px; 288 .ppl{font-size: 14px;
367 label{color: #929AA0;} 289 label{color: #929AA0;display: block;font-size: 12px;}
368 } 290 }
369 .btnbox{text-align: right;} 291 .btnbox{text-align: right;}
370 </style> 292 </style>
......
...@@ -9,16 +9,6 @@ ...@@ -9,16 +9,6 @@
9 <el-form-item :label="language==0?'姓名':'Name'"> 9 <el-form-item :label="language==0?'姓名':'Name'">
10 <el-input v-model="query.realName" style="width: 120px;" clearable/> 10 <el-input v-model="query.realName" style="width: 120px;" clearable/>
11 </el-form-item> 11 </el-form-item>
12 <!-- <el-form-item :label="language==0?'短名':'Nick Name'">-->
13 <!-- <el-input v-model="query.shortName" style="width: 120px;" clearable/>-->
14 <!-- </el-form-item>-->
15 <!-- <el-form-item :label="language==0?'手机号码':'Phone'">-->
16 <!-- <el-input v-model="query.phone" style="width: 120px;" clearable/>-->
17 <!-- </el-form-item>-->
18 <!-- <el-form-item :label="language==0?'邮箱':'E-mail'">-->
19 <!-- <el-input v-model="query.email" style="width: 120px;" clearable/>-->
20 <!-- </el-form-item>-->
21
22 <el-form-item :label="language==0?'证件类型':'ID Type'"> 12 <el-form-item :label="language==0?'证件类型':'ID Type'">
23 <el-input v-model="query.idcType" style="width: 120px;" clearable/> 13 <el-input v-model="query.idcType" style="width: 120px;" clearable/>
24 </el-form-item> 14 </el-form-item>
......
...@@ -73,14 +73,12 @@ import * as match from '@/apiPc/match' ...@@ -73,14 +73,12 @@ import * as match from '@/apiPc/match'
73 import { ElMessage, ElMessageBox } from 'element-plus' 73 import { ElMessage, ElMessageBox } from 'element-plus'
74 import useUserStore from '@/store/modules/user' 74 import useUserStore from '@/store/modules/user'
75 import _ from "lodash"; 75 import _ from "lodash";
76 import {useStorage} from "@vueuse/core/index";
77 const language= useStorage('language',0)
76 const props = defineProps({ 78 const props = defineProps({
77 form:{ 79 form:{
78 type:Object, 80 type:Object,
79 required:true 81 required:true
80 },
81 language:{
82 type:Number,
83 required:true
84 } 82 }
85 }) 83 })
86 const countryList = ref([]) 84 const countryList = ref([])
......
...@@ -412,6 +412,7 @@ const scores = ref([]) ...@@ -412,6 +412,7 @@ const scores = ref([])
412 const nowscores = ref([]) 412 const nowscores = ref([])
413 const livelist = ref([]) 413 const livelist = ref([])
414 const matchData = ref({}) 414 const matchData = ref({})
415 const loading = ref(false)
415 const picList = ref([]) 416 const picList = ref([])
416 const calendarValue = ref(dayjs('2024-07-22').toDate()) 417 const calendarValue = ref(dayjs('2024-07-22').toDate())
417 const calendarRange = ref([dayjs('2024-07-21').toDate(),dayjs('2024-07-27').toDate()]) 418 const calendarRange = ref([dayjs('2024-07-21').toDate(),dayjs('2024-07-27').toDate()])
...@@ -448,7 +449,6 @@ const init = () => { ...@@ -448,7 +449,6 @@ const init = () => {
448 match.getMaList().then((res) => { 449 match.getMaList().then((res) => {
449 match.getMatchById({id: res.rows[0].id}).then(resposn => { 450 match.getMatchById({id: res.rows[0].id}).then(resposn => {
450 matchData.value = resposn.data 451 matchData.value = resposn.data
451 loading.value = false
452 // var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 452 // var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
453 // time.value = dayjs(resposn.data.signEndTime).diff(today, 'millisecond') 453 // time.value = dayjs(resposn.data.signEndTime).diff(today, 'millisecond')
454 }) 454 })
......
...@@ -393,7 +393,7 @@ function submitForm(n) { ...@@ -393,7 +393,7 @@ function submitForm(n) {
393 } 393 }
394 if (showPersonList.value) { 394 if (showPersonList.value) {
395 if (myMemberTable.value.length == 0) { 395 if (myMemberTable.value.length == 0) {
396 ElMessageBox.confirm(language.value == 0 ? '是否继续添加随人员?' : 'Do you want to add casual personnel?', 396 ElMessageBox.confirm(language.value == 0 ? '是否继续添加随人员?' : 'Do you want to add casual personnel?',
397 language.value == 0 ? '提示' : 'Tip', { 397 language.value == 0 ? '提示' : 'Tip', {
398 confirmButtonText: language.value == 0 ? '确定' : 'Yes', 398 confirmButtonText: language.value == 0 ? '确定' : 'Yes',
399 cancelButtonText: language.value == 0 ? '取消' : 'Cancel', 399 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
...@@ -407,7 +407,7 @@ function submitForm(n) { ...@@ -407,7 +407,7 @@ function submitForm(n) {
407 commit() 407 commit()
408 } 408 }
409 } else { 409 } else {
410 ElMessageBox.confirm(language.value == 0 ? '是否添加随人员?' : 'Do you want to add casual personnel?', 410 ElMessageBox.confirm(language.value == 0 ? '是否添加随人员?' : 'Do you want to add casual personnel?',
411 language.value == 0 ? '提示' : 'Tip', { 411 language.value == 0 ? '提示' : 'Tip', {
412 confirmButtonText: language.value == 0 ? '确定' : 'Yes', 412 confirmButtonText: language.value == 0 ? '确定' : 'Yes',
413 cancelButtonText: language.value == 0 ? '取消' : 'Cancel', 413 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
...@@ -616,6 +616,7 @@ const goPersonInfo = (row) => { ...@@ -616,6 +616,7 @@ const goPersonInfo = (row) => {
616 console.log(row) 616 console.log(row)
617 // debugger 617 // debugger
618 const params = { 618 const params = {
619 matchId: matchId.value,
619 title: language.value==0?'完善补充信息':'Complete the supplementary information', 620 title: language.value==0?'完善补充信息':'Complete the supplementary information',
620 participantsInfoArr: extraform.value, 621 participantsInfoArr: extraform.value,
621 personId: row.personInfo.id, 622 personId: row.personInfo.id,
......
...@@ -22,10 +22,10 @@ ...@@ -22,10 +22,10 @@
22 </div> 22 </div>
23 <div class="noPicChooseForm"> 23 <div class="noPicChooseForm">
24 <el-checkbox-group v-model="choosedchoosed" @change="changechoosed"> 24 <el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
25 <el-button plain @click="chooseSportman">+{{ language == 0 ?'选择':'add' }}</el-button> 25 <el-button plain @click="chooseSportman">+{{ language == 0 ? '选择' : 'add' }}</el-button>
26 <el-checkbox v-for="c in choosedList" :label="c.id" border> 26 <el-checkbox v-for="c in choosedListBak" :label="c.id" border>
27 <p class="name">{{ c.realName }} 27 <p class="name">{{ c.realName }}
28 <!-- ({{ c.sexStr }})--> 28 <!-- ({{ c.sexStr }})-->
29 <img v-if="c.sex=='0'" src="@/assets/img/female.png"/> 29 <img v-if="c.sex=='0'" src="@/assets/img/female.png"/>
30 <img v-if="c.sex=='1'" src="@/assets/img/male.png"/> 30 <img v-if="c.sex=='1'" src="@/assets/img/male.png"/>
31 </p> 31 </p>
...@@ -43,12 +43,14 @@ ...@@ -43,12 +43,14 @@
43 <a class="fr" @click="emptyChangechoosed">{{ language == 0 ? '清空' : 'Empty' }}</a> 43 <a class="fr" @click="emptyChangechoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>
44 </div> 44 </div>
45 <div class="panel-body" style="padding: 10px"> 45 <div class="panel-body" style="padding: 10px">
46 <div class="mb20"><el-input size="small" v-model="zuQuery.name" :prefix-icon="Search" 46 <div class="mb20">
47 @change="queryTeam" clearable/></div> 47 <el-input size="small" v-model="zuQuery.name" :prefix-icon="Search"
48 @change="queryTeam" clearable/>
49 </div>
48 <div class="chooseForm"> 50 <div class="chooseForm">
49 <el-checkbox-group v-model="choosedchoosed" @change="changechoosed"> 51 <el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
50 <!-- v-show="choosedchoosed.indexOf(c.id) !== -1"--> 52 <!-- v-show="choosedchoosed.indexOf(c.id) !== -1"-->
51 <el-checkbox v-for="c in choosed2List" :label="c.id" checked> 53 <el-checkbox v-for="c in choosed2Listbak" :label="c.id" checked>
52 <el-avatar fit="cover" v-if="c.picUrl" :size="60" :src="fillImgUrl(c.picUrl)"/> 54 <el-avatar fit="cover" v-if="c.picUrl" :size="60" :src="fillImgUrl(c.picUrl)"/>
53 <el-avatar fit="cover" v-else-if="c.sex == 0" :size="60" src="/img/head1.png"/> 55 <el-avatar fit="cover" v-else-if="c.sex == 0" :size="60" src="/img/head1.png"/>
54 <el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="/img/head0.png"/> 56 <el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="/img/head0.png"/>
...@@ -84,7 +86,7 @@ ...@@ -84,7 +86,7 @@
84 {{ c.code }}:{{ c.name }} 86 {{ c.code }}:{{ c.name }}
85 <div>{{ c.danceTypeDetailStr }}</div> 87 <div>{{ c.danceTypeDetailStr }}</div>
86 </div> 88 </div>
87 <div class="text-primary">{{ language==0?'¥':'€' }}{{ c.serviceFee }}</div> 89 <div class="text-primary">{{ language == 0 ? '¥' : '€' }}{{ c.serviceFee }}</div>
88 </div> 90 </div>
89 </el-checkbox> 91 </el-checkbox>
90 </el-checkbox-group> 92 </el-checkbox-group>
...@@ -97,7 +99,8 @@ ...@@ -97,7 +99,8 @@
97 <el-row class="mt20"> 99 <el-row class="mt20">
98 <el-col :span="24"> 100 <el-col :span="24">
99 <div class="text-center"> 101 <div class="text-center">
100 <el-button type="primary" class="btn-lineG w200px" round @click="signUp"> 102 <el-button type="primary" class="btn-lineG w200px"
103 :disabled="projectIds.length==0||choosedchoosed.length==0" round @click="signUp">
101 {{ language == 0 ? '确定' : 'Confirm' }} 104 {{ language == 0 ? '确定' : 'Confirm' }}
102 </el-button> 105 </el-button>
103 </div> 106 </div>
...@@ -127,9 +130,9 @@ ...@@ -127,9 +130,9 @@
127 <!-- </el-button>--> 130 <!-- </el-button>-->
128 <!-- </div>--> 131 <!-- </div>-->
129 <sign-info-table v-if="tableType==0" :match-id="matchId" 132 <sign-info-table v-if="tableType==0" :match-id="matchId"
130 :extraform="extraform" :language="language" :list="signInfoList" 133 :extraform="extraform" :list="signInfoList"
131 @editExtra="goPersonInfo"/> 134 @editExtra="goPersonInfo"/>
132 <zu-table v-else :list="zuTableList" :language="language" @delete="removeThis"/> 135 <zu-table v-else :list="zuTableList" @delete="removeThis"/>
133 <div class="text-center mt20"> 136 <div class="text-center mt20">
134 <el-button type="primary" class="w200px" plain round @click="goPrev()"> 137 <el-button type="primary" class="w200px" plain round @click="goPrev()">
135 {{ language == 0 ? "上一步" : 'Go back' }} 138 {{ language == 0 ? "上一步" : 'Go back' }}
...@@ -163,7 +166,7 @@ ...@@ -163,7 +166,7 @@
163 </template> 166 </template>
164 167
165 <script setup> 168 <script setup>
166 import {ref, reactive, toRefs} from 'vue' 169 import {ref, reactive, toRefs, watch} from 'vue'
167 import * as match from '@/apiPc/match' 170 import * as match from '@/apiPc/match'
168 import {getCurrentInstance, onMounted} from '@vue/runtime-core' 171 import {getCurrentInstance, onMounted} from '@vue/runtime-core'
169 import dialogAddCoach from './components/addCoach' 172 import dialogAddCoach from './components/addCoach'
...@@ -183,6 +186,8 @@ import TeamSignStep from "@/viewsPc/match/components/teamSignStep" ...@@ -183,6 +186,8 @@ import TeamSignStep from "@/viewsPc/match/components/teamSignStep"
183 import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row" 186 import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row"
184 import SignInfoTable from "@/viewsPc/match/components/signInfo-table" 187 import SignInfoTable from "@/viewsPc/match/components/signInfo-table"
185 import ZuTable from '@/viewsPc/match/components/zu-table' 188 import ZuTable from '@/viewsPc/match/components/zu-table'
189 import {signgetSignInfoConflict} from "@/apiPc/match";
190
186 const language = ref(cache.local.get('language') || 0) 191 const language = ref(cache.local.get('language') || 0)
187 192
188 const data = reactive({ 193 const data = reactive({
...@@ -191,11 +196,12 @@ const data = reactive({ ...@@ -191,11 +196,12 @@ const data = reactive({
191 signInfoList: [], 196 signInfoList: [],
192 zuTableList: [], 197 zuTableList: [],
193 choosedList: [], 198 choosedList: [],
199 choosedListBak: [],
194 athletesQuery: { 200 athletesQuery: {
195 name:'' 201 name: ''
196 }, 202 },
197 zuQuery: { 203 zuQuery: {
198 name:'' 204 name: ''
199 }, 205 },
200 extraPersonInfoMapList: [], 206 extraPersonInfoMapList: [],
201 teamList: [], 207 teamList: [],
...@@ -213,13 +219,15 @@ const data = reactive({ ...@@ -213,13 +219,15 @@ const data = reactive({
213 choosedchoosed: [], 219 choosedchoosed: [],
214 projectIds: [], 220 projectIds: [],
215 projectList: [], 221 projectList: [],
216 choosed2List: [], projectQuery: {}, tableType: 1 222 choosed2List: [],
223 choosed2Listbak: [],
224 projectQuery: {}, tableType: 1
217 }) 225 })
218 const { 226 const {
219 activeTeam, names, tableData, signInfoList, zuTableList, choosedList, showExtraForm, extraPersonInfoMapList, teamList, 227 activeTeam, names, tableData, signInfoList, zuTableList, choosedList,choosedListBak, showExtraForm, extraPersonInfoMapList, teamList,
220 extraform, groupId, signType, coachOrLeaderFlag, showResult, noPhotoCanSign, extraTableHead, 228 extraform, groupId, signType, coachOrLeaderFlag, showResult, noPhotoCanSign, extraTableHead,
221 coachForm, projectIds, choosedchoosed, activeStep, projectList, choosed2List, loadingProject, 229 coachForm, projectIds, choosedchoosed, activeStep, projectList, choosed2List,choosed2Listbak, loadingProject,
222 projectQuery, tableType,athletesQuery,zuQuery 230 projectQuery, tableType, athletesQuery, zuQuery
223 } = toRefs(data) 231 } = toRefs(data)
224 const matchId = ref(route.query.matchId) 232 const matchId = ref(route.query.matchId)
225 let signInfoType = null 233 let signInfoType = null
...@@ -261,29 +269,16 @@ function getSignInfoList() { ...@@ -261,29 +269,16 @@ function getSignInfoList() {
261 }).then(res => { 269 }).then(res => {
262 signInfoList.value = res.data.singleData || [] 270 signInfoList.value = res.data.singleData || []
263 zuTableList.value = res.data.zuData || [] 271 zuTableList.value = res.data.zuData || []
264 // if(signInfoTable.value.length>0){
265 // let choosedIds = []
266 // for(let p of choosedList.value){
267 // choosedIds.push(p.id)
268 // }
269 // for(var pp of signInfoTable.value){
270 // if(choosedIds.indexOf(pp.personInfo.id)==-1){
271 // // 判断是否已存在
272 // choosedList.value.push(pp.personInfo)
273 // }
274 // }
275 // }
276 }) 272 })
277 } 273 }
278 274
279 275
280
281 function submitForm() { 276 function submitForm() {
282 if (signInfoType == '1') { 277 if (signInfoType == '1') {
283 ElMessageBox.confirm(language.value==0?'已报项,前往我的报项':'Reported items, go to my submission', 278 ElMessageBox.confirm(language.value == 0 ? '已报项,前往我的报项' : 'Reported items, go to my submission',
284 language.value==0?'提示':'Tips', { 279 language.value == 0 ? '提示' : 'Tips', {
285 confirmButtonText: language.value==0?'确定':'OK', 280 confirmButtonText: language.value == 0 ? '确定' : 'OK',
286 cancelButtonText: language.value==0?'取消':'Cancel', 281 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
287 type: 'warning' 282 type: 'warning'
288 }).then(() => { 283 }).then(() => {
289 router.push({name: 'myMatch'}) 284 router.push({name: 'myMatch'})
...@@ -299,31 +294,13 @@ function submitForm() { ...@@ -299,31 +294,13 @@ function submitForm() {
299 } 294 }
300 for (const s of signInfoList.value) { 295 for (const s of signInfoList.value) {
301 if (s.extraPersonInfo == null && needBuchong) { 296 if (s.extraPersonInfo == null && needBuchong) {
302 ElMessage.error('请完善运动员补充信息') 297 ElMessage.error(language.value == 0 ? '请完善补充信息' : 'Please fill in the supplementary information')
303 tableType.value = 0 298 tableType.value = 0
304 return 299 return
305 } 300 }
306 } 301 }
307 } 302 }
308 if (signInfoType == '2') { 303 afterRecover()
309 match.recoverMySign({cptId: matchId.value, groupId: groupId.value}).then(res => {
310 if (res.msg.indexOf('Exception:') > -1) {
311 const msg = res.msg.slice(10)
312 ElMessageBox.confirm(msg, '提示', {
313 confirmButtonText: '确定',
314 cancelButtonText: '取消',
315 type: 'warning'
316 }).then(() => {
317 console.log('用户点击确定')
318 })
319 return
320 } else {
321 afterRecover()
322 }
323 })
324 } else {
325 afterRecover()
326 }
327 router.push({ 304 router.push({
328 name: 'signPreview', 305 name: 'signPreview',
329 query: { 306 query: {
...@@ -354,26 +331,6 @@ function goPrev() { ...@@ -354,26 +331,6 @@ function goPrev() {
354 } 331 }
355 332
356 function chooseSportman() { 333 function chooseSportman() {
357 if (signInfoType == '2') {
358 match.recoverMySign({
359 cptId: matchId.value,
360 groupId: groupId.value
361 }).then(res => {
362 if (res.msg.indexOf('Exception:') > -1) {
363 const msg = res.msg.slice(10)
364 ElMessageBox.confirm(msg, '提示', {
365 confirmButtonText: '确定',
366 cancelButtonText: '取消',
367 type: 'warning'
368 }).then(() => {
369 console.log('用户点击确定')
370 })
371 return
372 }
373 getMySignInfo()
374 })
375 }
376
377 const params = { 334 const params = {
378 title: language.value == 0 ? '选择运动员' : 'Participating athletes', 335 title: language.value == 0 ? '选择运动员' : 'Participating athletes',
379 matchId: matchId.value, 336 matchId: matchId.value,
...@@ -388,20 +345,21 @@ function chooseSportman() { ...@@ -388,20 +345,21 @@ function chooseSportman() {
388 } 345 }
389 346
390 function changechoosed(e) { 347 function changechoosed(e) {
391 console.log(e) 348 // console.log(e)
392 choosed2List.value = [] 349 choosed2List.value = []
350 choosed2Listbak.value = []
351
393 for (var c of choosedList.value) { 352 for (var c of choosedList.value) {
394 if (choosedchoosed.value.indexOf(c.id) > -1) { 353 if (choosedchoosed.value.indexOf(c.id) > -1) {
395 choosed2List.value.push(c) 354 choosed2List.value.push(c)
355 choosed2Listbak.value.push(c)
396 } 356 }
397 } 357 }
398 getProjectList()
399
400 } 358 }
401 359
402 function getProjectList() { 360 function getProjectList() {
403 projectIds.value = [] 361 projectIds.value = []
404 if (choosed2List.value.length == 0) { 362 if (choosedchoosed.value.length == 0) {
405 // ElMessage.error('请先选择运动员') 363 // ElMessage.error('请先选择运动员')
406 projectList.value = [] 364 projectList.value = []
407 return 365 return
...@@ -420,25 +378,33 @@ function getProjectList() { ...@@ -420,25 +378,33 @@ function getProjectList() {
420 ElMessage.error(err.msg) 378 ElMessage.error(err.msg)
421 }) 379 })
422 } 380 }
381
423 function queryAthletes() { 382 function queryAthletes() {
424 if(athletesQuery.value.name) 383 choosedListBak.value = []
425 for(var t of choosedList.value){ 384 for (var t of choosedList.value) {
426 if(t.realName.indexOf(athletesQuery.value.name)>-1){ 385 if (t.realName.indexOf(athletesQuery.value.name) > -1) {
427 // 筛选 386 // 筛选
387 choosedListBak.value.push(t)
388 }
428 } 389 }
429 }
430 } 390 }
391
431 function queryTeam() { 392 function queryTeam() {
432 if(zuQuery.value.name) 393 choosed2Listbak.value = []
433 for(var t of choosedList.value){ 394 choosedchoosed.value = []
434 if(t.realName.indexOf(zuQuery.value.name)>-1){ 395 for (var t of choosed2List.value) {
435 // 筛选 396 if (t.realName.indexOf(zuQuery.value.name) > -1) {
397 // 筛选
398 choosed2Listbak.value.push(t)
399 choosedchoosed.value.push(t.id)
400 }
436 } 401 }
437 }
438 } 402 }
403
439 function getChoosed(list) { 404 function getChoosed(list) {
440 console.log(list) 405 console.log(list)
441 choosedList.value = list 406 choosedList.value = list
407 choosedListBak.value = list
442 console.log('选好了', choosedchoosed.value) 408 console.log('选好了', choosedchoosed.value)
443 } 409 }
444 410
...@@ -470,31 +436,19 @@ function addCoach() { ...@@ -470,31 +436,19 @@ function addCoach() {
470 proxy.$refs['dialogAddCoachRef'].open(params) 436 proxy.$refs['dialogAddCoachRef'].open(params)
471 } 437 }
472 438
473
474 function delthischoosed(p) {
475 choosedList.value = _.without(choosedList.value, p)
476 }
477
478 function emptyChoosed() { 439 function emptyChoosed() {
479 choosedList.value = [] 440 choosedList.value = []
441 choosedListBak.value = []
480 } 442 }
443
481 function emptyChangechoosed() { 444 function emptyChangechoosed() {
482 choosedchoosed.value = [] 445 choosedchoosed.value = []
483 choosed2List.value = [] 446 choosed2List.value = []
447 choosed2Listbak.value = []
484 projectList.value = [] 448 projectList.value = []
485 projectIds.value = [] 449 projectIds.value = []
486 } 450 }
487 451
488 function delchoosedchoosed() {
489 console.log(choosedchoosed.value)
490 for (var c of choosedList.value) {
491 if (choosedchoosed.value.indexOf(c.id) > -1) {
492 choosedList.value = _.without(choosedList.value, c)
493 }
494 }
495 choosedchoosed.value = []
496 }
497
498 function signUp() { 452 function signUp() {
499 if (projectIds.value.length == 0) { 453 if (projectIds.value.length == 0) {
500 return 454 return
...@@ -510,6 +464,7 @@ function signUp() { ...@@ -510,6 +464,7 @@ function signUp() {
510 match.sportsmanDone(obj).then(res => { 464 match.sportsmanDone(obj).then(res => {
511 choosedchoosed.value = [] 465 choosedchoosed.value = []
512 choosed2List.value = [] 466 choosed2List.value = []
467 choosed2Listbak.value = []
513 projectList.value = [] 468 projectList.value = []
514 projectIds.value = [] 469 projectIds.value = []
515 getSignInfoList() 470 getSignInfoList()
...@@ -568,7 +523,8 @@ const goPersonInfo = (row) => { ...@@ -568,7 +523,8 @@ const goPersonInfo = (row) => {
568 console.log(row) 523 console.log(row)
569 // debugger 524 // debugger
570 const params = { 525 const params = {
571 title: language.value==0?'完善补充信息':'Complete the supplementary information', 526 matchId:matchId.value,
527 title: language.value == 0 ? '完善补充信息' : 'Complete the supplementary information',
572 participantsInfoArr: extraform.value, 528 participantsInfoArr: extraform.value,
573 personId: row.personInfo.id, 529 personId: row.personInfo.id,
574 extraId: row.extraPersonInfo?.id || 0 530 extraId: row.extraPersonInfo?.id || 0
...@@ -598,6 +554,39 @@ function switchTabletype() { ...@@ -598,6 +554,39 @@ function switchTabletype() {
598 tableType.value = 0 554 tableType.value = 0
599 } 555 }
600 } 556 }
557 watch(choosedchoosed, (newVal, oldVal) => {
558 // console.log(choosedchoosed.value)
559 if(newVal.length>oldVal.length){
560 match.signgetSignInfoConflict({
561 cptId: matchId.value,
562 perId: _.last(newVal),
563 groupId: groupId.value
564 }).then(res => {
565 if(!res.data){
566 ElMessage.error(language.value==0?'该人员已在其他团队中报名,请重新选择':'This person has already registered in another team, please select again')
567 choosedchoosed.value = _.without(choosedchoosed.value,_.last(newVal))
568
569 for(var c of choosed2List.value){
570 if(c.id == _.last(newVal)){
571 choosed2List.value = _.without(choosed2List.value,c)
572 }
573 }
574 for(var c of choosed2Listbak.value){
575 if(c.id == _.last(newVal)){
576 choosed2Listbak.value = _.without(choosed2Listbak.value,c)
577 }
578 }
579 projectList.value = []
580 console.log(choosedchoosed.value,choosed2List.value,choosed2Listbak.value)
581 return
582 } else {
583 getProjectList()
584 }
585 })
586 } else {
587 getProjectList()
588 }
589 })
601 </script> 590 </script>
602 591
603 <style scoped lang="scss"> 592 <style scoped lang="scss">
...@@ -753,14 +742,41 @@ function switchTabletype() { ...@@ -753,14 +742,41 @@ function switchTabletype() {
753 } 742 }
754 } 743 }
755 } 744 }
756 .noPicChooseForm{overflow: auto;height: 70vh; 745
757 .el-checkbox-group{display: flex;flex-wrap: wrap;text-align: justify; 746 .noPicChooseForm {
758 .el-button{width: 31%;margin:1%;} 747 overflow: auto;
759 .el-checkbox{margin: 1%;width: 31%;overflow: hidden;} 748 height: 70vh;
760 .name{justify-content: left;} 749
750 .el-checkbox-group {
751 display: flex;
752 flex-wrap: wrap;
753 text-align: justify;
754
755 .el-button {
756 width: 31%;
757 margin: 1%;
758 }
759
760 .el-checkbox {
761 margin: 1%;
762 width: 31%;
763 overflow: hidden;
764 }
765
766 .name {
767 justify-content: left;
768 }
761 } 769 }
762 } 770 }
763 .name{display: flex;align-items: center;justify-content: center; 771
764 img{height: 20px;margin-left: 4px;} 772 .name {
773 display: flex;
774 align-items: center;
775 justify-content: center;
776
777 img {
778 height: 20px;
779 margin-left: 4px;
780 }
765 } 781 }
766 </style> 782 </style>
......
...@@ -46,11 +46,6 @@ ...@@ -46,11 +46,6 @@
46 <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> 46 <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/>
47 </el-select> 47 </el-select>
48 </el-form-item> 48 </el-form-item>
49 <!-- <el-form-item :label="language==0?'短名':'nike name'" prop="shortName" required>-->
50 <!-- <el-input v-model="form.shortName" :placeholder="language==0?'赛事用名':''"/>-->
51 <!-- </el-form-item>-->
52
53
54 </el-col> 49 </el-col>
55 <el-col :lg="12"> 50 <el-col :lg="12">
56 <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required> 51 <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required>
...@@ -133,8 +128,6 @@ const data = reactive({ ...@@ -133,8 +128,6 @@ const data = reactive({
133 rules: { 128 rules: {
134 xing: [{required: true, message: '必填', trigger: 'blur'}], 129 xing: [{required: true, message: '必填', trigger: 'blur'}],
135 ming: [{required: true, message: '必填', trigger: 'blur'}], 130 ming: [{required: true, message: '必填', trigger: 'blur'}],
136 // shortName: [{required: true, message: '必填', trigger: 'blur'}],
137 // email: [{required: true, message: '必填', trigger: 'blur'}],
138 countryId: [{required: true, message: '必填', trigger: 'change'}], 131 countryId: [{required: true, message: '必填', trigger: 'change'}],
139 idcType: [{required: true, message: '必填', trigger: 'change'}], 132 idcType: [{required: true, message: '必填', trigger: 'change'}],
140 idcCode: [{required: true, message: '必填', trigger: 'blur'}], 133 idcCode: [{required: true, message: '必填', trigger: 'blur'}],
...@@ -149,8 +142,6 @@ const data = reactive({ ...@@ -149,8 +142,6 @@ const data = reactive({
149 rules_cn:{ 142 rules_cn:{
150 xing: [{required: true, message: 'required', trigger: 'blur'}], 143 xing: [{required: true, message: 'required', trigger: 'blur'}],
151 ming: [{required: true, message: 'required', trigger: 'blur'}], 144 ming: [{required: true, message: 'required', trigger: 'blur'}],
152 // shortName: [{required: true, message: 'required', trigger: 'blur'}],
153 // email: [{required: true, message: 'required', trigger: 'blur'}],
154 countryId: [{required: true, message: 'required', trigger: 'change'}], 145 countryId: [{required: true, message: 'required', trigger: 'change'}],
155 idcType: [{required: true, message: 'required', trigger: 'change'}], 146 idcType: [{required: true, message: 'required', trigger: 'change'}],
156 idcCode: [{required: true, message: 'required', trigger: 'blur'}], 147 idcCode: [{required: true, message: 'required', trigger: 'blur'}],
......
...@@ -155,7 +155,10 @@ const open = (params) => { ...@@ -155,7 +155,10 @@ const open = (params) => {
155 } 155 }
156 }) 156 })
157 } else { 157 } else {
158 if (params.id != 0) { // 编辑舞伴 158 if (params.id == 0) {
159 //新增
160 editgay = false
161 } else {// 编辑舞伴
159 editgay = true 162 editgay = true
160 form.value = params.form 163 form.value = params.form
161 } 164 }
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
73 <!-- />--> 73 <!-- />-->
74 <template #footer> 74 <template #footer>
75 <div class="dialog-footer text-center"> 75 <div class="dialog-footer text-center">
76 <el-button type="primary" @click="submitForm">{{language==0?'确定':'Confirm'}}</el-button> 76 <el-button type="primary" @click="submit">{{language==0?'确定':'Confirm'}}</el-button>
77 <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button> 77 <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button>
78 </div> 78 </div>
79 </template> 79 </template>
...@@ -155,7 +155,7 @@ function handleSelectionChange(val) { ...@@ -155,7 +155,7 @@ function handleSelectionChange(val) {
155 choosedList = val 155 choosedList = val
156 } 156 }
157 157
158 function submitForm() { 158 function submit() {
159 emit('transfer', choosedList) 159 emit('transfer', choosedList)
160 // emit('submitForm', choosedList) 160 // emit('submitForm', choosedList)
161 show.value = false 161 show.value = false
......
...@@ -7,19 +7,19 @@ ...@@ -7,19 +7,19 @@
7 <span v-if="!names.coachList">--</span> 7 <span v-if="!names.coachList">--</span>
8 </div> 8 </div>
9 <div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label> 9 <div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label>
10 <span v-for="c in names.translatorList">{{ c.realName }}</span> 10 <span v-for="c in names.translatorList">{{ c.realName }},</span>
11 <span v-if="!names.translatorList">--</span> 11 <span v-if="!names.translatorList">--</span>
12 </div> 12 </div>
13 </el-col> 13 </el-col>
14 <el-col :lg="8"> 14 <el-col :lg="8">
15 <div class="item"> 15 <div class="item">
16 <label>{{ language == 0 ? '领队' : 'Team leader' }}</label> 16 <label>{{ language == 0 ? '领队' : 'Team leader' }}</label>
17 <span v-for="c in names.leaderList">{{ c.realName }}</span> 17 <span v-for="c in names.leaderList">{{ c.realName }},</span>
18 <span v-if="!names.leaderList">--</span> 18 <span v-if="!names.leaderList">--</span>
19 </div> 19 </div>
20 <div class="item"> 20 <div class="item">
21 <label>{{ language == 0 ? '官员' : 'Official' }}</label> 21 <label>{{ language == 0 ? '官员' : 'Official' }}</label>
22 <span class="mr5" v-for="c in names.officialList">{{ c.realName }}</span> 22 <span class="mr5" v-for="c in names.officialList">{{ c.realName }},</span>
23 <span v-if="!names.officialList">--</span> 23 <span v-if="!names.officialList">--</span>
24 </div> 24 </div>
25 </el-col> 25 </el-col>
...@@ -27,16 +27,16 @@ ...@@ -27,16 +27,16 @@
27 <div class="item"> 27 <div class="item">
28 <label>{{ language == 0 ? '队医' : 'Team doctor' }}</label> 28 <label>{{ language == 0 ? '队医' : 'Team doctor' }}</label>
29 <span class="mr5" v-for="c in names.teamDoctorList"> 29 <span class="mr5" v-for="c in names.teamDoctorList">
30 {{ c.realName }} 30 {{ c.realName }},
31 </span> 31 </span>
32 <span v-if="!names.teamDoctorList">--</span> 32 <span v-if="!names.teamDoctorList">--</span>
33 </div> 33 </div>
34 <div class="item"> 34 <div class="item">
35 <label>{{ language == 0 ? '其他' : 'Other' }}</label> 35 <label>{{ language == 0 ? '其他' : 'Other' }}</label>
36 <span class="mr5" v-for="c in names.otherList"> 36 <span class="mr5" v-for="c in names.otherList">
37 {{ c.shortName }} 37 {{ c.realName }},
38 </span> 38 </span>
39 <span v-if="!names.otherList">--</span> 39 <span v-if="names.otherList?.length==0">--</span>
40 </div> 40 </div>
41 </el-col> 41 </el-col>
42 </el-row> 42 </el-row>
......
...@@ -73,18 +73,20 @@ const data = reactive({ ...@@ -73,18 +73,20 @@ const data = reactive({
73 groupId: '0' 73 groupId: '0'
74 }) 74 })
75 const { form, show, countryList, participantsInfoArr, title, groupId } = toRefs(data) 75 const { form, show, countryList, participantsInfoArr, title, groupId } = toRefs(data)
76 const matchId = route.params.id
77 let extraId = 0 76 let extraId = 0
78 let personId 77 let personId
78 let matchId
79 onMounted(() => { 79 onMounted(() => {
80 getCountryList() 80 getCountryList()
81 }) 81 })
82 const open = (params) => { 82 const open = (params) => {
83 // debugger 83 // debugger
84 console.log(params)
84 show.value = true 85 show.value = true
85 title.value = params.title 86 title.value = params.title
86 personId = params.personId 87 personId = params.personId
87 extraId = params.extraId 88 extraId = params.extraId
89 matchId = params.matchId
88 participantsInfoArr.value = params.participantsInfoArr 90 participantsInfoArr.value = params.participantsInfoArr
89 init() 91 init()
90 } 92 }
...@@ -137,7 +139,7 @@ function getCountryList() { ...@@ -137,7 +139,7 @@ function getCountryList() {
137 function submitForm() { 139 function submitForm() {
138 let fileInfo = {} 140 let fileInfo = {}
139 for (const n of participantsInfoArr.value) { 141 for (const n of participantsInfoArr.value) {
140 if (n.status == 0 && (!n.value && !n.fixWxFile)) { 142 if (n.status == 0 && (!n.value && (!n.fixWxFile||!n.fixWxFile.length==0))) {
141 ElMessage.error(`请完善${n.name}信息`) 143 ElMessage.error(`请完善${n.name}信息`)
142 return 144 return
143 } 145 }
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
15 <el-col :lg="8"> 15 <el-col :lg="8">
16 <div class="item"><label>{{ language==0?'负责人姓名':'Contact Person' }}</label>{{ groupInfo.contactPerson }}</div> 16 <div class="item"><label>{{ language==0?'负责人姓名':'Contact Person' }}</label>{{ groupInfo.contactPerson }}</div>
17 <div class="item"><label>{{ language==0?'参赛队名称':'Name of participating team' }}</label>{{ groupInfo.abreviations }}</div> 17 <div class="item"><label>{{ language==0?'参赛队名称':'Name of participating team' }}</label>{{ groupInfo.abreviations }}</div>
18
19 </el-col> 18 </el-col>
20 <el-col :lg="8"> 19 <el-col :lg="8">
21 <div class="item"><label>{{ language==0?'邮箱':'Email' }}</label>{{ groupInfo.contactEmail }}</div> 20 <div class="item"><label>{{ language==0?'邮箱':'Email' }}</label>{{ groupInfo.contactEmail }}</div>
......
...@@ -69,6 +69,7 @@ function submit(res) { ...@@ -69,6 +69,7 @@ function submit(res) {
69 69
70 const open = (params) => { 70 const open = (params) => {
71 show.value = true 71 show.value = true
72 show.value = true
72 title.value = params.title 73 title.value = params.title
73 action.value = `/systemj/personInfo/importPerson/${groupId}` 74 action.value = `/systemj/personInfo/importPerson/${groupId}`
74 } 75 }
......
...@@ -5,11 +5,8 @@ ...@@ -5,11 +5,8 @@
5 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> 5 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
6 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> 6 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
7 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> 7 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
8 <!-- <el-table-column :label="language==0?'短名':'Nick Name'" prop="shortName" min-width="110"/>-->
9 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> 8 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
10 <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>--> 9 <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>-->
11 <!-- <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/>-->
12 <!-- <el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/>-->
13 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" :min-width="language==0?'80':'160'"/> 10 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" :min-width="language==0?'80':'160'"/>
14 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> 11 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/>
15 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> 12 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/>
......
1 <template> 1 <template>
2 <el-row :gutter="14" v-if="language==0"> 2 <el-row :gutter="14" v-if="language==0">
3 <el-col :lg="4"> 3 <el-col :lg="4">
4 <div class="funcBtn" @click="building"> 4 <div class="funcBtn" @click="goBooking(0)">
5 <img src="@/assets/dance/btn04.png"/> 5 <img src="@/assets/dance/btn04.png"/>
6 <h4>票务预订</h4> 6 <h4>票务预订</h4>
7 </div> 7 </div>
8 </el-col> 8 </el-col>
9 <el-col :lg="4"> 9 <el-col :lg="4">
10 <div class="funcBtn" @click="building"> 10 <div class="funcBtn" @click="goBooking(1)">
11 <img src="@/assets/dance/btn01.png"/> 11 <img src="@/assets/dance/btn01.png"/>
12 <h4>酒店预约</h4> 12 <h4>酒店预约</h4>
13 </div> 13 </div>
14 </el-col> 14 </el-col>
15 <el-col :lg="4"> 15 <el-col :lg="4">
16 <div class="funcBtn" @click="building"> 16 <div class="funcBtn" @click="goBooking(2)">
17 <img src="@/assets/dance/btn02.png"/> 17 <img src="@/assets/dance/btn02.png"/>
18 <h4>车辆预约</h4> 18 <h4>车辆预约</h4>
19 </div> 19 </div>
20 </el-col> 20 </el-col>
21 <el-col :lg="4"> 21 <el-col :lg="4">
22 <div class="funcBtn" @click="building"> 22 <div class="funcBtn" @click="goBooking(3)">
23 <img src="@/assets/dance/btn03.png"/> 23 <img src="@/assets/dance/btn03.png"/>
24 <h4>餐饮预订</h4> 24 <h4>餐饮预订</h4>
25 </div> 25 </div>
26 </el-col> 26 </el-col>
27 <el-col :lg="4"> 27 <el-col :lg="4">
28 <div class="funcBtn" @click="building"> 28 <div class="funcBtn" @click="goBooking(4)">
29 <img src="@/assets/dance/btn05.png"/> 29 <img src="@/assets/dance/btn05.png"/>
30 <h4>化妆预约</h4> 30 <h4>化妆预约</h4>
31 </div> 31 </div>
32 </el-col> 32 </el-col>
33 <el-col :lg="4"> 33 <el-col :lg="4">
34 <div class="funcBtn" @click="building"> 34 <div class="funcBtn" @click="goBooking(5)">
35 <img src="@/assets/dance/btn06.png"/> 35 <img src="@/assets/dance/btn06.png"/>
36 <h4>拍照预约</h4> 36 <h4>拍照预约</h4>
37 </div> 37 </div>
...@@ -85,6 +85,28 @@ const language = ref(cache.local.get('language') || 0) ...@@ -85,6 +85,28 @@ const language = ref(cache.local.get('language') || 0)
85 function building() { 85 function building() {
86 ElMessage.warning('Building!') 86 ElMessage.warning('Building!')
87 } 87 }
88 function goBooking(n) {
89 switch (n) {
90 case 0:
91 // 票务
92 break;
93 case 1:
94 //酒店
95 break;
96 case 2:
97 //车辆
98 break;
99 case 4:
100 //餐饮
101 break;
102 case 5:
103 //化妆
104 break;
105 case 6:
106 //拍照
107 break;
108 }
109 }
88 </script> 110 </script>
89 111
90 <style scoped> 112 <style scoped>
......
...@@ -10,11 +10,7 @@ ...@@ -10,11 +10,7 @@
10 <span v-if="scope.row.personInfo.representing">{{scope.row.personInfo.representing}}</span> 10 <span v-if="scope.row.personInfo.representing">{{scope.row.personInfo.representing}}</span>
11 </template> 11 </template>
12 </el-table-column> 12 </el-table-column>
13 <!-- <el-table-column :label="language==0?'短名':'Nick Name'" prop="personInfo.shortName" min-width="110"/>-->
14 <el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/> 13 <el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/>
15 <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/>-->
16 <!-- <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="personInfo.phone" min-width="130"/>-->
17 <!-- <el-table-column :label="language==0?'邮箱':'E-mail'" prop="personInfo.email" width="150"/>-->
18 <el-table-column :label="language==0?'证件类型':'ID Type'" :width="language==0?'':'140'" prop="personInfo.idcTypeStr"/> 14 <el-table-column :label="language==0?'证件类型':'ID Type'" :width="language==0?'':'140'" prop="personInfo.idcTypeStr"/>
19 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="personInfo.idcCode" width="200"/> 15 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="personInfo.idcCode" width="200"/>
20 <el-table-column :label="language==0?'出生日期':'Birth'" prop="personInfo.birth" width="110"/> 16 <el-table-column :label="language==0?'出生日期':'Birth'" prop="personInfo.birth" width="110"/>
...@@ -58,7 +54,7 @@ ...@@ -58,7 +54,7 @@
58 <el-table-column v-for="(e,index) in extraTableHead" :key="index" :label="e" min-width="110" align="center"> 54 <el-table-column v-for="(e,index) in extraTableHead" :key="index" :label="e" min-width="110" align="center">
59 <template #default="scope"> 55 <template #default="scope">
60 <el-link v-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='2'" 56 <el-link v-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='2'"
61 :herf="scope.row.signInfo[0].extraPersonInfoMapList[index].value.url"> 57 :href="fillImgUrl(scope.row.signInfo[0].extraPersonInfoMapList[index].value.url)">
62 {{ scope.row.signInfo[0].extraPersonInfoMapList[index].value.name }} 58 {{ scope.row.signInfo[0].extraPersonInfoMapList[index].value.name }}
63 </el-link> 59 </el-link>
64 <img v-else-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='3'" style="width: 50px;" 60 <img v-else-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='3'" style="width: 50px;"
...@@ -115,7 +111,7 @@ const props = defineProps({ ...@@ -115,7 +111,7 @@ const props = defineProps({
115 default: false 111 default: false
116 }, 112 },
117 total:{ 113 total:{
118 type: String, 114 type: Number,
119 required: false, 115 required: false,
120 default: '0' 116 default: '0'
121 } 117 }
......
1 <template> 1 <template>
2 <div class="pd20"> 2 <div class="pv20">
3 <div class="matchItem" v-for="n in list" :key="n.id" @click="goDetail(n.id)"> 3 <div class="matchItem" v-for="n in list" :key="n.id" @click="goDetail(n.id)">
4 <el-row :gutter="15"> 4 <el-row :gutter="15">
5 <el-col :lg="7" :md="24" :xl="6"> 5 <el-col :lg="7" :md="24" :xl="6">
6 <img class="mauto w100" :src="fillImgUrl(n.coverUrl)"> 6 <img class="mauto w100" :src="fillImgUrl(n.coverUrl)">
7 </el-col> 7 </el-col>
8 <el-col :lg="10" :md="12" :xl="12"> 8 <el-col :lg="9" :md="12" :xl="12">
9 <div class="info"> 9 <div class="info">
10 <h3>{{ n.name }}</h3> 10 <h3>{{ n.name }}</h3>
11 <p class="ppl"><label>{{ language==0?'比赛时间':'Playing Time' }}</label>{{n.beginTime?.slice(0,10)}} ~ {{ n.endTime?.slice(0,10) }}</p> 11 <p class="ppl"><label>{{ language==0?'比赛时间':'Playing Time' }}</label>{{n.beginTime?.slice(0,10)}} ~ {{ n.endTime?.slice(0,10) }}</p>
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
18 18
19 </div> 19 </div>
20 </el-col> 20 </el-col>
21 <el-col :lg="7" :md="12" :xl="6"> 21 <el-col :lg="8" :md="12" :xl="6">
22 <p class="countDownTitle"> 22 <p class="countDownTitle">
23 <span v-if="language==0">报名截止倒计时</span> 23 <span v-if="language==0">报名截止倒计时</span>
24 <span v-else>Registration deadline countdown</span> 24 <span v-else>Registration deadline countdown</span>
...@@ -78,11 +78,14 @@ function goDetail(id) { ...@@ -78,11 +78,14 @@ function goDetail(id) {
78 </script> 78 </script>
79 79
80 <style scoped lang="scss"> 80 <style scoped lang="scss">
81 .pv20{padding: 0 20px;}
81 .mt60{margin-top: 60px} 82 .mt60{margin-top: 60px}
82 .matchItem { 83 .matchItem {
83 cursor: pointer;margin: 0 0 20px;padding: 0 0 20px; 84 cursor: pointer;padding: 0 0 20px;
84 background: #FFFFFF;border-bottom: 1px solid #e5e5e5; 85 background: #FFFFFF;border-bottom: 1px solid #e5e5e5;
85 position: relative; 86 position: relative;
87 .el-col{padding-top: 20px}
88 .countDownTitle{margin: 0}
86 &:last-child { 89 &:last-child {
87 border-bottom: none; 90 border-bottom: none;
88 } 91 }
...@@ -174,5 +177,7 @@ function goDetail(id) { ...@@ -174,5 +177,7 @@ function goDetail(id) {
174 line-height: 50px; 177 line-height: 50px;
175 text-align: center; 178 text-align: center;
176 } 179 }
177 180 @media (max-width: 1450px) {
181 .block{width: 44px;font-size: 20px;}
182 }
178 </style> 183 </style>
......
...@@ -60,7 +60,7 @@ const props = defineProps({ ...@@ -60,7 +60,7 @@ const props = defineProps({
60 default: false 60 default: false
61 }, 61 },
62 total:{ 62 total:{
63 type: String, 63 type: Number,
64 required: false, 64 required: false,
65 default: '0' 65 default: '0'
66 } 66 }
......
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
95 <el-row :gutter="20" v-if="matchData.signType == '0'"> 95 <el-row :gutter="20" v-if="matchData.signType == '0'">
96 <el-col v-for="t in signDoneGroupList" :key="t.id" :span="8"> 96 <el-col v-for="t in signDoneGroupList" :key="t.id" :span="8">
97 <div class="teamItem"> 97 <div class="teamItem">
98 <el-avatar :size="60" :src="t.imgUrl||t.avatar"/> 98 <el-avatar :size="60" :src="fillImgUrl(t.imgUrl||t.avatar)"/>
99 <span class="name">{{ t.name }}</span> 99 <span class="name">{{ t.name }}</span>
100 </div> 100 </div>
101 </el-col> 101 </el-col>
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
104 <el-col :span="24" v-for="(t,index) in signDoneGroupList" :key="t.id"> 104 <el-col :span="24" v-for="(t,index) in signDoneGroupList" :key="t.id">
105 <div class="nowteamItem"> 105 <div class="nowteamItem">
106 <span>{{ index + 1 }}.</span> 106 <span>{{ index + 1 }}.</span>
107 <el-avatar :size="80" :src="t.imgUrl||t.avatar" :fit="cover"/> 107 <el-avatar :size="80" :src="fillImgUrl(t.imgUrl||t.avatar)" :fit="cover"/>
108 <div class="info"> 108 <div class="info">
109 <h3 class="name">{{ t.name }}</h3> 109 <h3 class="name">{{ t.name }}</h3>
110 <p v-if="t.extraInfo"> 110 <p v-if="t.extraInfo">
...@@ -363,10 +363,49 @@ function checkIsSign() { ...@@ -363,10 +363,49 @@ function checkIsSign() {
363 type: 'warning', 363 type: 'warning',
364 } 364 }
365 ).then(() => { 365 ).then(() => {
366 match.recoverMySignFromCancel(n.id).then((res)=>{ 366 match.recoverMySignFromCancel(matchId.value).then((res)=>{
367 367 switch (matchData.value.signType) {
368 case '0':
369 if (user.utype == '1') {
370 goPersonalSign()
371 } else {
372 ElMessageBox.confirm(
373 '当前活动是个人活动,无法报名',
374 '提示',
375 {
376 confirmButtonText: '好的',
377 cancelButtonText: '取消',
378 type: 'warning',
379 }
380 )
381 }
382 break
383 case '1':
384 if (user.utype == '1') {
385 ElMessageBox.confirm(
386 '当前活动是团队活动,无法报名',
387 '提示',
388 {
389 confirmButtonText: '好的',
390 cancelButtonText: '取消',
391 type: 'warning',
392 }
393 )
394 } else {
395 goTeamSign()
396 }
397 break
398 case '2':
399 if (user.utype == '1') {
400 goPersonalSign()
401 } else {
402 goTeamSign()
403 }
404 break
405 }
368 }) 406 })
369 }) 407 })
408 return Promise.reject('rejected message')
370 } 409 }
371 }) 410 })
372 } 411 }
......
...@@ -242,28 +242,31 @@ onMounted(() => { ...@@ -242,28 +242,31 @@ onMounted(() => {
242 } else { 242 } else {
243 groupId.value = 0 243 groupId.value = 0
244 } 244 }
245 if (route.params.id != 0) {
246 matchId.value = route.params.id
247 getMatch(matchId.value)
248 getGroupListByCptId(matchId.value)
249 } else {
250 getMatchId()
251 }
252 })
253 function getMatchId() {
245 match.getMaList().then((res) => { 254 match.getMaList().then((res) => {
246 if (route.params.id != 0) { 255 matchId.value = res.rows[0].id
247 matchId.value = route.params.id
248 } else {
249 matchId.value = res.rows[0].id
250 }
251 getMatch(matchId.value) 256 getMatch(matchId.value)
252 getGroupListByCptId(matchId.value) 257 getGroupListByCptId(matchId.value)
253 }) 258 })
254 }) 259 }
255 260 function getMatch(id) {
256 function getMatch() {
257 loading.value = true 261 loading.value = true
258 match.getMatchById({id: matchId.value}).then(res => { 262 match.getMatchById({id: id}).then(res => {
259 matchData.value = res.data 263 matchData.value = res.data
260 loading.value = false 264 loading.value = false
261 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 265 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
262 time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond') 266 time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond')
263 }).catch(res => { 267 }).catch(res => {
264 error.value = true 268 router.push({path: '/match/list/0'})
265 loading.value = false 269 setTimeout("window.location.reload()", 1000)
266
267 }) 270 })
268 } 271 }
269 272
...@@ -405,7 +408,7 @@ function checkIsSign() { ...@@ -405,7 +408,7 @@ function checkIsSign() {
405 type: 'warning', 408 type: 'warning',
406 } 409 }
407 ).then(() => { 410 ).then(() => {
408 match.recoverMySignFromCancel(n.id).then((res)=>{ 411 match.recoverMySignFromCancel(matchId.value).then((res)=>{
409 412
410 }) 413 })
411 }) 414 })
......
...@@ -191,7 +191,7 @@ ...@@ -191,7 +191,7 @@
191 </td> 191 </td>
192 <td v-for="(e,index) in extraTableHead" :key="index"> 192 <td v-for="(e,index) in extraTableHead" :key="index">
193 <a v-if="row.signInfo[0].extraPersonInfoMapList[index]?.type=='2'" 193 <a v-if="row.signInfo[0].extraPersonInfoMapList[index]?.type=='2'"
194 :herf="row.signInfo[0].extraPersonInfoMapList[index].value.url"> 194 :href="row.signInfo[0].extraPersonInfoMapList[index].value.url">
195 {{ row.signInfo[0].extraPersonInfoMapList[index].value.name }} 195 {{ row.signInfo[0].extraPersonInfoMapList[index].value.name }}
196 </a> 196 </a>
197 <img v-else-if="row.signInfo[0].extraPersonInfoMapList[index]?.type=='3'" style="width: 50px;" 197 <img v-else-if="row.signInfo[0].extraPersonInfoMapList[index]?.type=='3'" style="width: 50px;"
......
...@@ -15,13 +15,13 @@ ...@@ -15,13 +15,13 @@
15 </div> 15 </div>
16 <div> 16 <div>
17 <el-table class="mt20" :data="myMemberTable" border> 17 <el-table class="mt20" :data="myMemberTable" border>
18 <el-table-column type="index" label="Index" width="70" align="center"/> 18 <el-table-column type="index" :label="language==0?'Index':'序号'" width="70" align="center"/>
19 <el-table-column :label="language==0?'姓氏':'surname'" prop="xing" min-width="100"/> 19 <el-table-column :label="language==0?'姓氏':'surname'" prop="xing" min-width="100"/>
20 <el-table-column :label="language==0?'名':'name'" prop="ming" min-width="100"/> 20 <el-table-column :label="language==0?'名':'name'" prop="ming" min-width="100"/>
21 <el-table-column label="Passport number" prop="idcCode" min-width="120"/> 21 <el-table-column :label="language==0?'Passport number':'护照号'" prop="idcCode" min-width="120"/>
22 <el-table-column label="Birthday" prop="birth"/> 22 <el-table-column :label="language==0?'Birthday':'生日'" prop="birth"/>
23 <el-table-column label="Sex" prop="sexStr"/> 23 <el-table-column :label="language==0?'Sex':'性别'" prop="sexStr"/>
24 <el-table-column label="Role" min-width="160"> 24 <el-table-column :label="language==0?'Role':'角色'" min-width="160">
25 <template #default="scope"> 25 <template #default="scope">
26 <div class="roletd"> 26 <div class="roletd">
27 <span v-for="item in scope.row.label?.split(',')" :key="item.id" class="text-primary"> 27 <span v-for="item in scope.row.label?.split(',')" :key="item.id" class="text-primary">
...@@ -40,17 +40,39 @@ ...@@ -40,17 +40,39 @@
40 </div> 40 </div>
41 </div> 41 </div>
42 <div class="pd20" v-if="signInfoList?.length>0"> 42 <div class="pd20" v-if="signInfoList?.length>0">
43 <div class="leftboderTT">{{ language == 0 ? '参赛人员保险费' : 'Participant Insurance Fee' }}</div> 43 <div class="leftboderTT">{{ language == 0 ? '参赛人员保险费' : 'Participant Insurance Fee' }}
44 <div class="fr">
45 <el-input size="small" v-model="zuQuery.athName" :prefix-icon="Search"
46 @change="getSignList" clearable/>
47 </div>
48 </div>
44 <!-- 人员列表--> 49 <!-- 人员列表-->
45 <sign-info-table class="mt20" v-if="matchId" :show-summary="true" :total="insuranceFeeTotal" :match-id="matchId" :list="signInfoList" :hasAction="false"/> 50 <sign-info-table class="mt20" v-if="matchId" :show-summary="true" :total="insuranceFeeTotal"
51 :match-id="matchId" :list="signInfoList" :hasAction="false"/>
46 </div> 52 </div>
47 <div class="pd20" v-if="zuTableList?.length>0"> 53 <div class="pd20" v-if="zuTableList?.length>0">
48 <div class="leftboderTT">{{ language == 0 ? '参赛设项报名费' : 'Registration Fee for Event Entry' }}</div> 54 <div class="leftboderTT">{{ language == 0 ? '参赛设项报名费' : 'Registration Fee for Event Entry' }}
49 <zu-table class="mt20" :list="zuTableList" :show-summary="true" :total="serviceFeeTotal" :hasAction="false"/> 55 <div class="fr">
56 <el-input size="small" v-model="zuQuery.groName" :prefix-icon="Search"
57 @change="getSignList" clearable/>
58 </div>
59 </div>
60 <zu-table class="mt20" :list="zuTableList" :show-summary="true" :total="serviceFeeTotal"
61 :hasAction="false"/>
50 </div> 62 </div>
51 <el-row class="priceBar"> 63 <el-row class="priceBar">
52 <el-col :lg="24" :xs="24"> 64 <el-col :lg="12" :xs="24" class="pl-15">
53 <div class="flex"> 65 <el-link class="mr10" type="primary" @click="exportSignList(1)"><el-icon><Upload /></el-icon>
66 {{ language==0?'导出参赛人员清单':'Export Participant List' }}</el-link>
67 <el-link class="mr10" type="primary" @click="exportSignList(2)"><el-icon><Upload /></el-icon>
68 {{ language==0?'导出设项报名清单':'Registration Fee for Event Entry' }}</el-link>
69
70 <el-link type="primary" @click="exportPdf"><el-icon><Upload /></el-icon>
71 {{ language==0?'导出pdf':'Export PDF' }}
72 </el-link>
73 </el-col>
74 <el-col :lg="12" :xs="24">
75 <div class="flex" v-if="Number(form.totalFee)>0">
54 <div class="item" v-if="signInfoList?.length>0"><label>{{ language==0?'报名费':'Registration Fee' }}:</label><span>{{ language==0?'¥':'€' }}{{serviceFeeTotal}}</span></div> 76 <div class="item" v-if="signInfoList?.length>0"><label>{{ language==0?'报名费':'Registration Fee' }}:</label><span>{{ language==0?'¥':'€' }}{{serviceFeeTotal}}</span></div>
55 <div class="item" v-if="zuTableList?.length>0"><label>{{ language==0?'保险费':'Insurance Fee' }}:</label><span>{{ language==0?'¥':'€' }}{{insuranceFeeTotal}}</span></div> 77 <div class="item" v-if="zuTableList?.length>0"><label>{{ language==0?'保险费':'Insurance Fee' }}:</label><span>{{ language==0?'¥':'€' }}{{insuranceFeeTotal}}</span></div>
56 <div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}:</label><span class="size26">{{ language==0?'¥':'€' }}{{form.totalFee}}</span></div> 78 <div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}:</label><span class="size26">{{ language==0?'¥':'€' }}{{form.totalFee}}</span></div>
...@@ -64,6 +86,8 @@ ...@@ -64,6 +86,8 @@
64 {{ language == 0 ?'登录后查看详细报项信息':'View detailed report information after logging in' }} 86 {{ language == 0 ?'登录后查看详细报项信息':'View detailed report information after logging in' }}
65 </el-button> 87 </el-button>
66 </div> 88 </div>
89
90
67 </el-card> 91 </el-card>
68 92
69 <el-card class="mt20 mb20"> 93 <el-card class="mt20 mb20">
...@@ -285,12 +309,13 @@ ...@@ -285,12 +309,13 @@
285 </template> 309 </template>
286 310
287 <script setup> 311 <script setup>
288 import {ref} from 'vue' 312 import {Search} from "@element-plus/icons-vue"
313 import {getCurrentInstance, ref} from 'vue'
289 import {onMounted} from "@vue/runtime-core" 314 import {onMounted} from "@vue/runtime-core"
290 import {useRoute,useRouter} from "vue-router" 315 import {useRoute,useRouter} from "vue-router"
291 import * as match from "@/apiPc/match" 316 import * as match from "@/apiPc/match"
292 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"; 317 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
293 318 const {proxy} = getCurrentInstance()
294 const route = useRoute() 319 const route = useRoute()
295 const router = useRouter() 320 const router = useRouter()
296 const matchInfo = ref({}) 321 const matchInfo = ref({})
...@@ -324,6 +349,10 @@ const errorBox = ref(false) ...@@ -324,6 +349,10 @@ const errorBox = ref(false)
324 const hideconfirmbtn = ref(false) 349 const hideconfirmbtn = ref(false)
325 const insuranceFeeTotal = ref(0) 350 const insuranceFeeTotal = ref(0)
326 const serviceFeeTotal = ref(0) 351 const serviceFeeTotal = ref(0)
352 const zuQuery = ref({
353 cptId: matchId.value,
354 groupId: groupId.value
355 })
327 const user = useUserStore().user 356 const user = useUserStore().user
328 console.log(route.query.orderId) 357 console.log(route.query.orderId)
329 // 1763462073870237698 358 // 1763462073870237698
...@@ -338,6 +367,8 @@ function getData() { ...@@ -338,6 +367,8 @@ function getData() {
338 form.value.payTypeArr = res.data.payType.split(',') 367 form.value.payTypeArr = res.data.payType.split(',')
339 matchId.value = form.value.cptId 368 matchId.value = form.value.cptId
340 groupId.value = form.value.groupId || 0 369 groupId.value = form.value.groupId || 0
370 zuQuery.value.groupId = groupId.value
371 zuQuery.value.cptId = matchId.value
341 if(isLogin.value){ 372 if(isLogin.value){
342 getSignList() 373 getSignList()
343 if(user.utype=='1'){ 374 if(user.utype=='1'){
...@@ -361,21 +392,17 @@ function upRR() { ...@@ -361,21 +392,17 @@ function upRR() {
361 }) 392 })
362 } 393 }
363 function getSignList() { 394 function getSignList() {
364 match.getMySignInfoList({ 395 match.getMySignInfoList(zuQuery.value).then(res => {
365 cptId: matchId.value,
366 groupId: groupId.value
367 }).then(res => {
368 insuranceFeeTotal.value = 0 396 insuranceFeeTotal.value = 0
369 serviceFeeTotal.value = 0 397 serviceFeeTotal.value = 0
370 signInfoList.value = res.data.singleData 398 signInfoList.value = res.data?.singleData || []
371 zuTableList.value = res.data.zuData 399 zuTableList.value = res.data?.zuData || []
372 for(var s of signInfoList.value){ 400 for(var s of signInfoList.value){
373 insuranceFeeTotal.value = insuranceFeeTotal.value + Number(s.insuranceFee) 401 insuranceFeeTotal.value = insuranceFeeTotal.value + Number(s.insuranceFee)
374 } 402 }
375 for(var z of zuTableList.value){ 403 for(var z of zuTableList.value){
376 serviceFeeTotal.value = serviceFeeTotal.value + Number(z.project.serviceFee) 404 serviceFeeTotal.value = serviceFeeTotal.value + Number(z.project.serviceFee)
377 } 405 }
378
379 }) 406 })
380 } 407 }
381 function goHome() { 408 function goHome() {
...@@ -424,7 +451,53 @@ function startforGetData() { ...@@ -424,7 +451,53 @@ function startforGetData() {
424 function showLogin(){ 451 function showLogin(){
425 useUserStore().setReLogin() 452 useUserStore().setReLogin()
426 } 453 }
454 function exportSignList(n) {
455 var obj = {
456 cptId: matchId.value,
457 groupId: groupId.value,
458 type:n
459 }
460 var fileName
461 if(language.value==0){
462 if(n==1){
463 fileName = '参赛人员清单'
464 }else {
465 fileName = '设项报名清单'
466 }
467 proxy.download('/league/sign/exportCn', {
468 ...obj
469 }, `${fileName}_${new Date().getTime()}.xlsx`)
470 } else {
471 if(n==1){
472 fileName = 'Participant List'
473 }else {
474 fileName = 'Registration Fee for Event Entry'
475 }
476 proxy.download('/league/sign/exportEn', {
477 ...obj
478 }, `${fileName}_${new Date().getTime()}.xlsx`)
479 }
480
481 }
482 function exportPdf() {
483 var obj = {
484 cptId: matchId.value,
485 groupId: groupId.value
486 }
487 var fileName
488 if(language.value==0){
489 fileName = '设项报名清单'
490 proxy.download('/pdf/exportMySignInfoList', {
491 ...obj
492 }, `${fileName}_${new Date().getTime()}.pdf`)
493 } else {
494 fileName = 'Registration Fee for Event Entry'
495 proxy.download('/pdf/exportMySignInfoList', {
496 ...obj
497 }, `${fileName}_${new Date().getTime()}.pdf`)
498 }
427 499
500 }
428 </script> 501 </script>
429 502
430 <style scoped lang="scss"> 503 <style scoped lang="scss">
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
47 @change="getSignList" clearable/> 47 @change="getSignList" clearable/>
48 </div> 48 </div>
49 </div> 49 </div>
50 <sign-info-table class="mt20" :showSummary="true" :total="form.cptInsuranceFee?.totalFee" :match-id="matchId" :list="signInfoList" :hasAction="false"/> 50 <sign-info-table class="mt20" :showSummary="true" :total="signTotal" :match-id="matchId" :list="signInfoList" :hasAction="false"/>
51 </div> 51 </div>
52 <div class="mt20"> 52 <div class="mt20">
53 <div class="leftboderTT">{{ language==0?'设项报名清单':'Event Registration List' }} 53 <div class="leftboderTT">{{ language==0?'设项报名清单':'Event Registration List' }}
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
56 @change="getSignList" clearable/> 56 @change="getSignList" clearable/>
57 </div> 57 </div>
58 </div> 58 </div>
59 <zu-table class="mt20" :showSummary="true" :total="form.cptRegistrationFee?.totalFee" :list="zuTableList" :hasAction="false"/> 59 <zu-table class="mt20" :showSummary="true" :total="zuTotal" :list="zuTableList" :hasAction="false"/>
60 </div> 60 </div>
61 </div> 61 </div>
62 62
...@@ -121,14 +121,14 @@ const matchId = ref(route.query.matchId) ...@@ -121,14 +121,14 @@ const matchId = ref(route.query.matchId)
121 const signInfoList = ref([]) 121 const signInfoList = ref([])
122 const signEndTime = ref('') 122 const signEndTime = ref('')
123 const zuTableList = ref([]) 123 const zuTableList = ref([])
124 const zuTotal = ref(0)
125 const signTotal = ref(0)
124 const myMemberTable = ref([]) 126 const myMemberTable = ref([])
125 const user = useUserStore().user 127 const user = useUserStore().user
126 const {proxy} = getCurrentInstance() 128 const {proxy} = getCurrentInstance()
127 const zuQuery = ref({ 129 const zuQuery = ref({
128 cptId: matchId.value, 130 cptId: matchId.value,
129 groupId: groupId.value, 131 groupId: groupId.value
130 name:'',
131 groupName:''
132 }) 132 })
133 onMounted(()=>{ 133 onMounted(()=>{
134 Promise.all([ 134 Promise.all([
...@@ -154,12 +154,20 @@ function getMyMemberTable() { ...@@ -154,12 +154,20 @@ function getMyMemberTable() {
154 } 154 }
155 function getSignList() { 155 function getSignList() {
156 match.getMySignInfoList(zuQuery.value).then(res=>{ 156 match.getMySignInfoList(zuQuery.value).then(res=>{
157 zuTotal.value = 0
158 signTotal.value = 0
157 signInfoList.value = res.data.singleData 159 signInfoList.value = res.data.singleData
158 zuTableList.value = res.data.zuData 160 zuTableList.value = res.data.zuData
161 for(var s of signInfoList.value){
162 signTotal.value = signTotal.value + Number(s.insuranceFee)
163 }
164 for(var z of zuTableList.value){
165 zuTotal.value = zuTotal.value + Number(z.project.serviceFee)
166 }
159 }) 167 })
160 } 168 }
161 const goPrev = () => { 169 const goPrev = () => {
162 if(user.type=='2'){ 170 if(user.utype=='2'){
163 router.push({ 171 router.push({
164 name: 'chooseSportsman', 172 name: 'chooseSportsman',
165 query: { 173 query: {
...@@ -167,7 +175,8 @@ const goPrev = () => { ...@@ -167,7 +175,8 @@ const goPrev = () => {
167 groupId: groupId.value 175 groupId: groupId.value
168 } 176 }
169 }) 177 })
170 } else { 178 }
179 if(user.utype=='1'){
171 router.push({ 180 router.push({
172 name: 'chooseProject', 181 name: 'chooseProject',
173 params:{ 182 params:{
...@@ -186,15 +195,17 @@ const getFee = (entryId) => { ...@@ -186,15 +195,17 @@ const getFee = (entryId) => {
186 cptId: matchId.value 195 cptId: matchId.value
187 }).then(res => { 196 }).then(res => {
188 form.value = res.data 197 form.value = res.data
198 // zuTotal.value = form.value.cptRegistrationFee?.totalFee
199 // signTotal.value = form.value.cptInsuranceFee?.totalFee
189 }) 200 })
190 } 201 }
191 const submitForm = (n) => { 202 const submitForm = (n) => {
192 if(n==0){ 203 if(n==0){
193 ElMessageBox.confirm(language.value==0?`您当前的操作为暂存,并不是提交审核, 204 ElMessageBox.confirm(language.value==0?`您当前的操作为暂存,并不是提交审核,
194 必须在报名截止时间${signEndTime.value}之前完成提交。 205 必须在报名截止时间${signEndTime.value.substring(0,10)}之前完成提交。
195 您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`: 206 您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`:
196 `Your current operation is temporary and not submitted for review, 207 `Your current operation is temporary and not submitted for review,
197 Submission must be completed before the registration deadline${signEndTime.value} 208 Submission must be completed before the registration deadline${signEndTime.value.substring(0,10)}
198 You can also find this registration in the My Registration section of your personal center and click submit for review.`, 209 You can also find this registration in the My Registration section of your personal center and click submit for review.`,
199 language.value == 0 ? '提示' : 'Tip', { 210 language.value == 0 ? '提示' : 'Tip', {
200 confirmButtonText: language.value == 0 ? '去个人中心' : 'Go My Registration ', 211 confirmButtonText: language.value == 0 ? '去个人中心' : 'Go My Registration ',
...@@ -265,6 +276,10 @@ function exportPdf() { ...@@ -265,6 +276,10 @@ function exportPdf() {
265 ...obj 276 ...obj
266 }, `${fileName}_${new Date().getTime()}.pdf`) 277 }, `${fileName}_${new Date().getTime()}.pdf`)
267 } else { 278 } else {
279 fileName = 'Registration Fee for Event Entry'
280 proxy.download('/pdf/exportMySignInfoList', {
281 ...obj
282 }, `${fileName}_${new Date().getTime()}.pdf`)
268 } 283 }
269 284
270 } 285 }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
10 <match-info-row :match-id="cptId" :language="language"/> 10 <match-info-row :match-id="cptId" :language="language"/>
11 <div class="h20"></div> 11 <div class="h20"></div>
12 <el-form ref="ruleFormRef" label-width="120px" class="signForm" 12 <el-form ref="ruleFormRef" label-width="120px" class="signForm"
13 :model="form" :rules="rules" 13 :model="form" :rules="language==0?rules:rules_en"
14 :label-position="language==0?'left':'top'"> 14 :label-position="language==0?'left':'top'">
15 <el-row> 15 <el-row>
16 <el-col :lg="8" :offset="2"> 16 <el-col :lg="8" :offset="2">
...@@ -133,7 +133,7 @@ const data = reactive({ ...@@ -133,7 +133,7 @@ const data = reactive({
133 } 133 }
134 }, 134 },
135 groupId: route.query.groupId||0, 135 groupId: route.query.groupId||0,
136 cptId: route.params.id||0, 136 cptId: route.query.matchId||0,
137 signType: false, 137 signType: false,
138 regionsList: [], 138 regionsList: [],
139 participantsInfoArr: [], 139 participantsInfoArr: [],
...@@ -148,6 +148,15 @@ const data = reactive({ ...@@ -148,6 +148,15 @@ const data = reactive({
148 abreviations: { required: true, message: '请填写内容', trigger: 'blur' }, 148 abreviations: { required: true, message: '请填写内容', trigger: 'blur' },
149 address: { required: true, message: '请填写内容', trigger: 'blur' } 149 address: { required: true, message: '请填写内容', trigger: 'blur' }
150 }, 150 },
151 rules_en: {
152 imgUrl: { required: true, message: 'required', trigger: 'blur' },
153 name: { required: true, message: 'required', trigger: 'blur' },
154 type: { required: true, message: 'required', trigger: 'change' },
155 contactPerson: { required: true, message: 'required', trigger: 'blur' },
156 contactEmail: { required: true, message: 'required', trigger: 'blur' },
157 abreviations: { required: true, message: 'required', trigger: 'blur' },
158 address: { required: true, message: 'required', trigger: 'blur' }
159 },
151 coachOrLeaderFlag: '', 160 coachOrLeaderFlag: '',
152 matchInfo:{} 161 matchInfo:{}
153 }) 162 })
...@@ -159,13 +168,14 @@ const { ...@@ -159,13 +168,14 @@ const {
159 signType, 168 signType,
160 participantsInfoArr, 169 participantsInfoArr,
161 cptId, 170 cptId,
162 rules, 171 rules,rules_en,
163 regionsList,matchInfo, 172 regionsList,matchInfo,
164 coachOrLeaderFlag, accept,typeOptions 173 coachOrLeaderFlag, accept,typeOptions
165 } = toRefs(data) 174 } = toRefs(data)
166 const uploadUrl = ref('/upload/upLoadToFileServer') 175 const uploadUrl = ref('/upload/upLoadToFileServer')
167 176
168 onMounted(() => { 177 onMounted(() => {
178 console.log(cptId.value,route.query,route.params)
169 // 获取团体信息 179 // 获取团体信息
170 getGroupInfo() 180 getGroupInfo()
171 signType.value = route.query.signType 181 signType.value = route.query.signType
...@@ -232,8 +242,8 @@ function submitForm() { ...@@ -232,8 +242,8 @@ function submitForm() {
232 if (valid) { 242 if (valid) {
233 console.log(form.value) 243 console.log(form.value)
234 for (const n of participantsInfoArr.value) { 244 for (const n of participantsInfoArr.value) {
235 if (n.status == 0 && (!n.value && !n.fixWxFile)) { 245 if (n.status == 0 && (!n.value && (!n.fixWxFile||!n.fixWxFile.length==0))) {
236 ElMessage.error(`请完善${n.name}信息`) 246 ElMessage.error(language.value==0?`请完善${n.name}信息`:`Please complete ${n.name} information`)
237 return 247 return
238 } 248 }
239 } 249 }
...@@ -243,7 +253,8 @@ function submitForm() { ...@@ -243,7 +253,8 @@ function submitForm() {
243 let fileInfo = {} 253 let fileInfo = {}
244 for (var p of participantsInfoArr.value) { 254 for (var p of participantsInfoArr.value) {
245 if (p.type == '2' && p.fixWxFile) { 255 if (p.type == '2' && p.fixWxFile) {
246 const temp = p.fixWxFile[0].name.split('.') 256 console.log(p.fixWxFile)
257 const temp = p.fixWxFile[0]?.name.split('.')
247 fileInfo = { 258 fileInfo = {
248 url: p.fixWxFile[0].url, 259 url: p.fixWxFile[0].url,
249 name: p.fixWxFile[0].name, 260 name: p.fixWxFile[0].name,
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!