05ebb5dc by 杨炀

no message

1 parent b790e0e8
Showing 42 changed files with 1193 additions and 604 deletions
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.0.0
*/
(function ($) {
'use strict';
var initResizable = function (that) {
//Deletes the plugin to re-create it
that.$el.colResizable({disable: true});
//Creates the plugin
that.$el.colResizable({
liveDrag: that.options.liveDrag,
fixed: that.options.fixed,
headerOnly: that.options.headerOnly,
minWidth: that.options.minWidth,
hoverCursor: that.options.hoverCursor,
dragCursor: that.options.dragCursor,
onResize: that.onResize,
onDrag: that.options.onResizableDrag,
resizeMode: that.options.resizeMode
});
};
$.extend($.fn.bootstrapTable.defaults, {
resizable: false,
liveDrag: false,
fixed: true,
headerOnly: false,
minWidth: 15,
hoverCursor: 'e-resize',
dragCursor: 'e-resize',
onResizableResize: function (e) {
return false;
},
onResizableDrag: function (e) {
return false;
}
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_toggleView = BootstrapTable.prototype.toggleView,
_resetView = BootstrapTable.prototype.resetView;
BootstrapTable.prototype.toggleView = function () {
_toggleView.apply(this, Array.prototype.slice.apply(arguments));
if (this.options.resizable && this.options.cardView) {
//Deletes the plugin
$(this.$el).colResizable({disable: true});
}
};
BootstrapTable.prototype.resetView = function () {
var that = this;
_resetView.apply(this, Array.prototype.slice.apply(arguments));
if (this.options.resizable) {
// because in fitHeader function, we use setTimeout(func, 100);
setTimeout(function () {
initResizable(that);
}, 100);
}
};
BootstrapTable.prototype.onResize = function (e) {
var that = $(e.currentTarget);
that.bootstrapTable('resetView');
that.data('bootstrap.table').options.onResizableResize.apply(e);
}
})(jQuery);
......@@ -2,7 +2,7 @@ import request from '@/utils/request'
export function getMaList(params) {
return request({
url: `/league/competition/webList`,
url: `/league/competition/webList?topFlag=1&status=1`,
method: 'get',
params: params
})
......@@ -252,13 +252,7 @@ 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}`,
......@@ -403,9 +397,8 @@ export function commitSign(data) {
}
export function getTotalFee(data) {
return request({
url: `/league/expenseConfig/getTotalFee`,
method: 'post',
data: data
url: `/league/expenseConfig/getTotalFee/${data.cptId}/${data.entryId}`,
method: 'get'
})
}
export function getMemberInfoByCptId(cptId) {
......@@ -463,8 +456,8 @@ export function getMySignListTree(cptId, personId, teamId) {
export function getMySignInfoList(data) {
return request({
url: `/league/sign/getMySignInfoList`,
method: 'post',
data: data
method: 'get',
params: data
})
}
export function saveMyGroupExtraInfo(data) {
......@@ -498,4 +491,18 @@ export function getPayedOrderPdf(cptId, groupId) {
method: 'get'
})
}
//todo
export function bindWdsf(perId,card) {
return request({
url: `/systemj/personInfo/bindWdsf/${perId}?card=${card}`,
method: 'post'
})
}
export function getProjectPageByPerIds(query) {
return request({
url: `/league/competitionProject/getProjectPageByPerIds/${query.cptId}/${query.perIds}`,
method: 'get',
params: query
})
}
......

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 {
margin-bottom: 10px;
}
}
.m20{margin: 20px;}
.flexCenter{display: flex;align-items: center;justify-content: center;}
.flexBetween{display: flex;align-items: center;justify-content: space-between;}
.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);
......@@ -222,8 +224,8 @@ aside {
font-size: 24px;}
.el-dialog__headerbtn{font-size: 24px!important;color: #A0A0A0;}
}
.w200px{width: 200px;}
.w100{width: 100%;}
.w200px{min-width: 200px;}
.pt30{padding-top: 30px;}
.d-form-border{
border: 1px solid #E5E5E5;margin: 20px 0;padding: 20px}
......
......@@ -18,7 +18,7 @@
:accept="accept"
>
<!-- 上传按钮 -->
<el-button type="primary" :disabled="props.disabled">选取文件</el-button>
<el-button type="primary" :disabled="props.disabled">{{ buttonText }}</el-button>
</el-upload>
<!-- 上传提示 -->
<div v-if="showTip && !disabled" class="el-upload__tip">
......@@ -89,6 +89,10 @@ const props = defineProps({
disabled: {
type: Boolean,
default: false
},
buttonText:{
type: String,
default: '上传文件'
}
})
const accept = computed(() => {
......
......@@ -6,40 +6,21 @@
<div class="home-menu forPc" style="margin: 0 20px">
<el-menu
v-if="language==0"
router :default-active="activeIndex" :mode="mode" :ellipsis="true"
popper-effect="dark" @select="handleSelect"
>
<el-menu-item index="/">首页</el-menu-item>
<el-menu-item index="/news">新闻资讯</el-menu-item>
<el-menu-item index="/notice">通知公告</el-menu-item>
<el-menu-item index="/match/list/0">大赛报名</el-menu-item>
<el-menu-item index="/saiC">赛程安排</el-menu-item>
<el-menu-item index="/meta">媒体中心</el-menu-item>
<el-menu-item index="/guide">参赛指南</el-menu-item>
<el-sub-menu index="/about">
<template #title>关于我们</template>
<el-menu-item index="/about/wuDao">舞蹈节</el-menu-item>
<el-menu-item index="/about/culture">地方文化</el-menu-item>
</el-sub-menu>
</el-menu>
<el-menu
v-if="language==1"
router :default-active="activeIndex" mode="horizontal" :ellipsis="true"
popper-effect="dark" @select="handleSelect"
>
<el-menu-item index="/">HOME</el-menu-item>
<el-menu-item index="/news">NEWS</el-menu-item>
<el-menu-item index="/notice">NOTICEBOARD</el-menu-item>
<el-menu-item index="/match/list/0">SIGN UP</el-menu-item>
<el-menu-item index="/saiC">COMPETITIONS</el-menu-item>
<el-menu-item index="/meta">MEDIA</el-menu-item>
<el-menu-item index="/guide">GUIDELINE</el-menu-item>
<el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item>
<el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item>
<el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item>
<el-menu-item index="/match/list/0">{{ language==0?'大赛报名':'SIGN UP' }}</el-menu-item>
<el-menu-item index="/saiC">{{ language==0?'赛程安排':'COMPETITIONS' }}</el-menu-item>
<el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item>
<el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>
<el-sub-menu index="/about">
<template #title>CONTACT & MORE</template>
<el-menu-item index="/about/wuDao">About Us</el-menu-item>
<el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item>
<el-menu-item index="/about/culture">Culture</el-menu-item>
<template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>
<el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>
<el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>
<el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>
</el-sub-menu>
</el-menu>
</div>
......@@ -49,25 +30,19 @@
<el-button :icon="Search" circle @click="searchNews" />
</div>
<div class="languageBtn">
<span v-if="language==0" :class="language==0?'active':''" @click="changeLanguage(0)">中文</span>
<span v-else :class="language==0?'active':''" @click="changeLanguage(0)">CN</span>
<span :class="language==0?'active':''" @click="changeLanguage(0)">{{ language==0?'中文':'CN' }}</span>
|
<span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span>
</div>
<div class="ml20 forPc" >
<el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn">
<span v-if="language==0" @click="goLogin">登录</span>
<span v-if="language==1" @click="goLogin">LOGIN</span>
<span @click="goLogin">{{ language==0?'登录':'LOGIN' }}</span>
<!-- | &nbsp;<span @click="goRegister">注册</span>-->
</el-button>
<el-button v-if="language==0&&isLogin" style="border-radius: 20px;" class="loginBtn">
<span @click="router.push('/center/myInfo')">个人中心</span>
&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')">Personal</span>
&nbsp;&nbsp;<span @click="logout()">Exit</span>
<el-button v-if="isLogin" style="border-radius: 20px;" class="loginBtn">
<span @click="router.push('/center/myInfo')">{{ language==0?'个人中心':'Personal' }}</span>
&nbsp;&nbsp;<span @click="logout()">{{language==0?'退出':'Exit'}}</span>
</el-button>
</div>
</div>
......
......@@ -522,10 +522,16 @@ export const constantRoutes = [
meta: { title: '我的报名' }
},
{
path: 'myTrain',
component: () => import('@/viewsPc/center/myTrain'),
name: 'myTrain',
path: 'myReservation',
component: () => import('@/viewsPc/center/myReservation'),
name: 'myReservation',
meta: { title: '我的预定' }
},
{
path: 'mySms',
component: () => import('@/viewsPc/center/mySms'),
name: 'mySms',
meta: { title: '系统消息' }
}
]
}
......
......@@ -278,6 +278,12 @@ export const constantRoutes = [
redirect: '/match/list',
children: [
{
path: 'pay',
component: () => import('@/viewsPc/match/pay'),
name: 'signPay',
meta: { title: '缴费清单' }
},
{
path: 'list',
component: () => import('@/viewsPc/match/index'),
name: 'matchList',
......@@ -324,6 +330,12 @@ export const constantRoutes = [
component: () => import('@/viewsPc/match/expenseDetails'),
name: 'expenseDetails',
meta: { title: '费用明细' }
},
{
path: 'list/:id/signPreview',
component: () => import('@/viewsPc/match/signPreview'),
name: 'signPreview',
meta: { title: '提交审核' }
}
]
},
......@@ -391,26 +403,43 @@ export const constantRoutes = [
meta: { title: '个人中心' }
},
{
path: 'myTeam',
component: () => import('@/viewsPc/center/teamInfo'),
name: 'myTeam',
meta: { title: '我的团队' }
path: 'myPassword',
component: () => import('@/viewsPc/center/myPassword'),
name: 'myPassword',
meta: { title: '修改密码' }
},
{
path: 'myCertification',
component: () => import('@/viewsPc/center/myCertification'),
name: 'myCertification',
meta: { title: 'institutional accreditation' }
},
{
path: 'myMember',
component: () => import('@/viewsPc/center/myMember'),
name: 'myMember',
meta: { title: 'Player Management' }
},
{
path: 'myMatch',
component: () => import('@/viewsPc/center/myMatch'),
name: 'myMatch',
meta: { title: '我的赛事' }
meta: { title: 'My registration' }
},
{
path: 'myTrain',
component: () => import('@/viewsPc/center/myTrain'),
name: 'myTrain',
meta: { title: '我的培训' }
}
]
path: 'myReservation',
component: () => import('@/viewsPc/center/myReservation'),
name: 'myReservation',
meta: { title: 'My reservation' }
},
{
path: 'mySms',
component: () => import('@/viewsPc/center/mySms'),
name: 'mySms',
meta: { title: 'System messages' }
}
]
}]
}
]
......
......@@ -14,6 +14,7 @@ import { saveAs } from 'file-saver'
import useUserStore from '@/store/modules/user'
import { sendNotification } from '@/assets/lib/extend'
import _ from 'lodash'
const language = cache.local.get('language') || 0
let downloadLoadingInstance
// 是否显示重新登录
......@@ -21,7 +22,7 @@ export const isRelogin = { show: false }
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 对应国际化资源文件后缀
axios.defaults.headers['Content-Language'] = 'zh_CN'
axios.defaults.headers['Content-Language'] = (language==0? 'zh_CN':'en_US' )
// 创建axios实例
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
......
......@@ -4,7 +4,7 @@
<el-row :gutter="20">
<el-col :lg="5" :md="5" :xl="6" :sm="8" :xs="8">
<el-card class="mb20">
<div class="center-menu">
<div :class="language==0?'center-menu':'center-menu en-menu'">
<ul v-if="user.utype=='2'">
<li
v-for="(m, i) in menus"
......@@ -13,7 +13,7 @@
>
<a href="javascript:void(0)" @click="toInfo(m)">
<img :src="m.isActive ? m.picUrl2 : m.picUrl1">
{{ m.name }}
{{m.name}}
</a>
</li>
</ul>
......@@ -46,6 +46,8 @@ import {useRoute, useRouter} from 'vue-router'
import {onMounted} from '@vue/runtime-core'
import useUserStore from '@/store/modules/user'
import _ from 'lodash'
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const route = useRoute()
const router = useRouter()
......@@ -53,50 +55,50 @@ const router = useRouter()
const user = ref({})
const menus = ref([
{
name: '基础信息',
name: language.value==0?'基础信息':'Basic Information',
routeName: 'myInfo',
picUrl1: '/img/nav_26.png',
picUrl2: '/img/nav_26_dwn.png',
isActive: false
},
{
name: '修改密码',
name: language.value==0?'修改密码':'Change Password',
routeName: 'myPassword',
picUrl1: '/img/nav_27.png',
picUrl2: '/img/nav_27_dwn.png',
isActive: false
},
{
name: '团队认证',
name: language.value==0?'团队认证':'Institutional Accreditation',
routeName: 'myCertification',
picUrl1: '/img/nav_32.png',
picUrl2: '/img/nav_32_dwn.png',
isActive: false
},
{
name: '选手管理',
name: language.value==0?'选手管理':'Player Management',
routeName: 'myMember',
picUrl1: '/img/nav_31.png',
picUrl2: '/img/nav_31_dwn.png',
isActive: false
},
{
name: '我的报名',
name: language.value==0?'我的报名':'My Eegistration',
routeName: 'myMatch',
picUrl1: '/img/nav_28.png',
picUrl2: '/img/nav_28_dwn.png',
isActive: false
},
{
name: '我的预定',
routeName: 'myMatch',
name: language.value==0?'我的预定':'My Reservation',
routeName: 'myReservation',
picUrl1: '/img/nav_29.png',
picUrl2: '/img/nav_29_dwn.png',
isActive: false
},
{
name: '系统消息',
routeName: 'myTrain',
name: language.value==0?'系统消息':'System messages',
routeName: 'mySms',
picUrl1: '/img/nav_30.png',
picUrl2: '/img/nav_30_dwn.png',
isActive: false
......@@ -104,36 +106,36 @@ const menus = ref([
])
const menusPersonal = ref([
{
name: '基础信息',
name: language.value==0?'基础信息':'Basic Information',
routeName: 'myInfo',
picUrl1: '/img/nav_26.png',
picUrl2: '/img/nav_26_dwn.png',
isActive: false
},
{
name: '修改密码',
name: language.value==0?'修改密码':'Change Password',
routeName: 'myPassword',
picUrl1: '/img/nav_27.png',
picUrl2: '/img/nav_27_dwn.png',
isActive: false
},
{
name: '我的报名',
name: language.value==0?'我的报名':'My Eegistration',
routeName: 'myMatch',
picUrl1: '/img/nav_28.png',
picUrl2: '/img/nav_28_dwn.png',
isActive: false
},
{
name: '我的预定',
routeName: 'myMatch',
name: language.value==0?'我的预定':'My Reservation',
routeName: 'myReservation',
picUrl1: '/img/nav_29.png',
picUrl2: '/img/nav_29_dwn.png',
isActive: false
},
{
name: '系统消息',
routeName: 'myTrain',
name: language.value==0?'系统消息':'System messages',
routeName: 'mySms',
picUrl1: '/img/nav_30.png',
picUrl2: '/img/nav_30_dwn.png',
isActive: false
......@@ -174,12 +176,18 @@ const toInfo = (item) => {
li {
margin-bottom: 15px;
}
&.en-menu{text-align: left;
li{padding: 6px 0 6px 14px;
a{display: flex;align-items: center;}
}
img{padding: 0;width: 26px;}
}
}
li img {
display: inline-block;
vertical-align: middle;
margin-right: 20px;
margin-right: 10px;
padding: 5px;
}
......
<template>
<el-card :body-style="{'padding':'0'}">
<div class="indexTitle"><h3 class="leftboderTT">团队认证</h3></div>
<el-card :body-style="{'padding':'0'}" class="mb20">
<div class="indexTitle">
<h3 class="leftboderTT">{{ language==0?'团队认证':'Institutional Accreditation' }}</h3>
</div>
<div class="pd20">
<el-form :model="form" label-width="160px">
<el-form :model="form" label-width="160px" :label-position="language==0?'left':'top'">
<fieldset class="fieldset-form">
<legend>机构类型</legend>
<legend>{{ language==0?'机构类型':'Institution Type' }}</legend>
<div class="pt30">
<el-form-item label="选择机构类型" required>
<el-form-item :label="language==0?'选择机构类型':'Select institution type'" required>
<el-radio-group v-model="form.type">
<el-radio-button label="0">普通院校</el-radio-button>
<el-radio-button label="1">专业舞蹈学校</el-radio-button>
<el-radio-button label="2">培训机构/俱乐部</el-radio-button>
<el-radio-button label="3">地方协会</el-radio-button>
<el-radio-button label="4">国家协会</el-radio-button>
<el-radio-button label="0">{{ language==0?'普通院校':'School' }}</el-radio-button>
<el-radio-button label="1">{{ language==0?'专业舞蹈学校':'Professional dance school' }}</el-radio-button>
<el-radio-button label="2">{{ language==0?'培训机构/俱乐部':'Company/Club' }}</el-radio-button>
<el-radio-button label="3">{{ language==0?'地方协会':'Local Association' }}</el-radio-button>
<el-radio-button label="4">{{ language==0?'国家协会':'National Association' }}</el-radio-button>
</el-radio-group>
</el-form-item>
</div>
</fieldset>
<fieldset class="fieldset-form mt30">
<legend>机构基础信息 </legend>
<legend>{{ language==0?'机构基础信息':'Institutional Basic Information' }} </legend>
<div class="pt30" style="max-width: 500px">
<el-form-item label="所属国家" required>
<el-form-item :label="language==0?'所属国家':'Nationality'" required>
<el-select filterable v-model="form.countryId">
<el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id" />
<el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="详细地址" required prop="address">
<el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address">
<el-cascader v-if="form.countryId == 240"
v-model="form.regionId"
style="width: 100%;"
:options="regionsList"
:props="{ label:'text' }"
/>
<el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/>
<el-input type="textarea" v-model="form.address" class="mt10"/>
</el-form-item>
<el-form-item label="机构名称" required prop="name">
<el-input type="text" v-model="form.name" placeholder="请输入内容"/>
<el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name">
<el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item label="联系人姓名" required prop="contactPerson">
<el-input type="text" v-model="form.contactPerson" placeholder="请输入内容"/>
<el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson">
<el-input type="text" v-model="form.contactPerson" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item label="联系人电话" required prop="contactTelno">
<el-input v-model="form.contactTelno" type="phone" placeholder="请输入内容"/>
<el-form-item :label="language==0?'联系人电话':'Contact Phone'" required prop="contactTelno">
<el-input v-model="form.contactTelno" type="phone" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item label="联系人邮箱" required prop="contactEmail">
<el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/>
<el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail">
<el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
</div>
</fieldset>
<fieldset class="fieldset-form mt30">
<legend>机构认证信息 </legend>
<legend>{{ language==0?'机构认证信息':'Institutional certification information' }} </legend>
<div class="pt30" style="max-width: 500px">
<el-form-item label="机构代码" required prop="orgCode">
<el-input type="text" v-model="form.orgCode" placeholder="请输入内容"/>
<el-form-item :label="language==0?'机构代码':'Organization Code'" required prop="orgCode">
<el-input type="text" v-model="form.orgCode" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item label="机构证件" required prop="orgCert">
<file-upload v-model="form.orgCert"/>
<el-form-item :label="language==0?'机构证件':'Institutional documents'" required prop="orgCert">
<file-upload v-model="form.orgCert" :button-text="language==0?'上传文件':'Upload'"/>
</el-form-item>
</div>
</fieldset>
<fieldset class="fieldset-form mt30">
<legend>机构法人信息 </legend>
<legend>{{ language==0?'机构法人信息':'Institutional legal person information' }} </legend>
<div class="pt30" style="max-width: 500px">
<el-form-item label="法人姓名" required prop="orgCode">
<el-input type="text" v-model="form.orgCode" placeholder="请输入内容"/>
<el-form-item :label="language==0?'法人姓名':'Legal Person Name'" required prop="orgCode">
<el-input type="text" v-model="form.orgCode" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item label="法定代表人身份文件" required prop="orgCert">
<file-upload v-model="form.orgCert"/>
<el-form-item :label="language==0?'法定代表人身份文件':'Identity documents of the legal representative'" required prop="orgCert">
<file-upload v-model="form.orgCert" :button-text="language==0?'上传文件':'Upload'"/>
</el-form-item>
</div>
......@@ -77,7 +79,7 @@
</el-form>
<div class="text-center mt30">
<el-button type="primary" class="btn-lineG w200px" round>提交审核</el-button>
<el-button type="primary" class="btn-lineG w200px" round>{{ language==0?'提交审核':'Submit' }}</el-button>
</div>
</div>
</el-card>
......@@ -91,9 +93,12 @@ import {useRouter} from 'vue-router'
import {ElMessage, ElMessageBox} from 'element-plus'
import FileUpload from "@/components/FileUpload";
import * as match from "@/apiPc/match";
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const form = ref({})
const regionsList = ref([])
const countryList = ref([])
function submit() {
commitAudit().then(res => {
......@@ -101,9 +106,15 @@ function submit() {
}
onMounted(() => {
getCountryList()
getRegionsList()
getData()
})
function getCountryList() {
match.countryList().then(res => {
countryList.value = res.data
})
}
function getRegionsList() {
match.regionsList().then(res => {
regionsList.value = res.data
......
<template>
<div>
<el-card :body-style="{'padding':'0'}">
<div class="indexTitle"><h3 class="leftboderTT">机构基础信息</h3></div>
<div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'机构基础信息':'Institutional Basic Information' }}</h3></div>
<!-- uType字段 1 是个人 2是团体-->
<!-- {{user}}-->
<team-info :form="myform" v-if="user.utype=='2'"/>
<team-info :form="myform" :language="language" v-if="user.utype=='2'"/>
</el-card>
......@@ -20,7 +20,8 @@ import { ElMessage, ElMessageBox } from 'element-plus'
import { nationList } from '@/assets/js/data'
import {getGroupInfo} from "@/apiPc/match";
import TeamInfo from "@/viewsPc/center/teamInfo";
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const router = useRouter()
const { proxy } = getCurrentInstance()
const props = defineProps({
......
<template>
<el-card>
<el-card class="mb20">
<div class="funcBtns">
<el-button type="primary" @click="addMember">添加选手</el-button>
<el-button type="primary" plain @click="importSportman">导入选手</el-button>
<el-button type="primary" @click="addMember">{{ language==0?'添加选手':'Add Player'}}</el-button>
<el-button type="primary" plain @click="importSportman">{{ language==0?'导入选手':'Import Player' }}</el-button>
<el-button type="primary" plain>
<a href="/file/sportsmanTemplate.xlsx" target="_blank">下载模板</a>
<a href="/file/sportsmanTemplate.xlsx" target="_blank">Download template</a>
</el-button>
</div>
<div class="from-Card">
<el-form :inline="true" :model="query" class="mt20" label-width="60" size="small">
<el-form-item label="姓名">
<el-form-item :label="language==0?'姓名':'Name'">
<el-input v-model="query.realName" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="短名">
<el-form-item :label="language==0?'短名':'Short Name'">
<el-input v-model="query.shortName" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="手机号码">
<el-form-item :label="language==0?'手机号码':'Phone Number'">
<el-input v-model="query.phone" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="邮箱">
<el-form-item :label="language==0?'邮箱':'E-mail'">
<el-input v-model="query.email" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="证件类型">
<el-form-item :label="language==0?'证件类型':'ID Type'">
<el-input v-model="query.idcType" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="证件号">
<el-form-item :label="language==0?'证件号码':'ID NO.'">
<el-input v-model="query.idcode" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="角色">
<el-input v-model="query.label" style="width: 120px;" clearable/>
<el-form-item :label="language==0?'会员角色':'Role'">
<el-select v-model="query.label" multiple>
<el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?(l.label):(l.enlabel)"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getList">查询</el-button>
<el-button type="primary" @click="getList">{{ language==0?'查询':'Search' }}</el-button>
</el-form-item>
</el-form>
</div>
<!-- 人员表格-->
<person-table :table-data="tableData" @edit="editCoach" @delete="delperson"/>
<el-table :data="tableData" class="mt20">
<el-table-column type="index" label="序号" width="80" align="center"/>
<el-table-column label="所属国家" prop="countryName"/>
<el-table-column label="姓氏" prop="xing"/>
<el-table-column label="名" prop="ming"/>
<el-table-column label="短名" prop="shortName"/>
<el-table-column label="性别" prop="sexStr"/>
<el-table-column label="年龄" prop="age"/>
<el-table-column label="出生日期" prop="birth" width="100"/>
<el-table-column label="手机号码" prop="phone" width="120"/>
<el-table-column label="邮箱" prop="email" width="150"/>
<el-table-column label="证件类型" prop="idcTypeStr"/>
<el-table-column label="证件号码" prop="idcCode" width="200"/>
<el-table-column label="会员角色">
<template #default="scope">
<span v-for="item in scope.row.label?.split(',')" :key="item.id">
<el-tag type="primary" size="mini" v-if="item==='0'" effect="dark" class="ml10">运动员</el-tag>
<el-tag type="info" size="mini" v-if="item==='1'" effect="dark" class="ml10">教练</el-tag>
<el-tag type="info" size="mini" v-if="item==='2'" effect="dark" class="ml10">领队</el-tag>
<el-tag type="info" size="mini" v-if="item==='3'" effect="dark" class="ml10">队医</el-tag>
<el-tag type="info" size="mini" v-if="item==='4'" effect="dark" class="ml10">翻译</el-tag>
<el-tag type="info" size="mini" v-if="item==='5'" effect="dark" class="ml10">官员</el-tag>
<el-tag type="info" size="mini" v-if="item==='6'" effect="dark" class="ml10">其他</el-tag>
</span>
</template>
</el-table-column>
<el-table-column label="详细地址" prop="address"/>
<el-table-column label="操作" fixed="right" width="160" header-align="center" align="center">
<template #default="scope">
<a class="text-primary pd10" @click="editCoach(scope.row)">编辑</a>
<a class="text-primary pd10" @click="delperson(scope.row)">删除</a>
</template>
</el-table-column>
</el-table>
<paginationPc
v-show="total>0"
v-model:page="query.pageNum"
......@@ -100,20 +68,32 @@ import * as match from '@/apiPc/match'
import {ElMessage, ElMessageBox} from 'element-plus'
import {getGroupPersonList} from "@/apiPc/match";
import PersonTable from "@/viewsPc/match/components/personTable";
import cache from "@/plugins/cache";
import useUserStore from "@/store/modules/user";
const language = ref(cache.local.get('language') || 0)
const tableData = ref([])
const labels = ref([
{value: '0', label: '运动员', enlabel: 'Sportsman'},
{value: '1', label: '教练', enlabel: 'Coach'},
{value: '2', label: '领队', enlabel: 'Leader'},
{value: '3', label: '队医', enlabel: 'Nurse'},
{value: '4', label: '翻译', enlabel: 'Translator'},
{value: '5', label: '官员', enlabel: 'Official'},
{value: '6', label: '其他', enlabel: 'Other'}
])
const query = ref({
pageNum: 1, pageSize: 10
})
const total = ref(0)
const groupId = ref('1759813142128967681')
const group = useUserStore().group
const groupId = ref(group.id)
onMounted(() => {
getList(groupId.value)
})
function addMember() {
const params = {
title: '添加人员',
title: language.value==0?'添加人员':'Add',
id: 0,
groupId: groupId.value
}
......@@ -122,7 +102,7 @@ function addMember() {
function importSportman() {
const params = {
title: '批量导入选手',
title: language.value==0?'批量导入选手':'Import',
groupId: groupId.value
}
proxy.$refs['dialogImportProps'].open(params)
......@@ -135,23 +115,38 @@ function getList() {
})
}
function editCoach(row) {
function editCoach(row,title) {
const params = {
id: row.id,
groupId: row.groupId
groupId: row.groupId,
title: title
}
proxy.$refs['dialogAddCoach'].open(params)
}
function delperson(p) {
//删除团队下的人
ElMessageBox.confirm(`确定删除${p.realName}吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
let text = ''
let t = '提示'
let s = '确定'
let c = '取消'
let msg = '操作成功'
if (language.value==0){
text = `确定删除${p.realName}吗?`
} else {
text = `Delete ${p.realName}?`
t = 'Tips'
s = 'Confirm'
c = 'Cancel'
msg = ' Successful!'
}
ElMessageBox.confirm(text, t, {
confirmButtonText: s,
cancelButtonText: c,
type: 'warning'
}).then(() => {
match.delPerson(p.id).then(res => {
ElMessage.success('操作成功')
ElMessage.success(msg)
getList(groupId.value)
})
})
......
<template>
<div>
<div class="mb20">
<el-card :body-style="{'padding':'0'}">
<div class="indexTitle"><h3 class="leftboderTT">修改密码</h3></div>
<div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'修改密码':'Change Password' }}</h3></div>
<div class="pd20">
<div class="d-form-border" style="margin-top: 0">
<el-form class="d-form" ref="pwdRef" :model="user" :rules="rules" label-width="120px"
<el-form class="d-form" ref="pwdRef" :model="user" :rules="rules"
label-width="120px" :label-position="language==0?'left':'top'"
style="max-width: 500px;margin: auto">
<el-form-item label="旧密码" prop="oldPassword">
<el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password/>
<el-form-item :label="language==0?'旧密码':'Old Password'" prop="oldPassword">
<el-input v-model="user.oldPassword" :placeholder="language==0?'请输入旧密码':''" type="password" show-password/>
</el-form-item>
<el-form-item label="新密码" prop="newPassword">
<el-input v-model="user.newPassword" placeholder="请设置8位以上大小写字母、数字、特殊符号" type="password"
<el-form-item :label="language==0?'新密码':'New Password'" prop="newPassword">
<el-input v-model="user.newPassword" :placeholder="language==0?'请设置8位以上大小写字母、数字、特殊符号':''" type="password"
show-password/>
</el-form-item>
<el-form-item label="确认密码" prop="confirmPassword">
<el-input v-model="user.confirmPassword" placeholder="请确认新密码" type="password" show-password/>
<el-form-item :label="language==0?'确认密码':'Confirm Password'" prop="confirmPassword">
<el-input v-model="user.confirmPassword" :placeholder="language==0?'请确认新密码':''" type="password" show-password/>
</el-form-item>
</el-form>
</div>
<el-row justify="center">
<el-button type="primary" class="btn-lineG" @click="submit">保存</el-button>
<el-button type="primary" class="btn-lineG" @click="submit">{{ language==0?'保存':'Save' }}</el-button>
</el-row>
</div>
</el-card>
......@@ -33,6 +34,8 @@ import {updateUserPwd} from '@/api/system/user'
import useUserStore from '@/store/modules/user'
import {reactive, ref, getCurrentInstance} from 'vue'
import {validPassword} from '@/utils/validate'
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const show = ref(false)
const {proxy} = getCurrentInstance()
......
<template>
<div>
<el-card :body-style="{'padding':'0'}">
<div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'我的预订':'My reservation' }}</h3></div>
<el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0"/>
<div class="pd20"></div>
</el-card>
</div>
</template>
<script setup>
import cache from "@/plugins/cache";
import {onMounted} from "@vue/runtime-core";
const language = ref(cache.local.get('language') || 0)
const list = ref([])
</script>
<style scoped lang="scss">
.indexTitle {
margin: 20px 0 12px;
padding: 0 20px 15px;
border-bottom: 1px solid #e5e5e5;
h3 {
font-size: 16px;
color: var(--el-color-primary);
}
}
</style>
<template>
<div>
<el-card :body-style="{'padding':'0'}">
<div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'系统消息':'System messages' }}</h3></div>
<ul>
<li v-for="(n,index) in list" :key="index">
<div class="dot"></div>
<h3>{{ n.title }}</h3>
<span>{{ n.time }}</span>
</li>
</ul>
<el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0"/>
</el-card>
</div>
</template>
<script setup>
import cache from "@/plugins/cache";
import {onMounted} from "@vue/runtime-core";
const language = ref(cache.local.get('language') || 0)
const list = ref([])
onMounted(()=>{
getList()
})
const getList =()=>{
list.value = []
}
</script>
<style scoped lang="scss">
.indexTitle {
margin: 20px 0 12px;
padding: 0 20px 15px;
border-bottom: 1px solid #e5e5e5;
h3 {
font-size: 16px;
color: var(--el-color-primary);
}
}
ul{padding: 20px;
li{background: #FBFCFD;position: relative;padding: 20px 20px 20px 40px;margin-bottom: 18px;
cursor: pointer;
&:hover{
h3{color: var(--el-color-primary)}
}
.dot{position: absolute;width: 7px;
height: 7px;left: 20px;top: 24px;
background: #C5161E;
border-radius: 50%;}
h3{font-weight: 400;margin: 0;
font-size: 16px;
color: #29343C;}
span{font-weight: 400;display: inline-block;
font-size: 12px;margin: 10px 0 0;
color: #929AA0;}
}
}
</style>
......@@ -2,37 +2,37 @@
<div class="pd20">
<div class="d-form-border" style="margin-top: 0">
<el-form class="d-form" size="large" :model="form" ref="registerRef" :rules="registerRules" label-width="120"
style="max-width: 500px;margin: auto">
<el-form-item label="用户名">
:label-position="language==0?'left':'top'" style="max-width: 500px;margin: auto">
<el-form-item :label="language==0?'用户名':'Account'">
{{userName}}
</el-form-item>
<el-form-item label="所属国家" required>
<el-form-item :label="language==0?'所属国家':'Nationality'" required>
<el-select filterable v-model="form.countryId">
<el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id" />
<el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="详细地址" required prop="address">
<el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address">
<el-cascader v-if="form.countryId == 240"
v-model="form.regionId"
style="width: 100%;"
:options="regionsList"
:props="{ label:'text' }"
/>
<el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/>
<el-input type="textarea" v-model="form.address" class="mt10" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item label="机构名称" required prop="name">
<el-input type="text" v-model="form.name" placeholder="请输入内容"/>
<el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name">
<el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item label="联系人姓名" required prop="contactPerson">
<el-input type="text" v-model="form.contactPerson" placeholder="请输入内容"/>
<el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson">
<el-input type="text" v-model="form.contactPerson" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item label="联系人电话" required prop="contactTelno">
<el-input v-model="form.contactTelno" type="phone" placeholder="请输入内容"/>
<el-form-item :label="language==0?'联系人电话':'Contact Phone'" required prop="contactTelno">
<el-input v-model="form.contactTelno" type="phone" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item label="联系人邮箱" required prop="contactEmail">
<el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/>
<el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail">
<el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item prop="imgUrl" required label="机构LOGO">
<el-form-item prop="imgUrl" required :label="language==0?'机构Logo':'Group Logo'">
<ImageUpload2
v-model="form.imgUrl" :crop-height="200" :crop-width="200" :limit="1"
:is-show-tip="false"
......@@ -41,7 +41,7 @@
</el-form>
</div>
<div class="text-center">
<el-button type="primary" class="btn-lineG" round @click="save">确定修改</el-button>
<el-button type="primary" class="btn-lineG" round @click="save">{{ language==0?'确定修改':'Save' }}</el-button>
</div>
</div>
......@@ -62,6 +62,10 @@ const props = defineProps({
form:{
type:Object,
required:true
},
language:{
type:Number,
required:true
}
})
const countryList = ref([])
......
......@@ -3,12 +3,7 @@
<div class="box ph-30">
<el-card>
<el-steps :active="activeStep" align-center>
<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>
<team-sign-step :activeStep="activeStep" :language="language"/>
</el-card>
<el-row class="mt20" :gutter="20">
......@@ -17,7 +12,9 @@
<template #header>
<div class="card-header">
<img src="@/assets/sign/tag01.png"/>
教练<span class="tip">(教练/领队,至少选择一项)</span>
{{ language==0?'教练':'Coach' }}
<span class="tip" v-if="language==0">(教练/领队,至少选择一项)</span>
<span class="tip" v-else>(Coach/Team Leader, select at least one)</span>
</div>
</template>
<div class="chooseForm">
......@@ -40,7 +37,9 @@
<template #header>
<div class="card-header">
<img src="@/assets/sign/tag02.png"/>
领队<span class="tip">(教练/领队,至少选择一项)</span>
{{ language==0?'领队':'Team leader' }}
<span class="tip" v-if="language==0">(教练/领队,至少选择一项)</span>
<span class="tip" v-else>(Coach/Team Leader, select at least one)</span>
</div>
</template>
<div class="chooseForm">
......@@ -63,7 +62,7 @@
<template #header>
<div class="card-header">
<img src="@/assets/sign/tag03.png"/>
队医
{{ language==0?'队医':'Team doctor' }}
</div>
</template>
<div class="chooseForm">
......@@ -86,7 +85,7 @@
<template #header>
<div class="card-header">
<img src="@/assets/sign/tag04.png"/>
翻译
{{ language==0?'翻译':'Translator' }}
</div>
</template>
<div class="chooseForm">
......@@ -109,7 +108,7 @@
<template #header>
<div class="card-header">
<img src="@/assets/sign/tag05.png"/>
官员
{{ language==0?'官员':'Official' }}
</div>
</template>
<div class="chooseForm">
......@@ -132,7 +131,7 @@
<template #header>
<div class="card-header">
<img src="@/assets/sign/tag06.png"/>
其他
{{ language==0?'其他':'Other' }}
</div>
</template>
<div class="chooseForm">
......@@ -153,8 +152,8 @@
</el-row>
<el-card class="mt20">
<div class="text-center">
<el-button type="primary" class="w200px" plain round @click="goPrev()">上一步</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="goNext()">下一步</el-button>
<el-button type="primary" class="w200px" plain round @click="goPrev()">{{ language==0?'上一步':'Go back' }}</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="goNext()">{{language==0?'下一步':'Next'}}</el-button>
</div>
</el-card>
......@@ -171,7 +170,8 @@ 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'
import TeamSignStep from './components/teamSignStep'
import cache from "@/plugins/cache"
const {proxy} = getCurrentInstance()
const router = useRouter()
const route = useRoute()
......@@ -326,7 +326,7 @@ function goNext() {
}
})
})
} else if (signType.value == '1') {
} else {
// 团队报名
match.groupSignSavePerson(obj).then(res => {
router.push({
......
......@@ -13,21 +13,20 @@
:is-show-tip="false"
/>
</el-form-item>
<el-form-item label="姓氏" prop="xing" required>
<el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required>
<el-input v-model="form.xing"/>
</el-form-item>
<el-form-item label="短名" prop="shortName" required>
<el-form-item :label="language==0?'短名':'short name'" prop="shortName" required>
<el-input v-model="form.shortName" placeholder="赛事用名"/>
</el-form-item>
<el-form-item label="出生日期" prop="birth" required>
<el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required>
<el-date-picker
v-model="form.birth"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
placeholder="请选择出生日期"
/>
</el-form-item>
<el-form-item label="证件类型" prop="idcType" required>
<el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required>
<el-select v-model="form.idcType" style="width: 100%;">
<el-option
v-for="item in certificates"
......@@ -37,17 +36,17 @@
/>
</el-select>
</el-form-item>
<el-form-item label="手机号码" prop="phone" required>
<el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required>
<el-input v-model="form.phone" type="number"/>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="所属国家" prop="countryId" required>
<el-form-item :label="language==0?'所属国家':'Nationality'" prop="countryId" required>
<el-select v-model="form.countryId" style="width: 100%;" @change="changeCountryId">
<el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id"/>
<el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item label="详细地址" prop="address" required>
<el-form-item :label="language==0?'详细地址':'Address'" prop="address" required>
<el-cascader v-if="form.countryId == 240"
v-model="form.regionId"
style="width: 100%;margin-bottom: 15px"
......@@ -57,24 +56,24 @@
<el-input v-model="form.address" type="textarea" :rows="4"/>
</el-form-item>
<el-form-item label="名" prop="ming" required>
<el-form-item :label="language==0?'名':'name'" prop="ming" required>
<el-input v-model="form.ming"/>
</el-form-item>
<el-form-item label="性别" prop="sex">
<el-form-item :label="language==0?'性别':'sex'" prop="sex">
<el-radio-group v-model="form.sex">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
<el-radio label="0">{{ language==0?'女':'female' }}</el-radio>
<el-radio label="1">{{ language==0?'男':'male' }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="邮箱" prop="idcCode" required>
<el-form-item :label="language==0?'邮箱':'Email'" prop="idcCode" required>
<el-input v-model="form.email"/>
</el-form-item>
<el-form-item label="证件号码" prop="idcCode" required>
<el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required>
<el-input v-model="form.idcCode" @blur="checkCode"/>
</el-form-item>
<el-form-item label="主要会员角色" prop="labelArr">
<el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr">
<el-select v-model="form.labelArr" multiple @change="labelvalue">
<el-option v-for="l in labels" :key="l.value" :value="l.value" :label="l.label"/>
<el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/>
</el-select>
</el-form-item>
</el-col>
......@@ -82,7 +81,7 @@
</el-form>
<template #footer>
<div class="dialog-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?'确定':'Save' }}</el-button>
</div>
</template>
</el-dialog>
......@@ -96,6 +95,8 @@ import {certificates} from '@/assets/lib/nation'
import {ElMessage} from 'element-plus'
import {nationList} from '@/assets/js/data'
import _ from 'lodash'
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const {proxy} = getCurrentInstance()
const emit = defineEmits(['submitForm'])
......@@ -122,13 +123,14 @@ const data = reactive({
show: false,
countryList: [],
regionsList: [],
labels: [{value: '0', label: '运动员'},
{value: '1', label: '教练'},
{value: '2', label: '领队'},
{value: '3', label: '队医'},
{value: '4', label: '翻译'},
{value: '5', label: '官员'},
{value: '6', label: '其他'}
labels: [
{value: '0', label: '运动员', enlabel: 'Sportsman'},
{value: '1', label: '教练', enlabel: 'Coach'},
{value: '2', label: '领队', enlabel: 'Leader'},
{value: '3', label: '队医', enlabel: 'Nurse'},
{value: '4', label: '翻译', enlabel: 'Translator'},
{value: '5', label: '官员', enlabel: 'Official'},
{value: '6', label: '其他', enlabel: 'Other'}
],
title: '添加选手信息',
groupId: '0',
......
<template>
<el-dialog v-model="show" :title="title" width="1000px" append-to-body>
<div class="funcBtns">
<el-button type="primary" @click="addMember">添加选手</el-button>
<el-button type="primary" plain @click="importSportman">导入选手</el-button>
<el-button type="primary" @click="addMember">
{{ language == 0 ? '添加选手' : 'Add Player' }}
</el-button>
<el-button type="primary" plain @click="importSportman">
{{language == 0 ? '导入选手' : 'Import Player'}}
</el-button>
</div>
<div class="from-Card">
<el-form :inline="true" :model="query" class="mt20" label-width="60" size="small">
<el-form-item label="姓名">
<el-form-item :label="language==0?'姓名':'Name'">
<el-input v-model="query.realName" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="短名">
<el-form-item :label="language==0?'短名':'Short Name'">
<el-input v-model="query.shortName" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="手机号码">
<el-form-item :label="language==0?'手机号码':'Phone Number'">
<el-input v-model="query.phone" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="邮箱">
<el-form-item :label="language==0?'邮箱':'E-mail'">
<el-input v-model="query.email" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="证件类型">
<el-form-item :label="language==0?'证件类型':'ID Type'">
<el-input v-model="query.idcType" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="证件号">
<el-form-item :label="language==0?'证件号码':'ID NO.'">
<el-input v-model="query.idcode" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item label="角色">
<el-input v-model="query.label" style="width: 120px;" clearable/>
</el-form-item>
<!-- <el-form-item label="角色">-->
<!-- <el-input v-model="query.label" style="width: 120px;" clearable/>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" @click="getList">查询</el-button>
<el-button type="primary" @click="getList">{{language==0?'查询':'Search'}}</el-button>
</el-form-item>
</el-form>
</div>
<p v-if="noPhotoCanSign == 0" class="text-danger">*需上传照片才可报名</p>
<el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh"
@selection-change="handleSelectionChange">
<el-table-column type="selection" label="选择" :selectable="selectable"/>
<el-table-column label="所属国家" prop="countryName"/>
<el-table-column label="姓氏" prop="xing"/>
<el-table-column label="名" prop="ming"/>
<el-table-column label="短名" prop="shortName"/>
<el-table-column label="性别" prop="sexStr"/>
<el-table-column label="年龄" prop="age"/>
<el-table-column label="出生日期" prop="birth" width="100"/>
<el-table-column label="手机号码" prop="phone" width="120"/>
<el-table-column label="邮箱" prop="email" width="150"/>
<el-table-column label="证件类型" prop="idcTypeStr"/>
<el-table-column label="证件号码" prop="idcCode" width="200"/>
<el-table-column label="会员角色" width="200">
<template #default="scope">
<div>
<div style="white-space: nowrap" class="esp">
<span v-for="item in scope.row.label?.split(',')" :key="item.id">
<el-tag type="warning" size="small" v-if="item==='0'" effect="plain" class="ml10">运动员</el-tag>
<el-tag type="warning" size="small" v-if="item==='1'" effect="plain" class="ml10">教练</el-tag>
<el-tag type="warning" size="small" v-if="item==='2'" effect="plain" class="ml10">领队</el-tag>
<el-tag type="warning" size="small" v-if="item==='3'" effect="plain" class="ml10">队医</el-tag>
<el-tag type="warning" size="small" v-if="item==='4'" effect="plain" class="ml10">翻译</el-tag>
<el-tag type="warning" size="small" v-if="item==='5'" effect="plain" class="ml10">官员</el-tag>
<el-tag type="warning" size="small" v-if="item==='6'" effect="plain" class="ml10">其他</el-tag>
</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="详细地址" prop="address"/>
<el-table-column label="操作" width="120" fixed="right" align="center">
<el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
<el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
<el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
<el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/>
<el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
<el-table-column :label="language==0?'年龄':'Age'" prop="age"/>
<el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/>
<el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/>
<el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/>
<el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/>
<el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/>
<!-- <el-table-column label="会员角色" width="200">-->
<!-- <template #default="scope">-->
<!-- <div>-->
<!-- <div style="white-space: nowrap" class="esp">-->
<!-- <span v-for="item in scope.row.label?.split(',')" :key="item.id">-->
<!-- <span v-if="item==='0'" class="ml5">{{ language==0?'运动员':'athletes' }}</span>-->
<!-- <span v-if="item==='1'" class="ml5">{{ language==0?'教练':'coach' }}</span>-->
<!-- <span v-if="item==='2'" class="ml5">{{ language==0?'领队':'team leader' }}</span>-->
<!-- <span v-if="item==='3'" class="ml5">{{ language==0?'队医':'team doctor' }}</span>-->
<!-- <span v-if="item==='4'" class="ml5">{{ language==0?'翻译':'translator' }}</span>-->
<!-- <span v-if="item==='5'" class="ml5">{{ language==0?'官员':'official' }}</span>-->
<!-- <span v-if="item==='6'" class="ml5">{{ language==0?'其他':'other' }}</span>-->
<!-- </span>-->
<!-- </div>-->
<!-- </div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>
<el-table-column :label="language==0?'操作':'Actions'" width="120" fixed="right" align="center">
<template #default="scope">
<el-button type="text" @click="editPerson(scope.row)">编辑</el-button>
<el-button type="text" @click="editPerson(scope.row)">
{{language==0?'编辑':'Edit'}}
</el-button>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" @click="submitForm">确定</el-button>
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="submitForm">{{language==0?'确定':'Confirm'}}</el-button>
<el-button @click="cancel">{{language==0?'取消':'Cancel'}}</el-button>
</div>
</template>
</el-dialog>
......@@ -91,6 +96,9 @@ import * as match from '@/apiPc/match'
import addCoach from '../components/addCoach'
import {getGroupPersonList} from "@/apiPc/match";
import Import from '../components/import'
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const {proxy} = getCurrentInstance()
const emit = defineEmits(['submitForm', 'transfer'])
......@@ -109,6 +117,7 @@ let groupId
let choosedList = []
const choosedIds = []
const open = (params) => {
title.value = params.title
matchId = params.matchId
groupId = params.groupId
noPhotoCanSign.value = params.noPhotoCanSign
......
<template>
<div class="border-info" style="margin: 20px">
<el-row>
<el-col :lg="8">
<div class="item"><label>{{ language == 0 ? '教练' : 'Coach' }}</label>
<span v-for="c in names.coachList">{{ c.shortName }}</span>
</div>
<div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label>
<span v-for="c in names.translatorList">{{ c.shortName }}</span>
</div>
</el-col>
<el-col :lg="8">
<div class="item">
<label>{{ language == 0 ? '领队' : 'Team leader' }}</label>
<span v-for="c in names.leaderList">{{ c.shortName }}</span>
</div>
<div class="item">
<label>{{ language == 0 ? '官员' : 'Official' }}</label>
<span class="mr5" v-for="c in names.officialList">{{ c.shortName }}</span>
<span v-if="!names.officialList">--</span>
</div>
</el-col>
<el-col :lg="8">
<div class="item">
<label>{{ language == 0 ? '队医' : 'Team doctor' }}</label>
<span class="mr5" v-for="c in names.teamDoctorList">
{{ c.shortName }}
</span>
</div>
<div class="item">
<label>{{ language == 0 ? '其他' : 'Other' }}</label>
<span class="mr5" v-for="c in names.otherList">
{{ c.shortName }}
</span>
</div>
</el-col>
</el-row>
</div>
</template>
<script setup>
const props = defineProps({
names: {
type: Object,
required: true
},
language: {
type: Number,
required: true,
default: 0
}
})
</script>
<style scoped lang="scss">
.border-info {
.item {
margin: 5px 0;
color: #4C5359;
font-size: 14px;
label {
font-size: 14px;
margin-right: 14px
}
}
}
</style>
<template>
<div class="border-info gray" style="margin: 20px">
<el-row>
<el-col :lg="8">
<el-row :gutter="15">
<el-col :span="4">
<img class="w100" :src="fillImgUrl(groupInfo.imgUrl)"/>
</el-col>
<el-col :span="20">
<div class="item"><label>{{ language==0?'团体名称':'Team Name' }}</label>{{ groupInfo.name }}</div>
<div class="item"><label>{{ language==0?'团体类型':'Group type' }}</label>{{ groupInfo.typeStr }}</div>
</el-col>
</el-row>
</el-col>
<el-col :lg="8">
<div class="item"><label>{{ language==0?'负责人姓名':'Contact Person' }}</label>{{ groupInfo.contactPerson }}</div>
<div class="item"><label>{{ language==0?'参赛队名称':'Name of participating team' }}</label>{{ groupInfo.abreviations }}</div>
</el-col>
<el-col :lg="8">
<div class="item"><label>{{ language==0?'邮箱':'Email' }}</label>{{ groupInfo.contactEmail }}</div>
<div class="item"><label>{{ language==0?'详细地址':'Detailed Address' }}</label>{{ groupInfo.address }}</div>
</el-col>
</el-row>
</div>
</template>
<script setup>
const props = defineProps({
groupInfo: {
type: Object,
required: true
},
language: {
type: Number,
required: true,
default: 0
}
})
</script>
<style scoped lang="scss">
.border-info{
.item{margin: 5px 0;color: #4C5359; font-size: 14px;
label{font-size: 14px;margin-right: 14px}
}
}
</style>
<template>
<div class="border-info" style="margin: 20px">
<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>
</template>
<script setup>
const props = defineProps({
matchInfo: {
type: Object,
required: true
},
language: {
type: Number,
required: true,
default: 0
}
})
</script>
<style scoped lang="scss">
.border-info{
.item{margin: 5px 0;color: #4C5359; font-size: 14px;
label{font-size: 14px;margin-right: 14px}
}
}
</style>
<template>
<div style="padding: 0 20px 20px">
<div style="padding: 30px 20px 20px">
<!--日程-->
<el-timeline>
<el-timeline-item
......
<template>
<!-- 人员表格-->
<el-table :data="tableData" class="mt20">
<el-table-column type="index" label="序号" width="80" align="center"/>
<el-table-column label="所属国家" prop="countryName"/>
<el-table-column label="姓氏" prop="xing"/>
<el-table-column label="名" prop="ming"/>
<el-table-column label="短名" prop="shortName"/>
<el-table-column label="性别" prop="sexStr"/>
<el-table-column label="年龄" prop="age"/>
<el-table-column label="出生日期" prop="birth" width="100"/>
<el-table-column label="手机号码" prop="phone" width="120"/>
<el-table-column label="邮箱" prop="email" width="150"/>
<el-table-column label="证件类型" prop="idcTypeStr"/>
<el-table-column label="证件号码" prop="idcCode" width="200"/>
<el-table-column label="会员角色">
<el-table-column type="index" :label="language==0?'序号':'index'" width="80" align="center"/>
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
<el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
<el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
<el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/>
<el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/>
<el-table-column :label="language==0?'年龄':'Age'" prop="age"/>
<el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/>
<el-table-column :label="language==0?'手机号码':'Phone Number'" prop="phone" width="120"/>
<el-table-column :label="language==0?'邮箱':'E-mail'" prop="email" width="150"/>
<el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/>
<el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/>
<el-table-column :label="language==0?'会员角色':'Role'" width="150">
<template #default="scope">
<span v-for="item in scope.row.label?.split(',')" :key="item.id">
<el-tag type="primary" size="mini" v-if="item==='0'" effect="dark" class="ml10">运动员</el-tag>
<el-tag type="info" size="mini" v-if="item==='1'" effect="dark" class="ml10">教练</el-tag>
<el-tag type="info" size="mini" v-if="item==='2'" effect="dark" class="ml10">领队</el-tag>
<el-tag type="info" size="mini" v-if="item==='3'" effect="dark" class="ml10">队医</el-tag>
<el-tag type="info" size="mini" v-if="item==='4'" effect="dark" class="ml10">翻译</el-tag>
<el-tag type="info" size="mini" v-if="item==='5'" effect="dark" class="ml10">官员</el-tag>
<el-tag type="info" size="mini" v-if="item==='6'" effect="dark" class="ml10">其他</el-tag>
<div class="esp">
<span v-for="item in scope.row.label?.split(',')" :key="item.id" class="text-primary">
<span v-if="item==='0'" class="ml5">{{ language==0?'运动员':'athletes' }}</span>
<span v-if="item==='1'" class="ml5">{{ language==0?'教练':'coach' }}</span>
<span v-if="item==='2'" class="ml5">{{ language==0?'领队':'team leader' }}</span>
<span v-if="item==='3'" class="ml5">{{ language==0?'队医':'team doctor' }}</span>
<span v-if="item==='4'" class="ml5">{{ language==0?'翻译':'translator' }}</span>
<span v-if="item==='5'" class="ml5">{{ language==0?'官员':'official' }}</span>
<span v-if="item==='6'" class="ml5">{{ language==0?'其他':'other' }}</span>
</span>
</div>
</template>
</el-table-column>
<el-table-column label="详细地址" prop="address"/>
<el-table-column label="操作" fixed="right" width="160" header-align="center" align="center">
<el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>
<el-table-column :label="language==0?'操作':'Actions'" fixed="right" width="160" header-align="center"
align="center">
<template #default="scope">
<a class="text-primary pd10" @click="editCoach(scope.row.id,scope.row.groupId)">编辑</a>
<a class="text-primary pd10" @click="delperson(scope.row)">删除</a>
<a class="text-primary pd10" @click="editCoach(scope.row)">
{{language==0?'编辑':'Edit'}}
</a>
<a class="text-primary pd10" @click="delperson(scope.row)">
{{language==0?'删除':'Delete'}}
</a>
</template>
</el-table-column>
</el-table>
<!-- <paginationPc-->
<!-- v-show="total>0"-->
<!-- v-model:page="query.pageNum"-->
<!-- v-model:limit="query.pageSize"-->
<!-- :total="total"-->
<!-- @pagination="getList"-->
<!-- />-->
<!-- <paginationPc-->
<!-- v-show="total>0"-->
<!-- v-model:page="query.pageNum"-->
<!-- v-model:limit="query.pageSize"-->
<!-- :total="total"-->
<!-- @pagination="getList"-->
<!-- />-->
</template>
<script setup>
import {ref} from "vue";
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const emit = defineEmits(['edit', 'delete'])
let title = ''
const props = defineProps({
tableData:{
type:Array,
required:true
tableData: {
type: Array,
required: true
}
})
const editCoach = () => {
const editCoach = (row) => {
// scope.row.id,scope.row.groupId
title = (language.value==0?'编辑人员':'Edit')
emit('edit', row,title)
}
const delperson = (row) => {
emit('delete', row)
}
</script>
......
<template>
<div class="pd20">
<div class="matchItem" v-for="n in list" :key="n.id" @click="goDetail(n.id)">
<el-row :gutter="15">
<el-col :lg="7" :md="24" :xl="6">
<img class="mauto w100" :src="fillImgUrl(n.coverUrl)">
</el-col>
<el-col :lg="10" :md="12" :xl="12">
<div class="info">
<h3>{{ n.name }}</h3>
<p class="ppl"><label>{{ language==0?'比赛时间':'Playing Time' }}</label>{{n.beginTime?.slice(0,10)}}{{ n.endTime?.slice(0,10) }}</p>
<p class="ppl"><label>{{ language==0?'地&ensp;&ensp;&ensp;&ensp;点':'Location' }}</label>{{ n.address }}</p>
<p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}</label>{{ n.signEndTime?.slice(0,10) }}</p>
<p class="ppl"><label>{{ language==0?'联系人员':'Contact Person' }}</label>{{ n.contactPerson }}</p>
<p class="ppl"><label>{{ language==0?'联系电话':'Phone' }}</label>{{ n.contactTelno }}</p>
<p class="ppl"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'E-mail' }}</label>{{ n.contactEmail }}</p>
</div>
</el-col>
<el-col :lg="7" :md="12" :xl="6">
<p class="countDownTitle">
<span v-if="language==0">报名截止倒计时</span>
<span v-else>Registration deadline countdown</span>
</p>
<van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
<template #default="timeData">
<span class="block">{{ timeData.days }}</span>
<span class="colon">{{ language==0?'天':'Days' }}</span>
<span class="block">{{ timeData.hours }}</span>
<span class="colon">{{ language==0?'时':'Hrs' }}</span>
<span class="block">{{ timeData.minutes }}</span>
<span class="colon">{{ language==0?'分':'Min' }}</span>
<span class="block">{{ timeData.seconds }}</span>
<span class="colon">{{ language==0?'秒':'Sec' }}</span>
</template>
</van-count-down>
<div class="text-center mt30">
<a class="btn-lineG mb20 mauto" style="display: block;">
{{ language==0?'我要报名':'Application' }}</a>
</div>
</el-col>
</el-row>
</div>
</div>
<el-empty image="@/assets/img/order_no.png" image-size="228" v-if="list?.length == 0" description=" "/>
</template>
<script setup>
import {ref} from "vue";
import {onMounted} from "@vue/runtime-core";
import {dayjs} from "element-plus"
import cache from "@/plugins/cache"
const language = ref(cache.local.get('language') || 0)
const router = useRouter()
const time = ref(0)
const props = defineProps({
list: {
type: Array,
required: true
}
})
onMounted(()=>{
for(let n of props.list){
var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
n.time = dayjs(n.signEndTime).diff(today, 'millisecond')
}
})
function goDetail(id) {
const routeData = router.resolve({
path: `${id}`
})
window.open(routeData.href, '_blank')
}
</script>
<style scoped lang="scss">
.mt60{margin-top: 60px}
.matchItem {
cursor: pointer;margin: 0 0 20px;padding: 0 0 20px;
background: #FFFFFF;border-bottom: 1px solid #e5e5e5;
position: relative;
&:last-child {
border-bottom: none;
}
.el-avatar {
position: absolute;
left: 20px;
top: 30px;
img {
background: #fff;
}
}
.info {
p {
font-size: 14px;
}
}
.typeTag {
position: absolute;
right: 0;
top: 0;
}
h3 {
font-weight: 500;margin: 0 0 10px;
font-size: 18px;
color: #000000;
text-overflow: ellipsis;
}
&:hover h3 {
color: var(--el-color-primary);
}
}
.countDownTitle {
text-align: center;
color: #525F6B;
position: relative;
width: 100%;
left: 0;
font-size: 14px;
}
.countDownTitle span {
background: #fff;
padding: 0 10px;
position: relative;
z-index: 1;
}
.countDownTitle::after {
position: absolute;
background: #ccc;
height: 1px;
content: '';
top: 0;
bottom: 0;
margin: auto;
width: 100%;
left: 0;
}
.info .ppl{margin: 5px 0;}
.ppl{color: #29343C;
label{color: #929AA0;}
}
.van-count-down {
text-align: center;
margin: 20px 0;
}
.colon {
display: inline-block;
font-size: 16px;
margin: 0 8px;
color: #7B7F83;
}
.block {
display: inline-block; opacity: 0.7;
width: 52px;
color: #fff;
font-size: 26px;
font-weight: bold;
border-radius: 10px;
background: url(@/assets/img/djs_bg.png) left;
background-size: 100% 100%;
line-height: 50px;
text-align: center;
}
</style>
<template>
<el-steps :active="activeStep" align-center>
<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>
</template>
<script setup>
const props = defineProps({
activeStep: {
type: Number,
required: true
},
language: {
type: Number,
required: true,
default: 0
}
})
</script>
<style scoped>
</style>
......@@ -5,7 +5,7 @@
<el-card class="mb20">
<el-row :gutter="20">
<el-col :lg="7" :md="24" :xl="6" >
<img class="mauto" :src="matchData.bgImgUrl" >
<img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)" >
</el-col>
<el-col :lg="9" :md="12" :xl="10">
<h3>
......@@ -88,90 +88,29 @@
<matchInfo :form="matchData" v-if="menu[0].active==1"/>
<div v-if="menu[1].active==1">
<div class="collapsebox">
<el-collapse v-if="matchData.cptProjectList?.length > 0">
<el-collapse-item :title="p.name" :name="index" :key="index" v-for="(p,index) in matchData.cptProjectList">
<div class="pd20">
<table class="table">
<table class="table" cellspacing="0" cellpadding="0" v-if="matchData.cptProjectList?.length > 0">
<tr>
<td>日期</td>
<td>单元</td>
<td>组别</td>
<td>时间</td>
<td>阶段</td>
<th>组别编号</th>
<th>组别名称</th>
<th>舞种</th>
<th>舞种明细</th>
<th>参赛性别</th>
<th>参赛年龄</th>
<th>服务费(元)</th>
</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 v-for="(p,index) in matchData.cptProjectList" :key="index">
<td>{{ p.code }}</td>
<td>{{ p.name }}</td>
<td>{{ p.danceType }}</td>
<td>{{ p.danceTypeDetailStr }}</td>
<td>{{ p.playTypeStr }}</td>
<td>{{ p.birthPeriod }}</td>
<td>¥{{ p.serviceFee }}</td>
</tr>
</table>
</div>
</el-collapse-item>
</el-collapse>
<el-empty image="@/assets/img/order_no.png" image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/>
</div>
</div>
......@@ -231,38 +170,7 @@
</ul>
</div>
<!-- 分站赛-->
<div v-if="menu1[0].active==1">
<div class="matchItem" v-for="n in matchData.cpts" :key="n.id" @click="goDetail(n.id)">
<el-avatar alt="logo" :size="100" :src="n.logoUrl" />
<div class="info">
<h3>{{ n.name }}</h3>
<p>
报名截止:{{ n.signEndTime?.substring(0, 10) }}
<el-tag v-if="n.progressStatusCode==3" type="warning">即将开始</el-tag>
<el-tag v-if="n.progressStatusCode==2" type="success">报名中</el-tag>
<el-tag v-if="n.progressStatusCode==4">进行中</el-tag>
<el-tag v-if="n.progressStatusCode==5" type="info">已结束</el-tag>
<el-tag v-if="n.progressStatusCode==1" type="info">报名未开始</el-tag>
</p>
<p>
比赛时间:{{ n.beginTime?.substring(0, 10) }}-{{ n.endTime?.substring(0, 10) }}
</p>
<p>
比赛地点:{{ n.address }}
</p>
</div>
<div class="pobtns">
<el-button v-if="n.progressStatusCode==2" round type="success" @click="goDetail(n.id)">
我要报名
</el-button>
<el-button v-else-if="n.progressStatusCode==5" round type="info" @click="goDetail(n.id)">
报名结束
</el-button>
<el-button v-else round type="warning" @click="goDetail(n.id)">查看详情</el-button>
</div>
</div>
<el-empty image="@/assets/img/order_no.png" image-size="228" v-if="matchData.cpts?.length == 0" description=" "/>
</div>
<substation-list v-if="menu1[0].active==1" :list="matchData.cpts"/>
<matchInfo :form="matchData" v-if="menu1[1].active==1"/>
<match-schedule-list :match-data="matchData" v-if="menu1[2].active==1"/>
</el-card>
......@@ -273,10 +181,10 @@
</template>
<script setup>
import groupDetail from '@/viewsPc/center/component/teamInfo_form'
import matchInfo from '@/viewsPc/match/components/matchInfo'
import MatchInfo from '@/viewsPc/match/components/matchInfo'
import MatchScheduleList from "@/viewsPc/match/components/matchScheduleList";
import MatchNews from "@/viewsPc/match/components/matchNews";
import SubstationList from "@/viewsPc/match/components/substation-list";
import { getCurrentInstance, ref } from 'vue'
import { reactive, onMounted } from '@vue/runtime-core'
......@@ -288,6 +196,7 @@ const { proxy } = getCurrentInstance()
import * as match from '@/apiPc/match'
import { toRefs } from '@vueuse/shared'
import { ElMessage } from 'element-plus'
import useUserStore from "@/store/modules/user";
const data = reactive({
matchData: {},
matchId: 0,
......@@ -299,11 +208,20 @@ const data = reactive({
signDoneGroupList: []
})
const {matchData,matchId,groupId,activeName2,popupGroupList,menu,menu1,signDoneGroupList} = toRefs(data)
const group = useUserStore().group
const user = useUserStore().user
onMounted(() => {
// matchId.value = route.params.id
matchId.value = '1759477811976183809'
groupId.value = group.id
match.getMaList().then((res) => {
if(route.params.id!=0){
matchId.value = route.params.id
} else {
matchId.value = res.rows[0].id
}
getMatch(matchId.value)
getGroupListByCptId(matchId.value)
})
})
function building() {
ElMessage.warning('暂未开发,敬请期待!')
......@@ -329,38 +247,36 @@ function changeMenu(menu,l){
}
}
function choseSignType() {
if (matchData.value.signType == '0') {
if(!user){
ElMessage.warning('请登录')
return
}
console.log(matchData.value.signType)
// checkIsSign().then(() => {
if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) {
// 个人报名
checkIsSign(matchData.value.signType).then((res) => {
router.push({
path: `${route.params.id}/singleSign`
})
})
} else {
// 团队报名 团体-队伍报名
match.getMyGroupList().then(res => {
checkIsSign(matchData.value.signType,res.data[0].id).then(() => {
goSignType2(res.data[0].id)
path: `${matchId.value}/singleSign`
})
})
}
}
function goSignType2(groupId) {
if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){
router.push({
path: `${route.params.id}/teamSign`,
path: `${matchId.value}/teamSign`,
query: {
matchId: matchId.value,
groupId: groupId,
groupId: groupId.value,
signType: matchData.value.signType
}
})
}
// })
}
// 获取已报信息
function checkIsSign(signType,groupId) {
function checkIsSign() {
var obj = {
cptId: matchId.value,
groupId: groupId
groupId: groupId.value
}
return match.getMySignInfo(obj).then(res => {
if (res.data.type == '1') {
......
......@@ -275,7 +275,7 @@ onMounted(() => {
})
function getTotalFee() {
match.getTotalFee({
entryId: entryId,
entryId: groupId,
cptId: cptId
}).then(res => {
form.value = res.data
......
......@@ -2,72 +2,13 @@
<div>
<div class="box ph-30">
<el-card class="mb20">
<el-steps :active="activeStep" align-center>
<el-step title="团队信息"/>
<el-step title="教练/领队/其他"/>
<el-step title="选手报名"/>
<el-step title="提交审核"/>
</el-steps>
<team-sign-step :language="language" :active-step="activeStep"/>
</el-card>
<el-card>
<div class="border-info">
<el-row>
<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>
</div>
<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>
<el-col :lg="8">
<div class="item"><label>负责人姓名</label>{{ matchInfo.signFee }}</div>
<div class="item"><label>参赛队名称</label>{{ matchInfo.signFee }}</div>
</el-col>
<el-col :lg="8">
<div class="item"><label>邮箱</label>{{ matchInfo.signFee }}</div>
<div class="item"><label>详细地址</label>{{ matchInfo.signFee }}</div>
</el-col>
</el-row>
</div>
<div class="border-info mt20">
<el-row>
<el-col :lg="8">
<div class="item"><label>教练</label>{{ matchInfo.signFee }}</div>
<div class="item"><label>翻译</label>{{ matchInfo.signFee }}</div>
</el-col>
<el-col :lg="8">
<div class="item"><label>领队</label>{{ matchInfo.signFee }}</div>
<div class="item"><label>官员</label>{{ matchInfo.signFee }}</div>
</el-col>
<el-col :lg="8">
<div class="item"><label>队医</label>{{ matchInfo.signFee }}</div>
<div class="item"><label>其他</label>{{ matchInfo.signFee }}</div>
</el-col>
</el-row>
</div>
<el-card :body-style="{ padding: '0px' }">
<match-info-row :matchInfo="matchInfo" :language="language"/>
<group-info-row :groupInfo="groupInfo" :language="language"/>
<coach-info-row :names="names" :language="language"/>
<div style="margin: 20px">
<div class="mt20">
<div class="leftboderTT">参赛人员清单</div>
......@@ -115,6 +56,7 @@
</el-table-column>
</el-table>
</div>
</div>
</el-card>
......@@ -143,9 +85,68 @@
</template>
<script setup>
import TeamSignStep from './components/teamSignStep'
import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"
import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row"
import CoachInfoRow from "@/viewsPc/match/components/coachInfo-row"
import {ref} from "vue"
import cache from "@/plugins/cache";
import {onMounted} from "@vue/runtime-core";
import * as match from "@/apiPc/match"
import {useRoute, useRouter} from "vue-router";
import useUserStore from "@/store/modules/user";
const route = useRoute()
const router = useRouter()
const activeStep = ref(3)
const matchInfo = ref({})
const groupInfo = useUserStore().group || {}
const language = ref(cache.local.get('language') || 0)
const groupId = ref()
const form = ref({})
const matchId = ref()
const names = ref({})
onMounted(()=>{
console.log(route.query)
groupId.value = route.query.groupId || 0
matchId.value = route.query.matchId
getMatch()
getFee()
if(groupId.value!=0){
tuandui()
} else {
geren()
}
})
const getMatch = () => {
match.getMatchById({ id: matchId.value }).then(res => {
matchInfo.value = res.data
})
}
function geren() {
match.getChooseDoneSingleCoachs(matchId.value).then(res => {
names.value = res.data
})
}
function tuandui() {
match.getChooseDoneGroupCoachs(matchId.value, groupId.value).then(res => {
names.value = res.data
})
}
const goPrev = () => {
router.go(-1)
}
const getFee = () => {
console.log(groupId.value)
match.getTotalFee({
entryId: groupId.value,
cptId: matchId.value
}).then(res => {
form.value = res.data
})
}
</script>
<style scoped lang="scss">
......@@ -169,4 +170,9 @@ const matchInfo = ref({})
.text-right{text-align: right;
a{margin-left: 20px;}
}
.border-info{
.item{margin: 5px 0;color: #4C5359; font-size: 14px;
label{font-size: 14px;margin-right: 14px}
}
}
</style>
......
......@@ -52,7 +52,7 @@
</el-form-item>
<el-form-item label="国籍" prop="countryId">
<el-select v-model="form.countryId" class="m-2" @change="changeCountryId">
<el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id" />
<el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="民族" prop="nation">
......
......@@ -3,72 +3,56 @@
<div class="box ph-30">
<el-card>
<el-steps active="1" align-center>
<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>
<team-sign-step :language="language" :active-step="0"/>
</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 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>
<match-info-row :matchInfo="matchInfo" :language="language"/>
<div class="h20"></div>
<el-form ref="ruleFormRef" label-width="120px" class="signForm" :model="form" :rules="rules">
<el-form ref="ruleFormRef" label-width="120px" class="signForm"
:model="form" :rules="rules"
:label-position="language==0?'left':'top'">
<el-row>
<el-col :lg="8" :offset="2">
<el-form-item label="团体Logo" prop="imgUrl">
<el-form-item :label="language==0?'团体Logo':'Group Logo'" prop="imgUrl">
<ImageUpload2 v-model="form.imgUrl" :crop-width="200" :crop-height="200" :limit="1"/>
<span class="tip">请上传不超过 <i>5M</i> 的文件 格式为 <i>png/jpg/jpeg</i> 的文件</span>
<span class="tip" v-if="language==0">请上传不超过 <i>5M</i> 的文件 格式为 <i>png/jpg/jpeg</i> 的文件</span>
<span class="tip" v-else>Please upload a file in the format of
<i>png/jpg/jpeg</i> that does not exceed <i>5MB</i>
</span>
</el-form-item>
</el-col>
<el-col :lg="10">
<el-form-item label="团体名称" prop="name">
<el-input v-model="form.name" placeholder="请输入团体名称" />
<el-form-item :label="language==0?'团体名称':'Team Name'" prop="name">
<el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" />
</el-form-item>
<el-form-item label="负责人姓名" prop="contactPerson">
<el-form-item :label="language==0?'负责人姓名':'Contact Person'" prop="contactPerson">
<el-input v-model="form.contactPerson" placeholder="请输入联系人" />
</el-form-item>
<el-form-item label="邮箱" required prop="contactEmail">
<el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail">
<el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/>
</el-form-item>
<el-form-item label="详细地址" required prop="address">
<el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address">
<el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/>
</el-form-item>
<el-form-item label="团体类型" prop="type">
<el-select v-model="form.type" placeholder="请选择团体类型" style="width: 100%;">
<el-option label="普通院校" value="0" />
<el-option label="专业舞蹈学校" value="1" />
<el-option label="培训机构/俱乐部" value="2" />
<el-option label="地方协会" value="3" />
<el-option label="国家协会" value="4" />
<el-form-item :label="language==0?'团体类型':'Group type'" prop="type">
<el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;">
<el-option :label="language==0?'普通院校':'School'" value="0" />
<el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" />
<el-option :label="language==0?'培训机构/俱乐部':'Company/Club'" value="2" />
<el-option :label="language==0?'地方协会':'Local Association'" value="3" />
<el-option :label="language==0?'国家协会':'National Association'" value="4" />
</el-select>
</el-form-item>
<el-form-item label="参赛队名称" required prop="abreviations">
<el-input type="text" v-model="form.abreviations" placeholder="请输入内容"/>
<el-form-item :label="language==0?'参赛队名称':'Name of participating team'" required prop="abreviations">
<el-input type="text" v-model="form.abreviations" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="participantsInfoArr&&participantsInfoArr.length>0">
<el-col :span="16" :offset="4">
<h3>补充信息</h3>
<h3>{{ language==0?'补充信息':'Supplemental information'}}</h3>
<el-form-item v-for="(s,index) in participantsInfoArr" :key="index">
<template #label>
<span v-if="s.status == 0" class="red">*</span>{{ s.name }}
......@@ -104,6 +88,9 @@ import { reactive, ref } from 'vue'
import { getCurrentInstance, onMounted } from '@vue/runtime-core'
import { useRoute, useRouter } from 'vue-router'
import { toRefs } from '@vueuse/shared'
import TeamSignStep from './components/teamSignStep'
import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
import cache from "@/plugins/cache"
const language = ref(cache.local.get('language') || 0)
......@@ -282,11 +269,7 @@ function goNext() {
padding: 0;
background: #F5F7F9;
}
.border-info{
.item{margin: 5px 0;color: #4C5359; font-size: 14px;
label{font-size: 14px;margin-right: 14px}
}
}
.panel-footer .el-button--success {
padding: 0 40px;
}
......
......@@ -5,8 +5,8 @@
<!-- 国内-机构注册-->
<el-card>
<el-steps :active="activeStep" finish-status="success" align-center>
<el-step title="创建账号" />
<el-step title="注册完成" />
<el-step title="创建账号"/>
<el-step title="注册完成"/>
</el-steps>
</el-card>
......@@ -14,12 +14,19 @@
<div v-if="activeStep==0">
<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 class="d-form" size="large" label-width="120"
style="max-width: 500px;margin: auto">
<el-form-item label="WDSF卡号" required>
<el-input type="text" v-model="form.WDSF" @change="resetCode" @blur="verifyCode"/>
<el-input type="text" v-model="form.WDSF" @change="resetCode(0)" @blur="verifyCode">
<template #append>
<el-button type="primary" plain style="width: 110px" @click="checkwdsf">
<span>校验卡号</span>
</el-button>
</template>
</el-input>
</el-form-item>
<el-form-item label="手机/邮箱" required>
<el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"/>
<el-input type="text" v-model="form.account" @change="resetCode(1)" @blur="verifyCode"/>
</el-form-item>
<el-form-item label="验证码" required>
<el-input v-model="form.code">
......@@ -28,15 +35,10 @@
<count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
{{ totalSeconds }}
</count-down>
<span v-else>
发送验证码
</span>
<span v-else>发送验证码</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>
</div>
</el-form-item>
</el-form>
</div>
......@@ -47,17 +49,98 @@
</el-card>
</div>
<div v-if="activeStep==1">
<Step3 :accont="form.account"/>
</div>
<Vcode :show="isShow" @success="codeSuccess()"></Vcode>
</div>
</div>
</div>
</template>
<script setup>
import {ref} from "vue"
const activeStep = ref(0)
import {ref,toRefs,reactive} from "vue"
import {onMounted} from "@vue/runtime-core";
import Step3 from "./team/step3"
import Vcode from "vue3-puzzle-vcode"
import { ElMessage } from 'element-plus'
import CountDown from '@chenfengyuan/vue-countdown'
import cache from '@/plugins/cache'
const language = ref(cache.local.get('language') || 0)
const data = reactive({
isShow:false,
isCodeTrue:0,
counting:false,
form:{},
activeStep: 0,
failVcode:'验证失败,请重试',
successVcode:'验证通过!',
sliderText: '拖动滑块完成拼图',
})
const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText} = toRefs(data)
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){
if(language.value==0){
ElMessage.error('请填写手机/邮箱')
} else {
ElMessage.error('Please fill in your phone/email address')
}
return
}
if(counting.value){
return
} else {
isShow.value = true
}
}
function checkwdsf() {
if(!form.value.WDSF){
if(language.value==0){
ElMessage.error('请填写WDSF卡号')
} else {
ElMessage.error('Please fill in your WDSF code')
}
return
}
isShow.value = true
}
function verifyCode() {
if(!form.value.account){
return
}
if(form.value.account.indexOf('@')>-1){
//邮箱
}
}
function codeSuccess(msg) {
console.log('验证通过' + msg);
isShow.value = false
isCodeTrue.value += 1
if(isCodeTrue.value==1){
}
if(isCodeTrue.value==2){
counting.value = true
// getCaptchaSms({account:form.value.account}).then(res=>{
//
// })
}
}
function resetCode(n) {
isCodeTrue.value = n
}
function next() {
activeStep.value = 1
}
</script>
<style scoped>
......
......@@ -20,7 +20,7 @@
</el-input>
<div class="vcodeBox" :style="isShow?'height:240px':'height:0'">
<Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText"
type="inside" @success="codeSuccess" @close="codeClose" @fail='codeFail'></Vcode>
type="inside" @success="codeSuccess"></Vcode>
</div>
</el-form-item>
</el-form>
......@@ -96,12 +96,7 @@ function codeSuccess(msg) {
function resetCode() {
isCodeTrue.value = false
}
function codeFail() {
}
function codeClose() {
}
const goBack = () => {
router.go(-1)
}
......
......@@ -27,7 +27,7 @@
style="max-width: 500px;margin: auto">
<el-form-item :label="language==0?'所属国家':'Nationality'" required>
<el-select filterable v-model="form.countryId">
<el-option v-for="item in countryList" :key="item.id" :label="item.name" :value="item.id"/>
<el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'详细地址':'Address'" required prop="address">
......
......@@ -22,7 +22,9 @@ import {toRefs} from "@vueuse/shared/index";
import Vcode from "vue3-puzzle-vcode"
import {ElMessage} from 'element-plus'
import CountDown from '@chenfengyuan/vue-countdown'
import {getCaptchaSms, checkRegisterCode} from "@/apiPc/match";
import {getCaptchaSms, checkRegisterCode} from "@/apiPc/match"
import cache from '@/plugins/cache'
const language = ref(cache.local.get('language') || 0)
const props = defineProps({
accont:{
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!