b790e0e8 by 杨炀

no message

1 parent f9f418f2
......@@ -252,6 +252,13 @@ export function getMyGroupForCptFilter(groupId, cptId, query) {
data: query
})
}
//todo
export function bindWdsf(perId,card) {
return request({
url: `/systemj/personInfo/bindWdsf/${perId}?card=${card}`,
method: 'post'
})
}
export function getGroupPersonList(query,groupId) {
return request({
url: `/systemj/personInfo/getPersonInfoListByGroupIdNoLabel/${groupId}`,
......
......@@ -182,13 +182,14 @@ aside {
margin-bottom: 10px;
}
}
.flexCenter{display: flex;align-items: center;justify-content: center;}
.primary-kx{border:1px solid var(--el-color-primary)!important;color: var(--el-color-primary)!important;}
.primary-kx:hover{}
.border-info{background: rgba(69,61,234,0.04);
border: 1px solid #D3D1F6;
border-radius: 5px;padding: 10px;margin-bottom: 20px;
&.inline{display: inline-block;border-radius: 50px;padding: 10px 20px;
margin: 0 40% 20px;min-width: 200px;}
margin: 0 auto 20px;min-width: 280px;}
&.gray{background: #FAFBFD;
border: 1px solid #EEEFF0;}
label{margin-right: 10px;}
......
......@@ -241,7 +241,7 @@ img{display: block;}
}
.text-success {
color: #13B5B1;
color: #32B16C;
}
.text-info {
......@@ -1356,7 +1356,7 @@ img{display: block;}
.liveImgbox{height: 100%;position: relative;width: 100%;aspect-ratio: 16/9;cursor: pointer;
overflow: hidden;
.ii{position: absolute;top: 0;left: 0;color: #fff;font-size: 14px;padding: 4px 6px 4px 30px;
font-style: normal;z-index: 1;
font-style: normal;z-index: 1;height: 28px;
background: url("@/assets/dance/live.gif") no-repeat 10px #F04035;
background-size: 14px;
&::after{content: ''; width: 0;
......@@ -1381,7 +1381,7 @@ img{display: block;}
img{width: 100%;height: 100%;object-fit: cover;object-position: center;
transform: scale(1);transition: all 0.2s;}
}
.languageBtn{
.languageBtn{white-space: nowrap;
font-size: 16px;
span{padding: 0 5px;cursor: pointer;}
span:hover{font-weight: bold;}
......
......@@ -4,7 +4,7 @@
<img class="logo" src="@/assets/v1/nav_logo.png">
</router-link>
<div class="home-menu forPc">
<div class="home-menu forPc" style="margin: 0 20px">
<el-menu
v-if="language==0"
router :default-active="activeIndex" :mode="mode" :ellipsis="true"
......@@ -66,8 +66,8 @@
&nbsp;&nbsp;<span @click="logout()">退出</span>
</el-button>
<el-button v-if="language==1&&isLogin" style="border-radius: 20px;" class="loginBtn">
<span @click="router.push('/center/myInfo')">个人中心</span>
&nbsp;&nbsp;<span @click="logout()">退出</span>
<span @click="router.push('/center/myInfo')">Personal</span>
&nbsp;&nbsp;<span @click="logout()">Exit</span>
</el-button>
</div>
</div>
......@@ -318,7 +318,7 @@ function getCode() {
:deep(.el-menu-item.is-active){color: var(--el-color-primary);}
}
.weiHead{display: flex;justify-content: end;padding: 15px;align-items: center;
.languageBtn{font-size: 20px;margin-right: 20px;line-height: 30px;}
.languageBtn{font-size: 20px;margin-right: 20px;line-height: 30px;white-space: nowrap;}
}
.weiMenu{
.el-menu-item{font-size: 20px}
......
......@@ -6,6 +6,11 @@ import {
/* Layout */
import Layout from '@/layoutPc'
import Empty from '@/layoutPc/empty'
import NProgress from "nprogress";
import {getToken} from "@/utils/auth";
import useUserStore from "@/store/modules/user";
import {isRelogin} from "@/utils/request";
import {ElMessage} from "element-plus";
// import useUserStore from '@/store/modules/user'
/**
......@@ -348,6 +353,34 @@ export const constantRoutes = [
]
},
{
path: 'register',
component: Empty,
redirect: '/register',
children: [
{
path: '0',
component: () => import('@/viewsPc/register/personal'),
name: 'personalRegister',
meta: { title: 'Register' }
},{
path: '1',
component: () => import('@/viewsPc/register/team/team'),
name: 'teamRegister',
meta: { title: 'Register' }
},{
path: 'userAgreement',
component: () => import('@/viewsPc/register/userAgreement'),
name: 'userAgreement',
meta: { title: 'Register' }
},{
path: 'policy',
component: () => import('@/viewsPc/register/policy'),
name: 'policy',
meta: { title: 'Register' }
}
]
},
{
path: 'center',
component: () => import('@/viewsPc/center/index'),
children: [
......@@ -393,5 +426,33 @@ const router = createRouter({
}
}
})
NProgress.configure({ showSpinner: false })
router.beforeEach((to, from, next) => {
NProgress.start()
if (getToken()) {
// 判断当前用户是否已拉取完user_info信息
if (!useUserStore().user) {
isRelogin.show = true
useUserStore().getInfo().then(() => {
isRelogin.show = false
next() // hack方法 确保addRoutes已完成
}).catch(err => {
useUserStore().logOut().then(() => {
ElMessage.error(err)
next({ path: '/' })
})
})
} else {
next()
}
} else {
// 没有token
next()
}
})
router.afterEach((to) => {
NProgress.done()
})
export default router
......
......@@ -4,14 +4,14 @@
destroy-on-close :show-close="showClose" :close-on-click-modal="false" @close="close"
>
<el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form" v-if="loginStatus==0">
<el-form ref="loginRef" :model="loginForm" :rules="language==0?loginRules:loginRules_en" class="login-form" v-if="loginStatus==0">
<el-form-item prop="username">
<el-input
v-model.trim="loginForm.username"
size="large"
auto-complete="off"
placeholder="账号(注册时使用的邮箱/手机号码)"
:placeholder="language==0?'账号(注册时使用的邮箱/手机号码)':'Account (e-mail/ cell-phone number)'"
>
</el-input>
......@@ -22,7 +22,7 @@
type="password"
size="large" show-password
auto-complete="off"
placeholder="密码"
:placeholder="language==0?'密码':'Password'"
@keyup.enter="handleLogin"
>
</el-input>
......@@ -32,7 +32,7 @@
v-model.trim="loginForm.code"
size="large"
auto-complete="off"
placeholder="验证码"
:placeholder="language==0?'验证码':'Code'"
@keyup.enter="handleLogin"
>
<template #append>
......@@ -53,43 +53,48 @@
style="width:100%;"
@click.prevent="handleLogin"
>
<span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span>
<span v-if="!loading">{{language==0?'登 录':'Login'}}</span>
<span v-else>{{language==0?'登 录 中...':'Logging in'}}</span>
</el-button>
</el-form-item>
<el-form-item>
<!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>-->
<div style="display: flex;justify-content: space-between;width: 100%;">
<a class="text-primary" @click="showChangePassword">忘记密码?</a>
<a @click="showRegister" class="text-primary">账号注册></a>
<a class="text-primary" @click="showChangePassword">{{language==0?'忘记密码':'Retrieve password'}}?</a>
<a @click="showRegister" class="text-primary">{{language==0?'账号注册':'Register'}}></a>
</div>
</el-form-item>
<el-form-item>
<div class="agreeLine">
<div class="agreeLine" v-if="language==0">
登录或注册即代表同意
<a>《用户协议》</a>
<a>《隐私政策》</a>
</div>
<div class="agreeLine" v-else>
Registering and logging in means agreeing to the User
<a>Agreement</a> and
<a>Privacy Policy</a>
</div>
</el-form-item>
</el-form>
<div v-if="loginStatus==1">
<div class="rItem r1" @click="goRegister(1)">
<h3>机构用户</h3>
<h3>{{language==0?'机构用户':'Organization'}}</h3>
</div>
<div class="rItem r2" @click="goRegister(0)">
<h3>个人用户</h3>
<h3>{{language==0?'个人用户':'Individual'}}</h3>
</div>
</div>
<div v-if="loginStatus==2">
<el-form ref="changePasswordRef" :model="changePasswordForm" :rules="changePasswordRules" class="login-form">
<el-form ref="changePasswordRef" :model="changePasswordForm" :rules="language==0?changePasswordRules:changePasswordRules_en" class="login-form">
<el-form-item prop="username">
<el-input
v-model.trim="changePasswordForm.username"
size="large"
auto-complete="off" @change="changePasswordFormUsername"
placeholder="注册时使用的邮箱/手机号码"
:placeholder="language==0?'注册时使用的邮箱/手机号码':'E-mail/ Phone number'"
>
</el-input>
......@@ -99,16 +104,17 @@
v-model.trim="changePasswordForm.code"
size="large"
auto-complete="off"
placeholder="邮箱/手机验证码"
:placeholder="language==0?'邮箱/手机验证码':'Code'"
@keyup.enter="handleLogin"
>
<template #append>
<el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
<count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
{{ totalSeconds }}
{{ totalSeconds }} {{ language==0?'秒':'s' }}
</count-down>
<span v-else>
发送验证码
<!-- Send verification code-->
{{language==0?'发送验证码':'Send'}}
</span>
</el-button>
</template>
......@@ -124,7 +130,7 @@
type="password"
size="large" show-password
auto-complete="off"
placeholder="新密码"
:placeholder="language==0?'新密码':'New password'"
@keyup.enter="handleLogin"
>
</el-input>
......@@ -135,7 +141,7 @@
type="password"
size="large" show-password
auto-complete="off"
placeholder="确认密码"
:placeholder="language==0?'确认密码':'Confirm password'"
>
</el-input>
</el-form-item>
......@@ -148,7 +154,8 @@
style="width:100%;"
@click.prevent="handleChangePassword"
>
<span>确定</span>
<span v-if="language==0">确定</span>
<span v-else>Submit</span>
</el-button>
</el-form-item>
</el-form>
......@@ -163,9 +170,11 @@ import {forgetPassword, getCodeImg} from '@/api/login'
import * as match from '@/apiPc/match'
import Cookies from 'js-cookie'
import useUserStore from '@/store/modules/user'
const language = ref(cache.local.get('language') || 0)
import { useRouter } from 'vue-router'
import { getCurrentInstance, ref, watch } from 'vue'
import { ElMessage,ElMessageBox} from 'element-plus'
import cache from "@/plugins/cache";
const emit = defineEmits(['submitForm'])
const userStore = useUserStore()
const router = useRouter()
......@@ -189,10 +198,21 @@ const changePasswordRules = {
confirmPassword: [{ required: true, trigger: 'change', message: '请再次输入您的密码' }],
code: [{ required: true, trigger: 'change', message: '请输入验证码' }]
}
const loginRules_en = {
username: [{ required: true, trigger: 'change', message: 'Please enter ' }],
password: [{ required: true, trigger: 'change', message: 'Please enter ' }],
code: [{ required: true, trigger: 'change', message: 'Please enter ' }]
}
const changePasswordRules_en = {
username: [{ required: true, trigger: 'change', message: 'Please enter ' }],
password: [{ required: true, trigger: 'change', message: 'Please enter ' }],
confirmPassword: [{ required: true, trigger: 'change', message: 'Please enter ' }],
code: [{ required: true, trigger: 'change', message: 'Please enter ' }]
}
const show = ref(false)
const loginStatus = ref(0)
const title = ref('用户登录')
const title = ref('')
const showClose = ref(true)
const codeUrl = ref('')
const loading = ref(false)
......@@ -212,6 +232,11 @@ const changePasswordForm = ref({
const open = (params) => {
show.value = true
showClose.value = !(params?.notShowClose || false)
if(language.value==0){
title.value = '用户登录'
} else {
title.value = 'LOGIN'
}
getCode()
getCookie()
}
......@@ -252,11 +277,19 @@ function close() {
}
function showChangePassword() {
loginStatus.value=2
title.value = '忘记密码/密码重置'
if(language.value==0){
title.value = '忘记密码/密码重置'
} else {
title.value = 'FORGET PASSWORD'
}
}
function showRegister() {
loginStatus.value=1
title.value = '账号注册'
if(language.value==0){
title.value = '账号注册'
} else {
title.value = 'REGISTER'
}
}
function goRegister(n) {
if(n==0){
......@@ -291,7 +324,11 @@ function getCookie() {
}
function sendsmsMsg() {
if(!changePasswordForm.value.username){
ElMessage.error('请填写手机/邮箱')
if(language.value==0){
ElMessage.error('请填写手机/邮箱')
} else {
ElMessage.error('Please fill in your phone/email address')
}
return
}
if(counting.value){
......
......@@ -4,10 +4,10 @@
<div class="box ph-30">
<el-card>
<el-steps :active="activeStep" align-center>
<el-step title="团队信息"/>
<el-step title="教练/领队/其他"/>
<el-step title="选手报名"/>
<el-step title="提交审核"/>
<el-step :title="language==0?'团队信息':'Team Information'" />
<el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" />
<el-step :title="language==0?'选手报名':'Participant Registration'" />
<el-step :title="language==0?'提交审核':'Submit for review'" />
</el-steps>
</el-card>
......@@ -171,12 +171,13 @@ import {ref, reactive} from 'vue'
import {getCurrentInstance, onMounted} from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import dialogAddCoach from './components/addCoach'
import cache from '@/utils/cache'
const {proxy} = getCurrentInstance()
const router = useRouter()
const route = useRoute()
import {ElMessage} from 'element-plus'
import {useRoute, useRouter} from 'vue-router'
const language = ref(cache.local.get('language') || 0)
const data = reactive({
form: {
......
<template>
<div style="padding: 0 20px 20px">
<div style="padding: 0 20px 20px" v-if="language==0">
<!--赛事详情-->
<div class="indexTitle"><h3 class="leftboderTT">组织机构</h3></div>
<div class="xzbox">
1.各单位限报1支队伍,每队需报领队1名(运动员可兼任),运动员限报4名<br>
2.参赛运动员必须是参赛企业的员工(包括劳务派遣和外籍员工)<br>
3.参赛运动员必须年满18至50周岁,50周岁以上者不建议参加此次比赛<br>
4.参赛运动员必须身体健康
<div class="indexTitle">
<h3 class="leftboderTT">组织机构</h3>
</div>
<div class="xzbox" v-html="form.ocOrganizer">
</div>
<div class="indexTitle"><h3 class="leftboderTT">报名须知</h3></div>
<div class="xzbox" v-html="form.signKnow">
......@@ -103,9 +101,115 @@
<el-empty image="@/assets/img/order_no.png" image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/>
</div>
</div>
<div style="padding: 0 20px 20px" v-else>
<!--赛事详情-->
<div class="indexTitle">
<h3 class="leftboderTT">Organization</h3>
</div>
<div class="xzbox" v-html="form.ocOrganizer">
</div>
<div class="indexTitle"><h3 class="leftboderTT">Notes</h3></div>
<div class="xzbox" v-html="form.signKnow">
</div>
<div class="indexTitle" v-if="form.type==0"><h3 class="leftboderTT">Competition Regulations</h3></div>
<div class="xzbox" v-if="form.type==0" v-html="form.ruleUrl"></div>
<div class="indexTitle" v-if="form.type==1"><h3 class="leftboderTT">Event settings</h3></div>
<div class="collapsebox" v-if="form.type==1">
<el-collapse v-if="form.cptProjectList?.length > 0">
<el-collapse-item :title="p.name" :name="index" :key="index" v-for="(p,index) in form.cptProjectList">
<div class="pd20">
<table class="table">
<tr>
<td>日期</td>
<td>单元</td>
<td>组别</td>
<td>时间</td>
<td>阶段</td>
</tr>
<tr>
<td rowspan="4">2023/10/6(星期五)</td>
<td rowspan="4">BRK01</td>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>资格赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>资格赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>循环赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>循环赛</td>
</tr>
<tr>
<td rowspan="8">2023/10/7(星期六)</td>
<td rowspan="8">BRK02</td>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>四分之一决赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>四分之一决赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>半决赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>半决赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>季军赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>季军赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>决赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>决赛</td>
</tr>
<tr>
<td colspan="5" style="text-align: left">
注:竞赛日程将根据最终参赛人数和电视转播的要求进行调整
</td>
</tr>
</table>
</div>
</el-collapse-item>
</el-collapse>
<el-empty image="@/assets/img/order_no.png" image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/>
</div>
</div>
</template>
<script setup>
import {ref} from "vue";
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const props = defineProps({
form:{
type:Object,
......
......@@ -2,13 +2,13 @@
<el-card :body-style="{padding: '10px'}" class="mb20">
<div>
<div class="liveImgbox" @click="goDetail(newsList[0])">
<i class="ii">直播中</i>
<i class="ii">{{ language==0?'直播中':'Live' }}</i>
<img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">
</div>
</div>
<div class="indexTitle">
<h3 class="leftboderTT">赛事报道</h3>
<h3 class="leftboderTT">{{ language==0?'赛事报道':'Special reports' }}</h3>
<a class="more" @click="goList(query2.sortId,'专题报道')">MORE</a>
</div>
<div>
......@@ -17,7 +17,7 @@
</div>
</div>
<div class="indexTitle"><h3 class="leftboderTT">赛事视频</h3>
<div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事视频':'Event Videos' }}</h3>
<a class="more" @click="goList(10000006,'赛事视频')">MORE</a>
</div>
<div>
......@@ -25,7 +25,7 @@
<img :src="fillImgUrl_webSite(newsList[1]?.picUrl)">
</div>
</div>
<div class="indexTitle"><h3 class="leftboderTT">赛事图片</h3>
<div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事图片':'Event Photos' }}</h3>
<a class="more" @click="goList(10000007,'赛事图片')">MORE</a>
</div>
<div>
......@@ -37,6 +37,9 @@
<script setup>
import {getNewsListById} from "@/apiPc/webSite";
import {onMounted, ref} from "vue";
import cache from '@/plugins/cache'
const language = ref(cache.local.get('language') || 0)
const newsList = ref([])
const newsList2 = ref([])
const query1 = ref({
......
......@@ -37,6 +37,7 @@
<div class="border-info gray mt20">
<el-row>
<el-col :lg="8">
<img/>
<div class="item"><label>团队名称</label>{{ matchInfo.signFee }}</div>
<div class="item"><label>团队类型</label>{{ matchInfo.signFee }}</div>
</el-col>
......@@ -117,21 +118,21 @@
</el-card>
<el-card class="mt20">
<el-row>
<el-col :lg="16">
<div>
<div class="item"><label>报名费:</label><span>¥{{ matchInfo.signFee }}</span></div>
<div class="item"><label>保险费:</label><span>¥{{ matchInfo.signFee }}</span></div>
<div class="item"><label>费用总计:</label><span>¥{{ matchInfo.signFee }}</span></div>
<el-card class="mt20" :body-style="{padding: '0px'}">
<el-row class="priceBar">
<el-col :lg="16" :xs="24" class="pd20">
<div class="flex">
<div class="item"><label>报名费:</label><span>¥3000</span></div>
<div class="item"><label>保险费:</label><span>¥3000</span></div>
<div class="item"><label>费用总计:</label><span>¥6000</span></div>
</div>
</el-col>
<el-col :lg="8">
<el-col :lg="8" :xs="24" class="text-right pd20">
<el-link type="primary"><el-icon><Upload /></el-icon>导出参赛人员清单</el-link>
<el-link type="primary"><el-icon><Upload /></el-icon>导出设项报名清单</el-link>
</el-col>
</el-row>
<div class="text-center">
<div class="text-center pd20">
<el-button type="primary" class="" plain round @click="goPrev()">上一步</el-button>
<el-button type="primary" class="" plain round @click="submitForm()">保存暂不提交审核</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">提交审核</el-button>
......@@ -157,4 +158,15 @@ const matchInfo = ref({})
font-size: 18px;
text-align: center;
}
.priceBar{
background: #FAFBFD;
.flex{display: flex;
.item{font-size: 16px;margin-right: 15px;
label{color: #95A1A6;}
}
}
}
.text-right{text-align: right;
a{margin-left: 20px;}
}
</style>
......
......@@ -4,23 +4,29 @@
<div class="box ph-30">
<el-card>
<el-steps active="1" align-center>
<el-step title="团队信息" />
<el-step title="教练/领队/其他" />
<el-step title="选手报名" />
<el-step title="提交审核" />
<el-step :title="language==0?'团队信息':'Team Information'" />
<el-step :title="language==0?'教练/领队/其他':'Coach/Team Leader/Other'" />
<el-step :title="language==0?'选手报名':'Participant Registration'" />
<el-step :title="language==0?'提交审核':'Submit for review'" />
</el-steps>
</el-card>
<div class="h20"></div>
<div class="panel" style="box-shadow: var(--el-box-shadow)">
<div class="border-info" style="margin: 20px">
<el-row>
<el-col :lg="8">
<div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col>
<el-row v-if="language==0">
<el-col :lg="8"><div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col>
<el-col :lg="8"><div class="item"><label>赛事类型</label>{{matchInfo.name}}</div></el-col>
<el-col :lg="8"><div class="item"><label>赛事时间</label>{{matchInfo.beginTime?.slice(0,10)}}{{ matchInfo.endTime?.slice(0,10) }}</div></el-col>
<el-col :lg="8"><div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0,10) }}{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col>
<el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col>
</el-row>
<el-row v-else>
<el-col :lg="8"><div class="item"><label>Event Name</label>{{matchInfo.name}}</div></el-col>
<el-col :lg="8"><div class="item"><label>Event Type</label>{{matchInfo.name}}</div></el-col>
<el-col :lg="8"><div class="item"><label>Event Date</label>{{matchInfo.beginTime?.slice(0,10)}} ~ {{ matchInfo.endTime?.slice(0,10) }}</div></el-col>
<el-col :lg="8"><div class="item"><label>Registration Period</label>{{ matchInfo.signBeginTime?.slice(0,10) }} ~{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col>
<el-col :lg="16"><div class="item"><label>Event Address</label>{{matchInfo.address}}</div></el-col>
</el-row>
</div>
<div class="h20"></div>
......@@ -83,7 +89,9 @@
<div class="panel-footer text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">下一步</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm()">
{{ language==0?'下一步':'NEXT' }}
</el-button>
</div>
</div>
</div>
......@@ -96,6 +104,8 @@ import { reactive, ref } from 'vue'
import { getCurrentInstance, onMounted } from '@vue/runtime-core'
import { useRoute, useRouter } from 'vue-router'
import { toRefs } from '@vueuse/shared'
import cache from "@/plugins/cache"
const language = ref(cache.local.get('language') || 0)
const { proxy } = getCurrentInstance()
const router = useRouter()
......@@ -107,7 +117,9 @@ import {saveMyGroupForCpt} from "@/apiPc/match";
const data = reactive({
isRanks: false,
matchData:{},
matchData:{
enBo:{}
},
form: {},
groupId: 0,
cptId: 0,
......
......@@ -3,13 +3,13 @@
<div class="box">
<div class="indexTitle">
<h3 class="leftboderTT">Event Video</h3>
<a class="more" @click="goList(query1.sortId,'Event Video')">MORE</a>
<a class="more" @click="goList(query1.sortId,'Event Videos')">MORE</a>
</div>
<el-row :gutter="20">
<el-col :lg="12" :sm="24" :md="12">
<div class="liveImgbox" @click="goDetail(newsList[0])">
<i class="ii">LIVE</i>
<i class="ii">Live Broadcast</i>
<img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">
<h3 class="esp">{{ newsList[0]?.name }}
</h3>
......@@ -44,8 +44,8 @@
<div class="indexTitle">
<h3 class="leftboderTT">Exciting Pictures</h3>
<a class="more" @click="goList(query2.sortId,'Exciting Pictures')">MORE</a>
<h3 class="leftboderTT">Exciting Photos</h3>
<a class="more" @click="goList(query2.sortId,'Exciting Photos')">MORE</a>
</div>
<el-row class="mb20" :gutter="20">
<el-col :lg="9">
......
<template>
<el-card style="min-height: 50vh">
<div class="pt30">
<el-form class="d-form" size="large" label-width="120" style="max-width: 500px;margin: auto">
<el-form-item label="手机/邮箱" required>
<el-form class="d-form" size="large" :label-width="language==0?120:200" style="max-width: 500px;margin: auto">
<el-form-item :label="language==0?'手机/邮箱':'E-mail / Phone number'" required>
<el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"/>
</el-form-item>
<el-form-item label="验证码" required>
<el-form-item :label="language==0?'验证码':'Code'" required>
<el-input v-model="form.code">
<template #append>
<el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
......@@ -13,20 +13,21 @@
{{ totalSeconds }}
</count-down>
<span v-else>
发送验证码
{{ language==0?'发送验证码':'Send code' }}
</span>
</el-button>
</template>
</el-input>
<div class="vcodeBox" :style="isShow?'height:240px':'height:0'">
<Vcode :show="isShow" type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode>
<Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText"
type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode>
</div>
</el-form-item>
</el-form>
</div>
<div class="text-center">
<!-- <el-button class="primary-kx" round @click="goBack">取消</el-button>-->
<el-button type="primary" class="btn-lineG w200px" round @click="next">下一步</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="next">{{language==0?'下一步':'NEXT' }}</el-button>
</div>
</el-card>
</template>
......@@ -37,18 +38,36 @@ import Vcode from "vue3-puzzle-vcode"
import { ElMessage } from 'element-plus'
import CountDown from '@chenfengyuan/vue-countdown'
import {getCaptchaSms,checkRegisterCode} from "@/apiPc/match";
import cache from '@/plugins/cache'
import {onMounted} from "@vue/runtime-core";
const language = ref(cache.local.get('language') || 0)
const data = reactive({
isShow:false,
isCodeTrue:false,
counting:false,
form:{},
activeStep: 0
activeStep: 0,
failVcode:'验证失败,请重试',
successVcode:'验证通过!',
sliderText: '拖动滑块完成拼图',
})
const {isShow,isCodeTrue,counting,form,activeStep} = toRefs(data)
const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText} = toRefs(data)
const emit = defineEmits(['submit','userName'])
onMounted(()=>{
if(language.value==1){
failVcode.value = 'Error!'
successVcode.value = 'Success!'
sliderText.value = 'Drag the slider to complete the puzzle'
}
})
function sendsmsMsg() {
if(!form.value.account){
ElMessage.error('请填写手机/邮箱')
if(language.value==0){
ElMessage.error('请填写手机/邮箱')
} else {
ElMessage.error('Please fill in your phone/email address')
}
return
}
if(counting.value){
......@@ -88,11 +107,19 @@ const goBack = () => {
}
const next = () => {
if(!form.value.account){
ElMessage.error('请填写手机/邮箱')
if(language.value==0){
ElMessage.error('请填写手机/邮箱')
} else {
ElMessage.error('Please fill in your phone/email address')
}
return
}
if(!form.value.code){
ElMessage.error('请填写验证码')
if(language.value==0){
ElMessage.error('请填写验证码')
} else {
ElMessage.error('Please fill in Code')
}
return
}
if(!isCodeTrue.value){
......
<template>
<el-card style="min-height: 50vh">
<div>
<img src="@/assets/dance/ok.png"/>
<h3>注册成功</h3>
<div class="text-center">
<img class="mauto" src="@/assets/dance/ok.png"/>
<h3 class="text-primary">{{ language == 0 ? '注册成功' : 'Stered Successfully !' }}</h3>
</div>
<div>
<div class="flexCenter">
<div class="border-info text-center inline">
<label>登录账号</label> 321
<label>{{ language == 0 ? '登录账号' : 'Account' }}:</label> {{accont}}
</div>
</div>
<div class="text-center">
<el-button class="primary-kx" @click="goHome">返回首页</el-button>
<el-button type="primary" @click="goSign">去报名</el-button>
<div class="text-center mt30 mb20">
<el-button class="primary-kx w200px" round @click="goHome">{{ language == 0 ? '返回首页' : 'Homepage' }}</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="goSign">{{ language == 0 ? '去报名' : 'Sign Up' }}</el-button>
</div>
</el-card>
</template>
......@@ -23,7 +23,12 @@ import Vcode from "vue3-puzzle-vcode"
import {ElMessage} from 'element-plus'
import CountDown from '@chenfengyuan/vue-countdown'
import {getCaptchaSms, checkRegisterCode} from "@/apiPc/match";
const props = defineProps({
accont:{
type:String,
required:true
}
})
const data = reactive({
isShow: false,
isCodeTrue: false,
......@@ -34,19 +39,6 @@ const data = reactive({
const {isShow, isCodeTrue, counting, form, activeStep} = toRefs(data)
const emit = defineEmits(['submit', 'userName'])
function sendsmsMsg() {
if (!form.value.account) {
ElMessage.error('请填写手机/邮箱')
return
}
if (counting.value) {
return
} else {
isShow.value = true
}
}
const goHome = () => {
}
......@@ -57,6 +49,7 @@ const goSign = () => {
</script>
<style scoped lang="scss">
.el-input-group__append button.el-button, .el-input-group__append button.el-button:hover {
color: var(--el-color-primary);
background: #efefff;
......
......@@ -2,18 +2,18 @@
<div>
<div class="mt30 mb60">
<div class="box">
<!-- 国内-机构注册-->
<!--机构注册-->
<el-card>
<el-steps :active="activeStep" align-center>
<el-step title="创建账号" />
<el-step title="账号信息" />
<el-step title="注册完成" />
<el-step :title="language==0?'创建账号':'create an account'" />
<el-step :title="language==0?'账号信息':'account information'" />
<el-step :title="language==0?'注册完成':'stered successfully'" />
</el-steps>
</el-card>
<div class="mt20"></div>
<Step1 v-if="activeStep==0" @submit="toStep2" @userName="getUserName" />
<Step2 v-if="activeStep==1" @submit="toStep3" @prev="toStep1" :accont="form.userName"/>
<Step3 v-if="activeStep==2"/>
<Step3 v-if="activeStep==2" :accont="form.userName"/>
</div>
</div>
</div>
......@@ -24,8 +24,11 @@ import {reactive} from "@vue/runtime-core";
import Step1 from "./step1";
import Step2 from "./step2";
import Step3 from "./step3";
import * as match from "@/apiPc/match";
import {onMounted,toRefs} from "vue";
import * as match from "@/apiPc/match"
import {onMounted,toRefs} from "vue"
import cache from '@/plugins/cache'
const language = ref(cache.local.get('language') || 0)
const data = reactive({
isShow:false,
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!