b2104d0d by 杨炀

no message

1 parent 2c4db1b8
......@@ -563,6 +563,13 @@ export function checkNoRepeat(query) {
})
}
export function saveWdsfMin(obj,groupId) {
return request({
url: `systemj/personInfo/bindWdsfForGroup/${groupId}`,
method: 'post',
data:obj
})
}
//todo
export function bindWdsf(perId,card) {
return request({
......
......@@ -4,22 +4,22 @@
<img class="logo" src="/img/logoArr.png">
</router-link>
<div class="flex-right" style="display:none;">
<div class="ml20 forPc" >
<div class="flex-right">
<div class="ml20" >
<el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn">
<span @click="goLogin">{{ language==0?'登录':'LOGIN' }}</span>
<!-- | &nbsp;<span @click="goRegister">注册</span>-->
</el-button>
<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>
&nbsp;&nbsp;
<span @click="logout()">{{language==0?'退出':'Exit'}}</span>
</el-button>
</div>
</div>
<a class="ropenbtn" @click="showDrawer">
<img src="@/assets/v1/menu.png">
</a>
<!-- <a class="ropenbtn" @click="showDrawer">-->
<!-- <img src="@/assets/v1/menu.png">-->
<!-- </a>-->
</div>
<el-drawer
......@@ -277,9 +277,6 @@ function getCode() {
}
}
@media (max-width: 1340px) {
.loginBtn {
display: none;
}
.home-menu .el-menu--horizontal > .el-menu-item{margin: 0; }
}
@media (max-width: 1000px) {
......
......@@ -2,11 +2,15 @@
<div class="">
<div class="box ph-30">
<el-card>
<el-card v-if="user">
<single-sign-step v-if="user.utype=='1'" activeStep="1" :language="language"/>
<team-sign-step v-if="user.utype=='2'" activeStep="2" :language="language"/>
</el-card>
<el-card class="mt20">
<h3 class="text-center text-danger">如果没有随行人员,点击【下一步】跳过此步骤</h3>
</el-card>
<el-row class="mt20" :gutter="20">
<el-col :lg="12">
<el-card v-loading="loading">
......@@ -14,8 +18,8 @@
<div class="card-header">
<img src="@/assets/sign/tag01.png"/>
{{ language==0?'教练':'Coach' }}
<span class="tip" v-if="language==0">(教练/领队,至少选择一项)</span>
<span class="tip" v-else>(Coach/Team Leader, select at least one)</span>
<!-- <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">
......@@ -42,8 +46,8 @@
<div class="card-header">
<img src="@/assets/sign/tag02.png"/>
{{ 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>
<!-- <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">
......@@ -175,6 +179,7 @@
</div>
<dialogAddCoach ref="dialogAddCoachRef" @submitForm="getList"/>
<dialogAddCoach_En ref="dialogAddCoachRef_En" @submitForm="getList"/>
</div>
</template>
......@@ -185,8 +190,8 @@ import SingleSignStep from './components/singleSignStep'
import {ref, reactive,toRefs} from 'vue'
import {getCurrentInstance, onMounted} from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import dialogAddCoach from './components/addCoach'
import cache from "@/plugins/cache"
import DialogAddCoach from './components/addCoach'
import DialogAddCoach_En from './components/addCoach_en'
const {proxy} = getCurrentInstance()
const router = useRouter()
const route = useRoute()
......@@ -222,6 +227,10 @@ onMounted(() => {
matchId = route.query.matchId
groupId.value = group.id
signType.value = route.query.signType || ''
if(!user){
router.push({name: 'home'})
return
}
getList()
})
......@@ -299,10 +308,10 @@ function chooseDone() {
function goNext() {
console.log(form.value)
if ((form.value.coachs.length < 1) && (form.value.leader.length < 1)) {
ElMessage.warning(language.value==0?'至少选一个教练或领队':'Coach/Team Leader, select at least one')
return
}
// if ((form.value.coachs.length < 1) && (form.value.leader.length < 1)) {
// ElMessage.warning(language.value==0?'至少选一个教练或领队':'Coach/Team Leader, select at least one')
// return
// }
var obj = {
cptId: matchId,
coachIds: form.value.coachs?.toString() || '',
......@@ -358,20 +367,30 @@ function goPrev() {
}
function editPerson(id) {
proxy.$refs['dialogAddCoachRef'].open({
var obj = {
title: language.value==0?'编辑人员':'Edit',
id: id,
groupId: groupId.value || 0
})
}
if(language.value==0){
proxy.$refs['dialogAddCoachRef'].open(obj)
}else {
proxy.$refs['dialogAddCoachRef_En'].open(obj)
}
}
function addCoach(n) {
proxy.$refs['dialogAddCoachRef'].open({
var obj = {
title: language.value==0?'新建人员':'Add',
id: 0,
label: n,
groupId: groupId.value
})
}
if(language.value==0){
proxy.$refs['dialogAddCoachRef'].open(obj)
}else {
proxy.$refs['dialogAddCoachRef_En'].open(obj)
}
}
</script>
......
......@@ -7,13 +7,13 @@
<el-card :body-style="{'padding-top': '0'}">
<el-row class="mt20" :gutter="20">
<el-col :lg="24">
<el-col :lg="10">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3>
<h3 class="panel-title" v-else>Select list of participating athletes</h3>
<!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>-->
<el-button type="primary" plain class="fr" @click="chooseSportman">选手管理</el-button>
<el-button type="primary" plain class="fr" @click="chooseSportman">{{ language == 0 ? '选手管理' : 'Player Management' }}</el-button>
</div>
<div class="panel-body" style="padding: 10px">
<div style="margin: 0 4px 10px;display: flex">
......@@ -28,15 +28,14 @@
-{{ c.age }}
</div>
</el-option>
<template #tag>
<el-tag v-for="v in choosed2List" :key="v.value" type="primary">
{{ v.xing + v.ming }}
</el-tag>
</template>
<!-- <template #tag>-->
<!-- <el-tag v-for="v in choosed2List" :key="v.value" type="primary">-->
<!-- {{ v.xing + v.ming }}-->
<!-- </el-tag>-->
<!-- </template>-->
</el-select>
<el-button type="primary" @click="emptychoosedchoosed">{{
language == 0 ? '重选' : 'Re-select'
}}
<el-button type="primary" @click="emptychoosedchoosed">
{{language == 0 ? '重选' : 'Re-select' }}
</el-button>
</div>
<!-- <div class="noPicChooseForm" id="chooseArr">-->
......@@ -53,7 +52,7 @@
</div>
</div>
</el-col>
<el-col :lg="24">
<el-col :lg="14">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">可参与报名的项目</h3>
......@@ -132,7 +131,8 @@
</div>
<dialogAddCoach ref="dialogAddCoachRef"/>
<dialogAllSportsmanList ref="dialogAllSportsmanListRef" @transfer="getChoosed" @submitForm="getSignInfoList"/>
<!-- <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @transfer="getChoosed" @submitForm="getSignInfoList"/>-->
<dialogAllSportsmanList ref="dialogAllSportsmanListRef" @submitForm="getAthletesList"/>
<dialogImport ref="dialogImportProps" @submitForm="getMySignInfo"/>
<el-dialog v-model="showResult" :close-on-click-modal="false" :show-close="false">
<el-result icon="success" :title="language==0?'报名成功':'Sign up successful'">
......@@ -144,7 +144,7 @@
</el-dialog>
<dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/>
<dialogWdsf ref="popWdsf" @submitForm="getProjectList" @cancel="removeCurproject"/>
<dialogWdsf ref="popWdsf" @submitForm="getAthletesList" @cancel="removeCurproject"/>
<el-tour v-model="openTour" :current="tourCurrent">
<el-tour-step target="#addRef" title="第一步" description="点击选择运动员" :next-button-props="nextButtonProps"/>
<el-tour-step v-if="choosedList.length>0" target="#chooseArr" title="第二步" description="勾选报项运动员"/>
......@@ -434,7 +434,7 @@ function addCoach() {
})
}
const params = {
title: language.value == 0 ? '新增运动员' : 'Add',
title: language.value == 0 ? '新增运动员' : 'Add',
id: 0,
groupId: groupId.value
}
......@@ -473,6 +473,7 @@ function removeThis(id) {
// 重新获取已报名信息
ElMessage.success(language.value == 0 ? '已移除该报项' : 'success')
getSignInfoList()
getProjectList()
})
})
}
......@@ -502,15 +503,6 @@ function goMySign() {
}
const goPersonInfo = (row) => {
if (signInfoType == '1') {
ElMessageBox.alert('已报项,前往我的报项', '提示', {
confirmButtonText: 'OK',
callback: (Action) => {
router.push({name: 'myMatch'})
}
})
return
}
// 完善补充信息
console.log(row)
// debugger
......@@ -565,14 +557,14 @@ function changeProject(e) {
//循环choosed2List 检查是否存在WDSF号
let n = 0
for(var cc of choosed2List.value){
if(!cc.wdsf){
if(!cc.wdsfMin){
n++
}
}
//obj需要wdsf 且 currProjectId非空
if (obj.checkMemberFlag == '1'&&currProjectId.value != ''&& n>0) {
const params = {
title: '验证WDSF',
title: language.value == 0 ? '验证WDSF' :'Verify WDSF',
groupId: groupId.value,
matchId: matchId.value,
list: choosed2List.value
......
......@@ -15,7 +15,8 @@
/>
</el-form-item>
<el-form-item v-if="language!=0" label="WDSF code" prop="wdsfMin">
<el-input v-model="form.wdsfMin" type="number"/>
<span v-if="form.wdsfMin">{{form.wdsfMin}}</span>
<el-input v-else v-model="form.wdsfMin" type="number"/>
</el-form-item>
<el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required>
<el-input v-model="form.xing"/>
......@@ -36,6 +37,9 @@
<el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required>
<el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay"/>
</el-form-item>
<el-form-item label="上传证件照" required :required="form.idcType!='0'">
<file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" />
</el-form-item>
<el-form-item :label="language==0?'性别':'sex'" prop="sex">
<el-radio-group v-model="form.sex" :disabled="form.idcType=='0'">
<el-radio value="0">{{ language==0?'女':'female' }}</el-radio>
......@@ -56,13 +60,13 @@
<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 :label="language==0?'手机号码':'Phone'" prop="phone" required>
<el-form-item :label="language==0?'手机号码':'Phone'" prop="phone">
<el-input v-model="form.phone" type="number"/>
</el-form-item>
<el-form-item :label="language==0?'所属国家/地区':'Country'" prop="countryId">
<el-select :disabled="language==0" filterable v-model="form.countryId" style="width: 100%;" @change="changeCountryId">
<el-form-item :label="language==0?'所属国家/地区':'Country'" prop="countryId" required>
<el-select filterable v-model="form.countryId" style="width: 100%;" @change="changeCountryId">
<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>
......@@ -78,7 +82,8 @@
</el-form-item>
<el-form-item v-if="language=='0'" :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin">
<el-input v-model="form.wdsfMin" type="number"/>
<span v-if="form.wdsfMin">{{form.wdsfMin}}</span>
<el-input v-else v-model="form.wdsfMin" type="number"/>
</el-form-item>
......
<template>
<el-dialog v-model="show" :title="title" width="1000px" append-to-body>
<el-dialog v-model="show" :title="title" width="1000px" append-to-body @close="close">
<div class="funcBtns">
<el-button type="primary" @click="addMember">
{{ language == 0 ? '添加选手' : 'Add Player' }}
</el-button>
<el-button type="primary" plain @click="importSportman">
<el-button type="primary" plain @click="importSportman" v-if="language == 0">
{{language == 0 ? '导入选手' : 'Import Player'}}
</el-button>
</div>
......@@ -38,7 +38,7 @@
<el-table ref="allSportmenTable" v-loading="loading" :data="tableData" height="60vh"
@selection-change="handleSelectionChange">
<!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>-->
<el-table-column type="index" :label="language==0?'序号':'Index'" width="50" :selectable="selectable"/>
<el-table-column type="index" :label="language==0?'序号':'Index'" width="60" :selectable="selectable"/>
<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?'所属国家/地区':'Country'" prop="countryName" min-width="100"/>
......@@ -88,6 +88,7 @@
</el-dialog>
<addCoach ref="dialogAddCoach" @submitForm="getList"/>
<addMan_en ref="dialogSportman_En" @submitForm="getList"/>
<Import ref="dialogImportProps" @submitForm="getList"/>
</template>
......@@ -95,7 +96,8 @@
import {reactive, ref, toRefs, watch} from 'vue'
import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import addCoach from '../components/addCoach'
import AddCoach from '../components/addCoach'
import AddMan_en from '../components/addSportman_en'
import Import from '../components/import'
import {useStorage} from "@vueuse/core/index";
const language= useStorage('language',0)
......@@ -182,7 +184,9 @@ function submit() {
// emit('submitForm', choosedList)
show.value = false
}
function close() {
emit('submitForm')
}
function cancel() {
show.value = false
}
......@@ -193,16 +197,25 @@ function editPerson(row) {
title: language.value == 0 ?'编辑人员':'Edit Person',
groupId: groupId
}
proxy.$refs['dialogAddCoach'].open(params)
if (language.value == 0 ){
proxy.$refs['dialogAddCoach'].open(params)
} else {
proxy.$refs['dialogSportman_En'].open(params)
}
}
function addMember() {
const params = {
title: language.value == 0 ?'添加人员':'Add',
id: 0,
groupId: groupId
groupId: groupId,
label: '0'
}
if (language.value == 0 ){
proxy.$refs['dialogAddCoach'].open(params)
} else {
proxy.$refs['dialogSportman_En'].open(params)
}
proxy.$refs['dialogAddCoach'].open(params)
}
function importSportman() {
......
......@@ -57,10 +57,16 @@ const props = defineProps({
const names = ref({})
const loading = ref(true)
import {useStorage} from "@vueuse/core/index";
import {useRouter} from "vue-router";
const user = useUserStore().user
const group = useUserStore().group || {}
const language= useStorage('language',0)
const router = useRouter()
onMounted(() => {
if(!user){
router.push({name: 'home'})
return
}
if (user.utype == '2') {
tuandui()
}
......
......@@ -3,17 +3,22 @@
<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">
<div class="popo">
<el-tag v-if="n.signType==0">个人</el-tag>
<el-tag v-if="n.signType==1">团体</el-tag>
<el-tag v-if="n.signType==2">个人+团体</el-tag>
</div>
<img class="mauto mw100 coverLimitHeight" :src="fillImgUrl(n.coverUrl)">
</el-col>
<el-col :lg="9" :md="12" :xl="12">
<div class="info">
<h3>{{ n.name }}</h3>
<h3 class="esp">{{ 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 esp"><label>{{ language==0?'地&ensp;&ensp;&ensp;&ensp;点':'Location' }}</label>{{ n.address }}</p>
<p class="ppl"><label>{{language==0?'赛事级别':'Level'}}</label>{{n.level}}</p>
<p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}</label>{{ n.signEndTime?.slice(0,10) }}</p>
<p class="ppl" v-if="n.contactPerson"><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?'联系电话':'Phone' }}</label>086-{{ n.contactTelno }}</p>
<p class="ppl" v-if="n.contactEmail"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'E-mail' }}</label>{{ n.contactEmail }}</p>
</div>
......@@ -83,6 +88,7 @@ function goDetail(id) {
<style scoped lang="scss">
.pv20{padding: 0 20px;}
.mt60{margin-top: 60px}
.popo{position: absolute;left: 0;}
.matchItem {
cursor: pointer;padding: 0 0 20px;
background: #FFFFFF;border-bottom: 1px solid #e5e5e5;
......
<template>
<el-dialog
v-model="show" :title="title" width="500px" append-to-body :close-on-click-modal="false"
destroy-on-close @close="cancel"
v-model="show" :title="title" width="500px" append-to-body :close-on-click-modal="false"
destroy-on-close :show-close="false"
>
<el-form label-width="120">
<el-form-item required :label="item.realName" v-for="item in list">
<el-input :disabled="item.checked"
v-model="item.wdsfMin" placeholder="输入WDSF会员号"
>
<template #append>
<view @click="checkCode(item)" class="checkbb">
<el-icon v-if="item.checked" color="#13ce66" size="24"><CircleCheck /></el-icon>
<text class="text-primary" v-else>验证</text>
</view>
</template>
</el-input>
</el-form-item>
<el-form label-width="120" v-model="list">
<el-form-item required :label="item.realName" v-for="item in list">
<div v-show="item.checked==2">{{ item.wdsfMin }}</div>
<el-input :disabled="item.checked==1" type="number" v-show="item.checked!=2"
v-model="item.wdsfMin" :placeholder="language==0?'绑定WDSF会员号':'Bind WDSF Number'"
>
<template #append>
<view @click="checkCode(item)" class="checkbb">
<el-icon v-if="item.checked==1" color="#13ce66" size="24">
<CircleCheck/>
</el-icon>
<text class="text-primary" v-else-if="item.checked==0">{{ language == 0 ? '验证' : 'Check' }}</text>
</view>
</template>
</el-input>
</el-form-item>
</el-form>
<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 ? '保 存' : 'Save' }}</el-button>
<el-button @click="cancel">{{ language == 0 ? '取 消' : 'Cancel' }}</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { reactive, ref, toRefs, watch } from 'vue'
import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core'
import {reactive, ref, toRefs, watch} from 'vue'
import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import { SuccessFilled } from '@element-plus/icons-vue'
import { ElMessage } from 'element-plus'
import { useRoute } from 'vue-router'
import {SuccessFilled} from '@element-plus/icons-vue'
import {ElMessage} from 'element-plus'
import {useRoute} from 'vue-router'
const { proxy } = getCurrentInstance()
const {proxy} = getCurrentInstance()
const emit = defineEmits(['submitForm', 'cancel'])
const uploadUrl = ref('/upload/upLoadToFileServer')
const route = useRoute()
import {useStorage} from "@vueuse/core/index";
const language= useStorage('language',0)
const language = useStorage('language', 0)
const data = reactive({
form: {},
......@@ -48,21 +52,20 @@ const data = reactive({
title: '',
groupId: '0'
})
const { form, show, countryList, list, title, groupId } = toRefs(data)
const {form, show, countryList, list, title, groupId} = toRefs(data)
let extraId = 0
let personId
let matchId
const open = (params) => {
console.log(params)
show.value = true
title.value = params.title
matchId = params.matchId
groupId.value= params.groupId
groupId.value = params.groupId
list.value = params.list
init()
}
defineExpose({ open })
defineExpose({open})
watch(show, (value) => {
if (!value) {
form.value = {}
......@@ -71,14 +74,16 @@ watch(show, (value) => {
})
function init() {
for (let n of list.value){
for (let n of list.value) {
if (n.wdsfMin) {
n.checked = true
n.checked = 2
console.log(n.checked)
} else {
n.checked = false
n.checked = 0
}
}
}
function checkCode(item) {
if (!item.wdsfMin) {
if (language.value == 0) {
......@@ -88,34 +93,43 @@ function checkCode(item) {
}
return
}
match.checkNoRepeat({card: item.wdsfMin,groupId: groupId.value}).then(res => {
if(res.data.wdsfFlag=='0'){
if (language.value == 0) {
ElMessage.warning('验证失败,卡号不存在')
} else {
ElMessage.warning('Verification failed, card number does not exist')
}
for (var n of list.value) {
if (n.wdsfMin == item.wdsfMin && n.id != item.id) {
ElMessage.warning(language.value == 0 ? '不能重复绑定' : 'Cannot be bound repeatedly')
return
}
if(res.data.wdsfFlag=='1'){
item.checked = true
}
match.checkNoRepeat({card: item.wdsfMin, groupId: groupId.value}).then(res => {
if (res.data) {
item.checked = 1
} else {
ElMessage.warning(language.value == 0 ? '不满足绑定条件' : 'Not meet the binding conditions')
return
}
})
}
function submitForm() {
var arr = []
for(var n of list.value){
arr.push({
id: n.id,
wdsfMin: n.wdsfMin
})
var obj = {}
for (var n of list.value) {
if (n.checked == 0) {
ElMessage.warning(language.value == 0 ? `请点击验证${n.realName}的WDSF卡号` : `Please verify ${n.realName}'s card number`)
return
}
if (n.checked == 1) {
obj[n.id] = n.wdsfMin
}
}
// match.saveWdsfMin(arr).then(res=>{
// show.value = false
// })
// emit('submitForm')
console.log(obj)
if(obj=={}){
return
}
match.saveWdsfMin(obj, groupId.value).then(res => {
if (res.data) {
show.value = false
emit('submitForm')
}
})
}
function cancel() {
......@@ -153,5 +167,11 @@ function cancel() {
.red {
color: #f56c6c;
}
.checkbb{width: 30px;display: flex;align-items: center;text-align: center;}
.checkbb {
width: 40px;
display: flex;
align-items: center;
text-align: center;
}
</style>
......
......@@ -17,28 +17,38 @@
<img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)">
</el-col>
<el-col :lg="9" :md="12" :xl="10" style="position: relative">
<h3 class="m0">
{{ matchData.name }}
</h3>
<p class="ppl"><label class="bm1">Playing Time:</label>{{ matchData.beginTime?.slice(0, 10) }} ~
{{ matchData.endTime?.slice(0, 10) }}</p>
<p class="ppl"><label class="bm2">Event Level:</label>{{ matchData.level }}</p>
<p class="ppl" v-if="matchData.address"><label class="bm3">Location:</label>{{ matchData.address }}</p>
<p class="ppl" v-if="matchData.signEndTime"><label class="bm4">Registration
Deadline:</label>{{ matchData.signEndTime?.slice(0, 10) }}</p>
<p class="ppl" v-if="matchData.type=='1'">
<label>
<svg style="position: relative;top: 2px;" t="1711707785514" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6578"
width="18" height="18">
<path d="M780 68H256c-71.6 0-130.2 55.5-130.2 123.2v711.2c1.5 42.8 50 69.3 90.6 50.6l227.2-105c38.5-17.8 83.4-18.5 122.6-1.9l255.4 108.6c34.8 14.8 76.1-2.7 86.3-37.6 1.6-5.4 2.4-11 2.4-16.9v-709C910.2 123.5 851.6 68 780 68zM276.9 231.3h255.9c23.9 0 43.3 18.4 43.3 41s-19.4 41-43.3 41H276.9c-23.9 0-43.3-18.4-43.3-41s19.4-41 43.3-41z m386.8 464H276.9c-23.9 0-43.3-18.4-43.3-41s19.4-41 43.3-41h386.8c23.9 0 43.3 18.4 43.3 41s-19.4 41-43.3 41z m0-191H276.9c-23.9 0-43.3-18.4-43.3-41s19.4-41 43.3-41h386.8c23.9 0 43.3 18.4 43.3 41s-19.4 41-43.3 41z" p-id="6579" fill="#d3d8d9"></path></svg>
Station race:</label>{{matchData.cpts.length}}
</p>
<p class="ppl" v-if="matchData.type=='1'">
<label>
<svg style="position: relative;top: 2px;" t="1711708779620" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7920" width="20" height="20"><path d="M398.652952 165.692952c-32.280381-46.006857-58.172952-61.318095-92.867047-54.808381-14.969905 2.80381-24.210286 7.850667-41.20381 22.528l-12.946285 11.361524-25.185524 20.894476-6.582857 5.753905c-3.705905 3.413333-6.38781 6.217143-9.825524 10.118095-64 72.46019-81.724952 185.782857-44.470857 292.327619 26.794667 76.55619 74.605714 152.624762 142.774857 228.644572 72.289524 80.62781 133.046857 131.364571 202.922666 168.374857 54.857143 29.013333 96.865524 41.74019 145.676191 43.227429 59.001905 1.828571 110.957714-11.50781 153.648762-39.15581a162.133333 162.133333 0 0 0 19.553524-15.189333l8.289523-7.558095 16.335239-15.213715 5.534476-4.924952 10.922666-9.435429c22.040381-19.651048 29.184-31.939048 30.646858-51.370666 2.194286-29.647238-11.215238-52.736-49.737143-85.699048l-26.063238-21.820952-12.117334-10.581334-11.459047-9.825524c-37.229714-30.744381-64.804571-40.69181-100.205715-35.35238-24.283429 3.632762-38.278095 12.141714-63.073523 38.107428l-10.947048 11.654095c-18.041905 19.017143-28.330667 26.258286-43.544381 29.305905-22.25981 4.461714-44.373333-7.046095-80.262095-36.205714-46.250667-37.546667-84.626286-80.676571-117.613715-131.949714-22.869333-35.766857-31.890286-62.902857-24.941714-87.600762 2.82819-9.99619 9.679238-17.042286 24.064-28.184381l14.994286-11.312762 2.413714-1.877334 22.747429-18.553904c20.114286-16.822857 28.281905-28.281905 32.572952-45.836191 8.899048-36.10819 0.487619-66.072381-32.426667-117.638095l-15.62819-24.234667-5.558857-8.533333-6.436572-9.435429z" p-id="7921" fill="#d3d8d9"></path></svg>
Phone:</label>{{matchData.contactTelno}}
</p>
<h3 class="m0">{{ matchData.name }}</h3>
<div v-if="matchData.type=='1'">
<p class="ppl"><label class="bm2">Event Level:</label>{{ matchData.level }}</p>
<p class="ppl"><label class="bm1">Playing Time:</label>{{ matchData.beginTime?.slice(0, 10) }} ~
{{ matchData.endTime?.slice(0, 10) }}</p>
<p class="ppl" v-if="matchData.address"><label class="bm3">Location:</label>{{ matchData.address }}</p>
<!-- <p class="ppl" v-if="matchData.signEndTime"><label class="bm4">Registration Deadline:</label>{{ matchData.signEndTime?.slice(0, 10) }}</p>-->
<p class="ppl">
<label>
<svg style="position: relative;top: 2px;" t="1711707785514" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6578"
width="18" height="18">
<path d="M780 68H256c-71.6 0-130.2 55.5-130.2 123.2v711.2c1.5 42.8 50 69.3 90.6 50.6l227.2-105c38.5-17.8 83.4-18.5 122.6-1.9l255.4 108.6c34.8 14.8 76.1-2.7 86.3-37.6 1.6-5.4 2.4-11 2.4-16.9v-709C910.2 123.5 851.6 68 780 68zM276.9 231.3h255.9c23.9 0 43.3 18.4 43.3 41s-19.4 41-43.3 41H276.9c-23.9 0-43.3-18.4-43.3-41s19.4-41 43.3-41z m386.8 464H276.9c-23.9 0-43.3-18.4-43.3-41s19.4-41 43.3-41h386.8c23.9 0 43.3 18.4 43.3 41s-19.4 41-43.3 41z m0-191H276.9c-23.9 0-43.3-18.4-43.3-41s19.4-41 43.3-41h386.8c23.9 0 43.3 18.4 43.3 41s-19.4 41-43.3 41z" p-id="6579" fill="#d3d8d9"></path></svg>
Station race:</label>{{matchData.cpts.length}}
</p>
<p class="ppl">
<label>
<svg style="position: relative;top: 2px;" t="1711708779620" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7920" width="20" height="20"><path d="M398.652952 165.692952c-32.280381-46.006857-58.172952-61.318095-92.867047-54.808381-14.969905 2.80381-24.210286 7.850667-41.20381 22.528l-12.946285 11.361524-25.185524 20.894476-6.582857 5.753905c-3.705905 3.413333-6.38781 6.217143-9.825524 10.118095-64 72.46019-81.724952 185.782857-44.470857 292.327619 26.794667 76.55619 74.605714 152.624762 142.774857 228.644572 72.289524 80.62781 133.046857 131.364571 202.922666 168.374857 54.857143 29.013333 96.865524 41.74019 145.676191 43.227429 59.001905 1.828571 110.957714-11.50781 153.648762-39.15581a162.133333 162.133333 0 0 0 19.553524-15.189333l8.289523-7.558095 16.335239-15.213715 5.534476-4.924952 10.922666-9.435429c22.040381-19.651048 29.184-31.939048 30.646858-51.370666 2.194286-29.647238-11.215238-52.736-49.737143-85.699048l-26.063238-21.820952-12.117334-10.581334-11.459047-9.825524c-37.229714-30.744381-64.804571-40.69181-100.205715-35.35238-24.283429 3.632762-38.278095 12.141714-63.073523 38.107428l-10.947048 11.654095c-18.041905 19.017143-28.330667 26.258286-43.544381 29.305905-22.25981 4.461714-44.373333-7.046095-80.262095-36.205714-46.250667-37.546667-84.626286-80.676571-117.613715-131.949714-22.869333-35.766857-31.890286-62.902857-24.941714-87.600762 2.82819-9.99619 9.679238-17.042286 24.064-28.184381l14.994286-11.312762 2.413714-1.877334 22.747429-18.553904c20.114286-16.822857 28.281905-28.281905 32.572952-45.836191 8.899048-36.10819 0.487619-66.072381-32.426667-117.638095l-15.62819-24.234667-5.558857-8.533333-6.436572-9.435429z" p-id="7921" fill="#d3d8d9"></path></svg>
Phone:</label>086-{{matchData.contactTelno}}
</p>
</div>
<div v-if="matchData.type=='0'">
<p class="ppl"><label>{{ language==0?'比赛时间':'Playing Time' }}:</label>{{matchData.beginTime?.slice(0,10)}} ~ {{matchData.endTime?.slice(0,10) }}</p>
<p class="ppl esp"><label>{{ language==0?'地&ensp;&ensp;&ensp;&ensp;点':'Location' }}:</label>{{ matchData.address }}</p>
<p class="ppl"><label>{{language==0?'赛事级别':'Level'}}:</label>{{matchData.level}}</p>
<p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}:</label>{{ matchData.signEndTime?.slice(0,10) }}</p>
<p class="ppl" v-if="matchData.contactPerson"><label>{{ language==0?'联系人员':'Contact Person' }}:</label>{{ matchData.contactPerson }}</p>
<p class="ppl"><label>{{ language==0?'联系电话':'Phone' }}:</label>086-{{ matchData.contactTelno }}</p>
<p class="ppl" v-if="matchData.contactEmail"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'E-mail' }}:</label>{{ matchData.contactEmail }}</p>
</div>
<div style="height: 30px"></div>
<div class="ppl_pb">
<el-link class="mr20" v-if="matchData.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank">
......
......@@ -63,16 +63,18 @@
</el-col>
<el-col :lg="9" :md="12" :xl="12">
<div class="info">
<h3>{{ n.name }}</h3>
<h3 class="esp">{{ n.name }}</h3>
<p class="ppl"><label>{{language==0?'赛事级别':'Level'}}:</label>{{n.level}}</p>
<p class="ppl"><label>{{ language==0?'比赛时间':'Playing Time' }}:</label>{{n.beginTime?.slice(0,10)}} ~ {{ n.endTime?.slice(0,10) }}</p>
<p class="ppl esp"><label>{{ language==0?'比赛时间':'Playing Time' }}:</label>{{n.beginTime?.slice(0,10)}} ~ {{ n.endTime?.slice(0,10) }}</p>
<!-- <p class="ppl" v-if="n.address"><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" v-if="n.contactPerson"><label>{{ language==0?'联系人员':'Contact Person' }}:</label>{{ n.contactPerson }}</p>
<p class="ppl"><label>{{ language==0?'联系电话':'Phone' }}:</label>{{ n.contactTelno }}</p>
<p class="ppl" v-if="n.contactEmail"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'E-mail' }}:</label>{{ n.contactEmail }}</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>086-{{ n.contactTelno }}</p>
<p class="ppl esp"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'E-mail' }}:</label>{{ n.contactEmail }}</p>
<p class="ppl" v-if="n.type=='1'">
<label>{{ language==0?'分站赛':'Station race' }}:</label>{{n.cpts?.length}}
</p>
</div>
</el-col>
<el-col :lg="8" :md="12" :xl="6">
......@@ -271,7 +273,7 @@ function goDetail(id) {
left: 0;
}
.info h3{margin: 0 0 15px}
.info .ppl{margin: 14px 0;}
.info .ppl{margin: 6px 0;}
.ppl{color: #29343C;
label{color: #929AA0;}
}
......
......@@ -26,28 +26,33 @@
<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-form-item :label="language==0?'团体名称':'Team Name'" prop="name">
<el-form-item :label="language==0?'团体名称':'Institution Name'" prop="name">
<el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" />
</el-form-item>
<el-form-item :label="language==0?'所属国家/地区':'Country'" required>
<el-select filterable v-model="form.countryId">
<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?'负责人姓名':'Contact Person'" prop="contactPerson">
<el-input v-model="form.contactPerson" :placeholder="language==0?'请输入联系人':''" />
</el-form-item>
<el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail">
<el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag">
<el-select v-model="form.majorFlag">
<el-option :label="language==0?'专业':'Professional'" value="1" />
<el-option :label="language==0?'业余':'Amateur'" value="0" />
</el-select>
</el-form-item>
<!-- <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag">-->
<!-- <el-select v-model="form.majorFlag">-->
<!-- <el-option :label="language==0?'专业':'Professional'" value="1" />-->
<!-- <el-option :label="language==0?'业余':'Amateur'" value="0" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item :label="language==0?'团体类型':'Group type'" prop="type">
<el-select v-model="form.type" :placeholder="typeOptions[language].selectPlaceholder" style="width: 100%;">
<el-select :disabled="language==1" v-model="form.type" :placeholder="typeOptions[language].selectPlaceholder" style="width: 100%;">
<el-option v-for="(o,index) in typeOptions[language].options" :label="o.text"
:key="index" :value="o.value" />
</el-select>
</el-form-item>
<el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address">
<el-form-item :label="language==0?'详细地址':'Detailed Address'" prop="address">
<el-input type="textarea" v-model="form.address" class="mt10" :placeholder="language==0?'请输入详细地址':''"/>
</el-form-item>
</el-col>
......@@ -67,7 +72,6 @@
<ImageUpload v-if="s.type == '3'" v-model="s.value" :limit="1" :is-show-tip="false" />
<!-- 文件 2-->
<FileUpload v-if="s.type == '2'" :button-text="language==0?'上传文件':'Upload file'" :is-show-tip="false" v-model="s.fixWxFile" :action="uploadUrl" :accept="accept" />
</el-form-item>
</el-col>
</el-row>
......@@ -135,6 +139,7 @@ const data = reactive({
cptId: route.query.matchId||0,
signType: false,
regionsList: [],
countryList: [],
participantsInfoArr: [],
rankList: [],
accept: '.doc, .pdf, .docx, .zip',
......@@ -154,7 +159,7 @@ const data = reactive({
contactPerson: { required: true, message: 'required', trigger: 'blur' },
contactEmail: { required: true, message: 'required', trigger: 'blur' },
abreviations: { required: true, message: 'required', trigger: 'blur' },
address: { required: true, message: 'required', trigger: 'blur' }
// address: { required: true, message: 'required', trigger: 'blur' }
},
coachOrLeaderFlag: '',
matchInfo:{}
......@@ -168,7 +173,7 @@ const {
participantsInfoArr,
cptId,
rules,rules_en,
regionsList,matchInfo,
regionsList,countryList,matchInfo,
coachOrLeaderFlag, accept,typeOptions
} = toRefs(data)
const uploadUrl = ref('/upload/upLoadToFileServer')
......@@ -180,6 +185,7 @@ onMounted(() => {
signType.value = route.query.signType
getRegionsList()
getCountryList()
match.getMatchById({ id: cptId.value }).then(res => {
coachOrLeaderFlag.value = res.data.coachOrLeaderFlag
matchInfo.value = res.data
......@@ -219,10 +225,20 @@ function getRegionsList() {
regionsList.value = res.data
})
}
function getCountryList() {
match.countryList().then(res => {
countryList.value = res.data
})
}
function getGroupInfo() {
match.getGroupInfo().then(res => {
form.value = res.data
if(language.value == 1){
form.value.type = '4'
}
}).catch(err => {
router.push({name: 'home'})
return
})
}
......
......@@ -2,8 +2,8 @@
<div>
<div class="box">
<div class="indexTitle">
<h3 class="leftboderTT">Asian Games News</h3>
<a class="more" @click="goList(query1.sortId,'Asian Games News')">MORE</a>
<h3 class="leftboderTT">Games News</h3>
<a class="more" @click="goList(query1.sortId,'Games News')">MORE</a>
</div>
<el-card>
<el-row class="topNews" :gutter="20">
......
......@@ -9,7 +9,7 @@
<div class="pt30">
<el-form ref="wdsfDataRef" class="d-form" size="large" :label-width="language==0?120:180"
style="max-width: 560px;margin: auto" :rules="wdsfDataRule">
<el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" required>
<el-form-item :label="language==0?'WDSF会员号':'WDSF MIN'" required>
<el-input type="text" v-model="form.card" @change="resetCode(0)" @blur="verifyCode">
<template #append>
<el-button type="primary" plain style="width: 110px" @click="checkCard">
......@@ -27,22 +27,22 @@
<span v-else>(Obtain automatically according to the WDSF number)</span>
</div>
<div class="h20"></div>
<el-form-item :label="language==0?'姓氏':'surname'">
<el-form-item :label="language==0?'姓氏':'Surname'">
<el-input v-model="wdsfData.surname" disabled/>
</el-form-item>
<el-form-item :label="language==0?'名':'name'">
<el-form-item :label="language==0?'名':'Name'">
<el-input v-model="wdsfData.name" disabled/>
</el-form-item>
<el-form-item label="Representing">
<el-form-item :label="language==0?'代表':'Representing'">
<el-input v-model="wdsfData.representing" disabled/>
</el-form-item>
<el-form-item label="Age group">
<el-form-item :label="language==1?'Age group':'年龄组'">
<el-input v-model="wdsfData.ageGroup" disabled/>
</el-form-item>
<el-form-item label="Division">
<el-form-item :label="language==1?'舞种':'Division'">
<el-input v-model="wdsfData.division" disabled/>
</el-form-item>
<el-form-item label="Status">
<el-form-item :label="language==1?'状态':'Status'">
<el-input v-model="wdsfData.status" disabled/>
</el-form-item>
<div class="h30"></div>
......@@ -50,33 +50,36 @@
{{ language == 0 ? '补充信息' : 'Supplementary Information' }}
</div>
<div class="h20"></div>
<el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" required>
<el-form-item prop="picUrl" :label="language==0?'个人照片':'Photo'">
<ImageUpload2
v-model="wdsfData.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1"
:is-show-tip="false"
/>
</el-form-item>
<el-form-item :label="language==0?'性别':'Sex'" required>
<el-form-item :label="language==0?'性别':'Gender'" required>
<el-radio-group v-model="wdsfData.sex">
<el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
<el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Birthday'" required>
<el-form-item :label="language==0?'证件号':'Passport number'" required>
<el-input v-model="wdsfData.passportNumber"/>
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Passport File'" required>
<file-upload v-model="wdsfData.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/>
<div class="tip">
<span>用途</span>
</div>
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Birthday'">
<el-date-picker
v-model="wdsfData.birthday"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item label="Passport number" required>
<el-input v-model="wdsfData.passportNumber"/>
</el-form-item>
<el-form-item label="Passport File" required>
<file-upload v-model="wdsfData.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/>
</el-form-item>
<div class="h30"></div>
......@@ -121,9 +124,8 @@
v-if="wdsfData.personFlag=='0'">
<el-input type="password" show-password v-model="form.confirmPassword" autocomplete="false" @change="vconfirmPassword"
:placeholder="language==0?'再次输入密码':'Confirm Password'"/>
<div class="text-danger" v-if="showError">{{
language == 0 ? '密码不一致' : 'Password inconsistency'
}}
<div class="text-danger" v-if="showError">
{{language == 0 ? '密码不一致' : 'Password inconsistency'}}
</div>
</el-form-item>
</el-form>
......@@ -287,16 +289,14 @@ function goBack() {
}
function next() {
// proxy.$refs['wdsfDataRef'].validate((valid) => {
// if (valid)
// if (!wdsfData.value.birthday) {
// ElMessage.warning('Please fill in your birthday')
// return
// }
if (!wdsfData.value.passportNumber) {
ElMessage.warning('Please fill in your passport number')
return
}
if (!wdsfData.value.birthday) {
ElMessage.warning('Please fill in your birthday')
return
}
if (!wdsfData.value.passportUrl) {
ElMessage.warning('Please upload your passport file')
return
......@@ -332,6 +332,7 @@ function next() {
let obj = {
sex: wdsfData.value.sex,
passportNumber: wdsfData.value.passportNumber,
picUrl: wdsfData.value.picUrl,
birth: wdsfData.value.birthday,
personId: wdsfData.value.personId,
username: wdsfData.value.email,
......@@ -348,7 +349,7 @@ function next() {
afterR()
})
}
// })
}
function afterR() {
......
......@@ -39,7 +39,7 @@
/>
<el-input type="textarea" v-model="form.address" class="mt10"/>
</el-form-item>
<el-form-item :label="language==0?'机构名称':'Institution name'" required prop="teamName">
<el-form-item :label="language==0?'机构名称':'Institution Name'" required prop="teamName">
<el-input type="text" v-model="form.teamName" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag">
......
......@@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => {
rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
},
'/dev-api': {
target: 'http://192.168.1.118:8081/',
// target: 'https://dance.itechtop.cn/stage-api',
// target: 'http://192.168.1.131:8081/',
target: 'https://dance.itechtop.cn/stage-api',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
}
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!