b790e0e8 by 杨炀

no message

1 parent f9f418f2
...@@ -252,6 +252,13 @@ export function getMyGroupForCptFilter(groupId, cptId, query) { ...@@ -252,6 +252,13 @@ export function getMyGroupForCptFilter(groupId, cptId, query) {
252 data: query 252 data: query
253 }) 253 })
254 } 254 }
255 //todo
256 export function bindWdsf(perId,card) {
257 return request({
258 url: `/systemj/personInfo/bindWdsf/${perId}?card=${card}`,
259 method: 'post'
260 })
261 }
255 export function getGroupPersonList(query,groupId) { 262 export function getGroupPersonList(query,groupId) {
256 return request({ 263 return request({
257 url: `/systemj/personInfo/getPersonInfoListByGroupIdNoLabel/${groupId}`, 264 url: `/systemj/personInfo/getPersonInfoListByGroupIdNoLabel/${groupId}`,
......
...@@ -182,13 +182,14 @@ aside { ...@@ -182,13 +182,14 @@ aside {
182 margin-bottom: 10px; 182 margin-bottom: 10px;
183 } 183 }
184 } 184 }
185 .flexCenter{display: flex;align-items: center;justify-content: center;}
185 .primary-kx{border:1px solid var(--el-color-primary)!important;color: var(--el-color-primary)!important;} 186 .primary-kx{border:1px solid var(--el-color-primary)!important;color: var(--el-color-primary)!important;}
186 .primary-kx:hover{} 187 .primary-kx:hover{}
187 .border-info{background: rgba(69,61,234,0.04); 188 .border-info{background: rgba(69,61,234,0.04);
188 border: 1px solid #D3D1F6; 189 border: 1px solid #D3D1F6;
189 border-radius: 5px;padding: 10px;margin-bottom: 20px; 190 border-radius: 5px;padding: 10px;margin-bottom: 20px;
190 &.inline{display: inline-block;border-radius: 50px;padding: 10px 20px; 191 &.inline{display: inline-block;border-radius: 50px;padding: 10px 20px;
191 margin: 0 40% 20px;min-width: 200px;} 192 margin: 0 auto 20px;min-width: 280px;}
192 &.gray{background: #FAFBFD; 193 &.gray{background: #FAFBFD;
193 border: 1px solid #EEEFF0;} 194 border: 1px solid #EEEFF0;}
194 label{margin-right: 10px;} 195 label{margin-right: 10px;}
......
...@@ -241,7 +241,7 @@ img{display: block;} ...@@ -241,7 +241,7 @@ img{display: block;}
241 } 241 }
242 242
243 .text-success { 243 .text-success {
244 color: #13B5B1; 244 color: #32B16C;
245 } 245 }
246 246
247 .text-info { 247 .text-info {
...@@ -1356,7 +1356,7 @@ img{display: block;} ...@@ -1356,7 +1356,7 @@ img{display: block;}
1356 .liveImgbox{height: 100%;position: relative;width: 100%;aspect-ratio: 16/9;cursor: pointer; 1356 .liveImgbox{height: 100%;position: relative;width: 100%;aspect-ratio: 16/9;cursor: pointer;
1357 overflow: hidden; 1357 overflow: hidden;
1358 .ii{position: absolute;top: 0;left: 0;color: #fff;font-size: 14px;padding: 4px 6px 4px 30px; 1358 .ii{position: absolute;top: 0;left: 0;color: #fff;font-size: 14px;padding: 4px 6px 4px 30px;
1359 font-style: normal;z-index: 1; 1359 font-style: normal;z-index: 1;height: 28px;
1360 background: url("@/assets/dance/live.gif") no-repeat 10px #F04035; 1360 background: url("@/assets/dance/live.gif") no-repeat 10px #F04035;
1361 background-size: 14px; 1361 background-size: 14px;
1362 &::after{content: ''; width: 0; 1362 &::after{content: ''; width: 0;
...@@ -1381,7 +1381,7 @@ img{display: block;} ...@@ -1381,7 +1381,7 @@ img{display: block;}
1381 img{width: 100%;height: 100%;object-fit: cover;object-position: center; 1381 img{width: 100%;height: 100%;object-fit: cover;object-position: center;
1382 transform: scale(1);transition: all 0.2s;} 1382 transform: scale(1);transition: all 0.2s;}
1383 } 1383 }
1384 .languageBtn{ 1384 .languageBtn{white-space: nowrap;
1385 font-size: 16px; 1385 font-size: 16px;
1386 span{padding: 0 5px;cursor: pointer;} 1386 span{padding: 0 5px;cursor: pointer;}
1387 span:hover{font-weight: bold;} 1387 span:hover{font-weight: bold;}
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 <img class="logo" src="@/assets/v1/nav_logo.png"> 4 <img class="logo" src="@/assets/v1/nav_logo.png">
5 </router-link> 5 </router-link>
6 6
7 <div class="home-menu forPc"> 7 <div class="home-menu forPc" style="margin: 0 20px">
8 <el-menu 8 <el-menu
9 v-if="language==0" 9 v-if="language==0"
10 router :default-active="activeIndex" :mode="mode" :ellipsis="true" 10 router :default-active="activeIndex" :mode="mode" :ellipsis="true"
...@@ -66,8 +66,8 @@ ...@@ -66,8 +66,8 @@
66 &nbsp;&nbsp;<span @click="logout()">退出</span> 66 &nbsp;&nbsp;<span @click="logout()">退出</span>
67 </el-button> 67 </el-button>
68 <el-button v-if="language==1&&isLogin" style="border-radius: 20px;" class="loginBtn"> 68 <el-button v-if="language==1&&isLogin" style="border-radius: 20px;" class="loginBtn">
69 <span @click="router.push('/center/myInfo')">个人中心</span> 69 <span @click="router.push('/center/myInfo')">Personal</span>
70 &nbsp;&nbsp;<span @click="logout()">退出</span> 70 &nbsp;&nbsp;<span @click="logout()">Exit</span>
71 </el-button> 71 </el-button>
72 </div> 72 </div>
73 </div> 73 </div>
...@@ -318,7 +318,7 @@ function getCode() { ...@@ -318,7 +318,7 @@ function getCode() {
318 :deep(.el-menu-item.is-active){color: var(--el-color-primary);} 318 :deep(.el-menu-item.is-active){color: var(--el-color-primary);}
319 } 319 }
320 .weiHead{display: flex;justify-content: end;padding: 15px;align-items: center; 320 .weiHead{display: flex;justify-content: end;padding: 15px;align-items: center;
321 .languageBtn{font-size: 20px;margin-right: 20px;line-height: 30px;} 321 .languageBtn{font-size: 20px;margin-right: 20px;line-height: 30px;white-space: nowrap;}
322 } 322 }
323 .weiMenu{ 323 .weiMenu{
324 .el-menu-item{font-size: 20px} 324 .el-menu-item{font-size: 20px}
......
...@@ -6,6 +6,11 @@ import { ...@@ -6,6 +6,11 @@ import {
6 /* Layout */ 6 /* Layout */
7 import Layout from '@/layoutPc' 7 import Layout from '@/layoutPc'
8 import Empty from '@/layoutPc/empty' 8 import Empty from '@/layoutPc/empty'
9 import NProgress from "nprogress";
10 import {getToken} from "@/utils/auth";
11 import useUserStore from "@/store/modules/user";
12 import {isRelogin} from "@/utils/request";
13 import {ElMessage} from "element-plus";
9 // import useUserStore from '@/store/modules/user' 14 // import useUserStore from '@/store/modules/user'
10 15
11 /** 16 /**
...@@ -348,6 +353,34 @@ export const constantRoutes = [ ...@@ -348,6 +353,34 @@ export const constantRoutes = [
348 ] 353 ]
349 }, 354 },
350 { 355 {
356 path: 'register',
357 component: Empty,
358 redirect: '/register',
359 children: [
360 {
361 path: '0',
362 component: () => import('@/viewsPc/register/personal'),
363 name: 'personalRegister',
364 meta: { title: 'Register' }
365 },{
366 path: '1',
367 component: () => import('@/viewsPc/register/team/team'),
368 name: 'teamRegister',
369 meta: { title: 'Register' }
370 },{
371 path: 'userAgreement',
372 component: () => import('@/viewsPc/register/userAgreement'),
373 name: 'userAgreement',
374 meta: { title: 'Register' }
375 },{
376 path: 'policy',
377 component: () => import('@/viewsPc/register/policy'),
378 name: 'policy',
379 meta: { title: 'Register' }
380 }
381 ]
382 },
383 {
351 path: 'center', 384 path: 'center',
352 component: () => import('@/viewsPc/center/index'), 385 component: () => import('@/viewsPc/center/index'),
353 children: [ 386 children: [
...@@ -393,5 +426,33 @@ const router = createRouter({ ...@@ -393,5 +426,33 @@ const router = createRouter({
393 } 426 }
394 } 427 }
395 }) 428 })
429 NProgress.configure({ showSpinner: false })
396 430
431 router.beforeEach((to, from, next) => {
432 NProgress.start()
433 if (getToken()) {
434 // 判断当前用户是否已拉取完user_info信息
435 if (!useUserStore().user) {
436 isRelogin.show = true
437 useUserStore().getInfo().then(() => {
438 isRelogin.show = false
439 next() // hack方法 确保addRoutes已完成
440 }).catch(err => {
441 useUserStore().logOut().then(() => {
442 ElMessage.error(err)
443 next({ path: '/' })
444 })
445 })
446 } else {
447 next()
448 }
449 } else {
450 // 没有token
451 next()
452 }
453 })
454
455 router.afterEach((to) => {
456 NProgress.done()
457 })
397 export default router 458 export default router
......
...@@ -4,14 +4,14 @@ ...@@ -4,14 +4,14 @@
4 destroy-on-close :show-close="showClose" :close-on-click-modal="false" @close="close" 4 destroy-on-close :show-close="showClose" :close-on-click-modal="false" @close="close"
5 > 5 >
6 6
7 <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form" v-if="loginStatus==0"> 7 <el-form ref="loginRef" :model="loginForm" :rules="language==0?loginRules:loginRules_en" class="login-form" v-if="loginStatus==0">
8 <el-form-item prop="username"> 8 <el-form-item prop="username">
9 9
10 <el-input 10 <el-input
11 v-model.trim="loginForm.username" 11 v-model.trim="loginForm.username"
12 size="large" 12 size="large"
13 auto-complete="off" 13 auto-complete="off"
14 placeholder="账号(注册时使用的邮箱/手机号码)" 14 :placeholder="language==0?'账号(注册时使用的邮箱/手机号码)':'Account (e-mail/ cell-phone number)'"
15 > 15 >
16 16
17 </el-input> 17 </el-input>
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
22 type="password" 22 type="password"
23 size="large" show-password 23 size="large" show-password
24 auto-complete="off" 24 auto-complete="off"
25 placeholder="密码" 25 :placeholder="language==0?'密码':'Password'"
26 @keyup.enter="handleLogin" 26 @keyup.enter="handleLogin"
27 > 27 >
28 </el-input> 28 </el-input>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
32 v-model.trim="loginForm.code" 32 v-model.trim="loginForm.code"
33 size="large" 33 size="large"
34 auto-complete="off" 34 auto-complete="off"
35 placeholder="验证码" 35 :placeholder="language==0?'验证码':'Code'"
36 @keyup.enter="handleLogin" 36 @keyup.enter="handleLogin"
37 > 37 >
38 <template #append> 38 <template #append>
...@@ -53,43 +53,48 @@ ...@@ -53,43 +53,48 @@
53 style="width:100%;" 53 style="width:100%;"
54 @click.prevent="handleLogin" 54 @click.prevent="handleLogin"
55 > 55 >
56 <span v-if="!loading">登 录</span> 56 <span v-if="!loading">{{language==0?'登 录':'Login'}}</span>
57 <span v-else>登 录 中...</span> 57 <span v-else>{{language==0?'登 录 中...':'Logging in'}}</span>
58 </el-button> 58 </el-button>
59 </el-form-item> 59 </el-form-item>
60 <el-form-item> 60 <el-form-item>
61 <!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>--> 61 <!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>-->
62 <div style="display: flex;justify-content: space-between;width: 100%;"> 62 <div style="display: flex;justify-content: space-between;width: 100%;">
63 <a class="text-primary" @click="showChangePassword">忘记密码?</a> 63 <a class="text-primary" @click="showChangePassword">{{language==0?'忘记密码':'Retrieve password'}}?</a>
64 <a @click="showRegister" class="text-primary">账号注册></a> 64 <a @click="showRegister" class="text-primary">{{language==0?'账号注册':'Register'}}></a>
65 </div> 65 </div>
66 </el-form-item> 66 </el-form-item>
67 <el-form-item> 67 <el-form-item>
68 <div class="agreeLine"> 68 <div class="agreeLine" v-if="language==0">
69 登录或注册即代表同意 69 登录或注册即代表同意
70 <a>《用户协议》</a> 70 <a>《用户协议》</a>
71 <a>《隐私政策》</a> 71 <a>《隐私政策》</a>
72 </div> 72 </div>
73 <div class="agreeLine" v-else>
74 Registering and logging in means agreeing to the User
75 <a>Agreement</a> and
76 <a>Privacy Policy</a>
77 </div>
73 </el-form-item> 78 </el-form-item>
74 </el-form> 79 </el-form>
75 80
76 <div v-if="loginStatus==1"> 81 <div v-if="loginStatus==1">
77 <div class="rItem r1" @click="goRegister(1)"> 82 <div class="rItem r1" @click="goRegister(1)">
78 <h3>机构用户</h3> 83 <h3>{{language==0?'机构用户':'Organization'}}</h3>
79 </div> 84 </div>
80 <div class="rItem r2" @click="goRegister(0)"> 85 <div class="rItem r2" @click="goRegister(0)">
81 <h3>个人用户</h3> 86 <h3>{{language==0?'个人用户':'Individual'}}</h3>
82 </div> 87 </div>
83 </div> 88 </div>
84 <div v-if="loginStatus==2"> 89 <div v-if="loginStatus==2">
85 <el-form ref="changePasswordRef" :model="changePasswordForm" :rules="changePasswordRules" class="login-form"> 90 <el-form ref="changePasswordRef" :model="changePasswordForm" :rules="language==0?changePasswordRules:changePasswordRules_en" class="login-form">
86 <el-form-item prop="username"> 91 <el-form-item prop="username">
87 92
88 <el-input 93 <el-input
89 v-model.trim="changePasswordForm.username" 94 v-model.trim="changePasswordForm.username"
90 size="large" 95 size="large"
91 auto-complete="off" @change="changePasswordFormUsername" 96 auto-complete="off" @change="changePasswordFormUsername"
92 placeholder="注册时使用的邮箱/手机号码" 97 :placeholder="language==0?'注册时使用的邮箱/手机号码':'E-mail/ Phone number'"
93 > 98 >
94 99
95 </el-input> 100 </el-input>
...@@ -99,16 +104,17 @@ ...@@ -99,16 +104,17 @@
99 v-model.trim="changePasswordForm.code" 104 v-model.trim="changePasswordForm.code"
100 size="large" 105 size="large"
101 auto-complete="off" 106 auto-complete="off"
102 placeholder="邮箱/手机验证码" 107 :placeholder="language==0?'邮箱/手机验证码':'Code'"
103 @keyup.enter="handleLogin" 108 @keyup.enter="handleLogin"
104 > 109 >
105 <template #append> 110 <template #append>
106 <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg"> 111 <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
107 <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false"> 112 <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
108 {{ totalSeconds }} 113 {{ totalSeconds }} {{ language==0?'秒':'s' }}
109 </count-down> 114 </count-down>
110 <span v-else> 115 <span v-else>
111 发送验证码 116 <!-- Send verification code-->
117 {{language==0?'发送验证码':'Send'}}
112 </span> 118 </span>
113 </el-button> 119 </el-button>
114 </template> 120 </template>
...@@ -124,7 +130,7 @@ ...@@ -124,7 +130,7 @@
124 type="password" 130 type="password"
125 size="large" show-password 131 size="large" show-password
126 auto-complete="off" 132 auto-complete="off"
127 placeholder="新密码" 133 :placeholder="language==0?'新密码':'New password'"
128 @keyup.enter="handleLogin" 134 @keyup.enter="handleLogin"
129 > 135 >
130 </el-input> 136 </el-input>
...@@ -135,7 +141,7 @@ ...@@ -135,7 +141,7 @@
135 type="password" 141 type="password"
136 size="large" show-password 142 size="large" show-password
137 auto-complete="off" 143 auto-complete="off"
138 placeholder="确认密码" 144 :placeholder="language==0?'确认密码':'Confirm password'"
139 > 145 >
140 </el-input> 146 </el-input>
141 </el-form-item> 147 </el-form-item>
...@@ -148,7 +154,8 @@ ...@@ -148,7 +154,8 @@
148 style="width:100%;" 154 style="width:100%;"
149 @click.prevent="handleChangePassword" 155 @click.prevent="handleChangePassword"
150 > 156 >
151 <span>确定</span> 157 <span v-if="language==0">确定</span>
158 <span v-else>Submit</span>
152 </el-button> 159 </el-button>
153 </el-form-item> 160 </el-form-item>
154 </el-form> 161 </el-form>
...@@ -163,9 +170,11 @@ import {forgetPassword, getCodeImg} from '@/api/login' ...@@ -163,9 +170,11 @@ import {forgetPassword, getCodeImg} from '@/api/login'
163 import * as match from '@/apiPc/match' 170 import * as match from '@/apiPc/match'
164 import Cookies from 'js-cookie' 171 import Cookies from 'js-cookie'
165 import useUserStore from '@/store/modules/user' 172 import useUserStore from '@/store/modules/user'
173 const language = ref(cache.local.get('language') || 0)
166 import { useRouter } from 'vue-router' 174 import { useRouter } from 'vue-router'
167 import { getCurrentInstance, ref, watch } from 'vue' 175 import { getCurrentInstance, ref, watch } from 'vue'
168 import { ElMessage,ElMessageBox} from 'element-plus' 176 import { ElMessage,ElMessageBox} from 'element-plus'
177 import cache from "@/plugins/cache";
169 const emit = defineEmits(['submitForm']) 178 const emit = defineEmits(['submitForm'])
170 const userStore = useUserStore() 179 const userStore = useUserStore()
171 const router = useRouter() 180 const router = useRouter()
...@@ -189,10 +198,21 @@ const changePasswordRules = { ...@@ -189,10 +198,21 @@ const changePasswordRules = {
189 confirmPassword: [{ required: true, trigger: 'change', message: '请再次输入您的密码' }], 198 confirmPassword: [{ required: true, trigger: 'change', message: '请再次输入您的密码' }],
190 code: [{ required: true, trigger: 'change', message: '请输入验证码' }] 199 code: [{ required: true, trigger: 'change', message: '请输入验证码' }]
191 } 200 }
201 const loginRules_en = {
202 username: [{ required: true, trigger: 'change', message: 'Please enter ' }],
203 password: [{ required: true, trigger: 'change', message: 'Please enter ' }],
204 code: [{ required: true, trigger: 'change', message: 'Please enter ' }]
205 }
206 const changePasswordRules_en = {
207 username: [{ required: true, trigger: 'change', message: 'Please enter ' }],
208 password: [{ required: true, trigger: 'change', message: 'Please enter ' }],
209 confirmPassword: [{ required: true, trigger: 'change', message: 'Please enter ' }],
210 code: [{ required: true, trigger: 'change', message: 'Please enter ' }]
211 }
192 212
193 const show = ref(false) 213 const show = ref(false)
194 const loginStatus = ref(0) 214 const loginStatus = ref(0)
195 const title = ref('用户登录') 215 const title = ref('')
196 const showClose = ref(true) 216 const showClose = ref(true)
197 const codeUrl = ref('') 217 const codeUrl = ref('')
198 const loading = ref(false) 218 const loading = ref(false)
...@@ -212,6 +232,11 @@ const changePasswordForm = ref({ ...@@ -212,6 +232,11 @@ const changePasswordForm = ref({
212 const open = (params) => { 232 const open = (params) => {
213 show.value = true 233 show.value = true
214 showClose.value = !(params?.notShowClose || false) 234 showClose.value = !(params?.notShowClose || false)
235 if(language.value==0){
236 title.value = '用户登录'
237 } else {
238 title.value = 'LOGIN'
239 }
215 getCode() 240 getCode()
216 getCookie() 241 getCookie()
217 } 242 }
...@@ -252,11 +277,19 @@ function close() { ...@@ -252,11 +277,19 @@ function close() {
252 } 277 }
253 function showChangePassword() { 278 function showChangePassword() {
254 loginStatus.value=2 279 loginStatus.value=2
280 if(language.value==0){
255 title.value = '忘记密码/密码重置' 281 title.value = '忘记密码/密码重置'
282 } else {
283 title.value = 'FORGET PASSWORD'
284 }
256 } 285 }
257 function showRegister() { 286 function showRegister() {
258 loginStatus.value=1 287 loginStatus.value=1
288 if(language.value==0){
259 title.value = '账号注册' 289 title.value = '账号注册'
290 } else {
291 title.value = 'REGISTER'
292 }
260 } 293 }
261 function goRegister(n) { 294 function goRegister(n) {
262 if(n==0){ 295 if(n==0){
...@@ -291,7 +324,11 @@ function getCookie() { ...@@ -291,7 +324,11 @@ function getCookie() {
291 } 324 }
292 function sendsmsMsg() { 325 function sendsmsMsg() {
293 if(!changePasswordForm.value.username){ 326 if(!changePasswordForm.value.username){
327 if(language.value==0){
294 ElMessage.error('请填写手机/邮箱') 328 ElMessage.error('请填写手机/邮箱')
329 } else {
330 ElMessage.error('Please fill in your phone/email address')
331 }
295 return 332 return
296 } 333 }
297 if(counting.value){ 334 if(counting.value){
......
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
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 <el-steps :active="activeStep" align-center>
7 <el-step title="团队信息"/> 7 <el-step :title="language==0?'团队信息':'Team Information'" />
8 <el-step title="教练/领队/其他"/> 8 <el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" />
9 <el-step title="选手报名"/> 9 <el-step :title="language==0?'选手报名':'Participant Registration'" />
10 <el-step title="提交审核"/> 10 <el-step :title="language==0?'提交审核':'Submit for review'" />
11 </el-steps> 11 </el-steps>
12 </el-card> 12 </el-card>
13 13
...@@ -171,12 +171,13 @@ import {ref, reactive} from 'vue' ...@@ -171,12 +171,13 @@ import {ref, reactive} from 'vue'
171 import {getCurrentInstance, onMounted} from '@vue/runtime-core' 171 import {getCurrentInstance, onMounted} from '@vue/runtime-core'
172 import * as match from '@/apiPc/match' 172 import * as match from '@/apiPc/match'
173 import dialogAddCoach from './components/addCoach' 173 import dialogAddCoach from './components/addCoach'
174 174 import cache from '@/utils/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()
178 import {ElMessage} from 'element-plus' 178 import {ElMessage} from 'element-plus'
179 import {useRoute, useRouter} from 'vue-router' 179 import {useRoute, useRouter} from 'vue-router'
180 const language = ref(cache.local.get('language') || 0)
180 181
181 const data = reactive({ 182 const data = reactive({
182 form: { 183 form: {
......
1 <template> 1 <template>
2 <div style="padding: 0 20px 20px"> 2 <div style="padding: 0 20px 20px" v-if="language==0">
3 <!--赛事详情--> 3 <!--赛事详情-->
4 <div class="indexTitle"><h3 class="leftboderTT">组织机构</h3></div> 4 <div class="indexTitle">
5 <div class="xzbox"> 5 <h3 class="leftboderTT">组织机构</h3>
6 1.各单位限报1支队伍,每队需报领队1名(运动员可兼任),运动员限报4名<br> 6 </div>
7 2.参赛运动员必须是参赛企业的员工(包括劳务派遣和外籍员工)<br> 7 <div class="xzbox" v-html="form.ocOrganizer">
8 3.参赛运动员必须年满18至50周岁,50周岁以上者不建议参加此次比赛<br>
9 4.参赛运动员必须身体健康
10 </div> 8 </div>
11 <div class="indexTitle"><h3 class="leftboderTT">报名须知</h3></div> 9 <div class="indexTitle"><h3 class="leftboderTT">报名须知</h3></div>
12 <div class="xzbox" v-html="form.signKnow"> 10 <div class="xzbox" v-html="form.signKnow">
...@@ -103,9 +101,115 @@ ...@@ -103,9 +101,115 @@
103 <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/> 101 <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/>
104 </div> 102 </div>
105 </div> 103 </div>
104 <div style="padding: 0 20px 20px" v-else>
105 <!--赛事详情-->
106 <div class="indexTitle">
107 <h3 class="leftboderTT">Organization</h3>
108 </div>
109 <div class="xzbox" v-html="form.ocOrganizer">
110 </div>
111 <div class="indexTitle"><h3 class="leftboderTT">Notes</h3></div>
112 <div class="xzbox" v-html="form.signKnow">
113
114 </div>
115 <div class="indexTitle" v-if="form.type==0"><h3 class="leftboderTT">Competition Regulations</h3></div>
116 <div class="xzbox" v-if="form.type==0" v-html="form.ruleUrl"></div>
117 <div class="indexTitle" v-if="form.type==1"><h3 class="leftboderTT">Event settings</h3></div>
118 <div class="collapsebox" v-if="form.type==1">
119 <el-collapse v-if="form.cptProjectList?.length > 0">
120 <el-collapse-item :title="p.name" :name="index" :key="index" v-for="(p,index) in form.cptProjectList">
121 <div class="pd20">
122 <table class="table">
123 <tr>
124 <td>日期</td>
125 <td>单元</td>
126 <td>组别</td>
127 <td>时间</td>
128 <td>阶段</td>
129 </tr>
130 <tr>
131 <td rowspan="4">2023/10/6(星期五)</td>
132 <td rowspan="4">BRK01</td>
133 <td>男子</td>
134 <td>14:30 - 15:30</td>
135 <td>资格赛</td>
136 </tr>
137 <tr>
138 <td>女子</td>
139 <td>14:30 - 15:30</td>
140 <td>资格赛</td>
141 </tr>
142 <tr>
143 <td>男子</td>
144 <td>14:30 - 15:30</td>
145 <td>循环赛</td>
146 </tr>
147 <tr>
148 <td>女子</td>
149 <td>14:30 - 15:30</td>
150 <td>循环赛</td>
151 </tr>
152 <tr>
153 <td rowspan="8">2023/10/7(星期六)</td>
154 <td rowspan="8">BRK02</td>
155 <td>男子</td>
156 <td>14:30 - 15:30</td>
157 <td>四分之一决赛</td>
158 </tr>
159 <tr>
160 <td>男子</td>
161 <td>14:30 - 15:30</td>
162 <td>四分之一决赛</td>
163 </tr>
164 <tr>
165 <td>女子</td>
166 <td>14:30 - 15:30</td>
167 <td>半决赛</td>
168 </tr>
169 <tr>
170 <td>女子</td>
171 <td>14:30 - 15:30</td>
172 <td>半决赛</td>
173 </tr>
174 <tr>
175 <td>男子</td>
176 <td>14:30 - 15:30</td>
177 <td>季军赛</td>
178 </tr>
179 <tr>
180 <td>女子</td>
181 <td>14:30 - 15:30</td>
182 <td>季军赛</td>
183 </tr>
184 <tr>
185 <td>男子</td>
186 <td>14:30 - 15:30</td>
187 <td>决赛</td>
188 </tr>
189 <tr>
190 <td>女子</td>
191 <td>14:30 - 15:30</td>
192 <td>决赛</td>
193 </tr>
194 <tr>
195 <td colspan="5" style="text-align: left">
196 注:竞赛日程将根据最终参赛人数和电视转播的要求进行调整
197 </td>
198 </tr>
199 </table>
200 </div>
201 </el-collapse-item>
202 </el-collapse>
203 <el-empty image="@/assets/img/order_no.png" image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/>
204 </div>
205 </div>
106 </template> 206 </template>
107 207
108 <script setup> 208 <script setup>
209 import {ref} from "vue";
210 import cache from "@/plugins/cache";
211
212 const language = ref(cache.local.get('language') || 0)
109 const props = defineProps({ 213 const props = defineProps({
110 form:{ 214 form:{
111 type:Object, 215 type:Object,
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
2 <el-card :body-style="{padding: '10px'}" class="mb20"> 2 <el-card :body-style="{padding: '10px'}" class="mb20">
3 <div> 3 <div>
4 <div class="liveImgbox" @click="goDetail(newsList[0])"> 4 <div class="liveImgbox" @click="goDetail(newsList[0])">
5 <i class="ii">直播中</i> 5 <i class="ii">{{ language==0?'直播中':'Live' }}</i>
6 <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)"> 6 <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">
7 </div> 7 </div>
8 </div> 8 </div>
9 9
10 <div class="indexTitle"> 10 <div class="indexTitle">
11 <h3 class="leftboderTT">赛事报道</h3> 11 <h3 class="leftboderTT">{{ language==0?'赛事报道':'Special reports' }}</h3>
12 <a class="more" @click="goList(query2.sortId,'专题报道')">MORE</a> 12 <a class="more" @click="goList(query2.sortId,'专题报道')">MORE</a>
13 </div> 13 </div>
14 <div> 14 <div>
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
17 </div> 17 </div>
18 </div> 18 </div>
19 19
20 <div class="indexTitle"><h3 class="leftboderTT">赛事视频</h3> 20 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事视频':'Event Videos' }}</h3>
21 <a class="more" @click="goList(10000006,'赛事视频')">MORE</a> 21 <a class="more" @click="goList(10000006,'赛事视频')">MORE</a>
22 </div> 22 </div>
23 <div> 23 <div>
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
25 <img :src="fillImgUrl_webSite(newsList[1]?.picUrl)"> 25 <img :src="fillImgUrl_webSite(newsList[1]?.picUrl)">
26 </div> 26 </div>
27 </div> 27 </div>
28 <div class="indexTitle"><h3 class="leftboderTT">赛事图片</h3> 28 <div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事图片':'Event Photos' }}</h3>
29 <a class="more" @click="goList(10000007,'赛事图片')">MORE</a> 29 <a class="more" @click="goList(10000007,'赛事图片')">MORE</a>
30 </div> 30 </div>
31 <div> 31 <div>
...@@ -37,6 +37,9 @@ ...@@ -37,6 +37,9 @@
37 <script setup> 37 <script setup>
38 import {getNewsListById} from "@/apiPc/webSite"; 38 import {getNewsListById} from "@/apiPc/webSite";
39 import {onMounted, ref} from "vue"; 39 import {onMounted, ref} from "vue";
40 import cache from '@/plugins/cache'
41 const language = ref(cache.local.get('language') || 0)
42
40 const newsList = ref([]) 43 const newsList = ref([])
41 const newsList2 = ref([]) 44 const newsList2 = ref([])
42 const query1 = ref({ 45 const query1 = ref({
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
37 <div class="border-info gray mt20"> 37 <div class="border-info gray mt20">
38 <el-row> 38 <el-row>
39 <el-col :lg="8"> 39 <el-col :lg="8">
40 <img/>
40 <div class="item"><label>团队名称</label>{{ matchInfo.signFee }}</div> 41 <div class="item"><label>团队名称</label>{{ matchInfo.signFee }}</div>
41 <div class="item"><label>团队类型</label>{{ matchInfo.signFee }}</div> 42 <div class="item"><label>团队类型</label>{{ matchInfo.signFee }}</div>
42 </el-col> 43 </el-col>
...@@ -117,21 +118,21 @@ ...@@ -117,21 +118,21 @@
117 118
118 119
119 </el-card> 120 </el-card>
120 <el-card class="mt20"> 121 <el-card class="mt20" :body-style="{padding: '0px'}">
121 <el-row> 122 <el-row class="priceBar">
122 <el-col :lg="16"> 123 <el-col :lg="16" :xs="24" class="pd20">
123 <div> 124 <div class="flex">
124 <div class="item"><label>报名费:</label><span>¥{{ matchInfo.signFee }}</span></div> 125 <div class="item"><label>报名费:</label><span>¥3000</span></div>
125 <div class="item"><label>保险费:</label><span>¥{{ matchInfo.signFee }}</span></div> 126 <div class="item"><label>保险费:</label><span>¥3000</span></div>
126 <div class="item"><label>费用总计:</label><span>¥{{ matchInfo.signFee }}</span></div> 127 <div class="item"><label>费用总计:</label><span>¥6000</span></div>
127 </div> 128 </div>
128 </el-col> 129 </el-col>
129 <el-col :lg="8"> 130 <el-col :lg="8" :xs="24" class="text-right pd20">
130 <el-link type="primary"><el-icon><Upload /></el-icon>导出参赛人员清单</el-link> 131 <el-link type="primary"><el-icon><Upload /></el-icon>导出参赛人员清单</el-link>
131 <el-link type="primary"><el-icon><Upload /></el-icon>导出设项报名清单</el-link> 132 <el-link type="primary"><el-icon><Upload /></el-icon>导出设项报名清单</el-link>
132 </el-col> 133 </el-col>
133 </el-row> 134 </el-row>
134 <div class="text-center"> 135 <div class="text-center pd20">
135 <el-button type="primary" class="" plain round @click="goPrev()">上一步</el-button> 136 <el-button type="primary" class="" plain round @click="goPrev()">上一步</el-button>
136 <el-button type="primary" class="" plain round @click="submitForm()">保存暂不提交审核</el-button> 137 <el-button type="primary" class="" plain round @click="submitForm()">保存暂不提交审核</el-button>
137 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">提交审核</el-button> 138 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">提交审核</el-button>
...@@ -157,4 +158,15 @@ const matchInfo = ref({}) ...@@ -157,4 +158,15 @@ const matchInfo = ref({})
157 font-size: 18px; 158 font-size: 18px;
158 text-align: center; 159 text-align: center;
159 } 160 }
161 .priceBar{
162 background: #FAFBFD;
163 .flex{display: flex;
164 .item{font-size: 16px;margin-right: 15px;
165 label{color: #95A1A6;}
166 }
167 }
168 }
169 .text-right{text-align: right;
170 a{margin-left: 20px;}
171 }
160 </style> 172 </style>
......
...@@ -4,23 +4,29 @@ ...@@ -4,23 +4,29 @@
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 <el-steps active="1" align-center>
7 <el-step title="团队信息" /> 7 <el-step :title="language==0?'团队信息':'Team Information'" />
8 <el-step title="教练/领队/其他" /> 8 <el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" />
9 <el-step title="选手报名" /> 9 <el-step :title="language==0?'选手报名':'Participant Registration'" />
10 <el-step title="提交审核" /> 10 <el-step :title="language==0?'提交审核':'Submit for review'" />
11 </el-steps> 11 </el-steps>
12 </el-card> 12 </el-card>
13 <div class="h20"></div> 13 <div class="h20"></div>
14 <div class="panel" style="box-shadow: var(--el-box-shadow)"> 14 <div class="panel" style="box-shadow: var(--el-box-shadow)">
15 <div class="border-info" style="margin: 20px"> 15 <div class="border-info" style="margin: 20px">
16 <el-row> 16 <el-row v-if="language==0">
17 <el-col :lg="8"> 17 <el-col :lg="8"><div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col>
18 <div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col>
19 <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>
20 <el-col :lg="8"><div class="item"><label>赛事时间</label>{{matchInfo.beginTime?.slice(0,10)}}{{ matchInfo.endTime?.slice(0,10) }}</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>
21 <el-col :lg="8"><div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0,10) }}{{ matchInfo.signEndTime?.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>
22 <el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col> 21 <el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col>
23 </el-row> 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>
24 30
25 </div> 31 </div>
26 <div class="h20"></div> 32 <div class="h20"></div>
...@@ -83,7 +89,9 @@ ...@@ -83,7 +89,9 @@
83 89
84 90
85 <div class="panel-footer text-center"> 91 <div class="panel-footer text-center">
86 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">下一步</el-button> 92 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">
93 {{ language==0?'下一步':'NEXT' }}
94 </el-button>
87 </div> 95 </div>
88 </div> 96 </div>
89 </div> 97 </div>
...@@ -96,6 +104,8 @@ import { reactive, ref } from 'vue' ...@@ -96,6 +104,8 @@ import { reactive, ref } from 'vue'
96 import { getCurrentInstance, onMounted } from '@vue/runtime-core' 104 import { getCurrentInstance, onMounted } from '@vue/runtime-core'
97 import { useRoute, useRouter } from 'vue-router' 105 import { useRoute, useRouter } from 'vue-router'
98 import { toRefs } from '@vueuse/shared' 106 import { toRefs } from '@vueuse/shared'
107 import cache from "@/plugins/cache"
108 const language = ref(cache.local.get('language') || 0)
99 109
100 const { proxy } = getCurrentInstance() 110 const { proxy } = getCurrentInstance()
101 const router = useRouter() 111 const router = useRouter()
...@@ -107,7 +117,9 @@ import {saveMyGroupForCpt} from "@/apiPc/match"; ...@@ -107,7 +117,9 @@ import {saveMyGroupForCpt} from "@/apiPc/match";
107 117
108 const data = reactive({ 118 const data = reactive({
109 isRanks: false, 119 isRanks: false,
110 matchData:{}, 120 matchData:{
121 enBo:{}
122 },
111 form: {}, 123 form: {},
112 groupId: 0, 124 groupId: 0,
113 cptId: 0, 125 cptId: 0,
......
...@@ -3,13 +3,13 @@ ...@@ -3,13 +3,13 @@
3 <div class="box"> 3 <div class="box">
4 <div class="indexTitle"> 4 <div class="indexTitle">
5 <h3 class="leftboderTT">Event Video</h3> 5 <h3 class="leftboderTT">Event Video</h3>
6 <a class="more" @click="goList(query1.sortId,'Event Video')">MORE</a> 6 <a class="more" @click="goList(query1.sortId,'Event Videos')">MORE</a>
7 </div> 7 </div>
8 8
9 <el-row :gutter="20"> 9 <el-row :gutter="20">
10 <el-col :lg="12" :sm="24" :md="12"> 10 <el-col :lg="12" :sm="24" :md="12">
11 <div class="liveImgbox" @click="goDetail(newsList[0])"> 11 <div class="liveImgbox" @click="goDetail(newsList[0])">
12 <i class="ii">LIVE</i> 12 <i class="ii">Live Broadcast</i>
13 <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)"> 13 <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">
14 <h3 class="esp">{{ newsList[0]?.name }} 14 <h3 class="esp">{{ newsList[0]?.name }}
15 </h3> 15 </h3>
...@@ -44,8 +44,8 @@ ...@@ -44,8 +44,8 @@
44 44
45 45
46 <div class="indexTitle"> 46 <div class="indexTitle">
47 <h3 class="leftboderTT">Exciting Pictures</h3> 47 <h3 class="leftboderTT">Exciting Photos</h3>
48 <a class="more" @click="goList(query2.sortId,'Exciting Pictures')">MORE</a> 48 <a class="more" @click="goList(query2.sortId,'Exciting Photos')">MORE</a>
49 </div> 49 </div>
50 <el-row class="mb20" :gutter="20"> 50 <el-row class="mb20" :gutter="20">
51 <el-col :lg="9"> 51 <el-col :lg="9">
......
1 <template> 1 <template>
2 <el-card style="min-height: 50vh"> 2 <el-card style="min-height: 50vh">
3 <div class="pt30"> 3 <div class="pt30">
4 <el-form class="d-form" size="large" label-width="120" style="max-width: 500px;margin: auto"> 4 <el-form class="d-form" size="large" :label-width="language==0?120:200" style="max-width: 500px;margin: auto">
5 <el-form-item label="手机/邮箱" required> 5 <el-form-item :label="language==0?'手机/邮箱':'E-mail / Phone number'" required>
6 <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"/> 6 <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"/>
7 </el-form-item> 7 </el-form-item>
8 <el-form-item label="验证码" required> 8 <el-form-item :label="language==0?'验证码':'Code'" required>
9 <el-input v-model="form.code"> 9 <el-input v-model="form.code">
10 <template #append> 10 <template #append>
11 <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg"> 11 <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
...@@ -13,20 +13,21 @@ ...@@ -13,20 +13,21 @@
13 {{ totalSeconds }} 13 {{ totalSeconds }}
14 </count-down> 14 </count-down>
15 <span v-else> 15 <span v-else>
16 发送验证码 16 {{ language==0?'发送验证码':'Send code' }}
17 </span> 17 </span>
18 </el-button> 18 </el-button>
19 </template> 19 </template>
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" type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode> 22 <Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText"
23 type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode>
23 </div> 24 </div>
24 </el-form-item> 25 </el-form-item>
25 </el-form> 26 </el-form>
26 </div> 27 </div>
27 <div class="text-center"> 28 <div class="text-center">
28 <!-- <el-button class="primary-kx" round @click="goBack">取消</el-button>--> 29 <!-- <el-button class="primary-kx" round @click="goBack">取消</el-button>-->
29 <el-button type="primary" class="btn-lineG w200px" round @click="next">下一步</el-button> 30 <el-button type="primary" class="btn-lineG w200px" round @click="next">{{language==0?'下一步':'NEXT' }}</el-button>
30 </div> 31 </div>
31 </el-card> 32 </el-card>
32 </template> 33 </template>
...@@ -37,18 +38,36 @@ import Vcode from "vue3-puzzle-vcode" ...@@ -37,18 +38,36 @@ import Vcode from "vue3-puzzle-vcode"
37 import { ElMessage } from 'element-plus' 38 import { ElMessage } from 'element-plus'
38 import CountDown from '@chenfengyuan/vue-countdown' 39 import CountDown from '@chenfengyuan/vue-countdown'
39 import {getCaptchaSms,checkRegisterCode} from "@/apiPc/match"; 40 import {getCaptchaSms,checkRegisterCode} from "@/apiPc/match";
41 import cache from '@/plugins/cache'
42 import {onMounted} from "@vue/runtime-core";
43 const language = ref(cache.local.get('language') || 0)
44
40 const data = reactive({ 45 const data = reactive({
41 isShow:false, 46 isShow:false,
42 isCodeTrue:false, 47 isCodeTrue:false,
43 counting:false, 48 counting:false,
44 form:{}, 49 form:{},
45 activeStep: 0 50 activeStep: 0,
51 failVcode:'验证失败,请重试',
52 successVcode:'验证通过!',
53 sliderText: '拖动滑块完成拼图',
46 }) 54 })
47 const {isShow,isCodeTrue,counting,form,activeStep} = toRefs(data) 55 const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText} = toRefs(data)
48 const emit = defineEmits(['submit','userName']) 56 const emit = defineEmits(['submit','userName'])
57 onMounted(()=>{
58 if(language.value==1){
59 failVcode.value = 'Error!'
60 successVcode.value = 'Success!'
61 sliderText.value = 'Drag the slider to complete the puzzle'
62 }
63 })
49 function sendsmsMsg() { 64 function sendsmsMsg() {
50 if(!form.value.account){ 65 if(!form.value.account){
66 if(language.value==0){
51 ElMessage.error('请填写手机/邮箱') 67 ElMessage.error('请填写手机/邮箱')
68 } else {
69 ElMessage.error('Please fill in your phone/email address')
70 }
52 return 71 return
53 } 72 }
54 if(counting.value){ 73 if(counting.value){
...@@ -88,11 +107,19 @@ const goBack = () => { ...@@ -88,11 +107,19 @@ const goBack = () => {
88 } 107 }
89 const next = () => { 108 const next = () => {
90 if(!form.value.account){ 109 if(!form.value.account){
110 if(language.value==0){
91 ElMessage.error('请填写手机/邮箱') 111 ElMessage.error('请填写手机/邮箱')
112 } else {
113 ElMessage.error('Please fill in your phone/email address')
114 }
92 return 115 return
93 } 116 }
94 if(!form.value.code){ 117 if(!form.value.code){
118 if(language.value==0){
95 ElMessage.error('请填写验证码') 119 ElMessage.error('请填写验证码')
120 } else {
121 ElMessage.error('Please fill in Code')
122 }
96 return 123 return
97 } 124 }
98 if(!isCodeTrue.value){ 125 if(!isCodeTrue.value){
......
1 <template> 1 <template>
2 <el-card style="min-height: 50vh"> 2 <el-card style="min-height: 50vh">
3 <div> 3 <div class="text-center">
4 <img src="@/assets/dance/ok.png"/> 4 <img class="mauto" src="@/assets/dance/ok.png"/>
5 <h3>注册成功</h3> 5 <h3 class="text-primary">{{ language == 0 ? '注册成功' : 'Stered Successfully !' }}</h3>
6 </div> 6 </div>
7 <div> 7 <div class="flexCenter">
8 <div class="border-info text-center inline"> 8 <div class="border-info text-center inline">
9 <label>登录账号</label> 321 9 <label>{{ language == 0 ? '登录账号' : 'Account' }}:</label> {{accont}}
10 </div> 10 </div>
11 </div> 11 </div>
12 <div class="text-center"> 12 <div class="text-center mt30 mb20">
13 <el-button class="primary-kx" @click="goHome">返回首页</el-button> 13 <el-button class="primary-kx w200px" round @click="goHome">{{ language == 0 ? '返回首页' : 'Homepage' }}</el-button>
14 <el-button type="primary" @click="goSign">去报名</el-button> 14 <el-button type="primary" class="btn-lineG w200px" round @click="goSign">{{ language == 0 ? '去报名' : 'Sign Up' }}</el-button>
15 </div> 15 </div>
16 </el-card> 16 </el-card>
17 </template> 17 </template>
...@@ -23,7 +23,12 @@ import Vcode from "vue3-puzzle-vcode" ...@@ -23,7 +23,12 @@ 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 26 const props = defineProps({
27 accont:{
28 type:String,
29 required:true
30 }
31 })
27 const data = reactive({ 32 const data = reactive({
28 isShow: false, 33 isShow: false,
29 isCodeTrue: false, 34 isCodeTrue: false,
...@@ -34,19 +39,6 @@ const data = reactive({ ...@@ -34,19 +39,6 @@ const data = reactive({
34 const {isShow, isCodeTrue, counting, form, activeStep} = toRefs(data) 39 const {isShow, isCodeTrue, counting, form, activeStep} = toRefs(data)
35 const emit = defineEmits(['submit', 'userName']) 40 const emit = defineEmits(['submit', 'userName'])
36 41
37 function sendsmsMsg() {
38 if (!form.value.account) {
39 ElMessage.error('请填写手机/邮箱')
40 return
41 }
42 if (counting.value) {
43 return
44 } else {
45 isShow.value = true
46 }
47 }
48
49
50 const goHome = () => { 42 const goHome = () => {
51 43
52 } 44 }
...@@ -57,6 +49,7 @@ const goSign = () => { ...@@ -57,6 +49,7 @@ const goSign = () => {
57 </script> 49 </script>
58 50
59 <style scoped lang="scss"> 51 <style scoped lang="scss">
52
60 .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover { 53 .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover {
61 color: var(--el-color-primary); 54 color: var(--el-color-primary);
62 background: #efefff; 55 background: #efefff;
......
...@@ -2,18 +2,18 @@ ...@@ -2,18 +2,18 @@
2 <div> 2 <div>
3 <div class="mt30 mb60"> 3 <div class="mt30 mb60">
4 <div class="box"> 4 <div class="box">
5 <!-- 国内-机构注册--> 5 <!--机构注册-->
6 <el-card> 6 <el-card>
7 <el-steps :active="activeStep" align-center> 7 <el-steps :active="activeStep" align-center>
8 <el-step title="创建账号" /> 8 <el-step :title="language==0?'创建账号':'create an account'" />
9 <el-step title="账号信息" /> 9 <el-step :title="language==0?'账号信息':'account information'" />
10 <el-step title="注册完成" /> 10 <el-step :title="language==0?'注册完成':'stered successfully'" />
11 </el-steps> 11 </el-steps>
12 </el-card> 12 </el-card>
13 <div class="mt20"></div> 13 <div class="mt20"></div>
14 <Step1 v-if="activeStep==0" @submit="toStep2" @userName="getUserName" /> 14 <Step1 v-if="activeStep==0" @submit="toStep2" @userName="getUserName" />
15 <Step2 v-if="activeStep==1" @submit="toStep3" @prev="toStep1" :accont="form.userName"/> 15 <Step2 v-if="activeStep==1" @submit="toStep3" @prev="toStep1" :accont="form.userName"/>
16 <Step3 v-if="activeStep==2"/> 16 <Step3 v-if="activeStep==2" :accont="form.userName"/>
17 </div> 17 </div>
18 </div> 18 </div>
19 </div> 19 </div>
...@@ -24,8 +24,11 @@ import {reactive} from "@vue/runtime-core"; ...@@ -24,8 +24,11 @@ import {reactive} from "@vue/runtime-core";
24 import Step1 from "./step1"; 24 import Step1 from "./step1";
25 import Step2 from "./step2"; 25 import Step2 from "./step2";
26 import Step3 from "./step3"; 26 import Step3 from "./step3";
27 import * as match from "@/apiPc/match"; 27 import * as match from "@/apiPc/match"
28 import {onMounted,toRefs} from "vue"; 28 import {onMounted,toRefs} from "vue"
29 import cache from '@/plugins/cache'
30 const language = ref(cache.local.get('language') || 0)
31
29 const data = reactive({ 32 const data = reactive({
30 isShow:false, 33 isShow:false,
31 isCodeTrue:false, 34 isCodeTrue:false,
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!