6be47212 by 杨炀

no message

1 parent 1cf0239b
......@@ -548,12 +548,6 @@ export const constantRoutes = [
meta: { title: '选择参赛项目' }
},
{
path: 'list/:id/expenseDetails',
component: () => import('@/viewsPc/match/expenseDetails'),
name: 'expenseDetails',
meta: { title: '费用明细' }
},
{
path: 'list/:id/signPreview',
component: () => import('@/viewsPc/match/signPreview'),
name: 'signPreview',
......
......@@ -453,12 +453,6 @@ export const constantRoutes = [
meta: { title: '选择参赛项目' }
},
{
path: 'list/:id/expenseDetails',
component: () => import('@/viewsPc/match/expenseDetails'),
name: 'expenseDetails',
meta: { title: '费用明细' }
},
{
path: 'list/:id/signPreview',
component: () => import('@/viewsPc/match/signPreview'),
name: 'signPreview',
......
......@@ -438,12 +438,6 @@ export const constantRoutes = [
component: () => import('@/viewsPc/match/chooseProject'),
name: 'chooseProject',
meta: { title: '选择参赛项目' }
},
{
path: 'list/:id/expenseDetails',
component: () => import('@/viewsPc/match/expenseDetails'),
name: 'expenseDetails',
meta: { title: '费用明细' }
}
]
},
......
......@@ -9,15 +9,16 @@
<el-form-item :label="language==0?'姓名':'Name'">
<el-input v-model="query.realName" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item :label="language==0?'短名':'Nick Name'">
<el-input v-model="query.shortName" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item :label="language==0?'手机号码':'Phone'">
<el-input v-model="query.phone" style="width: 120px;" clearable/>
</el-form-item>
<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="language==0?'短名':'Nick Name'">-->
<!-- <el-input v-model="query.shortName" style="width: 120px;" clearable/>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'手机号码':'Phone'">-->
<!-- <el-input v-model="query.phone" style="width: 120px;" clearable/>-->
<!-- </el-form-item>-->
<!-- <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="language==0?'证件类型':'ID Type'">
<el-input v-model="query.idcType" style="width: 120px;" clearable/>
</el-form-item>
......@@ -29,6 +30,9 @@
<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?'WDSF':'WDSF'">
<el-input v-model="query.wdsfMin" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getList">{{ language==0?'查询':'Search' }}</el-button>
</el-form-item>
......
......@@ -23,6 +23,15 @@
<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="language==0?'团体类型':'Group type'" prop="type" required>
<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="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson">
<el-input type="text" v-model="form.contactPerson" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
......
......@@ -11,7 +11,7 @@
v-model.trim="loginForm.username"
size="large"
auto-complete="off"
:placeholder="language==0?'账号(注册时使用的邮箱/手机号码)':'Account (e-mail/ cell-phone number)'"
:placeholder="language==0?'账号(注册时使用的邮箱)':'Account (e-mail)'"
>
</el-input>
......
<template>
<div>
<!-- 个人报名-国外-->
<div class="box ph-30">
<el-card class="mb20">
<single-sign-step :activeStep="2" :language="language"/>
......@@ -16,19 +17,34 @@
<h3 class="panel-title" v-else>My Information</h3>
</div>
<div class="panel-body">
<div class="chooseForm">
<div @click="editPerson" style="width: 60px">
<div class="chooseForm" style="display: flex">
<div @click="editPerson" style="width: 60px" class="mr20">
<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 v-if="form.shortName">{{form.shortName}}</span>
<span>{{ form.name }}</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>
</div>
</el-checkbox>
</el-checkbox-group>
</div>
</div>
......@@ -45,7 +61,7 @@
clearable/>
</div>
</div>
<div v-loading="loadingProject" style="min-height: 200px;max-height: 60vh">
<div v-loading="loadingProject" style="height: 60vh">
<el-checkbox-group v-model="projectIds">
<el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id">
<div class="flexBetween w100">
......@@ -53,7 +69,7 @@
{{ c.code }}:{{ c.name }}
<div>{{ c.danceTypeDetailStr }}</div>
</div>
<div class="text-primary">¥{{ c.serviceFee }}</div>
<div class="text-primary">{{ language == 0 ? '¥' : '£' }}{{ c.serviceFee }}</div>
</div>
</el-checkbox>
</el-checkbox-group>
......@@ -89,19 +105,59 @@
:extraform="extraform" :language="language" :list="signInfoList"
@editExtra="goPersonInfo"/>
<zu-table v-else :list="zuTableList" :language="language" @delete="removeThis"/>
<div v-if="showPersonList">
<el-row class="mt20">
<el-col :span="24">
<el-button 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">
<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>
</template>
</el-table-column>
<el-table-column label="Actions">
<template #default="scope">
<a class="text-primary pd10" @click="delperson(scope.row)">
{{ language == 0 ? '删除' : 'Delete' }}
</a>
</template>
</el-table-column>
</el-table>
</div>
<div class="text-center mt20">
<el-button type="primary" class="" plain round @click="submitForm(0)">{{ language==0?'保存暂不提交审核':'Save, Do Not Submit for Review Yet' }}</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm(1)">{{ language==0?'提交审核':'Submit for review' }}</el-button>
<el-button type="primary" class="" plain round @click="submitForm(0)">
{{ language == 0 ? '保存暂不提交审核' : 'Save, Do Not Submit for Review Yet' }}
</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="submitForm(1)">
{{ language == 0 ? '提交审核' : 'Submit for review' }}
</el-button>
</div>
</div>
</el-card>
</div>
<dialogAddCoach ref="dialogAddCoachRef" @submitForm="changeMeDone"/>
<!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>-->
<dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/>
</div>
</template>
......@@ -131,6 +187,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";
const language = ref(cache.local.get('language') || 0)
const data = reactive({
......@@ -165,11 +222,12 @@ const {
const matchId = ref(route.query.matchId)
let signInfoType = null
const form = ref({})
const showPersonList = ref(false)
const signEndTime = ref('')
const userId = ref('')
const myId = ref('')
onMounted(() => {
if(useUserStore().user){
if (useUserStore().user) {
userId.value = useUserStore().user.userId
}
signType.value = route.query.signType
......@@ -179,17 +237,20 @@ onMounted(() => {
getMySignInfo()
})
function getMyInfo(){
function getMyInfo() {
match.getMyPersonInfo().then(res => {
form.value = res.data
myId.value = res.data.id
getProjectList()
})
}
function changeMeDone(){
function changeMeDone() {
getMyInfo()
getProjectList()
}
let chargeFlag
function getMatch(id) {
......@@ -226,7 +287,6 @@ function getSignInfoList() {
}
function submitForm(n) {
if (signInfoType == '1') {
ElMessageBox.confirm('已报项,前往我的报项', '提示', {
......@@ -238,15 +298,15 @@ function submitForm(n) {
})
return
}
if(n==0){
if (n == 0) {
ElMessageBox.confirm(`您当前的操作为暂存,并不是提交审核,
必须在报名截止时间${signEndTime.value}之前完成提交。
您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`,
language.value==0?'提示':'Tip',{
confirmButtonText: language.value==0?'去个人中心':'Go My Eegistration ',
cancelButtonText: language.value==0?'知道了':'OK',
type: 'warning'
}).then((res)=>{
language.value == 0 ? '提示' : 'Tip', {
confirmButtonText: language.value == 0 ? '去个人中心' : 'Go My Eegistration ',
cancelButtonText: language.value == 0 ? '知道了' : 'OK',
type: 'warning'
}).then((res) => {
console.log(res)
router.push({name: 'myMatch'})
})
......@@ -260,24 +320,38 @@ function submitForm(n) {
}
for (const s of signInfoList.value) {
if (s.extraPersonInfo == null && needBuchong) {
ElMessage.error(language.value==0?'请完善运动员补充信息':'Complete Supplementary Information')
ElMessage.error(language.value == 0 ? '请完善运动员补充信息' : 'Complete Supplementary Information')
tableType.value = 0
return
}
}
commit()
if(showPersonList.value){
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(() => {
showPersonList.value = true
}).catch(() => {
commit()
})
}
}
}
}
function commit() {
match.commitSign({
groupId: 0,
cptId: matchId.value
}).then(res=>{
}).then(res => {
router.push({
name:`commitDone`,
name: `commitDone`,
params: {
orderId: res.data
}
......@@ -292,7 +366,7 @@ function getProjectList() {
var obj = {
cptId: matchId.value,
perIds: myId.value,
name:projectQuery.value.name
name: projectQuery.value.name
}
match.getProjectPageByPerIds(obj).then(res => {
projectList.value = res.rows
......@@ -337,7 +411,7 @@ function signUp() {
return
}
const obj = {
athleteIds:myId.value,
athleteIds: myId.value,
projectIds: projectIds.value.toString(),
groupId: groupId.value
}
......@@ -348,15 +422,15 @@ function signUp() {
}
function removeThis(id) {
ElMessageBox.confirm(language.value==0?'确定移除这条报项吗?':'Are you sure to remove this report item',
language.value==0?'提示':'Tips', {
confirmButtonText: language.value==0?'确定':'Confirm',
cancelButtonText: language.value==0?'取消':'Cancel',
type: 'warning'
}).then(() => {
ElMessageBox.confirm(language.value == 0 ? '确定移除这条报项吗?' : 'Are you sure to remove this report item',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
match.deleteSign(id).then(res => {
// 重新获取已报名信息
ElMessage.success(language.value==0?'已移除该报项':'success')
ElMessage.success(language.value == 0 ? '已移除该报项' : 'success')
getSignInfoList()
getProjectList()
})
......@@ -411,7 +485,7 @@ function downloadVoucher() {
function editPerson() {
proxy.$refs['dialogAddCoachRef'].open({
title: language.value==0?'编辑个人信息':'Edit My Information',
title: language.value == 0 ? '编辑个人信息' : 'Edit My Information',
isMe: true
})
}
......
......@@ -14,22 +14,15 @@
<h3 class="panel-title" v-else>Select list of participating athletes</h3>
<a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>
</div>
<div class="panel-body">
<div class="chooseForm">
<div class="panel-body" style="padding: 10px">
<div class="noPicChooseForm">
<el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
<div class="addBttn" @click="chooseSportman">+</div>
<el-checkbox v-for="c in choosedList" :label="c.id">
<el-avatar fit="cover" v-if="c.picUrl" :size="60" :src="fillImgUrl(c.picUrl)"/>
<el-avatar fit="cover" v-else-if="c.sex == 0" :size="60" src="@/assets/img/head1.png"/>
<el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="@/assets/img/head0.png"/>
<p class="name">{{ c.shortName }}({{ c.sexStr }})
<!-- <el-icon @click.stop="editPerson(c.id)">-->
<!-- <Edit/>-->
<!-- </el-icon>-->
<!-- <el-icon @click.stop="delthischoosed(c)">-->
<!-- <Delete/>-->
<!-- </el-icon>-->
<el-button plain @click="chooseSportman">+{{ language == 0 ?'选择':'add' }}</el-button>
<el-checkbox v-for="c in choosedList" :label="c.id" border>
<p class="name">{{ c.realName }}
<!-- ({{ c.sexStr }})-->
<img v-if="c.sex=='0'" src="@/assets/img/female.png"/>
<img v-if="c.sex=='1'" src="@/assets/img/male.png"/>
</p>
</el-checkbox>
</el-checkbox-group>
......@@ -42,6 +35,7 @@
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">选择一个参赛组合</h3>
<h3 class="panel-title" v-else>Select a Participating team</h3>
<a class="fr" @click="emptyChangechoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>
</div>
<div class="panel-body">
<div class="chooseForm">
......@@ -51,7 +45,10 @@
<el-avatar fit="cover" v-if="c.picUrl" :size="60" :src="fillImgUrl(c.picUrl)"/>
<el-avatar fit="cover" v-else-if="c.sex == 0" :size="60" src="@/assets/img/head1.png"/>
<el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="@/assets/img/head0.png"/>
<p class="name">{{ c.shortName }}({{ c.sexStr }})
<p class="name">{{ c.realName }}
<!-- ({{ c.sexStr }})-->
<img v-if="c.sex=='0'" src="@/assets/img/female.png"/>
<img v-if="c.sex=='1'" src="@/assets/img/male.png"/>
<!-- <el-icon @click.stop="editPerson(c.id)">-->
<!-- <Edit/>-->
<!-- </el-icon>-->
......@@ -68,11 +65,12 @@
<h3 class="panel-title" v-if="language==0">可参与报名的项目</h3>
<h3 class="panel-title" v-else>Eligible Events for Registration</h3>
<div class="fr">
<el-input size="small" v-model="projectQuery.name" :prefix-icon="Search" @change="getProjectList"
<el-input size="small" v-model="projectQuery.name" :prefix-icon="Search"
@change="getProjectList"
clearable/>
</div>
</div>
<div v-loading="loadingProject">
<div v-loading="loadingProject" style="height: 60vh">
<el-checkbox-group v-model="projectIds">
<el-checkbox class="flexBetweenBox" v-for="c in projectList" :label="c.id" :key="c.id">
<div class="flexBetween w100">
......@@ -80,7 +78,7 @@
{{ c.code }}:{{ c.name }}
<div>{{ c.danceTypeDetailStr }}</div>
</div>
<div class="text-primary">¥{{ c.serviceFee }}</div>
<div class="text-primary">{{ language==0?'¥':'£' }}{{ c.serviceFee }}</div>
</div>
</el-checkbox>
</el-checkbox-group>
......@@ -336,26 +334,6 @@ function afterRecover() {
}
return
}
// 判断是否收费
if (chargeFlag == '0') {
var obj = {
cptId: matchId.value,
groupId: groupId.value
}
match.commitSign(obj).then(res => {
console.log(res.data)
showResult.value = true
})
} else {
// 生成账单
router.push({
name: 'expenseDetails',
query: {
matchId: matchId.value,
groupId: groupId.value
}
})
}
}
function goPrev() {
......@@ -472,6 +450,10 @@ function delthischoosed(p) {
function emptyChoosed() {
choosedList.value = []
}
function emptyChangechoosed() {
choosedchoosed.value = []
choosed2List.value = []
}
function delchoosedchoosed() {
console.log(choosedchoosed.value)
......@@ -514,6 +496,7 @@ function signUp() {
groupId: groupId.value
}
match.sportsmanDone(obj).then(res => {
choosedchoosed.value = []
getSignInfoList()
getProjectList()
})
......@@ -756,4 +739,14 @@ function switchTabletype() {
}
}
}
.noPicChooseForm{
.el-checkbox-group{display: flex;flex-wrap: wrap;text-align: justify;
.el-button{width: 31%;margin:1%;}
.el-checkbox{margin: 1%;width: 31%;overflow: hidden;}
.name{justify-content: left;}
}
}
.name{display: flex;align-items: center;justify-content: center;
img{height: 20px;margin-left: 4px;}
}
</style>
......
......@@ -7,24 +7,12 @@
<el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline>
<el-row :gutter="30">
<el-col :lg="12" class="touxiang">
<el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" required>
<ImageUpload2
v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1"
:is-show-tip="false"
/>
</el-form-item>
<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?'短名':'nike name'" prop="shortName" required>
<el-input v-model="form.shortName" :placeholder="language==0?'赛事用名':''"/>
</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 :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%;">
......@@ -36,16 +24,42 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required>
<el-input v-model="form.phone" type="number"/>
<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="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin">
<el-input v-model="form.wdsfMin" type="number"/>
<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?'出生日期':'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?'主要会员角色':'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="language==0?l.label:l.enlabel"/>
</el-select>
</el-form-item>
<!-- <el-form-item :label="language==0?'短名':'nike name'" prop="shortName" required>-->
<!-- <el-input v-model="form.shortName" :placeholder="language==0?'赛事用名':''"/>-->
<!-- </el-form-item>-->
</el-col>
<el-col :lg="12">
<el-form-item :label="language==0?'手机号码':'Phone'" prop="phone" required>
<el-input v-model="form.phone" type="number"/>
</el-form-item>
<el-form-item :label="language==0?'所属国家':'Nationality'" prop="countryId" required>
<el-select filterable v-model="form.countryId" style="width: 100%;" @change="changeCountryId">
<el-select :disabled="language==0" 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>
......@@ -59,26 +73,21 @@
<el-input v-model="form.address" type="textarea" :rows="4"/>
</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?'性别':'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?'邮箱':'Email'" prop="email" required>
<el-input v-model="form.email"/>
</el-form-item>
<el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required>
<el-input v-model="form.idcCode" @blur="checkCode"/>
<el-form-item :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin">
<el-input v-model="form.wdsfMin" type="number"/>
</el-form-item>
<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="language==0?l.label:l.enlabel"/>
</el-select>
<el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'">
<ImageUpload2
v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1"
:is-show-tip="false"
/>
</el-form-item>
<!-- <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>-->
<!-- <el-input v-model="form.email"/>-->
<!-- </el-form-item>-->
</el-col>
</el-row>
</el-form>
......@@ -117,13 +126,13 @@ const {proxy} = getCurrentInstance()
const emit = defineEmits(['submitForm'])
const data = reactive({
form: {
countryId: 240
// countryId: 240
},
rules: {
xing: [{required: true, message: '必填', trigger: 'blur'}],
ming: [{required: true, message: '必填', trigger: 'blur'}],
shortName: [{required: true, message: '必填', trigger: 'blur'}],
email: [{required: true, message: '必填', trigger: 'blur'}],
// shortName: [{required: true, message: '必填', trigger: 'blur'}],
// email: [{required: true, message: '必填', trigger: 'blur'}],
countryId: [{required: true, message: '必填', trigger: 'change'}],
idcType: [{required: true, message: '必填', trigger: 'change'}],
idcCode: [{required: true, message: '必填', trigger: 'blur'}],
......@@ -131,15 +140,15 @@ const data = reactive({
// regionId: [{ required: true, message: '必填', trigger: 'change' }],
birth: [{required: true, message: '必填', trigger: 'change'}],
address: [{ required: true, message: '必填', trigger: 'blur' }],
picUrl: [{required: true, message: '必填', trigger: 'blur'}],
// picUrl: [{required: true, message: '必填', trigger: 'blur'}],
sex: [{required: true, message: '必填', trigger: 'change'}],
labelArr: [{required: true, message: '必填', trigger: 'change'}]
},
rules_cn:{
xing: [{required: true, message: 'required', trigger: 'blur'}],
ming: [{required: true, message: 'required', trigger: 'blur'}],
shortName: [{required: true, message: 'required', trigger: 'blur'}],
email: [{required: true, message: 'required', trigger: 'blur'}],
// shortName: [{required: true, message: 'required', trigger: 'blur'}],
// email: [{required: true, message: 'required', trigger: 'blur'}],
countryId: [{required: true, message: 'required', trigger: 'change'}],
idcType: [{required: true, message: 'required', trigger: 'change'}],
idcCode: [{required: true, message: 'required', trigger: 'blur'}],
......@@ -147,7 +156,7 @@ const data = reactive({
// regionId: [{ required: true, message: 'required', trigger: 'change' }],
birth: [{required: true, message: 'required', trigger: 'change'}],
address: [{ required: true, message: 'required', trigger: 'blur' }],
picUrl: [{required: true, message: 'required', trigger: 'blur'}],
// picUrl: [{required: true, message: 'required', trigger: 'blur'}],
sex: [{required: true, message: 'required', trigger: 'change'}],
labelArr: [{required: true, message: 'required', trigger: 'change'}]
},
......@@ -172,6 +181,7 @@ const {showRequire, form, rules,rules_cn, show, countryList, regionsList, title,
onMounted(() => {
getCountryList()
getRegionsList()
})
let editgay = false
const open = (params) => {
......@@ -180,6 +190,9 @@ const open = (params) => {
title.value = params.title
groupId.value = params.groupId || '0'
isMe.value = params.isMe
if(language.value == 0){
form.value.countryId = 240
}
if(isMe.value){
//个人
match.getMyPersonInfo().then(res => {
......
......@@ -13,15 +13,6 @@
<el-form-item :label="language==0?'姓名':'Name'">
<el-input v-model="query.realName" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item :label="language==0?'短名':'Nick Name'">
<el-input v-model="query.shortName" style="width: 120px;" clearable/>
</el-form-item>
<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="language==0?'邮箱':'E-mail'">
<el-input v-model="query.email" style="width: 120px;" clearable/>
</el-form-item>
<el-form-item :label="language==0?'证件类型':'ID Type'">
<el-input v-model="query.idcType" style="width: 120px;" clearable/>
</el-form-item>
......@@ -40,15 +31,12 @@
<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 :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?'短名':'Nick Name'" prop="shortName" min-width="110"/>
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
<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">-->
......@@ -68,7 +56,6 @@
<!-- </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 link type="primary" @click="editPerson(scope.row)">
......@@ -77,6 +64,13 @@
</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"
/>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" @click="submitForm">{{language==0?'确定':'Confirm'}}</el-button>
......@@ -104,16 +98,18 @@ const {proxy} = getCurrentInstance()
const emit = defineEmits(['submitForm', 'transfer'])
const data = reactive({
query: {
label:'0'
label:'0',
pageNum:1,
pageSize:10
},
tableData: [],
birthArr: [],
show: false,
loading: false,
title: '选择运动员',
noPhotoCanSign: 0
noPhotoCanSign: 0,
total: 0
})
const {query, tableData, show, title, birthArr, loading, noPhotoCanSign} = toRefs(data)
const {query, tableData, show, title, loading, noPhotoCanSign,total} = toRefs(data)
let matchId
let groupId
let choosedList = []
......@@ -142,12 +138,9 @@ const selectable = (row) => {
}
const getList = () => {
loading.value = true
if (birthArr.value) {
query.value.birthBegin = birthArr.value[0]
query.value.birthEnd = birthArr.value[1]
}
match.getGroupPersonList(query.value, groupId).then(res => {
tableData.value = res.rows
total.value = res.total
nextTick(() => {
for (const n in tableData.value) {
if (choosedIds.indexOf(tableData.value[n].id) > -1) {
......
......@@ -3,23 +3,23 @@
<el-row>
<el-col :lg="8">
<div class="item"><label>{{ language == 0 ? '教练' : 'Coach' }}</label>
<span v-for="c in names.coachList">{{ c.shortName }}</span>
<span v-for="c in names.coachList">{{ c.realName}}, </span>
<span v-if="!names.coachList">--</span>
</div>
<div class="item"><label>{{ language == 0 ? '翻译' : 'Translator' }}</label>
<span v-for="c in names.translatorList">{{ c.shortName }}</span>
<span v-for="c in names.translatorList">{{ c.realName }}</span>
<span v-if="!names.translatorList">--</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>
<span v-for="c in names.leaderList">{{ c.realName }}</span>
<span v-if="!names.leaderList">--</span>
</div>
<div class="item">
<label>{{ language == 0 ? '官员' : 'Official' }}</label>
<span class="mr5" v-for="c in names.officialList">{{ c.shortName }}</span>
<span class="mr5" v-for="c in names.officialList">{{ c.realName }}</span>
<span v-if="!names.officialList">--</span>
</div>
</el-col>
......@@ -27,7 +27,7 @@
<div class="item">
<label>{{ language == 0 ? '队医' : 'Team doctor' }}</label>
<span class="mr5" v-for="c in names.teamDoctorList">
{{ c.shortName }}
{{ c.realName }}
</span>
<span v-if="!names.teamDoctorList">--</span>
</div>
......
......@@ -9,15 +9,11 @@
</el-descriptions-item>
<el-descriptions-item :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?'短名':'short name'">{{ form.shortName }}</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 :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>
<el-descriptions-item :label="language==0?'手机号码':'Phone'">{{ form.phone }}</el-descriptions-item>
<el-descriptions-item :label="language==0?'邮箱':'Email'">{{ form.email }}</el-descriptions-item>
<el-descriptions-item :label="language==0?'详细地址':'Address'">{{ form.address }}</el-descriptions-item>
</el-descriptions>
<el-row v-if="participantsInfoArr&&participantsInfoArr.length>0" class="mt20">
......
......@@ -35,12 +35,12 @@ const language = ref(cache.local.get('language') || 0)
const props = defineProps({
groupId: {
type: Object,
required: true
required: false
}
})
const user = useUserStore().user
const groupInfo = useUserStore().group
if(props.groupId!=0){
if(props.groupId){
getGroupInfo()
}
function getGroupInfo() {
......
......@@ -55,7 +55,7 @@
<td>{{ p.danceTypeDetailStr }}</td>
<td>{{ p.playTypeStr }}</td>
<td>{{ p.birthPeriod }}</td>
<td>¥{{ p.serviceFee }}</td>
<td>{{ language==0?'¥':'£' }}{{ p.serviceFee }}</td>
</tr>
</table>
</div>
......@@ -122,7 +122,7 @@
<td>{{ p.danceTypeDetailStr }}</td>
<td>{{ p.playTypeStr }}</td>
<td>{{ p.birthPeriod }}</td>
<td>¥{{ p.serviceFee }}</td>
<td>{{ language==0?'¥':'£' }}{{ p.serviceFee }}</td>
</tr>
</table>
</div>
......
......@@ -2,18 +2,17 @@
<!-- 人员表格-->
<el-table :data="tableData" class="mt20">
<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?'短名':'Nick Name'" prop="shortName" min-width="110"/>
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
<!-- <el-table-column :label="language==0?'短名':'Nick 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?'年龄':'Age'" prop="age"/>-->
<!-- <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" :min-width="language==0?'80':'160'"/>
<el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/>
<el-table-column :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin" width="200"/>
<el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/>
<el-table-column :label="language==0?'会员角色':'Role'" width="150">
<template #default="scope">
<div class="esp">
......@@ -29,7 +28,8 @@
</div>
</template>
</el-table-column>
<el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>
<el-table-column :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin" width="200"/>
<!-- <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">
......
<template>
<el-table :data="list" border style="width: 100%" v-loading="loading">
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" min-width="100"/>
<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?'短名':'Nick Name'" prop="personInfo.shortName" min-width="110"/>
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" :min-width="language==0?'100':'120'"/>
<!-- <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"/>
<el-table-column :label="language==0?'出生日期':'Birth'" prop="personInfo.birth" width="110"/>
<el-table-column :label="language==0?'手机号码':'Phone Number'" prop="personInfo.phone" min-width="130"/>
<el-table-column :label="language==0?'邮箱':'E-mail'" prop="personInfo.email" width="150"/>
<el-table-column :label="language==0?'证件类型':'ID Type'" prop="personInfo.idcTypeStr"/>
<!-- <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/>-->
<!-- <el-table-column :label="language==0?'手机号码':'Phone Number'" prop="personInfo.phone" min-width="130"/>-->
<!-- <el-table-column :label="language==0?'邮箱':'E-mail'" prop="personInfo.email" width="150"/>-->
<el-table-column :label="language==0?'证件类型':'ID Type'" :width="language==0?'':'140'" prop="personInfo.idcTypeStr"/>
<el-table-column :label="language==0?'证件号码':'ID NO.'" prop="personInfo.idcCode" width="200"/>
<el-table-column :label="language==0?'出生日期':'Birth'" prop="personInfo.birth" width="110"/>
<el-table-column :label="language==0?'会员角色':'Role'" width="150">
<template #default="scope">
<div class="esp">
......@@ -26,8 +28,7 @@
</div>
</template>
</el-table-column>
<el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="personInfo.address" min-width="140"/>
<!-- <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="personInfo.address" min-width="140"/>-->
<el-table-column :label="language==0?'报项':'Entries'" min-width="300" :fixed="hasAction?false:'right'">
<template #default="props">
<ol>
......@@ -45,7 +46,7 @@
</el-table-column>
<el-table-column :fixed="hasAction?false:'right'" min-width="100" :label="language==0?'保险费':'Premium'" prop="insuranceFee">
<template #default="scope">
<span class="text-primary">¥{{ scope.row.insuranceFee }}</span>
<span class="text-primary">{{ language==0?'¥':'£' }}{{ scope.row.insuranceFee }}</span>
</template>
</el-table-column>
<!-- 补充信息-->
......@@ -69,6 +70,11 @@
</template>
</el-table-column>
</el-table>
<div v-if="showSummary" class="rowSummary">
<div>
{{ language==0?'金额小计':'Amount' }}: <span>{{ language==0?'¥':'£' }}{{ total }}</span>
</div>
</div>
</template>
......@@ -95,12 +101,23 @@ const props = defineProps({
type: Boolean,
required: false,
default: true
},
showSummary:{
type: Boolean,
required: false,
default: false
},
total:{
type: String,
required: false,
default: '0'
}
})
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const extraTableHead = ref([])
const loading = ref(true)
const sumText = ref('保险费')
getTableHead()
const goPersonInfo = (row) => {
emit('editExtra', row)
......@@ -111,8 +128,17 @@ function getTableHead() {
loading.value = false
})
}
function totalMethod() {
}
</script>
<style scoped>
<style scoped lang="scss">
.rowSummary{text-align: right;padding: 0 20px;
height: 40px;line-height: 40px;
background: #FAFBFD;font-size: 16px;
color: #95A1A6;
border: 1px solid #EEEFF0;
span{font-size: 18px;font-family: DIN Alternate;
color: #000;}
}
</style>
......
<template>
<div class="mt20"></div>
<el-table :data="list" border style="width: 100%">
<el-table-column :label="language==0?'序号':'Index'" type="index" width="70" align="center"/>
<el-table-column :label="language==0?'组别代码':'Group code'" width="120px" prop="zuName"/>
<el-table-column :label="language==0?'组别':'Group'" prop="project.name"/>
<el-table-column :label="language==0?'舞种':'Dance Style'" width="120px" prop="project.danceType"/>
......@@ -14,7 +16,7 @@
<el-table-column :label="language==0?'报名费':'Registration Fee'" width="120px" prop="">
<template #default="scope">
<div class="text-primary">
¥{{ scope.row.project.serviceFee }}
{{ language==0?'¥':'£' }}{{ scope.row.project.serviceFee }}
</div>
</template>
</el-table-column>
......@@ -27,7 +29,11 @@
</template>
</el-table-column>
</el-table>
<div v-if="showSummary" class="rowSummary">
<div>
{{ language==0?'金额小计':'Amount' }}: <span>{{ language==0?'¥':'£' }}{{ total }}</span>
</div>
</div>
</template>
<script setup>
......@@ -41,6 +47,16 @@ const props = defineProps({
type: Boolean,
required: false,
default: true
},
showSummary:{
type: Boolean,
required: false,
default: false
},
total:{
type: String,
required: false,
default: '0'
}
})
import cache from "@/plugins/cache";
......@@ -50,6 +66,12 @@ const remove = (id) => {
}
</script>
<style scoped>
<style scoped lang="scss">
.rowSummary{text-align: right;padding: 0 20px;
height: 40px;line-height: 40px;
background: #FAFBFD;font-size: 16px;
color: #95A1A6;
border: 1px solid #EEEFF0;
span{font-size: 18px;font-family: DIN Alternate;color: #000;}
}
</style>
......
<template>
<div class="app-container">
<div class="mt30" />
<div class="box mb20 ">
<div class="app-container" v-loading="loading">
<div class="mt30"/>
<div v-if="error">
<el-result
icon="error"
title="未找到赛事"
>
<template #extra>
</template>
</el-result>
</div>
<div class="box mb20 " v-else>
<el-card class="mb20">
<el-row :gutter="20">
<el-col :lg="7" :md="24" :xl="6" >
<img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)" >
<el-col :lg="7" :md="24" :xl="6">
<img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)">
</el-col>
<el-col :lg="9" :md="12" :xl="10">
<h3>
{{ matchData.name }}
</h3>
<p class="ppl"><label class="bm1">比赛时间:</label>{{matchData.beginTime?.slice(0,10)}}{{ matchData.endTime?.slice(0,10) }}</p>
<p class="ppl"><label class="bm1">比赛时间:</label>{{ matchData.beginTime?.slice(0, 10) }} 至
{{ matchData.endTime?.slice(0, 10) }}</p>
<p class="ppl"><label class="bm2">赛事级别:</label>{{ matchData.level }}</p>
<p class="ppl"><label class="bm3">&ensp;&ensp;&ensp;&ensp;点:</label>{{ matchData.address }}</p>
<p class="ppl"><label class="bm4">报名截止:</label>{{ matchData.signEndTime?.slice(0,10) }}</p>
<p class="ppl"><label class="bm4">报名截止:</label>{{ matchData.signEndTime?.slice(0, 10) }}</p>
</el-col>
<el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'">
<el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'">
<p class="countDownTitle"><span>报名截止倒计时</span></p>
<van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒">
<template #default="timeData">
......@@ -45,10 +55,12 @@
<el-card :body-style="{'padding':'0'}">
<div class="lineHead">
<ul>
<li v-for="l in menu" :key="l.name" @click="changeMenu(menu,l)" :class="l.active==1?'active':''">{{l.name}}</li>
<li v-for="l in menu" :key="l.name" @click="changeMenu(menu,l)" :class="l.active==1?'active':''">
{{ l.name }}
</li>
</ul>
</div>
<matchInfo :form="matchData" v-if="menu[0].active==1"/>
<matchInfo :form="matchData" v-if="menu[0].active==1"/>
<div v-if="menu[1].active==1">
<div class="collapsebox">
<div class="pd20">
......@@ -62,27 +74,28 @@
<th>参赛年龄</th>
<th>服务费(元)</th>
</tr>
<tr v-for="(p,index) in matchData.cptProjectList" :key="index">
<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>
<td>{{ language==0?'¥':'£' }}{{ p.serviceFee }}</td>
</tr>
</table>
</div>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0"
description=" "/>
</div>
</div>
<match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/>
<match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/>
<div v-if="menu[3].active==1">
<el-row :gutter="20" v-if="matchData.signType == '0'">
<el-col v-for="t in signDoneGroupList" :key="t.id" :span="8">
<div class="teamItem">
<el-avatar :size="60" :src="t.imgUrl||t.avatar" />
<el-avatar :size="60" :src="t.imgUrl||t.avatar"/>
<span class="name">{{ t.name }}</span>
</div>
</el-col>
......@@ -90,32 +103,35 @@
<el-row :gutter="20" v-else>
<el-col :span="24" v-for="(t,index) in signDoneGroupList" :key="t.id">
<div class="nowteamItem">
<span>{{index+1}}.</span>
<span>{{ index + 1 }}.</span>
<el-avatar :size="80" :src="t.imgUrl||t.avatar" :fit="cover"/>
<div class="info">
<h3 class="name">{{ t.name }}</h3>
<p v-if="t.extraInfo">
<span v-for="(ee,index) in JSON.parse(t.extraInfo)" :key="index" v-show="(ee?.type == '0'||ee?.type == '4')&&index<2">
{{ee.value}}&ensp;&ensp;
<span v-for="(ee,index) in JSON.parse(t.extraInfo)" :key="index"
v-show="(ee?.type == '0'||ee?.type == '4')&&index<2">
{{ ee.value }}&ensp;&ensp;
</span>
</p>
</div>
<p class="rr"><span>{{t.renCi}}</span> 人参赛</p>
<p class="rr"><span>{{ t.renCi }}</span> 人参赛</p>
</div>
</el-col>
</el-row>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" />
<el-empty :image="`/img/order_no.png`" :image-size="228"
v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description=""/>
</div>
<div v-if="menu[4].active==1">
<!-- 成绩-->
<!-- 成绩-->
<el-empty :image="`/img/order_no.png`" :image-size="228"/>
</div>
<div v-if="menu[5].active==1" class="pd20">
<div class="xzbox">
<div v-html="matchData.signKnow"></div>
<el-link v-if="matchData.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank">
<div v-html="matchData.signKnow"></div>
<el-link v-if="matchData.signKnowUrl" type="primary"
:href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank">
<el-icon :size="20">
<Download />
<Download/>
</el-icon>
{{ JSON.parse(matchData.signKnowUrl)[0]?.name }}
</el-link>
......@@ -135,17 +151,20 @@
<el-card :body-style="{'padding':'0'}">
<div class="lineHead">
<ul>
<li v-for="l in menu1" :key="l.name" @click="changeMenu(menu1,l)" :class="l.active==1?'active':''">{{l.name}}</li>
<li v-for="l in menu1" :key="l.name" @click="changeMenu(menu1,l)" :class="l.active==1?'active':''">
{{ l.name }}
</li>
</ul>
</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"/>
<matchInfo :form="matchData" v-if="menu1[1].active==1"/>
<match-schedule-list :match-data="matchData" v-if="menu1[2].active==1"/>
</el-card>
</el-col>
</el-row>
</div>
</div>
</template>
......@@ -155,40 +174,49 @@ 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'
import { useRoute, useRouter } from 'vue-router'
import {getCurrentInstance, ref} from 'vue'
import {reactive, onMounted} from '@vue/runtime-core'
import {useRoute, useRouter} from 'vue-router'
const route = useRoute()
const router = useRouter()
const { proxy } = getCurrentInstance()
const {proxy} = getCurrentInstance()
import * as match from '@/apiPc/match'
import { toRefs } from '@vueuse/shared'
import {dayjs, ElMessage} from 'element-plus'
import {toRefs} from '@vueuse/shared'
import {dayjs, ElMessage, ElMessageBox} from 'element-plus'
import useUserStore from "@/store/modules/user";
import QuickRow from "@/viewsPc/match/components/quick-row";
import {isRelogin} from "@/utils/request";
const data = reactive({
loading:false,
error:false,
matchData: {},
matchId: 0,
groupId: '',
activeName2:'first',
popupGroupList:false,
menu:[{name:'赛事详情',active:1},{name:'赛事设项',active:0},{name:'日程',active:0},{name:'参赛队',active:0},{name:'成绩',active:0},{name:'报名须知',active:0}],
menu1:[{name:'分站赛',active:1},{name:'赛事详情',active:0},{name:'日程',active:0}],
activeName2: 'first',
popupGroupList: false,
menu: [{name: '赛事详情', active: 1}, {name: '赛事设项', active: 0}, {name: '日程', active: 0}, {
name: '参赛队',
active: 0
}, {name: '成绩', active: 0}, {name: '报名须知', active: 0}],
menu1: [{name: '分站赛', active: 1}, {name: '赛事详情', active: 0}, {name: '日程', active: 0}],
signDoneGroupList: [],
time:''
time: ''
})
const {time,matchData,matchId,groupId,activeName2,popupGroupList,menu,menu1,signDoneGroupList} = toRefs(data)
const {loading,error,time, matchData, matchId, groupId, activeName2, popupGroupList, menu, menu1, signDoneGroupList} = toRefs(data)
import cache from "@/plugins/cache"
const language = ref(cache.local.get('language') || 0)
const group = useUserStore().group
const user = useUserStore().user
onMounted(() => {
if(group){
if (group) {
groupId.value = group.id
} else {
groupId.value = 0
}
match.getMaList().then((res) => {
if(route.params.id!=0){
if (route.params.id != 0) {
matchId.value = route.params.id
} else {
matchId.value = res.rows[0].id
......@@ -198,39 +226,49 @@ onMounted(() => {
})
})
function building() {
ElMessage.warning('暂未开发,敬请期待!')
}
function getMatch(id) {
if(id!=0)
match.getMatchById({ id: id }).then(res => {
matchData.value = res.data
var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond')
})
loading.value = true
match.getMatchById({id: id}).then(res => {
matchData.value = res.data
loading.value = false
var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond')
}).catch(res=>{
error.value = true
loading.value = false
})
}
function getGroupListByCptId(id) {
match.getGroupListByCptId(id).then(res => {
signDoneGroupList.value = res.data
})
}
function changeMenu(menu,l){
for(const n of menu){
if(n==l){
function changeMenu(menu, l) {
for (const n of menu) {
if (n == l) {
n.active = 1
} else {
n.active = 0
}
}
}
function choseSignType() {
if(!user){
ElMessage.warning('请登录')
console.log(matchData.value.signType,user)
if (!user) {
useUserStore().setReLogin(true)
return
}
console.log(matchData.value.signType)
checkIsSign().then(() => {
if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) {
if (matchData.value.signType == '0' || (matchData.value.signType == '2' && user.utype == '1')) {
// 个人报名
// router.push({
// path: `${matchId.value}/singleSign`
......@@ -245,7 +283,7 @@ function choseSignType() {
})
window.open(routeData.href, '_blank')
}
if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){
if (matchData.value.signType == '1' || (matchData.value.signType == '2' && user.utype == '2')) {
const routeData = router.resolve({
path: `${matchId.value}/teamSign`,
query: {
......@@ -267,7 +305,18 @@ function checkIsSign() {
}
return match.getMySignInfo(obj).then(res => {
if (res.data.type == '1') {
ElMessage.error('已报名,不能重复报名')
ElMessageBox.confirm(
'已报名,不能重复报名,是否前往个人中心查看',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {
router.push({name: 'myMatch'})
})
return Promise.reject('rejected message')
}
})
......@@ -275,22 +324,49 @@ function checkIsSign() {
</script>
<style scoped lang="scss">
.app-container{min-height: 80vh;}
.indexTitle {
margin: 20px 0 12px;
.indexTitle{margin: 20px 0 12px;
h3{
h3 {
font-size: 20px;
color:var(--el-color-primary);
color: var(--el-color-primary);
}
}
.ppl{color: #29343C;
label{color: #929AA0;}
.ppl {
color: #29343C;
label {
color: #929AA0;
}
}
.bm1 {
background: url("@/assets/dance/bm1.png") no-repeat left;
background-size: contain;
padding-left: 24px;
}
.bm2 {
background: url("@/assets/dance/bm2.png") no-repeat left;
background-size: contain;
padding-left: 24px;
}
.bm3 {
background: url("@/assets/dance/bm3.png") no-repeat left;
background-size: contain;
padding-left: 24px;
}
.bm4 {
background: url("@/assets/dance/bm4.png") no-repeat left;
background-size: contain;
padding-left: 24px;
}
.bm1{background: url("@/assets/dance/bm1.png") no-repeat left;background-size: contain;padding-left: 24px;}
.bm2{background: url("@/assets/dance/bm2.png") no-repeat left;background-size: contain;padding-left: 24px;}
.bm3{background: url("@/assets/dance/bm3.png") no-repeat left;background-size: contain;padding-left: 24px;}
.bm4{background: url("@/assets/dance/bm4.png") no-repeat left;background-size: contain;padding-left: 24px;}
.app-container {
padding: 0;
background: #F5F7F9;
......@@ -455,7 +531,11 @@ function checkIsSign() {
color: #000000;
margin: 0 0 10px;
font-size: 24px;
img{margin-right: 10px}
img {
margin-right: 10px
}
.typeTag {
border-radius: 13px 13px 13px 0;
margin-left: 10px;
......@@ -466,7 +546,11 @@ function checkIsSign() {
color: #7B7F83;
font-size: 16px;
}
.countDownTitle{font-size: 14px;}
.countDownTitle {
font-size: 14px;
}
.el-button.el-button--primary {
background: #CA171D;
border: none;
......@@ -477,7 +561,9 @@ function checkIsSign() {
.gg {
margin: 0 0 28px;
h3 {border-left: 2px solid #BA2E29; padding: 0 0 0 12px;
h3 {
border-left: 2px solid #BA2E29;
padding: 0 0 0 12px;
margin: 20px 0 8px;
font-weight: 500;
font-size: 16px;
......@@ -488,7 +574,10 @@ function checkIsSign() {
color: #000;
margin: 0 0 8px;
line-height: 24px;
label{color: #7D8790;}
label {
color: #7D8790;
}
}
.pp {
......@@ -611,8 +700,11 @@ function checkIsSign() {
margin: 0 0 20px;
button {
width: 90%;background: var(--el-color-primary);
font-size: 20px;margin: 30px auto 0;display: block;
width: 90%;
background: var(--el-color-primary);
font-size: 20px;
margin: 30px auto 0;
display: block;
height: 50px;
}
}
......@@ -638,24 +730,50 @@ function checkIsSign() {
height: 1px;
}
.table{width: 100%;border-left: 1px solid #e1e1e1;border-top:1px solid #e1e1e1;
th{background: #eee;padding: 6px 10px;
.table {
width: 100%;
border-left: 1px solid #e1e1e1;
border-top: 1px solid #e1e1e1;
th {
background: #eee;
padding: 6px 10px;
border-right: 1px solid #e1e1e1;
border-bottom:1px solid #e1e1e1;
border-bottom: 1px solid #e1e1e1;
font-size: 15px;
}
td{padding: 6px 10px;border-right: 1px solid #e1e1e1;font-size: 15px;
border-bottom:1px solid #e1e1e1;vertical-align: middle;text-align: center;
span{margin-right: 10px}
span::after{content: ','}
span:last-child::after{content: ''}
td {
padding: 6px 10px;
border-right: 1px solid #e1e1e1;
font-size: 15px;
border-bottom: 1px solid #e1e1e1;
vertical-align: middle;
text-align: center;
span {
margin-right: 10px
}
span::after {
content: ','
}
span:last-child::after {
content: ''
}
}
}
.flexLine{display: flex;
label{font-weight: normal}
.flexLine {
display: flex;
label {
font-weight: normal
}
}
.nowteamItem{
.nowteamItem {
height: 100px;
background: #FBFCFD;
border-radius: 10px;
......@@ -665,39 +783,89 @@ function checkIsSign() {
padding: 0 20px;
overflow: hidden;
text-overflow: ellipsis;
.el-avatar {margin: 0 20px}
.info{
h3{margin: 0 0 15px;}
p{margin: 0;color: #1ab394}
.el-avatar {
margin: 0 20px
}
.info {
h3 {
margin: 0 0 15px;
}
p {
margin: 0;
color: #1ab394
}
}
.rr{text-align: right; flex: 1;
span{color: #1ab394}
.rr {
text-align: right;
flex: 1;
span {
color: #1ab394
}
}
}
.collapsebox{
.el-collapse-item{margin-bottom: 15px;--el-collapse-content-bg-color:#F4F9FE;
.collapsebox {
.el-collapse-item {
margin-bottom: 15px;
--el-collapse-content-bg-color: #F4F9FE;
border: 2px solid #DDECFB;
.table{background: #fff;}
.table {
background: #fff;
}
}
.is-active {
--el-collapse-header-bg-color: #F4F9FE
}
:deep(.el-collapse-item__header) {
padding: 0 20px;
}
.is-active{--el-collapse-header-bg-color:#F4F9FE}
:deep(.el-collapse-item__header){padding: 0 20px;}
}
.funcBtns{display: flex; justify-content: space-around;
div{text-align: center;background: #F7FAFF;box-shadow:0 0 10px #d4cae4;
border-radius: 15px;padding: 0px 10px 5px;
img{}
h4{margin: 0;font-size: 16px;}
.funcBtns {
display: flex;
justify-content: space-around;
div {
text-align: center;
background: #F7FAFF;
box-shadow: 0 0 10px #d4cae4;
border-radius: 15px;
padding: 0px 10px 5px;
img {
}
h4 {
margin: 0;
font-size: 16px;
}
}
}
.table{white-space: nowrap}
.table {
white-space: nowrap
}
@media (max-width: 800px) {
.van-count-down{
.block{margin: 0 10px;}
.van-count-down {
.block {
margin: 0 10px;
}
}
.colon {
display: none;
}
.colon{display: none;}
.funcBtns{
div{padding: 0 0 10px;
.funcBtns {
div {
padding: 0 0 10px;
margin: 0 5px;
}
......
<template>
<div class="app-container" v-loading="loading">
<div class="mt30" />
<div class="box mb20 ">
<div class="mt30"/>
<div v-if="error">
<el-result
icon="error"
:title="'No Data'"
>
<template #extra>
</template>
</el-result>
</div>
<div class="box mb20" v-else>
<el-card class="mb20">
<el-row :gutter="20">
<el-col :lg="7" :md="12" :xl="6" >
<img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)" >
<el-col :lg="7" :md="12" :xl="6">
<img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)">
</el-col>
<el-col :lg="9" :md="12" :xl="10">
<el-col :lg="9" :md="12" :xl="10">
<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="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.signEndTime"><label class="bm4">Registration
Deadline:</label>{{ matchData.signEndTime?.slice(0, 10) }}</p>
</el-col>
<el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'">
<el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'">
<p class="countDownTitle"><span>Registration deadline countdown</span></p>
<van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒">
<template #default="timeData">
......@@ -33,7 +44,8 @@
<div class="flexCenter">
<el-button ref="RegisterRef" type="primary" round size="large" class="btn-lineG mb20 mt30 w100"
@click="choseSignType" style="font-size: 16px">Register</el-button>
@click="choseSignType" style="font-size: 16px">Register
</el-button>
</div>
</el-col>
</el-row>
......@@ -46,44 +58,47 @@
<el-card :body-style="{'padding':'0'}">
<div class="lineHead">
<ul>
<li v-for="l in menu" :key="l.name" @click="changeMenu(menu,l)" :class="l.active==1?'active':''">{{l.name}}</li>
<li v-for="l in menu" :key="l.name" @click="changeMenu(menu,l)" :class="l.active==1?'active':''">
{{ l.name }}
</li>
</ul>
</div>
<matchInfo :form="matchData" v-if="menu[0].active==1"/>
<matchInfo :form="matchData" v-if="menu[0].active==1"/>
<div v-if="menu[1].active==1">
<div class="collapsebox">
<div class="pd20">
<table class="table" cellspacing="0" cellpadding="0" v-if="matchData.cptProjectList?.length > 0">
<tr>
<th>Group code</th>
<th>Group</th>
<th>Dance Style</th>
<th>Dance Detail</th>
<th>Sex</th>
<th>Age</th>
<th>Registration Fee</th>
</tr>
<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-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0" description=" "/>
<table class="table" cellspacing="0" cellpadding="0" v-if="matchData.cptProjectList?.length > 0">
<tr>
<th>Group code</th>
<th>Group</th>
<th>Dance Style</th>
<th>Dance Detail</th>
<th>Sex</th>
<th>Age</th>
<th>Registration Fee</th>
</tr>
<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>{{ language==0?'¥':'£' }}{{ p.serviceFee }}</td>
</tr>
</table>
</div>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptProjectList?.length == 0"
description=" "/>
</div>
</div>
<match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/>
<match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/>
<div v-if="menu[3].active==1">
<el-row :gutter="20" v-if="matchData.signType == '0'">
<el-col v-for="t in signDoneGroupList" :key="t.id" :span="8">
<div class="teamItem">
<el-avatar :size="60" :src="fillImgUrl(t.imgUrl||t.avatar)" />
<el-avatar :size="60" :src="fillImgUrl(t.imgUrl||t.avatar)"/>
<span class="name">{{ t.name }}</span>
</div>
</el-col>
......@@ -91,32 +106,35 @@
<el-row :gutter="20" v-else>
<el-col :span="24" v-for="(t,index) in signDoneGroupList" :key="t.id">
<div class="nowteamItem">
<span>{{index+1}}.</span>
<span>{{ index + 1 }}.</span>
<el-avatar :size="80" :src="fillImgUrl(t.imgUrl||t.avatar)" :fit="cover"/>
<div class="info">
<h3 class="name">{{ t.name }}</h3>
<p v-if="t.extraInfo">
<span v-for="(ee,index) in JSON.parse(t.extraInfo)" :key="index" v-show="(ee?.type == '0'||ee?.type == '4')&&index<2">
{{ee.value}}&ensp;&ensp;
<span v-for="(ee,index) in JSON.parse(t.extraInfo)" :key="index"
v-show="(ee?.type == '0'||ee?.type == '4')&&index<2">
{{ ee.value }}&ensp;&ensp;
</span>
</p>
</div>
<p class="rr"><span>{{t.renCi}}</span> registrants</p>
<p class="rr"><span>{{ t.renCi }}</span> registrants</p>
</div>
</el-col>
</el-row>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description="" />
<el-empty :image="`/img/order_no.png`" :image-size="228"
v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description=""/>
</div>
<div v-if="menu[4].active==1">
<!-- 成绩-->
<el-empty :image="`/img/order_no.png`" :image-size="228" description="" />
<el-empty :image="`/img/order_no.png`" :image-size="228" description=""/>
</div>
<div v-if="menu[5].active==1" class="pd20">
<div class="xzbox">
<div v-html="matchData.signKnow"></div>
<el-link v-if="matchData.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank">
<el-link v-if="matchData.signKnowUrl" type="primary"
:href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank">
<el-icon :size="20">
<Download />
<Download/>
</el-icon>
{{ JSON.parse(matchData.signKnowUrl)[0]?.name }}
</el-link>
......@@ -136,19 +154,33 @@
<el-card :body-style="{'padding':'0'}">
<div class="lineHead">
<ul>
<li v-for="l in menu1" :key="l.name" @click="changeMenu(menu1,l)" :class="l.active==1?'active':''">{{l.name}}</li>
<li v-for="l in menu1" :key="l.name" @click="changeMenu(menu1,l)" :class="l.active==1?'active':''">
{{ l.name }}
</li>
</ul>
</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"/>
<matchInfo :form="matchData" v-if="menu1[1].active==1"/>
<match-schedule-list :match-data="matchData" v-if="menu1[2].active==1"/>
</el-card>
</el-col>
</el-row>
</div>
<div style="height: 50px"></div>
<el-dialog v-model="signTypePop" class="pcloginpop" close-icon="CircleClose"
center width="450px" title="Choose Type">
<div>
<div class="rItem r1" @click="goLogin">
<h3>{{language==0?'机构用户':'Organization'}}</h3>
</div>
<div class="rItem r2" @click="goGeren">
<h3>{{language==0?'个人用户':'Individual'}}</h3>
</div>
</div>
</el-dialog>
</div>
</template>
......@@ -158,41 +190,60 @@ 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'
import { useRoute, useRouter } from 'vue-router'
import {getCurrentInstance, ref} from 'vue'
import {reactive, onMounted} from '@vue/runtime-core'
import {useRoute, useRouter} from 'vue-router'
const route = useRoute()
const router = useRouter()
const { proxy } = getCurrentInstance()
const {proxy} = getCurrentInstance()
import * as match from '@/apiPc/match'
import { toRefs } from '@vueuse/shared'
import {dayjs, ElMessage} from 'element-plus'
import {toRefs} from '@vueuse/shared'
import {dayjs, ElMessage, ElMessageBox} from 'element-plus'
import useUserStore from "@/store/modules/user";
import QuickRow from "@/viewsPc/match/components/quick-row";
const user = useUserStore().user || {}
const group = useUserStore().group || {}
const user = useUserStore().user
const group = useUserStore().group
const data = reactive({
loading:false,
error: false,
loading: false,
matchData: {},
matchId: 0,
groupId: '',
activeName2:'first',
popupGroupList:false,
menu:[{name:'Event details',active:1},{name:'Event settings',active:0},{name:'Schedule',active:0},{name:'Participating teams',active:0},
{name:'Achievement',active:0},{name:'Notes',active:0}],
menu1:[{name:'Station race',active:1},{name:'Event details',active:0},{name:'Schedule',active:0}],
activeName2: 'first',
popupGroupList: false,
menu: [{name: 'Event details', active: 1}, {name: 'Event settings', active: 0}, {
name: 'Schedule',
active: 0
}, {name: 'Participating teams', active: 0},
{name: 'Achievement', active: 0}, {name: 'Notes', active: 0}],
menu1: [{name: 'Station race', active: 1}, {name: 'Event details', active: 0}, {name: 'Schedule', active: 0}],
signDoneGroupList: [],
time:''
time: ''
})
const {loading,matchData,matchId,groupId,activeName2,popupGroupList,menu,menu1,signDoneGroupList,time} = toRefs(data)
const {
error,
loading,
matchData,
matchId,
groupId,
activeName2,
popupGroupList,
menu,
menu1,
signDoneGroupList,
time
} = toRefs(data)
const signTypePop = false
onMounted(() => {
if(group){
if (group) {
groupId.value = group.id
} else {
groupId.value = 0
}
match.getMaList().then((res) => {
if(route.params.id!=0){
if (route.params.id != 0) {
matchId.value = route.params.id
} else {
matchId.value = res.rows[0].id
......@@ -204,56 +255,126 @@ onMounted(() => {
function getMatch() {
loading.value = true
match.getMatchById({ id: matchId.value }).then(res => {
matchData.value = res.data
loading.value = false
var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond')
})
match.getMatchById({id: matchId.value}).then(res => {
matchData.value = res.data
loading.value = false
var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond')
}).catch(res => {
error.value = true
loading.value = false
})
}
function getGroupListByCptId(id) {
match.getGroupListByCptId(id).then(res => {
signDoneGroupList.value = res.data
})
}
function changeMenu(menu,l){
for(const n of menu){
if(n==l){
function changeMenu(menu, l) {
for (const n of menu) {
if (n == l) {
n.active = 1
} else {
n.active = 0
}
}
}
function choseSignType() {
if(!user){
ElMessage.warning('Please login')
return
}
//判断signType,如果是2且utype是2,则跳转到团体报名
checkIsSign().then(() => {
if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) {
// 个人报名
router.push({
name: `chooseCoach`,
query: {
matchId: matchId.value,
signType: matchData.value.signType
}
})
console.log(matchData.value.signType, user)
if (!user) {
//判断signType,如1个人注册-报名;
switch (matchData.value.signType) {
case '0':
goGeren()
break
case '1':
goLogin()
break
case '2':
popChangeType()
break
}
if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){
router.push({
path: `${route.params.id}/teamSign`,
query: {
matchId: matchId.value,
groupId: groupId.value,
signType: matchData.value.signType
}
})
} else {
checkIsSign().then(() => {
switch (matchData.value.signType) {
case '0':
if (user.utype == '1') {
goPersonalSign()
} else {
ElMessageBox.confirm(
'The current event is a personal event, cannot register',
'Warning',
{
confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
type: 'warning',
}
)
}
break
case '1':
if (user.utype == '1') {
ElMessageBox.confirm(
'The current event is a team event, cannot register',
'Warning',
{
confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
type: 'warning',
}
)
} else {
goTeamSign()
}
break
case '2':
if (user.utype == '1') {
goPersonalSign()
} else {
goTeamSign()
}
break
}
})
}
}
function goTeamSign() {
router.push({
path: `${route.params.id}/teamSign`,
query: {
matchId: matchId.value,
groupId: groupId.value,
signType: matchData.value.signType
}
})
}
function goPersonalSign() {
// 选项目
router.push({
name: `chooseCoach`,
query: {
matchId: matchId.value,
signType: matchData.value.signType
}
})
}
function goLogin() {
useUserStore().setReLogin(true)
}
function goGeren() {
//注册
router.push({name: 'personalRegister', query: {matchId: matchId.value}})
}
function popChangeType() {
//选择登录类型
signTypePop.value = true
}
// 获取已报信息
function checkIsSign() {
var obj = {
......@@ -262,7 +383,17 @@ function checkIsSign() {
}
return match.getMySignInfo(obj).then(res => {
if (res.data.type == '1') {
ElMessage.error('Registered, cannot be duplicated')
ElMessageBox.confirm(
'Registered, cannot be duplicated. Do you want to go to the personal center to check',
'Warning',
{
confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
type: 'warning',
}
).then(() => {
router.push({name: 'myMatch'})
})
return Promise.reject('rejected message')
}
})
......@@ -270,37 +401,95 @@ function checkIsSign() {
</script>
<style scoped lang="scss">
.m0{margin: 0;}
.indexTitle{margin: 20px 0 12px;
h3{
.app-container {
min-height: 80vh;
}
.m0 {
margin: 0;
}
.indexTitle {
margin: 20px 0 12px;
h3 {
font-size: 20px;
color:var(--el-color-primary);
color: var(--el-color-primary);
}
}
.xzbox{border: 2px solid #DDECFB;padding: 20px;line-height: 2;
.xzbox {
border: 2px solid #DDECFB;
padding: 20px;
line-height: 2;
color: #29343C;
font-size: 16px;}
.dlbox{background: url("@/assets/dance/ds_bg.png") no-repeat left;background-size: 100% 100%;
padding: 0 0 20px;margin: 0 0 20px;height: 90%;
dl{min-height: 120px;margin: 0;
dt{
font-size: 16px;
}
.dlbox {
background: url("@/assets/dance/ds_bg.png") no-repeat left;
background-size: 100% 100%;
padding: 0 0 20px;
margin: 0 0 20px;
height: 90%;
dl {
min-height: 120px;
margin: 0;
dt {
height: 30px;
font-size: 16px;margin: 0 0 18px;
font-weight: 600;line-height: 30px;display: inline-block;padding:0 20px 0 14px;
font-size: 16px;
margin: 0 0 18px;
font-weight: 600;
line-height: 30px;
display: inline-block;
padding: 0 20px 0 14px;
background: linear-gradient(90deg, #8623FC, #453DEA);
border-radius: 0px 0px 15px 0px;color: #fff;}
border-radius: 0px 0px 15px 0px;
color: #fff;
}
}
dd {
font-size: 14px;
line-height: 1.6;
color: #29343C;
}
}
.ppl {
color: #29343C;
label {
color: #929AA0;
}
dd{
font-size: 14px;line-height: 1.6;
color: #29343C;}
}
.ppl{color: #29343C;
label{color: #929AA0;}
.bm1 {
background: url("@/assets/dance/bm1.png") no-repeat left;
background-size: contain;
padding-left: 24px;
}
.bm1{background: url("@/assets/dance/bm1.png") no-repeat left;background-size: contain;padding-left: 24px;}
.bm2{background: url("@/assets/dance/bm2.png") no-repeat left;background-size: contain;padding-left: 24px;}
.bm3{background: url("@/assets/dance/bm3.png") no-repeat left;background-size: contain;padding-left: 24px;}
.bm4{background: url("@/assets/dance/bm4.png") no-repeat left;background-size: contain;padding-left: 24px;}
.bm2 {
background: url("@/assets/dance/bm2.png") no-repeat left;
background-size: contain;
padding-left: 24px;
}
.bm3 {
background: url("@/assets/dance/bm3.png") no-repeat left;
background-size: contain;
padding-left: 24px;
}
.bm4 {
background: url("@/assets/dance/bm4.png") no-repeat left;
background-size: contain;
padding-left: 24px;
}
.app-container {
padding: 0;
background: #F5F7F9;
......@@ -465,7 +654,11 @@ function checkIsSign() {
color: #000000;
margin: 0 0 10px;
font-size: 24px;
img{margin-right: 10px}
img {
margin-right: 10px
}
.typeTag {
border-radius: 13px 13px 13px 0;
margin-left: 10px;
......@@ -476,7 +669,11 @@ function checkIsSign() {
color: #7B7F83;
font-size: 16px;
}
.countDownTitle{font-size: 14px;}
.countDownTitle {
font-size: 14px;
}
.el-button.el-button--primary {
background: #CA171D;
border: none;
......@@ -487,7 +684,9 @@ function checkIsSign() {
.gg {
margin: 0 0 28px;
h3 {border-left: 2px solid #BA2E29; padding: 0 0 0 12px;
h3 {
border-left: 2px solid #BA2E29;
padding: 0 0 0 12px;
margin: 20px 0 8px;
font-weight: 500;
font-size: 16px;
......@@ -498,7 +697,10 @@ function checkIsSign() {
color: #000;
margin: 0 0 8px;
line-height: 24px;
label{color: #7D8790;}
label {
color: #7D8790;
}
}
.pp {
......@@ -621,8 +823,11 @@ function checkIsSign() {
margin: 0 0 20px;
button {
width: 90%;background: var(--el-color-primary);
font-size: 20px;margin: 30px auto 0;display: block;
width: 90%;
background: var(--el-color-primary);
font-size: 20px;
margin: 30px auto 0;
display: block;
height: 50px;
}
}
......@@ -648,24 +853,50 @@ function checkIsSign() {
height: 1px;
}
.table{width: 100%;border-left: 1px solid #e1e1e1;border-top:1px solid #e1e1e1;
th{background: #eee;padding: 6px 10px;
.table {
width: 100%;
border-left: 1px solid #e1e1e1;
border-top: 1px solid #e1e1e1;
th {
background: #eee;
padding: 6px 10px;
border-right: 1px solid #e1e1e1;
border-bottom:1px solid #e1e1e1;
border-bottom: 1px solid #e1e1e1;
font-size: 15px;
}
td{padding: 6px 10px;border-right: 1px solid #e1e1e1;font-size: 15px;
border-bottom:1px solid #e1e1e1;vertical-align: middle;text-align: center;
span{margin-right: 10px}
span::after{content: ','}
span:last-child::after{content: ''}
td {
padding: 6px 10px;
border-right: 1px solid #e1e1e1;
font-size: 15px;
border-bottom: 1px solid #e1e1e1;
vertical-align: middle;
text-align: center;
span {
margin-right: 10px
}
span::after {
content: ','
}
span:last-child::after {
content: ''
}
}
}
.flexLine{display: flex;
label{font-weight: normal}
.flexLine {
display: flex;
label {
font-weight: normal
}
}
.nowteamItem{
.nowteamItem {
height: 100px;
background: #FBFCFD;
border-radius: 10px;
......@@ -675,41 +906,92 @@ function checkIsSign() {
padding: 0 20px;
overflow: hidden;
text-overflow: ellipsis;
.el-avatar {margin: 0 20px}
.info{
h3{margin: 0 0 15px;}
p{margin: 0;color: #1ab394}
.el-avatar {
margin: 0 20px
}
.info {
h3 {
margin: 0 0 15px;
}
p {
margin: 0;
color: #1ab394
}
}
.rr{text-align: right; flex: 1;
span{color: #1ab394}
.rr {
text-align: right;
flex: 1;
span {
color: #1ab394
}
}
}
.collapsebox{
.el-collapse-item{margin-bottom: 15px;--el-collapse-content-bg-color:#F4F9FE;
.collapsebox {
.el-collapse-item {
margin-bottom: 15px;
--el-collapse-content-bg-color: #F4F9FE;
border: 2px solid #DDECFB;
.table{background: #fff;}
.table {
background: #fff;
}
}
.is-active {
--el-collapse-header-bg-color: #F4F9FE
}
:deep(.el-collapse-item__header) {
padding: 0 20px;
}
.is-active{--el-collapse-header-bg-color:#F4F9FE}
:deep(.el-collapse-item__header){padding: 0 20px;}
}
.funcBtns{display: flex; justify-content: space-around;
div{text-align: center;background: #F7FAFF;box-shadow:0 0 10px #d4cae4;margin: 0 5px;
border-radius: 15px;padding:0 10px 15px;
img{margin: auto}
h4{margin: 0;font-size: 14px;}
.funcBtns {
display: flex;
justify-content: space-around;
div {
text-align: center;
background: #F7FAFF;
box-shadow: 0 0 10px #d4cae4;
margin: 0 5px;
border-radius: 15px;
padding: 0 10px 15px;
img {
margin: auto
}
h4 {
margin: 0;
font-size: 14px;
}
}
}
.table{white-space: nowrap}
.table {
white-space: nowrap
}
@media (max-width: 800px) {
.van-count-down{
.block{margin: 0 10px;}
.van-count-down {
.block {
margin: 0 10px;
}
}
.colon {
display: none;
}
.colon{display: none;}
.funcBtns{
div{padding: 0 0 10px;
margin: 0 5px;
.funcBtns {
div {
padding: 0 0 10px;
margin: 0 5px;
}
}
......
<template>
<div class="app-container">
<div class="box ph-30">
<div class="panel">
<div class="panel-header">
<h3 class="panel-title">费用明细</h3>
</div>
<div class="panel-body">
<el-row>
<el-col :span="24">
<el-collapse v-model="activeCollapse">
<!-- 报名费-->
<el-collapse-item v-if="form.cptRegistrationFee?.totalFee>0" name="1">
<template #title>
<div class="titlebar">
{{ form.cptRegistrationFee?.name }}
<div class="fr">
<span class="num">{{ form.cptRegistrationFee?.count }}</span>
合计:<span class="money">{{ form.cptRegistrationFee?.totalFee }}</span>
</div>
</div>
</template>
<div>
<el-table border :data="form.cptRegistrationFee?.info" style="width: 100%">
<el-table-column type="index" label="序号" width="50" />
<el-table-column label="姓名" prop="personInfo.realName" />
<el-table-column label="性别">
<template #default="scope">
<span v-if="scope.row.personInfo.sex=='0'"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="证件号码" prop="personInfo.idcType">
<template #default="scope">
<span v-if="scope.row.personInfo.idcType=='0'">身份证</span>
<span v-if="scope.row.personInfo.idcType=='1'">护照</span>
<span v-if="scope.row.personInfo.idcType=='2'">其他</span>
<div>{{ scope.row.personInfo.idcCode }}</div>
</template>
</el-table-column>
<el-table-column label="出生日期">
<template #default="scope">
{{ scope.row.personInfo.birth.substring(0,10) }}
</template>
</el-table-column>
<el-table-column label="费用">
<template #default="scope">
¥{{ scope.row.registrationFee }}
</template>
</el-table-column>
</el-table>
</div>
</el-collapse-item>
<el-collapse-item v-if="form.cptCompatibleFee?.totalFee>0" name="3">
<template #title>
<div class="titlebar">
{{ form.cptCompatibleFee?.name }}
<div class="fr">
<span class="num">{{ form.cptCompatibleFee?.count }}</span>
合计:<span class="money">{{ form.cptCompatibleFee?.totalFee }}</span>
</div>
</div>
</template>
<div>
<el-table border :data="form.cptCompatibleFee?.info" style="width: 100%">
<el-table-column type="index" label="序号" width="50" />
<el-table-column label="姓名" prop="personInfo.realName" />
<el-table-column label="性别">
<template #default="scope">
<span v-if="scope.row.personInfo.sex=='0'"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="证件类型">
<template #default="scope">
<span v-if="scope.row.personInfo.idcType=='0'">身份证</span>
<span v-if="scope.row.personInfo.idcType=='1'">护照</span>
<span v-if="scope.row.personInfo.idcType=='2'">其他</span>
<div>{{ scope.row.personInfo.idcCode }}</div>
</template>
</el-table-column>
<el-table-column label="费用" prop="compatibleFee" />
</el-table>
</div>
</el-collapse-item>
<el-collapse-item name="2">
<template #title>
<div class="titlebar">
{{ form.cptInsuranceFee?.name }}
<div class="fr">
合计:<span class="money">{{ cptInsuranceFee }}</span>
</div>
</div>
</template>
<div>
<el-checkbox-group v-model="buyInsurancePersonIds" @change="choseInsuranceFee">
<el-table border :data="form.cptInsuranceFee?.info" style="width: 100%">
<el-table-column type="index" label="序号" width="50" />
<el-table-column label="姓名" prop="personInfo.realName" />
<el-table-column label="性别">
<template #default="scope">
<span v-if="scope.row.personInfo.sex=='0'"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="证件类型">
<template #default="scope">
<span v-if="scope.row.personInfo.idcType=='0'">身份证</span>
<span v-if="scope.row.personInfo.idcType=='1'">护照</span>
<span v-if="scope.row.personInfo.idcType=='2'">其他</span>
<div>{{ scope.row.personInfo.idcCode }}</div>
</template>
</el-table-column>
<el-table-column label="出生日期">
<template #default="scope">
{{ scope.row.personInfo.birth.substring(0,10) }}
</template>
</el-table-column>
<el-table-column v-if="form.cptInsuranceFee?.must=='0'" label="购买保险" align="center">
<template #default="scope">
<span v-if="scope.row.lastBuyFlag=='1'">已购</span>
<el-checkbox v-else :label="scope.row.personId">
{{ scope.row.insuranceFee }}
</el-checkbox>
</template>
</el-table-column>
<!-- <el-table-column label="费用" prop="insuranceFee" />-->
</el-table>
</el-checkbox-group>
</div>
</el-collapse-item>
<el-collapse-item v-if="form.otherFee?.totalFee>0" name="4">
<template #title>
<div class="titlebar">
{{ form.otherFee?.name }}
<div class="fr">
<span class="num">{{ form.otherFee?.count }}</span>
合计:<span class="money">{{ othermm }}</span>
</div>
</div>
</template>
<div>
<el-checkbox-group v-model="hasOthersPersonIds" @change="choseOtherFee">
<el-table border :data="form.otherFee?.info" style="width: 100%">
<el-table-column type="index" label="序号" width="50" />
<el-table-column label="姓名" prop="personInfo.realName" />
<el-table-column label="性别">
<template #default="scope">
<span v-if="scope.row.personInfo.sex=='0'"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="证件类型">
<template #default="scope">
<span v-if="scope.row.personInfo.idcType=='0'">身份证</span>
<span v-if="scope.row.personInfo.idcType=='1'">护照</span>
<span v-if="scope.row.personInfo.idcType=='2'">其他</span>
<div>{{ scope.row.personInfo.idcCode }}</div>
</template>
</el-table-column>
<el-table-column label="是否自备">
<template #default="scope">
<span v-if="scope.row.allBringOwn=='0'">{{ scope.row.otherFee }}</span>
<el-checkbox v-else :label="scope.row.personId" checked>
{{ scope.row.otherFee }}
</el-checkbox>
</template>
</el-table-column>
</el-table>
</el-checkbox-group>
</div>
</el-collapse-item>
</el-collapse>
<el-divider />
<div>
<h3>支付方式</h3>
<el-radio-group v-model="form.payType">
<el-radio v-if="myBalance>'0'" label="0" size="large" border><img src="@/assets/img/zf02.png" style="width: 30px;">
会员卡支付<span>(余额 <i class="orange">¥{{ myBalance }}</i>)</span>
</el-radio>
<el-radio label="1" size="large" border><img src="@/assets/img/zf_wx.png">微信</el-radio>
<el-radio label="2" size="large" border><img src="@/assets/img/zf_xj.png">线下支付</el-radio>
</el-radio-group>
</div>
</el-col>
</el-row>
</div>
<div class="panel-footer text-center" style="justify-content: space-between;padding: 0 20px">
<p class="footFee">
<span v-if="form.cptRegistrationFee?.totalFee>0">{{ form.cptRegistrationFee?.name }}:{{ form.cptRegistrationFee.totalFee }}元</span>
<span v-if="form.cptCompatibleFee?.totalFee>0">{{ form.cptCompatibleFee?.name }}:{{ form.cptCompatibleFee.totalFee }}元</span>
<span>{{ form.cptInsuranceFee?.name }}:{{ cptInsuranceFee }}元</span>
<span v-if="form.otherFee?.totalFee>0">{{ form.otherFee?.name }}:{{ othermm }}元</span>
<span v-if="form.teamFee?.totalFee>0">{{ form.teamFee?.name }}:{{ form.teamFee?.totalFee }}元</span>
<span v-if="form.cptDepositFee?.totalFee>0">{{ form.cptDepositFee?.name }}:{{ form.cptDepositFee.totalFee }}元</span>
</p>
<p class="footTotal">
合计:<span>¥{{ finialFee }}</span>
</p>
<!-- <el-button type="success" plain round @click="goPrev()">上一步</el-button>-->
<el-button type="success" round @click="submitForm()">提交订单</el-button>
</div>
</div>
</div>
<el-dialog v-model="showResult" :close-on-click-modal="false">
<el-result icon="success" title="支付成功" />
<template #extra>
<el-button type="primary" @click="downloadVoucher">下载报名凭证</el-button>
<el-button type="primary" @click="goMyMatch">查看订单</el-button>
</template>
</el-dialog>
<el-dialog v-model="showOrganizerInfo" title=" 线下支付" width="400px">
<ul class="orgbox">
<li>单位:{{ org.organizerName }}</li>
<li>开户行:{{ org.organizerBank }}</li>
<li>账户:{{ org.organizerAccount }}</li>
<li>打款金额:<span class="orange">¥{{ org.organizerFee }}</span></li>
</ul>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" @click="downloadVoucher">下载报名凭证</el-button>
<el-button type="primary" @click="goMyMatch">查看订单</el-button>
</div>
</template>
</el-dialog>
<we-pay ref="wePayRef" @close="goMyMatch" />
</div>
</template>
<script setup>
import { reactive, toRefs } from 'vue'
import { getCurrentInstance, onMounted } from '@vue/runtime-core'
const { proxy } = getCurrentInstance()
const router = useRouter()
const route = useRoute()
import * as match from '@/apiPc/match'
import { useRoute, useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
const data = reactive({
form: {},
activeCollapse: ['1', '2', '3', '4'],
myBalance: '',
finialFee: '',
cptInsuranceFee: '',
othermm: '',
buyInsurancePersonIds: [],
hasOthersPersonIds: [],
org: {},
showOrganizerInfo: false,
showResult: false
})
const { form, activeCollapse, myBalance, finialFee, org, showOrganizerInfo, showResult, cptInsuranceFee, othermm, buyInsurancePersonIds, hasOthersPersonIds } = toRefs(data)
let entryId
let groupId = ''
let cptId
let baseTotal
let bxdanjia
let otherdanjia
onMounted(() => {
cptId = route.params.id
if (route.query.personId) {
entryId = route.query.personId
}
if (route.query.groupId) {
groupId = route.query.groupId
entryId = route.query.groupId
}
getTotalFee()
// getMemberInfoByCptId()
})
function getTotalFee() {
match.getTotalFee({
entryId: groupId,
cptId: cptId
}).then(res => {
form.value = res.data
finialFee.value = form.value.totalFee
baseTotal = parseFloat(form.value.totalFee) - parseFloat(form.value.otherFee?.totalFee || 0)
cptInsuranceFee.value = form.value.cptInsuranceFee.totalFee
othermm.value = form.value.otherFee.totalFee
bxdanjia = form.value.cptInsuranceFee.info[0]?.insuranceFee
if (form.value.otherFee.info.length > 0) {
otherdanjia = form.value.otherFee.info[0]?.otherFee
for (const ren of form.value.otherFee.info) {
hasOthersPersonIds.value.push(ren.personId)
}
}
})
}
// function getMemberInfoByCptId() {
// match.getMemberInfoByCptId(cptId).then((res) => {
// myBalance.value = res.data.balance
// })
// }
function getTotal() {
finialFee.value = parseFloat(baseTotal) + parseFloat(cptInsuranceFee.value) + parseFloat(othermm.value)
}
// 保险费
function choseInsuranceFee(e) {
console.log(e, buyInsurancePersonIds.value)
cptInsuranceFee.value = e.length * bxdanjia
getTotal()
// finialFee.value = parseFloat(cptInsuranceFee.value) + parseFloat(form.value.totalFee)
}
// 其他费用
function choseOtherFee(e) {
console.log(e, hasOthersPersonIds.value)
othermm.value = e.length * otherdanjia
getTotal()
}
function submitForm() {
// 提交订单
var obj = {
insruanceFee: cptInsuranceFee.value,
buyInsurancePersonIds: buyInsurancePersonIds.value.toString() || '',
otherFee: othermm.value,
bringPersonIds: hasOthersPersonIds.value.toString() || '',
cptId: cptId,
groupId: groupId
}
console.log(obj)
creatBill(obj)
}
let orderId
function creatBill(obj) {
if (!form.value.payType) {
ElMessage.error('请选择支付方式')
return
}
match.commitSign(obj).then(res => {
orderId = res.data
match.payMatch({ orderId: orderId, payType: form.value.payType }).then(res => {
console.log(res.data)
if (form.value.payType == 2) {
org.value = res.data.org
showOrganizerInfo.value = true
} else if (form.value.payType == 1) {
// 微信
proxy.$refs['wePayRef'].open(res.data)
} else {
showResult.value = true
}
})
})
}
function goMyMatch() {
router.push({
name: 'myMatch'
})
}
function downloadVoucher() {
// 下载报名凭证
proxy.download(
`/pdf/getPayedOrderPdf/${cptId}/${groupId || 0}`, {}, '报项凭证.pdf'
)
}
</script>
<style scoped lang="scss">
.footFee{
color: #95A1A6;
font-size: 16px;
span{margin: 0 20px}
}
.footTotal{
color: #000000;
font-size: 16px;
span{
color: #EB6100;
font-size: 22px;}
}
.app-container{ padding: 0;background: #F5F7F9;}
.panel-footer .el-button--success{background: #254385;border: none;
padding: 0 40px;
font-size: 16px;
}
.panel-footer .el-button--success.is-plain{background: #fff;border:1px solid #2ED981;color: #2ED981;}
.el-collapse{--el-collapse-border-color:transparent}
.el-collapse-item{ margin: 0 0 30px;padding: 0 20px;
border-radius: 10px;
background: #FBFCFD;
--el-collapse-border-color:transparent;
--el-collapse-header-bg-color:transparent;
--el-collapse-content-bg-color:transparent;
}
.titlebar{width: 100%;
font-size: 18px;
.fr{
.num{color: #7B7F83;margin-right: 20px ;}
.money{color: #FF8124;margin:0 6px;}
}
}
:deep(.el-radio.el-radio--large .el-radio__label){display: flex; align-items: center;
img{margin-right: 6px;}
}
:deep(.el-radio.is-bordered.el-radio--large .el-radio__inner){
width: 25px;height: 25px;
}
:deep(.el-radio__inner::after){
width: 7px;height: 7px;
}
.fixCollapseItem{padding: 20px;font-weight: 500;}
.orange{font-size: 16px;font-style: normal;font-weight: bold}
</style>
......@@ -12,16 +12,25 @@
<div class="pd20" v-if="signInfoList?.length>0">
<div class="leftboderTT">{{ language == 0 ? '参赛人员保险费' : 'Participant Insurance Fee' }}</div>
<!-- 人员列表-->
<sign-info-table class="mt20" v-if="matchId" :match-id="matchId" :list="signInfoList" :hasAction="false"/>
<sign-info-table class="mt20" v-if="matchId" :show-summary="true" :total="insuranceFeeTotal" :match-id="matchId" :list="signInfoList" :hasAction="false"/>
</div>
<div class="pd20" v-if="zuTableList?.length>0">
<div class="leftboderTT">{{ language == 0 ? '参赛设项报名费' : 'Registration Fee for Event Entry' }}</div>
<zu-table class="mt20" :list="zuTableList" :hasAction="false"/>
<zu-table class="mt20" :list="zuTableList" :show-summary="true" :total="serviceFeeTotal" :hasAction="false"/>
</div>
<el-row class="priceBar">
<el-col :lg="24" :xs="24">
<div class="flex">
<div class="item" v-if="signInfoList?.length>0"><label>{{ language==0?'报名费':'Registration Fee' }}</label><span>{{ language==0?'¥':'£' }}{{serviceFeeTotal}}</span></div>
<div class="item" v-if="zuTableList?.length>0"><label>{{ language==0?'保险费':'Insurance Fee' }}</label><span>{{ language==0?'¥':'£' }}{{insuranceFeeTotal}}</span></div>
<div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}</label><span class="size26">{{ language==0?'¥':'£' }}{{form.totalFee}}</span></div>
</div>
</el-col>
</el-row>
</div>
<div v-else class="pd20 skeletonBox">
<el-skeleton :rows="8"/>
<el-button type="primary" class="w200px btn-lineG" round @click="showLogin">
<el-button type="primary" class="btn-lineG" size="large" :style="language == 0 ?'width:200px':'width:400px'" round @click="showLogin">
{{ language == 0 ?'登录后查看详细报项信息':'View detailed report information after logging in' }}
</el-button>
</div>
......@@ -41,11 +50,12 @@
<div class="text-danger flex" v-if="form.auditStatus=='3'">
<img src="@/assets/img/w.png">
{{ language==0?'报名信息审核拒绝':'Registration Information rejected' }}
<div>{{ language==0?'驳回理由:':'Reason:'}}</div>
</div>
</el-col>
<el-col :lg="12">
<div class="priceb" v-if="form.payStatus=='0'">{{ language==0?'待支付金额':'Amount Due' }}<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-if="form.payStatus=='1'">{{ language==0?'已支付金额':'Amount Due' }}<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-if="form.payStatus=='0'">{{ language==0?'待支付金额':'Amount Due' }}<span class="price">{{ language==0?'¥':'£' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-if="form.payStatus=='1'">{{ language==0?'已支付金额':'Amount Due' }}<span class="price">{{ language==0?'¥':'£' }}{{ Number(totalFee).toFixed(2) }}</span></div>
</el-col>
</el-row>
</el-card>
......@@ -147,7 +157,7 @@
<tr>
<th>{{ language==0?'付款金额':'Payment Amount' }}</th>
<td>
¥{{ totalFee }}
{{ language==0?'¥':'£' }}{{ totalFee }}
<div class="text-gray">{{ language==0?'请按照指定金额进行打款':'Please make the payment according to the specified amount' }}</div>
</td>
</tr>
......@@ -211,7 +221,7 @@
<div class="text-center">
<el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon>
<p class="text-success">{{ language==0?'支付成功':'successful!' }}</p>
<h3 class="wePrice">¥{{form.totalFee}}</h3>
<h3 class="wePrice">{{ language==0?'¥':'£' }}{{form.totalFee}}</h3>
</div>
</el-card>
<el-card class="mb60" v-if="form.payStatus == '1' && form.curPayType=='2'">
......@@ -219,7 +229,7 @@
<div class="text-center">
<el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon>
<p class="text-success">{{ language==0?'支付成功':'successful!' }}</p>
<h3 class="wePrice">¥{{form.totalFee}}</h3>
<h3 class="wePrice">{{ language==0?'¥':'£' }}{{form.totalFee}}</h3>
<span v-if="language==0" class="text-danger size12">*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span>
<span v-else class="text-danger size12">*You can confirm with the contact person by phone after uploading the remittance form. The specific payment results can be viewed in the My Registration section of the personal center to check the progress</span>
......@@ -279,6 +289,8 @@ const upForm = ref({
})
const errorBox = ref(false)
const hideconfirmbtn = ref(false)
const insuranceFeeTotal = ref(0)
const serviceFeeTotal = ref(0)
console.log(route.query.orderId)
// 1763462073870237698
getData()
......@@ -310,8 +322,17 @@ function getSignList() {
cptId: matchId.value,
groupId: groupId.value
}).then(res => {
insuranceFeeTotal.value = 0
serviceFeeTotal.value = 0
signInfoList.value = res.data.singleData
zuTableList.value = res.data.zuData
for(var s of signInfoList.value){
insuranceFeeTotal.value = insuranceFeeTotal.value + Number(s.insuranceFee)
}
for(var z of zuTableList.value){
serviceFeeTotal.value = serviceFeeTotal.value + Number(z.project.serviceFee)
}
})
}
function goHome() {
......@@ -456,4 +477,13 @@ function showLogin(){
}
}
.payImgbox{text-align: center;border: 1px solid #fff;padding: 20px;}
.priceBar{padding: 0 0 20px;
.flex{display: flex;justify-content: right;align-items: baseline;
.item{font-size: 16px;margin-right: 15px;
label{color: #95A1A6;}
span{font-family: DIN Alternate;}
}
}
.size26{font-size: 26px;}
}
</style>
......
......@@ -11,12 +11,22 @@
<div style="margin: 20px">
<div class="mt20">
<div class="leftboderTT">{{ language==0?'参赛人员清单':'Participant List' }}</div>
<sign-info-table class="mt20" :match-id="matchId" :list="signInfoList" :hasAction="false"/>
<div class="leftboderTT">{{ language==0?'参赛人员清单':'Participant List' }}
<div class="fr">
<el-input size="small" v-model="zuQuery.name" :prefix-icon="Search"
@change="getSignList" clearable/>
</div>
</div>
<sign-info-table class="mt20" :showSummary="true" :total="form.cptInsuranceFee?.totalFee" :match-id="matchId" :list="signInfoList" :hasAction="false"/>
</div>
<div class="mt20">
<div class="leftboderTT">{{ language==0?'设项报名清单':'Event Registration List' }}</div>
<zu-table class="mt20" :list="zuTableList" :hasAction="false"/>
<div class="leftboderTT">{{ language==0?'设项报名清单':'Event Registration List' }}
<div class="fr">
<el-input size="small" v-model="zuQuery.groupName" :prefix-icon="Search"
@change="getSignList" clearable/>
</div>
</div>
<zu-table class="mt20" :showSummary="true" :total="form.cptRegistrationFee?.totalFee" :list="zuTableList" :hasAction="false"/>
</div>
</div>
......@@ -26,9 +36,9 @@
<el-row class="priceBar">
<el-col :lg="16" :xs="24" class="pd20">
<div class="flex">
<div class="item"><label>{{ language==0?'报名费':'Registration Fee' }}</label><span>¥{{form.cptRegistrationFee?.totalFee}}</span></div>
<div class="item"><label>{{ language==0?'保险费':'Insurance Fee' }}</label><span>¥{{form.cptInsuranceFee?.totalFee}}</span></div>
<div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}</label><span>¥{{form.totalFee}}</span></div>
<div class="item"><label>{{ language==0?'报名费':'Registration Fee' }}</label><span>{{ language==0?'¥':'£' }}{{form.cptRegistrationFee?.totalFee}}</span></div>
<div class="item"><label>{{ language==0?'保险费':'Insurance Fee' }}</label><span>{{ language==0?'¥':'£' }}{{form.cptInsuranceFee?.totalFee}}</span></div>
<div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}</label><span>{{ language==0?'¥':'£' }}{{form.totalFee}}</span></div>
</div>
</el-col>
<el-col :lg="8" :xs="24" class="text-right pd20">
......@@ -49,6 +59,7 @@
</template>
<script setup>
import {Search} from "@element-plus/icons-vue";
import TeamSignStep from './components/teamSignStep'
import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"
import GroupInfoRow from "@/viewsPc/match/components/groupInfo-row"
......@@ -68,32 +79,32 @@ const router = useRouter()
const activeStep = ref(3)
const groupInfo = useUserStore().group || {}
const language = ref(cache.local.get('language') || 0)
const groupId = ref()
const groupId = ref(route.query.groupId || 0)
const form = ref({})
const matchId = ref(route.query.matchId)
const signInfoList = ref([])
const zuTableList = ref([])
const {proxy} = getCurrentInstance()
const zuQuery = ref({
cptId: matchId.value,
groupId: groupId.value,
name:'',
groupName:''
})
onMounted(()=>{
// console.log(route.query)
matchId.value = route.query.matchId
groupId.value = route.query.groupId || 0
getSignList()
getFee(groupId.value)
})
function getSignList() {
match.getMySignInfoList({
cptId: matchId.value,
groupId: groupId.value
}).then(res=>{
match.getMySignInfoList(zuQuery.value).then(res=>{
signInfoList.value = res.data.singleData
zuTableList.value = res.data.zuData
})
}
const goPrev = () => {
// router.go(-1)
router.push({
name: 'chooseSportsman',
query: {
......@@ -181,6 +192,7 @@ function exportSignList(n) {
.flex{display: flex;
.item{font-size: 16px;margin-right: 15px;
label{color: #95A1A6;}
span{font-family: DIN Alternate;}
}
}
}
......
......@@ -23,6 +23,9 @@
</el-form-item>
</el-col>
<el-col :lg="10">
<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-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" />
</el-form-item>
......@@ -32,9 +35,6 @@
<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="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="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" />
......@@ -44,10 +44,12 @@
<el-option :label="language==0?'国家协会':'National Association'" value="4" />
</el-select>
</el-form-item>
<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 :label="language==0?'详细地址':'Detailed Address'" required prop="address">
<el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="participantsInfoArr&&participantsInfoArr.length>0">
......
<template>
<el-card>
<el-steps :active="activeStep" finish-status="success" align-center>
<el-step :title="language==0?'创建账号':'Check WDSF ID'"/>
<el-step :title="language==0?'选手报名':'Participant Registration'" />
<el-step :title="language==0?'提交审核':'Submit for review'" />
<!-- <el-step :title="language==0?'注册完成':'stered successfully'" />-->
</el-steps>
</el-card>
</template>
<script setup>
import {ref} from "vue";
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const props = defineProps({
activeStep: {
type: Number,
required: true
}
})
</script>
<style scoped>
</style>
......@@ -2,21 +2,14 @@
<div>
<div class="mt30 mb60">
<div class="box">
<!-- 国内-机构注册-->
<el-card>
<el-steps :active="activeStep" finish-status="success" align-center>
<el-step :title="language==0?'创建账号':'create an account'"/>
<el-step :title="language==0?'注册完成':'stered successfully'" />
</el-steps>
</el-card>
<personal-step :active-step="activeStep"/>
<div class="mt20"></div>
<div v-if="activeStep==0">
<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: 500px;margin: auto">
<el-form-item :label="language==0?'WDSF卡号':'WDSF'" required>
style="max-width: 560px;margin: auto">
<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">
......@@ -25,10 +18,73 @@
</el-button>
</template>
</el-input>
</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?'姓氏':'surname'" prop="xing" required>
<el-input v-model="form.xing" disabled/>
</el-form-item>
<el-form-item :label="language==0?'名':'name'" prop="ming" required>
<el-input v-model="form.ming" disabled/>
</el-form-item>
<el-form-item label="Representing" required>
<el-input v-model="form.Representing" disabled/>
</el-form-item>
<el-form-item label="Age group" required>
<el-input v-model="form.ageGroup" disabled/>
</el-form-item>
<el-form-item label="Division" required>
<el-input v-model="form.division" disabled/>
</el-form-item>
<el-form-item label="Status" required>
<el-input v-model="form.status" 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'" 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-radio-group>
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Birthday'" 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="Passport number" required prop="idcCode">
<el-input v-model="form.idcCode"/>
</el-form-item>
<el-form-item :label="language==0?'手机/邮箱':'E-mail / Phone number'" required>
<el-input type="text" v-model="form.account" @change="resetCode(1)" @blur="verifyCode"/>
<el-form-item label="Passport File">
<file-upload :is-show-tip="false" :button-text="'Upload'"/>
</el-form-item>
<div class="h30"></div>
<div class="leftboderTT">{{ language == 0 ? '登录密码' : 'Login Information' }} <span
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.
</div>
</el-form-item>
<el-form-item :label="language==0?'验证码':'Code'" required>
<el-input v-model="form.code">
......@@ -42,31 +98,29 @@
</template>
</el-input>
</el-form-item>
<div class="h30"></div>
<div class="leftboderTT">{{ language == 0 ? '登录密码' : 'Password' }} <span
v-if="language==0">(登录时需要验证,保护账户信息)</span></div>
<div class="h20"></div>
<el-form-item :label="language==0?'密码':'Password'" required>
<el-input type="password" show-password v-model="form.password"
:placeholder="language==0?'6-16位密码。区分大小写':''"/>
:placeholder="language==0?'6-16位密码。区分大小写':'Password'"/>
</el-form-item>
<el-form-item :label="language==0?'确认密码':'Confirm Password'" required>
<el-input type="password" show-password v-model="form.confirmPassword" @blur="vconfirmPassword"
<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>
</el-form-item>
</el-form>
</div>
<div class="text-center">
<!-- <el-button class="primary-kx" round @click="goBack">取消</el-button>-->
<el-button type="primary" class="btn-lineG w200px" round @click="next">
<el-button 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>
</div>
</el-card>
</div>
<div v-if="activeStep==1">
<Step3 :accont="form.account"/>
</div>
<Vcode :show="isShow" @success="codeSuccess()"></Vcode>
</div>
......@@ -84,26 +138,35 @@ import CountDown from '@chenfengyuan/vue-countdown'
import cache from '@/plugins/cache'
import {checkWdsf, getCaptchaSms, 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";
const language = ref(cache.local.get('language') || 0)
const router = useRouter()
const route = useRoute()
const data = reactive({
isShow:false,
isCodeTrue:0,
counting:false,
checkStatus:false,
form:{},
form:{
sex:'0'
},
activeStep: 0,
failVcode:'验证失败,请重试',
successVcode:'验证通过!',
sliderText: '拖动滑块完成拼图',
showError: false
})
const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText,checkStatus} = toRefs(data)
const {isShow,isCodeTrue,counting,form,activeStep,failVcode,successVcode,sliderText,checkStatus,showError} = toRefs(data)
const matchId = ref('0')
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
})
function sendsmsMsg() {
if(!form.value.account){
......@@ -160,15 +223,43 @@ function codeSuccess(msg) {
function resetCode(n) {
isCodeTrue.value = n
}
function vconfirmPassword() {
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)
activeStep.value = 1
})
// 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
}
})
} 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;}
.leftboderTT {
color: var(--el-color-primary);
font-size: 16px;
......@@ -181,4 +272,12 @@ span {
}
.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{
color: var(--el-color-primary);
background: #efefff;
border: var(--el-color-primary) solid 1px;
border-radius: 0;
}
</style>
......
......@@ -2,8 +2,9 @@
<el-card style="min-height: 50vh">
<div class="pt30">
<el-form class="d-form" size="large" :label-width="language==0?120:200" style="max-width: 500px;margin: auto">
<el-form-item :label="language==0?'手机/邮箱':'E-mail / Phone number'" required>
<el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"/>
<el-form-item :label="language==0?'邮箱':'E-mail'" required>
<el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode"
/>
</el-form-item>
<el-form-item :label="language==0?'验证码':'Code'" required>
<el-input v-model="form.code">
......
......@@ -42,6 +42,15 @@
<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?'团体类型':'Group type'" prop="type" required>
<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="language==0?'联系人姓名':'Contact Name'" required prop="contactName">
<el-input type="text" v-model="form.contactName" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!