05ebb5dc by 杨炀

no message

1 parent b790e0e8
Showing 42 changed files with 1145 additions and 472 deletions
1 /**
2 * @author: Dennis Hernández
3 * @webSite: http://djhvscf.github.io/Blog
4 * @version: v1.0.0
5 */
6 (function ($) {
7 'use strict';
8
9 var initResizable = function (that) {
10 //Deletes the plugin to re-create it
11 that.$el.colResizable({disable: true});
12
13 //Creates the plugin
14 that.$el.colResizable({
15 liveDrag: that.options.liveDrag,
16 fixed: that.options.fixed,
17 headerOnly: that.options.headerOnly,
18 minWidth: that.options.minWidth,
19 hoverCursor: that.options.hoverCursor,
20 dragCursor: that.options.dragCursor,
21 onResize: that.onResize,
22 onDrag: that.options.onResizableDrag,
23 resizeMode: that.options.resizeMode
24 });
25 };
26
27 $.extend($.fn.bootstrapTable.defaults, {
28 resizable: false,
29 liveDrag: false,
30 fixed: true,
31 headerOnly: false,
32 minWidth: 15,
33 hoverCursor: 'e-resize',
34 dragCursor: 'e-resize',
35 onResizableResize: function (e) {
36 return false;
37 },
38 onResizableDrag: function (e) {
39 return false;
40 }
41 });
42
43 var BootstrapTable = $.fn.bootstrapTable.Constructor,
44 _toggleView = BootstrapTable.prototype.toggleView,
45 _resetView = BootstrapTable.prototype.resetView;
46
47 BootstrapTable.prototype.toggleView = function () {
48 _toggleView.apply(this, Array.prototype.slice.apply(arguments));
49
50 if (this.options.resizable && this.options.cardView) {
51 //Deletes the plugin
52 $(this.$el).colResizable({disable: true});
53 }
54 };
55
56 BootstrapTable.prototype.resetView = function () {
57 var that = this;
58
59 _resetView.apply(this, Array.prototype.slice.apply(arguments));
60
61 if (this.options.resizable) {
62 // because in fitHeader function, we use setTimeout(func, 100);
63 setTimeout(function () {
64 initResizable(that);
65 }, 100);
66 }
67 };
68
69 BootstrapTable.prototype.onResize = function (e) {
70 var that = $(e.currentTarget);
71 that.bootstrapTable('resetView');
72 that.data('bootstrap.table').options.onResizableResize.apply(e);
73 }
74 })(jQuery);
...@@ -2,7 +2,7 @@ import request from '@/utils/request' ...@@ -2,7 +2,7 @@ import request from '@/utils/request'
2 2
3 export function getMaList(params) { 3 export function getMaList(params) {
4 return request({ 4 return request({
5 url: `/league/competition/webList`, 5 url: `/league/competition/webList?topFlag=1&status=1`,
6 method: 'get', 6 method: 'get',
7 params: params 7 params: params
8 }) 8 })
...@@ -252,13 +252,7 @@ export function getMyGroupForCptFilter(groupId, cptId, query) { ...@@ -252,13 +252,7 @@ export function getMyGroupForCptFilter(groupId, cptId, query) {
252 data: query 252 data: query
253 }) 253 })
254 } 254 }
255 //todo 255
256 export function bindWdsf(perId,card) {
257 return request({
258 url: `/systemj/personInfo/bindWdsf/${perId}?card=${card}`,
259 method: 'post'
260 })
261 }
262 export function getGroupPersonList(query,groupId) { 256 export function getGroupPersonList(query,groupId) {
263 return request({ 257 return request({
264 url: `/systemj/personInfo/getPersonInfoListByGroupIdNoLabel/${groupId}`, 258 url: `/systemj/personInfo/getPersonInfoListByGroupIdNoLabel/${groupId}`,
...@@ -403,9 +397,8 @@ export function commitSign(data) { ...@@ -403,9 +397,8 @@ export function commitSign(data) {
403 } 397 }
404 export function getTotalFee(data) { 398 export function getTotalFee(data) {
405 return request({ 399 return request({
406 url: `/league/expenseConfig/getTotalFee`, 400 url: `/league/expenseConfig/getTotalFee/${data.cptId}/${data.entryId}`,
407 method: 'post', 401 method: 'get'
408 data: data
409 }) 402 })
410 } 403 }
411 export function getMemberInfoByCptId(cptId) { 404 export function getMemberInfoByCptId(cptId) {
...@@ -463,8 +456,8 @@ export function getMySignListTree(cptId, personId, teamId) { ...@@ -463,8 +456,8 @@ export function getMySignListTree(cptId, personId, teamId) {
463 export function getMySignInfoList(data) { 456 export function getMySignInfoList(data) {
464 return request({ 457 return request({
465 url: `/league/sign/getMySignInfoList`, 458 url: `/league/sign/getMySignInfoList`,
466 method: 'post', 459 method: 'get',
467 data: data 460 params: data
468 }) 461 })
469 } 462 }
470 export function saveMyGroupExtraInfo(data) { 463 export function saveMyGroupExtraInfo(data) {
...@@ -498,4 +491,18 @@ export function getPayedOrderPdf(cptId, groupId) { ...@@ -498,4 +491,18 @@ export function getPayedOrderPdf(cptId, groupId) {
498 method: 'get' 491 method: 'get'
499 }) 492 })
500 } 493 }
494 //todo
495 export function bindWdsf(perId,card) {
496 return request({
497 url: `/systemj/personInfo/bindWdsf/${perId}?card=${card}`,
498 method: 'post'
499 })
500 }
501 export function getProjectPageByPerIds(query) {
502 return request({
503 url: `/league/competitionProject/getProjectPageByPerIds/${query.cptId}/${query.perIds}`,
504 method: 'get',
505 params: query
506 })
507 }
501 508
......

1.32 KB | W: | H:

1.6 KB | W: | H:

src/assets/sign/tag04.png
src/assets/sign/tag04.png
src/assets/sign/tag04.png
src/assets/sign/tag04.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -182,7 +182,9 @@ aside { ...@@ -182,7 +182,9 @@ aside {
182 margin-bottom: 10px; 182 margin-bottom: 10px;
183 } 183 }
184 } 184 }
185 .m20{margin: 20px;}
185 .flexCenter{display: flex;align-items: center;justify-content: center;} 186 .flexCenter{display: flex;align-items: center;justify-content: center;}
187 .flexBetween{display: flex;align-items: center;justify-content: space-between;}
186 .primary-kx{border:1px solid var(--el-color-primary)!important;color: var(--el-color-primary)!important;} 188 .primary-kx{border:1px solid var(--el-color-primary)!important;color: var(--el-color-primary)!important;}
187 .primary-kx:hover{} 189 .primary-kx:hover{}
188 .border-info{background: rgba(69,61,234,0.04); 190 .border-info{background: rgba(69,61,234,0.04);
...@@ -222,8 +224,8 @@ aside { ...@@ -222,8 +224,8 @@ aside {
222 font-size: 24px;} 224 font-size: 24px;}
223 .el-dialog__headerbtn{font-size: 24px!important;color: #A0A0A0;} 225 .el-dialog__headerbtn{font-size: 24px!important;color: #A0A0A0;}
224 } 226 }
225 227 .w100{width: 100%;}
226 .w200px{width: 200px;} 228 .w200px{min-width: 200px;}
227 .pt30{padding-top: 30px;} 229 .pt30{padding-top: 30px;}
228 .d-form-border{ 230 .d-form-border{
229 border: 1px solid #E5E5E5;margin: 20px 0;padding: 20px} 231 border: 1px solid #E5E5E5;margin: 20px 0;padding: 20px}
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
18 :accept="accept" 18 :accept="accept"
19 > 19 >
20 <!-- 上传按钮 --> 20 <!-- 上传按钮 -->
21 <el-button type="primary" :disabled="props.disabled">选取文件</el-button> 21 <el-button type="primary" :disabled="props.disabled">{{ buttonText }}</el-button>
22 </el-upload> 22 </el-upload>
23 <!-- 上传提示 --> 23 <!-- 上传提示 -->
24 <div v-if="showTip && !disabled" class="el-upload__tip"> 24 <div v-if="showTip && !disabled" class="el-upload__tip">
...@@ -89,6 +89,10 @@ const props = defineProps({ ...@@ -89,6 +89,10 @@ const props = defineProps({
89 disabled: { 89 disabled: {
90 type: Boolean, 90 type: Boolean,
91 default: false 91 default: false
92 },
93 buttonText:{
94 type: String,
95 default: '上传文件'
92 } 96 }
93 }) 97 })
94 const accept = computed(() => { 98 const accept = computed(() => {
......
...@@ -6,40 +6,21 @@ ...@@ -6,40 +6,21 @@
6 6
7 <div class="home-menu forPc" style="margin: 0 20px"> 7 <div class="home-menu forPc" style="margin: 0 20px">
8 <el-menu 8 <el-menu
9 v-if="language==0"
10 router :default-active="activeIndex" :mode="mode" :ellipsis="true" 9 router :default-active="activeIndex" :mode="mode" :ellipsis="true"
11 popper-effect="dark" @select="handleSelect" 10 popper-effect="dark" @select="handleSelect"
12 > 11 >
13 <el-menu-item index="/">首页</el-menu-item> 12 <el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item>
14 <el-menu-item index="/news">新闻资讯</el-menu-item> 13 <el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item>
15 <el-menu-item index="/notice">通知公告</el-menu-item> 14 <el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item>
16 <el-menu-item index="/match/list/0">大赛报名</el-menu-item> 15 <el-menu-item index="/match/list/0">{{ language==0?'大赛报名':'SIGN UP' }}</el-menu-item>
17 <el-menu-item index="/saiC">赛程安排</el-menu-item> 16 <el-menu-item index="/saiC">{{ language==0?'赛程安排':'COMPETITIONS' }}</el-menu-item>
18 <el-menu-item index="/meta">媒体中心</el-menu-item> 17 <el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item>
19 <el-menu-item index="/guide">参赛指南</el-menu-item> 18 <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>
20 <el-sub-menu index="/about"> 19 <el-sub-menu index="/about">
21 <template #title>关于我们</template> 20 <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>
22 <el-menu-item index="/about/wuDao">舞蹈节</el-menu-item> 21 <el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>
23 <el-menu-item index="/about/culture">地方文化</el-menu-item> 22 <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>
24 </el-sub-menu> 23 <el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>
25 </el-menu>
26 <el-menu
27 v-if="language==1"
28 router :default-active="activeIndex" mode="horizontal" :ellipsis="true"
29 popper-effect="dark" @select="handleSelect"
30 >
31 <el-menu-item index="/">HOME</el-menu-item>
32 <el-menu-item index="/news">NEWS</el-menu-item>
33 <el-menu-item index="/notice">NOTICEBOARD</el-menu-item>
34 <el-menu-item index="/match/list/0">SIGN UP</el-menu-item>
35 <el-menu-item index="/saiC">COMPETITIONS</el-menu-item>
36 <el-menu-item index="/meta">MEDIA</el-menu-item>
37 <el-menu-item index="/guide">GUIDELINE</el-menu-item>
38 <el-sub-menu index="/about">
39 <template #title>CONTACT & MORE</template>
40 <el-menu-item index="/about/wuDao">About Us</el-menu-item>
41 <el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item>
42 <el-menu-item index="/about/culture">Culture</el-menu-item>
43 </el-sub-menu> 24 </el-sub-menu>
44 </el-menu> 25 </el-menu>
45 </div> 26 </div>
...@@ -49,25 +30,19 @@ ...@@ -49,25 +30,19 @@
49 <el-button :icon="Search" circle @click="searchNews" /> 30 <el-button :icon="Search" circle @click="searchNews" />
50 </div> 31 </div>
51 <div class="languageBtn"> 32 <div class="languageBtn">
52 <span v-if="language==0" :class="language==0?'active':''" @click="changeLanguage(0)">中文</span> 33 <span :class="language==0?'active':''" @click="changeLanguage(0)">{{ language==0?'中文':'CN' }}</span>
53 <span v-else :class="language==0?'active':''" @click="changeLanguage(0)">CN</span>
54 | 34 |
55 <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span> 35 <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span>
56 </div> 36 </div>
57 <div class="ml20 forPc" > 37 <div class="ml20 forPc" >
58 <el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn"> 38 <el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn">
59 <span v-if="language==0" @click="goLogin">登录</span> 39 <span @click="goLogin">{{ language==0?'登录':'LOGIN' }}</span>
60 <span v-if="language==1" @click="goLogin">LOGIN</span>
61 <!-- | &nbsp;<span @click="goRegister">注册</span>--> 40 <!-- | &nbsp;<span @click="goRegister">注册</span>-->
62 </el-button> 41 </el-button>
63 42
64 <el-button v-if="language==0&&isLogin" style="border-radius: 20px;" class="loginBtn"> 43 <el-button v-if="isLogin" style="border-radius: 20px;" class="loginBtn">
65 <span @click="router.push('/center/myInfo')">个人中心</span> 44 <span @click="router.push('/center/myInfo')">{{ language==0?'个人中心':'Personal' }}</span>
66 &nbsp;&nbsp;<span @click="logout()">退出</span> 45 &nbsp;&nbsp;<span @click="logout()">{{language==0?'退出':'Exit'}}</span>
67 </el-button>
68 <el-button v-if="language==1&&isLogin" style="border-radius: 20px;" class="loginBtn">
69 <span @click="router.push('/center/myInfo')">Personal</span>
70 &nbsp;&nbsp;<span @click="logout()">Exit</span>
71 </el-button> 46 </el-button>
72 </div> 47 </div>
73 </div> 48 </div>
......
...@@ -522,10 +522,16 @@ export const constantRoutes = [ ...@@ -522,10 +522,16 @@ export const constantRoutes = [
522 meta: { title: '我的报名' } 522 meta: { title: '我的报名' }
523 }, 523 },
524 { 524 {
525 path: 'myTrain', 525 path: 'myReservation',
526 component: () => import('@/viewsPc/center/myTrain'), 526 component: () => import('@/viewsPc/center/myReservation'),
527 name: 'myTrain', 527 name: 'myReservation',
528 meta: { title: '我的预定' } 528 meta: { title: '我的预定' }
529 },
530 {
531 path: 'mySms',
532 component: () => import('@/viewsPc/center/mySms'),
533 name: 'mySms',
534 meta: { title: '系统消息' }
529 } 535 }
530 ] 536 ]
531 } 537 }
......
...@@ -278,6 +278,12 @@ export const constantRoutes = [ ...@@ -278,6 +278,12 @@ export const constantRoutes = [
278 redirect: '/match/list', 278 redirect: '/match/list',
279 children: [ 279 children: [
280 { 280 {
281 path: 'pay',
282 component: () => import('@/viewsPc/match/pay'),
283 name: 'signPay',
284 meta: { title: '缴费清单' }
285 },
286 {
281 path: 'list', 287 path: 'list',
282 component: () => import('@/viewsPc/match/index'), 288 component: () => import('@/viewsPc/match/index'),
283 name: 'matchList', 289 name: 'matchList',
...@@ -324,6 +330,12 @@ export const constantRoutes = [ ...@@ -324,6 +330,12 @@ export const constantRoutes = [
324 component: () => import('@/viewsPc/match/expenseDetails'), 330 component: () => import('@/viewsPc/match/expenseDetails'),
325 name: 'expenseDetails', 331 name: 'expenseDetails',
326 meta: { title: '费用明细' } 332 meta: { title: '费用明细' }
333 },
334 {
335 path: 'list/:id/signPreview',
336 component: () => import('@/viewsPc/match/signPreview'),
337 name: 'signPreview',
338 meta: { title: '提交审核' }
327 } 339 }
328 ] 340 ]
329 }, 341 },
...@@ -391,26 +403,43 @@ export const constantRoutes = [ ...@@ -391,26 +403,43 @@ export const constantRoutes = [
391 meta: { title: '个人中心' } 403 meta: { title: '个人中心' }
392 }, 404 },
393 { 405 {
394 path: 'myTeam', 406 path: 'myPassword',
395 component: () => import('@/viewsPc/center/teamInfo'), 407 component: () => import('@/viewsPc/center/myPassword'),
396 name: 'myTeam', 408 name: 'myPassword',
397 meta: { title: '我的团队' } 409 meta: { title: '修改密码' }
410 },
411 {
412 path: 'myCertification',
413 component: () => import('@/viewsPc/center/myCertification'),
414 name: 'myCertification',
415 meta: { title: 'institutional accreditation' }
416 },
417 {
418 path: 'myMember',
419 component: () => import('@/viewsPc/center/myMember'),
420 name: 'myMember',
421 meta: { title: 'Player Management' }
398 }, 422 },
399 { 423 {
400 path: 'myMatch', 424 path: 'myMatch',
401 component: () => import('@/viewsPc/center/myMatch'), 425 component: () => import('@/viewsPc/center/myMatch'),
402 name: 'myMatch', 426 name: 'myMatch',
403 meta: { title: '我的赛事' } 427 meta: { title: 'My registration' }
428 },
429 {
430 path: 'myReservation',
431 component: () => import('@/viewsPc/center/myReservation'),
432 name: 'myReservation',
433 meta: { title: 'My reservation' }
404 }, 434 },
405 { 435 {
406 path: 'myTrain', 436 path: 'mySms',
407 component: () => import('@/viewsPc/center/myTrain'), 437 component: () => import('@/viewsPc/center/mySms'),
408 name: 'myTrain', 438 name: 'mySms',
409 meta: { title: '我的培训' } 439 meta: { title: 'System messages' }
410 } 440 }
411 ] 441 ]
412 } 442 }]
413 ]
414 } 443 }
415 ] 444 ]
416 445
......
...@@ -14,6 +14,7 @@ import { saveAs } from 'file-saver' ...@@ -14,6 +14,7 @@ import { saveAs } from 'file-saver'
14 import useUserStore from '@/store/modules/user' 14 import useUserStore from '@/store/modules/user'
15 import { sendNotification } from '@/assets/lib/extend' 15 import { sendNotification } from '@/assets/lib/extend'
16 import _ from 'lodash' 16 import _ from 'lodash'
17 const language = cache.local.get('language') || 0
17 18
18 let downloadLoadingInstance 19 let downloadLoadingInstance
19 // 是否显示重新登录 20 // 是否显示重新登录
...@@ -21,7 +22,7 @@ export const isRelogin = { show: false } ...@@ -21,7 +22,7 @@ export const isRelogin = { show: false }
21 22
22 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' 23 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
23 // 对应国际化资源文件后缀 24 // 对应国际化资源文件后缀
24 axios.defaults.headers['Content-Language'] = 'zh_CN' 25 axios.defaults.headers['Content-Language'] = (language==0? 'zh_CN':'en_US' )
25 // 创建axios实例 26 // 创建axios实例
26 const service = axios.create({ 27 const service = axios.create({
27 // axios中请求配置有baseURL选项,表示请求URL公共部分 28 // axios中请求配置有baseURL选项,表示请求URL公共部分
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 <el-row :gutter="20"> 4 <el-row :gutter="20">
5 <el-col :lg="5" :md="5" :xl="6" :sm="8" :xs="8"> 5 <el-col :lg="5" :md="5" :xl="6" :sm="8" :xs="8">
6 <el-card class="mb20"> 6 <el-card class="mb20">
7 <div class="center-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
10 v-for="(m, i) in menus" 10 v-for="(m, i) in menus"
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 > 13 >
14 <a href="javascript:void(0)" @click="toInfo(m)"> 14 <a href="javascript:void(0)" @click="toInfo(m)">
15 <img :src="m.isActive ? m.picUrl2 : m.picUrl1"> 15 <img :src="m.isActive ? m.picUrl2 : m.picUrl1">
16 {{ m.name }} 16 {{m.name}}
17 </a> 17 </a>
18 </li> 18 </li>
19 </ul> 19 </ul>
...@@ -46,6 +46,8 @@ import {useRoute, useRouter} from 'vue-router' ...@@ -46,6 +46,8 @@ import {useRoute, useRouter} from 'vue-router'
46 import {onMounted} from '@vue/runtime-core' 46 import {onMounted} from '@vue/runtime-core'
47 import useUserStore from '@/store/modules/user' 47 import useUserStore from '@/store/modules/user'
48 import _ from 'lodash' 48 import _ from 'lodash'
49 import cache from "@/plugins/cache";
50 const language = ref(cache.local.get('language') || 0)
49 51
50 const route = useRoute() 52 const route = useRoute()
51 const router = useRouter() 53 const router = useRouter()
...@@ -53,50 +55,50 @@ const router = useRouter() ...@@ -53,50 +55,50 @@ const router = useRouter()
53 const user = ref({}) 55 const user = ref({})
54 const menus = ref([ 56 const menus = ref([
55 { 57 {
56 name: '基础信息', 58 name: language.value==0?'基础信息':'Basic Information',
57 routeName: 'myInfo', 59 routeName: 'myInfo',
58 picUrl1: '/img/nav_26.png', 60 picUrl1: '/img/nav_26.png',
59 picUrl2: '/img/nav_26_dwn.png', 61 picUrl2: '/img/nav_26_dwn.png',
60 isActive: false 62 isActive: false
61 }, 63 },
62 { 64 {
63 name: '修改密码', 65 name: language.value==0?'修改密码':'Change Password',
64 routeName: 'myPassword', 66 routeName: 'myPassword',
65 picUrl1: '/img/nav_27.png', 67 picUrl1: '/img/nav_27.png',
66 picUrl2: '/img/nav_27_dwn.png', 68 picUrl2: '/img/nav_27_dwn.png',
67 isActive: false 69 isActive: false
68 }, 70 },
69 { 71 {
70 name: '团队认证', 72 name: language.value==0?'团队认证':'Institutional Accreditation',
71 routeName: 'myCertification', 73 routeName: 'myCertification',
72 picUrl1: '/img/nav_32.png', 74 picUrl1: '/img/nav_32.png',
73 picUrl2: '/img/nav_32_dwn.png', 75 picUrl2: '/img/nav_32_dwn.png',
74 isActive: false 76 isActive: false
75 }, 77 },
76 { 78 {
77 name: '选手管理', 79 name: language.value==0?'选手管理':'Player Management',
78 routeName: 'myMember', 80 routeName: 'myMember',
79 picUrl1: '/img/nav_31.png', 81 picUrl1: '/img/nav_31.png',
80 picUrl2: '/img/nav_31_dwn.png', 82 picUrl2: '/img/nav_31_dwn.png',
81 isActive: false 83 isActive: false
82 }, 84 },
83 { 85 {
84 name: '我的报名', 86 name: language.value==0?'我的报名':'My Eegistration',
85 routeName: 'myMatch', 87 routeName: 'myMatch',
86 picUrl1: '/img/nav_28.png', 88 picUrl1: '/img/nav_28.png',
87 picUrl2: '/img/nav_28_dwn.png', 89 picUrl2: '/img/nav_28_dwn.png',
88 isActive: false 90 isActive: false
89 }, 91 },
90 { 92 {
91 name: '我的预定', 93 name: language.value==0?'我的预定':'My Reservation',
92 routeName: 'myMatch', 94 routeName: 'myReservation',
93 picUrl1: '/img/nav_29.png', 95 picUrl1: '/img/nav_29.png',
94 picUrl2: '/img/nav_29_dwn.png', 96 picUrl2: '/img/nav_29_dwn.png',
95 isActive: false 97 isActive: false
96 }, 98 },
97 { 99 {
98 name: '系统消息', 100 name: language.value==0?'系统消息':'System messages',
99 routeName: 'myTrain', 101 routeName: 'mySms',
100 picUrl1: '/img/nav_30.png', 102 picUrl1: '/img/nav_30.png',
101 picUrl2: '/img/nav_30_dwn.png', 103 picUrl2: '/img/nav_30_dwn.png',
102 isActive: false 104 isActive: false
...@@ -104,36 +106,36 @@ const menus = ref([ ...@@ -104,36 +106,36 @@ const menus = ref([
104 ]) 106 ])
105 const menusPersonal = ref([ 107 const menusPersonal = ref([
106 { 108 {
107 name: '基础信息', 109 name: language.value==0?'基础信息':'Basic Information',
108 routeName: 'myInfo', 110 routeName: 'myInfo',
109 picUrl1: '/img/nav_26.png', 111 picUrl1: '/img/nav_26.png',
110 picUrl2: '/img/nav_26_dwn.png', 112 picUrl2: '/img/nav_26_dwn.png',
111 isActive: false 113 isActive: false
112 }, 114 },
113 { 115 {
114 name: '修改密码', 116 name: language.value==0?'修改密码':'Change Password',
115 routeName: 'myPassword', 117 routeName: 'myPassword',
116 picUrl1: '/img/nav_27.png', 118 picUrl1: '/img/nav_27.png',
117 picUrl2: '/img/nav_27_dwn.png', 119 picUrl2: '/img/nav_27_dwn.png',
118 isActive: false 120 isActive: false
119 }, 121 },
120 { 122 {
121 name: '我的报名', 123 name: language.value==0?'我的报名':'My Eegistration',
122 routeName: 'myMatch', 124 routeName: 'myMatch',
123 picUrl1: '/img/nav_28.png', 125 picUrl1: '/img/nav_28.png',
124 picUrl2: '/img/nav_28_dwn.png', 126 picUrl2: '/img/nav_28_dwn.png',
125 isActive: false 127 isActive: false
126 }, 128 },
127 { 129 {
128 name: '我的预定', 130 name: language.value==0?'我的预定':'My Reservation',
129 routeName: 'myMatch', 131 routeName: 'myReservation',
130 picUrl1: '/img/nav_29.png', 132 picUrl1: '/img/nav_29.png',
131 picUrl2: '/img/nav_29_dwn.png', 133 picUrl2: '/img/nav_29_dwn.png',
132 isActive: false 134 isActive: false
133 }, 135 },
134 { 136 {
135 name: '系统消息', 137 name: language.value==0?'系统消息':'System messages',
136 routeName: 'myTrain', 138 routeName: 'mySms',
137 picUrl1: '/img/nav_30.png', 139 picUrl1: '/img/nav_30.png',
138 picUrl2: '/img/nav_30_dwn.png', 140 picUrl2: '/img/nav_30_dwn.png',
139 isActive: false 141 isActive: false
...@@ -174,12 +176,18 @@ const toInfo = (item) => { ...@@ -174,12 +176,18 @@ const toInfo = (item) => {
174 li { 176 li {
175 margin-bottom: 15px; 177 margin-bottom: 15px;
176 } 178 }
179 &.en-menu{text-align: left;
180 li{padding: 6px 0 6px 14px;
181 a{display: flex;align-items: center;}
182 }
183 img{padding: 0;width: 26px;}
184 }
177 } 185 }
178 186
179 li img { 187 li img {
180 display: inline-block; 188 display: inline-block;
181 vertical-align: middle; 189 vertical-align: middle;
182 margin-right: 20px; 190 margin-right: 10px;
183 padding: 5px; 191 padding: 5px;
184 } 192 }
185 193
......
1 <template> 1 <template>
2 <el-card :body-style="{'padding':'0'}"> 2 <el-card :body-style="{'padding':'0'}" class="mb20">
3 <div class="indexTitle"><h3 class="leftboderTT">团队认证</h3></div> 3 <div class="indexTitle">
4 <h3 class="leftboderTT">{{ language==0?'团队认证':'Institutional Accreditation' }}</h3>
5 </div>
4 6
5 <div class="pd20"> 7 <div class="pd20">
6 <el-form :model="form" label-width="160px"> 8 <el-form :model="form" label-width="160px" :label-position="language==0?'left':'top'">
7 <fieldset class="fieldset-form"> 9 <fieldset class="fieldset-form">
8 <legend>机构类型</legend> 10 <legend>{{ language==0?'机构类型':'Institution Type' }}</legend>
9 <div class="pt30"> 11 <div class="pt30">
10 <el-form-item label="选择机构类型" required> 12 <el-form-item :label="language==0?'选择机构类型':'Select institution type'" required>
11 <el-radio-group v-model="form.type"> 13 <el-radio-group v-model="form.type">
12 <el-radio-button label="0">普通院校</el-radio-button> 14 <el-radio-button label="0">{{ language==0?'普通院校':'School' }}</el-radio-button>
13 <el-radio-button label="1">专业舞蹈学校</el-radio-button> 15 <el-radio-button label="1">{{ language==0?'专业舞蹈学校':'Professional dance school' }}</el-radio-button>
14 <el-radio-button label="2">培训机构/俱乐部</el-radio-button> 16 <el-radio-button label="2">{{ language==0?'培训机构/俱乐部':'Company/Club' }}</el-radio-button>
15 <el-radio-button label="3">地方协会</el-radio-button> 17 <el-radio-button label="3">{{ language==0?'地方协会':'Local Association' }}</el-radio-button>
16 <el-radio-button label="4">国家协会</el-radio-button> 18 <el-radio-button label="4">{{ language==0?'国家协会':'National Association' }}</el-radio-button>
17 </el-radio-group> 19 </el-radio-group>
18 </el-form-item> 20 </el-form-item>
19 </div> 21 </div>
20 </fieldset> 22 </fieldset>
21 <fieldset class="fieldset-form mt30"> 23 <fieldset class="fieldset-form mt30">
22 <legend>机构基础信息 </legend> 24 <legend>{{ language==0?'机构基础信息':'Institutional Basic Information' }} </legend>
23 <div class="pt30" style="max-width: 500px"> 25 <div class="pt30" style="max-width: 500px">
24 <el-form-item label="所属国家" required> 26 <el-form-item :label="language==0?'所属国家':'Nationality'" required>
25 <el-select filterable v-model="form.countryId"> 27 <el-select filterable v-model="form.countryId">
26 <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id" /> 28 <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" />
27 </el-select> 29 </el-select>
28 </el-form-item> 30 </el-form-item>
29 <el-form-item label="详细地址" required prop="address"> 31 <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address">
30 <el-cascader v-if="form.countryId == 240" 32 <el-cascader v-if="form.countryId == 240"
31 v-model="form.regionId" 33 v-model="form.regionId"
32 style="width: 100%;" 34 style="width: 100%;"
33 :options="regionsList" 35 :options="regionsList"
34 :props="{ label:'text' }" 36 :props="{ label:'text' }"
35 /> 37 />
36 <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> 38 <el-input type="textarea" v-model="form.address" class="mt10"/>
37 </el-form-item> 39 </el-form-item>
38 <el-form-item label="机构名称" required prop="name"> 40 <el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name">
39 <el-input type="text" v-model="form.name" placeholder="请输入内容"/> 41 <el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/>
40 </el-form-item> 42 </el-form-item>
41 <el-form-item label="联系人姓名" required prop="contactPerson"> 43 <el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson">
42 <el-input type="text" v-model="form.contactPerson" placeholder="请输入内容"/> 44 <el-input type="text" v-model="form.contactPerson" :placeholder="language==0?'请输入内容':''"/>
43 </el-form-item> 45 </el-form-item>
44 <el-form-item label="联系人电话" required prop="contactTelno"> 46 <el-form-item :label="language==0?'联系人电话':'Contact Phone'" required prop="contactTelno">
45 <el-input v-model="form.contactTelno" type="phone" placeholder="请输入内容"/> 47 <el-input v-model="form.contactTelno" type="phone" :placeholder="language==0?'请输入内容':''"/>
46 </el-form-item> 48 </el-form-item>
47 <el-form-item label="联系人邮箱" required prop="contactEmail"> 49 <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail">
48 <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> 50 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
49 </el-form-item> 51 </el-form-item>
50 52
51 </div> 53 </div>
52 </fieldset> 54 </fieldset>
53 <fieldset class="fieldset-form mt30"> 55 <fieldset class="fieldset-form mt30">
54 <legend>机构认证信息 </legend> 56 <legend>{{ language==0?'机构认证信息':'Institutional certification information' }} </legend>
55 <div class="pt30" style="max-width: 500px"> 57 <div class="pt30" style="max-width: 500px">
56 <el-form-item label="机构代码" required prop="orgCode"> 58 <el-form-item :label="language==0?'机构代码':'Organization Code'" required prop="orgCode">
57 <el-input type="text" v-model="form.orgCode" placeholder="请输入内容"/> 59 <el-input type="text" v-model="form.orgCode" :placeholder="language==0?'请输入内容':''"/>
58 </el-form-item> 60 </el-form-item>
59 <el-form-item label="机构证件" required prop="orgCert"> 61 <el-form-item :label="language==0?'机构证件':'Institutional documents'" required prop="orgCert">
60 <file-upload v-model="form.orgCert"/> 62 <file-upload v-model="form.orgCert" :button-text="language==0?'上传文件':'Upload'"/>
61 </el-form-item> 63 </el-form-item>
62 64
63 </div> 65 </div>
64 </fieldset> 66 </fieldset>
65 <fieldset class="fieldset-form mt30"> 67 <fieldset class="fieldset-form mt30">
66 <legend>机构法人信息 </legend> 68 <legend>{{ language==0?'机构法人信息':'Institutional legal person information' }} </legend>
67 <div class="pt30" style="max-width: 500px"> 69 <div class="pt30" style="max-width: 500px">
68 <el-form-item label="法人姓名" required prop="orgCode"> 70 <el-form-item :label="language==0?'法人姓名':'Legal Person Name'" required prop="orgCode">
69 <el-input type="text" v-model="form.orgCode" placeholder="请输入内容"/> 71 <el-input type="text" v-model="form.orgCode" :placeholder="language==0?'请输入内容':''"/>
70 </el-form-item> 72 </el-form-item>
71 <el-form-item label="法定代表人身份文件" required prop="orgCert"> 73 <el-form-item :label="language==0?'法定代表人身份文件':'Identity documents of the legal representative'" required prop="orgCert">
72 <file-upload v-model="form.orgCert"/> 74 <file-upload v-model="form.orgCert" :button-text="language==0?'上传文件':'Upload'"/>
73 </el-form-item> 75 </el-form-item>
74 76
75 </div> 77 </div>
...@@ -77,7 +79,7 @@ ...@@ -77,7 +79,7 @@
77 79
78 </el-form> 80 </el-form>
79 <div class="text-center mt30"> 81 <div class="text-center mt30">
80 <el-button type="primary" class="btn-lineG w200px" round>提交审核</el-button> 82 <el-button type="primary" class="btn-lineG w200px" round>{{ language==0?'提交审核':'Submit' }}</el-button>
81 </div> 83 </div>
82 </div> 84 </div>
83 </el-card> 85 </el-card>
...@@ -91,9 +93,12 @@ import {useRouter} from 'vue-router' ...@@ -91,9 +93,12 @@ import {useRouter} from 'vue-router'
91 import {ElMessage, ElMessageBox} from 'element-plus' 93 import {ElMessage, ElMessageBox} from 'element-plus'
92 import FileUpload from "@/components/FileUpload"; 94 import FileUpload from "@/components/FileUpload";
93 import * as match from "@/apiPc/match"; 95 import * as match from "@/apiPc/match";
96 import cache from "@/plugins/cache";
97 const language = ref(cache.local.get('language') || 0)
94 98
95 const form = ref({}) 99 const form = ref({})
96 const regionsList = ref([]) 100 const regionsList = ref([])
101 const countryList = ref([])
97 function submit() { 102 function submit() {
98 commitAudit().then(res => { 103 commitAudit().then(res => {
99 104
...@@ -101,9 +106,15 @@ function submit() { ...@@ -101,9 +106,15 @@ function submit() {
101 } 106 }
102 107
103 onMounted(() => { 108 onMounted(() => {
109 getCountryList()
104 getRegionsList() 110 getRegionsList()
105 getData() 111 getData()
106 }) 112 })
113 function getCountryList() {
114 match.countryList().then(res => {
115 countryList.value = res.data
116 })
117 }
107 function getRegionsList() { 118 function getRegionsList() {
108 match.regionsList().then(res => { 119 match.regionsList().then(res => {
109 regionsList.value = res.data 120 regionsList.value = res.data
......
1 <template> 1 <template>
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">机构基础信息</h3></div> 4 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'机构基础信息':'Institutional Basic Information' }}</h3></div>
5 <!-- uType字段 1 是个人 2是团体--> 5 <!-- uType字段 1 是个人 2是团体-->
6 <!-- {{user}}--> 6 <!-- {{user}}-->
7 <team-info :form="myform" v-if="user.utype=='2'"/> 7 <team-info :form="myform" :language="language" v-if="user.utype=='2'"/>
8 8
9 </el-card> 9 </el-card>
10 10
...@@ -20,7 +20,8 @@ import { ElMessage, ElMessageBox } from 'element-plus' ...@@ -20,7 +20,8 @@ import { ElMessage, ElMessageBox } from 'element-plus'
20 import { nationList } from '@/assets/js/data' 20 import { nationList } from '@/assets/js/data'
21 import {getGroupInfo} from "@/apiPc/match"; 21 import {getGroupInfo} from "@/apiPc/match";
22 import TeamInfo from "@/viewsPc/center/teamInfo"; 22 import TeamInfo from "@/viewsPc/center/teamInfo";
23 23 import cache from "@/plugins/cache";
24 const language = ref(cache.local.get('language') || 0)
24 const router = useRouter() 25 const router = useRouter()
25 const { proxy } = getCurrentInstance() 26 const { proxy } = getCurrentInstance()
26 const props = defineProps({ 27 const props = defineProps({
......
1 <template> 1 <template>
2 <el-card> 2 <el-card class="mb20">
3 <div class="funcBtns"> 3 <div class="funcBtns">
4 <el-button type="primary" @click="addMember">添加选手</el-button> 4 <el-button type="primary" @click="addMember">{{ language==0?'添加选手':'Add Player'}}</el-button>
5 <el-button type="primary" plain @click="importSportman">导入选手</el-button> 5 <el-button type="primary" plain @click="importSportman">{{ language==0?'导入选手':'Import Player' }}</el-button>
6 <el-button type="primary" plain> 6 <el-button type="primary" plain>
7 <a href="/file/sportsmanTemplate.xlsx" target="_blank">下载模板</a> 7 <a href="/file/sportsmanTemplate.xlsx" target="_blank">Download template</a>
8 </el-button> 8 </el-button>
9 </div> 9 </div>
10 <div class="from-Card"> 10 <div class="from-Card">
11 <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> 11 <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small">
12 <el-form-item label="姓名"> 12 <el-form-item :label="language==0?'姓名':'Name'">
13 <el-input v-model="query.realName" style="width: 120px;" clearable/> 13 <el-input v-model="query.realName" style="width: 120px;" clearable/>
14 </el-form-item> 14 </el-form-item>
15 <el-form-item label="短名"> 15 <el-form-item :label="language==0?'短名':'Short Name'">
16 <el-input v-model="query.shortName" style="width: 120px;" clearable/> 16 <el-input v-model="query.shortName" style="width: 120px;" clearable/>
17 </el-form-item> 17 </el-form-item>
18 <el-form-item label="手机号码"> 18 <el-form-item :label="language==0?'手机号码':'Phone Number'">
19 <el-input v-model="query.phone" style="width: 120px;" clearable/> 19 <el-input v-model="query.phone" style="width: 120px;" clearable/>
20 </el-form-item> 20 </el-form-item>
21 <el-form-item label="邮箱"> 21 <el-form-item :label="language==0?'邮箱':'E-mail'">
22 <el-input v-model="query.email" style="width: 120px;" clearable/> 22 <el-input v-model="query.email" style="width: 120px;" clearable/>
23 </el-form-item> 23 </el-form-item>
24 <el-form-item label="证件类型"> 24 <el-form-item :label="language==0?'证件类型':'ID Type'">
25 <el-input v-model="query.idcType" style="width: 120px;" clearable/> 25 <el-input v-model="query.idcType" style="width: 120px;" clearable/>
26 </el-form-item> 26 </el-form-item>
27 <el-form-item label="证件号"> 27 <el-form-item :label="language==0?'证件号码':'ID NO.'">
28 <el-input v-model="query.idcode" style="width: 120px;" clearable/> 28 <el-input v-model="query.idcode" style="width: 120px;" clearable/>
29 </el-form-item> 29 </el-form-item>
30 <el-form-item label="角色"> 30 <el-form-item :label="language==0?'会员角色':'Role'">
31 <el-input v-model="query.label" style="width: 120px;" clearable/> 31 <el-select v-model="query.label" multiple>
32 <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?(l.label):(l.enlabel)"/>
33 </el-select>
32 </el-form-item> 34 </el-form-item>
33 <el-form-item> 35 <el-form-item>
34 <el-button type="primary" @click="getList">查询</el-button> 36 <el-button type="primary" @click="getList">{{ language==0?'查询':'Search' }}</el-button>
35 </el-form-item> 37 </el-form-item>
36 </el-form> 38 </el-form>
37 </div> 39 </div>
38 40
39 <!-- 人员表格--> 41 <!-- 人员表格-->
40 <person-table :table-data="tableData" @edit="editCoach" @delete="delperson"/> 42 <person-table :table-data="tableData" @edit="editCoach" @delete="delperson"/>
41 <el-table :data="tableData" class="mt20">
42 <el-table-column type="index" label="序号" width="80" align="center"/>
43 <el-table-column label="所属国家" prop="countryName"/>
44 <el-table-column label="姓氏" prop="xing"/>
45 <el-table-column label="名" prop="ming"/>
46 <el-table-column label="短名" prop="shortName"/>
47 <el-table-column label="性别" prop="sexStr"/>
48 <el-table-column label="年龄" prop="age"/>
49 <el-table-column label="出生日期" prop="birth" width="100"/>
50 <el-table-column label="手机号码" prop="phone" width="120"/>
51 <el-table-column label="邮箱" prop="email" width="150"/>
52 <el-table-column label="证件类型" prop="idcTypeStr"/>
53 <el-table-column label="证件号码" prop="idcCode" width="200"/>
54 <el-table-column label="会员角色">
55 <template #default="scope">
56 <span v-for="item in scope.row.label?.split(',')" :key="item.id">
57 <el-tag type="primary" size="mini" v-if="item==='0'" effect="dark" class="ml10">运动员</el-tag>
58 <el-tag type="info" size="mini" v-if="item==='1'" effect="dark" class="ml10">教练</el-tag>
59 <el-tag type="info" size="mini" v-if="item==='2'" effect="dark" class="ml10">领队</el-tag>
60 <el-tag type="info" size="mini" v-if="item==='3'" effect="dark" class="ml10">队医</el-tag>
61 <el-tag type="info" size="mini" v-if="item==='4'" effect="dark" class="ml10">翻译</el-tag>
62 <el-tag type="info" size="mini" v-if="item==='5'" effect="dark" class="ml10">官员</el-tag>
63 <el-tag type="info" size="mini" v-if="item==='6'" effect="dark" class="ml10">其他</el-tag>
64 </span>
65 </template>
66 </el-table-column>
67 <el-table-column label="详细地址" prop="address"/>
68 <el-table-column label="操作" fixed="right" width="160" header-align="center" align="center">
69 <template #default="scope">
70 <a class="text-primary pd10" @click="editCoach(scope.row)">编辑</a>
71 <a class="text-primary pd10" @click="delperson(scope.row)">删除</a>
72 </template>
73 </el-table-column>
74 </el-table>
75 <paginationPc 43 <paginationPc
76 v-show="total>0" 44 v-show="total>0"
77 v-model:page="query.pageNum" 45 v-model:page="query.pageNum"
...@@ -100,20 +68,32 @@ import * as match from '@/apiPc/match' ...@@ -100,20 +68,32 @@ import * as match from '@/apiPc/match'
100 import {ElMessage, ElMessageBox} from 'element-plus' 68 import {ElMessage, ElMessageBox} from 'element-plus'
101 import {getGroupPersonList} from "@/apiPc/match"; 69 import {getGroupPersonList} from "@/apiPc/match";
102 import PersonTable from "@/viewsPc/match/components/personTable"; 70 import PersonTable from "@/viewsPc/match/components/personTable";
103 71 import cache from "@/plugins/cache";
72 import useUserStore from "@/store/modules/user";
73 const language = ref(cache.local.get('language') || 0)
104 const tableData = ref([]) 74 const tableData = ref([])
75 const labels = ref([
76 {value: '0', label: '运动员', enlabel: 'Sportsman'},
77 {value: '1', label: '教练', enlabel: 'Coach'},
78 {value: '2', label: '领队', enlabel: 'Leader'},
79 {value: '3', label: '队医', enlabel: 'Nurse'},
80 {value: '4', label: '翻译', enlabel: 'Translator'},
81 {value: '5', label: '官员', enlabel: 'Official'},
82 {value: '6', label: '其他', enlabel: 'Other'}
83 ])
105 const query = ref({ 84 const query = ref({
106 pageNum: 1, pageSize: 10 85 pageNum: 1, pageSize: 10
107 }) 86 })
108 const total = ref(0) 87 const total = ref(0)
109 const groupId = ref('1759813142128967681') 88 const group = useUserStore().group
89 const groupId = ref(group.id)
110 onMounted(() => { 90 onMounted(() => {
111 getList(groupId.value) 91 getList(groupId.value)
112 }) 92 })
113 93
114 function addMember() { 94 function addMember() {
115 const params = { 95 const params = {
116 title: '添加人员', 96 title: language.value==0?'添加人员':'Add',
117 id: 0, 97 id: 0,
118 groupId: groupId.value 98 groupId: groupId.value
119 } 99 }
...@@ -122,7 +102,7 @@ function addMember() { ...@@ -122,7 +102,7 @@ function addMember() {
122 102
123 function importSportman() { 103 function importSportman() {
124 const params = { 104 const params = {
125 title: '批量导入选手', 105 title: language.value==0?'批量导入选手':'Import',
126 groupId: groupId.value 106 groupId: groupId.value
127 } 107 }
128 proxy.$refs['dialogImportProps'].open(params) 108 proxy.$refs['dialogImportProps'].open(params)
...@@ -135,23 +115,38 @@ function getList() { ...@@ -135,23 +115,38 @@ function getList() {
135 }) 115 })
136 } 116 }
137 117
138 function editCoach(row) { 118 function editCoach(row,title) {
139 const params = { 119 const params = {
140 id: row.id, 120 id: row.id,
141 groupId: row.groupId 121 groupId: row.groupId,
122 title: title
142 } 123 }
143 proxy.$refs['dialogAddCoach'].open(params) 124 proxy.$refs['dialogAddCoach'].open(params)
144 } 125 }
145 126
146 function delperson(p) { 127 function delperson(p) {
147 //删除团队下的人 128 //删除团队下的人
148 ElMessageBox.confirm(`确定删除${p.realName}吗?`, '提示', { 129 let text = ''
149 confirmButtonText: '确定', 130 let t = '提示'
150 cancelButtonText: '取消', 131 let s = '确定'
132 let c = '取消'
133 let msg = '操作成功'
134 if (language.value==0){
135 text = `确定删除${p.realName}吗?`
136 } else {
137 text = `Delete ${p.realName}?`
138 t = 'Tips'
139 s = 'Confirm'
140 c = 'Cancel'
141 msg = ' Successful!'
142 }
143 ElMessageBox.confirm(text, t, {
144 confirmButtonText: s,
145 cancelButtonText: c,
151 type: 'warning' 146 type: 'warning'
152 }).then(() => { 147 }).then(() => {
153 match.delPerson(p.id).then(res => { 148 match.delPerson(p.id).then(res => {
154 ElMessage.success('操作成功') 149 ElMessage.success(msg)
155 getList(groupId.value) 150 getList(groupId.value)
156 }) 151 })
157 }) 152 })
......
1 <template> 1 <template>
2 <div> 2 <div class="mb20">
3 <el-card :body-style="{'padding':'0'}"> 3 <el-card :body-style="{'padding':'0'}">
4 <div class="indexTitle"><h3 class="leftboderTT">修改密码</h3></div> 4 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'修改密码':'Change Password' }}</h3></div>
5 5
6 <div class="pd20"> 6 <div class="pd20">
7 <div class="d-form-border" style="margin-top: 0"> 7 <div class="d-form-border" style="margin-top: 0">
8 <el-form class="d-form" ref="pwdRef" :model="user" :rules="rules" label-width="120px" 8 <el-form class="d-form" ref="pwdRef" :model="user" :rules="rules"
9 label-width="120px" :label-position="language==0?'left':'top'"
9 style="max-width: 500px;margin: auto"> 10 style="max-width: 500px;margin: auto">
10 <el-form-item label="旧密码" prop="oldPassword"> 11 <el-form-item :label="language==0?'旧密码':'Old Password'" prop="oldPassword">
11 <el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password/> 12 <el-input v-model="user.oldPassword" :placeholder="language==0?'请输入旧密码':''" type="password" show-password/>
12 </el-form-item> 13 </el-form-item>
13 <el-form-item label="新密码" prop="newPassword"> 14 <el-form-item :label="language==0?'新密码':'New Password'" prop="newPassword">
14 <el-input v-model="user.newPassword" placeholder="请设置8位以上大小写字母、数字、特殊符号" type="password" 15 <el-input v-model="user.newPassword" :placeholder="language==0?'请设置8位以上大小写字母、数字、特殊符号':''" type="password"
15 show-password/> 16 show-password/>
16 </el-form-item> 17 </el-form-item>
17 <el-form-item label="确认密码" prop="confirmPassword"> 18 <el-form-item :label="language==0?'确认密码':'Confirm Password'" prop="confirmPassword">
18 <el-input v-model="user.confirmPassword" placeholder="请确认新密码" type="password" show-password/> 19 <el-input v-model="user.confirmPassword" :placeholder="language==0?'请确认新密码':''" type="password" show-password/>
19 </el-form-item> 20 </el-form-item>
20 21
21 </el-form> 22 </el-form>
22 </div> 23 </div>
23 <el-row justify="center"> 24 <el-row justify="center">
24 <el-button type="primary" class="btn-lineG" @click="submit">保存</el-button> 25 <el-button type="primary" class="btn-lineG" @click="submit">{{ language==0?'保存':'Save' }}</el-button>
25 </el-row> 26 </el-row>
26 </div> 27 </div>
27 </el-card> 28 </el-card>
...@@ -33,6 +34,8 @@ import {updateUserPwd} from '@/api/system/user' ...@@ -33,6 +34,8 @@ import {updateUserPwd} from '@/api/system/user'
33 import useUserStore from '@/store/modules/user' 34 import useUserStore from '@/store/modules/user'
34 import {reactive, ref, getCurrentInstance} from 'vue' 35 import {reactive, ref, getCurrentInstance} from 'vue'
35 import {validPassword} from '@/utils/validate' 36 import {validPassword} from '@/utils/validate'
37 import cache from "@/plugins/cache";
38 const language = ref(cache.local.get('language') || 0)
36 39
37 const show = ref(false) 40 const show = ref(false)
38 const {proxy} = getCurrentInstance() 41 const {proxy} = getCurrentInstance()
......
1 <template>
2 <div>
3 <el-card :body-style="{'padding':'0'}">
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"/>
6
7 <div class="pd20"></div>
8 </el-card>
9 </div>
10 </template>
11
12 <script setup>
13 import cache from "@/plugins/cache";
14 import {onMounted} from "@vue/runtime-core";
15 const language = ref(cache.local.get('language') || 0)
16 const list = ref([])
17 </script>
18
19 <style scoped lang="scss">
20 .indexTitle {
21 margin: 20px 0 12px;
22 padding: 0 20px 15px;
23 border-bottom: 1px solid #e5e5e5;
24
25 h3 {
26 font-size: 16px;
27 color: var(--el-color-primary);
28 }
29 }
30
31
32 </style>
33
1 <template>
2 <div>
3 <el-card :body-style="{'padding':'0'}">
4 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'系统消息':'System messages' }}</h3></div>
5
6 <ul>
7 <li v-for="(n,index) in list" :key="index">
8 <div class="dot"></div>
9 <h3>{{ n.title }}</h3>
10 <span>{{ n.time }}</span>
11 </li>
12 </ul>
13 <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0"/>
14
15 </el-card>
16 </div>
17 </template>
18
19 <script setup>
20 import cache from "@/plugins/cache";
21 import {onMounted} from "@vue/runtime-core";
22 const language = ref(cache.local.get('language') || 0)
23 const list = ref([])
24 onMounted(()=>{
25 getList()
26 })
27 const getList =()=>{
28 list.value = []
29 }
30 </script>
31
32 <style scoped lang="scss">
33 .indexTitle {
34 margin: 20px 0 12px;
35 padding: 0 20px 15px;
36 border-bottom: 1px solid #e5e5e5;
37
38 h3 {
39 font-size: 16px;
40 color: var(--el-color-primary);
41 }
42 }
43 ul{padding: 20px;
44 li{background: #FBFCFD;position: relative;padding: 20px 20px 20px 40px;margin-bottom: 18px;
45 cursor: pointer;
46 &:hover{
47 h3{color: var(--el-color-primary)}
48 }
49 .dot{position: absolute;width: 7px;
50 height: 7px;left: 20px;top: 24px;
51 background: #C5161E;
52 border-radius: 50%;}
53 h3{font-weight: 400;margin: 0;
54 font-size: 16px;
55 color: #29343C;}
56 span{font-weight: 400;display: inline-block;
57 font-size: 12px;margin: 10px 0 0;
58 color: #929AA0;}
59 }
60 }
61
62 </style>
...@@ -2,37 +2,37 @@ ...@@ -2,37 +2,37 @@
2 <div class="pd20"> 2 <div class="pd20">
3 <div class="d-form-border" style="margin-top: 0"> 3 <div class="d-form-border" style="margin-top: 0">
4 <el-form class="d-form" size="large" :model="form" ref="registerRef" :rules="registerRules" label-width="120" 4 <el-form class="d-form" size="large" :model="form" ref="registerRef" :rules="registerRules" label-width="120"
5 style="max-width: 500px;margin: auto"> 5 :label-position="language==0?'left':'top'" style="max-width: 500px;margin: auto">
6 <el-form-item label="用户名"> 6 <el-form-item :label="language==0?'用户名':'Account'">
7 {{userName}} 7 {{userName}}
8 </el-form-item> 8 </el-form-item>
9 <el-form-item label="所属国家" required> 9 <el-form-item :label="language==0?'所属国家':'Nationality'" required>
10 <el-select filterable v-model="form.countryId"> 10 <el-select filterable v-model="form.countryId">
11 <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id" /> 11 <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" />
12 </el-select> 12 </el-select>
13 </el-form-item> 13 </el-form-item>
14 <el-form-item label="详细地址" required prop="address"> 14 <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address">
15 <el-cascader v-if="form.countryId == 240" 15 <el-cascader v-if="form.countryId == 240"
16 v-model="form.regionId" 16 v-model="form.regionId"
17 style="width: 100%;" 17 style="width: 100%;"
18 :options="regionsList" 18 :options="regionsList"
19 :props="{ label:'text' }" 19 :props="{ label:'text' }"
20 /> 20 />
21 <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> 21 <el-input type="textarea" v-model="form.address" class="mt10" :placeholder="language==0?'请输入内容':''"/>
22 </el-form-item> 22 </el-form-item>
23 <el-form-item label="机构名称" required prop="name"> 23 <el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name">
24 <el-input type="text" v-model="form.name" placeholder="请输入内容"/> 24 <el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/>
25 </el-form-item> 25 </el-form-item>
26 <el-form-item label="联系人姓名" required prop="contactPerson"> 26 <el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson">
27 <el-input type="text" v-model="form.contactPerson" placeholder="请输入内容"/> 27 <el-input type="text" v-model="form.contactPerson" :placeholder="language==0?'请输入内容':''"/>
28 </el-form-item> 28 </el-form-item>
29 <el-form-item label="联系人电话" required prop="contactTelno"> 29 <el-form-item :label="language==0?'联系人电话':'Contact Phone'" required prop="contactTelno">
30 <el-input v-model="form.contactTelno" type="phone" placeholder="请输入内容"/> 30 <el-input v-model="form.contactTelno" type="phone" :placeholder="language==0?'请输入内容':''"/>
31 </el-form-item> 31 </el-form-item>
32 <el-form-item label="联系人邮箱" required prop="contactEmail"> 32 <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail">
33 <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> 33 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
34 </el-form-item> 34 </el-form-item>
35 <el-form-item prop="imgUrl" required label="机构LOGO"> 35 <el-form-item prop="imgUrl" required :label="language==0?'机构Logo':'Group Logo'">
36 <ImageUpload2 36 <ImageUpload2
37 v-model="form.imgUrl" :crop-height="200" :crop-width="200" :limit="1" 37 v-model="form.imgUrl" :crop-height="200" :crop-width="200" :limit="1"
38 :is-show-tip="false" 38 :is-show-tip="false"
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
41 </el-form> 41 </el-form>
42 </div> 42 </div>
43 <div class="text-center"> 43 <div class="text-center">
44 <el-button type="primary" class="btn-lineG" round @click="save">确定修改</el-button> 44 <el-button type="primary" class="btn-lineG" round @click="save">{{ language==0?'确定修改':'Save' }}</el-button>
45 </div> 45 </div>
46 46
47 </div> 47 </div>
...@@ -62,6 +62,10 @@ const props = defineProps({ ...@@ -62,6 +62,10 @@ const props = defineProps({
62 form:{ 62 form:{
63 type:Object, 63 type:Object,
64 required:true 64 required:true
65 },
66 language:{
67 type:Number,
68 required:true
65 } 69 }
66 }) 70 })
67 const countryList = ref([]) 71 const countryList = ref([])
......
...@@ -3,12 +3,7 @@ ...@@ -3,12 +3,7 @@
3 3
4 <div class="box ph-30"> 4 <div class="box ph-30">
5 <el-card> 5 <el-card>
6 <el-steps :active="activeStep" align-center> 6 <team-sign-step :activeStep="activeStep" :language="language"/>
7 <el-step :title="language==0?'团队信息':'Team Information'" />
8 <el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" />
9 <el-step :title="language==0?'选手报名':'Participant Registration'" />
10 <el-step :title="language==0?'提交审核':'Submit for review'" />
11 </el-steps>
12 </el-card> 7 </el-card>
13 8
14 <el-row class="mt20" :gutter="20"> 9 <el-row class="mt20" :gutter="20">
...@@ -17,7 +12,9 @@ ...@@ -17,7 +12,9 @@
17 <template #header> 12 <template #header>
18 <div class="card-header"> 13 <div class="card-header">
19 <img src="@/assets/sign/tag01.png"/> 14 <img src="@/assets/sign/tag01.png"/>
20 教练<span class="tip">(教练/领队,至少选择一项)</span> 15 {{ language==0?'教练':'Coach' }}
16 <span class="tip" v-if="language==0">(教练/领队,至少选择一项)</span>
17 <span class="tip" v-else>(Coach/Team Leader, select at least one)</span>
21 </div> 18 </div>
22 </template> 19 </template>
23 <div class="chooseForm"> 20 <div class="chooseForm">
...@@ -40,7 +37,9 @@ ...@@ -40,7 +37,9 @@
40 <template #header> 37 <template #header>
41 <div class="card-header"> 38 <div class="card-header">
42 <img src="@/assets/sign/tag02.png"/> 39 <img src="@/assets/sign/tag02.png"/>
43 领队<span class="tip">(教练/领队,至少选择一项)</span> 40 {{ language==0?'领队':'Team leader' }}
41 <span class="tip" v-if="language==0">(教练/领队,至少选择一项)</span>
42 <span class="tip" v-else>(Coach/Team Leader, select at least one)</span>
44 </div> 43 </div>
45 </template> 44 </template>
46 <div class="chooseForm"> 45 <div class="chooseForm">
...@@ -63,7 +62,7 @@ ...@@ -63,7 +62,7 @@
63 <template #header> 62 <template #header>
64 <div class="card-header"> 63 <div class="card-header">
65 <img src="@/assets/sign/tag03.png"/> 64 <img src="@/assets/sign/tag03.png"/>
66 队医 65 {{ language==0?'队医':'Team doctor' }}
67 </div> 66 </div>
68 </template> 67 </template>
69 <div class="chooseForm"> 68 <div class="chooseForm">
...@@ -86,7 +85,7 @@ ...@@ -86,7 +85,7 @@
86 <template #header> 85 <template #header>
87 <div class="card-header"> 86 <div class="card-header">
88 <img src="@/assets/sign/tag04.png"/> 87 <img src="@/assets/sign/tag04.png"/>
89 翻译 88 {{ language==0?'翻译':'Translator' }}
90 </div> 89 </div>
91 </template> 90 </template>
92 <div class="chooseForm"> 91 <div class="chooseForm">
...@@ -109,7 +108,7 @@ ...@@ -109,7 +108,7 @@
109 <template #header> 108 <template #header>
110 <div class="card-header"> 109 <div class="card-header">
111 <img src="@/assets/sign/tag05.png"/> 110 <img src="@/assets/sign/tag05.png"/>
112 官员 111 {{ language==0?'官员':'Official' }}
113 </div> 112 </div>
114 </template> 113 </template>
115 <div class="chooseForm"> 114 <div class="chooseForm">
...@@ -132,7 +131,7 @@ ...@@ -132,7 +131,7 @@
132 <template #header> 131 <template #header>
133 <div class="card-header"> 132 <div class="card-header">
134 <img src="@/assets/sign/tag06.png"/> 133 <img src="@/assets/sign/tag06.png"/>
135 其他 134 {{ language==0?'其他':'Other' }}
136 </div> 135 </div>
137 </template> 136 </template>
138 <div class="chooseForm"> 137 <div class="chooseForm">
...@@ -153,8 +152,8 @@ ...@@ -153,8 +152,8 @@
153 </el-row> 152 </el-row>
154 <el-card class="mt20"> 153 <el-card class="mt20">
155 <div class="text-center"> 154 <div class="text-center">
156 <el-button type="primary" class="w200px" plain round @click="goPrev()">上一步</el-button> 155 <el-button type="primary" class="w200px" plain round @click="goPrev()">{{ language==0?'上一步':'Go back' }}</el-button>
157 <el-button type="primary" class="btn-lineG w200px" round @click="goNext()">下一步</el-button> 156 <el-button type="primary" class="btn-lineG w200px" round @click="goNext()">{{language==0?'下一步':'Next'}}</el-button>
158 </div> 157 </div>
159 </el-card> 158 </el-card>
160 159
...@@ -171,7 +170,8 @@ import {ref, reactive} from 'vue' ...@@ -171,7 +170,8 @@ import {ref, reactive} from 'vue'
171 import {getCurrentInstance, onMounted} from '@vue/runtime-core' 170 import {getCurrentInstance, onMounted} from '@vue/runtime-core'
172 import * as match from '@/apiPc/match' 171 import * as match from '@/apiPc/match'
173 import dialogAddCoach from './components/addCoach' 172 import dialogAddCoach from './components/addCoach'
174 import cache from '@/utils/cache' 173 import TeamSignStep from './components/teamSignStep'
174 import cache from "@/plugins/cache"
175 const {proxy} = getCurrentInstance() 175 const {proxy} = getCurrentInstance()
176 const router = useRouter() 176 const router = useRouter()
177 const route = useRoute() 177 const route = useRoute()
...@@ -326,7 +326,7 @@ function goNext() { ...@@ -326,7 +326,7 @@ function goNext() {
326 } 326 }
327 }) 327 })
328 }) 328 })
329 } else if (signType.value == '1') { 329 } else {
330 // 团队报名 330 // 团队报名
331 match.groupSignSavePerson(obj).then(res => { 331 match.groupSignSavePerson(obj).then(res => {
332 router.push({ 332 router.push({
......
...@@ -13,21 +13,20 @@ ...@@ -13,21 +13,20 @@
13 :is-show-tip="false" 13 :is-show-tip="false"
14 /> 14 />
15 </el-form-item> 15 </el-form-item>
16 <el-form-item label="姓氏" 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="短名" prop="shortName" required> 19 <el-form-item :label="language==0?'短名':'short name'" prop="shortName" required>
20 <el-input v-model="form.shortName" placeholder="赛事用名"/> 20 <el-input v-model="form.shortName" placeholder="赛事用名"/>
21 </el-form-item> 21 </el-form-item>
22 <el-form-item label="出生日期" prop="birth" required> 22 <el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required>
23 <el-date-picker 23 <el-date-picker
24 v-model="form.birth" 24 v-model="form.birth"
25 style="width: 100%;" 25 style="width: 100%;"
26 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 26 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
27 placeholder="请选择出生日期"
28 /> 27 />
29 </el-form-item> 28 </el-form-item>
30 <el-form-item label="证件类型" prop="idcType" required> 29 <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required>
31 <el-select v-model="form.idcType" style="width: 100%;"> 30 <el-select v-model="form.idcType" style="width: 100%;">
32 <el-option 31 <el-option
33 v-for="item in certificates" 32 v-for="item in certificates"
...@@ -37,17 +36,17 @@ ...@@ -37,17 +36,17 @@
37 /> 36 />
38 </el-select> 37 </el-select>
39 </el-form-item> 38 </el-form-item>
40 <el-form-item label="手机号码" prop="phone" required> 39 <el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required>
41 <el-input v-model="form.phone" type="number"/> 40 <el-input v-model="form.phone" type="number"/>
42 </el-form-item> 41 </el-form-item>
43 </el-col> 42 </el-col>
44 <el-col :lg="12"> 43 <el-col :lg="12">
45 <el-form-item label="所属国家" prop="countryId" required> 44 <el-form-item :label="language==0?'所属国家':'Nationality'" prop="countryId" required>
46 <el-select v-model="form.countryId" style="width: 100%;" @change="changeCountryId"> 45 <el-select v-model="form.countryId" style="width: 100%;" @change="changeCountryId">
47 <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id"/> 46 <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>
48 </el-select> 47 </el-select>
49 </el-form-item> 48 </el-form-item>
50 <el-form-item label="详细地址" prop="address" required> 49 <el-form-item :label="language==0?'详细地址':'Address'" prop="address" required>
51 <el-cascader v-if="form.countryId == 240" 50 <el-cascader v-if="form.countryId == 240"
52 v-model="form.regionId" 51 v-model="form.regionId"
53 style="width: 100%;margin-bottom: 15px" 52 style="width: 100%;margin-bottom: 15px"
...@@ -57,24 +56,24 @@ ...@@ -57,24 +56,24 @@
57 <el-input v-model="form.address" type="textarea" :rows="4"/> 56 <el-input v-model="form.address" type="textarea" :rows="4"/>
58 57
59 </el-form-item> 58 </el-form-item>
60 <el-form-item label="名" prop="ming" required> 59 <el-form-item :label="language==0?'名':'name'" prop="ming" required>
61 <el-input v-model="form.ming"/> 60 <el-input v-model="form.ming"/>
62 </el-form-item> 61 </el-form-item>
63 <el-form-item label="性别" prop="sex"> 62 <el-form-item :label="language==0?'性别':'sex'" prop="sex">
64 <el-radio-group v-model="form.sex"> 63 <el-radio-group v-model="form.sex">
65 <el-radio label="0"></el-radio> 64 <el-radio label="0">{{ language==0?'女':'female' }}</el-radio>
66 <el-radio label="1"></el-radio> 65 <el-radio label="1">{{ language==0?'男':'male' }}</el-radio>
67 </el-radio-group> 66 </el-radio-group>
68 </el-form-item> 67 </el-form-item>
69 <el-form-item label="邮箱" prop="idcCode" required> 68 <el-form-item :label="language==0?'邮箱':'Email'" prop="idcCode" required>
70 <el-input v-model="form.email"/> 69 <el-input v-model="form.email"/>
71 </el-form-item> 70 </el-form-item>
72 <el-form-item label="证件号码" prop="idcCode" required> 71 <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required>
73 <el-input v-model="form.idcCode" @blur="checkCode"/> 72 <el-input v-model="form.idcCode" @blur="checkCode"/>
74 </el-form-item> 73 </el-form-item>
75 <el-form-item label="主要会员角色" prop="labelArr"> 74 <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr">
76 <el-select v-model="form.labelArr" multiple @change="labelvalue"> 75 <el-select v-model="form.labelArr" multiple @change="labelvalue">
77 <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="l.label"/> 76 <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/>
78 </el-select> 77 </el-select>
79 </el-form-item> 78 </el-form-item>
80 </el-col> 79 </el-col>
...@@ -82,7 +81,7 @@ ...@@ -82,7 +81,7 @@
82 </el-form> 81 </el-form>
83 <template #footer> 82 <template #footer>
84 <div class="dialog-footer text-center"> 83 <div class="dialog-footer text-center">
85 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">确定</el-button> 84 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ language==0?'确定':'Save' }}</el-button>
86 </div> 85 </div>
87 </template> 86 </template>
88 </el-dialog> 87 </el-dialog>
...@@ -96,6 +95,8 @@ import {certificates} from '@/assets/lib/nation' ...@@ -96,6 +95,8 @@ import {certificates} from '@/assets/lib/nation'
96 import {ElMessage} from 'element-plus' 95 import {ElMessage} from 'element-plus'
97 import {nationList} from '@/assets/js/data' 96 import {nationList} from '@/assets/js/data'
98 import _ from 'lodash' 97 import _ from 'lodash'
98 import cache from "@/plugins/cache";
99 const language = ref(cache.local.get('language') || 0)
99 100
100 const {proxy} = getCurrentInstance() 101 const {proxy} = getCurrentInstance()
101 const emit = defineEmits(['submitForm']) 102 const emit = defineEmits(['submitForm'])
...@@ -122,13 +123,14 @@ const data = reactive({ ...@@ -122,13 +123,14 @@ const data = reactive({
122 show: false, 123 show: false,
123 countryList: [], 124 countryList: [],
124 regionsList: [], 125 regionsList: [],
125 labels: [{value: '0', label: '运动员'}, 126 labels: [
126 {value: '1', label: '教练'}, 127 {value: '0', label: '运动员', enlabel: 'Sportsman'},
127 {value: '2', label: '领队'}, 128 {value: '1', label: '教练', enlabel: 'Coach'},
128 {value: '3', label: '队医'}, 129 {value: '2', label: '领队', enlabel: 'Leader'},
129 {value: '4', label: '翻译'}, 130 {value: '3', label: '队医', enlabel: 'Nurse'},
130 {value: '5', label: '官员'}, 131 {value: '4', label: '翻译', enlabel: 'Translator'},
131 {value: '6', label: '其他'} 132 {value: '5', label: '官员', enlabel: 'Official'},
133 {value: '6', label: '其他', enlabel: 'Other'}
132 ], 134 ],
133 title: '添加选手信息', 135 title: '添加选手信息',
134 groupId: '0', 136 groupId: '0',
......
1 <template> 1 <template>
2 <el-dialog v-model="show" :title="title" width="1000px" append-to-body> 2 <el-dialog v-model="show" :title="title" width="1000px" append-to-body>
3 <div class="funcBtns"> 3 <div class="funcBtns">
4 <el-button type="primary" @click="addMember">添加选手</el-button> 4 <el-button type="primary" @click="addMember">
5 <el-button type="primary" plain @click="importSportman">导入选手</el-button> 5 {{ language == 0 ? '添加选手' : 'Add Player' }}
6 </el-button>
7 <el-button type="primary" plain @click="importSportman">
8 {{language == 0 ? '导入选手' : 'Import Player'}}
9 </el-button>
6 </div> 10 </div>
7 <div class="from-Card"> 11 <div class="from-Card">
8 <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small"> 12 <el-form :inline="true" :model="query" class="mt20" label-width="60" size="small">
9 <el-form-item label="姓名"> 13 <el-form-item :label="language==0?'姓名':'Name'">
10 <el-input v-model="query.realName" style="width: 120px;" clearable/> 14 <el-input v-model="query.realName" style="width: 120px;" clearable/>
11 </el-form-item> 15 </el-form-item>
12 <el-form-item label="短名"> 16 <el-form-item :label="language==0?'短名':'Short Name'">
13 <el-input v-model="query.shortName" style="width: 120px;" clearable/> 17 <el-input v-model="query.shortName" style="width: 120px;" clearable/>
14 </el-form-item> 18 </el-form-item>
15 <el-form-item label="手机号码"> 19 <el-form-item :label="language==0?'手机号码':'Phone Number'">
16 <el-input v-model="query.phone" style="width: 120px;" clearable/> 20 <el-input v-model="query.phone" style="width: 120px;" clearable/>
17 </el-form-item> 21 </el-form-item>
18 <el-form-item label="邮箱"> 22 <el-form-item :label="language==0?'邮箱':'E-mail'">
19 <el-input v-model="query.email" style="width: 120px;" clearable/> 23 <el-input v-model="query.email" style="width: 120px;" clearable/>
20 </el-form-item> 24 </el-form-item>
21 <el-form-item label="证件类型"> 25 <el-form-item :label="language==0?'证件类型':'ID Type'">
22 <el-input v-model="query.idcType" style="width: 120px;" clearable/> 26 <el-input v-model="query.idcType" style="width: 120px;" clearable/>
23 </el-form-item> 27 </el-form-item>
24 <el-form-item label="证件号"> 28 <el-form-item :label="language==0?'证件号码':'ID NO.'">
25 <el-input v-model="query.idcode" style="width: 120px;" clearable/> 29 <el-input v-model="query.idcode" style="width: 120px;" clearable/>
26 </el-form-item> 30 </el-form-item>
27 <el-form-item label="角色"> 31 <!-- <el-form-item label="角色">-->
28 <el-input v-model="query.label" style="width: 120px;" clearable/> 32 <!-- <el-input v-model="query.label" style="width: 120px;" clearable/>-->
29 </el-form-item> 33 <!-- </el-form-item>-->
30 <el-form-item> 34 <el-form-item>
31 <el-button type="primary" @click="getList">查询</el-button> 35 <el-button type="primary" @click="getList">{{language==0?'查询':'Search'}}</el-button>
32 </el-form-item> 36 </el-form-item>
33 </el-form> 37 </el-form>
34 </div> 38 </div>
35 <p v-if="noPhotoCanSign == 0" class="text-danger">*需上传照片才可报名</p> 39 <p v-if="noPhotoCanSign == 0" class="text-danger">*需上传照片才可报名</p>
36 <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh" 40 <el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh"
37 @selection-change="handleSelectionChange"> 41 @selection-change="handleSelectionChange">
38 <el-table-column type="selection" label="选择" :selectable="selectable"/> 42 <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>
39 <el-table-column label="所属国家" prop="countryName"/> 43 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
40 <el-table-column label="姓氏" prop="xing"/> 44 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
41 <el-table-column label="名" prop="ming"/> 45 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
42 <el-table-column label="短名" prop="shortName"/> 46 <el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/>
43 <el-table-column label="性别" prop="sexStr"/> 47 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
44 <el-table-column label="年龄" prop="age"/> 48 <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>
45 <el-table-column label="出生日期" prop="birth" width="100"/> 49 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/>
46 <el-table-column label="手机号码" prop="phone" width="120"/> 50 <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/>
47 <el-table-column label="邮箱" prop="email" width="150"/> 51 <el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/>
48 <el-table-column label="证件类型" prop="idcTypeStr"/> 52 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/>
49 <el-table-column label="证件号码" prop="idcCode" width="200"/> 53 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/>
50 <el-table-column label="会员角色" width="200"> 54 <!-- <el-table-column label="会员角色" width="200">-->
51 <template #default="scope"> 55 <!-- <template #default="scope">-->
52 <div> 56 <!-- <div>-->
53 <div style="white-space: nowrap" class="esp"> 57 <!-- <div style="white-space: nowrap" class="esp">-->
54 <span v-for="item in scope.row.label?.split(',')" :key="item.id"> 58 <!-- <span v-for="item in scope.row.label?.split(',')" :key="item.id">-->
55 <el-tag type="warning" size="small" v-if="item==='0'" effect="plain" class="ml10">运动员</el-tag> 59 <!-- <span v-if="item==='0'" class="ml5">{{ language==0?'运动员':'athletes' }}</span>-->
56 <el-tag type="warning" size="small" v-if="item==='1'" effect="plain" class="ml10">教练</el-tag> 60 <!-- <span v-if="item==='1'" class="ml5">{{ language==0?'教练':'coach' }}</span>-->
57 <el-tag type="warning" size="small" v-if="item==='2'" effect="plain" class="ml10">领队</el-tag> 61 <!-- <span v-if="item==='2'" class="ml5">{{ language==0?'领队':'team leader' }}</span>-->
58 <el-tag type="warning" size="small" v-if="item==='3'" effect="plain" class="ml10">队医</el-tag> 62 <!-- <span v-if="item==='3'" class="ml5">{{ language==0?'队医':'team doctor' }}</span>-->
59 <el-tag type="warning" size="small" v-if="item==='4'" effect="plain" class="ml10">翻译</el-tag> 63 <!-- <span v-if="item==='4'" class="ml5">{{ language==0?'翻译':'translator' }}</span>-->
60 <el-tag type="warning" size="small" v-if="item==='5'" effect="plain" class="ml10">官员</el-tag> 64 <!-- <span v-if="item==='5'" class="ml5">{{ language==0?'官员':'official' }}</span>-->
61 <el-tag type="warning" size="small" v-if="item==='6'" effect="plain" class="ml10">其他</el-tag> 65 <!-- <span v-if="item==='6'" class="ml5">{{ language==0?'其他':'other' }}</span>-->
62 </span> 66 <!-- </span>-->
63 </div> 67 <!-- </div>-->
64 </div> 68 <!-- </div>-->
65 </template> 69 <!-- </template>-->
66 </el-table-column> 70 <!-- </el-table-column>-->
67 <el-table-column label="详细地址" prop="address"/> 71 <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>
68 72 <el-table-column :label="language==0?'操作':'Actions'" width="120" fixed="right" align="center">
69 <el-table-column label="操作" width="120" fixed="right" align="center">
70 <template #default="scope"> 73 <template #default="scope">
71 <el-button type="text" @click="editPerson(scope.row)">编辑</el-button> 74 <el-button type="text" @click="editPerson(scope.row)">
75 {{language==0?'编辑':'Edit'}}
76 </el-button>
72 </template> 77 </template>
73 </el-table-column> 78 </el-table-column>
74 </el-table> 79 </el-table>
75 <template #footer> 80 <template #footer>
76 <div class="dialog-footer text-center"> 81 <div class="dialog-footer text-center">
77 <el-button type="primary" @click="submitForm">确定</el-button> 82 <el-button type="primary" @click="submitForm">{{language==0?'确定':'Confirm'}}</el-button>
78 <el-button @click="cancel">取 消</el-button> 83 <el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button>
79 </div> 84 </div>
80 </template> 85 </template>
81 </el-dialog> 86 </el-dialog>
...@@ -91,6 +96,9 @@ import * as match from '@/apiPc/match' ...@@ -91,6 +96,9 @@ import * as match from '@/apiPc/match'
91 import addCoach from '../components/addCoach' 96 import addCoach from '../components/addCoach'
92 import {getGroupPersonList} from "@/apiPc/match"; 97 import {getGroupPersonList} from "@/apiPc/match";
93 import Import from '../components/import' 98 import Import from '../components/import'
99 import cache from "@/plugins/cache";
100
101 const language = ref(cache.local.get('language') || 0)
94 102
95 const {proxy} = getCurrentInstance() 103 const {proxy} = getCurrentInstance()
96 const emit = defineEmits(['submitForm', 'transfer']) 104 const emit = defineEmits(['submitForm', 'transfer'])
...@@ -109,6 +117,7 @@ let groupId ...@@ -109,6 +117,7 @@ let groupId
109 let choosedList = [] 117 let choosedList = []
110 const choosedIds = [] 118 const choosedIds = []
111 const open = (params) => { 119 const open = (params) => {
120 title.value = params.title
112 matchId = params.matchId 121 matchId = params.matchId
113 groupId = params.groupId 122 groupId = params.groupId
114 noPhotoCanSign.value = params.noPhotoCanSign 123 noPhotoCanSign.value = params.noPhotoCanSign
......
1 <template>
2 <div class="border-info" style="margin: 20px">
3 <el-row>
4 <el-col :lg="8">
5 <div class="item"><label>{{ language == 0 ? '教练' : 'Coach' }}</label>
6 <span v-for="c in names.coachList">{{ c.shortName }}</span>
7 </div>
8 <div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label>
9 <span v-for="c in names.translatorList">{{ c.shortName }}</span>
10 </div>
11 </el-col>
12 <el-col :lg="8">
13 <div class="item">
14 <label>{{ language == 0 ? '领队' : 'Team leader' }}</label>
15 <span v-for="c in names.leaderList">{{ c.shortName }}</span>
16 </div>
17 <div class="item">
18 <label>{{ language == 0 ? '官员' : 'Official' }}</label>
19 <span class="mr5" v-for="c in names.officialList">{{ c.shortName }}</span>
20 <span v-if="!names.officialList">--</span>
21 </div>
22 </el-col>
23 <el-col :lg="8">
24 <div class="item">
25 <label>{{ language == 0 ? '队医' : 'Team doctor' }}</label>
26 <span class="mr5" v-for="c in names.teamDoctorList">
27 {{ c.shortName }}
28 </span>
29 </div>
30 <div class="item">
31 <label>{{ language == 0 ? '其他' : 'Other' }}</label>
32 <span class="mr5" v-for="c in names.otherList">
33 {{ c.shortName }}
34 </span>
35 </div>
36 </el-col>
37 </el-row>
38 </div>
39 </template>
40
41 <script setup>
42 const props = defineProps({
43 names: {
44 type: Object,
45 required: true
46 },
47 language: {
48 type: Number,
49 required: true,
50 default: 0
51 }
52 })
53 </script>
54
55 <style scoped lang="scss">
56 .border-info {
57 .item {
58 margin: 5px 0;
59 color: #4C5359;
60 font-size: 14px;
61
62 label {
63 font-size: 14px;
64 margin-right: 14px
65 }
66 }
67 }
68 </style>
1 <template>
2 <div class="border-info gray" style="margin: 20px">
3 <el-row>
4 <el-col :lg="8">
5 <el-row :gutter="15">
6 <el-col :span="4">
7 <img class="w100" :src="fillImgUrl(groupInfo.imgUrl)"/>
8 </el-col>
9 <el-col :span="20">
10 <div class="item"><label>{{ language==0?'团体名称':'Team Name' }}</label>{{ groupInfo.name }}</div>
11 <div class="item"><label>{{ language==0?'团体类型':'Group type' }}</label>{{ groupInfo.typeStr }}</div>
12 </el-col>
13 </el-row>
14 </el-col>
15 <el-col :lg="8">
16 <div class="item"><label>{{ language==0?'负责人姓名':'Contact Person' }}</label>{{ groupInfo.contactPerson }}</div>
17 <div class="item"><label>{{ language==0?'参赛队名称':'Name of participating team' }}</label>{{ groupInfo.abreviations }}</div>
18
19 </el-col>
20 <el-col :lg="8">
21 <div class="item"><label>{{ language==0?'邮箱':'Email' }}</label>{{ groupInfo.contactEmail }}</div>
22 <div class="item"><label>{{ language==0?'详细地址':'Detailed Address' }}</label>{{ groupInfo.address }}</div>
23 </el-col>
24 </el-row>
25 </div>
26 </template>
27
28 <script setup>
29 const props = defineProps({
30 groupInfo: {
31 type: Object,
32 required: true
33 },
34 language: {
35 type: Number,
36 required: true,
37 default: 0
38 }
39 })
40 </script>
41
42 <style scoped lang="scss">
43 .border-info{
44 .item{margin: 5px 0;color: #4C5359; font-size: 14px;
45 label{font-size: 14px;margin-right: 14px}
46 }
47 }
48 </style>
1 <template>
2 <div class="border-info" style="margin: 20px">
3 <el-row v-if="language==0">
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>
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>
8 <el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col>
9 </el-row>
10 <el-row v-else>
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>
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>
15 <el-col :lg="16"><div class="item"><label>Event Address</label>{{matchInfo.address}}</div></el-col>
16 </el-row>
17 </div>
18 </template>
19
20 <script setup>
21 const props = defineProps({
22 matchInfo: {
23 type: Object,
24 required: true
25 },
26 language: {
27 type: Number,
28 required: true,
29 default: 0
30 }
31 })
32 </script>
33
34 <style scoped lang="scss">
35 .border-info{
36 .item{margin: 5px 0;color: #4C5359; font-size: 14px;
37 label{font-size: 14px;margin-right: 14px}
38 }
39 }
40 </style>
1 <template> 1 <template>
2 <div style="padding: 0 20px 20px"> 2 <div style="padding: 30px 20px 20px">
3 <!--日程--> 3 <!--日程-->
4 <el-timeline> 4 <el-timeline>
5 <el-timeline-item 5 <el-timeline-item
......
1 <template> 1 <template>
2 <!-- 人员表格--> 2 <!-- 人员表格-->
3 <el-table :data="tableData" class="mt20"> 3 <el-table :data="tableData" class="mt20">
4 <el-table-column type="index" label="序号" width="80" align="center"/> 4 <el-table-column type="index" :label="language==0?'序号':'index'" width="80" align="center"/>
5 <el-table-column label="所属国家" prop="countryName"/> 5 <el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
6 <el-table-column label="姓氏" prop="xing"/> 6 <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
7 <el-table-column label="名" prop="ming"/> 7 <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
8 <el-table-column label="短名" prop="shortName"/> 8 <el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/>
9 <el-table-column label="性别" prop="sexStr"/> 9 <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
10 <el-table-column label="年龄" prop="age"/> 10 <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>
11 <el-table-column label="出生日期" prop="birth" width="100"/> 11 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/>
12 <el-table-column label="手机号码" prop="phone" width="120"/> 12 <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/>
13 <el-table-column label="邮箱" prop="email" width="150"/> 13 <el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/>
14 <el-table-column label="证件类型" prop="idcTypeStr"/> 14 <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/>
15 <el-table-column label="证件号码" prop="idcCode" width="200"/> 15 <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/>
16 <el-table-column label="会员角色"> 16 <el-table-column :label="language==0?'会员角色':'Role'" width="150">
17 <template #default="scope"> 17 <template #default="scope">
18 <span v-for="item in scope.row.label?.split(',')" :key="item.id"> 18 <div class="esp">
19 <el-tag type="primary" size="mini" v-if="item==='0'" effect="dark" class="ml10">运动员</el-tag> 19 <span v-for="item in scope.row.label?.split(',')" :key="item.id" class="text-primary">
20 <el-tag type="info" size="mini" v-if="item==='1'" effect="dark" class="ml10">教练</el-tag> 20 <span v-if="item==='0'" class="ml5">{{ language==0?'运动员':'athletes' }}</span>
21 <el-tag type="info" size="mini" v-if="item==='2'" effect="dark" class="ml10">领队</el-tag> 21 <span v-if="item==='1'" class="ml5">{{ language==0?'教练':'coach' }}</span>
22 <el-tag type="info" size="mini" v-if="item==='3'" effect="dark" class="ml10">队医</el-tag> 22 <span v-if="item==='2'" class="ml5">{{ language==0?'领队':'team leader' }}</span>
23 <el-tag type="info" size="mini" v-if="item==='4'" effect="dark" class="ml10">翻译</el-tag> 23 <span v-if="item==='3'" class="ml5">{{ language==0?'队医':'team doctor' }}</span>
24 <el-tag type="info" size="mini" v-if="item==='5'" effect="dark" class="ml10">官员</el-tag> 24 <span v-if="item==='4'" class="ml5">{{ language==0?'翻译':'translator' }}</span>
25 <el-tag type="info" size="mini" v-if="item==='6'" effect="dark" class="ml10">其他</el-tag> 25 <span v-if="item==='5'" class="ml5">{{ language==0?'官员':'official' }}</span>
26 <span v-if="item==='6'" class="ml5">{{ language==0?'其他':'other' }}</span>
26 </span> 27 </span>
28 </div>
27 </template> 29 </template>
28 </el-table-column> 30 </el-table-column>
29 <el-table-column label="详细地址" prop="address"/> 31 <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>
30 <el-table-column label="操作" fixed="right" width="160" header-align="center" align="center"> 32 <el-table-column :label="language==0?'操作':'Actions'" fixed="right" width="160" header-align="center"
33 align="center">
31 <template #default="scope"> 34 <template #default="scope">
32 <a class="text-primary pd10" @click="editCoach(scope.row.id,scope.row.groupId)">编辑</a> 35 <a class="text-primary pd10" @click="editCoach(scope.row)">
33 <a class="text-primary pd10" @click="delperson(scope.row)">删除</a> 36 {{language==0?'编辑':'Edit'}}
37 </a>
38 <a class="text-primary pd10" @click="delperson(scope.row)">
39 {{language==0?'删除':'Delete'}}
40 </a>
34 </template> 41 </template>
35 </el-table-column> 42 </el-table-column>
36 </el-table> 43 </el-table>
37 <!-- <paginationPc--> 44 <!-- <paginationPc-->
38 <!-- v-show="total>0"--> 45 <!-- v-show="total>0"-->
39 <!-- v-model:page="query.pageNum"--> 46 <!-- v-model:page="query.pageNum"-->
40 <!-- v-model:limit="query.pageSize"--> 47 <!-- v-model:limit="query.pageSize"-->
41 <!-- :total="total"--> 48 <!-- :total="total"-->
42 <!-- @pagination="getList"--> 49 <!-- @pagination="getList"-->
43 <!-- />--> 50 <!-- />-->
44 </template> 51 </template>
45 52
46 <script setup> 53 <script setup>
54 import {ref} from "vue";
55 import cache from "@/plugins/cache";
56 const language = ref(cache.local.get('language') || 0)
57 const emit = defineEmits(['edit', 'delete'])
58 let title = ''
47 const props = defineProps({ 59 const props = defineProps({
48 tableData:{ 60 tableData: {
49 type:Array, 61 type: Array,
50 required:true 62 required: true
51 } 63 }
52 }) 64 })
53 const editCoach = () => { 65 const editCoach = (row) => {
66 // scope.row.id,scope.row.groupId
67 title = (language.value==0?'编辑人员':'Edit')
68 emit('edit', row,title)
69 }
70 const delperson = (row) => {
71 emit('delete', row)
54 72
55 } 73 }
56 </script> 74 </script>
......
1 <template>
2 <div class="pd20">
3 <div class="matchItem" v-for="n in list" :key="n.id" @click="goDetail(n.id)">
4 <el-row :gutter="15">
5 <el-col :lg="7" :md="24" :xl="6">
6 <img class="mauto w100" :src="fillImgUrl(n.coverUrl)">
7 </el-col>
8 <el-col :lg="10" :md="12" :xl="12">
9 <div class="info">
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>
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>
14
15 <p class="ppl"><label>{{ language==0?'联系人员':'Contact Person' }}</label>{{ n.contactPerson }}</p>
16 <p class="ppl"><label>{{ language==0?'联系电话':'Phone' }}</label>{{ n.contactTelno }}</p>
17 <p class="ppl"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'E-mail' }}</label>{{ n.contactEmail }}</p>
18
19 </div>
20 </el-col>
21 <el-col :lg="7" :md="12" :xl="6">
22 <p class="countDownTitle">
23 <span v-if="language==0">报名截止倒计时</span>
24 <span v-else>Registration deadline countdown</span>
25 </p>
26 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
27 <template #default="timeData">
28 <span class="block">{{ timeData.days }}</span>
29 <span class="colon">{{ language==0?'天':'Days' }}</span>
30 <span class="block">{{ timeData.hours }}</span>
31 <span class="colon">{{ language==0?'时':'Hrs' }}</span>
32 <span class="block">{{ timeData.minutes }}</span>
33 <span class="colon">{{ language==0?'分':'Min' }}</span>
34 <span class="block">{{ timeData.seconds }}</span>
35 <span class="colon">{{ language==0?'秒':'Sec' }}</span>
36 </template>
37 </van-count-down>
38
39 <div class="text-center mt30">
40 <a class="btn-lineG mb20 mauto" style="display: block;">
41 {{ language==0?'我要报名':'Application' }}</a>
42 </div>
43 </el-col>
44 </el-row>
45 </div>
46 </div>
47
48 <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0" description=" "/>
49 </template>
50
51 <script setup>
52 import {ref} from "vue";
53 import {onMounted} from "@vue/runtime-core";
54 import {dayjs} from "element-plus"
55 import cache from "@/plugins/cache"
56 const language = ref(cache.local.get('language') || 0)
57
58 const router = useRouter()
59 const time = ref(0)
60 const props = defineProps({
61 list: {
62 type: Array,
63 required: true
64 }
65 })
66 onMounted(()=>{
67 for(let n of props.list){
68 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
69 n.time = dayjs(n.signEndTime).diff(today, 'millisecond')
70 }
71 })
72 function goDetail(id) {
73 const routeData = router.resolve({
74 path: `${id}`
75 })
76 window.open(routeData.href, '_blank')
77 }
78 </script>
79
80 <style scoped lang="scss">
81 .mt60{margin-top: 60px}
82 .matchItem {
83 cursor: pointer;margin: 0 0 20px;padding: 0 0 20px;
84 background: #FFFFFF;border-bottom: 1px solid #e5e5e5;
85 position: relative;
86 &:last-child {
87 border-bottom: none;
88 }
89 .el-avatar {
90 position: absolute;
91 left: 20px;
92 top: 30px;
93
94 img {
95 background: #fff;
96 }
97 }
98
99 .info {
100 p {
101 font-size: 14px;
102 }
103 }
104
105 .typeTag {
106 position: absolute;
107 right: 0;
108 top: 0;
109 }
110
111 h3 {
112 font-weight: 500;margin: 0 0 10px;
113 font-size: 18px;
114 color: #000000;
115 text-overflow: ellipsis;
116 }
117
118 &:hover h3 {
119 color: var(--el-color-primary);
120 }
121 }
122 .countDownTitle {
123 text-align: center;
124 color: #525F6B;
125 position: relative;
126 width: 100%;
127 left: 0;
128 font-size: 14px;
129 }
130
131 .countDownTitle span {
132 background: #fff;
133 padding: 0 10px;
134 position: relative;
135 z-index: 1;
136 }
137
138 .countDownTitle::after {
139 position: absolute;
140 background: #ccc;
141 height: 1px;
142 content: '';
143 top: 0;
144 bottom: 0;
145 margin: auto;
146 width: 100%;
147 left: 0;
148 }
149 .info .ppl{margin: 5px 0;}
150 .ppl{color: #29343C;
151 label{color: #929AA0;}
152 }
153 .van-count-down {
154 text-align: center;
155 margin: 20px 0;
156 }
157
158 .colon {
159 display: inline-block;
160 font-size: 16px;
161 margin: 0 8px;
162 color: #7B7F83;
163 }
164
165 .block {
166 display: inline-block; opacity: 0.7;
167 width: 52px;
168 color: #fff;
169 font-size: 26px;
170 font-weight: bold;
171 border-radius: 10px;
172 background: url(@/assets/img/djs_bg.png) left;
173 background-size: 100% 100%;
174 line-height: 50px;
175 text-align: center;
176 }
177
178 </style>
1 <template>
2 <el-steps :active="activeStep" align-center>
3 <el-step :title="language==0?'团队信息':'Team Information'" />
4 <el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" />
5 <el-step :title="language==0?'选手报名':'Participant Registration'" />
6 <el-step :title="language==0?'提交审核':'Submit for review'" />
7 </el-steps>
8 </template>
9
10 <script setup>
11 const props = defineProps({
12 activeStep: {
13 type: Number,
14 required: true
15 },
16 language: {
17 type: Number,
18 required: true,
19 default: 0
20 }
21 })
22 </script>
23
24 <style scoped>
25
26 </style>
...@@ -275,7 +275,7 @@ onMounted(() => { ...@@ -275,7 +275,7 @@ onMounted(() => {
275 }) 275 })
276 function getTotalFee() { 276 function getTotalFee() {
277 match.getTotalFee({ 277 match.getTotalFee({
278 entryId: entryId, 278 entryId: groupId,
279 cptId: cptId 279 cptId: cptId
280 }).then(res => { 280 }).then(res => {
281 form.value = res.data 281 form.value = res.data
......
...@@ -2,72 +2,13 @@ ...@@ -2,72 +2,13 @@
2 <div> 2 <div>
3 <div class="box ph-30"> 3 <div class="box ph-30">
4 <el-card class="mb20"> 4 <el-card class="mb20">
5 <el-steps :active="activeStep" align-center> 5 <team-sign-step :language="language" :active-step="activeStep"/>
6 <el-step title="团队信息"/>
7 <el-step title="教练/领队/其他"/>
8 <el-step title="选手报名"/>
9 <el-step title="提交审核"/>
10 </el-steps>
11 </el-card> 6 </el-card>
12 <el-card> 7 <el-card :body-style="{ padding: '0px' }">
13 <div class="border-info"> 8 <match-info-row :matchInfo="matchInfo" :language="language"/>
14 <el-row> 9 <group-info-row :groupInfo="groupInfo" :language="language"/>
15 <el-col :lg="8"> 10 <coach-info-row :names="names" :language="language"/>
16 <div class="item"><label>赛事名称</label>{{ matchInfo.name }}</div> 11 <div style="margin: 20px">
17 </el-col>
18 <el-col :lg="8">
19 <div class="item"><label>赛事类型</label>{{ matchInfo.name }}</div>
20 </el-col>
21 <el-col :lg="8">
22 <div class="item"><label>赛事时间</label>{{ matchInfo.beginTime?.slice(0, 10) }}
23 {{ matchInfo.endTime?.slice(0, 10) }}
24 </div>
25 </el-col>
26 <el-col :lg="8">
27 <div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0, 10) }}
28 {{ matchInfo.signEndTime?.slice(0, 10) }}
29 </div>
30 </el-col>
31 <el-col :lg="16">
32 <div class="item"><label>比赛地址</label>{{ matchInfo.address }}</div>
33 </el-col>
34 </el-row>
35
36 </div>
37 <div class="border-info gray mt20">
38 <el-row>
39 <el-col :lg="8">
40 <img/>
41 <div class="item"><label>团队名称</label>{{ matchInfo.signFee }}</div>
42 <div class="item"><label>团队类型</label>{{ matchInfo.signFee }}</div>
43 </el-col>
44 <el-col :lg="8">
45 <div class="item"><label>负责人姓名</label>{{ matchInfo.signFee }}</div>
46 <div class="item"><label>参赛队名称</label>{{ matchInfo.signFee }}</div>
47
48 </el-col>
49 <el-col :lg="8">
50 <div class="item"><label>邮箱</label>{{ matchInfo.signFee }}</div>
51 <div class="item"><label>详细地址</label>{{ matchInfo.signFee }}</div>
52 </el-col>
53 </el-row>
54 </div>
55 <div class="border-info mt20">
56 <el-row>
57 <el-col :lg="8">
58 <div class="item"><label>教练</label>{{ matchInfo.signFee }}</div>
59 <div class="item"><label>翻译</label>{{ matchInfo.signFee }}</div>
60 </el-col>
61 <el-col :lg="8">
62 <div class="item"><label>领队</label>{{ matchInfo.signFee }}</div>
63 <div class="item"><label>官员</label>{{ matchInfo.signFee }}</div>
64 </el-col>
65 <el-col :lg="8">
66 <div class="item"><label>队医</label>{{ matchInfo.signFee }}</div>
67 <div class="item"><label>其他</label>{{ matchInfo.signFee }}</div>
68 </el-col>
69 </el-row>
70 </div>
71 12
72 <div class="mt20"> 13 <div class="mt20">
73 <div class="leftboderTT">参赛人员清单</div> 14 <div class="leftboderTT">参赛人员清单</div>
...@@ -115,6 +56,7 @@ ...@@ -115,6 +56,7 @@
115 </el-table-column> 56 </el-table-column>
116 </el-table> 57 </el-table>
117 </div> 58 </div>
59 </div>
118 60
119 61
120 </el-card> 62 </el-card>
...@@ -143,9 +85,68 @@ ...@@ -143,9 +85,68 @@
143 </template> 85 </template>
144 86
145 <script setup> 87 <script setup>
88 import TeamSignStep from './components/teamSignStep'
89 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"
90 import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row"
91 import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row"
92
146 import {ref} from "vue" 93 import {ref} from "vue"
94 import cache from "@/plugins/cache";
95 import {onMounted} from "@vue/runtime-core";
96 import * as match from "@/apiPc/match"
97 import {useRoute, useRouter} from "vue-router";
98 import useUserStore from "@/store/modules/user";
99 const route = useRoute()
100 const router = useRouter()
147 const activeStep = ref(3) 101 const activeStep = ref(3)
148 const matchInfo = ref({}) 102 const matchInfo = ref({})
103 const groupInfo = useUserStore().group || {}
104 const language = ref(cache.local.get('language') || 0)
105 const groupId = ref()
106 const form = ref({})
107 const matchId = ref()
108 const names = ref({})
109 onMounted(()=>{
110 console.log(route.query)
111 groupId.value = route.query.groupId || 0
112 matchId.value = route.query.matchId
113 getMatch()
114 getFee()
115 if(groupId.value!=0){
116 tuandui()
117 } else {
118 geren()
119 }
120 })
121 const getMatch = () => {
122 match.getMatchById({ id: matchId.value }).then(res => {
123 matchInfo.value = res.data
124 })
125 }
126 function geren() {
127 match.getChooseDoneSingleCoachs(matchId.value).then(res => {
128 names.value = res.data
129 })
130 }
131
132 function tuandui() {
133 match.getChooseDoneGroupCoachs(matchId.value, groupId.value).then(res => {
134 names.value = res.data
135 })
136 }
137 const goPrev = () => {
138 router.go(-1)
139 }
140 const getFee = () => {
141 console.log(groupId.value)
142
143 match.getTotalFee({
144 entryId: groupId.value,
145 cptId: matchId.value
146 }).then(res => {
147 form.value = res.data
148 })
149 }
149 </script> 150 </script>
150 151
151 <style scoped lang="scss"> 152 <style scoped lang="scss">
...@@ -169,4 +170,9 @@ const matchInfo = ref({}) ...@@ -169,4 +170,9 @@ const matchInfo = ref({})
169 .text-right{text-align: right; 170 .text-right{text-align: right;
170 a{margin-left: 20px;} 171 a{margin-left: 20px;}
171 } 172 }
173 .border-info{
174 .item{margin: 5px 0;color: #4C5359; font-size: 14px;
175 label{font-size: 14px;margin-right: 14px}
176 }
177 }
172 </style> 178 </style>
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
52 </el-form-item> 52 </el-form-item>
53 <el-form-item label="国籍" prop="countryId"> 53 <el-form-item label="国籍" prop="countryId">
54 <el-select v-model="form.countryId" class="m-2" @change="changeCountryId"> 54 <el-select v-model="form.countryId" class="m-2" @change="changeCountryId">
55 <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id" /> 55 <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" />
56 </el-select> 56 </el-select>
57 </el-form-item> 57 </el-form-item>
58 <el-form-item label="民族" prop="nation"> 58 <el-form-item label="民族" prop="nation">
......
...@@ -3,72 +3,56 @@ ...@@ -3,72 +3,56 @@
3 3
4 <div class="box ph-30"> 4 <div class="box ph-30">
5 <el-card> 5 <el-card>
6 <el-steps active="1" align-center> 6 <team-sign-step :language="language" :active-step="0"/>
7 <el-step :title="language==0?'团队信息':'Team Information'" />
8 <el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" />
9 <el-step :title="language==0?'选手报名':'Participant Registration'" />
10 <el-step :title="language==0?'提交审核':'Submit for review'" />
11 </el-steps>
12 </el-card> 7 </el-card>
13 <div class="h20"></div> 8 <div class="h20"></div>
14 <div class="panel" style="box-shadow: var(--el-box-shadow)"> 9 <div class="panel" style="box-shadow: var(--el-box-shadow)">
15 <div class="border-info" style="margin: 20px"> 10 <match-info-row :matchInfo="matchInfo" :language="language"/>
16 <el-row v-if="language==0">
17 <el-col :lg="8"><div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col>
18 <el-col :lg="8"><div class="item"><label>赛事类型</label>{{matchInfo.name}}</div></el-col>
19 <el-col :lg="8"><div class="item"><label>赛事时间</label>{{matchInfo.beginTime?.slice(0,10)}}{{ matchInfo.endTime?.slice(0,10) }}</div></el-col>
20 <el-col :lg="8"><div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0,10) }}{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col>
21 <el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col>
22 </el-row>
23 <el-row v-else>
24 <el-col :lg="8"><div class="item"><label>Event Name</label>{{matchInfo.name}}</div></el-col>
25 <el-col :lg="8"><div class="item"><label>Event Type</label>{{matchInfo.name}}</div></el-col>
26 <el-col :lg="8"><div class="item"><label>Event Date</label>{{matchInfo.beginTime?.slice(0,10)}} ~ {{ matchInfo.endTime?.slice(0,10) }}</div></el-col>
27 <el-col :lg="8"><div class="item"><label>Registration Period</label>{{ matchInfo.signBeginTime?.slice(0,10) }} ~{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col>
28 <el-col :lg="16"><div class="item"><label>Event Address</label>{{matchInfo.address}}</div></el-col>
29 </el-row>
30
31 </div>
32 <div class="h20"></div> 11 <div class="h20"></div>
33 <el-form ref="ruleFormRef" label-width="120px" class="signForm" :model="form" :rules="rules"> 12 <el-form ref="ruleFormRef" label-width="120px" class="signForm"
13 :model="form" :rules="rules"
14 :label-position="language==0?'left':'top'">
34 <el-row> 15 <el-row>
35 <el-col :lg="8" :offset="2"> 16 <el-col :lg="8" :offset="2">
36 <el-form-item label="团体Logo" prop="imgUrl"> 17 <el-form-item :label="language==0?'团体Logo':'Group Logo'" prop="imgUrl">
37 <ImageUpload2 v-model="form.imgUrl" :crop-width="200" :crop-height="200" :limit="1"/> 18 <ImageUpload2 v-model="form.imgUrl" :crop-width="200" :crop-height="200" :limit="1"/>
38 <span class="tip">请上传不超过 <i>5M</i> 的文件 格式为 <i>png/jpg/jpeg</i> 的文件</span> 19 <span class="tip" v-if="language==0">请上传不超过 <i>5M</i> 的文件 格式为 <i>png/jpg/jpeg</i> 的文件</span>
20 <span class="tip" v-else>Please upload a file in the format of
21 <i>png/jpg/jpeg</i> that does not exceed <i>5MB</i>
22 </span>
39 </el-form-item> 23 </el-form-item>
40 </el-col> 24 </el-col>
41 <el-col :lg="10"> 25 <el-col :lg="10">
42 <el-form-item label="团体名称" prop="name"> 26 <el-form-item :label="language==0?'团体名称':'Team Name'" prop="name">
43 <el-input v-model="form.name" placeholder="请输入团体名称" /> 27 <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" />
44 </el-form-item> 28 </el-form-item>
45 <el-form-item label="负责人姓名" prop="contactPerson"> 29 <el-form-item :label="language==0?'负责人姓名':'Contact Person'" prop="contactPerson">
46 <el-input v-model="form.contactPerson" placeholder="请输入联系人" /> 30 <el-input v-model="form.contactPerson" placeholder="请输入联系人" />
47 </el-form-item> 31 </el-form-item>
48 <el-form-item label="邮箱" required prop="contactEmail"> 32 <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail">
49 <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> 33 <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/>
50 </el-form-item> 34 </el-form-item>
51 <el-form-item label="详细地址" required prop="address"> 35 <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address">
52 <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> 36 <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/>
53 </el-form-item> 37 </el-form-item>
54 <el-form-item label="团体类型" prop="type"> 38 <el-form-item :label="language==0?'团体类型':'Group type'" prop="type">
55 <el-select v-model="form.type" placeholder="请选择团体类型" style="width: 100%;"> 39 <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;">
56 <el-option label="普通院校" value="0" /> 40 <el-option :label="language==0?'普通院校':'School'" value="0" />
57 <el-option label="专业舞蹈学校" value="1" /> 41 <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" />
58 <el-option label="培训机构/俱乐部" value="2" /> 42 <el-option :label="language==0?'培训机构/俱乐部':'Company/Club'" value="2" />
59 <el-option label="地方协会" value="3" /> 43 <el-option :label="language==0?'地方协会':'Local Association'" value="3" />
60 <el-option label="国家协会" value="4" /> 44 <el-option :label="language==0?'国家协会':'National Association'" value="4" />
61 </el-select> 45 </el-select>
62 </el-form-item> 46 </el-form-item>
63 <el-form-item label="参赛队名称" required prop="abreviations"> 47 <el-form-item :label="language==0?'参赛队名称':'Name of participating team'" required prop="abreviations">
64 <el-input type="text" v-model="form.abreviations" placeholder="请输入内容"/> 48 <el-input type="text" v-model="form.abreviations" :placeholder="language==0?'请输入内容':''"/>
65 </el-form-item> 49 </el-form-item>
66 50
67 </el-col> 51 </el-col>
68 </el-row> 52 </el-row>
69 <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0"> 53 <el-row v-if="participantsInfoArr&&participantsInfoArr.length>0">
70 <el-col :span="16" :offset="4"> 54 <el-col :span="16" :offset="4">
71 <h3>补充信息</h3> 55 <h3>{{ language==0?'补充信息':'Supplemental information'}}</h3>
72 <el-form-item v-for="(s,index) in participantsInfoArr" :key="index"> 56 <el-form-item v-for="(s,index) in participantsInfoArr" :key="index">
73 <template #label> 57 <template #label>
74 <span v-if="s.status == 0" class="red">*</span>{{ s.name }} 58 <span v-if="s.status == 0" class="red">*</span>{{ s.name }}
...@@ -104,6 +88,9 @@ import { reactive, ref } from 'vue' ...@@ -104,6 +88,9 @@ import { reactive, ref } from 'vue'
104 import { getCurrentInstance, onMounted } from '@vue/runtime-core' 88 import { getCurrentInstance, onMounted } from '@vue/runtime-core'
105 import { useRoute, useRouter } from 'vue-router' 89 import { useRoute, useRouter } from 'vue-router'
106 import { toRefs } from '@vueuse/shared' 90 import { toRefs } from '@vueuse/shared'
91 import TeamSignStep from './components/teamSignStep'
92 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
93
107 import cache from "@/plugins/cache" 94 import cache from "@/plugins/cache"
108 const language = ref(cache.local.get('language') || 0) 95 const language = ref(cache.local.get('language') || 0)
109 96
...@@ -282,11 +269,7 @@ function goNext() { ...@@ -282,11 +269,7 @@ function goNext() {
282 padding: 0; 269 padding: 0;
283 background: #F5F7F9; 270 background: #F5F7F9;
284 } 271 }
285 .border-info{ 272
286 .item{margin: 5px 0;color: #4C5359; font-size: 14px;
287 label{font-size: 14px;margin-right: 14px}
288 }
289 }
290 .panel-footer .el-button--success { 273 .panel-footer .el-button--success {
291 padding: 0 40px; 274 padding: 0 40px;
292 } 275 }
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
5 <!-- 国内-机构注册--> 5 <!-- 国内-机构注册-->
6 <el-card> 6 <el-card>
7 <el-steps :active="activeStep" finish-status="success" align-center> 7 <el-steps :active="activeStep" finish-status="success" align-center>
8 <el-step title="创建账号" /> 8 <el-step title="创建账号"/>
9 <el-step title="注册完成" /> 9 <el-step title="注册完成"/>
10 </el-steps> 10 </el-steps>
11 </el-card> 11 </el-card>
12 12
...@@ -14,12 +14,19 @@ ...@@ -14,12 +14,19 @@
14 <div v-if="activeStep==0"> 14 <div v-if="activeStep==0">
15 <el-card style="min-height: 50vh"> 15 <el-card style="min-height: 50vh">
16 <div class="pt30"> 16 <div class="pt30">
17 <el-form class="d-form" size="large" label-width="120" style="max-width: 500px;margin: auto"> 17 <el-form class="d-form" size="large" label-width="120"
18 style="max-width: 500px;margin: auto">
18 <el-form-item label="WDSF卡号" required> 19 <el-form-item label="WDSF卡号" required>
19 <el-input type="text" v-model="form.WDSF" @change="resetCode" @blur="verifyCode"/> 20 <el-input type="text" v-model="form.WDSF" @change="resetCode(0)" @blur="verifyCode">
21 <template #append>
22 <el-button type="primary" plain style="width: 110px" @click="checkwdsf">
23 <span>校验卡号</span>
24 </el-button>
25 </template>
26 </el-input>
20 </el-form-item> 27 </el-form-item>
21 <el-form-item label="手机/邮箱" required> 28 <el-form-item label="手机/邮箱" required>
22 <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"/> 29 <el-input type="text" v-model="form.account" @change="resetCode(1)" @blur="verifyCode"/>
23 </el-form-item> 30 </el-form-item>
24 <el-form-item label="验证码" required> 31 <el-form-item label="验证码" required>
25 <el-input v-model="form.code"> 32 <el-input v-model="form.code">
...@@ -28,15 +35,10 @@ ...@@ -28,15 +35,10 @@
28 <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false"> 35 <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
29 {{ totalSeconds }} 36 {{ totalSeconds }}
30 </count-down> 37 </count-down>
31 <span v-else> 38 <span v-else>发送验证码</span>
32 发送验证码
33 </span>
34 </el-button> 39 </el-button>
35 </template> 40 </template>
36 </el-input> 41 </el-input>
37 <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">
38 <Vcode :show="isShow" type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode>
39 </div>
40 </el-form-item> 42 </el-form-item>
41 </el-form> 43 </el-form>
42 </div> 44 </div>
...@@ -47,17 +49,98 @@ ...@@ -47,17 +49,98 @@
47 </el-card> 49 </el-card>
48 </div> 50 </div>
49 <div v-if="activeStep==1"> 51 <div v-if="activeStep==1">
52 <Step3 :accont="form.account"/>
50 </div> 53 </div>
51 54
52 55 <Vcode :show="isShow" @success="codeSuccess()"></Vcode>
53 </div> 56 </div>
54 </div> 57 </div>
55 </div> 58 </div>
56 </template> 59 </template>
57 60
58 <script setup> 61 <script setup>
59 import {ref} from "vue" 62 import {ref,toRefs,reactive} from "vue"
60 const activeStep = ref(0) 63 import {onMounted} from "@vue/runtime-core";
64 import Step3 from "./team/step3"
65 import Vcode from "vue3-puzzle-vcode"
66 import { ElMessage } from 'element-plus'
67 import CountDown from '@chenfengyuan/vue-countdown'
68 import cache from '@/plugins/cache'
69 const language = ref(cache.local.get('language') || 0)
70
71 const data = reactive({
72 isShow:false,
73 isCodeTrue:0,
74 counting:false,
75 form:{},
76 activeStep: 0,
77 failVcode:'验证失败,请重试',
78 successVcode:'验证通过!',
79 sliderText: '拖动滑块完成拼图',
80 })
81 const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText} = toRefs(data)
82 onMounted(()=>{
83 if(language.value==1){
84 failVcode.value = 'Error!'
85 successVcode.value = 'Success!'
86 sliderText.value = 'Drag the slider to complete the puzzle'
87 }
88 })
89 function sendsmsMsg() {
90 if(!form.value.account){
91 if(language.value==0){
92 ElMessage.error('请填写手机/邮箱')
93 } else {
94 ElMessage.error('Please fill in your phone/email address')
95 }
96 return
97 }
98 if(counting.value){
99 return
100 } else {
101 isShow.value = true
102 }
103 }
104 function checkwdsf() {
105 if(!form.value.WDSF){
106 if(language.value==0){
107 ElMessage.error('请填写WDSF卡号')
108 } else {
109 ElMessage.error('Please fill in your WDSF code')
110 }
111 return
112 }
113 isShow.value = true
114 }
115 function verifyCode() {
116 if(!form.value.account){
117 return
118 }
119 if(form.value.account.indexOf('@')>-1){
120 //邮箱
121 }
122 }
123 function codeSuccess(msg) {
124 console.log('验证通过' + msg);
125 isShow.value = false
126 isCodeTrue.value += 1
127 if(isCodeTrue.value==1){
128
129 }
130 if(isCodeTrue.value==2){
131 counting.value = true
132 // getCaptchaSms({account:form.value.account}).then(res=>{
133 //
134 // })
135 }
136
137 }
138 function resetCode(n) {
139 isCodeTrue.value = n
140 }
141 function next() {
142 activeStep.value = 1
143 }
61 </script> 144 </script>
62 145
63 <style scoped> 146 <style scoped>
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
20 </el-input> 20 </el-input>
21 <div class="vcodeBox" :style="isShow?'height:240px':'height:0'"> 21 <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">
22 <Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText" 22 <Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText"
23 type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode> 23 type="inside" @success="codeSuccess"></Vcode>
24 </div> 24 </div>
25 </el-form-item> 25 </el-form-item>
26 </el-form> 26 </el-form>
...@@ -96,12 +96,7 @@ function codeSuccess(msg) { ...@@ -96,12 +96,7 @@ function codeSuccess(msg) {
96 function resetCode() { 96 function resetCode() {
97 isCodeTrue.value = false 97 isCodeTrue.value = false
98 } 98 }
99 function codeFail() {
100 99
101 }
102 function codeClose() {
103
104 }
105 const goBack = () => { 100 const goBack = () => {
106 router.go(-1) 101 router.go(-1)
107 } 102 }
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
27 style="max-width: 500px;margin: auto"> 27 style="max-width: 500px;margin: auto">
28 <el-form-item :label="language==0?'所属国家':'Nationality'" required> 28 <el-form-item :label="language==0?'所属国家':'Nationality'" required>
29 <el-select filterable v-model="form.countryId"> 29 <el-select filterable v-model="form.countryId">
30 <el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id"/> 30 <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>
31 </el-select> 31 </el-select>
32 </el-form-item> 32 </el-form-item>
33 <el-form-item :label="language==0?'详细地址':'Address'" required prop="address"> 33 <el-form-item :label="language==0?'详细地址':'Address'" required prop="address">
......
...@@ -22,7 +22,9 @@ import {toRefs} from "@vueuse/shared/index"; ...@@ -22,7 +22,9 @@ import {toRefs} from "@vueuse/shared/index";
22 import Vcode from "vue3-puzzle-vcode" 22 import Vcode from "vue3-puzzle-vcode"
23 import {ElMessage} from 'element-plus' 23 import {ElMessage} from 'element-plus'
24 import CountDown from '@chenfengyuan/vue-countdown' 24 import CountDown from '@chenfengyuan/vue-countdown'
25 import {getCaptchaSms, checkRegisterCode} from "@/apiPc/match"; 25 import {getCaptchaSms, checkRegisterCode} from "@/apiPc/match"
26 import cache from '@/plugins/cache'
27 const language = ref(cache.local.get('language') || 0)
26 const props = defineProps({ 28 const props = defineProps({
27 accont:{ 29 accont:{
28 type:String, 30 type:String,
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!