b73dad45 by 杨炀

no message

1 parent 815a2ac2
...@@ -10,7 +10,7 @@ export function getMaList(params) { ...@@ -10,7 +10,7 @@ export function getMaList(params) {
10 10
11 export function getMatchById(params) { 11 export function getMatchById(params) {
12 return request({ 12 return request({
13 url: `/league/competition/detail`, 13 url: `/league/competition/PCDetail`,
14 method: 'get', 14 method: 'get',
15 params: params 15 params: params
16 }) 16 })
...@@ -287,6 +287,14 @@ export function getGroupPersonList(query,groupId) { ...@@ -287,6 +287,14 @@ export function getGroupPersonList(query,groupId) {
287 params: query 287 params: query
288 }) 288 })
289 } 289 }
290 export function getPerPersonList(query,userId) {
291 return request({
292 url: `/systemj/personInfo/getPersonInfoListByPersonIdNoLabel/${userId}`,
293 method: 'get',
294 params: query
295 })
296 }
297
290 298
291 // 获取团队报名时已选人员 299 // 获取团队报名时已选人员
292 export function getChooseDoneGroupCoachs(cptId, groupId) { 300 export function getChooseDoneGroupCoachs(cptId, groupId) {
...@@ -540,3 +548,26 @@ export function getProjectPageByPerIds(query) { ...@@ -540,3 +548,26 @@ export function getProjectPageByPerIds(query) {
540 }) 548 })
541 } 549 }
542 550
551 export function createWePay(data) {
552 return request({
553 url: `/league/signOrder/wxPay`,
554 method: 'post',
555 data:data
556 })
557 }
558 export function createPalPay(data) {
559 return request({
560 url: `/league/signOrder/palPay`,
561 method: 'post',
562 data:data
563 })
564 }
565 export function callbackPalPay(tradeNo) {
566 return request({
567 url: `/league/signOrder/palPay/callback`,
568 method: 'post',
569 data:{
570 tradeNo:tradeNo
571 }
572 })
573 }
......
...@@ -787,7 +787,6 @@ img{display: block;} ...@@ -787,7 +787,6 @@ img{display: block;}
787 .el-menu-item:hover{background-color:#fff; } 787 .el-menu-item:hover{background-color:#fff; }
788 } 788 }
789 .black-pic-bg{ 789 .black-pic-bg{
790 background: url("@/assets/v1/ss03.png") no-repeat center;
791 background-size: cover;height: 100%;display: flex; 790 background-size: cover;height: 100%;display: flex;
792 justify-content: space-around; 791 justify-content: space-around;
793 .item{background:rgba(255, 255, 255, 0.3); 792 .item{background:rgba(255, 255, 255, 0.3);
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
42 </el-dialog> 42 </el-dialog>
43 43
44 <!-- 上传提示 --> 44 <!-- 上传提示 -->
45 <div v-if="showUpload && fileList.length < limit" class="el-upload__tip"> 45 <div v-if="isShowTip" class="el-upload__tip">
46 请上传 46 请上传
47 <template v-if="fileSize"> 47 <template v-if="fileSize">
48 大小不超过 48 大小不超过
...@@ -152,8 +152,12 @@ const props = defineProps({ ...@@ -152,8 +152,12 @@ const props = defineProps({
152 disabled: { 152 disabled: {
153 type: Boolean, 153 type: Boolean,
154 default: false 154 default: false
155 },
156 isShowTip: {
157 type: Boolean,
158 default: true
155 } 159 }
156 160
157 }) 161 })
158 const accept = computed(() => { 162 const accept = computed(() => {
159 return _.map(props.fileType, (t) => { 163 return _.map(props.fileType, (t) => {
...@@ -220,7 +224,7 @@ watch( ...@@ -220,7 +224,7 @@ watch(
220 (value) => { 224 (value) => {
221 showUpload.value = value !== props.limit 225 showUpload.value = value !== props.limit
222 }, { deep: true, immediate: true } 226 }, { deep: true, immediate: true }
223 227
224 ) 228 )
225 229
226 230
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
16 <script setup> 16 <script setup>
17 import variables from '@/assets/styles/variables.module.scss' 17 import variables from '@/assets/styles/variables.module.scss'
18 import logo from '@/assets/logo/logo@2x.png' 18 import logo from '@/assets/logo/logo@2x.png'
19 import logoIco from '@/assets/logo/ico.png' 19 // import logoIco from '@/assets/logo/ico.png'
20 import useSettingsStore from '@/store/modules/settings' 20 import useSettingsStore from '@/store/modules/settings'
21 21
22 defineProps({ 22 defineProps({
......
1 <template>
2 <div class="topNav">
3 <router-link to="/">
4 <img class="logo" src="@/assets/v1/nav_logo.png">
5 </router-link>
6
7 <div class="flex-right" style="display:none;">
8 <div class="ml20 forPc" >
9 <el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn">
10 <span @click="goLogin">{{ language==0?'登录':'LOGIN' }}</span>
11 <!-- | &nbsp;<span @click="goRegister">注册</span>-->
12 </el-button>
13
14 <el-button v-if="isLogin" style="border-radius: 20px;" class="loginBtn">
15 <span @click="router.push('/center/myInfo')">{{ language==0?'个人中心':'Personal' }}</span>
16 &nbsp;&nbsp;<span @click="logout()">{{language==0?'退出':'Exit'}}</span>
17 </el-button>
18 </div>
19 </div>
20 <a class="ropenbtn" @click="showDrawer">
21 <img src="@/assets/v1/menu.png">
22 </a>
23 </div>
24
25 <el-drawer
26 v-model="drawer" size="100%"
27 :style="{'--el-drawer-padding-primary':0}" direction="ltr"
28 :with-header="false" title="菜单"
29 >
30 <div class="weiHead">
31 <div class="languageBtn">
32 <span v-if="language==0" :class="language==0?'active':''" @click="changeLanguage(0)">中文</span>
33 <span v-else :class="language==0?'active':''" @click="changeLanguage(0)">CN</span>
34 |
35 <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span>
36 </div>
37
38 <el-icon color="#453DEA" size="30" @click="closeDrawer"><close/></el-icon>
39 </div>
40
41 <el-menu class="weiMenu"
42 v-if="language==0"
43 router :default-active="activeIndex" mode="vertical" :ellipsis="false"
44 popper-effect="dark" @select="handleSelect"
45 >
46 <el-menu-item index="/">首页</el-menu-item>
47 <el-menu-item index="/news">新闻资讯</el-menu-item>
48 <el-menu-item index="/notice">通知公告</el-menu-item>
49 <el-menu-item index="/match/list/0">大赛报名</el-menu-item>
50 <el-menu-item index="/saiC">赛程安排</el-menu-item>
51 <el-menu-item index="/meta">媒体中心</el-menu-item>
52 <el-menu-item index="/guide">参赛指南</el-menu-item>
53 <el-sub-menu index="/about">
54 <template #title>关于我们</template>
55 <el-menu-item index="/about/wuDao">舞蹈节</el-menu-item>
56 <el-menu-item index="/about/culture">地方文化</el-menu-item>
57 </el-sub-menu>
58 </el-menu>
59 <el-menu class="weiMenu"
60 v-if="language==1"
61 router :default-active="activeIndex" mode="vertical" :ellipsis="false"
62 popper-effect="dark" @select="handleSelect"
63 >
64 <el-menu-item index="/">HOME</el-menu-item>
65 <el-menu-item index="/news">NEWS</el-menu-item>
66 <el-menu-item index="/notice">NOTICEBOARD</el-menu-item>
67 <el-menu-item index="/match/list/0">SIGN UP</el-menu-item>
68 <el-menu-item index="/saiC">COMPETITIONS</el-menu-item>
69 <el-menu-item index="/meta">MEDIA</el-menu-item>
70 <el-menu-item index="/guide">GUIDELINE</el-menu-item>
71 <el-sub-menu index="/about">
72 <template #title>CONTACT & MORE</template>
73 <el-menu-item index="/about/wuDao">About Us</el-menu-item>
74 <el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item>
75 <el-menu-item index="/about/culture">Culture</el-menu-item>
76 </el-sub-menu>
77 </el-menu>
78 </el-drawer>
79 <LoginDialog ref="pcloginDialog" @submitForm="reFlash" />
80 <SearchPop v-if="language==0" ref="searchDialog" />
81 <SearchPop_en v-if="language==1" ref="searchDialog" />
82 </template>
83
84 <script setup>
85 import { computed, ref, watch } from 'vue'
86 import { useRoute, useRouter } from 'vue-router'
87 import useUserStore from '@/store/modules/user'
88 import { Search } from '@element-plus/icons-vue'
89 import { getCurrentInstance, onMounted } from '@vue/runtime-core'
90 import _ from 'lodash'
91 import LoginDialog from '@/viewsPc/login'
92 import SearchPop from './indexSearch'
93 import SearchPop_en from './indexSearch_en'
94 import Captcha from './captcha'
95 import CaptchaSms from './captchaSms'
96 import cache from '@/plugins/cache'
97 import locale from 'element-plus/lib/locale/lang/zh-cn'
98 const router = useRouter()
99 const route = useRoute()
100 const { proxy } = getCurrentInstance()
101 const isLogin = ref(false)
102 const activeIndex = ref('/')
103 const registerVisible = ref(false)
104 const loginForm = ref({})
105 const drawer = ref(false)
106 const mode = ref('horizontal')
107 const language = ref(cache.local.get('language') || 0)
108 onMounted(() => {
109 console.log(window.location.href)
110 if (useUserStore().user) {
111 isLogin.value = true
112 }
113 // if (window.location.href.indexOf('en') > -1) {
114 // cache.local.set('language', 1)
115 // // location.reload()
116 // }
117 if (route.fullPath.indexOf('news') > -1) {
118 activeIndex.value = '/news'
119 } else if (route.fullPath.indexOf('notice') > -1) {
120 activeIndex.value = '/notice'
121 } else if (route.fullPath.indexOf('about') > -1) {
122 activeIndex.value = '/about'
123 } else if (route.fullPath.indexOf('mate') > -1) {
124 activeIndex.value = '/mate'
125 } else if (route.fullPath.indexOf('guide') > -1) {
126 activeIndex.value = '/guide'
127 } else if (route.fullPath.indexOf('saiC') > -1) {
128 activeIndex.value = '/saiC'
129 }
130 // console.log(activeIndex.value)
131 })
132 function changeLanguage(n) {
133 // language.value = n
134 cache.local.set('language', n)
135 location.reload()
136 }
137 function showDrawer() {
138 drawer.value = true
139 }
140 function closeDrawer() {
141 drawer.value = false
142 }
143 function handleSelect(key, keyPath) {
144 // console.log(key)
145 activeIndex.value = key
146 drawer.value = false
147 }
148
149 const logout = () => {
150 proxy.$modal.confirm('确定退出?').then(function() {
151 return useUserStore().logOut()
152 }).then(() => {
153 isLogin.value = true
154 location.reload()
155 })
156 }
157
158 const goLogin = (flag) => {
159 let param = null
160 if (_.isBoolean(flag)) {
161 param = {
162 notShowClose: flag
163 }
164 }
165 proxy.$refs['pcloginDialog'].open(param)
166 }
167
168 const reFlash = () => {
169 // 刷新
170 location.reload()
171 }
172 watch(() => useUserStore().reLogin, (val) => {
173 if (val) {
174 goLogin()
175 }
176 })
177
178 function searchNews() {
179 proxy.$refs['searchDialog'].open()
180 }
181 function getCode() {
182 proxy.$refs['codeRef'].getCode()
183 }
184 </script>
185
186 <style scoped lang="scss">
187 .loginBtn {color: #fff;margin-right: 15px;border: none;
188 background: linear-gradient(-90deg, #8623FC, #453DEA);box-shadow:0 0 10px #fff;
189 &:active {
190 color: #fff;
191 background:linear-gradient(0deg, #8623FC, #453DEA);
192 border:none;
193 }
194
195 &:hover {
196 box-shadow:0 0 10px var(--el-color-primary);border: none;
197 color:#fff;
198 }
199
200
201 }
202
203
204
205 .topNav {
206 box-shadow: 0px 0px 13px rgba(113,113,113);
207 display: flex;
208 justify-content: space-between;
209 height: 80px;
210 align-items: center;
211
212 .logo {
213 height: 60px;
214 margin-left: 40px;
215 }
216
217 .flex-right {
218 display: flex;
219 align-items: center;
220 }
221
222 .search {
223 position: relative;
224
225 .el-button.is-circle:hover {
226 color:var(--el-color-primary);
227 border-color: var(--el-color-primary);
228 }
229 .el-button.is-circle:active {
230 background: var(--el-color-primary);
231 color: #fff;
232 border-color: var(--el-color-primary);
233 }
234 .el-button.is-circle:focus {
235 border-color: var(--el-color-primary)
236 }
237 :deep(.el-input .el-input__wrapper) {
238 box-shadow: none;
239 border-radius: 18px;
240 background: #F4F4F4;
241 }
242
243 .el-icon {
244 position: absolute;
245 right: 5px;
246 }
247 }
248 }
249
250 .menuBox {
251 height: 60px;
252 background: var(--el-color-primary);
253 }
254
255
256 .ropenbtn{padding: 10px;display: none;
257 img{ width: 50px;}
258 }
259
260 :deep(.el-input){height: 100%}
261 :deep(.el-form-item){height: 40px;}
262 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0 5px; font-size: 18px;}
263 .home-menu .el-sub-menu .el-sub-menu__title{font-size: 18px;}
264 .weiMenu.el-menu{
265 border: none;
266 :deep(.el-menu-item.is-active){color: var(--el-color-primary);}
267 }
268 .weiHead{display: flex;justify-content: end;padding: 15px;align-items: center;
269 .languageBtn{font-size: 20px;margin-right: 20px;line-height: 30px;white-space: nowrap;}
270 }
271 .weiMenu{
272 .el-menu-item{font-size: 20px}
273 :deep(.el-sub-menu__title){font-size: 20px}
274 :deep(.el-sub-menu .el-sub-menu__icon-arrow){font-size: 20px}
275 }
276
277 @media (max-width: 1400px) {
278 .search {
279 display: none;
280 }
281 }
282 @media (max-width: 1340px) {
283 .loginBtn {
284 display: none;
285 }
286 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0; }
287 }
288 @media (max-width: 1000px) {
289 .box {
290 width: 100%
291 }
292 }
293
294 @media (max-width: 800px) {
295
296 .ropenbtn{display: block}
297
298 .forPc {
299 display: none;
300 }
301 }
302
303 </style>
304
1 export { default as AppMain } from './AppMain' 1 export { default as AppMain } from './AppMain'
2 export { default as AppHeader } from './AppHeader' 2 export { default as AppHeader } from './AppHeader'
3 export { default as AppBottom } from './AppBottom' 3 export { default as AppBottom } from './AppBottom'
4 export { default as AppTop } from './AppTop'
4 5
......
1 <template>
2 <div>
3 <app-top />
4 <app-main />
5 <app-bottom />
6 </div>
7 </template>
8
9 <script setup>
10 import { AppMain, AppTop, AppBottom } from './components'
11 </script>
12
13 <style lang="scss">
14 // match
15 .kind{
16 .el-radio-button{ margin: 0 14px 0 0;}
17 .el-radio-button__inner{border: none!important;}
18 .el-radio-button__original-radio:checked+.el-radio-button__inner{
19 background: #CA171D;border-radius: 0;}
20 }
21 </style>
...@@ -5,6 +5,7 @@ import { ...@@ -5,6 +5,7 @@ import {
5 } from 'vue-router' 5 } from 'vue-router'
6 /* Layout */ 6 /* Layout */
7 import Layout from '@/layoutPc' 7 import Layout from '@/layoutPc'
8 import Layout2 from '@/layoutPc/index2'
8 import Empty from '@/layoutPc/empty' 9 import Empty from '@/layoutPc/empty'
9 import NProgress from "nprogress"; 10 import NProgress from "nprogress";
10 import {getToken} from "@/utils/auth"; 11 import {getToken} from "@/utils/auth";
...@@ -401,18 +402,6 @@ export const constantRoutes = [ ...@@ -401,18 +402,6 @@ export const constantRoutes = [
401 redirect: '/match/list', 402 redirect: '/match/list',
402 children: [ 403 children: [
403 { 404 {
404 path: 'commitDone/:orderId',
405 component: () => import('@/viewsPc/match/commitDone'),
406 name: 'commitDone',
407 meta: { title: '提交审核'}
408 },
409 {
410 path: 'pay',
411 component: () => import('@/viewsPc/match/pay'),
412 name: 'signPay',
413 meta: { title: '缴费清单' }
414 },
415 {
416 path: 'list', 405 path: 'list',
417 component: () => import('@/viewsPc/match/index'), 406 component: () => import('@/viewsPc/match/index'),
418 name: 'matchList', 407 name: 'matchList',
...@@ -423,48 +412,6 @@ export const constantRoutes = [ ...@@ -423,48 +412,6 @@ export const constantRoutes = [
423 component: () => import('@/viewsPc/match/detail'), 412 component: () => import('@/viewsPc/match/detail'),
424 name: 'matchDetail', 413 name: 'matchDetail',
425 meta: { title: '赛事详情' } 414 meta: { title: '赛事详情' }
426 },
427 {
428 path: 'list/:id/singleSign',
429 component: () => import('@/viewsPc/match/singleSign'),
430 name: 'singleSign',
431 meta: { title: '个人报名' }
432 },
433 {
434 path: 'list/:id/teamSign',
435 component: () => import('@/viewsPc/match/teamSign'),
436 name: 'teamSign',
437 meta: { title: '团队报名' }
438 },
439 {
440 path: 'list/:id/chooseCoach',
441 component: () => import('@/viewsPc/match/chooseCoach'),
442 name: 'chooseCoach',
443 meta: { title: '选择教练/领队/其他' }
444 },
445 {
446 path: 'list/:id/chooseSportsman',
447 component: () => import('@/viewsPc/match/chooseSportsman'),
448 name: 'chooseSportsman',
449 meta: { title: '选择运动员' }
450 },
451 {
452 path: 'list/:id/chooseProject',
453 component: () => import('@/viewsPc/match/chooseProject'),
454 name: 'chooseProject',
455 meta: { title: '选择参赛项目' }
456 },
457 {
458 path: 'list/:id/expenseDetails',
459 component: () => import('@/viewsPc/match/expenseDetails'),
460 name: 'expenseDetails',
461 meta: { title: '费用明细' }
462 },
463 {
464 path: 'list/:id/signPreview',
465 component: () => import('@/viewsPc/match/signPreview'),
466 name: 'signPreview',
467 meta: { title: '提交审核' }
468 } 415 }
469 ] 416 ]
470 }, 417 },
...@@ -542,6 +489,79 @@ export const constantRoutes = [ ...@@ -542,6 +489,79 @@ export const constantRoutes = [
542 ] 489 ]
543 } 490 }
544 ] 491 ]
492 },
493 {
494 path:'/',
495 component: Layout2,
496 children: [
497 {
498 path: 'match',
499 component: Empty,
500 redirect: '/match/list',
501 children: [
502 {
503 path: 'commitDone/:orderId',
504 component: () => import('@/viewsPc/match/commitDone'),
505 name: 'commitDone',
506 meta: { title: '提交审核'}
507 },
508 {
509 path: 'payOk',
510 component: () => import('@/viewsPc/match/payOk'),
511 name: 'payOk',
512 meta: { title: '支付成功'}
513 },
514 {
515 path: 'pay',
516 component: () => import('@/viewsPc/match/pay'),
517 name: 'signPay',
518 meta: { title: '缴费清单' }
519 },
520 {
521 path: 'list/:id/singleSign',
522 component: () => import('@/viewsPc/match/singleSign'),
523 name: 'singleSign',
524 meta: { title: '个人报名' }
525 },
526 {
527 path: 'list/:id/teamSign',
528 component: () => import('@/viewsPc/match/teamSign'),
529 name: 'teamSign',
530 meta: { title: '团队报名' }
531 },
532 {
533 path: 'list/:id/chooseCoach',
534 component: () => import('@/viewsPc/match/chooseCoach'),
535 name: 'chooseCoach',
536 meta: { title: '选择教练/领队/其他' }
537 },
538 {
539 path: 'list/:id/chooseSportsman',
540 component: () => import('@/viewsPc/match/chooseSportsman'),
541 name: 'chooseSportsman',
542 meta: { title: '选择运动员' }
543 },
544 {
545 path: 'list/:id/chooseProject',
546 component: () => import('@/viewsPc/match/chooseProject'),
547 name: 'chooseProject',
548 meta: { title: '选择参赛项目' }
549 },
550 {
551 path: 'list/:id/expenseDetails',
552 component: () => import('@/viewsPc/match/expenseDetails'),
553 name: 'expenseDetails',
554 meta: { title: '费用明细' }
555 },
556 {
557 path: 'list/:id/signPreview',
558 component: () => import('@/viewsPc/match/signPreview'),
559 name: 'signPreview',
560 meta: { title: '提交审核' }
561 }
562 ]
563 },
564 ]
545 } 565 }
546 ] 566 ]
547 567
......
...@@ -11,6 +11,7 @@ import {getToken} from "@/utils/auth"; ...@@ -11,6 +11,7 @@ import {getToken} from "@/utils/auth";
11 import useUserStore from "@/store/modules/user"; 11 import useUserStore from "@/store/modules/user";
12 import {isRelogin} from "@/utils/request"; 12 import {isRelogin} from "@/utils/request";
13 import {ElMessage} from "element-plus"; 13 import {ElMessage} from "element-plus";
14 import Layout2 from "@/layoutPc/index2";
14 // import useUserStore from '@/store/modules/user' 15 // import useUserStore from '@/store/modules/user'
15 16
16 /** 17 /**
...@@ -278,18 +279,6 @@ export const constantRoutes = [ ...@@ -278,18 +279,6 @@ export const constantRoutes = [
278 redirect: '/match/list', 279 redirect: '/match/list',
279 children: [ 280 children: [
280 { 281 {
281 path: 'commitDone/:orderId',
282 component: () => import('@/viewsPc/match/commitDone'),
283 name: 'commitDone',
284 meta: { title: '提交审核'}
285 },
286 {
287 path: 'pay',
288 component: () => import('@/viewsPc/match/pay'),
289 name: 'signPay',
290 meta: { title: '缴费清单' }
291 },
292 {
293 path: 'list', 282 path: 'list',
294 component: () => import('@/viewsPc/match/index'), 283 component: () => import('@/viewsPc/match/index'),
295 name: 'matchList', 284 name: 'matchList',
...@@ -300,48 +289,6 @@ export const constantRoutes = [ ...@@ -300,48 +289,6 @@ export const constantRoutes = [
300 component: () => import('@/viewsPc/match/detail_en'), 289 component: () => import('@/viewsPc/match/detail_en'),
301 name: 'matchDetail', 290 name: 'matchDetail',
302 meta: { title: '赛事详情' } 291 meta: { title: '赛事详情' }
303 },
304 {
305 path: 'list/:id/singleSign',
306 component: () => import('@/viewsPc/match/singleSign'),
307 name: 'singleSign',
308 meta: { title: '个人报名' }
309 },
310 {
311 path: 'list/:id/teamSign',
312 component: () => import('@/viewsPc/match/teamSign'),
313 name: 'teamSign',
314 meta: { title: '团队报名' }
315 },
316 {
317 path: 'list/:id/chooseCoach',
318 component: () => import('@/viewsPc/match/chooseCoach'),
319 name: 'chooseCoach',
320 meta: { title: '选择教练/领队/其他' }
321 },
322 {
323 path: 'list/:id/chooseSportsman',
324 component: () => import('@/viewsPc/match/chooseSportsman'),
325 name: 'chooseSportsman',
326 meta: { title: '选择运动员' }
327 },
328 {
329 path: 'list/:id/chooseProject',
330 component: () => import('@/viewsPc/match/chooseProject'),
331 name: 'chooseProject',
332 meta: { title: '选择参赛项目' }
333 },
334 {
335 path: 'list/:id/expenseDetails',
336 component: () => import('@/viewsPc/match/expenseDetails'),
337 name: 'expenseDetails',
338 meta: { title: '费用明细' }
339 },
340 {
341 path: 'list/:id/signPreview',
342 component: () => import('@/viewsPc/match/signPreview'),
343 name: 'signPreview',
344 meta: { title: '提交审核' }
345 } 292 }
346 ] 293 ]
347 }, 294 },
...@@ -445,7 +392,81 @@ export const constantRoutes = [ ...@@ -445,7 +392,81 @@ export const constantRoutes = [
445 meta: { title: 'System messages' } 392 meta: { title: 'System messages' }
446 } 393 }
447 ] 394 ]
448 }] 395 }
396 ]
397 },
398 {
399 path:'/',
400 component: Layout2,
401 children: [
402 {
403 path: 'match',
404 component: Empty,
405 redirect: '/match/list',
406 children: [
407 {
408 path: 'payOk',
409 component: () => import('@/viewsPc/match/payOk'),
410 name: 'payOk',
411 meta: { title: '支付成功'}
412 },
413 {
414 path: 'commitDone/:orderId',
415 component: () => import('@/viewsPc/match/commitDone'),
416 name: 'commitDone',
417 meta: { title: '提交审核'}
418 },
419 {
420 path: 'pay',
421 component: () => import('@/viewsPc/match/pay'),
422 name: 'signPay',
423 meta: { title: '缴费清单' }
424 },
425 {
426 path: 'list/:id/singleSign',
427 component: () => import('@/viewsPc/match/singleSign'),
428 name: 'singleSign',
429 meta: { title: '个人报名' }
430 },
431 {
432 path: 'list/:id/teamSign',
433 component: () => import('@/viewsPc/match/teamSign'),
434 name: 'teamSign',
435 meta: { title: '团队报名' }
436 },
437 {
438 path: 'list/:id/chooseCoach',
439 component: () => import('@/viewsPc/match/chooseCoach'),
440 name: 'chooseCoach',
441 meta: { title: '选择教练/领队/其他' }
442 },
443 {
444 path: 'list/:id/chooseSportsman',
445 component: () => import('@/viewsPc/match/chooseSportsman'),
446 name: 'chooseSportsman',
447 meta: { title: '选择运动员' }
448 },
449 {
450 path: 'list/:id/chooseProject',
451 component: () => import('@/viewsPc/match/chooseProject'),
452 name: 'chooseProject',
453 meta: { title: '选择参赛项目' }
454 },
455 {
456 path: 'list/:id/expenseDetails',
457 component: () => import('@/viewsPc/match/expenseDetails'),
458 name: 'expenseDetails',
459 meta: { title: '费用明细' }
460 },
461 {
462 path: 'list/:id/signPreview',
463 component: () => import('@/viewsPc/match/signPreview'),
464 name: 'signPreview',
465 meta: { title: '提交审核' }
466 }
467 ]
468 },
469 ]
449 } 470 }
450 ] 471 ]
451 472
......
...@@ -6,14 +6,13 @@ ...@@ -6,14 +6,13 @@
6 <el-card class="mb20"> 6 <el-card class="mb20">
7 <div :class="language==0?'center-menu':'center-menu en-menu'"> 7 <div :class="language==0?'center-menu':'center-menu en-menu'">
8 <ul v-if="user.utype=='2'"> 8 <ul v-if="user.utype=='2'">
9 <li 9 <li v-for="(m, i) in menus"
10 v-for="(m, i) in menus"
11 :key="i" 10 :key="i"
12 :class="{ active: m.isActive }" 11 :class="{ active: m.isActive }"
13 > 12 >
14 <a href="javascript:void(0)" @click="toInfo(m)"> 13 <a href="javascript:void(0)" @click="toInfo(m,menus)">
15 <img :src="m.isActive ? m.picUrl2 : m.picUrl1"> 14 <img :src="m.isActive ? m.picUrl2 : m.picUrl1">
16 {{m.name}} 15 {{m.name }}
17 </a> 16 </a>
18 </li> 17 </li>
19 </ul> 18 </ul>
...@@ -23,7 +22,7 @@ ...@@ -23,7 +22,7 @@
23 :key="i" 22 :key="i"
24 :class="{ active: m.isActive }" 23 :class="{ active: m.isActive }"
25 > 24 >
26 <a href="javascript:void(0)" @click="toInfo(m)"> 25 <a href="javascript:void(0)" @click="toInfo(m,menusPersonal)">
27 <img :src="m.isActive ? m.picUrl2 : m.picUrl1"> 26 <img :src="m.isActive ? m.picUrl2 : m.picUrl1">
28 {{ m.name }} 27 {{ m.name }}
29 </a> 28 </a>
...@@ -119,6 +118,13 @@ const menusPersonal = ref([ ...@@ -119,6 +118,13 @@ const menusPersonal = ref([
119 picUrl2: '/img/nav_27_dwn.png', 118 picUrl2: '/img/nav_27_dwn.png',
120 isActive: false 119 isActive: false
121 }, 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 },
122 { 128 {
123 name: language.value==0?'我的报名':'My Eegistration', 129 name: language.value==0?'我的报名':'My Eegistration',
124 routeName: 'myMatch', 130 routeName: 'myMatch',
...@@ -141,20 +147,26 @@ const menusPersonal = ref([ ...@@ -141,20 +147,26 @@ const menusPersonal = ref([
141 isActive: false 147 isActive: false
142 } 148 }
143 ]) 149 ])
144 150 let currMenu
145 onMounted(() => { 151 onMounted(() => {
146 user.value = useUserStore().user || {} 152 user.value = useUserStore().user || {}
153 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) => {
159 return m.routeName === route.name
160 })
161 }
147 162
148 const currMenu = _.find(menus.value, (m) => {
149 return m.routeName === route.name
150 })
151 if (currMenu) { 163 if (currMenu) {
152 currMenu.isActive = true 164 currMenu.isActive = true
153 } 165 }
154 }) 166 })
155 167
156 const toInfo = (item) => { 168 const toInfo = (item,list) => {
157 _.each(menus.value, (m) => { 169 _.each(list, (m) => {
158 m.isActive = false 170 m.isActive = false
159 }) 171 })
160 item.isActive = true 172 item.isActive = true
......
...@@ -2,54 +2,59 @@ ...@@ -2,54 +2,59 @@
2 <div class="mb20"> 2 <div class="mb20">
3 <el-card :body-style="{'padding':'0'}"> 3 <el-card :body-style="{'padding':'0'}">
4 <div class="indexTitle"> 4 <div class="indexTitle">
5 <h3 class="leftboderTT" v-if="user.utype=='2'">{{ language==0?'机构基础信息':'Institutional Basic Information' }}</h3> 5 <h3 class="leftboderTT" v-if="user.utype=='2'">
6 <h3 class="leftboderTT" v-if="user.utype=='1'">{{ language==0?'个人基础信息':'Personal Basic Information' }}</h3> 6 {{ language == 0 ? '机构基础信息' : 'Institutional Basic Information' }}</h3>
7 <h3 class="leftboderTT" v-if="user.utype=='1'">{{
8 language == 0 ? '个人基础信息' : 'Personal Basic Information'
9 }}</h3>
7 </div> 10 </div>
8 <!-- uType字段 1 是个人 2是团体--> 11 <!-- uType字段 1 是个人 2是团体-->
9 <!-- {{user}}--> 12 <!-- {{user}}-->
10 <team-info :form="myform" :language="language" v-if="user.utype=='2'"/> 13 <team-info :form="myform" :language="language" v-if="user.utype=='2'"/>
11 <div class="pd20"> 14 <div class="pd20" v-else>
12 <div class="d-form-border" style="margin-top: 0"> 15 <div class="d-form-border" style="margin-top: 0">
13 <el-form class="d-form" label-width="120"> 16 <el-form class="d-form" label-width="120" :rules="rules" ref="formref">
14 <el-form-item :label="language==0?'用户名':'Account'"> 17 <el-form-item :label="language==0?'用户名':'Account'">
15 {{user.userName}} 18 {{ user.userName }}
16 </el-form-item> 19 </el-form-item>
17 <el-form-item label="姓名" required> 20 <el-form-item :label="language==0?'姓名':'Real Name'" required prop="realName">
18 <el-input v-model="myform.realName" /> 21 <el-input v-model="myform.realName"/>
19 </el-form-item> 22 </el-form-item>
20 <el-form-item label="性别" prop="sex" required> 23 <el-form-item :label="language==0?'性别':'Sex'" required prop="sex">
21 <el-radio-group v-model="myform.sex"> 24 <el-radio-group v-model="myform.sex">
22 <el-radio label="0" size="large"></el-radio> 25 <el-radio label="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
23 <el-radio label="1" size="large"></el-radio> 26 <el-radio label="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
24 </el-radio-group> 27 </el-radio-group>
25 </el-form-item> 28 </el-form-item>
26 <el-form-item label="证件类型"> 29 <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">
27 <el-select v-model="myform.idcType" placeholder="请选择证件类型" style="width: 100%"> 30 <el-select v-model="myform.idcType" style="width: 100%">
28 <el-option 31 <el-option
29 v-for="item in certificates" 32 v-for="item in certificates"
30 :key="item.value" 33 :key="item.value"
31 :label="item.label" 34 :label="item.label"
32 :value="item.value" 35 :value="item.value"
33 /> 36 />
34 </el-select> 37 </el-select>
35 </el-form-item> 38 </el-form-item>
36 <el-form-item label="证件号码"> 39 <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode">
37 <el-input v-model="myform.idcCode" @blur="checkCode"/> 40 <el-input v-model="myform.idcCode" @blur="checkCode"/>
38 </el-form-item> 41 </el-form-item>
39 <el-form-item label="类型" prop="type"> 42 <el-form-item :label="language==0?'类型':'Type'" prop="type">
40 <el-select v-model="myform.type" placeholder="请选择" style="width: 100%;"> 43 <el-select v-model="myform.type" style="width: 100%;">
41 <el-option label="业余" value="0" /> 44 <el-option :label="language==0?'业余':'amateur'" value="0"/>
42 <el-option label="专业" value="1" /> 45 <el-option :label="language==0?'专业':'Professional'" value="1"/>
43 <el-option label="大专院校" value="2" /> 46 <el-option :label="language==0?'大专院校':'Colleges and universities'" value="2"/>
44 <el-option label="其他" value="3" /> 47 <el-option :label="language==0?'其他':'Other'" value="3"/>
45 </el-select> 48 </el-select>
46 </el-form-item> 49 </el-form-item>
47 <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="email"> 50 <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
48 <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/> 51 <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>
49 </el-form-item> 52 </el-form-item>
50 </el-form> 53 </el-form>
51 <div class="text-center"> 54 <div class="text-center">
52 <el-button type="primary" class="btn-lineG" round @click="save">{{ language==0?'确定修改':'Save' }}</el-button> 55 <el-button type="primary" class="btn-lineG" round @click="save">
56 {{language == 0 ? '确定修改' : 'Save'}}
57 </el-button>
53 </div> 58 </div>
54 59
55 </div> 60 </div>
...@@ -60,71 +65,85 @@ ...@@ -60,71 +65,85 @@
60 </template> 65 </template>
61 66
62 <script setup> 67 <script setup>
63 import { ref } from 'vue' 68 import {ref} from 'vue'
64 import { useRouter } from 'vue-router' 69 import {useRouter} from 'vue-router'
65 import { getCurrentInstance, onMounted } from '@vue/runtime-core' 70 import {getCurrentInstance, onMounted} from '@vue/runtime-core'
66 import * as match from '@/apiPc/match' 71 import * as match from '@/apiPc/match'
67 import { ElMessage, ElMessageBox } from 'element-plus' 72 import {ElMessage, ElMessageBox} from 'element-plus'
68 import { nationList } from '@/assets/js/data' 73 import {nationList} from '@/assets/js/data'
69 import {getGroupInfo} from "@/apiPc/match"; 74 import {getGroupInfo} from "@/apiPc/match";
70 import TeamInfo from "@/viewsPc/center/teamInfo"; 75 import TeamInfo from "@/viewsPc/center/teamInfo";
71 import cache from "@/plugins/cache"; 76 import cache from "@/plugins/cache";
77 import useUserStore from "@/store/modules/user";
78
72 const language = ref(cache.local.get('language') || 0) 79 const language = ref(cache.local.get('language') || 0)
73 const router = useRouter() 80 const router = useRouter()
74 const { proxy } = getCurrentInstance() 81 const {proxy} = getCurrentInstance()
75 const props = defineProps({ 82 const props = defineProps({
76 user:{ 83 user: {
77 type:Object, 84 type: Object,
78 required:true 85 required: true
79 } 86 }
80 }) 87 })
88 const rules = ref({
89 realName: [{required: true, message: '必填', trigger: 'blur'}],
90 sex: [{required: true, message: '必填', trigger: 'change'}],
91 idcType: [{required: true, message: '必填', trigger: 'change'}],
92 type: [{required: true, message: '必填', trigger: 'change'}],
93 idcCode: [{required: true, message: '必填', trigger: 'blur'}],
94 email: [{required: true, message: '必填', trigger: 'blur'}],
81 95
96 })
82 const activeName = ref('first') 97 const activeName = ref('first')
83 const myform = ref({ 98 const myform = ref({
84 idcType: 0, 99 idcType: 0,
85 countryId: 240, 100 countryId: 240,
86 nation: '汉族', 101 realName: ''
87 realName:''
88 }) 102 })
89 const labelArr = ref([]) 103 const labelArr = ref([])
90 104
91 const certificates = ref([ 105 const certificates = ref([
92 { 106 {
93 value: '0', 107 value: '0',
94 label: '居民身份证' 108 label: language.value == 0 ? '居民身份证' : 'Resident ID card'
95 }, 109 },
96 { 110 {
97 value: '1', 111 value: '1',
98 label: '护照' 112 label: language.value == 0 ? '护照' : 'Passport'
99 }, 113 },
100 { 114 {
101 value: '2', 115 value: '2',
102 label: '其他' 116 label: language.value == 0 ? '其他' : 'Other'
103 } 117 }
104 ]) 118 ])
105 119 const user = useUserStore().user || {}
106 onMounted(() => { 120 getData()
107 getData()
108 })
109 121
110 function getData() { 122 function getData() {
111 if(props.user.utype=='2'){ 123 if (user.utype == '2') {
112 match.getGroupInfo().then(res => { 124 match.getGroupInfo().then(res => {
113 myform.value = res.data 125 myform.value = res.data
114 }) 126 })
115 } 127 }
116 if(props.user.utype=='1'){ 128 if (user.utype == '1') {
117 match.getMyPersonInfo().then(res => { 129 match.getMyPersonInfo().then(res => {
118 myform.value = res.data 130 myform.value = res.data
119 }) 131 })
120 } 132 }
121 133
122 } 134 }
123 function save(){
124 match.saveMyBaseInfo().then(res=>{
125 135
136 function save() {
137 proxy.$refs['dialogRef'].validate((valid) => {
138 if(valid){
139 match.saveMyBaseInfo().then(res => {
140
141 })
142 }
126 }) 143 })
144
127 } 145 }
146
128 function checkCode() { 147 function checkCode() {
129 if (myform.value.idcType == 0 && myform.value.idcCode) { 148 if (myform.value.idcType == 0 && myform.value.idcCode) {
130 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(myform.value.idcCode))) { 149 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(myform.value.idcCode))) {
...@@ -155,14 +174,17 @@ function checkCode() { ...@@ -155,14 +174,17 @@ function checkCode() {
155 } 174 }
156 175
157 176
158
159 </script> 177 </script>
160 178
161 <style scoped lang="scss"> 179 <style scoped lang="scss">
162 .indexTitle{margin: 20px 0 12px;padding: 0 20px 15px;border-bottom: 1px solid #e5e5e5; 180 .indexTitle {
163 h3{ 181 margin: 20px 0 12px;
182 padding: 0 20px 15px;
183 border-bottom: 1px solid #e5e5e5;
184
185 h3 {
164 font-size: 16px; 186 font-size: 16px;
165 color:var(--el-color-primary); 187 color: var(--el-color-primary);
166 } 188 }
167 } 189 }
168 190
......
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
3 <div class="pd20"> 3 <div class="pd20">
4 <div class="matchItem" v-for="n in billList" :key="n.id"> 4 <div class="matchItem" v-for="n in billList" :key="n.id">
5 <div class="status-po"> 5 <div class="status-po">
6 <span class="bg-pink" v-if="n.auditStatus=='0'">未提交</span> 6 <span class="bg-pink" v-if="n.auditStatus=='0'">{{ language==0?'未提交':'Uncommitted' }}</span>
7 <span class="bg-primary" v-if="n.auditStatus=='1'">待审核</span> 7 <span class="bg-primary" v-if="n.auditStatus=='1'">{{ language==0?'待审核':'Audit' }}</span>
8 <span class="bg-blue" v-if="n.auditStatus=='2'">审核通过</span> 8 <span class="bg-blue" v-if="n.auditStatus=='2'">{{ language==0?'审核通过':'Approved' }}</span>
9 <span class="bg-danger" v-if="n.auditStatus=='3'">审核驳回</span> 9 <span class="bg-danger" v-if="n.auditStatus=='3'">{{ language==0?'审核驳回':'Reject' }}</span>
10 </div> 10 </div>
11 <el-row :gutter="15"> 11 <el-row :gutter="15">
12 <el-col :lg="6" :md="8" :xl="10"> 12 <el-col :lg="6" :md="8" :xl="10">
...@@ -18,22 +18,27 @@ ...@@ -18,22 +18,27 @@
18 <h3>{{ n.name }}</h3> 18 <h3>{{ n.name }}</h3>
19 </el-col> 19 </el-col>
20 <el-col :lg="8"> 20 <el-col :lg="8">
21 <p class="ppl"><label>赛事类型</label>{{ n.level }}</p> 21 <p class="ppl"><label>{{ language==0?'赛事类型':'Event Type' }}</label>{{ n.level }}</p>
22 <p class="ppl"><label v-if="n.groupName">参赛队</label>{{n.groupName}}</p> 22 <p class="ppl"><label v-if="n.groupName">{{ language==0?'参赛队':'Name of participating team' }}</label>{{n.groupName}}</p>
23 </el-col> 23 </el-col>
24 <el-col :lg="8"> 24 <el-col :lg="8">
25 <p class="ppl"><label>比赛时间</label>{{ n.signBeginTime }}~{{n.signEndTime}} 25 <p class="ppl"><label>{{ language==0?'比赛时间':'Event Date' }}</label>{{ n.signBeginTime }}~{{n.signEndTime}}
26 </p> 26 </p>
27 <p class="ppl"><label>参赛运动员</label>{{ n.signSize }}</p> 27 <p class="ppl"><label>{{ language==0?'参赛运动员':'Participating athletes' }}</label>{{ n.signSize }}</p>
28 </el-col> 28 </el-col>
29 <el-col :lg="8"> 29 <el-col :lg="8">
30 <p class="ppl"><label>报名时间</label>{{ n.signBeginTime }}~{{n.signEndTime}}</p> 30 <p class="ppl"><label>{{ language==0?'报名时间':'Registration Period' }}</label>{{ n.signBeginTime }}~{{n.signEndTime}}</p>
31 <div class="btnbox"> 31 <div class="btnbox">
32 <el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus!='0'">详情</el-button> 32 <el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus!='0'">
33 <el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='0'">继续报名</el-button> 33 {{ language==0?'详情':'Detail' }}</el-button>
34 <el-button plain round type="primary" @click="withDraw(n)" v-if="n.auditStatus=='1'">取消报名</el-button> 34 <el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='0'">
35 <el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='3'">重新报名</el-button> 35 {{ language==0?'继续报名':'Continue to register' }}</el-button>
36 <el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus=='2'&&n.payStatus=='0'">缴费</el-button> 36 <el-button plain round type="primary" @click="withDraw(n)" v-if="n.auditStatus=='1'">
37 {{ language==0?'取消报名':'Cancel registration' }}</el-button>
38 <el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='3'">
39 {{ language==0?'重新报名':'Re register' }}</el-button>
40 <el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus=='2'&&n.payStatus=='0'">
41 {{ language==0?'缴费':'pay' }}</el-button>
37 </div> 42 </div>
38 </el-col> 43 </el-col>
39 </el-row> 44 </el-row>
...@@ -41,7 +46,7 @@ ...@@ -41,7 +46,7 @@
41 </el-row> 46 </el-row>
42 </div> 47 </div>
43 48
44 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="billList?.length == 0"/> 49 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="billList?.length == 0"/>
45 50
46 </div> 51 </div>
47 <paginationPc 52 <paginationPc
...@@ -71,7 +76,8 @@ import * as match from '@/apiPc/match' ...@@ -71,7 +76,8 @@ import * as match from '@/apiPc/match'
71 import {ElMessage, ElMessageBox} from 'element-plus' 76 import {ElMessage, ElMessageBox} from 'element-plus'
72 import _ from 'lodash' 77 import _ from 'lodash'
73 import useUserStore from "@/store/modules/user"; 78 import useUserStore from "@/store/modules/user";
74 79 import cache from "@/plugins/cache";
80 const language = ref(cache.local.get('language') || 0)
75 const router = useRouter() 81 const router = useRouter()
76 const {proxy} = getCurrentInstance() 82 const {proxy} = getCurrentInstance()
77 const total = ref(0) 83 const total = ref(0)
......
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
62 </el-row> 62 </el-row>
63 </div> 63 </div>
64 64
65 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="billList?.length == 0"/> 65 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="billList?.length == 0"/>
66 66
67 </div> 67 </div>
68 <paginationPc 68 <paginationPc
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
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?'短名':'Short Name'"> 12 <el-form-item :label="language==0?'短名':'Nick Name'">
13 <el-input v-model="query.shortName" style="width: 120px;" clearable/> 13 <el-input v-model="query.shortName" style="width: 120px;" clearable/>
14 </el-form-item> 14 </el-form-item>
15 <el-form-item :label="language==0?'手机号码':'Phone Number'"> 15 <el-form-item :label="language==0?'手机号码':'Phone Number'">
...@@ -63,7 +63,7 @@ const router = useRouter() ...@@ -63,7 +63,7 @@ const router = useRouter()
63 const {proxy} = getCurrentInstance() 63 const {proxy} = getCurrentInstance()
64 import * as match from '@/apiPc/match' 64 import * as match from '@/apiPc/match'
65 import {ElMessage, ElMessageBox} from 'element-plus' 65 import {ElMessage, ElMessageBox} from 'element-plus'
66 import {getGroupPersonList} from "@/apiPc/match"; 66 import {getGroupPersonList, getPerPersonList} from "@/apiPc/match";
67 import PersonTable from "@/viewsPc/match/components/personTable"; 67 import PersonTable from "@/viewsPc/match/components/personTable";
68 import cache from "@/plugins/cache"; 68 import cache from "@/plugins/cache";
69 import useUserStore from "@/store/modules/user"; 69 import useUserStore from "@/store/modules/user";
...@@ -74,17 +74,18 @@ const labels = ref([ ...@@ -74,17 +74,18 @@ const labels = ref([
74 {value: '0', label: '运动员', enlabel: 'Sportsman'}, 74 {value: '0', label: '运动员', enlabel: 'Sportsman'},
75 {value: '1', label: '教练', enlabel: 'Coach'}, 75 {value: '1', label: '教练', enlabel: 'Coach'},
76 {value: '2', label: '领队', enlabel: 'Leader'}, 76 {value: '2', label: '领队', enlabel: 'Leader'},
77 {value: '3', label: '队医', enlabel: 'Nurse'}, 77 {value: '4', label: '队医', enlabel: 'Nurse'},
78 {value: '4', label: '翻译', enlabel: 'Translator'}, 78 {value: '5', label: '翻译', enlabel: 'Translator'},
79 {value: '5', label: '官员', enlabel: 'Official'}, 79 {value: '6', label: '官员', enlabel: 'Official'},
80 {value: '6', label: '其他', enlabel: 'Other'} 80 {value: '3', label: '其他', enlabel: 'Other'}
81 ]) 81 ])
82 const query = ref({ 82 const query = ref({
83 pageNum: 1, pageSize: 10 83 pageNum: 1, pageSize: 10
84 }) 84 })
85 const total = ref(0) 85 const total = ref(0)
86 const group = useUserStore().group 86 const group = useUserStore().group || {}
87 const groupId = ref(group.id) 87 const user = useUserStore().user || {}
88 const groupId = ref(group.id|| 0)
88 onMounted(() => { 89 onMounted(() => {
89 getList(groupId.value) 90 getList(groupId.value)
90 }) 91 })
...@@ -108,10 +109,19 @@ function importSportman() { ...@@ -108,10 +109,19 @@ function importSportman() {
108 109
109 function getList() { 110 function getList() {
110 query.value.label =labelArr.value.toString() 111 query.value.label =labelArr.value.toString()
111 getGroupPersonList(query.value, groupId.value).then(res => { 112 if(user.utype=='2'){
112 tableData.value = res.rows 113 getGroupPersonList(query.value, groupId.value).then(res => {
113 total.value = res.total 114 tableData.value = res.rows
114 }) 115 total.value = res.total
116 })
117 }
118 if(user.utype=='1'){
119 getPerPersonList(query.value,user.userId).then(res => {
120 tableData.value = res.rows
121 total.value = res.total
122 })
123 }
124
115 } 125 }
116 126
117 function editCoach(row,title) { 127 function editCoach(row,title) {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 <div> 2 <div>
3 <el-card :body-style="{'padding':'0'}"> 3 <el-card :body-style="{'padding':'0'}">
4 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'我的预订':'My reservation' }}</h3></div> 4 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'我的预订':'My reservation' }}</h3></div>
5 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="list?.length == 0"/> 5 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0"/>
6 6
7 <div class="pd20"></div> 7 <div class="pd20"></div>
8 </el-card> 8 </el-card>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
10 <span>{{ n.time }}</span> 10 <span>{{ n.time }}</span>
11 </li> 11 </li>
12 </ul> 12 </ul>
13 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="list?.length == 0"/> 13 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0"/>
14 14
15 </el-card> 15 </el-card>
16 </div> 16 </div>
......
...@@ -359,7 +359,7 @@ function editPerson(id) { ...@@ -359,7 +359,7 @@ function editPerson(id) {
359 proxy.$refs['dialogAddCoachRef'].open({ 359 proxy.$refs['dialogAddCoachRef'].open({
360 title: language.value==0?'编辑人员':'Edit', 360 title: language.value==0?'编辑人员':'Edit',
361 id: id, 361 id: id,
362 groupId: groupId.value 362 groupId: groupId.value || 0
363 }) 363 })
364 } 364 }
365 365
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
57 </div> 57 </div>
58 </el-checkbox> 58 </el-checkbox>
59 </el-checkbox-group> 59 </el-checkbox-group>
60 <el-empty v-if="projectList.length==0" image="@/assets/img/order_no.png" :image-size="228" 60 <el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228"
61 :description="language==0?'无可选项目':''"/> 61 :description="language==0?'无可选项目':''"/>
62 </div> 62 </div>
63 </div> 63 </div>
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
97 </el-card> 97 </el-card>
98 </div> 98 </div>
99 99
100 <dialogAddCoach ref="dialogAddCoachRef" @submitForm="getProjectList"/> 100 <dialogAddCoach ref="dialogAddCoachRef" @submitForm="changeMeDone"/>
101 101
102 102
103 <!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>--> 103 <!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>-->
...@@ -165,6 +165,7 @@ const { ...@@ -165,6 +165,7 @@ const {
165 const matchId = ref(route.query.matchId) 165 const matchId = ref(route.query.matchId)
166 let signInfoType = null 166 let signInfoType = null
167 const form = ref({}) 167 const form = ref({})
168 const signEndTime = ref('')
168 const userId = ref('') 169 const userId = ref('')
169 const myId = ref('') 170 const myId = ref('')
170 onMounted(() => { 171 onMounted(() => {
...@@ -185,12 +186,17 @@ function getMyInfo(){ ...@@ -185,12 +186,17 @@ function getMyInfo(){
185 getProjectList() 186 getProjectList()
186 }) 187 })
187 } 188 }
189 function changeMeDone(){
190 getMyInfo()
191 getProjectList()
192 }
188 let chargeFlag 193 let chargeFlag
189 194
190 function getMatch(id) { 195 function getMatch(id) {
191 match.getMatchById({ 196 match.getMatchById({
192 id: id 197 id: id
193 }).then(res => { 198 }).then(res => {
199 signEndTime.value = res.data.signEndTime
194 chargeFlag = res.data.chargeFlag 200 chargeFlag = res.data.chargeFlag
195 noPhotoCanSign.value = res.data.noPhotoCanSign 201 noPhotoCanSign.value = res.data.noPhotoCanSign
196 coachOrLeaderFlag.value = res.data.coachOrLeaderFlag 202 coachOrLeaderFlag.value = res.data.coachOrLeaderFlag
...@@ -233,11 +239,12 @@ function submitForm(n) { ...@@ -233,11 +239,12 @@ function submitForm(n) {
233 return 239 return
234 } 240 }
235 if(n==0){ 241 if(n==0){
236 ElMessageBox.confirm(`您当前的操作为暂存,并不是提交审核,必须在报名截止时间XXXX-XX-XX之前完成提交。\n` + 242 ElMessageBox.confirm(`您当前的操作为暂存,并不是提交审核,
237 '\n' + 243 必须在报名截止时间${signEndTime.value}之前完成提交。
238 '您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。','提示',{ 244 您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`,
239 confirmButtonText: '去个人中心', 245 language.value==0?'提示':'Tip',{
240 cancelButtonText: '知道了', 246 confirmButtonText: language.value==0?'去个人中心':'Go My Eegistration ',
247 cancelButtonText: language.value==0?'知道了':'OK',
241 type: 'warning' 248 type: 'warning'
242 }).then((res)=>{ 249 }).then((res)=>{
243 console.log(res) 250 console.log(res)
...@@ -253,7 +260,7 @@ function submitForm(n) { ...@@ -253,7 +260,7 @@ function submitForm(n) {
253 } 260 }
254 for (const s of signInfoList.value) { 261 for (const s of signInfoList.value) {
255 if (s.extraPersonInfo == null && needBuchong) { 262 if (s.extraPersonInfo == null && needBuchong) {
256 ElMessage.error('请完善运动员补充信息') 263 ElMessage.error(language.value==0?'请完善运动员补充信息':'Complete Supplementary Information')
257 tableType.value = 0 264 tableType.value = 0
258 return 265 return
259 } 266 }
...@@ -284,7 +291,8 @@ function getProjectList() { ...@@ -284,7 +291,8 @@ function getProjectList() {
284 //根据已选人员id 获取项目列表 291 //根据已选人员id 获取项目列表
285 var obj = { 292 var obj = {
286 cptId: matchId.value, 293 cptId: matchId.value,
287 perIds: myId.value 294 perIds: myId.value,
295 name:projectQuery.value.name
288 } 296 }
289 match.getProjectPageByPerIds(obj).then(res => { 297 match.getProjectPageByPerIds(obj).then(res => {
290 projectList.value = res.rows 298 projectList.value = res.rows
...@@ -340,15 +348,17 @@ function signUp() { ...@@ -340,15 +348,17 @@ function signUp() {
340 } 348 }
341 349
342 function removeThis(id) { 350 function removeThis(id) {
343 ElMessageBox.confirm('确定移除这条报项吗?', '提示', { 351 ElMessageBox.confirm(language.value==0?'确定移除这条报项吗?':'Are you sure to remove this report item',
344 confirmButtonText: '确定', 352 language.value==0?'提示':'Tips', {
345 cancelButtonText: '取消', 353 confirmButtonText: language.value==0?'确定':'Confirm',
354 cancelButtonText: language.value==0?'取消':'Cancel',
346 type: 'warning' 355 type: 'warning'
347 }).then(() => { 356 }).then(() => {
348 match.deleteSign(id).then(res => { 357 match.deleteSign(id).then(res => {
349 // 重新获取已报名信息 358 // 重新获取已报名信息
350 ElMessage.success('已移除该报项') 359 ElMessage.success(language.value==0?'已移除该报项':'success')
351 getSignInfoList() 360 getSignInfoList()
361 getProjectList()
352 }) 362 })
353 }) 363 })
354 } 364 }
...@@ -401,8 +411,8 @@ function downloadVoucher() { ...@@ -401,8 +411,8 @@ function downloadVoucher() {
401 411
402 function editPerson() { 412 function editPerson() {
403 proxy.$refs['dialogAddCoachRef'].open({ 413 proxy.$refs['dialogAddCoachRef'].open({
404 title: '编辑人员', 414 title: language.value==0?'编辑个人信息':'Edit My Information',
405 uType: '1' 415 isMe: true
406 }) 416 })
407 } 417 }
408 418
......
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
84 </div> 84 </div>
85 </el-checkbox> 85 </el-checkbox>
86 </el-checkbox-group> 86 </el-checkbox-group>
87 <el-empty v-if="projectList.length==0" image="@/assets/img/order_no.png" :image-size="228" 87 <el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228"
88 :description="language==0?'无可选项目':''"/> 88 :description="language==0?'无可选项目':''"/>
89 </div> 89 </div>
90 </div> 90 </div>
......
...@@ -9,12 +9,12 @@ ...@@ -9,12 +9,12 @@
9 <div class="flexCenter pd20"> 9 <div class="flexCenter pd20">
10 <img src="@/assets/img/e.png"/> 10 <img src="@/assets/img/e.png"/>
11 <div> 11 <div>
12 <div>账号{{ user.userName }}</div> 12 <div>{{ language==0? '账号':'Account' }}{{ user.userName }}</div>
13 <h3>报名信息提交成功</h3> 13 <h3>{{ language==0?'报名信息提交成功':'Registration information submitted successfully' }}</h3>
14 </div> 14 </div>
15 </div> 15 </div>
16 <div class="text-center flexCenter"> 16 <div class="text-center flexCenter">
17 <div class="border-info mt20"> 17 <div class="border-info mt20" v-if="language==0">
18 审核结果,后续将以邮件形式正式通知您。 18 审核结果,后续将以邮件形式正式通知您。
19 <br/> 19 <br/>
20 邮件发送账号:<span class="text-primary">{{ user.email }}</span> 20 邮件发送账号:<span class="text-primary">{{ user.email }}</span>
...@@ -22,11 +22,20 @@ ...@@ -22,11 +22,20 @@
22 <br/> 22 <br/>
23 如果您的报名信息审核通过,邮件正文会附上相关费用的支付链接,请通过链接完成支付,完成报名。 23 如果您的报名信息审核通过,邮件正文会附上相关费用的支付链接,请通过链接完成支付,完成报名。
24 </div> 24 </div>
25 <div class="border-info mt20" v-else>
26 The audit results will be formally notified to you via email in the future.
27 <br/>
28 Email sender: <span class="text-primary">{{ user.email }}</span>
29 Please follow the relevant email notifications.
30 <br/>
31 If your registration information is approved, the payment link for the relevant fees will be attached to the email body. Please complete the payment and registration through the link.
32 </div>
25 </div> 33 </div>
26 34
27 <div class="text-center mt30 mb20"> 35 <div class="text-center mt30 mb20">
28 <el-button class="primary-kx w200px" round @click="goHome">{{ language == 0 ? '返回首页' : 'Homepage' }}</el-button> 36 <el-button class="primary-kx w200px" round @click="goHome">{{ language == 0 ? '返回首页' : 'Homepage' }}</el-button>
29 <el-button type="primary" class="btn-lineG w200px" round @click="goSign">{{ language == 0 ? '返回赛事报名模块' : 'Sign Up' }}</el-button> 37 <el-button type="primary" class="btn-lineG w200px" round @click="goSign">
38 {{ language == 0 ? '返回赛事报名模块' : 'Return to Event Registration Module' }}</el-button>
30 </div> 39 </div>
31 </el-card> 40 </el-card>
32 </div> 41 </div>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 :close-on-click-modal="false" class="pcloginpop" 4 :close-on-click-modal="false" class="pcloginpop"
5 destroy-on-close 5 destroy-on-close
6 > 6 >
7 <el-form ref="dialogRef" :model="form" :rules="rules" label-width="120px" inline> 7 <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline>
8 <el-row :gutter="30"> 8 <el-row :gutter="30">
9 <el-col :lg="12" class="touxiang"> 9 <el-col :lg="12" class="touxiang">
10 <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" required> 10 <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" required>
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
16 <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required> 16 <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required>
17 <el-input v-model="form.xing"/> 17 <el-input v-model="form.xing"/>
18 </el-form-item> 18 </el-form-item>
19 <el-form-item :label="language==0?'短名':'short name'" prop="shortName" required> 19 <el-form-item :label="language==0?'短名':'nike name'" prop="shortName" required>
20 <el-input v-model="form.shortName" placeholder="赛事用名"/> 20 <el-input v-model="form.shortName" :placeholder="language==0?'赛事用名':''"/>
21 </el-form-item> 21 </el-form-item>
22 <el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required> 22 <el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required>
23 <el-date-picker 23 <el-date-picker
...@@ -88,16 +88,28 @@ ...@@ -88,16 +88,28 @@
88 </template> 88 </template>
89 89
90 <script setup> 90 <script setup>
91 import {reactive, toRefs, watch} from 'vue' 91 import {reactive, ref, toRefs, watch} from 'vue'
92 import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' 92 import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core'
93 import * as match from '@/apiPc/match' 93 import * as match from '@/apiPc/match'
94 import {certificates} from '@/assets/lib/nation'
95 import {ElMessage} from 'element-plus' 94 import {ElMessage} from 'element-plus'
96 import {nationList} from '@/assets/js/data' 95 import {nationList} from '@/assets/js/data'
97 import _ from 'lodash' 96 import _ from 'lodash'
98 import cache from "@/plugins/cache"; 97 import cache from "@/plugins/cache";
99 const language = ref(cache.local.get('language') || 0) 98 const language = ref(cache.local.get('language') || 0)
100 99 const certificates = ref([
100 {
101 value: '0',
102 label: language.value == 0 ? '居民身份证' : 'Resident ID card'
103 },
104 {
105 value: '1',
106 label: language.value == 0 ? '护照' : 'Passport'
107 },
108 {
109 value: '2',
110 label: language.value == 0 ? '其他' : 'Other'
111 }
112 ])
101 const {proxy} = getCurrentInstance() 113 const {proxy} = getCurrentInstance()
102 const emit = defineEmits(['submitForm']) 114 const emit = defineEmits(['submitForm'])
103 const data = reactive({ 115 const data = reactive({
...@@ -120,6 +132,22 @@ const data = reactive({ ...@@ -120,6 +132,22 @@ const data = reactive({
120 sex: [{required: true, message: '必填', trigger: 'change'}], 132 sex: [{required: true, message: '必填', trigger: 'change'}],
121 labelArr: [{required: true, message: '必填', trigger: 'change'}] 133 labelArr: [{required: true, message: '必填', trigger: 'change'}]
122 }, 134 },
135 rules_cn:{
136 xing: [{required: true, message: 'required', trigger: 'blur'}],
137 ming: [{required: true, message: 'required', trigger: 'blur'}],
138 shortName: [{required: true, message: 'required', trigger: 'blur'}],
139 email: [{required: true, message: 'required', trigger: 'blur'}],
140 countryId: [{required: true, message: 'required', trigger: 'change'}],
141 idcType: [{required: true, message: 'required', trigger: 'change'}],
142 idcCode: [{required: true, message: 'required', trigger: 'blur'}],
143 phone: [{required: true, message: 'required', trigger: 'blur'}],
144 // regionId: [{ required: true, message: 'required', trigger: 'change' }],
145 birth: [{required: true, message: 'required', trigger: 'change'}],
146 address: [{ required: true, message: 'required', trigger: 'blur' }],
147 picUrl: [{required: true, message: 'required', trigger: 'blur'}],
148 sex: [{required: true, message: 'required', trigger: 'change'}],
149 labelArr: [{required: true, message: 'required', trigger: 'change'}]
150 },
123 show: false, 151 show: false,
124 countryList: [], 152 countryList: [],
125 regionsList: [], 153 regionsList: [],
...@@ -127,17 +155,17 @@ const data = reactive({ ...@@ -127,17 +155,17 @@ const data = reactive({
127 {value: '0', label: '运动员', enlabel: 'Sportsman'}, 155 {value: '0', label: '运动员', enlabel: 'Sportsman'},
128 {value: '1', label: '教练', enlabel: 'Coach'}, 156 {value: '1', label: '教练', enlabel: 'Coach'},
129 {value: '2', label: '领队', enlabel: 'Leader'}, 157 {value: '2', label: '领队', enlabel: 'Leader'},
130 {value: '3', label: '队医', enlabel: 'Nurse'}, 158 {value: '4', label: '队医', enlabel: 'Nurse'},
131 {value: '4', label: '翻译', enlabel: 'Translator'}, 159 {value: '5', label: '翻译', enlabel: 'Translator'},
132 {value: '5', label: '官员', enlabel: 'Official'}, 160 {value: '6', label: '官员', enlabel: 'Official'},
133 {value: '6', label: '其他', enlabel: 'Other'} 161 {value: '3', label: '其他', enlabel: 'Other'}
134 ], 162 ],
135 title: '添加选手信息', 163 title: '添加选手信息',
136 groupId: '0', 164 groupId: '0',
137 showRequire: false, 165 showRequire: false,
138 uType:'' 166 isMe:false
139 }) 167 })
140 const {showRequire, form, rules, show, countryList, regionsList, title, groupId, labels,uType} = toRefs(data) 168 const {showRequire, form, rules,rules_cn, show, countryList, regionsList, title, groupId, labels,uType,isMe} = toRefs(data)
141 onMounted(() => { 169 onMounted(() => {
142 getCountryList() 170 getCountryList()
143 getRegionsList() 171 getRegionsList()
...@@ -148,8 +176,8 @@ const open = (params) => { ...@@ -148,8 +176,8 @@ const open = (params) => {
148 show.value = true 176 show.value = true
149 title.value = params.title 177 title.value = params.title
150 groupId.value = params.groupId || '0' 178 groupId.value = params.groupId || '0'
151 uType.value = params.uType 179 isMe.value = params.isMe
152 if(uType.value == '1'){ 180 if(isMe.value){
153 //个人 181 //个人
154 match.getMyPersonInfo().then(res => { 182 match.getMyPersonInfo().then(res => {
155 form.value = res.data 183 form.value = res.data
...@@ -295,26 +323,26 @@ function submitForm() { ...@@ -295,26 +323,26 @@ function submitForm() {
295 }) 323 })
296 } else { 324 } else {
297 if (editgay) { 325 if (editgay) {
326 // id不是0
298 match.editPersonInfo(form.value).then(res => { 327 match.editPersonInfo(form.value).then(res => {
299 ElMessage.success('保存成功') 328 ElMessage.success('保存成功')
300 show.value = false 329 show.value = false
301 emit('submitForm') 330 emit('submitForm')
302 }) 331 })
303 } else { 332 } else {
304 // if(uType.value == '1'){ 333 if(isMe.value){
305 // match.saveMyBaseInfo(form.value).then(res => { 334 match.saveMyBaseInfo(form.value).then(res => {
306 // ElMessage.success('保存成功') 335 ElMessage.success('保存成功')
307 // show.value = false 336 show.value = false
308 // emit('submitForm') 337 emit('submitForm')
309 // }) 338 })
310 // } else { 339 } else {
311 match.savePersonForMyPerson(form.value).then(res => { 340 match.savePersonForMyPerson(form.value).then(res => {
312 ElMessage.success('保存成功') 341 ElMessage.success('保存成功')
313 show.value = false 342 show.value = false
314 emit('submitForm') 343 emit('submitForm')
315 }) 344 })
316 // } 345 }
317
318 } 346 }
319 } 347 }
320 } 348 }
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 <el-form-item :label="language==0?'姓名':'Name'"> 13 <el-form-item :label="language==0?'姓名':'Name'">
14 <el-input v-model="query.realName" style="width: 120px;" clearable/> 14 <el-input v-model="query.realName" style="width: 120px;" clearable/>
15 </el-form-item> 15 </el-form-item>
16 <el-form-item :label="language==0?'短名':'Short Name'"> 16 <el-form-item :label="language==0?'短名':'Nick Name'">
17 <el-input v-model="query.shortName" style="width: 120px;" clearable/> 17 <el-input v-model="query.shortName" style="width: 120px;" clearable/>
18 </el-form-item> 18 </el-form-item>
19 <el-form-item :label="language==0?'手机号码':'Phone Number'"> 19 <el-form-item :label="language==0?'手机号码':'Phone Number'">
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
43 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> 43 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
44 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> 44 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
45 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> 45 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
46 <el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/> 46 <el-table-column :label="language==0?'短名':'Nick Name'" prop="shortName" min-width="110"/>
47 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> 47 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
48 <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> 48 <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>
49 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> 49 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/>
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
86 </el-dialog> 86 </el-dialog>
87 87
88 <addCoach ref="dialogAddCoach" @submitForm="getList"/> 88 <addCoach ref="dialogAddCoach" @submitForm="getList"/>
89 <Import ref="dialogImportProps"/> 89 <Import ref="dialogImportProps" @uploadSuccess='getList'/>
90 </template> 90 </template>
91 91
92 <script setup> 92 <script setup>
......
...@@ -41,11 +41,29 @@ function uploadSuccess(res) { ...@@ -41,11 +41,29 @@ function uploadSuccess(res) {
41 console.log(res) 41 console.log(res)
42 cancel() 42 cancel()
43 if (res.code == 500) { 43 if (res.code == 500) {
44 ElMessageBox.alert(res.data, '提示', { 44 ElMessageBox.alert(res.msg, '提示', {
45 confirmButtonText: '好的' 45 confirmButtonText: '好的'
46 }) 46 })
47 } else { 47 } else {
48 proxy.$modal.msgSuccess(`${res.msg}`) 48 if(res.data.repeatInSystemColumn){
49 proxy.$modal.msgError(`${res.data.repeatInSystemColumn}系统中已存在`)
50 }
51 if(res.data.errCountryColumn){
52 proxy.$modal.msgError(`${res.data.errCountryColumn}所属国家有误`)
53 }
54 if(res.data.errIdcTypeColumn){
55 proxy.$modal.msgError(`${res.data.errIdcTypeColumn}证件号错误`)
56 }
57 if(res.data.errSexColumn){
58 proxy.$modal.msgError(`${res.data.errSexColumn}性别错误`)
59 }
60 if(res.data.incompleteColumn){
61 proxy.$modal.msgError(`${res.data.incompleteColumn}必填项未完成`)
62 }
63 if(res.data.repeatInFileColumn){
64 proxy.$modal.msgError(`${res.data.repeatInFileColumn}文件内重复`)
65 }
66
49 } 67 }
50 68
51 emit('uploadSuccess') 69 emit('uploadSuccess')
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
2 <div class="border-info" style="margin: 20px" v-loading="loading"> 2 <div class="border-info" style="margin: 20px" v-loading="loading">
3 <el-row v-if="language==0"> 3 <el-row v-if="language==0">
4 <el-col :lg="8"><div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col> 4 <el-col :lg="8"><div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col>
5 <el-col :lg="8"><div class="item"><label>赛事类型</label>{{matchInfo.name}}</div></el-col> 5 <el-col :lg="8"><div class="item"><label>赛事类型</label>{{matchInfo.level}}</div></el-col>
6 <el-col :lg="8"><div class="item"><label>赛事时间</label>{{matchInfo.beginTime?.slice(0,10)}}{{ matchInfo.endTime?.slice(0,10) }}</div></el-col> 6 <el-col :lg="8"><div class="item"><label>赛事时间</label>{{matchInfo.beginTime?.slice(0,10)}}{{ matchInfo.endTime?.slice(0,10) }}</div></el-col>
7 <el-col :lg="8"><div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0,10) }}{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col> 7 <el-col :lg="8"><div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0,10) }}{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col>
8 <el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col> 8 <el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col>
9 </el-row> 9 </el-row>
10 <el-row v-else> 10 <el-row v-else>
11 <el-col :lg="8"><div class="item"><label>Event Name</label>{{matchInfo.name}}</div></el-col> 11 <el-col :lg="8"><div class="item"><label>Event Name</label>{{matchInfo.name}}</div></el-col>
12 <el-col :lg="8"><div class="item"><label>Event Type</label>{{matchInfo.name}}</div></el-col> 12 <el-col :lg="8"><div class="item"><label>Event Type</label>{{matchInfo.level}}</div></el-col>
13 <el-col :lg="8"><div class="item"><label>Event Date</label>{{matchInfo.beginTime?.slice(0,10)}} ~ {{ matchInfo.endTime?.slice(0,10) }}</div></el-col> 13 <el-col :lg="8"><div class="item"><label>Event Date</label>{{matchInfo.beginTime?.slice(0,10)}} ~ {{ matchInfo.endTime?.slice(0,10) }}</div></el-col>
14 <el-col :lg="8"><div class="item"><label>Registration Period</label>{{ matchInfo.signBeginTime?.slice(0,10) }} ~{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col> 14 <el-col :lg="8"><div class="item"><label>Registration Period</label>{{ matchInfo.signBeginTime?.slice(0,10) }} ~{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col>
15 <el-col :lg="16"><div class="item"><label>Event Address</label>{{matchInfo.address}}</div></el-col> 15 <el-col :lg="16"><div class="item"><label>Event Address</label>{{matchInfo.address}}</div></el-col>
......
...@@ -11,94 +11,40 @@ ...@@ -11,94 +11,40 @@
11 11
12 </div> 12 </div>
13 <div class="indexTitle" v-if="form.type==0"><h3 class="leftboderTT">赛事规程</h3></div> 13 <div class="indexTitle" v-if="form.type==0"><h3 class="leftboderTT">赛事规程</h3></div>
14 <div class="xzbox" v-if="form.type==0" v-html="form.ruleUrl"></div> 14 <div class="xzbox" v-if="form.type==0">
15
16 <el-link v-if="form.ruleUrl" type="primary" :href="fillImgUrl(JSON.parse(form.ruleUrl)[0]?.url)" target="_blank">
17 <el-icon :size="20">
18 <Download />
19 </el-icon>
20 {{ JSON.parse(form.ruleUrl)[0]?.name }}
21 </el-link>
22 </div>
15 <div class="indexTitle" v-if="form.type==1"><h3 class="leftboderTT">竞赛项目</h3></div> 23 <div class="indexTitle" v-if="form.type==1"><h3 class="leftboderTT">竞赛项目</h3></div>
16 <div class="collapsebox" v-if="form.type==1"> 24 <div class="collapsebox" v-if="form.type==1">
17 <el-collapse v-if="form.cptProjectList?.length > 0"> 25 <div class="pd20">
18 <el-collapse-item :title="p.name" :name="index" :key="index" v-for="(p,index) in form.cptProjectList"> 26 <table class="table" cellspacing="0" cellpadding="0" v-if="form.cptProjectList?.length > 0">
19 <div class="pd20"> 27 <tr>
20 <table class="table"> 28 <th>组别编号</th>
21 <tr> 29 <th>组别名称</th>
22 <td>日期</td> 30 <th>舞种</th>
23 <td>单元</td> 31 <th>舞种明细</th>
24 <td>组别</td> 32 <th>参赛性别</th>
25 <td>时间</td> 33 <th>参赛年龄</th>
26 <td>阶段</td> 34 <th>服务费(元)</th>
27 </tr> 35 </tr>
28 <tr> 36 <tr v-for="(p,index) in matchData.cptProjectList" :key="index">
29 <td rowspan="4">2023/10/6(星期五)</td> 37 <td>{{ p.code }}</td>
30 <td rowspan="4">BRK01</td> 38 <td>{{ p.name }}</td>
31 <td>男子</td> 39 <td>{{ p.danceType }}</td>
32 <td>14:30 - 15:30</td> 40 <td>{{ p.danceTypeDetailStr }}</td>
33 <td>资格赛</td> 41 <td>{{ p.playTypeStr }}</td>
34 </tr> 42 <td>{{ p.birthPeriod }}</td>
35 <tr> 43 <td>¥{{ p.serviceFee }}</td>
36 <td>女子</td> 44 </tr>
37 <td>14:30 - 15:30</td> 45 </table>
38 <td>资格赛</td> 46 </div>
39 </tr> 47 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="form.cptProjectList?.length == 0" description=""/>
40 <tr>
41 <td>男子</td>
42 <td>14:30 - 15:30</td>
43 <td>循环赛</td>
44 </tr>
45 <tr>
46 <td>女子</td>
47 <td>14:30 - 15:30</td>
48 <td>循环赛</td>
49 </tr>
50 <tr>
51 <td rowspan="8">2023/10/7(星期六)</td>
52 <td rowspan="8">BRK02</td>
53 <td>男子</td>
54 <td>14:30 - 15:30</td>
55 <td>四分之一决赛</td>
56 </tr>
57 <tr>
58 <td>男子</td>
59 <td>14:30 - 15:30</td>
60 <td>四分之一决赛</td>
61 </tr>
62 <tr>
63 <td>女子</td>
64 <td>14:30 - 15:30</td>
65 <td>半决赛</td>
66 </tr>
67 <tr>
68 <td>女子</td>
69 <td>14:30 - 15:30</td>
70 <td>半决赛</td>
71 </tr>
72 <tr>
73 <td>男子</td>
74 <td>14:30 - 15:30</td>
75 <td>季军赛</td>
76 </tr>
77 <tr>
78 <td>女子</td>
79 <td>14:30 - 15:30</td>
80 <td>季军赛</td>
81 </tr>
82 <tr>
83 <td>男子</td>
84 <td>14:30 - 15:30</td>
85 <td>决赛</td>
86 </tr>
87 <tr>
88 <td>女子</td>
89 <td>14:30 - 15:30</td>
90 <td>决赛</td>
91 </tr>
92 <tr>
93 <td colspan="5" style="text-align: left">
94 注:竞赛日程将根据最终参赛人数和电视转播的要求进行调整
95 </td>
96 </tr>
97 </table>
98 </div>
99 </el-collapse-item>
100 </el-collapse>
101 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/>
102 </div> 48 </div>
103 </div> 49 </div>
104 <div style="padding: 0 20px 20px" v-else> 50 <div style="padding: 0 20px 20px" v-else>
...@@ -113,94 +59,43 @@ ...@@ -113,94 +59,43 @@
113 59
114 </div> 60 </div>
115 <div class="indexTitle" v-if="form.type==0"><h3 class="leftboderTT">Competition Regulations</h3></div> 61 <div class="indexTitle" v-if="form.type==0"><h3 class="leftboderTT">Competition Regulations</h3></div>
116 <div class="xzbox" v-if="form.type==0" v-html="form.ruleUrl"></div> 62 <div class="xzbox" v-if="form.type==0">
63 <div v-html="form.ruleContent">
64
65 </div>
66 <el-link v-if="form.ruleUrl" type="primary" :href="fillImgUrl(JSON.parse(form.ruleUrl)[0]?.url)" target="_blank">
67 <el-icon :size="20">
68 <Download />
69 </el-icon>
70 {{ JSON.parse(form.ruleUrl)[0]?.name }}
71 </el-link>
72 </div>
117 <div class="indexTitle" v-if="form.type==1"><h3 class="leftboderTT">Event settings</h3></div> 73 <div class="indexTitle" v-if="form.type==1"><h3 class="leftboderTT">Event settings</h3></div>
118 <div class="collapsebox" v-if="form.type==1"> 74 <div class="collapsebox" v-if="form.type==1">
119 <el-collapse v-if="form.cptProjectList?.length > 0"> 75
120 <el-collapse-item :title="p.name" :name="index" :key="index" v-for="(p,index) in form.cptProjectList"> 76 <div class="pd20">
121 <div class="pd20"> 77 <table class="table" cellspacing="0" cellpadding="0" v-if="form.cptProjectList?.length > 0">
122 <table class="table"> 78 <tr>
123 <tr> 79 <th>Group code</th>
124 <td>日期</td> 80 <th>Group</th>
125 <td>单元</td> 81 <th>Dance Style</th>
126 <td>组别</td> 82 <th>Dance Detail</th>
127 <td>时间</td> 83 <th>Sex</th>
128 <td>阶段</td> 84 <th>Age</th>
129 </tr> 85 <th>Registration Fee</th>
130 <tr> 86 </tr>
131 <td rowspan="4">2023/10/6(星期五)</td> 87 <tr v-for="(p,index) in matchData.cptProjectList" :key="index">
132 <td rowspan="4">BRK01</td> 88 <td>{{ p.code }}</td>
133 <td>男子</td> 89 <td>{{ p.name }}</td>
134 <td>14:30 - 15:30</td> 90 <td>{{ p.danceType }}</td>
135 <td>资格赛</td> 91 <td>{{ p.danceTypeDetailStr }}</td>
136 </tr> 92 <td>{{ p.playTypeStr }}</td>
137 <tr> 93 <td>{{ p.birthPeriod }}</td>
138 <td>女子</td> 94 <td>¥{{ p.serviceFee }}</td>
139 <td>14:30 - 15:30</td> 95 </tr>
140 <td>资格赛</td> 96 </table>
141 </tr> 97 </div>
142 <tr> 98 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/>
143 <td>男子</td>
144 <td>14:30 - 15:30</td>
145 <td>循环赛</td>
146 </tr>
147 <tr>
148 <td>女子</td>
149 <td>14:30 - 15:30</td>
150 <td>循环赛</td>
151 </tr>
152 <tr>
153 <td rowspan="8">2023/10/7(星期六)</td>
154 <td rowspan="8">BRK02</td>
155 <td>男子</td>
156 <td>14:30 - 15:30</td>
157 <td>四分之一决赛</td>
158 </tr>
159 <tr>
160 <td>男子</td>
161 <td>14:30 - 15:30</td>
162 <td>四分之一决赛</td>
163 </tr>
164 <tr>
165 <td>女子</td>
166 <td>14:30 - 15:30</td>
167 <td>半决赛</td>
168 </tr>
169 <tr>
170 <td>女子</td>
171 <td>14:30 - 15:30</td>
172 <td>半决赛</td>
173 </tr>
174 <tr>
175 <td>男子</td>
176 <td>14:30 - 15:30</td>
177 <td>季军赛</td>
178 </tr>
179 <tr>
180 <td>女子</td>
181 <td>14:30 - 15:30</td>
182 <td>季军赛</td>
183 </tr>
184 <tr>
185 <td>男子</td>
186 <td>14:30 - 15:30</td>
187 <td>决赛</td>
188 </tr>
189 <tr>
190 <td>女子</td>
191 <td>14:30 - 15:30</td>
192 <td>决赛</td>
193 </tr>
194 <tr>
195 <td colspan="5" style="text-align: left">
196 注:竞赛日程将根据最终参赛人数和电视转播的要求进行调整
197 </td>
198 </tr>
199 </table>
200 </div>
201 </el-collapse-item>
202 </el-collapse>
203 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/>
204 </div> 99 </div>
205 </div> 100 </div>
206 </template> 101 </template>
......
1 <template> 1 <template>
2 <el-card :body-style="{padding: '10px'}" class="mb20"> 2 <el-card :body-style="{padding: '10px'}" class="mb20">
3 <div> 3 <!-- <div>-->
4 <div class="liveImgbox" @click="goDetail(newsList[0])"> 4 <!-- <div class="liveImgbox" @click="goDetail(newsList[0])">-->
5 <i class="ii">{{ language==0?'直播中':'Live' }}</i> 5 <!-- <i class="ii">{{ language==0?'直播中':'Live' }}</i>-->
6 <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)"> 6 <!-- <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">-->
7 </div> 7 <!-- </div>-->
8 </div> 8 <!-- </div>-->
9 9
10 <div class="indexTitle"> 10 <div class="indexTitle">
11 <h3 class="leftboderTT">{{ language==0?'赛事报道':'Special reports' }}</h3> 11 <h3 class="leftboderTT">{{ language==0?'赛事报道':'Special reports' }}</h3>
12 <a class="more" @click="goList(query2.sortId,'专题报道')">MORE</a> 12 <!-- <a class="more" @click="goList(query2.sortId,'专题报道')">MORE</a>-->
13 </div> 13 </div>
14 <div> 14 <div>
15 <div class="item" v-for="n in newsList2" :key="n.id"> 15 <div class="item" v-for="n in newsList" :key="n.id">
16 <p class="esp">{{ n.name }}</p> 16 <p class="esp">{{ n.name }}</p>
17 </div> 17 </div>
18 </div> 18 </div>
19 19
20 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事视频':'Event Videos' }}</h3> 20 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事视频':'Event Videos' }}</h3>
21 <a class="more" @click="goList(10000006,'赛事视频')">MORE</a> 21 <!-- <a class="more" @click="goList(10000006,'赛事视频')">MORE</a>-->
22 </div> 22 </div>
23 <div> 23 <div class="item" v-for="n in newsList2" :key="n.id">
24 <div class="videoImgbox" @click="goDetail(newsList[1])"> 24 <div class="videoImgbox" @click="goDetail(n)">
25 <img :src="fillImgUrl_webSite(newsList[1]?.picUrl)"> 25 <img :src="fillImgUrl_webSite(n.picUrl)">
26 </div> 26 </div>
27 </div> 27 </div>
28 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事图片':'Event Photos' }}</h3> 28 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事图片':'Event Photos' }}</h3>
29 <a class="more" @click="goList(10000007,'赛事图片')">MORE</a> 29 <!-- <a class="more" @click="goList(10000007,'赛事图片')">MORE</a>-->
30 </div> 30 </div>
31 <div> 31 <div v-for="n in newsList3" :key="n.id">
32 <div class="picbox" @click="goDetail(newsList[0])"><img :src="fillImgUrl_webSite(newsList[0]?.picUrl)"/></div> 32 <div class="picbox" @click="goDetail(n)"><img :src="fillImgUrl_webSite(n.picUrl)"/></div>
33 </div> 33 </div>
34 </el-card> 34 </el-card>
35 </template> 35 </template>
...@@ -39,22 +39,34 @@ import {getNewsListById} from "@/apiPc/webSite"; ...@@ -39,22 +39,34 @@ import {getNewsListById} from "@/apiPc/webSite";
39 import {onMounted, ref} from "vue"; 39 import {onMounted, ref} from "vue";
40 import cache from '@/plugins/cache' 40 import cache from '@/plugins/cache'
41 const language = ref(cache.local.get('language') || 0) 41 const language = ref(cache.local.get('language') || 0)
42 42 const props = defineProps({
43 matchId: {
44 type: String,
45 required: true
46 }
47 })
43 const newsList = ref([]) 48 const newsList = ref([])
44 const newsList2 = ref([]) 49 const newsList2 = ref([])
50 const newsList3 = ref([])
45 const query1 = ref({ 51 const query1 = ref({
46 pageSize: 5, 52 pageSize: 1,
47 pageNum: 1, 53 pageNum: 1,
48 sortId: '10000006' 54 code: `${props.matchId}${language.value == 0 ?'100':'101'}2`
49 }) 55 })
50 const query2 = ref({ 56 const query2 = ref({
51 pageSize: 3, 57 pageSize: 3,
52 pageNum: 1, 58 pageNum: 1,
53 sortId: '10000003' 59 code: `${props.matchId}${language.value == 0 ?'100':'101'}1`
60 })
61 const query3 = ref({
62 pageSize: 1,
63 pageNum: 1,
64 code: `${props.matchId}${language.value == 0 ?'100':'101'}3`
54 }) 65 })
55 onMounted(() => { 66 onMounted(() => {
56 getList(query1.value) 67 getList(query1.value)
57 getList2(query2.value) 68 getList2(query2.value)
69 getList3(query3.value)
58 }) 70 })
59 const getList = (obj) => { 71 const getList = (obj) => {
60 getNewsListById(obj).then(res => { 72 getNewsListById(obj).then(res => {
...@@ -66,6 +78,11 @@ const getList2 = (obj) => { ...@@ -66,6 +78,11 @@ const getList2 = (obj) => {
66 newsList2.value = res.rows 78 newsList2.value = res.rows
67 }) 79 })
68 } 80 }
81 const getList3 = (obj) => {
82 getNewsListById(obj).then(res => {
83 newsList3.value = res.rows
84 })
85 }
69 const goList = (sortId,name) => { 86 const goList = (sortId,name) => {
70 router.push({ 87 router.push({
71 path: `/news/list/${sortId}`, 88 path: `/news/list/${sortId}`,
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
24 </el-timeline-item> 24 </el-timeline-item>
25 </el-timeline> 25 </el-timeline>
26 26
27 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="matchData.cptScheduleList?.length==0" description="" /> 27 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptScheduleList?.length==0" description="" />
28 28
29 </div> 29 </div>
30 </template> 30 </template>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
5 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/> 5 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
6 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> 6 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
7 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> 7 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
8 <el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/> 8 <el-table-column :label="language==0?'短名':'Nick Name'" prop="shortName" min-width="110"/>
9 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> 9 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
10 <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> 10 <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>
11 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> 11 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/>
......
...@@ -16,8 +16,7 @@ ...@@ -16,8 +16,7 @@
16 </el-radio> 16 </el-radio>
17 </div> 17 </div>
18 </el-radio-group> 18 </el-radio-group>
19 <el-empty v-if="projectList.length==0" image="@/assets/img/order_no.png" :image-size="228" description="无可选项目" /> 19 <el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228" description="无可选项目" />
20
21 </el-form-item> 20 </el-form-item>
22 </el-col> 21 </el-col>
23 <el-col :span="8"> 22 <el-col :span="8">
......
...@@ -3,11 +3,11 @@ ...@@ -3,11 +3,11 @@
3 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" min-width="100"/> 3 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" min-width="100"/>
4 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="personInfo.xing" min-width="100"/> 4 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="personInfo.xing" min-width="100"/>
5 <el-table-column :label="language==0?'名':'First Name'" prop="personInfo.ming" min-width="100"/> 5 <el-table-column :label="language==0?'名':'First Name'" prop="personInfo.ming" min-width="100"/>
6 <el-table-column :label="language==0?'短名':'Short Name'" prop="personInfo.shortName" min-width="110"/> 6 <el-table-column :label="language==0?'短名':'Nick Name'" prop="personInfo.shortName" min-width="110"/>
7 <el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/> 7 <el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/>
8 <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/> 8 <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/>
9 <el-table-column :label="language==0?'出生日期':'Birth'" prop="personInfo.birth" width="110"/> 9 <el-table-column :label="language==0?'出生日期':'Birth'" prop="personInfo.birth" width="110"/>
10 <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="personInfo.phone" width="120"/> 10 <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="personInfo.phone" min-width="130"/>
11 <el-table-column :label="language==0?'邮箱':'E-mail'" prop="personInfo.email" width="150"/> 11 <el-table-column :label="language==0?'邮箱':'E-mail'" prop="personInfo.email" width="150"/>
12 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="personInfo.idcTypeStr"/> 12 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="personInfo.idcTypeStr"/>
13 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="personInfo.idcCode" width="200"/> 13 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="personInfo.idcCode" width="200"/>
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
43 </ol> 43 </ol>
44 </template> 44 </template>
45 </el-table-column> 45 </el-table-column>
46 <el-table-column :fixed="hasAction?false:'right'" :label="language==0?'保险费':'Premium'" prop="insuranceFee"> 46 <el-table-column :fixed="hasAction?false:'right'" min-width="100" :label="language==0?'保险费':'Premium'" prop="insuranceFee">
47 <template #default="scope"> 47 <template #default="scope">
48 <span class="text-primary">¥{{ scope.row.insuranceFee }}</span> 48 <span class="text-primary">¥{{ scope.row.insuranceFee }}</span>
49 </template> 49 </template>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
8 <el-col :lg="10" :md="12" :xl="12"> 8 <el-col :lg="10" :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>
12 <p class="ppl"><label>{{ language==0?'地&ensp;&ensp;&ensp;&ensp;点':'Location' }}</label>{{ n.address }}</p> 12 <p class="ppl"><label>{{ language==0?'地&ensp;&ensp;&ensp;&ensp;点':'Location' }}</label>{{ n.address }}</p>
13 <p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}</label>{{ n.signEndTime?.slice(0,10) }}</p> 13 <p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}</label>{{ n.signEndTime?.slice(0,10) }}</p>
14 14
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
45 </div> 45 </div>
46 </div> 46 </div>
47 47
48 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="list?.length == 0" description=" "/> 48 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0" description=" "/>
49 </template> 49 </template>
50 50
51 <script setup> 51 <script setup>
......
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
111 </table> 111 </table>
112 </div> 112 </div>
113 113
114 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/> 114 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/>
115 </div> 115 </div>
116 </div> 116 </div>
117 <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> 117 <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/>
...@@ -141,15 +141,21 @@ ...@@ -141,15 +141,21 @@
141 </div> 141 </div>
142 </el-col> 142 </el-col>
143 </el-row> 143 </el-row>
144 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" /> 144 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" />
145 </div> 145 </div>
146 <div v-if="menu[4].active==1"> 146 <div v-if="menu[4].active==1">
147 <!-- 成绩--> 147 <!-- 成绩-->
148 <el-empty image="@/assets/img/order_no.png" :image-size="228" description="暂无成绩" /> 148 <el-empty :image="`/img/order_no.png`" :image-size="228"/>
149 </div> 149 </div>
150 <div v-if="menu[5].active==1" class="pd20"> 150 <div v-if="menu[5].active==1" class="pd20">
151 <div class="xzbox" v-html="matchData.signKnow"> 151 <div class="xzbox">
152 152 <div v-html="matchData.signKnow"></div>
153 <el-link v-if="matchData.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank">
154 <el-icon :size="20">
155 <Download />
156 </el-icon>
157 {{ JSON.parse(matchData.signKnowUrl)[0]?.name }}
158 </el-link>
153 </div> 159 </div>
154 </div> 160 </div>
155 </el-card> 161 </el-card>
...@@ -157,7 +163,7 @@ ...@@ -157,7 +163,7 @@
157 163
158 </el-col> 164 </el-col>
159 <el-col :lg="6"> 165 <el-col :lg="6">
160 <match-news/> 166 <match-news :match-id="matchId"/>
161 </el-col> 167 </el-col>
162 </el-row> 168 </el-row>
163 169
...@@ -259,22 +265,24 @@ function choseSignType() { ...@@ -259,22 +265,24 @@ function choseSignType() {
259 return 265 return
260 } 266 }
261 console.log(matchData.value.signType) 267 console.log(matchData.value.signType)
262 // checkIsSign().then(() => { 268 checkIsSign().then(() => {
263 if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) { 269 if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) {
264 // 个人报名 270 // 个人报名
265 // router.push({ 271 // router.push({
266 // path: `${matchId.value}/singleSign` 272 // path: `${matchId.value}/singleSign`
267 // }) 273 // })
268 router.push({ 274
275 const routeData = router.resolve({
269 name: `chooseCoach`, 276 name: `chooseCoach`,
270 query: { 277 query: {
271 matchId: matchId.value, 278 matchId: matchId.value,
272 signType: matchData.value.signType 279 signType: matchData.value.signType
273 } 280 }
274 }) 281 })
282 window.open(routeData.href, '_blank')
275 } 283 }
276 if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){ 284 if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){
277 router.push({ 285 const routeData = router.resolve({
278 path: `${matchId.value}/teamSign`, 286 path: `${matchId.value}/teamSign`,
279 query: { 287 query: {
280 matchId: matchId.value, 288 matchId: matchId.value,
...@@ -282,15 +290,16 @@ function choseSignType() { ...@@ -282,15 +290,16 @@ function choseSignType() {
282 signType: matchData.value.signType 290 signType: matchData.value.signType
283 } 291 }
284 }) 292 })
293 window.open(routeData.href, '_blank')
285 } 294 }
286 // }) 295 })
287 } 296 }
288 297
289 // 获取已报信息 298 // 获取已报信息
290 function checkIsSign() { 299 function checkIsSign() {
291 var obj = { 300 var obj = {
292 cptId: matchId.value, 301 cptId: matchId.value,
293 groupId: groupId.value 302 groupId: groupId.value || 0
294 } 303 }
295 return match.getMySignInfo(obj).then(res => { 304 return match.getMySignInfo(obj).then(res => {
296 if (res.data.type == '1') { 305 if (res.data.type == '1') {
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
32 </van-count-down> 32 </van-count-down>
33 33
34 <div> 34 <div>
35 <a class="btn-lineG mb20" @click="choseSignType" style="display: block;text-align: center;">Application</a> 35 <a class="btn-lineG mb20" @click="choseSignType" style="display: block;text-align: center;">Register</a>
36 </div> 36 </div>
37 </el-col> 37 </el-col>
38 </el-row> 38 </el-row>
...@@ -42,25 +42,25 @@ ...@@ -42,25 +42,25 @@
42 <el-col :lg="4"> 42 <el-col :lg="4">
43 <div class="funcBtn" @click="building"> 43 <div class="funcBtn" @click="building">
44 <img src="@/assets/dance/btn04.png"/> 44 <img src="@/assets/dance/btn04.png"/>
45 <h4>Booking</h4> 45 <h4>Ticket Booking</h4>
46 </div> 46 </div>
47 </el-col> 47 </el-col>
48 <el-col :lg="4"> 48 <el-col :lg="4">
49 <div class="funcBtn" @click="building"> 49 <div class="funcBtn" @click="building">
50 <img src="@/assets/dance/btn01.png"/> 50 <img src="@/assets/dance/btn01.png"/>
51 <h4>Hotel</h4> 51 <h4>Hotel Reservation</h4>
52 </div> 52 </div>
53 </el-col> 53 </el-col>
54 <el-col :lg="4"> 54 <el-col :lg="4">
55 <div class="funcBtn" @click="building"> 55 <div class="funcBtn" @click="building">
56 <img src="@/assets/dance/btn02.png"/> 56 <img src="@/assets/dance/btn02.png"/>
57 <h4>Taxi</h4> 57 <h4>Vehicle Reservation</h4>
58 </div> 58 </div>
59 </el-col> 59 </el-col>
60 <el-col :lg="4"> 60 <el-col :lg="4">
61 <div class="funcBtn" @click="building"> 61 <div class="funcBtn" @click="building">
62 <img src="@/assets/dance/btn03.png"/> 62 <img src="@/assets/dance/btn03.png"/>
63 <h4>Order food</h4> 63 <h4>Dining Reservation</h4>
64 </div> 64 </div>
65 </el-col> 65 </el-col>
66 <el-col :lg="4"> 66 <el-col :lg="4">
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
72 <el-col :lg="4"> 72 <el-col :lg="4">
73 <div class="funcBtn" @click="building"> 73 <div class="funcBtn" @click="building">
74 <img src="@/assets/dance/btn06.png"/> 74 <img src="@/assets/dance/btn06.png"/>
75 <h4>Photo appointment</h4> 75 <h4>Photography Appointment</h4>
76 </div> 76 </div>
77 </el-col> 77 </el-col>
78 </el-row> 78 </el-row>
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
111 </table> 111 </table>
112 </div> 112 </div>
113 113
114 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/> 114 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/>
115 </div> 115 </div>
116 </div> 116 </div>
117 <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/> 117 <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/>
...@@ -141,15 +141,21 @@ ...@@ -141,15 +141,21 @@
141 </div> 141 </div>
142 </el-col> 142 </el-col>
143 </el-row> 143 </el-row>
144 <el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" /> 144 <el-empty :image="`/img/order_no.png`" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" />
145 </div> 145 </div>
146 <div v-if="menu[4].active==1"> 146 <div v-if="menu[4].active==1">
147 <!-- 成绩--> 147 <!-- 成绩-->
148 <el-empty image="@/assets/img/order_no.png" :image-size="228" description="" /> 148 <el-empty :image="`/img/order_no.png`" :image-size="228" description="" />
149 </div> 149 </div>
150 <div v-if="menu[5].active==1" class="pd20"> 150 <div v-if="menu[5].active==1" class="pd20">
151 <div class="xzbox" v-html="matchData.signKnow"> 151 <div class="xzbox">
152 152 <div v-html="matchData.signKnow"></div>
153 <el-link v-if="matchData.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank">
154 <el-icon :size="20">
155 <Download />
156 </el-icon>
157 {{ JSON.parse(matchData.signKnowUrl)[0]?.name }}
158 </el-link>
153 </div> 159 </div>
154 </div> 160 </div>
155 </el-card> 161 </el-card>
...@@ -157,7 +163,7 @@ ...@@ -157,7 +163,7 @@
157 163
158 </el-col> 164 </el-col>
159 <el-col :lg="6"> 165 <el-col :lg="6">
160 <match-news/> 166 <match-news :match-id="matchId"/>
161 </el-col> 167 </el-col>
162 </el-row> 168 </el-row>
163 169
...@@ -261,7 +267,7 @@ function choseSignType() { ...@@ -261,7 +267,7 @@ function choseSignType() {
261 return 267 return
262 } 268 }
263 //判断signType,如果是2且utype是2,则跳转到团体报名 269 //判断signType,如果是2且utype是2,则跳转到团体报名
264 // checkIsSign().then(() => { 270 checkIsSign().then(() => {
265 if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) { 271 if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) {
266 // 个人报名 272 // 个人报名
267 router.push({ 273 router.push({
...@@ -282,17 +288,17 @@ function choseSignType() { ...@@ -282,17 +288,17 @@ function choseSignType() {
282 } 288 }
283 }) 289 })
284 } 290 }
285 // }) 291 })
286 } 292 }
287 // 获取已报信息 293 // 获取已报信息
288 function checkIsSign() { 294 function checkIsSign() {
289 var obj = { 295 var obj = {
290 cptId: matchId.value, 296 cptId: matchId.value,
291 groupId: groupId.value 297 groupId: groupId.value || 0
292 } 298 }
293 return match.getMySignInfo(obj).then(res => { 299 return match.getMySignInfo(obj).then(res => {
294 if (res.data.type == '1') { 300 if (res.data.type == '1') {
295 ElMessage.error('已报名,不能重复报名') 301 ElMessage.error('Registered, cannot be duplicated')
296 return Promise.reject('rejected message') 302 return Promise.reject('rejected message')
297 } 303 }
298 }) 304 })
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
21 </div> 21 </div>
22 <div v-else class="pd20 skeletonBox"> 22 <div v-else class="pd20 skeletonBox">
23 <el-skeleton :rows="8"/> 23 <el-skeleton :rows="8"/>
24 <el-button type="primary" class="w200px btn-lineG" round>登录后查看详细报项信息</el-button> 24 <el-button type="primary" class="w200px btn-lineG" round @click="showLogin">登录后查看详细报项信息</el-button>
25 </div> 25 </div>
26 </el-card> 26 </el-card>
27 27
...@@ -30,26 +30,27 @@ ...@@ -30,26 +30,27 @@
30 <el-col :lg="12"> 30 <el-col :lg="12">
31 <div class="text-warning flex" v-if="form.auditStatus=='1'"> 31 <div class="text-warning flex" v-if="form.auditStatus=='1'">
32 <img src="@/assets/img/ing.png"> 32 <img src="@/assets/img/ing.png">
33 报名信息审核中 33 {{ language==0?'报名信息审核中':'Registration Information under review' }}
34 </div> 34 </div>
35 <div class="text-success flex" v-if="form.auditStatus=='2'"> 35 <div class="text-success flex" v-if="form.auditStatus=='2'">
36 <img src="@/assets/img/r.png"> 36 <img src="@/assets/img/r.png">
37 报名信息审核通过 37 {{ language==0?'报名信息审核通过':'Registration Information Approved' }}
38 </div> 38 </div>
39 <div class="text-danger flex" v-if="form.auditStatus=='3'"> 39 <div class="text-danger flex" v-if="form.auditStatus=='3'">
40 <img src="@/assets/img/w.png">报名信息审核拒绝 40 <img src="@/assets/img/w.png">
41 {{ language==0?'报名信息审核拒绝':'Registration Information rejected' }}
41 </div> 42 </div>
42 </el-col> 43 </el-col>
43 <el-col :lg="12"> 44 <el-col :lg="12">
44 <div class="priceb" v-if="form.payStatus=='0'">待支付金额<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div> 45 <div class="priceb" v-if="form.payStatus=='0'">{{ language==0?'待支付金额':'Amount Due' }}<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div>
45 <div class="priceb" v-if="form.payStatus=='1'">已支付金额<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div> 46 <div class="priceb" v-if="form.payStatus=='1'">{{ language==0?'已支付金额':'Amount Due' }}<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div>
46 </el-col> 47 </el-col>
47 </el-row> 48 </el-row>
48 </el-card> 49 </el-card>
49 <el-card class="mb60" v-if="form.auditStatus=='2'&&form.payStatus=='0'"> 50 <el-card class="mb60" v-if="form.auditStatus=='2'&&form.payStatus=='0'">
50 <div class="leftboderTT">{{ language==0?'选择支付方式':'Choose payment method' }}</div> 51 <div class="leftboderTT">{{ language==0?'选择支付方式':'Choose payment method' }}</div>
51 <div class="mt20"> 52 <div class="mt20">
52 <el-radio-group v-model="payType"> 53 <el-radio-group v-model="payType" @change="changePaytype">
53 <!-- <el-radio label="1" border>--> 54 <!-- <el-radio label="1" border>-->
54 <!-- <svg t="1709003181386" class="icon" viewBox="0 0 3283 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31015" width="100" height="40"><path d="M1163.122759 94.631724H593.92A133.826207 133.826207 0 0 0 459.034483 228.457931v567.084138a133.473103 133.473103 0 0 0 133.826207 133.826207h570.262069a133.826207 133.826207 0 0 0 134.17931-133.826207v-5.296552s-217.864828-90.394483-328.033103-143.36c-73.445517 90.747586-168.783448 145.478621-267.652414 145.478621-167.017931 0-223.514483-145.831724-144.419311-241.875862a169.136552 169.136552 0 0 1 92.16-51.906207c70.62069-17.302069 184.32 10.946207 290.604138 45.903448A587.211034 587.211034 0 0 0 988.689655 429.373793h-328.73931v-32.838621h168.783448V337.213793h-204.446896v-33.191724h204.446896V219.630345a14.124138 14.124138 0 0 1 14.477241-14.477242h82.273104v98.868966h202.328276v33.191724h-202.328276v59.321379h165.252414a677.605517 677.605517 0 0 1-70.62069 176.551725c50.14069 18.008276 94.984828 35.310345 128.529655 46.256551a930.427586 930.427586 0 0 0 147.950345 42.725518V228.457931a133.826207 133.826207 0 0 0-133.473103-133.826207z" fill="#089fe8" p-id="31016"></path><path d="M663.481379 548.016552a162.78069 162.78069 0 0 0-81.566896 30.366896c-64.617931 55.790345-26.129655 158.190345 104.165517 158.190345 75.917241 0 151.481379-48.375172 211.862069-125.704827-85.804138-40.96-156.424828-70.267586-234.46069-62.852414zM2488.673103 225.28h239.757242v47.668966h85.804138V216.805517a22.951724 22.951724 0 0 0-21.892414-23.304827h-139.122759V149.009655h-89.335172v44.137931h-160.662069v79.80138h85.451034zM1882.394483 360.518621h67.442758v247.172413h73.798621V280.011034h-26.835862l55.437241-126.764137H1970.317241l-87.922758 207.271724zM2824.827586 596.391724l-26.835862-90.747586a13.771034 13.771034 0 0 0-13.064827-10.24h-70.62069l20.48 70.62069H2648.275862v-135.944828h164.546207v-32.132414H2648.275862v-63.55862h164.546207v-32.132414h-409.6v32.132414h164.546207v63.55862h-164.546207v32.132414h164.546207V564.965517h-164.546207v32.132414H2824.827586zM2158.521379 323.442759a16.595862 16.595862 0 0 0-15.183448-9.886897h-63.558621l49.434483 156.424828h75.564138z" fill="#089fe8" p-id="31017"></path><path d="M2319.889655 156.777931h-76.623448v80.154483h-188.557241v32.132414h188.557241v287.426206a13.064828 13.064828 0 0 1-12.358621 12.005518h-38.841379v31.77931h99.222069a30.013793 30.013793 0 0 0 28.601379-29.66069V269.064828h31.073104v-32.132414h-31.073104zM1871.448276 577.677241a913.831724 913.831724 0 0 1-168.783448-80.507586 357.34069 357.34069 0 0 0 141.241379-194.56H1694.896552V249.997241h170.195862v-32.83862H1694.896552V150.422069h-75.211035a15.536552 15.536552 0 0 0-15.183448 15.536552v51.2h-169.136552v32.83862h169.136552v52.612414h-141.241379v32.838621h284.248276a278.951724 278.951724 0 0 1-93.572414 127.470345 360.871724 360.871724 0 0 1-93.572414-94.984828H1483.034483a423.724138 423.724138 0 0 0 122.173793 130.295173 662.775172 662.775172 0 0 1-172.667586 77.329655v39.194482A773.296552 773.296552 0 0 0 1653.230345 529.655172 781.771034 781.771034 0 0 0 1871.448276 614.753103zM1553.655172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.188966-79.095172 26.482758 79.095172zM1796.237241 674.78069h-34.251034v190.675862h115.464827v-26.129655h-81.213793v-164.546207zM2003.155862 674.78069h34.251035v190.322758h-34.251035zM2250.328276 674.78069h-74.151724v190.675862h35.310345v-73.445518h39.900689a58.615172 58.615172 0 1 0 0-117.230344z m-2.118621 91.100689H2210.427586v-64.971034h37.782069a31.073103 31.073103 0 0 1 30.366897 32.485517 30.72 30.72 0 0 1-30.366897 32.485517zM2465.015172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.542069-79.095172 27.188966 79.095172zM2716.071724 755.994483l-38.135172-81.213793H2641.213793l57.555862 112.286896v78.388966h33.897931v-78.388966l0.353104-0.353103 57.555862-111.933793h-37.075862l-37.428966 81.213793z" fill="#089fe8" p-id="31018"></path></svg>--> 55 <!-- <svg t="1709003181386" class="icon" viewBox="0 0 3283 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31015" width="100" height="40"><path d="M1163.122759 94.631724H593.92A133.826207 133.826207 0 0 0 459.034483 228.457931v567.084138a133.473103 133.473103 0 0 0 133.826207 133.826207h570.262069a133.826207 133.826207 0 0 0 134.17931-133.826207v-5.296552s-217.864828-90.394483-328.033103-143.36c-73.445517 90.747586-168.783448 145.478621-267.652414 145.478621-167.017931 0-223.514483-145.831724-144.419311-241.875862a169.136552 169.136552 0 0 1 92.16-51.906207c70.62069-17.302069 184.32 10.946207 290.604138 45.903448A587.211034 587.211034 0 0 0 988.689655 429.373793h-328.73931v-32.838621h168.783448V337.213793h-204.446896v-33.191724h204.446896V219.630345a14.124138 14.124138 0 0 1 14.477241-14.477242h82.273104v98.868966h202.328276v33.191724h-202.328276v59.321379h165.252414a677.605517 677.605517 0 0 1-70.62069 176.551725c50.14069 18.008276 94.984828 35.310345 128.529655 46.256551a930.427586 930.427586 0 0 0 147.950345 42.725518V228.457931a133.826207 133.826207 0 0 0-133.473103-133.826207z" fill="#089fe8" p-id="31016"></path><path d="M663.481379 548.016552a162.78069 162.78069 0 0 0-81.566896 30.366896c-64.617931 55.790345-26.129655 158.190345 104.165517 158.190345 75.917241 0 151.481379-48.375172 211.862069-125.704827-85.804138-40.96-156.424828-70.267586-234.46069-62.852414zM2488.673103 225.28h239.757242v47.668966h85.804138V216.805517a22.951724 22.951724 0 0 0-21.892414-23.304827h-139.122759V149.009655h-89.335172v44.137931h-160.662069v79.80138h85.451034zM1882.394483 360.518621h67.442758v247.172413h73.798621V280.011034h-26.835862l55.437241-126.764137H1970.317241l-87.922758 207.271724zM2824.827586 596.391724l-26.835862-90.747586a13.771034 13.771034 0 0 0-13.064827-10.24h-70.62069l20.48 70.62069H2648.275862v-135.944828h164.546207v-32.132414H2648.275862v-63.55862h164.546207v-32.132414h-409.6v32.132414h164.546207v63.55862h-164.546207v32.132414h164.546207V564.965517h-164.546207v32.132414H2824.827586zM2158.521379 323.442759a16.595862 16.595862 0 0 0-15.183448-9.886897h-63.558621l49.434483 156.424828h75.564138z" fill="#089fe8" p-id="31017"></path><path d="M2319.889655 156.777931h-76.623448v80.154483h-188.557241v32.132414h188.557241v287.426206a13.064828 13.064828 0 0 1-12.358621 12.005518h-38.841379v31.77931h99.222069a30.013793 30.013793 0 0 0 28.601379-29.66069V269.064828h31.073104v-32.132414h-31.073104zM1871.448276 577.677241a913.831724 913.831724 0 0 1-168.783448-80.507586 357.34069 357.34069 0 0 0 141.241379-194.56H1694.896552V249.997241h170.195862v-32.83862H1694.896552V150.422069h-75.211035a15.536552 15.536552 0 0 0-15.183448 15.536552v51.2h-169.136552v32.83862h169.136552v52.612414h-141.241379v32.838621h284.248276a278.951724 278.951724 0 0 1-93.572414 127.470345 360.871724 360.871724 0 0 1-93.572414-94.984828H1483.034483a423.724138 423.724138 0 0 0 122.173793 130.295173 662.775172 662.775172 0 0 1-172.667586 77.329655v39.194482A773.296552 773.296552 0 0 0 1653.230345 529.655172 781.771034 781.771034 0 0 0 1871.448276 614.753103zM1553.655172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.188966-79.095172 26.482758 79.095172zM1796.237241 674.78069h-34.251034v190.675862h115.464827v-26.129655h-81.213793v-164.546207zM2003.155862 674.78069h34.251035v190.322758h-34.251035zM2250.328276 674.78069h-74.151724v190.675862h35.310345v-73.445518h39.900689a58.615172 58.615172 0 1 0 0-117.230344z m-2.118621 91.100689H2210.427586v-64.971034h37.782069a31.073103 31.073103 0 0 1 30.366897 32.485517 30.72 30.72 0 0 1-30.366897 32.485517zM2465.015172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.542069-79.095172 27.188966 79.095172zM2716.071724 755.994483l-38.135172-81.213793H2641.213793l57.555862 112.286896v78.388966h33.897931v-78.388966l0.353104-0.353103 57.555862-111.933793h-37.075862l-37.428966 81.213793z" fill="#089fe8" p-id="31018"></path></svg>-->
55 <!-- </el-radio>--> 56 <!-- </el-radio>-->
...@@ -124,6 +125,18 @@ ...@@ -124,6 +125,18 @@
124 </el-radio> 125 </el-radio>
125 </el-radio-group> 126 </el-radio-group>
126 127
128 <div v-if="payType == '2'&&wePayCodeUrl">
129 <div class="payImgbox flexCenter">
130 <div>
131 <img width="260" class="border" :src="wePayCodeUrl"/>
132 <img class="mt20" src="@/assets/img/sm.png"/>
133 </div>
134 <div class="ml20">
135 <img height="360" src="@/assets/img/rr.jpg"/>
136 </div>
137 </div>
138 </div>
139
127 <div v-if="payType == '3'"> 140 <div v-if="payType == '3'">
128 <table class="table-border table" cellpadding="0" cellspacing="0"> 141 <table class="table-border table" cellpadding="0" cellspacing="0">
129 <tr> 142 <tr>
...@@ -190,13 +203,23 @@ ...@@ -190,13 +203,23 @@
190 </div> 203 </div>
191 </div> 204 </div>
192 <div class="text-center mt20" v-else> 205 <div class="text-center mt20" v-else>
193 <el-button type="primary" round class="btn-lineG w200px">确定</el-button> 206 <el-button v-if="!hideconfirmbtn" type="primary" @click="goPay" round class="btn-lineG w200px">
207 {{ language==0?'确定':'Submit' }}</el-button>
194 </div> 208 </div>
209
195 </div> 210 </div>
196 211
197 </el-card> 212 </el-card>
213 <el-card class="mb60" v-if="form.payStatus == '3'">
214 <div class="text-center">
215 <el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon>
216 <p class="text-success">{{ language==0?'支付成功':'successful!' }}</p>
217 <h3 class="wePrice">¥{{form.totalFee}}</h3>
218 </div>
219 </el-card>
198 </div> 220 </div>
199 221
222
200 <div class="box" v-if="errorBox"> 223 <div class="box" v-if="errorBox">
201 <el-result 224 <el-result
202 icon="error" 225 icon="error"
...@@ -238,8 +261,10 @@ const language = ref(cache.local.get('language') || 0) ...@@ -238,8 +261,10 @@ const language = ref(cache.local.get('language') || 0)
238 const signInfoList = ref([]) 261 const signInfoList = ref([])
239 const zuTableList = ref([]) 262 const zuTableList = ref([])
240 const totalFee = ref('') 263 const totalFee = ref('')
264 const wePayCodeUrl = ref('')
241 const form = ref({}) 265 const form = ref({})
242 const errorBox = ref(false) 266 const errorBox = ref(false)
267 const hideconfirmbtn = ref(false)
243 console.log(route.query.orderId) 268 console.log(route.query.orderId)
244 // 1763462073870237698 269 // 1763462073870237698
245 getData() 270 getData()
...@@ -247,7 +272,7 @@ if (useUserStore().user) { ...@@ -247,7 +272,7 @@ if (useUserStore().user) {
247 isLogin.value = true 272 isLogin.value = true
248 } 273 }
249 function getData() { 274 function getData() {
250 match.getMyOrderDetail({orderId:orderId.value}).then(res => { 275 return match.getMyOrderDetail({orderId:orderId.value}).then(res => {
251 totalFee.value = res.data.totalFee 276 totalFee.value = res.data.totalFee
252 form.value = res.data 277 form.value = res.data
253 matchId.value = form.value.cptId 278 matchId.value = form.value.cptId
...@@ -273,13 +298,57 @@ function getSignList() { ...@@ -273,13 +298,57 @@ function getSignList() {
273 function goHome() { 298 function goHome() {
274 router.push('/') 299 router.push('/')
275 } 300 }
301 function changePaytype() {
302 hideconfirmbtn.value = false
303 if(handle) {
304 clearTimeout(handle)
305 handle=null
306 }
307 }
308 function goPay(){
309 if(payType.value=='2'){
310 match.createWePay({orderId:orderId.value}).then(res=>{
311 wePayCodeUrl.value = res.data
312 hideconfirmbtn.value = true
313 startforGetData()
314 })
315 }
316 if(payType.value=='4'){
317 match.createPalPay({orderId:orderId.value}).then(res=>{
318 if(res.data){
319 location.href=res.data
320 }
321 })
322 }
323 }
324 let handle;
325 function startforGetData() {
326 handle= setTimeout(()=>{
327 getData().then(()=>{
328 if( form.value.payTime){
329 if(handle) {
330 clearTimeout(handle)
331 handle=null
332 }
333 }else{
334 startforGetData()
335 }
336 })
337 },2000)
338 }
339
340 function showLogin(){
341 useUserStore().setReLogin()
342 }
343
276 </script> 344 </script>
277 345
278 <style scoped lang="scss"> 346 <style scoped lang="scss">
347 .wePrice{font-size: 24px;font-weight: 400;}
279 .el-radio.is-bordered { 348 .el-radio.is-bordered {
280 height: 40px; 349 height: 40px;
281 } 350 }
282 351 .border{border: 1px solid #e1e1e1;}
283 .leftboderTT { 352 .leftboderTT {
284 font-weight: 600; 353 font-weight: 600;
285 font-size: 16px; 354 font-size: 16px;
...@@ -366,4 +435,5 @@ function goHome() { ...@@ -366,4 +435,5 @@ function goHome() {
366 width: 200px;box-shadow: 0 0 1000px 500px rgba(255,255,255,0.5); 435 width: 200px;box-shadow: 0 0 1000px 500px rgba(255,255,255,0.5);
367 } 436 }
368 } 437 }
438 .payImgbox{text-align: center;border: 1px solid #fff;padding: 20px;}
369 </style> 439 </style>
......
1 <template>
2 <div>
3 <div class="box">
4 <el-card class="mb60 mt30">
5 <div class="text-center mt30">
6 <el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon>
7 <p class="text-success mb20">{{ language==0?'支付成功':'successful!' }}</p>
8
9 <el-button type="primary" class="btn-lineG mb60" @click="goBillDetail" round>{{ language==0?'返回订单详情':'Return order details' }}</el-button>
10 </div>
11 </el-card>
12 </div>
13 </div>
14 </template>
15
16 <script setup>
17 import {ref} from "vue";
18 import cache from "@/plugins/cache";
19 import {useRoute,useRouter} from "vue-router";
20 import {onMounted} from "@vue/runtime-core";
21 import {callbackPalPay} from "@/apiPc/match";
22 const route = useRoute()
23 const router = useRouter()
24 const language = ref(cache.local.get('language') || 0)
25 const orderId = ref(route.query.orderId)
26
27 onMounted(()=>{
28 callbackPalPay(route.query.orderId).then(res=>{
29
30 })
31 })
32 function goBillDetail() {
33 router.push({
34 name:`signPay`,
35 query: {
36 orderId: route.query.orderId
37 }
38 })
39 }
40 </script>
41
42 <style scoped lang="scss">
43
44 </style>
...@@ -489,7 +489,6 @@ const goPersonDetail = (m) => { ...@@ -489,7 +489,6 @@ const goPersonDetail = (m) => {
489 } 489 }
490 490
491 .bm-btm { 491 .bm-btm {
492 background: url("@/assets/v1/wt@2x.png") no-repeat center;
493 background-size: cover; 492 background-size: cover;
494 493
495 a { 494 a {
......
...@@ -280,7 +280,6 @@ function goTrain() { ...@@ -280,7 +280,6 @@ function goTrain() {
280 } 280 }
281 281
282 .pxPanel { 282 .pxPanel {
283 background: url("@/assets/v1/ss01.png") no-repeat center;
284 background-size: cover;margin-right: 10px; 283 background-size: cover;margin-right: 10px;
285 a { 284 a {
286 color: var(--el-color-golden); 285 color: var(--el-color-golden);
...@@ -293,7 +292,6 @@ function goTrain() { ...@@ -293,7 +292,6 @@ function goTrain() {
293 } 292 }
294 293
295 .jsPanel {margin-left: 10px; 294 .jsPanel {margin-left: 10px;
296 background: url("@/assets/v1/ss02.png") no-repeat center;
297 background-size: cover; 295 background-size: cover;
298 296
299 a { 297 a {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!