8f61ec56 by 杨炀

no message

1 parent 6be47212
......@@ -105,6 +105,13 @@ export function registerSingle(data) {
data:data
})
}
export function loginSingle(data) {
return request({
url: `/userLoginAboard`,
method: 'post',
data:data
})
}
// 根据Id获取我的团队
export function getGroupInfo() {
......
......@@ -8,7 +8,7 @@
<router-link to="/about">亚洲体育舞蹈节版权所有</router-link>
</li>
<li>
<a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:苏ICP备17015770号-3</a>
<a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:苏ICP备2023054420号-2</a>
<!-- <a class="ffoot" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010102004192">-->
<!-- <img src="@/assets/v1/beian.png">-->
<!-- 京公网安备 11010102004192号</a>-->
......
......@@ -176,7 +176,7 @@ function handleSelect(key, keyPath) {
}
const logout = () => {
proxy.$modal.confirm('确定退出?').then(function() {
proxy.$modal.confirm(language.value==0?'确定退出?':'Are you sure to exit?').then(function() {
return useUserStore().logOut()
}).then(() => {
isLogin.value = true
......
......@@ -147,7 +147,7 @@ function handleSelect(key, keyPath) {
}
const logout = () => {
proxy.$modal.confirm('确定退出?').then(function() {
proxy.$modal.confirm(language.value==0?'确定退出?':'Are you sure to exit?').then(function() {
return useUserStore().logOut()
}).then(() => {
isLogin.value = true
......
......@@ -20,26 +20,51 @@
<el-form-item :label="language==0?'姓名':'Real Name'" required prop="realName">
<el-input v-model="myform.realName"/>
</el-form-item>
<el-form-item :label="language==0?'性别':'Sex'" required prop="sex">
<el-form-item :label="language==0?'性别':'Sex'" required >
<el-radio-group v-model="myform.sex">
<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="language==0?'证件类型':'ID type'" required prop="idcType">
<el-select v-model="myform.idcType" style="width: 100%">
<el-option
v-for="item in certificates"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-form-item :label="language==0?'出生日期':'Birthday'" required>
<el-date-picker
v-model="myform.birth"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item label="Representing">
<el-input v-model="myform.representing" disabled/>
</el-form-item>
<el-form-item label="Age group">
<el-input v-model="myform.ageGroup" disabled/>
</el-form-item>
<el-form-item label="Division">
<el-input v-model="myform.division" disabled/>
</el-form-item>
<el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode">
<el-input v-model="myform.idcCode" @blur="checkCode"/>
<el-form-item label="Status">
<el-input v-model="myform.status" disabled/>
</el-form-item>
<el-form-item :label="language==0?'类型':'Type'" prop="type">
<el-form-item label="Passport" required>
<el-input v-model="myform.passportNumber"/>
</el-form-item>
<el-form-item label="Passport File">
<file-upload v-model="myform.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/>
</el-form-item>
<!-- <el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">-->
<!-- <el-select v-model="myform.idcType" style="width: 100%">-->
<!-- <el-option-->
<!-- v-for="item in certificates"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode">-->
<!-- <el-input v-model="myform.idcCode" @blur="checkCode"/>-->
<!-- </el-form-item>-->
<el-form-item :label="language==0?'类型':'Type'" required>
<el-select v-model="myform.type" style="width: 100%;">
<el-option :label="language==0?'业余':'amateur'" value="0"/>
<el-option :label="language==0?'专业':'Professional'" value="1"/>
......@@ -47,9 +72,9 @@
<el-option :label="language==0?'其他':'Other'" value="3"/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
<el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
<!-- <el-form-item :label="language==0?'邮箱':'Email'" required prop="email">-->
<!-- <el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>-->
<!-- </el-form-item>-->
</el-form>
<div class="text-center">
<el-button type="primary" class="btn-lineG" round @click="save">
......
......@@ -10,7 +10,7 @@
<match-info-row :match-id="matchId"/>
<div class="pd20">
<el-row :gutter="20">
<el-col :lg="4">
<el-col :lg="6">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">完善我的信息</h3>
......@@ -18,40 +18,55 @@
</div>
<div class="panel-body">
<div class="chooseForm" style="display: flex">
<div @click="editPerson" style="width: 60px" class="mr20">
<div @click="editPerson" style="width: 50%;text-align: center;">
<el-avatar fit="cover" v-if="form.picUrl" :size="60" :src="fillImgUrl(form.picUrl)"/>
<div class="addBttn" v-else>+</div>
<div v-else>
<el-avatar fit="cover" v-if="form.sex == 0" :size="60" src="@/assets/img/head1.png"/>
<el-avatar fit="cover" v-if="form.sex == 1" :size="60" src="@/assets/img/head0.png"/>
</div>
<div class="text-center mt10">
<span>{{ form.name }}</span>
<span>{{ form.realName }}</span>
<el-icon>
<Edit/>
</el-icon>
</div>
</div>
<!-- 舞伴-->
<el-checkbox-group style="width: 60px">
<el-checkbox>
<div>
<el-avatar fit="cover" v-if="form.picUrl" :size="60" :src="fillImgUrl(form.picUrl)"/>
<div class="addBttn" v-else>+</div>
<div class="text-center mt10">
<span>{{ form.name }}</span>
<el-icon>
<Edit/>
</el-icon>
<!--舞伴-->
<div style="width:50%;text-align: center;" v-if="form.danceMate">
<el-checkbox-group v-model="mateChosed" @change="changeMate">
<el-checkbox :label="form.danceMate.id">
<div>
<el-avatar fit="cover" v-if="form.danceMate.sex == 0" :size="60"
src="@/assets/img/head1.png"/>
<el-avatar fit="cover" v-if="form.danceMate.sex == 1" :size="60"
src="@/assets/img/head0.png"/>
<div class="text-center mt10" @click="editMate(form.danceMate)">
<span>{{ form.danceMate.realName }}</span>
<el-icon @click.stop="editMate(form.danceMate)">
<Edit/>
</el-icon>
<el-icon @click.stop="delMate(form.danceMate)">
<Delete/>
</el-icon>
</div>
</div>
</div>
</el-checkbox>
</el-checkbox-group>
</el-checkbox>
</el-checkbox-group>
</div>
<div v-else @click="editMate()">
<div class="addBttn">+</div>
<div class="text-center mt10">
<el-icon>
<Edit/>
</el-icon>
</div>
</div>
</div>
</div>
</div>
</el-col>
<el-col :lg="20">
<el-col :lg="18">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">可参与报名的项目</h3>
......@@ -106,31 +121,33 @@
@editExtra="goPersonInfo"/>
<zu-table v-else :list="zuTableList" :language="language" @delete="removeThis"/>
<div v-if="showPersonList">
<div v-if="showPersonList||myMemberTable.length>0">
<el-row class="mt20">
<el-col :span="24">
<el-button type="primary" plain>{{ language == 0 ? '添加随行人员' : 'Add accompanying personnel' }}
<el-button @click="addAccompany" type="primary" plain>
{{ language == 0 ? '添加随行人员' : 'Add accompanying personnel' }}
</el-button>
</el-col>
</el-row>
<el-table class="mt20">
<el-table-column type="index" label="Index" width="60"/>
<el-table-column label="Name"/>
<el-table-column label="Passport number"/>
<el-table-column label="Birthday"/>
<el-table-column label="Sex"/>
<el-table-column label="Role">
<el-table class="mt20" :data="myMemberTable" border>
<el-table-column type="index" label="Index" width="70" align="center"/>
<el-table-column :label="language==0?'姓氏':'surname'" prop="xing" min-width="100"/>
<el-table-column :label="language==0?'名':'name'" prop="ming" min-width="100"/>
<el-table-column label="Passport number" prop="idcCode" min-width="120"/>
<el-table-column label="Birthday" prop="birth"/>
<el-table-column label="Sex" prop="sexStr"/>
<el-table-column label="Role" min-width="160">
<template #default="scope">
<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 class="roletd">
<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>
......@@ -156,7 +173,8 @@
</el-card>
</div>
<dialogAddCoach ref="dialogAddCoachRef" @submitForm="changeMeDone"/>
<dialogEditWdsf ref="dialogEditWdsfRef" @submitForm="changeMeDone"/>
<dialogEditAccompany ref="dialogEditAccompanyRef" @submitForm="getMyMemberTable"/>
<!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>-->
<dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/>
</div>
......@@ -166,7 +184,8 @@
import {ref, reactive, toRefs} from 'vue'
import * as match from '@/apiPc/match'
import {getCurrentInstance, onMounted} from '@vue/runtime-core'
import dialogAddCoach from './components/addCoach'
import dialogEditWdsf from './components/addWdsf'
import dialogEditAccompany from './components/addAccompany'
import dialogSportsmanList from './components/sportsmanList'
import dialogAllSportsmanList from './components/allSportsmanList'
import dialogChangeCoach from './components/changeCoach'
......@@ -187,6 +206,7 @@ import ZuTable from '@/viewsPc/match/components/zu-table'
import SingleSignStep from "@/viewsPc/match/components/singleSignStep";
import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
import useUserStore from "@/store/modules/user";
import {getPerPersonList} from "@/apiPc/match";
const language = ref(cache.local.get('language') || 0)
......@@ -196,6 +216,7 @@ const data = reactive({
signInfoList: [],
zuTableList: [],
choosedList: [],
myMemberTable: [],
extraPersonInfoMapList: [],
teamList: [],
extraform: [],
......@@ -210,14 +231,39 @@ const data = reactive({
activeTeam: '',
names: {},
choosedchoosed: [],
mateChosed: [],
projectIds: [],
projectList: [],
choosed2List: [], projectQuery: {}, tableType: 1,
})
const {
activeTeam, names, tableData, signInfoList, zuTableList, choosedList, showExtraForm, extraPersonInfoMapList, teamList,
extraform, groupId, signType, coachOrLeaderFlag, showResult, noPhotoCanSign, extraTableHead,
coachForm, projectIds, choosedchoosed, activeStep, projectList, choosed2List, loadingProject, projectQuery, tableType
activeTeam,
names,
tableData,
myMemberTable,
signInfoList,
zuTableList,
choosedList,
showExtraForm,
extraPersonInfoMapList,
teamList,
extraform,
groupId,
signType,
coachOrLeaderFlag,
showResult,
noPhotoCanSign,
extraTableHead,
coachForm,
projectIds,
choosedchoosed,
mateChosed,
activeStep,
projectList,
choosed2List,
loadingProject,
projectQuery,
tableType
} = toRefs(data)
const matchId = ref(route.query.matchId)
let signInfoType = null
......@@ -234,7 +280,7 @@ onMounted(() => {
getSignInfoList()
getMatch(matchId.value)
getMyInfo()
getMyMemberTable()
getMySignInfo()
})
......@@ -246,7 +292,23 @@ function getMyInfo() {
})
}
function changeMeDone() {
function getMyMemberTable() {
//
match.getPerPersonList({cptId: matchId.value, searchLabels: '1,2,3,4,5,6'}, userId.value).then(res => {
myMemberTable.value = res.rows
})
}
function addAccompany() {
proxy.$refs['dialogEditAccompanyRef'].open({
title: 'Add accompanying personnel',
cptId: matchId.value,
id: 0
})
}
function changeMeDone(mateId) {
console.log(mateId)
getMyInfo()
getProjectList()
}
......@@ -326,15 +388,28 @@ function submitForm(n) {
}
}
if(showPersonList.value){
commit()
if (showPersonList.value) {
if (myMemberTable.value.length == 0) {
ElMessageBox.confirm(language.value == 0 ? '是否继续添加随性人员?' : 'Do you want to add casual personnel?',
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '确定' : 'Yes',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
}).catch(() => {
commit()
})
} else {
commit()
}
} else {
ElMessageBox.confirm(language.value==0?'是否添加随性人员?':'Do you want to add casual personnel?',
language.value==0?'提示':'Tip', {
confirmButtonText: language.value==0?'确定':'Yes',
cancelButtonText: language.value==0?'取消':'Cancel',
type: 'warning'
}).then(() => {
ElMessageBox.confirm(language.value == 0 ? '是否添加随性人员?' : 'Do you want to add casual personnel?',
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '确定' : 'Yes',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
showPersonList.value = true
}).catch(() => {
commit()
......@@ -346,27 +421,44 @@ function submitForm(n) {
}
function commit() {
match.commitSign({
groupId: 0,
cptId: matchId.value
}).then(res => {
router.push({
name: `commitDone`,
params: {
orderId: res.data
}
})
})
ElMessageBox.confirm(language.value == 0 ? '确定提交吗?' : 'Are you sure to submit?',
language.value == 0 ? '提示' : 'Tip',
{
confirmButtonText: language.value == 0 ? '确定' : 'Yes',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
}).then(()=>{
match.commitSign({
groupId: 0,
cptId: matchId.value
}).then(res => {
router.push({
name: `commitDone`,
params: {
orderId: res.data
}
})
})}
)
}
function getProjectList() {
projectIds.value = []
loadingProject.value = true
//根据已选人员id 获取项目列表
var obj = {
cptId: matchId.value,
perIds: myId.value,
name: projectQuery.value.name
var obj = {}
if (mateChosed.value.length > 0 && form.value.danceMate) {
obj = {
cptId: matchId.value,
perIds: `${myId.value},${form.value.danceMate?.id}`,
name: projectQuery.value.name
}
} else {
obj = {
cptId: matchId.value,
perIds: myId.value,
name: projectQuery.value.name
}
}
match.getProjectPageByPerIds(obj).then(res => {
projectList.value = res.rows
......@@ -402,18 +494,50 @@ function addCoach() {
id: 0,
groupId: groupId.value
}
proxy.$refs['dialogAddCoachRef'].open(params)
proxy.$refs['dialogEditWdsfRef'].open(params)
}
function delperson(p) {
//删除团队下的人
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(msg)
getMyMemberTable()
getMyInfo()
})
})
}
function signUp() {
if (projectIds.value.length == 0) {
return
}
const obj = {
athleteIds: myId.value,
let obj = {
projectIds: projectIds.value.toString(),
groupId: groupId.value
groupId: 0
}
if (mateChosed.value.length > 0 && form.value.danceMate) {
obj.athleteIds= `${myId.value},${form.value.danceMate?.id}`
} else {
obj.athleteIds= myId.value
}
match.sportsmanDone(obj).then(res => {
getSignInfoList()
......@@ -456,12 +580,14 @@ function goMySign() {
const goPersonInfo = (row) => {
if (signInfoType == '1') {
ElMessageBox.alert('已报项,前往我的报项', '提示', {
confirmButtonText: 'OK',
callback: (Action) => {
router.push({name: 'myMatch'})
}
})
ElMessageBox.alert(
language.value == 0 ? '已报项,前往我的报项' : 'Reported items, go to my submission',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: 'OK',
callback: (Action) => {
router.push({name: 'myMatch'})
}
})
return
}
// 完善补充信息
......@@ -484,12 +610,39 @@ function downloadVoucher() {
}
function editPerson() {
proxy.$refs['dialogAddCoachRef'].open({
proxy.$refs['dialogEditWdsfRef'].open({
title: language.value == 0 ? '编辑个人信息' : 'Edit My Information',
isMe: true
})
}
function editMate(obj) {
proxy.$refs['dialogEditWdsfRef'].open({
title: language.value == 0 ? '编辑舞伴' : 'Edit My Mate',
isMe: false,
form: obj || {},
cptId:matchId.value,
id: obj?.id || 0
})
}
function delMate(mate) {
delperson(mate)
// ElMessageBox.confirm(language.value == 0 ? '确定删除队友吗?' : 'Are you sure to delete the teammate?',
// language.value == 0 ? '提示' : 'Tip',
// {
// confirmButtonText: language.value == 0 ? '确定' : 'Yes',
// cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
// }).then(()=>{
//
// })
}
function changeMate(e) {
console.log(e, mateChosed.value)
getProjectList()
}
function switchTabletype() {
if (tableType.value == 0) {
tableType.value = 1
......@@ -652,4 +805,10 @@ function switchTabletype() {
}
}
}
.roletd {
.ml5 {
display: inline-block
}
}
</style>
......
<template>
<el-dialog
v-model="show" :title="title" width="800px" append-to-body close-icon="CircleClose" center
:close-on-click-modal="false" class="pcloginpop"
destroy-on-close
>
<el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="160px" inline>
<el-row :gutter="30">
<el-col :lg="24">
<el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required>
<el-input v-model="form.xing"/>
</el-form-item>
<el-form-item :label="language==0?'名':'name'" prop="ming" required>
<el-input v-model="form.ming"/>
</el-form-item>
<!-- <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"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item :label="language==0?'护照号':'PassPort Number'" prop="idcCode" required>
<el-input v-model="form.idcCode"/>
</el-form-item>
<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"
/>
</el-form-item>
<el-form-item :label="language==0?'性别':'sex'" prop="sex">
<el-radio-group v-model="form.sex">
<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="language==0?'主要会员角色':'roles'" prop="labelArr">
<el-select v-model="form.labelArr" 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-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{
language == 0 ? '确定' : 'Save'
}}
</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 * as match from '@/apiPc/match'
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 certificates = ref([
{
value: '0',
label: language.value == 0 ? '居民身份证' : 'Resident ID card'
},
{
value: '1',
label: language.value == 0 ? '护照' : 'Passport'
},
{
value: '2',
label: language.value == 0 ? '其他' : 'Other'
}
])
const {proxy} = getCurrentInstance()
const emit = defineEmits(['submitForm'])
const data = reactive({
form: {
idcType: '1',
sex:'0'
},
rules: {
xing: [{required: true, message: '必填', trigger: 'blur'}],
ming: [{required: true, message: '必填', trigger: 'blur'}],
idcCode: [{required: true, message: '必填', trigger: 'blur'}],
birth: [{required: true, message: '必填', trigger: 'change'}],
sex: [{required: true, message: '必填', trigger: 'change'}],
labelArr: [{required: true, message: '必填', trigger: 'blur'}]
},
rules_cn: {
xing: [{required: true, message: 'required', trigger: 'blur'}],
ming: [{required: true, message: 'required', trigger: 'blur'}],
idcCode: [{required: true, message: 'required', trigger: 'blur'}],
birth: [{required: true, message: 'required', trigger: 'change'}],
address: [{required: true, message: 'required', trigger: 'blur'}],
sex: [{required: true, message: 'required', trigger: 'change'}],
labelArr: [{required: true, message: 'required', trigger: 'blur'}]
},
show: false,
labels: [
// {value: '0', label: '运动员', enlabel: 'Sportsman'},
{value: '1', label: '教练', enlabel: 'Coach'},
{value: '2', label: '领队', enlabel: 'Leader'},
{value: '4', label: '队医', enlabel: 'Nurse'},
{value: '5', label: '翻译', enlabel: 'Translator'},
{value: '6', label: '官员', enlabel: 'Official'},
{value: '3', label: '其他', enlabel: 'Other'}
],
title: 'Add accompanying personnel',
cptId:''
})
const {
form,
rules,
rules_cn,
show,
title,
cptId,
labels,
uType
} = toRefs(data)
let editgay = false
const open = (params) => {
console.log(params)
show.value = true
cptId.value = params.cptId
title.value = params.title
if (params.id != 0) { // 编辑
editgay = true
match.getPersonInfoById(params.id).then(res => {
form.value = res.data
form.value.id = params.id
if (form.value.label) {
// {0:0,1:1,2:3}
form.value.labelArr = form.value.label.split(',')
}
})
}
}
defineExpose({open})
watch(show, (value) => {
if (!value) {
form.value = {}
}
nextTick(() => {
proxy.$refs['dialogRef'].clearValidate()
})
})
function submitForm() {
proxy.$refs['dialogRef'].validate((valid) => {
if (valid) {
form.value.label = form.value.labelArr.toString()
if (editgay) {
// id不是0
match.editPersonInfo(form.value).then(res => {
ElMessage.success('保存成功')
show.value = false
emit('submitForm')
})
} else {
form.value.cptId = cptId.value
match.savePersonForMyPerson(form.value).then(res => {
ElMessage.success('保存成功')
show.value = false
emit('submitForm')
})
}
}
})
}
function cancel() {
show.value = false
}
</script>
<style lang="scss">
.threeFour {
width: 100%;
.el-upload--picture-card {
width: 120px;
height: 160px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 120px;
height: 160px;
}
}
.tip {
font-size: 13px;
color: #999;
margin: 10px 0;
i {
color: red;
margin: 0 4px 0 0;
}
}
.shenfen {
.el-upload--picture-card {
width: 320px;
height: 200px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 320px;
height: 200px;
}
}
.touxiang {
:deep(.el-upload--picture-card ) {
width: 140px;
height: 200px;
}
}
.touxiang {
:deep(.el-upload-list__item ) {
width: 140px;
height: 200px;
}
}
.el-form--inline .el-form-item {
width: 100%
}
.boxDialog {
.el-dialog__header {
background: linear-gradient(#ed2c22, #fe6d45);
margin-right: 0;
height: 52px;
span {
color: #fff;
}
}
}
</style>
......@@ -42,7 +42,7 @@
/>
</el-form-item>
<el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr">
<el-select v-model="form.labelArr" multiple @change="labelvalue">
<el-select v-model="form.labelArr" 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>
......@@ -63,6 +63,7 @@
<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'" prop="address" required>
<el-cascader v-if="form.countryId == 240"
v-model="form.regionId"
......@@ -201,7 +202,8 @@ const open = (params) => {
if (form.value.label) {
// {0:0,1:1,2:3}
form.value.labelArr = form.value.label.split(',')
labelvalue(form.value.labelArr)
} else {
form.value.labelArr = ['0']
}
})
} else {
......@@ -213,7 +215,6 @@ const open = (params) => {
if (form.value.label) {
// {0:0,1:1,2:3}
form.value.labelArr = form.value.label.split(',')
labelvalue(form.value.labelArr)
}
})
}
......@@ -259,7 +260,6 @@ function checkCode() {
form.value = res.data
if (form.value.label != null) {
form.value.labelArr = form.value.label.split(',')
labelvalue(form.value.labelArr)
}
form.value.groupId = groupId.value
}
......@@ -297,16 +297,6 @@ function giveBirthDay() {
}
}
function labelvalue(e) {
if (e.indexOf('1') > -1 || e.indexOf('2') > -1) {
// 联系方式必填
showRequire.value = true
} else {
showRequire.value = false
}
console.log(showRequire.value)
}
function submitForm() {
proxy.$refs['dialogRef'].validate((valid) => {
if (valid) {
......
<template>
<el-dialog
v-model="show" :title="title" width="800px" append-to-body close-icon="CircleClose" center
:close-on-click-modal="false" class="pcloginpop" @close="cancel"
destroy-on-close
>
<el-form ref="dialogRef" :model="form" :label-width="language==0?120:180" inline>
<el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" v-if="form.id">
{{ form.wdsfMin }}
</el-form-item>
<el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" required v-else>
<el-input type="text" v-model="card" @change="resetCode" >
<template #append>
<el-button type="primary" plain style="width: 110px" @click="checkCard">
<el-icon v-if="isCodeTrue" size="16" color="#67C23A">
<CircleCheckFilled/>
</el-icon>
<span v-else>{{ language == 0 ? '校验卡号' : 'Check Code' }}</span>
</el-button>
</template>
</el-input>
<Vcode :show="showVcode" :z-index="2999" @success="codeSuccess()"></Vcode>
</el-form-item>
<div class="h30"></div>
<div class="leftboderTT">{{ language == 0 ? '个人信息' : 'Personal information' }}
<span v-if="language==0">(登录时需要验证,保护账户信息)</span>
<span v-else>(Obtain automatically according to the WDSF number)</span>
</div>
<div class="h20"></div>
<el-form-item :label="language==0?'名':'name'">
<el-input v-model="form.ming" disabled/>
</el-form-item>
<el-form-item :label="language==0?'姓氏':'surname'">
<el-input v-model="form.xing" disabled/>
</el-form-item>
<el-form-item label="Representing">
<el-input v-model="form.representing" disabled/>
</el-form-item>
<el-form-item label="Age group">
<el-input v-model="form.ageGroup" disabled/>
</el-form-item>
<el-form-item label="Division">
<el-input v-model="form.division" disabled/>
</el-form-item>
<el-form-item label="Status">
<el-input v-model="form.wdsfStatus" disabled/>
</el-form-item>
<div class="h30"></div>
<div class="leftboderTT">
{{ language == 0 ? '补充信息' : 'Supplementary Information' }}
</div>
<div class="h20"></div>
<el-form-item :label="language==0?'性别':'Sex'" required>
<el-radio-group v-model="form.sex">
<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="language==0?'出生日期':'Birthday'" required>
<el-date-picker
v-model="form.birth"
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="form.passportNumber"/>
</el-form-item>
<el-form-item label="Passport File">
<file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{
language == 0 ? '确定' : 'Save'
}}
</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 * as match from '@/apiPc/match'
import {ElMessage} from 'element-plus'
import _ from 'lodash'
import cache from "@/plugins/cache";
import Vcode from "vue3-puzzle-vcode"
import {checkWdsf} from "@/apiPc/match";
const language = ref(cache.local.get('language') || 0)
const certificates = ref([
{
value: '0',
label: language.value == 0 ? '居民身份证' : 'Resident ID card'
},
{
value: '1',
label: language.value == 0 ? '护照' : 'Passport'
},
{
value: '2',
label: language.value == 0 ? '其他' : 'Other'
}
])
const {proxy} = getCurrentInstance()
const emit = defineEmits(['submitForm'])
const data = reactive({
form: {
// countryId: 240
sex:'0'
},
card:'',
show: false,
showVcode: false,
labels: [
{value: '0', label: '运动员', enlabel: 'Sportsman'},
{value: '1', label: '教练', enlabel: 'Coach'},
{value: '2', label: '领队', enlabel: 'Leader'},
{value: '4', label: '队医', enlabel: 'Nurse'},
{value: '5', label: '翻译', enlabel: 'Translator'},
{value: '6', label: '官员', enlabel: 'Official'},
{value: '3', label: '其他', enlabel: 'Other'}
],
title: '添加选手信息',
isMe: false,
isCodeTrue: false,
cptId:''
})
const {form, show,showVcode, title, labels, uType, isMe,isCodeTrue,card,cptId} = toRefs(data)
let editgay = false
const open = (params) => {
console.log(params)
show.value = true
title.value = params.title
isMe.value = params.isMe
cptId.value = params.cptId
if (language.value == 0) {
form.value.countryId = 240
}
if (isMe.value) {
//个人
match.getMyPersonInfo().then(res => {
form.value = res.data
form.value.id = res.data.id
if (form.value.label) {
// {0:0,1:1,2:3}
form.value.labelArr = form.value.label.split(',')
} else {
form.value.labelArr = ['0']
}
})
} else {
if (params.id != 0) { // 编辑舞伴
editgay = true
form.value = params.form
}
}
}
defineExpose({open})
watch(show, (value) => {
if (!value) {
form.value = {
sex:'0'
}
}
nextTick(() => {
proxy.$refs['dialogRef'].clearValidate()
})
})
function submitForm() {
if (editgay) {
// id不是0
form.value.cptId = cptId.value
match.editPersonInfo(form.value).then(res => {
ElMessage.success('保存成功')
show.value = false
emit('submitForm')
})
} else {
if (!form.value.passportNumber) {
ElMessage.error('Please fill in your passport number')
return
}
if (!form.value.birth) {
ElMessage.error('Please fill in your birthday')
return
}
if(Array.isArray(form.value.passportUrl)){
form.value.passportUrl = form.value.passportUrl[0].url
}
if (isMe.value) {
match.saveMyBaseInfo(form.value).then(res => {
ElMessage.success('保存成功')
show.value = false
emit('submitForm')
})
} else {
delete form.value.status
delete form.value.id
form.value.label = '0'
form.value.cptId = cptId.value
form.value.wdsfMin = form.value.min
form.value.idcCode = form.value.passportNumber
form.value.idcType = '1'
match.savePersonForMyPerson(form.value).then(res => {
ElMessage.success('保存成功')
show.value = false
emit('submitForm', res.data)
})
}
}
}
function cancel() {
show.value = false
showVcode.value = false
}
function resetCode() {
isCodeTrue.value = false
}
function checkCard() {
if(isCodeTrue.value){
return
}
if (!card.value) {
if (language.value == 0) {
ElMessage.error('请填写WDSF卡号')
} else {
ElMessage.error('Please fill in your WDSF code')
}
return
}
showVcode.value = true
}
function codeSuccess(msg) {
console.log('验证通过' + msg);
showVcode.value = false
isCodeTrue.value = true
checkWdsf({card: card.value}).then(res => {
form.value = res.data
form.value.xing = form.value.surname
form.value.ming = form.value.name
form.value.wdsfStatus = form.value.status
if (!form.value.sex) {
form.value.sex = '0'
}
if (form.value.wdsfFlag == '0') {
isCodeTrue.value = false
if (language.value == 0) {
ElMessage.error('WDSF卡号错误')
} else {
ElMessage.error('WDSF ID is Error')
}
}
})
}
</script>
<style lang="scss">
.el-input-group__append button.el-button, .el-input-group__append button.el-button:hover {
color: var(--el-color-primary);
background: #efefff;
border: var(--el-color-primary) solid 1px;
border-radius: 0;
}
.leftboderTT {
color: var(--el-color-primary);
font-size: 16px;
font-weight: 600;
span {
color: #929AA0;
font-size: 14px;
}
}
.threeFour {
width: 100%;
.el-upload--picture-card {
width: 120px;
height: 160px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 120px;
height: 160px;
}
}
.tip {
font-size: 13px;
color: #999;
margin: 10px 0;
i {
color: red;
margin: 0 4px 0 0;
}
}
.shenfen {
.el-upload--picture-card {
width: 320px;
height: 200px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 320px;
height: 200px;
}
}
.touxiang {
:deep(.el-upload--picture-card ) {
width: 140px;
height: 200px;
}
}
.touxiang {
:deep(.el-upload-list__item ) {
width: 140px;
height: 200px;
}
}
.el-form--inline .el-form-item {
width: 100%
}
.boxDialog {
.el-dialog__header {
background: linear-gradient(#ed2c22, #fe6d45);
margin-right: 0;
height: 52px;
span {
color: #fff;
}
}
}
</style>
......@@ -7,10 +7,10 @@
<el-descriptions-item v-if="form.picUrl" :label="language==0?'个人照片':'photo'">
<img style="width: 60px" :src="fillImgUrl(form.picUrl)">
</el-descriptions-item>
<el-descriptions-item :label="language==0?'姓氏':'surname'">{{ form.xing }}</el-descriptions-item>
<el-descriptions-item v-if="form.xing" :label="language==0?'姓氏':'surname'">{{ form.xing }}</el-descriptions-item>
<el-descriptions-item :label="language==0?'名':'name'">{{ form.ming }}</el-descriptions-item>
<el-descriptions-item :label="language==0?'性别':'sex'">{{ form.sexStr }}</el-descriptions-item>
<el-descriptions-item :label="language==0?'所属国家':'Nationality'">{{ form.countryName }}</el-descriptions-item>
<el-descriptions-item v-if="form.countryName" :label="language==0?'所属国家':'Nationality'">{{ form.countryName }}</el-descriptions-item>
<el-descriptions-item :label="language==0?'证件类型':'ID type'">{{ form.idcTypeStr }}</el-descriptions-item>
<el-descriptions-item :label="language==0?'证件号码':'ID NO'">{{ form.idcCode }}</el-descriptions-item>
<el-descriptions-item :label="language==0?'出生日期':'birth'">{{ form.birth }}</el-descriptions-item>
......
......@@ -2,9 +2,14 @@
<div class="mt20"></div>
<el-table :data="list" :sum-text="sumText" border style="width: 100%" v-loading="loading">
<el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/>
<el-table-column :label="language==0?'姓氏':'Last Name'" prop="personInfo.xing" min-width="100"/>
<el-table-column :label="language==0?'名':'First Name'" prop="personInfo.ming" min-width="100"/>
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" :min-width="language==0?'100':'120'"/>
<el-table-column :label="language==0?'姓氏':'Surname'" prop="personInfo.xing" min-width="100"/>
<el-table-column :label="language==0?'名':'Name'" prop="personInfo.ming" min-width="100"/>
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="" :min-width="language==0?'100':'120'">
<template #default="scope">
<span v-if="scope.row.personInfo.countryName">{{scope.row.personInfo.countryName}}</span>
<span v-if="scope.row.personInfo.Representing">{{scope.row.personInfo.Representing}}</span>
</template>
</el-table-column>
<!-- <el-table-column :label="language==0?'短名':'Nick Name'" prop="personInfo.shortName" min-width="110"/>-->
<el-table-column :label="language==0?'性别':'Gender'" prop="personInfo.sexStr"/>
<!-- <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/>-->
......
......@@ -355,10 +355,9 @@ function goTeamSign() {
function goPersonalSign() {
// 选项目
router.push({
name: `chooseCoach`,
name: 'chooseProject',
query: {
matchId: matchId.value,
signType: matchData.value.signType
matchId: matchId.value
}
})
}
......
......@@ -7,14 +7,16 @@
<div>
<el-card style="min-height: 50vh">
<div class="pt30">
<el-form class="d-form" size="large" :label-width="language==0?120:180"
style="max-width: 560px;margin: auto">
<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-input type="text" v-model="form.card" @change="resetCode(0)" @blur="verifyCode">
<template #append>
<el-button type="primary" plain style="width: 110px" @click="checkCard">
<el-icon v-if="checkStatus" size="16" color="#67C23A"><CircleCheckFilled /></el-icon>
<span v-else>{{ language==0?'校验卡号':'Check Code' }}</span>
<el-icon v-if="wdsfData.wdsfFlag=='1'" size="16" color="#67C23A">
<CircleCheckFilled/>
</el-icon>
<span v-else>{{ language == 0 ? '校验卡号' : 'Check Code' }}</span>
</el-button>
</template>
</el-input>
......@@ -25,48 +27,48 @@
<span v-else>(Obtain automatically according to the WDSF number)</span>
</div>
<div class="h20"></div>
<el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required>
<el-input v-model="form.xing" disabled/>
<el-form-item :label="language==0?'姓氏':'surname'">
<el-input v-model="wdsfData.surname" disabled/>
</el-form-item>
<el-form-item :label="language==0?'名':'name'" prop="ming" required>
<el-input v-model="form.ming" disabled/>
<el-form-item :label="language==0?'名':'name'">
<el-input v-model="wdsfData.name" disabled/>
</el-form-item>
<el-form-item label="Representing" required>
<el-input v-model="form.Representing" disabled/>
<el-form-item label="Representing">
<el-input v-model="wdsfData.representing" disabled/>
</el-form-item>
<el-form-item label="Age group" required>
<el-input v-model="form.ageGroup" disabled/>
<el-form-item label="Age group">
<el-input v-model="wdsfData.ageGroup" disabled/>
</el-form-item>
<el-form-item label="Division" required>
<el-input v-model="form.division" disabled/>
<el-form-item label="Division">
<el-input v-model="wdsfData.division" disabled/>
</el-form-item>
<el-form-item label="Status" required>
<el-input v-model="form.status" disabled/>
<el-form-item label="Status">
<el-input v-model="wdsfData.status" disabled/>
</el-form-item>
<div class="h30"></div>
<div class="leftboderTT">
{{ language == 0 ? '补充信息' : 'Supplementary Information' }}
</div>
</div>
<div class="h20"></div>
<el-form-item :label="language==0?'性别':'Sex'" prop="sex" required>
<el-radio-group v-model="form.sex">
<el-radio label="0">{{ language==0?'女':'female' }}</el-radio>
<el-radio label="1">{{ language==0?'男':'male' }}</el-radio>
<el-form-item :label="language==0?'性别':'Sex'" required>
<el-radio-group v-model="wdsfData.sex">
<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="language==0?'出生日期':'Birthday'" prop="birth" required>
<el-form-item :label="language==0?'出生日期':'Birthday'" required>
<el-date-picker
v-model="form.birth"
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 prop="idcCode">
<el-input v-model="form.idcCode"/>
<el-form-item label="Passport number" required>
<el-input v-model="wdsfData.passportNumber"/>
</el-form-item>
<el-form-item label="Passport File">
<file-upload :is-show-tip="false" :button-text="'Upload'"/>
<file-upload v-model="wdsfData.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/>
</el-form-item>
......@@ -75,25 +77,30 @@
v-if="language==0">(登录时需要验证,保护账户信息)</span></div>
<div class="h20"></div>
<el-form-item :label="language==0?'邮箱':'E-mail'" required>
<el-input type="text" v-model="form.account" @change="resetCode(1)"
@blur="verifyCode"/>
<div class="tip" v-if="language==0">
(请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。
该邮箱后续会接收您报名审核、支付账单、比赛邀请函等。)
</div>
<div class="tip" v-else>
Please fill in a correct mailbox information, which cannot be modified after registration.
The mailbox will receive your registration review, payment of bills, competition invitation and so on.
<el-input type="text" v-model="wdsfData.email" @change="resetCode(1)"
@blur="verifyCode" :disabled="wdsfData.personFlag=='1'"/>
<div class="tip" v-if="wdsfData.personFlag=='0'">
<div v-if="language==0">
(请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。
该邮箱后续会接收您报名审核、支付账单、比赛邀请函等。)
</div>
<div v-else>
Please fill in a correct mailbox information, which cannot be modified after registration.
The mailbox will receive your registration review, payment of bills, competition invitation and so
on.
</div>
</div>
</el-form-item>
<el-form-item :label="language==0?'验证码':'Code'" required>
<el-form-item :label="language==0?'验证码':'Code'" required v-if="wdsfData.personFlag=='0'">
<el-input v-model="form.code">
<template #append>
<el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
<count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
{{ totalSeconds }} {{ language==0?'秒':'s' }}
{{ totalSeconds }} {{ language == 0 ? '秒' : 's' }}
</count-down>
<span v-else>{{ language==0?'发送验证码':'Send code' }}</span>
<span v-else>{{ language == 0 ? '发送验证码' : 'Send code' }}</span>
</el-button>
</template>
</el-input>
......@@ -103,74 +110,88 @@
<el-input type="password" show-password v-model="form.password"
:placeholder="language==0?'6-16位密码。区分大小写':'Password'"/>
</el-form-item>
<el-form-item :label="language==0?'确认密码':'Confirm Password'" required>
<el-form-item :label="language==0?'确认密码':'Confirm Password'" required
v-if="wdsfData.personFlag=='0'">
<el-input type="password" show-password v-model="form.confirmPassword" @change="vconfirmPassword"
:placeholder="language==0?'再次输入密码':'Confirm Password'"/>
<div class="text-danger" v-if="showError">{{ language==0?'密码不一致':'Password inconsistency' }}</div>
<div class="text-danger" v-if="showError">{{
language == 0 ? '密码不一致' : 'Password inconsistency'
}}
</div>
</el-form-item>
</el-form>
</div>
<div class="text-center">
<el-button class="primary-kx" round @click="goBack"> {{ language==0?'取消':'Cancel'}}</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="next" v-if="matchId=='0'">
{{ language==0?'立即注册':'Register Now' }}
</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="next" v-else>
{{ language==0?'下一步':'Next' }}
<el-button class="primary-kx" round @click="goBack"> {{ language == 0 ? '取消' : 'Cancel' }}</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="next" v-if="wdsfData.wdsfFlag=='1'">
<span v-if="matchId=='0'">{{ language == 0 ? '立即注册' : 'Register Now' }}</span>
<span>{{ language == 0 ? '下一步' : 'Next' }}</span>
</el-button>
</div>
</el-card>
</div>
<Vcode :show="isShow" @success="codeSuccess()"></Vcode>
<Vcode :show="isShow" :z-index="3000" @success="codeSuccess()"></Vcode>
</div>
</div>
</div>
</template>
<script setup>
import {ref,toRefs,reactive} from "vue"
import {onMounted} from "@vue/runtime-core";
import {ref, toRefs, reactive} from "vue"
import {getCurrentInstance, onMounted} from "@vue/runtime-core";
import Step3 from "./team/step3"
import Vcode from "vue3-puzzle-vcode"
import { ElMessage } from 'element-plus'
import {ElMessage} from 'element-plus'
import CountDown from '@chenfengyuan/vue-countdown'
import cache from '@/plugins/cache'
import {checkWdsf, getCaptchaSms, registerSingle} from "@/apiPc/match";
import {checkWdsf, getCaptchaSms, loginSingle, registerSingle} from "@/apiPc/match";
import {setToken} from "@/utils/auth";
import PersonalStep from "@/viewsPc/register/components/personal-step";
import FileUpload from "@/components/FileUpload";
import {useRouter,useRoute} from "vue-router";
import {useRouter, useRoute} from "vue-router";
const language = ref(cache.local.get('language') || 0)
const router = useRouter()
const route = useRoute()
const {proxy} = getCurrentInstance()
const data = reactive({
isShow:false,
isCodeTrue:0,
counting:false,
checkStatus:false,
form:{
sex:'0'
},
isShow: false,
isCodeTrue: 0,
counting: false,
checkStatus: false,
form: {},
activeStep: 0,
failVcode:'验证失败,请重试',
successVcode:'验证通过!',
failVcode: '验证失败,请重试',
successVcode: '验证通过!',
sliderText: '拖动滑块完成拼图',
showError: false
showError: false,
wdsfData: {
sex: '0'
},
wdsfDataRule: {
birthday: [{required: true, message: 'required', trigger: 'blur'}],
passportNumber: [{required: true, message: 'required', trigger: 'blur'}],
}
})
const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText,checkStatus,showError} = toRefs(data)
const {
isShow, isCodeTrue, counting, form, activeStep, failVcode, successVcode, sliderText,
checkStatus, showError, wdsfData, wdsfDataRule
} = toRefs(data)
const matchId = ref('0')
onMounted(()=>{
if(language.value==1){
onMounted(() => {
if (language.value == 1) {
failVcode.value = 'Error!'
successVcode.value = 'Success!'
sliderText.value = 'Drag the slider to complete the puzzle'
}
matchId.value = route.query.matchId
matchId.value = route.query.matchId || '0'
})
function sendsmsMsg() {
if(!form.value.account){
if(language.value==0){
if (!form.value.account) {
if (language.value == 0) {
ElMessage.error('请填写手机/邮箱')
} else {
ElMessage.error('Please fill in your phone/email address')
......@@ -178,15 +199,16 @@ function sendsmsMsg() {
return
}
if(counting.value){
if (counting.value) {
return
} else {
isShow.value = true
}
}
function checkCard() {
if(!form.value.card){
if(language.value==0){
if (!form.value.card) {
if (language.value == 0) {
ElMessage.error('请填写WDSF卡号')
} else {
ElMessage.error('Please fill in your WDSF code')
......@@ -195,86 +217,172 @@ function checkCard() {
}
isShow.value = true
}
function verifyCode() {
if(!form.value.account){
if (!form.value.account) {
return
}
if(form.value.account.indexOf('@')>-1){
if (form.value.account.indexOf('@') > -1) {
//邮箱
}
}
function codeSuccess(msg) {
console.log('验证通过' + msg);
isShow.value = false
isCodeTrue.value += 1
if(isCodeTrue.value==1){
checkWdsf({card:form.value.card}).then(res=>{
checkStatus.value = res.data
if (isCodeTrue.value == 1) {
checkWdsf({card: form.value.card}).then(res => {
wdsfData.value = res.data
if (!wdsfData.value.sex) {
wdsfData.value.sex = '0'
}
if (wdsfData.value.wdsfFlag == '0') {
isCodeTrue.value = 0
if (language.value == 0) {
ElMessage.error('WDSF卡号错误')
} else {
ElMessage.error('WDSF ID is Error')
}
}
}).catch(err => {
isCodeTrue.value = 0
})
}
if(isCodeTrue.value==2){
if (isCodeTrue.value == 2) {
counting.value = true
getCaptchaSms({account:form.value.account}).then(res=>{
getCaptchaSms({account: form.value.account}).then(res => {
})
}
}
function resetCode(n) {
isCodeTrue.value = n
}
function vconfirmPassword() {
if(form.value.password != form.value.confirmPassword){
if (form.value.password != form.value.confirmPassword) {
showError.value = true
} else {
showError.value = false
}
}
function goBack() {
router.go(-1)
}
function next() {
// registerSingle(form.value).then(res=>{
// setToken(res.data.token)
if(matchId.value!='0'){
router.push({
name: 'chooseProject',
params:{
id: matchId.value
},
query: {
matchId: matchId.value
}
})
// proxy.$refs['wdsfDataRef'].validate((valid) => {
// if (valid)
if (!wdsfData.value.passportNumber) {
ElMessage.error('Please fill in your passport number')
return
}
if (!wdsfData.value.birthday) {
ElMessage.error('Please fill in your birthday')
return
}
if (wdsfData.value.personFlag == '0') {
let obj = {
card: form.value.card,
account: wdsfData.value.email,
code: form.value.code,
password: form.value.password,
sex: wdsfData.value.sex,
birth: wdsfData.value.birthday,
passportUrl: wdsfData.value.passportUrl[0].url,
passportNumber: wdsfData.value.passportNumber,
}
registerSingle(obj).then(res => {
setToken(res.data.token)
console.log(matchId.value)
afterR()
})
}
if (wdsfData.value.personFlag == '1') {
if(!form.value.password){
ElMessage.error('Please fill in your password')
return
}
let obj = {
sex: wdsfData.value.sex,
passportNumber: wdsfData.value.passportNumber,
birth: wdsfData.value.birthday,
personId: wdsfData.value.personId,
username: wdsfData.value.email,
password: form.value.password,
}
if(Array.isArray(wdsfData.value.passportUrl)){
obj.passportUrl = form.value.passportUrl[0].url
} else {
router.push({
name: 'matchDetail',
params:{
id: 0
}
})
obj.passportUrl = wdsfData.value.passportUrl
}
loginSingle(obj).then(res => {
setToken(res.data.token)
console.log(matchId.value)
afterR()
})
}
// })
}
function afterR() {
if (matchId.value != '0') {
router.push({
name: 'chooseProject',
params: {
id: matchId.value
},
query: {
matchId: matchId.value
}
})
} else {
router.push({
name: 'matchDetail',
params: {
id: 0
}
})
}
}
</script>
<style scoped lang="scss">
.tip{line-height: 1.6;font-size: 12px;margin-top: 6px;color: #666;}
.tip {
line-height: 1.6;
font-size: 12px;
margin-top: 6px;
color: #666;
}
.leftboderTT {
color: var(--el-color-primary);
font-size: 16px;
font-weight: 600;
span {
color: #929AA0;
font-size: 14px;
span {
color: #929AA0;
font-size: 14px;
}
}
.h20 {
height: 20px
}
.h30 {
height: 30px
}
.el-input-group__append {
flex: 1 1 auto;
}
.h20{height: 20px}
.h30{height: 30px}
.el-input-group__append{ flex: 1 1 auto;}
.el-input-group__append button.el-button, .el-input-group__append button.el-button:hover{
.el-input-group__append button.el-button, .el-input-group__append button.el-button:hover {
color: var(--el-color-primary);
background: #efefff;
border: var(--el-color-primary) solid 1px;
......
......@@ -5,6 +5,10 @@
<el-form-item :label="language==0?'邮箱':'E-mail'" required>
<el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"
/>
<div class="tip">
(请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。
该邮箱后续会会作为您登录的账户,并接收您报名审核、支付账单、比赛邀请函等。)
</div>
</el-form-item>
<el-form-item :label="language==0?'验证码':'Code'" required>
<el-input v-model="form.code">
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!