c22b116f by 杨炀

no message

1 parent 4d8b424f
Showing 42 changed files with 475 additions and 227 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',
...@@ -119,13 +119,6 @@ const menusPersonal = ref([ ...@@ -119,13 +119,6 @@ const menusPersonal = ref([
119 isActive: false 119 isActive: false
120 }, 120 },
121 { 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 {
129 name: language.value==0?'我的报名':'My Registration', 122 name: language.value==0?'我的报名':'My Registration',
130 routeName: 'myMatch', 123 routeName: 'myMatch',
131 picUrl1: '/img/nav_28.png', 124 picUrl1: '/img/nav_28.png',
...@@ -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,
......
...@@ -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 match.getMaList().then((res) => {
246 if (route.params.id != 0) { 245 if (route.params.id != 0) {
247 matchId.value = route.params.id 246 matchId.value = route.params.id
247 getMatch(matchId.value)
248 getGroupListByCptId(matchId.value)
248 } else { 249 } else {
249 matchId.value = res.rows[0].id 250 getMatchId()
250 } 251 }
252 })
253 function getMatchId() {
254 match.getMaList().then((res) => {
255 matchId.value = res.rows[0].id
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 }
427 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 }
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!