b73dad45 by 杨炀

no message

1 parent 815a2ac2
......@@ -10,7 +10,7 @@ export function getMaList(params) {
export function getMatchById(params) {
return request({
url: `/league/competition/detail`,
url: `/league/competition/PCDetail`,
method: 'get',
params: params
})
......@@ -287,6 +287,14 @@ export function getGroupPersonList(query,groupId) {
params: query
})
}
export function getPerPersonList(query,userId) {
return request({
url: `/systemj/personInfo/getPersonInfoListByPersonIdNoLabel/${userId}`,
method: 'get',
params: query
})
}
// 获取团队报名时已选人员
export function getChooseDoneGroupCoachs(cptId, groupId) {
......@@ -540,3 +548,26 @@ export function getProjectPageByPerIds(query) {
})
}
export function createWePay(data) {
return request({
url: `/league/signOrder/wxPay`,
method: 'post',
data:data
})
}
export function createPalPay(data) {
return request({
url: `/league/signOrder/palPay`,
method: 'post',
data:data
})
}
export function callbackPalPay(tradeNo) {
return request({
url: `/league/signOrder/palPay/callback`,
method: 'post',
data:{
tradeNo:tradeNo
}
})
}
......
......@@ -787,7 +787,6 @@ img{display: block;}
.el-menu-item:hover{background-color:#fff; }
}
.black-pic-bg{
background: url("@/assets/v1/ss03.png") no-repeat center;
background-size: cover;height: 100%;display: flex;
justify-content: space-around;
.item{background:rgba(255, 255, 255, 0.3);
......
......@@ -42,7 +42,7 @@
</el-dialog>
<!-- 上传提示 -->
<div v-if="showUpload && fileList.length < limit" class="el-upload__tip">
<div v-if="isShowTip" class="el-upload__tip">
请上传
<template v-if="fileSize">
大小不超过
......@@ -152,8 +152,12 @@ const props = defineProps({
disabled: {
type: Boolean,
default: false
},
isShowTip: {
type: Boolean,
default: true
}
})
const accept = computed(() => {
return _.map(props.fileType, (t) => {
......@@ -220,7 +224,7 @@ watch(
(value) => {
showUpload.value = value !== props.limit
}, { deep: true, immediate: true }
)
......
......@@ -16,7 +16,7 @@
<script setup>
import variables from '@/assets/styles/variables.module.scss'
import logo from '@/assets/logo/logo@2x.png'
import logoIco from '@/assets/logo/ico.png'
// import logoIco from '@/assets/logo/ico.png'
import useSettingsStore from '@/store/modules/settings'
defineProps({
......
<template>
<div class="topNav">
<router-link to="/">
<img class="logo" src="@/assets/v1/nav_logo.png">
</router-link>
<div class="flex-right" style="display:none;">
<div class="ml20 forPc" >
<el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn">
<span @click="goLogin">{{ language==0?'登录':'LOGIN' }}</span>
<!-- | &nbsp;<span @click="goRegister">注册</span>-->
</el-button>
<el-button v-if="isLogin" style="border-radius: 20px;" class="loginBtn">
<span @click="router.push('/center/myInfo')">{{ language==0?'个人中心':'Personal' }}</span>
&nbsp;&nbsp;<span @click="logout()">{{language==0?'退出':'Exit'}}</span>
</el-button>
</div>
</div>
<a class="ropenbtn" @click="showDrawer">
<img src="@/assets/v1/menu.png">
</a>
</div>
<el-drawer
v-model="drawer" size="100%"
:style="{'--el-drawer-padding-primary':0}" direction="ltr"
:with-header="false" title="菜单"
>
<div class="weiHead">
<div class="languageBtn">
<span v-if="language==0" :class="language==0?'active':''" @click="changeLanguage(0)">中文</span>
<span v-else :class="language==0?'active':''" @click="changeLanguage(0)">CN</span>
|
<span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span>
</div>
<el-icon color="#453DEA" size="30" @click="closeDrawer"><close/></el-icon>
</div>
<el-menu class="weiMenu"
v-if="language==0"
router :default-active="activeIndex" mode="vertical" :ellipsis="false"
popper-effect="dark" @select="handleSelect"
>
<el-menu-item index="/">首页</el-menu-item>
<el-menu-item index="/news">新闻资讯</el-menu-item>
<el-menu-item index="/notice">通知公告</el-menu-item>
<el-menu-item index="/match/list/0">大赛报名</el-menu-item>
<el-menu-item index="/saiC">赛程安排</el-menu-item>
<el-menu-item index="/meta">媒体中心</el-menu-item>
<el-menu-item index="/guide">参赛指南</el-menu-item>
<el-sub-menu index="/about">
<template #title>关于我们</template>
<el-menu-item index="/about/wuDao">舞蹈节</el-menu-item>
<el-menu-item index="/about/culture">地方文化</el-menu-item>
</el-sub-menu>
</el-menu>
<el-menu class="weiMenu"
v-if="language==1"
router :default-active="activeIndex" mode="vertical" :ellipsis="false"
popper-effect="dark" @select="handleSelect"
>
<el-menu-item index="/">HOME</el-menu-item>
<el-menu-item index="/news">NEWS</el-menu-item>
<el-menu-item index="/notice">NOTICEBOARD</el-menu-item>
<el-menu-item index="/match/list/0">SIGN UP</el-menu-item>
<el-menu-item index="/saiC">COMPETITIONS</el-menu-item>
<el-menu-item index="/meta">MEDIA</el-menu-item>
<el-menu-item index="/guide">GUIDELINE</el-menu-item>
<el-sub-menu index="/about">
<template #title>CONTACT & MORE</template>
<el-menu-item index="/about/wuDao">About Us</el-menu-item>
<el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item>
<el-menu-item index="/about/culture">Culture</el-menu-item>
</el-sub-menu>
</el-menu>
</el-drawer>
<LoginDialog ref="pcloginDialog" @submitForm="reFlash" />
<SearchPop v-if="language==0" ref="searchDialog" />
<SearchPop_en v-if="language==1" ref="searchDialog" />
</template>
<script setup>
import { computed, ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import useUserStore from '@/store/modules/user'
import { Search } from '@element-plus/icons-vue'
import { getCurrentInstance, onMounted } from '@vue/runtime-core'
import _ from 'lodash'
import LoginDialog from '@/viewsPc/login'
import SearchPop from './indexSearch'
import SearchPop_en from './indexSearch_en'
import Captcha from './captcha'
import CaptchaSms from './captchaSms'
import cache from '@/plugins/cache'
import locale from 'element-plus/lib/locale/lang/zh-cn'
const router = useRouter()
const route = useRoute()
const { proxy } = getCurrentInstance()
const isLogin = ref(false)
const activeIndex = ref('/')
const registerVisible = ref(false)
const loginForm = ref({})
const drawer = ref(false)
const mode = ref('horizontal')
const language = ref(cache.local.get('language') || 0)
onMounted(() => {
console.log(window.location.href)
if (useUserStore().user) {
isLogin.value = true
}
// if (window.location.href.indexOf('en') > -1) {
// cache.local.set('language', 1)
// // location.reload()
// }
if (route.fullPath.indexOf('news') > -1) {
activeIndex.value = '/news'
} else if (route.fullPath.indexOf('notice') > -1) {
activeIndex.value = '/notice'
} else if (route.fullPath.indexOf('about') > -1) {
activeIndex.value = '/about'
} else if (route.fullPath.indexOf('mate') > -1) {
activeIndex.value = '/mate'
} else if (route.fullPath.indexOf('guide') > -1) {
activeIndex.value = '/guide'
} else if (route.fullPath.indexOf('saiC') > -1) {
activeIndex.value = '/saiC'
}
// console.log(activeIndex.value)
})
function changeLanguage(n) {
// language.value = n
cache.local.set('language', n)
location.reload()
}
function showDrawer() {
drawer.value = true
}
function closeDrawer() {
drawer.value = false
}
function handleSelect(key, keyPath) {
// console.log(key)
activeIndex.value = key
drawer.value = false
}
const logout = () => {
proxy.$modal.confirm('确定退出?').then(function() {
return useUserStore().logOut()
}).then(() => {
isLogin.value = true
location.reload()
})
}
const goLogin = (flag) => {
let param = null
if (_.isBoolean(flag)) {
param = {
notShowClose: flag
}
}
proxy.$refs['pcloginDialog'].open(param)
}
const reFlash = () => {
// 刷新
location.reload()
}
watch(() => useUserStore().reLogin, (val) => {
if (val) {
goLogin()
}
})
function searchNews() {
proxy.$refs['searchDialog'].open()
}
function getCode() {
proxy.$refs['codeRef'].getCode()
}
</script>
<style scoped lang="scss">
.loginBtn {color: #fff;margin-right: 15px;border: none;
background: linear-gradient(-90deg, #8623FC, #453DEA);box-shadow:0 0 10px #fff;
&:active {
color: #fff;
background:linear-gradient(0deg, #8623FC, #453DEA);
border:none;
}
&:hover {
box-shadow:0 0 10px var(--el-color-primary);border: none;
color:#fff;
}
}
.topNav {
box-shadow: 0px 0px 13px rgba(113,113,113);
display: flex;
justify-content: space-between;
height: 80px;
align-items: center;
.logo {
height: 60px;
margin-left: 40px;
}
.flex-right {
display: flex;
align-items: center;
}
.search {
position: relative;
.el-button.is-circle:hover {
color:var(--el-color-primary);
border-color: var(--el-color-primary);
}
.el-button.is-circle:active {
background: var(--el-color-primary);
color: #fff;
border-color: var(--el-color-primary);
}
.el-button.is-circle:focus {
border-color: var(--el-color-primary)
}
:deep(.el-input .el-input__wrapper) {
box-shadow: none;
border-radius: 18px;
background: #F4F4F4;
}
.el-icon {
position: absolute;
right: 5px;
}
}
}
.menuBox {
height: 60px;
background: var(--el-color-primary);
}
.ropenbtn{padding: 10px;display: none;
img{ width: 50px;}
}
:deep(.el-input){height: 100%}
:deep(.el-form-item){height: 40px;}
.home-menu .el-menu--horizontal > .el-menu-item{margin: 0 5px; font-size: 18px;}
.home-menu .el-sub-menu .el-sub-menu__title{font-size: 18px;}
.weiMenu.el-menu{
border: none;
:deep(.el-menu-item.is-active){color: var(--el-color-primary);}
}
.weiHead{display: flex;justify-content: end;padding: 15px;align-items: center;
.languageBtn{font-size: 20px;margin-right: 20px;line-height: 30px;white-space: nowrap;}
}
.weiMenu{
.el-menu-item{font-size: 20px}
:deep(.el-sub-menu__title){font-size: 20px}
:deep(.el-sub-menu .el-sub-menu__icon-arrow){font-size: 20px}
}
@media (max-width: 1400px) {
.search {
display: none;
}
}
@media (max-width: 1340px) {
.loginBtn {
display: none;
}
.home-menu .el-menu--horizontal > .el-menu-item{margin: 0; }
}
@media (max-width: 1000px) {
.box {
width: 100%
}
}
@media (max-width: 800px) {
.ropenbtn{display: block}
.forPc {
display: none;
}
}
</style>
export { default as AppMain } from './AppMain'
export { default as AppHeader } from './AppHeader'
export { default as AppBottom } from './AppBottom'
export { default as AppTop } from './AppTop'
......
<template>
<div>
<app-top />
<app-main />
<app-bottom />
</div>
</template>
<script setup>
import { AppMain, AppTop, AppBottom } from './components'
</script>
<style lang="scss">
// match
.kind{
.el-radio-button{ margin: 0 14px 0 0;}
.el-radio-button__inner{border: none!important;}
.el-radio-button__original-radio:checked+.el-radio-button__inner{
background: #CA171D;border-radius: 0;}
}
</style>
......@@ -5,6 +5,7 @@ import {
} from 'vue-router'
/* Layout */
import Layout from '@/layoutPc'
import Layout2 from '@/layoutPc/index2'
import Empty from '@/layoutPc/empty'
import NProgress from "nprogress";
import {getToken} from "@/utils/auth";
......@@ -401,18 +402,6 @@ export const constantRoutes = [
redirect: '/match/list',
children: [
{
path: 'commitDone/:orderId',
component: () => import('@/viewsPc/match/commitDone'),
name: 'commitDone',
meta: { title: '提交审核'}
},
{
path: 'pay',
component: () => import('@/viewsPc/match/pay'),
name: 'signPay',
meta: { title: '缴费清单' }
},
{
path: 'list',
component: () => import('@/viewsPc/match/index'),
name: 'matchList',
......@@ -423,48 +412,6 @@ export const constantRoutes = [
component: () => import('@/viewsPc/match/detail'),
name: 'matchDetail',
meta: { title: '赛事详情' }
},
{
path: 'list/:id/singleSign',
component: () => import('@/viewsPc/match/singleSign'),
name: 'singleSign',
meta: { title: '个人报名' }
},
{
path: 'list/:id/teamSign',
component: () => import('@/viewsPc/match/teamSign'),
name: 'teamSign',
meta: { title: '团队报名' }
},
{
path: 'list/:id/chooseCoach',
component: () => import('@/viewsPc/match/chooseCoach'),
name: 'chooseCoach',
meta: { title: '选择教练/领队/其他' }
},
{
path: 'list/:id/chooseSportsman',
component: () => import('@/viewsPc/match/chooseSportsman'),
name: 'chooseSportsman',
meta: { title: '选择运动员' }
},
{
path: 'list/:id/chooseProject',
component: () => import('@/viewsPc/match/chooseProject'),
name: 'chooseProject',
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',
meta: { title: '提交审核' }
}
]
},
......@@ -542,6 +489,79 @@ export const constantRoutes = [
]
}
]
},
{
path:'/',
component: Layout2,
children: [
{
path: 'match',
component: Empty,
redirect: '/match/list',
children: [
{
path: 'commitDone/:orderId',
component: () => import('@/viewsPc/match/commitDone'),
name: 'commitDone',
meta: { title: '提交审核'}
},
{
path: 'payOk',
component: () => import('@/viewsPc/match/payOk'),
name: 'payOk',
meta: { title: '支付成功'}
},
{
path: 'pay',
component: () => import('@/viewsPc/match/pay'),
name: 'signPay',
meta: { title: '缴费清单' }
},
{
path: 'list/:id/singleSign',
component: () => import('@/viewsPc/match/singleSign'),
name: 'singleSign',
meta: { title: '个人报名' }
},
{
path: 'list/:id/teamSign',
component: () => import('@/viewsPc/match/teamSign'),
name: 'teamSign',
meta: { title: '团队报名' }
},
{
path: 'list/:id/chooseCoach',
component: () => import('@/viewsPc/match/chooseCoach'),
name: 'chooseCoach',
meta: { title: '选择教练/领队/其他' }
},
{
path: 'list/:id/chooseSportsman',
component: () => import('@/viewsPc/match/chooseSportsman'),
name: 'chooseSportsman',
meta: { title: '选择运动员' }
},
{
path: 'list/:id/chooseProject',
component: () => import('@/viewsPc/match/chooseProject'),
name: 'chooseProject',
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',
meta: { title: '提交审核' }
}
]
},
]
}
]
......
......@@ -11,6 +11,7 @@ import {getToken} from "@/utils/auth";
import useUserStore from "@/store/modules/user";
import {isRelogin} from "@/utils/request";
import {ElMessage} from "element-plus";
import Layout2 from "@/layoutPc/index2";
// import useUserStore from '@/store/modules/user'
/**
......@@ -278,18 +279,6 @@ export const constantRoutes = [
redirect: '/match/list',
children: [
{
path: 'commitDone/:orderId',
component: () => import('@/viewsPc/match/commitDone'),
name: 'commitDone',
meta: { title: '提交审核'}
},
{
path: 'pay',
component: () => import('@/viewsPc/match/pay'),
name: 'signPay',
meta: { title: '缴费清单' }
},
{
path: 'list',
component: () => import('@/viewsPc/match/index'),
name: 'matchList',
......@@ -300,48 +289,6 @@ export const constantRoutes = [
component: () => import('@/viewsPc/match/detail_en'),
name: 'matchDetail',
meta: { title: '赛事详情' }
},
{
path: 'list/:id/singleSign',
component: () => import('@/viewsPc/match/singleSign'),
name: 'singleSign',
meta: { title: '个人报名' }
},
{
path: 'list/:id/teamSign',
component: () => import('@/viewsPc/match/teamSign'),
name: 'teamSign',
meta: { title: '团队报名' }
},
{
path: 'list/:id/chooseCoach',
component: () => import('@/viewsPc/match/chooseCoach'),
name: 'chooseCoach',
meta: { title: '选择教练/领队/其他' }
},
{
path: 'list/:id/chooseSportsman',
component: () => import('@/viewsPc/match/chooseSportsman'),
name: 'chooseSportsman',
meta: { title: '选择运动员' }
},
{
path: 'list/:id/chooseProject',
component: () => import('@/viewsPc/match/chooseProject'),
name: 'chooseProject',
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',
meta: { title: '提交审核' }
}
]
},
......@@ -445,7 +392,81 @@ export const constantRoutes = [
meta: { title: 'System messages' }
}
]
}]
}
]
},
{
path:'/',
component: Layout2,
children: [
{
path: 'match',
component: Empty,
redirect: '/match/list',
children: [
{
path: 'payOk',
component: () => import('@/viewsPc/match/payOk'),
name: 'payOk',
meta: { title: '支付成功'}
},
{
path: 'commitDone/:orderId',
component: () => import('@/viewsPc/match/commitDone'),
name: 'commitDone',
meta: { title: '提交审核'}
},
{
path: 'pay',
component: () => import('@/viewsPc/match/pay'),
name: 'signPay',
meta: { title: '缴费清单' }
},
{
path: 'list/:id/singleSign',
component: () => import('@/viewsPc/match/singleSign'),
name: 'singleSign',
meta: { title: '个人报名' }
},
{
path: 'list/:id/teamSign',
component: () => import('@/viewsPc/match/teamSign'),
name: 'teamSign',
meta: { title: '团队报名' }
},
{
path: 'list/:id/chooseCoach',
component: () => import('@/viewsPc/match/chooseCoach'),
name: 'chooseCoach',
meta: { title: '选择教练/领队/其他' }
},
{
path: 'list/:id/chooseSportsman',
component: () => import('@/viewsPc/match/chooseSportsman'),
name: 'chooseSportsman',
meta: { title: '选择运动员' }
},
{
path: 'list/:id/chooseProject',
component: () => import('@/viewsPc/match/chooseProject'),
name: 'chooseProject',
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',
meta: { title: '提交审核' }
}
]
},
]
}
]
......
......@@ -6,14 +6,13 @@
<el-card class="mb20">
<div :class="language==0?'center-menu':'center-menu en-menu'">
<ul v-if="user.utype=='2'">
<li
v-for="(m, i) in menus"
<li v-for="(m, i) in menus"
:key="i"
:class="{ active: m.isActive }"
>
<a href="javascript:void(0)" @click="toInfo(m)">
<a href="javascript:void(0)" @click="toInfo(m,menus)">
<img :src="m.isActive ? m.picUrl2 : m.picUrl1">
{{m.name}}
{{m.name }}
</a>
</li>
</ul>
......@@ -23,7 +22,7 @@
:key="i"
:class="{ active: m.isActive }"
>
<a href="javascript:void(0)" @click="toInfo(m)">
<a href="javascript:void(0)" @click="toInfo(m,menusPersonal)">
<img :src="m.isActive ? m.picUrl2 : m.picUrl1">
{{ m.name }}
</a>
......@@ -119,6 +118,13 @@ const menusPersonal = ref([
picUrl2: '/img/nav_27_dwn.png',
isActive: false
},
{
name: language.value==0?'选手管理':'Player Management',
routeName: 'myMember',
picUrl1: '/img/nav_31.png',
picUrl2: '/img/nav_31_dwn.png',
isActive: false
},
{
name: language.value==0?'我的报名':'My Eegistration',
routeName: 'myMatch',
......@@ -141,20 +147,26 @@ const menusPersonal = ref([
isActive: false
}
])
let currMenu
onMounted(() => {
user.value = useUserStore().user || {}
if(user.utype=='1'){
currMenu = _.find(menus.value, (m) => {
return m.routeName === route.name
})
}else {
currMenu = _.find(menusPersonal.value, (m) => {
return m.routeName === route.name
})
}
const currMenu = _.find(menus.value, (m) => {
return m.routeName === route.name
})
if (currMenu) {
currMenu.isActive = true
}
})
const toInfo = (item) => {
_.each(menus.value, (m) => {
const toInfo = (item,list) => {
_.each(list, (m) => {
m.isActive = false
})
item.isActive = true
......
......@@ -2,54 +2,59 @@
<div class="mb20">
<el-card :body-style="{'padding':'0'}">
<div class="indexTitle">
<h3 class="leftboderTT" v-if="user.utype=='2'">{{ language==0?'机构基础信息':'Institutional Basic Information' }}</h3>
<h3 class="leftboderTT" v-if="user.utype=='1'">{{ language==0?'个人基础信息':'Personal Basic Information' }}</h3>
<h3 class="leftboderTT" v-if="user.utype=='2'">
{{ language == 0 ? '机构基础信息' : 'Institutional Basic Information' }}</h3>
<h3 class="leftboderTT" v-if="user.utype=='1'">{{
language == 0 ? '个人基础信息' : 'Personal Basic Information'
}}</h3>
</div>
<!-- uType字段 1 是个人 2是团体-->
<!-- {{user}}-->
<!-- uType字段 1 是个人 2是团体-->
<!-- {{user}}-->
<team-info :form="myform" :language="language" v-if="user.utype=='2'"/>
<div class="pd20">
<div class="pd20" v-else>
<div class="d-form-border" style="margin-top: 0">
<el-form class="d-form" label-width="120">
<el-form-item :label="language==0?'用户名':'Account'">
{{user.userName}}
</el-form-item>
<el-form-item label="姓名" required>
<el-input v-model="myform.realName" />
</el-form-item>
<el-form-item label="性别" prop="sex" required>
<el-radio-group v-model="myform.sex">
<el-radio label="0" size="large"></el-radio>
<el-radio label="1" size="large"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="证件类型">
<el-select v-model="myform.idcType" placeholder="请选择证件类型" style="width: 100%">
<el-option
v-for="item in certificates"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="证件号码">
<el-input v-model="myform.idcCode" @blur="checkCode"/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="myform.type" placeholder="请选择" style="width: 100%;">
<el-option label="业余" value="0" />
<el-option label="专业" value="1" />
<el-option label="大专院校" value="2" />
<el-option label="其他" value="3" />
</el-select>
</el-form-item>
<el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="email">
<el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
</el-form>
<el-form class="d-form" label-width="120" :rules="rules" ref="formref">
<el-form-item :label="language==0?'用户名':'Account'">
{{ user.userName }}
</el-form-item>
<el-form-item :label="language==0?'姓名':'Real Name'" required prop="realName">
<el-input v-model="myform.realName"/>
</el-form-item>
<el-form-item :label="language==0?'性别':'Sex'" required prop="sex">
<el-radio-group v-model="myform.sex">
<el-radio label="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
<el-radio label="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="language==0?'证件类型':'ID type'" required prop="idcType">
<el-select v-model="myform.idcType" style="width: 100%">
<el-option
v-for="item in certificates"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode">
<el-input v-model="myform.idcCode" @blur="checkCode"/>
</el-form-item>
<el-form-item :label="language==0?'类型':'Type'" prop="type">
<el-select v-model="myform.type" style="width: 100%;">
<el-option :label="language==0?'业余':'amateur'" value="0"/>
<el-option :label="language==0?'专业':'Professional'" value="1"/>
<el-option :label="language==0?'大专院校':'Colleges and universities'" value="2"/>
<el-option :label="language==0?'其他':'Other'" value="3"/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
<el-input v-model="myform.email" type="email" :placeholder="language==0?'请输入内容':''"/>
</el-form-item>
</el-form>
<div class="text-center">
<el-button type="primary" class="btn-lineG" round @click="save">{{ language==0?'确定修改':'Save' }}</el-button>
<el-button type="primary" class="btn-lineG" round @click="save">
{{language == 0 ? '确定修改' : 'Save'}}
</el-button>
</div>
</div>
......@@ -60,71 +65,85 @@
</template>
<script setup>
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { getCurrentInstance, onMounted } from '@vue/runtime-core'
import {ref} from 'vue'
import {useRouter} from 'vue-router'
import {getCurrentInstance, onMounted} from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import { ElMessage, ElMessageBox } from 'element-plus'
import { nationList } from '@/assets/js/data'
import {ElMessage, ElMessageBox} from 'element-plus'
import {nationList} from '@/assets/js/data'
import {getGroupInfo} from "@/apiPc/match";
import TeamInfo from "@/viewsPc/center/teamInfo";
import cache from "@/plugins/cache";
import useUserStore from "@/store/modules/user";
const language = ref(cache.local.get('language') || 0)
const router = useRouter()
const { proxy } = getCurrentInstance()
const {proxy} = getCurrentInstance()
const props = defineProps({
user:{
type:Object,
required:true
user: {
type: Object,
required: true
}
})
const rules = ref({
realName: [{required: true, message: '必填', trigger: 'blur'}],
sex: [{required: true, message: '必填', trigger: 'change'}],
idcType: [{required: true, message: '必填', trigger: 'change'}],
type: [{required: true, message: '必填', trigger: 'change'}],
idcCode: [{required: true, message: '必填', trigger: 'blur'}],
email: [{required: true, message: '必填', trigger: 'blur'}],
})
const activeName = ref('first')
const myform = ref({
idcType: 0,
countryId: 240,
nation: '汉族',
realName:''
realName: ''
})
const labelArr = ref([])
const certificates = ref([
{
value: '0',
label: '居民身份证'
label: language.value == 0 ? '居民身份证' : 'Resident ID card'
},
{
value: '1',
label: '护照'
label: language.value == 0 ? '护照' : 'Passport'
},
{
value: '2',
label: '其他'
label: language.value == 0 ? '其他' : 'Other'
}
])
onMounted(() => {
getData()
})
const user = useUserStore().user || {}
getData()
function getData() {
if(props.user.utype=='2'){
if (user.utype == '2') {
match.getGroupInfo().then(res => {
myform.value = res.data
})
}
if(props.user.utype=='1'){
if (user.utype == '1') {
match.getMyPersonInfo().then(res => {
myform.value = res.data
})
}
}
function save(){
match.saveMyBaseInfo().then(res=>{
function save() {
proxy.$refs['dialogRef'].validate((valid) => {
if(valid){
match.saveMyBaseInfo().then(res => {
})
}
})
}
function checkCode() {
if (myform.value.idcType == 0 && myform.value.idcCode) {
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(myform.value.idcCode))) {
......@@ -155,14 +174,17 @@ function checkCode() {
}
</script>
<style scoped lang="scss">
.indexTitle{margin: 20px 0 12px;padding: 0 20px 15px;border-bottom: 1px solid #e5e5e5;
h3{
.indexTitle {
margin: 20px 0 12px;
padding: 0 20px 15px;
border-bottom: 1px solid #e5e5e5;
h3 {
font-size: 16px;
color:var(--el-color-primary);
color: var(--el-color-primary);
}
}
......
......@@ -3,10 +3,10 @@
<div class="pd20">
<div class="matchItem" v-for="n in billList" :key="n.id">
<div class="status-po">
<span class="bg-pink" v-if="n.auditStatus=='0'">未提交</span>
<span class="bg-primary" v-if="n.auditStatus=='1'">待审核</span>
<span class="bg-blue" v-if="n.auditStatus=='2'">审核通过</span>
<span class="bg-danger" v-if="n.auditStatus=='3'">审核驳回</span>
<span class="bg-pink" v-if="n.auditStatus=='0'">{{ language==0?'未提交':'Uncommitted' }}</span>
<span class="bg-primary" v-if="n.auditStatus=='1'">{{ language==0?'待审核':'Audit' }}</span>
<span class="bg-blue" v-if="n.auditStatus=='2'">{{ language==0?'审核通过':'Approved' }}</span>
<span class="bg-danger" v-if="n.auditStatus=='3'">{{ language==0?'审核驳回':'Reject' }}</span>
</div>
<el-row :gutter="15">
<el-col :lg="6" :md="8" :xl="10">
......@@ -18,22 +18,27 @@
<h3>{{ n.name }}</h3>
</el-col>
<el-col :lg="8">
<p class="ppl"><label>赛事类型</label>{{ n.level }}</p>
<p class="ppl"><label v-if="n.groupName">参赛队</label>{{n.groupName}}</p>
<p class="ppl"><label>{{ language==0?'赛事类型':'Event Type' }}</label>{{ n.level }}</p>
<p class="ppl"><label v-if="n.groupName">{{ language==0?'参赛队':'Name of participating team' }}</label>{{n.groupName}}</p>
</el-col>
<el-col :lg="8">
<p class="ppl"><label>比赛时间</label>{{ n.signBeginTime }}~{{n.signEndTime}}
<p class="ppl"><label>{{ language==0?'比赛时间':'Event Date' }}</label>{{ n.signBeginTime }}~{{n.signEndTime}}
</p>
<p class="ppl"><label>参赛运动员</label>{{ n.signSize }}</p>
<p class="ppl"><label>{{ language==0?'参赛运动员':'Participating athletes' }}</label>{{ n.signSize }}</p>
</el-col>
<el-col :lg="8">
<p class="ppl"><label>报名时间</label>{{ n.signBeginTime }}~{{n.signEndTime}}</p>
<p class="ppl"><label>{{ language==0?'报名时间':'Registration Period' }}</label>{{ n.signBeginTime }}~{{n.signEndTime}}</p>
<div class="btnbox">
<el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus!='0'">详情</el-button>
<el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='0'">继续报名</el-button>
<el-button plain round type="primary" @click="withDraw(n)" v-if="n.auditStatus=='1'">取消报名</el-button>
<el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='3'">重新报名</el-button>
<el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus=='2'&&n.payStatus=='0'">缴费</el-button>
<el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus!='0'">
{{ language==0?'详情':'Detail' }}</el-button>
<el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='0'">
{{ language==0?'继续报名':'Continue to register' }}</el-button>
<el-button plain round type="primary" @click="withDraw(n)" v-if="n.auditStatus=='1'">
{{ language==0?'取消报名':'Cancel registration' }}</el-button>
<el-button plain round type="primary" @click="continueSign(n)" v-if="n.auditStatus=='3'">
{{ language==0?'重新报名':'Re register' }}</el-button>
<el-button plain round type="primary" @click="goDetail(n)" v-if="n.auditStatus=='2'&&n.payStatus=='0'">
{{ language==0?'缴费':'pay' }}</el-button>
</div>
</el-col>
</el-row>
......@@ -41,7 +46,7 @@
</el-row>
</div>
<el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="billList?.length == 0"/>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="billList?.length == 0"/>
</div>
<paginationPc
......@@ -71,7 +76,8 @@ import * as match from '@/apiPc/match'
import {ElMessage, ElMessageBox} from 'element-plus'
import _ from 'lodash'
import useUserStore from "@/store/modules/user";
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const router = useRouter()
const {proxy} = getCurrentInstance()
const total = ref(0)
......
......@@ -62,7 +62,7 @@
</el-row>
</div>
<el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="billList?.length == 0"/>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="billList?.length == 0"/>
</div>
<paginationPc
......
......@@ -9,7 +9,7 @@
<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?'短名':'Short Name'">
<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'">
......@@ -63,7 +63,7 @@ const router = useRouter()
const {proxy} = getCurrentInstance()
import * as match from '@/apiPc/match'
import {ElMessage, ElMessageBox} from 'element-plus'
import {getGroupPersonList} from "@/apiPc/match";
import {getGroupPersonList, getPerPersonList} from "@/apiPc/match";
import PersonTable from "@/viewsPc/match/components/personTable";
import cache from "@/plugins/cache";
import useUserStore from "@/store/modules/user";
......@@ -74,17 +74,18 @@ const labels = ref([
{value: '0', label: '运动员', enlabel: 'Sportsman'},
{value: '1', label: '教练', enlabel: 'Coach'},
{value: '2', label: '领队', enlabel: 'Leader'},
{value: '3', label: '队医', enlabel: 'Nurse'},
{value: '4', label: '翻译', enlabel: 'Translator'},
{value: '5', label: '官员', enlabel: 'Official'},
{value: '6', label: '其他', enlabel: 'Other'}
{value: '4', label: '队医', enlabel: 'Nurse'},
{value: '5', label: '翻译', enlabel: 'Translator'},
{value: '6', label: '官员', enlabel: 'Official'},
{value: '3', label: '其他', enlabel: 'Other'}
])
const query = ref({
pageNum: 1, pageSize: 10
})
const total = ref(0)
const group = useUserStore().group
const groupId = ref(group.id)
const group = useUserStore().group || {}
const user = useUserStore().user || {}
const groupId = ref(group.id|| 0)
onMounted(() => {
getList(groupId.value)
})
......@@ -108,10 +109,19 @@ function importSportman() {
function getList() {
query.value.label =labelArr.value.toString()
getGroupPersonList(query.value, groupId.value).then(res => {
tableData.value = res.rows
total.value = res.total
})
if(user.utype=='2'){
getGroupPersonList(query.value, groupId.value).then(res => {
tableData.value = res.rows
total.value = res.total
})
}
if(user.utype=='1'){
getPerPersonList(query.value,user.userId).then(res => {
tableData.value = res.rows
total.value = res.total
})
}
}
function editCoach(row,title) {
......
......@@ -2,7 +2,7 @@
<div>
<el-card :body-style="{'padding':'0'}">
<div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'我的预订':'My reservation' }}</h3></div>
<el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="list?.length == 0"/>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0"/>
<div class="pd20"></div>
</el-card>
......
......@@ -10,7 +10,7 @@
<span>{{ n.time }}</span>
</li>
</ul>
<el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="list?.length == 0"/>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0"/>
</el-card>
</div>
......
......@@ -359,7 +359,7 @@ function editPerson(id) {
proxy.$refs['dialogAddCoachRef'].open({
title: language.value==0?'编辑人员':'Edit',
id: id,
groupId: groupId.value
groupId: groupId.value || 0
})
}
......
......@@ -57,7 +57,7 @@
</div>
</el-checkbox>
</el-checkbox-group>
<el-empty v-if="projectList.length==0" image="@/assets/img/order_no.png" :image-size="228"
<el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228"
:description="language==0?'无可选项目':''"/>
</div>
</div>
......@@ -97,7 +97,7 @@
</el-card>
</div>
<dialogAddCoach ref="dialogAddCoachRef" @submitForm="getProjectList"/>
<dialogAddCoach ref="dialogAddCoachRef" @submitForm="changeMeDone"/>
<!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>-->
......@@ -165,6 +165,7 @@ const {
const matchId = ref(route.query.matchId)
let signInfoType = null
const form = ref({})
const signEndTime = ref('')
const userId = ref('')
const myId = ref('')
onMounted(() => {
......@@ -185,12 +186,17 @@ function getMyInfo(){
getProjectList()
})
}
function changeMeDone(){
getMyInfo()
getProjectList()
}
let chargeFlag
function getMatch(id) {
match.getMatchById({
id: id
}).then(res => {
signEndTime.value = res.data.signEndTime
chargeFlag = res.data.chargeFlag
noPhotoCanSign.value = res.data.noPhotoCanSign
coachOrLeaderFlag.value = res.data.coachOrLeaderFlag
......@@ -233,11 +239,12 @@ function submitForm(n) {
return
}
if(n==0){
ElMessageBox.confirm(`您当前的操作为暂存,并不是提交审核,必须在报名截止时间XXXX-XX-XX之前完成提交。\n` +
'\n' +
'您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。','提示',{
confirmButtonText: '去个人中心',
cancelButtonText: '知道了',
ElMessageBox.confirm(`您当前的操作为暂存,并不是提交审核,
必须在报名截止时间${signEndTime.value}之前完成提交。
您也可以在个人中心-我的报名中,找到这条报名,点击提交审核。`,
language.value==0?'提示':'Tip',{
confirmButtonText: language.value==0?'去个人中心':'Go My Eegistration ',
cancelButtonText: language.value==0?'知道了':'OK',
type: 'warning'
}).then((res)=>{
console.log(res)
......@@ -253,7 +260,7 @@ function submitForm(n) {
}
for (const s of signInfoList.value) {
if (s.extraPersonInfo == null && needBuchong) {
ElMessage.error('请完善运动员补充信息')
ElMessage.error(language.value==0?'请完善运动员补充信息':'Complete Supplementary Information')
tableType.value = 0
return
}
......@@ -284,7 +291,8 @@ function getProjectList() {
//根据已选人员id 获取项目列表
var obj = {
cptId: matchId.value,
perIds: myId.value
perIds: myId.value,
name:projectQuery.value.name
}
match.getProjectPageByPerIds(obj).then(res => {
projectList.value = res.rows
......@@ -340,15 +348,17 @@ function signUp() {
}
function removeThis(id) {
ElMessageBox.confirm('确定移除这条报项吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
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('已移除该报项')
ElMessage.success(language.value==0?'已移除该报项':'success')
getSignInfoList()
getProjectList()
})
})
}
......@@ -401,8 +411,8 @@ function downloadVoucher() {
function editPerson() {
proxy.$refs['dialogAddCoachRef'].open({
title: '编辑人员',
uType: '1'
title: language.value==0?'编辑个人信息':'Edit My Information',
isMe: true
})
}
......
......@@ -84,7 +84,7 @@
</div>
</el-checkbox>
</el-checkbox-group>
<el-empty v-if="projectList.length==0" image="@/assets/img/order_no.png" :image-size="228"
<el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228"
:description="language==0?'无可选项目':''"/>
</div>
</div>
......
......@@ -9,12 +9,12 @@
<div class="flexCenter pd20">
<img src="@/assets/img/e.png"/>
<div>
<div>账号{{ user.userName }}</div>
<h3>报名信息提交成功</h3>
<div>{{ language==0? '账号':'Account' }}{{ user.userName }}</div>
<h3>{{ language==0?'报名信息提交成功':'Registration information submitted successfully' }}</h3>
</div>
</div>
<div class="text-center flexCenter">
<div class="border-info mt20">
<div class="border-info mt20" v-if="language==0">
审核结果,后续将以邮件形式正式通知您。
<br/>
邮件发送账号:<span class="text-primary">{{ user.email }}</span>
......@@ -22,11 +22,20 @@
<br/>
如果您的报名信息审核通过,邮件正文会附上相关费用的支付链接,请通过链接完成支付,完成报名。
</div>
<div class="border-info mt20" v-else>
The audit results will be formally notified to you via email in the future.
<br/>
Email sender: <span class="text-primary">{{ user.email }}</span>
Please follow the relevant email notifications.
<br/>
If your registration information is approved, the payment link for the relevant fees will be attached to the email body. Please complete the payment and registration through the link.
</div>
</div>
<div class="text-center mt30 mb20">
<el-button class="primary-kx w200px" round @click="goHome">{{ language == 0 ? '返回首页' : 'Homepage' }}</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="goSign">{{ language == 0 ? '返回赛事报名模块' : 'Sign Up' }}</el-button>
<el-button type="primary" class="btn-lineG w200px" round @click="goSign">
{{ language == 0 ? '返回赛事报名模块' : 'Return to Event Registration Module' }}</el-button>
</div>
</el-card>
</div>
......
......@@ -4,7 +4,7 @@
:close-on-click-modal="false" class="pcloginpop"
destroy-on-close
>
<el-form ref="dialogRef" :model="form" :rules="rules" label-width="120px" inline>
<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>
......@@ -16,8 +16,8 @@
<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?'短名':'short name'" prop="shortName" required>
<el-input v-model="form.shortName" placeholder="赛事用名"/>
<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
......@@ -88,16 +88,28 @@
</template>
<script setup>
import {reactive, toRefs, watch} from 'vue'
import {reactive, ref, toRefs, watch} from 'vue'
import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core'
import * as match from '@/apiPc/match'
import {certificates} from '@/assets/lib/nation'
import {ElMessage} from 'element-plus'
import {nationList} from '@/assets/js/data'
import _ from 'lodash'
import cache from "@/plugins/cache";
const language = ref(cache.local.get('language') || 0)
const certificates = ref([
{
value: '0',
label: language.value == 0 ? '居民身份证' : 'Resident ID card'
},
{
value: '1',
label: language.value == 0 ? '护照' : 'Passport'
},
{
value: '2',
label: language.value == 0 ? '其他' : 'Other'
}
])
const {proxy} = getCurrentInstance()
const emit = defineEmits(['submitForm'])
const data = reactive({
......@@ -120,6 +132,22 @@ const data = reactive({
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'}],
countryId: [{required: true, message: 'required', trigger: 'change'}],
idcType: [{required: true, message: 'required', trigger: 'change'}],
idcCode: [{required: true, message: 'required', trigger: 'blur'}],
phone: [{required: true, message: 'required', trigger: 'blur'}],
// 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'}],
sex: [{required: true, message: 'required', trigger: 'change'}],
labelArr: [{required: true, message: 'required', trigger: 'change'}]
},
show: false,
countryList: [],
regionsList: [],
......@@ -127,17 +155,17 @@ const data = reactive({
{value: '0', label: '运动员', enlabel: 'Sportsman'},
{value: '1', label: '教练', enlabel: 'Coach'},
{value: '2', label: '领队', enlabel: 'Leader'},
{value: '3', label: '队医', enlabel: 'Nurse'},
{value: '4', label: '翻译', enlabel: 'Translator'},
{value: '5', label: '官员', enlabel: 'Official'},
{value: '6', label: '其他', enlabel: 'Other'}
{value: '4', label: '队医', enlabel: 'Nurse'},
{value: '5', label: '翻译', enlabel: 'Translator'},
{value: '6', label: '官员', enlabel: 'Official'},
{value: '3', label: '其他', enlabel: 'Other'}
],
title: '添加选手信息',
groupId: '0',
showRequire: false,
uType:''
isMe:false
})
const {showRequire, form, rules, show, countryList, regionsList, title, groupId, labels,uType} = toRefs(data)
const {showRequire, form, rules,rules_cn, show, countryList, regionsList, title, groupId, labels,uType,isMe} = toRefs(data)
onMounted(() => {
getCountryList()
getRegionsList()
......@@ -148,8 +176,8 @@ const open = (params) => {
show.value = true
title.value = params.title
groupId.value = params.groupId || '0'
uType.value = params.uType
if(uType.value == '1'){
isMe.value = params.isMe
if(isMe.value){
//个人
match.getMyPersonInfo().then(res => {
form.value = res.data
......@@ -295,26 +323,26 @@ function submitForm() {
})
} else {
if (editgay) {
// id不是0
match.editPersonInfo(form.value).then(res => {
ElMessage.success('保存成功')
show.value = false
emit('submitForm')
})
} else {
// if(uType.value == '1'){
// match.saveMyBaseInfo(form.value).then(res => {
// ElMessage.success('保存成功')
// show.value = false
// emit('submitForm')
// })
// } else {
if(isMe.value){
match.saveMyBaseInfo(form.value).then(res => {
ElMessage.success('保存成功')
show.value = false
emit('submitForm')
})
} else {
match.savePersonForMyPerson(form.value).then(res => {
ElMessage.success('保存成功')
show.value = false
emit('submitForm')
})
// }
}
}
}
}
......
......@@ -13,7 +13,7 @@
<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?'短名':'Short Name'">
<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'">
......@@ -43,7 +43,7 @@
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
<el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
<el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
<el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/>
<el-table-column :label="language==0?'短名':'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"/>
......@@ -86,7 +86,7 @@
</el-dialog>
<addCoach ref="dialogAddCoach" @submitForm="getList"/>
<Import ref="dialogImportProps"/>
<Import ref="dialogImportProps" @uploadSuccess='getList'/>
</template>
<script setup>
......
......@@ -41,11 +41,29 @@ function uploadSuccess(res) {
console.log(res)
cancel()
if (res.code == 500) {
ElMessageBox.alert(res.data, '提示', {
ElMessageBox.alert(res.msg, '提示', {
confirmButtonText: '好的'
})
} else {
proxy.$modal.msgSuccess(`${res.msg}`)
if(res.data.repeatInSystemColumn){
proxy.$modal.msgError(`${res.data.repeatInSystemColumn}系统中已存在`)
}
if(res.data.errCountryColumn){
proxy.$modal.msgError(`${res.data.errCountryColumn}所属国家有误`)
}
if(res.data.errIdcTypeColumn){
proxy.$modal.msgError(`${res.data.errIdcTypeColumn}证件号错误`)
}
if(res.data.errSexColumn){
proxy.$modal.msgError(`${res.data.errSexColumn}性别错误`)
}
if(res.data.incompleteColumn){
proxy.$modal.msgError(`${res.data.incompleteColumn}必填项未完成`)
}
if(res.data.repeatInFileColumn){
proxy.$modal.msgError(`${res.data.repeatInFileColumn}文件内重复`)
}
}
emit('uploadSuccess')
......
......@@ -2,14 +2,14 @@
<div class="border-info" style="margin: 20px" v-loading="loading">
<el-row v-if="language==0">
<el-col :lg="8"><div class="item"><label>赛事名称</label>{{matchInfo.name}}</div></el-col>
<el-col :lg="8"><div class="item"><label>赛事类型</label>{{matchInfo.name}}</div></el-col>
<el-col :lg="8"><div class="item"><label>赛事类型</label>{{matchInfo.level}}</div></el-col>
<el-col :lg="8"><div class="item"><label>赛事时间</label>{{matchInfo.beginTime?.slice(0,10)}}{{ matchInfo.endTime?.slice(0,10) }}</div></el-col>
<el-col :lg="8"><div class="item"><label>报名时间</label>{{ matchInfo.signBeginTime?.slice(0,10) }}{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col>
<el-col :lg="16"><div class="item"><label>比赛地址</label>{{matchInfo.address}}</div></el-col>
</el-row>
<el-row v-else>
<el-col :lg="8"><div class="item"><label>Event Name</label>{{matchInfo.name}}</div></el-col>
<el-col :lg="8"><div class="item"><label>Event Type</label>{{matchInfo.name}}</div></el-col>
<el-col :lg="8"><div class="item"><label>Event Type</label>{{matchInfo.level}}</div></el-col>
<el-col :lg="8"><div class="item"><label>Event Date</label>{{matchInfo.beginTime?.slice(0,10)}} ~ {{ matchInfo.endTime?.slice(0,10) }}</div></el-col>
<el-col :lg="8"><div class="item"><label>Registration Period</label>{{ matchInfo.signBeginTime?.slice(0,10) }} ~{{ matchInfo.signEndTime?.slice(0,10) }}</div></el-col>
<el-col :lg="16"><div class="item"><label>Event Address</label>{{matchInfo.address}}</div></el-col>
......
......@@ -11,94 +11,40 @@
</div>
<div class="indexTitle" v-if="form.type==0"><h3 class="leftboderTT">赛事规程</h3></div>
<div class="xzbox" v-if="form.type==0" v-html="form.ruleUrl"></div>
<div class="xzbox" v-if="form.type==0">
<el-link v-if="form.ruleUrl" type="primary" :href="fillImgUrl(JSON.parse(form.ruleUrl)[0]?.url)" target="_blank">
<el-icon :size="20">
<Download />
</el-icon>
{{ JSON.parse(form.ruleUrl)[0]?.name }}
</el-link>
</div>
<div class="indexTitle" v-if="form.type==1"><h3 class="leftboderTT">竞赛项目</h3></div>
<div class="collapsebox" v-if="form.type==1">
<el-collapse v-if="form.cptProjectList?.length > 0">
<el-collapse-item :title="p.name" :name="index" :key="index" v-for="(p,index) in form.cptProjectList">
<div class="pd20">
<table class="table">
<tr>
<td>日期</td>
<td>单元</td>
<td>组别</td>
<td>时间</td>
<td>阶段</td>
</tr>
<tr>
<td rowspan="4">2023/10/6(星期五)</td>
<td rowspan="4">BRK01</td>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>资格赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>资格赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>循环赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>循环赛</td>
</tr>
<tr>
<td rowspan="8">2023/10/7(星期六)</td>
<td rowspan="8">BRK02</td>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>四分之一决赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>四分之一决赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>半决赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>半决赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>季军赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>季军赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>决赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>决赛</td>
</tr>
<tr>
<td colspan="5" style="text-align: left">
注:竞赛日程将根据最终参赛人数和电视转播的要求进行调整
</td>
</tr>
</table>
</div>
</el-collapse-item>
</el-collapse>
<el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/>
<div class="pd20">
<table class="table" cellspacing="0" cellpadding="0" v-if="form.cptProjectList?.length > 0">
<tr>
<th>组别编号</th>
<th>组别名称</th>
<th>舞种</th>
<th>舞种明细</th>
<th>参赛性别</th>
<th>参赛年龄</th>
<th>服务费(元)</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="form.cptProjectList?.length == 0" description=""/>
</div>
</div>
<div style="padding: 0 20px 20px" v-else>
......@@ -113,94 +59,43 @@
</div>
<div class="indexTitle" v-if="form.type==0"><h3 class="leftboderTT">Competition Regulations</h3></div>
<div class="xzbox" v-if="form.type==0" v-html="form.ruleUrl"></div>
<div class="xzbox" v-if="form.type==0">
<div v-html="form.ruleContent">
</div>
<el-link v-if="form.ruleUrl" type="primary" :href="fillImgUrl(JSON.parse(form.ruleUrl)[0]?.url)" target="_blank">
<el-icon :size="20">
<Download />
</el-icon>
{{ JSON.parse(form.ruleUrl)[0]?.name }}
</el-link>
</div>
<div class="indexTitle" v-if="form.type==1"><h3 class="leftboderTT">Event settings</h3></div>
<div class="collapsebox" v-if="form.type==1">
<el-collapse v-if="form.cptProjectList?.length > 0">
<el-collapse-item :title="p.name" :name="index" :key="index" v-for="(p,index) in form.cptProjectList">
<div class="pd20">
<table class="table">
<tr>
<td>日期</td>
<td>单元</td>
<td>组别</td>
<td>时间</td>
<td>阶段</td>
</tr>
<tr>
<td rowspan="4">2023/10/6(星期五)</td>
<td rowspan="4">BRK01</td>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>资格赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>资格赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>循环赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>循环赛</td>
</tr>
<tr>
<td rowspan="8">2023/10/7(星期六)</td>
<td rowspan="8">BRK02</td>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>四分之一决赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>四分之一决赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>半决赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>半决赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>季军赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>季军赛</td>
</tr>
<tr>
<td>男子</td>
<td>14:30 - 15:30</td>
<td>决赛</td>
</tr>
<tr>
<td>女子</td>
<td>14:30 - 15:30</td>
<td>决赛</td>
</tr>
<tr>
<td colspan="5" style="text-align: left">
注:竞赛日程将根据最终参赛人数和电视转播的要求进行调整
</td>
</tr>
</table>
</div>
</el-collapse-item>
</el-collapse>
<el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="form.cptProjectList?.length == 0" description=" "/>
<div class="pd20">
<table class="table" cellspacing="0" cellpadding="0" v-if="form.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="form.cptProjectList?.length == 0" description=" "/>
</div>
</div>
</template>
......
<template>
<el-card :body-style="{padding: '10px'}" class="mb20">
<div>
<div class="liveImgbox" @click="goDetail(newsList[0])">
<i class="ii">{{ language==0?'直播中':'Live' }}</i>
<img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">
</div>
</div>
<!-- <div>-->
<!-- <div class="liveImgbox" @click="goDetail(newsList[0])">-->
<!-- <i class="ii">{{ language==0?'直播中':'Live' }}</i>-->
<!-- <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">-->
<!-- </div>-->
<!-- </div>-->
<div class="indexTitle">
<h3 class="leftboderTT">{{ language==0?'赛事报道':'Special reports' }}</h3>
<a class="more" @click="goList(query2.sortId,'专题报道')">MORE</a>
<!-- <a class="more" @click="goList(query2.sortId,'专题报道')">MORE</a>-->
</div>
<div>
<div class="item" v-for="n in newsList2" :key="n.id">
<div class="item" v-for="n in newsList" :key="n.id">
<p class="esp">{{ n.name }}</p>
</div>
</div>
<div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事视频':'Event Videos' }}</h3>
<a class="more" @click="goList(10000006,'赛事视频')">MORE</a>
<!-- <a class="more" @click="goList(10000006,'赛事视频')">MORE</a>-->
</div>
<div>
<div class="videoImgbox" @click="goDetail(newsList[1])">
<img :src="fillImgUrl_webSite(newsList[1]?.picUrl)">
<div class="item" v-for="n in newsList2" :key="n.id">
<div class="videoImgbox" @click="goDetail(n)">
<img :src="fillImgUrl_webSite(n.picUrl)">
</div>
</div>
<div class="indexTitle"><h3 class="leftboderTT">{{ language==0?'赛事图片':'Event Photos' }}</h3>
<a class="more" @click="goList(10000007,'赛事图片')">MORE</a>
<!-- <a class="more" @click="goList(10000007,'赛事图片')">MORE</a>-->
</div>
<div>
<div class="picbox" @click="goDetail(newsList[0])"><img :src="fillImgUrl_webSite(newsList[0]?.picUrl)"/></div>
<div v-for="n in newsList3" :key="n.id">
<div class="picbox" @click="goDetail(n)"><img :src="fillImgUrl_webSite(n.picUrl)"/></div>
</div>
</el-card>
</template>
......@@ -39,22 +39,34 @@ import {getNewsListById} from "@/apiPc/webSite";
import {onMounted, ref} from "vue";
import cache from '@/plugins/cache'
const language = ref(cache.local.get('language') || 0)
const props = defineProps({
matchId: {
type: String,
required: true
}
})
const newsList = ref([])
const newsList2 = ref([])
const newsList3 = ref([])
const query1 = ref({
pageSize: 5,
pageSize: 1,
pageNum: 1,
sortId: '10000006'
code: `${props.matchId}${language.value == 0 ?'100':'101'}2`
})
const query2 = ref({
pageSize: 3,
pageNum: 1,
sortId: '10000003'
code: `${props.matchId}${language.value == 0 ?'100':'101'}1`
})
const query3 = ref({
pageSize: 1,
pageNum: 1,
code: `${props.matchId}${language.value == 0 ?'100':'101'}3`
})
onMounted(() => {
getList(query1.value)
getList2(query2.value)
getList3(query3.value)
})
const getList = (obj) => {
getNewsListById(obj).then(res => {
......@@ -66,6 +78,11 @@ const getList2 = (obj) => {
newsList2.value = res.rows
})
}
const getList3 = (obj) => {
getNewsListById(obj).then(res => {
newsList3.value = res.rows
})
}
const goList = (sortId,name) => {
router.push({
path: `/news/list/${sortId}`,
......
......@@ -24,7 +24,7 @@
</el-timeline-item>
</el-timeline>
<el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="matchData.cptScheduleList?.length==0" description="" />
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="matchData.cptScheduleList?.length==0" description="" />
</div>
</template>
......
......@@ -5,7 +5,7 @@
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="countryName" min-width="100"/>
<el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/>
<el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/>
<el-table-column :label="language==0?'短名':'Short Name'" prop="shortName" min-width="110"/>
<el-table-column :label="language==0?'短名':'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"/>
......
......@@ -16,8 +16,7 @@
</el-radio>
</div>
</el-radio-group>
<el-empty v-if="projectList.length==0" image="@/assets/img/order_no.png" :image-size="228" description="无可选项目" />
<el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228" description="无可选项目" />
</el-form-item>
</el-col>
<el-col :span="8">
......
......@@ -3,11 +3,11 @@
<el-table-column :label="language==0?'所属国家':'Nationality'" prop="personInfo.countryName" min-width="100"/>
<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?'短名':'Short Name'" prop="personInfo.shortName" min-width="110"/>
<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" width="120"/>
<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?'证件号码':'ID NO.'" prop="personInfo.idcCode" width="200"/>
......@@ -43,7 +43,7 @@
</ol>
</template>
</el-table-column>
<el-table-column :fixed="hasAction?false:'right'" :label="language==0?'保险费':'Premium'" prop="insuranceFee">
<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>
</template>
......
......@@ -8,7 +8,7 @@
<el-col :lg="10" :md="12" :xl="12">
<div class="info">
<h3>{{ n.name }}</h3>
<p class="ppl"><label>{{ language==0?'比赛时间':'Playing Time' }}</label>{{n.beginTime?.slice(0,10)}} {{ n.endTime?.slice(0,10) }}</p>
<p class="ppl"><label>{{ language==0?'比赛时间':'Playing Time' }}</label>{{n.beginTime?.slice(0,10)}} ~ {{ n.endTime?.slice(0,10) }}</p>
<p class="ppl"><label>{{ language==0?'地&ensp;&ensp;&ensp;&ensp;点':'Location' }}</label>{{ n.address }}</p>
<p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}</label>{{ n.signEndTime?.slice(0,10) }}</p>
......@@ -45,7 +45,7 @@
</div>
</div>
<el-empty image="@/assets/img/order_no.png" :image-size="228" v-if="list?.length == 0" description=" "/>
<el-empty :image="`/img/order_no.png`" :image-size="228" v-if="list?.length == 0" description=" "/>
</template>
<script setup>
......
......@@ -111,7 +111,7 @@
</table>
</div>
<el-empty image="@/assets/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"/>
......@@ -141,15 +141,21 @@
</div>
</el-col>
</el-row>
<el-empty image="@/assets/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="@/assets/img/order_no.png" :image-size="228" description="暂无成绩" />
<el-empty :image="`/img/order_no.png`" :image-size="228"/>
</div>
<div v-if="menu[5].active==1" class="pd20">
<div class="xzbox" v-html="matchData.signKnow">
<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-icon :size="20">
<Download />
</el-icon>
{{ JSON.parse(matchData.signKnowUrl)[0]?.name }}
</el-link>
</div>
</div>
</el-card>
......@@ -157,7 +163,7 @@
</el-col>
<el-col :lg="6">
<match-news/>
<match-news :match-id="matchId"/>
</el-col>
</el-row>
......@@ -259,22 +265,24 @@ function choseSignType() {
return
}
console.log(matchData.value.signType)
// checkIsSign().then(() => {
checkIsSign().then(() => {
if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) {
// 个人报名
// router.push({
// path: `${matchId.value}/singleSign`
// })
router.push({
const routeData = router.resolve({
name: `chooseCoach`,
query: {
matchId: matchId.value,
signType: matchData.value.signType
}
})
window.open(routeData.href, '_blank')
}
if(matchData.value.signType == '1'||(matchData.value.signType == '2' && user.utype == '2')){
router.push({
const routeData = router.resolve({
path: `${matchId.value}/teamSign`,
query: {
matchId: matchId.value,
......@@ -282,15 +290,16 @@ function choseSignType() {
signType: matchData.value.signType
}
})
window.open(routeData.href, '_blank')
}
// })
})
}
// 获取已报信息
function checkIsSign() {
var obj = {
cptId: matchId.value,
groupId: groupId.value
groupId: groupId.value || 0
}
return match.getMySignInfo(obj).then(res => {
if (res.data.type == '1') {
......
......@@ -32,7 +32,7 @@
</van-count-down>
<div>
<a class="btn-lineG mb20" @click="choseSignType" style="display: block;text-align: center;">Application</a>
<a class="btn-lineG mb20" @click="choseSignType" style="display: block;text-align: center;">Register</a>
</div>
</el-col>
</el-row>
......@@ -42,25 +42,25 @@
<el-col :lg="4">
<div class="funcBtn" @click="building">
<img src="@/assets/dance/btn04.png"/>
<h4>Booking</h4>
<h4>Ticket Booking</h4>
</div>
</el-col>
<el-col :lg="4">
<div class="funcBtn" @click="building">
<img src="@/assets/dance/btn01.png"/>
<h4>Hotel</h4>
<h4>Hotel Reservation</h4>
</div>
</el-col>
<el-col :lg="4">
<div class="funcBtn" @click="building">
<img src="@/assets/dance/btn02.png"/>
<h4>Taxi</h4>
<h4>Vehicle Reservation</h4>
</div>
</el-col>
<el-col :lg="4">
<div class="funcBtn" @click="building">
<img src="@/assets/dance/btn03.png"/>
<h4>Order food</h4>
<h4>Dining Reservation</h4>
</div>
</el-col>
<el-col :lg="4">
......@@ -72,7 +72,7 @@
<el-col :lg="4">
<div class="funcBtn" @click="building">
<img src="@/assets/dance/btn06.png"/>
<h4>Photo appointment</h4>
<h4>Photography Appointment</h4>
</div>
</el-col>
</el-row>
......@@ -111,7 +111,7 @@
</table>
</div>
<el-empty image="@/assets/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"/>
......@@ -141,15 +141,21 @@
</div>
</el-col>
</el-row>
<el-empty image="@/assets/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="@/assets/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" v-html="matchData.signKnow">
<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-icon :size="20">
<Download />
</el-icon>
{{ JSON.parse(matchData.signKnowUrl)[0]?.name }}
</el-link>
</div>
</div>
</el-card>
......@@ -157,7 +163,7 @@
</el-col>
<el-col :lg="6">
<match-news/>
<match-news :match-id="matchId"/>
</el-col>
</el-row>
......@@ -261,7 +267,7 @@ function choseSignType() {
return
}
//判断signType,如果是2且utype是2,则跳转到团体报名
// checkIsSign().then(() => {
checkIsSign().then(() => {
if (matchData.value.signType == '0'||(matchData.value.signType == '2' && user.utype == '1')) {
// 个人报名
router.push({
......@@ -282,17 +288,17 @@ function choseSignType() {
}
})
}
// })
})
}
// 获取已报信息
function checkIsSign() {
var obj = {
cptId: matchId.value,
groupId: groupId.value
groupId: groupId.value || 0
}
return match.getMySignInfo(obj).then(res => {
if (res.data.type == '1') {
ElMessage.error('已报名,不能重复报名')
ElMessage.error('Registered, cannot be duplicated')
return Promise.reject('rejected message')
}
})
......
......@@ -21,7 +21,7 @@
</div>
<div v-else class="pd20 skeletonBox">
<el-skeleton :rows="8"/>
<el-button type="primary" class="w200px btn-lineG" round>登录后查看详细报项信息</el-button>
<el-button type="primary" class="w200px btn-lineG" round @click="showLogin">登录后查看详细报项信息</el-button>
</div>
</el-card>
......@@ -30,26 +30,27 @@
<el-col :lg="12">
<div class="text-warning flex" v-if="form.auditStatus=='1'">
<img src="@/assets/img/ing.png">
报名信息审核中
{{ language==0?'报名信息审核中':'Registration Information under review' }}
</div>
<div class="text-success flex" v-if="form.auditStatus=='2'">
<img src="@/assets/img/r.png">
报名信息审核通过
{{ language==0?'报名信息审核通过':'Registration Information Approved' }}
</div>
<div class="text-danger flex" v-if="form.auditStatus=='3'">
<img src="@/assets/img/w.png">报名信息审核拒绝
<img src="@/assets/img/w.png">
{{ language==0?'报名信息审核拒绝':'Registration Information rejected' }}
</div>
</el-col>
<el-col :lg="12">
<div class="priceb" v-if="form.payStatus=='0'">待支付金额<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-if="form.payStatus=='1'">已支付金额<span class="price">¥{{ Number(totalFee).toFixed(2) }}</span></div>
<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>
</el-col>
</el-row>
</el-card>
<el-card class="mb60" v-if="form.auditStatus=='2'&&form.payStatus=='0'">
<div class="leftboderTT">{{ language==0?'选择支付方式':'Choose payment method' }}</div>
<div class="mt20">
<el-radio-group v-model="payType">
<el-radio-group v-model="payType" @change="changePaytype">
<!-- <el-radio label="1" border>-->
<!-- <svg t="1709003181386" class="icon" viewBox="0 0 3283 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31015" width="100" height="40"><path d="M1163.122759 94.631724H593.92A133.826207 133.826207 0 0 0 459.034483 228.457931v567.084138a133.473103 133.473103 0 0 0 133.826207 133.826207h570.262069a133.826207 133.826207 0 0 0 134.17931-133.826207v-5.296552s-217.864828-90.394483-328.033103-143.36c-73.445517 90.747586-168.783448 145.478621-267.652414 145.478621-167.017931 0-223.514483-145.831724-144.419311-241.875862a169.136552 169.136552 0 0 1 92.16-51.906207c70.62069-17.302069 184.32 10.946207 290.604138 45.903448A587.211034 587.211034 0 0 0 988.689655 429.373793h-328.73931v-32.838621h168.783448V337.213793h-204.446896v-33.191724h204.446896V219.630345a14.124138 14.124138 0 0 1 14.477241-14.477242h82.273104v98.868966h202.328276v33.191724h-202.328276v59.321379h165.252414a677.605517 677.605517 0 0 1-70.62069 176.551725c50.14069 18.008276 94.984828 35.310345 128.529655 46.256551a930.427586 930.427586 0 0 0 147.950345 42.725518V228.457931a133.826207 133.826207 0 0 0-133.473103-133.826207z" fill="#089fe8" p-id="31016"></path><path d="M663.481379 548.016552a162.78069 162.78069 0 0 0-81.566896 30.366896c-64.617931 55.790345-26.129655 158.190345 104.165517 158.190345 75.917241 0 151.481379-48.375172 211.862069-125.704827-85.804138-40.96-156.424828-70.267586-234.46069-62.852414zM2488.673103 225.28h239.757242v47.668966h85.804138V216.805517a22.951724 22.951724 0 0 0-21.892414-23.304827h-139.122759V149.009655h-89.335172v44.137931h-160.662069v79.80138h85.451034zM1882.394483 360.518621h67.442758v247.172413h73.798621V280.011034h-26.835862l55.437241-126.764137H1970.317241l-87.922758 207.271724zM2824.827586 596.391724l-26.835862-90.747586a13.771034 13.771034 0 0 0-13.064827-10.24h-70.62069l20.48 70.62069H2648.275862v-135.944828h164.546207v-32.132414H2648.275862v-63.55862h164.546207v-32.132414h-409.6v32.132414h164.546207v63.55862h-164.546207v32.132414h164.546207V564.965517h-164.546207v32.132414H2824.827586zM2158.521379 323.442759a16.595862 16.595862 0 0 0-15.183448-9.886897h-63.558621l49.434483 156.424828h75.564138z" fill="#089fe8" p-id="31017"></path><path d="M2319.889655 156.777931h-76.623448v80.154483h-188.557241v32.132414h188.557241v287.426206a13.064828 13.064828 0 0 1-12.358621 12.005518h-38.841379v31.77931h99.222069a30.013793 30.013793 0 0 0 28.601379-29.66069V269.064828h31.073104v-32.132414h-31.073104zM1871.448276 577.677241a913.831724 913.831724 0 0 1-168.783448-80.507586 357.34069 357.34069 0 0 0 141.241379-194.56H1694.896552V249.997241h170.195862v-32.83862H1694.896552V150.422069h-75.211035a15.536552 15.536552 0 0 0-15.183448 15.536552v51.2h-169.136552v32.83862h169.136552v52.612414h-141.241379v32.838621h284.248276a278.951724 278.951724 0 0 1-93.572414 127.470345 360.871724 360.871724 0 0 1-93.572414-94.984828H1483.034483a423.724138 423.724138 0 0 0 122.173793 130.295173 662.775172 662.775172 0 0 1-172.667586 77.329655v39.194482A773.296552 773.296552 0 0 0 1653.230345 529.655172 781.771034 781.771034 0 0 0 1871.448276 614.753103zM1553.655172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.188966-79.095172 26.482758 79.095172zM1796.237241 674.78069h-34.251034v190.675862h115.464827v-26.129655h-81.213793v-164.546207zM2003.155862 674.78069h34.251035v190.322758h-34.251035zM2250.328276 674.78069h-74.151724v190.675862h35.310345v-73.445518h39.900689a58.615172 58.615172 0 1 0 0-117.230344z m-2.118621 91.100689H2210.427586v-64.971034h37.782069a31.073103 31.073103 0 0 1 30.366897 32.485517 30.72 30.72 0 0 1-30.366897 32.485517zM2465.015172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.542069-79.095172 27.188966 79.095172zM2716.071724 755.994483l-38.135172-81.213793H2641.213793l57.555862 112.286896v78.388966h33.897931v-78.388966l0.353104-0.353103 57.555862-111.933793h-37.075862l-37.428966 81.213793z" fill="#089fe8" p-id="31018"></path></svg>-->
<!-- </el-radio>-->
......@@ -124,6 +125,18 @@
</el-radio>
</el-radio-group>
<div v-if="payType == '2'&&wePayCodeUrl">
<div class="payImgbox flexCenter">
<div>
<img width="260" class="border" :src="wePayCodeUrl"/>
<img class="mt20" src="@/assets/img/sm.png"/>
</div>
<div class="ml20">
<img height="360" src="@/assets/img/rr.jpg"/>
</div>
</div>
</div>
<div v-if="payType == '3'">
<table class="table-border table" cellpadding="0" cellspacing="0">
<tr>
......@@ -190,13 +203,23 @@
</div>
</div>
<div class="text-center mt20" v-else>
<el-button type="primary" round class="btn-lineG w200px">确定</el-button>
<el-button v-if="!hideconfirmbtn" type="primary" @click="goPay" round class="btn-lineG w200px">
{{ language==0?'确定':'Submit' }}</el-button>
</div>
</div>
</el-card>
<el-card class="mb60" v-if="form.payStatus == '3'">
<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>
</div>
</el-card>
</div>
<div class="box" v-if="errorBox">
<el-result
icon="error"
......@@ -238,8 +261,10 @@ const language = ref(cache.local.get('language') || 0)
const signInfoList = ref([])
const zuTableList = ref([])
const totalFee = ref('')
const wePayCodeUrl = ref('')
const form = ref({})
const errorBox = ref(false)
const hideconfirmbtn = ref(false)
console.log(route.query.orderId)
// 1763462073870237698
getData()
......@@ -247,7 +272,7 @@ if (useUserStore().user) {
isLogin.value = true
}
function getData() {
match.getMyOrderDetail({orderId:orderId.value}).then(res => {
return match.getMyOrderDetail({orderId:orderId.value}).then(res => {
totalFee.value = res.data.totalFee
form.value = res.data
matchId.value = form.value.cptId
......@@ -273,13 +298,57 @@ function getSignList() {
function goHome() {
router.push('/')
}
function changePaytype() {
hideconfirmbtn.value = false
if(handle) {
clearTimeout(handle)
handle=null
}
}
function goPay(){
if(payType.value=='2'){
match.createWePay({orderId:orderId.value}).then(res=>{
wePayCodeUrl.value = res.data
hideconfirmbtn.value = true
startforGetData()
})
}
if(payType.value=='4'){
match.createPalPay({orderId:orderId.value}).then(res=>{
if(res.data){
location.href=res.data
}
})
}
}
let handle;
function startforGetData() {
handle= setTimeout(()=>{
getData().then(()=>{
if( form.value.payTime){
if(handle) {
clearTimeout(handle)
handle=null
}
}else{
startforGetData()
}
})
},2000)
}
function showLogin(){
useUserStore().setReLogin()
}
</script>
<style scoped lang="scss">
.wePrice{font-size: 24px;font-weight: 400;}
.el-radio.is-bordered {
height: 40px;
}
.border{border: 1px solid #e1e1e1;}
.leftboderTT {
font-weight: 600;
font-size: 16px;
......@@ -366,4 +435,5 @@ function goHome() {
width: 200px;box-shadow: 0 0 1000px 500px rgba(255,255,255,0.5);
}
}
.payImgbox{text-align: center;border: 1px solid #fff;padding: 20px;}
</style>
......
<template>
<div>
<div class="box">
<el-card class="mb60 mt30">
<div class="text-center mt30">
<el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon>
<p class="text-success mb20">{{ language==0?'支付成功':'successful!' }}</p>
<el-button type="primary" class="btn-lineG mb60" @click="goBillDetail" round>{{ language==0?'返回订单详情':'Return order details' }}</el-button>
</div>
</el-card>
</div>
</div>
</template>
<script setup>
import {ref} from "vue";
import cache from "@/plugins/cache";
import {useRoute,useRouter} from "vue-router";
import {onMounted} from "@vue/runtime-core";
import {callbackPalPay} from "@/apiPc/match";
const route = useRoute()
const router = useRouter()
const language = ref(cache.local.get('language') || 0)
const orderId = ref(route.query.orderId)
onMounted(()=>{
callbackPalPay(route.query.orderId).then(res=>{
})
})
function goBillDetail() {
router.push({
name:`signPay`,
query: {
orderId: route.query.orderId
}
})
}
</script>
<style scoped lang="scss">
</style>
......@@ -489,7 +489,6 @@ const goPersonDetail = (m) => {
}
.bm-btm {
background: url("@/assets/v1/wt@2x.png") no-repeat center;
background-size: cover;
a {
......
......@@ -280,7 +280,6 @@ function goTrain() {
}
.pxPanel {
background: url("@/assets/v1/ss01.png") no-repeat center;
background-size: cover;margin-right: 10px;
a {
color: var(--el-color-golden);
......@@ -293,7 +292,6 @@ function goTrain() {
}
.jsPanel {margin-left: 10px;
background: url("@/assets/v1/ss02.png") no-repeat center;
background-size: cover;
a {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!