eea1f9b9 by 杨炀

no message

1 parent 982b56b7
This file is too large to display.
......@@ -7,7 +7,7 @@
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="/favicon.ico">
<title>体育舞蹈大赛</title>
<title>亚洲体育舞蹈大赛</title>
<!-- <script src="./browser.js"></script>-->
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
<style>
......
import {ref} from "vue";
export const nationList = [
{
"id": "01",
......@@ -231,7 +233,7 @@ export const nationList = [
"id": "58",
"name": "外国血统中国人士"
}
]
]
export const certificates = [
......@@ -247,15 +249,244 @@ export const certificates = [
value: '2',
label: '其他'
}
]
]
export const tagList = [{text: '运动员',value: '0'},{text: '教练',value: '1'},{text: '领队',value: '2'},{text: '其他',value: '3'}];
export const sexs = [{text: '女',value: '0'}, {text: '男',value: '1'}];
export const tagList = [{text: '运动员', value: '0'}, {text: '教练', value: '1'}, {
text: '领队',
value: '2'
}, {text: '其他', value: '3'}];
export const sexs = [{text: '女', value: '0'}, {text: '男', value: '1'}];
export const idcTypeList = [
{ value: '0', text: "身份证" },
{ value: '1', text: "护照" },
{ value: '2', text: "其他" },
{value: '0', text: "身份证"},
{value: '1', text: "护照"},
{value: '2', text: "其他"},
]
export const typeList = [{text: '俱乐部', value: '0'}, {text: '事业单位', value: '1'}, {
text: '道馆',
value: '2'
}, {text: '企业', value: '3'}, {text: '机关', value: '4'}, {text: '其他', value: '5'}];
export const comList = [{text: '国资企业(含央企和本地)', value: '0'}, {
text: '外商投资企业',
value: '1'
}, {text: '港澳台企业', value: '2'}, {text: '民营企业', value: '3'}, {text: '商会组织', value: '4'}, {
text: '其他',
value: '5'
}];
export const rankList = [
{
index: '1',
code: 'lt',
name: 'Evaldas Sodeika - Ieva Zukauskaite',
gj: '立陶宛',
en_gj: 'LTU',
jin: '1',
yin: '0',
tong: '0'
},
{
index: '2',
code: 'md',
name: 'Alexey Glukhov - Anastasia Glazunova',
gj: '摩尔多瓦共和国',
en_gj: 'MDA',
jin: '1',
yin: '0',
tong: '0'
},
{
index: '3',
code: 'de',
name: 'Marius-Andrei Balan - Khrystyna Moshenska',
gj: '德国',
en_gj: 'GER',
jin: '1',
yin: '0',
tong: '0'
},
{
index: '4',
code: 'de',
name: 'Tomas Fainsil - Violetta Fainsil',
gj: '德国',
en_gj: 'GER',
jin: '0',
yin: '2',
tong: '0'
},
{
index: '5',
code: 'fr',
name: 'Charles-Guillaume Schmitt - Elena Salikhova',
gj: '法国',
en_gj: 'FRA',
jin: '0',
yin: '1',
tong: '0'
},
{
index: '6',
code: 'ro',
name: 'Cojoc Rares - Matei Andreea',
gj: '罗马尼亚',
en_gj: 'ROU',
jin: '0',
yin: '0',
tong: '2'
},
{index: '7', code: 'cn', name: 'Yan Bangbang - Du Yujun', gj: '中国', en_gj: 'China', jin: '0', yin: '0', tong: '1'}
]
export const cjList = [
{
title: '2023 年 WDSF 世界标准舞锦标赛',
list: [
{
title: 'FINAL',
rows: [
{RANK: 1, COUPLE: 'Evaldas Sodeika - Ieva Zukauskaite', COUNTRY: 'LTU', START: '59'},
{RANK: 2, COUPLE: 'Tomas Fainsil - Violetta Fainsil', COUNTRY: 'GER', START: '25'},
{RANK: 3, COUPLE: 'Cojoc Rares - Matei Andreea', COUNTRY: 'ROU', START: '19'},
{RANK: 4, COUPLE: 'Dariusz Mycka - Madara Freiberga', COUNTRY: 'POL', START: '53'},
{RANK: 5, COUPLE: 'Vadim Shurin - Anastasia Meshkova', COUNTRY: 'LAT', START: '62'},
{RANK: 6, COUPLE: 'Yuan Shaoyang - Qi Chongxuan', COUNTRY: 'CHN', START: '71'}
]
}, {
title: '4 . ROUND',
row: [
{RANK: 7, COUPLE: 'Dmitri Kolobov - Signe Busk', COUNTRY: 'DEN', START: '40'},
{RANK: 8, COUPLE: 'Marco Bodini - Kristina Charitonovaite', COUNTRY: 'LTU', START: '14'},
{RANK: 9, COUPLE: 'Marius Ilciukas - Grigore Daria', COUNTRY: 'ROU', START: '34'},
{RANK: 10, COUPLE: 'Evgeny Nikitin - Valeriya Menyaylo', COUNTRY: 'AZE', START: '54'},
{RANK: 11, COUPLE: 'Mateusz Brzozowski - Justyna Mozdzonek', COUNTRY: 'POL', START: '16'},
{RANK: 12, COUPLE: 'Dusan Grula - Giada Cragnolini', COUNTRY: 'SVK', START: '29'},
]
}, {
title: '3 . ROUND',
row: [
{RANK: 13, COUPLE: '', COUNTRY: 'ISR', START: '42'},
{RANK: 14, COUPLE: '', COUNTRY: 'UKR', START: '69'},
{RANK: 15, COUPLE: '', COUNTRY: 'ITA', START: '27'},
{RANK: 16, COUPLE: '', COUNTRY: 'BUL', START: '67'},
{RANK: 17, COUPLE: '', COUNTRY: 'DEN', START: '70'},
{RANK: 18, COUPLE: '', COUNTRY: 'CHN', START: '49'},
{RANK: 19, COUPLE: '', COUNTRY: 'LAT', START: '21'},
{RANK: 20, COUPLE: '', COUNTRY: 'SUI', START: '20'},
{RANK: 21, COUPLE: '', COUNTRY: 'BUL', START: '22'},
{RANK: 22, COUPLE: '', COUNTRY: 'HUN', START: '63'},
{RANK: 23, COUPLE: '', COUNTRY: 'CZE', START: '15'},
{RANK: 24, COUPLE: '', COUNTRY: 'GER', START: '60'},
{RANK: 25, COUPLE: '', COUNTRY: 'CZE', START: '52'}
]
}, {
title: '2 . ROUND',
rows:[]
}, {
title: '1 . ROUND',
rows:[]
}
]
},
{
title: '2023 年 WDSF 世界体育舞蹈大奖赛(拉丁舞、标准舞)',
list: [{
title: 'FINAL',
rows: [
{
RANK: 1,
COUPLE: 'Alexey Glukhov - Anastasia Glazunova',
COUNTRY: 'MDA',
START: '131',
BASE: '400',
POINTS: '1040'
},
{
RANK: 2,
COUPLE: 'Tomas Fainsil - Violetta Fainsil',
COUNTRY: 'GER',
START: '123',
BASE: '380',
POINTS: '988'
},
{
RANK: 3,
COUPLE: 'Cojoc Rares - Matei Andreea',
COUNTRY: 'ROU',
START: '113',
BASE: '360',
POINTS: '936'
},
{
RANK: 4,
COUPLE: 'Dariusz Mycka - Madara Freiberga',
COUNTRY: 'POL',
START: '173',
BASE: '340',
POINTS: '884'
},
{
RANK: 5,
COUPLE: 'Vadim Shurin - Anastasia Meshkova',
COUNTRY: 'LAT',
START: '195',
BASE: '320',
POINTS: '832'
},
{
RANK: 6,
COUPLE: 'Dmitri Kolobov - Signe Busk',
COUNTRY: 'DEN',
START: '151',
BASE: '300',
POINTS: '780'
},
]
}, {
title: '5 . ROUND',
rows: []
}, {
title: '4 . ROUND',
rows: []
}, {
title: '3 . ROUND',
rows: []
}, {
title: '2 . ROUND',
rows: []
}, {
title: '1 . ROUND',
rows: []
}]
}, {
title: '2023 WDSF GrandSlam(Standard&Latin)',
list: [{
title: 'FINAL',
row: [
{
RANK: 1,
COUPLE: 'Marius-Andrei Balan - Khrystyna Moshenska',
COUNTRY: 'GER',
START: '303',
BASE: '400',
POINTS: '1080'
},
]
}, {
title: '5 . ROUND',
rows: []
}, {
title: '4 . ROUND',
rows: []
}, {
title: '3 . ROUND',
rows: []
}, {
title: '2 . ROUND',
rows: []
}, {
title: '1 . ROUND',
rows: []
}]
}
]
export const typeList = [{text: '俱乐部',value: '0'}, {text: '事业单位',value: '1'}, {text: '道馆',value: '2'}, {text: '企业',value: '3'}, {text: '机关',value: '4'}, {text: '其他',value: '5'}];
export const comList = [{text: '国资企业(含央企和本地)',value: '0'}, {text: '外商投资企业',value: '1'}, {text: '港澳台企业',value: '2'}, {text: '民营企业',value: '3'}, {text: '商会组织',value: '4'}, {text: '其他',value: '5'}];
......
......@@ -2,27 +2,42 @@
<div class="footAll">
<div class="box" style="max-width: 90%">
<el-row style="align-items: center;" v-if="language==0">
<el-col :lg="12" :md="12" :xs="24">
<el-col :lg="10" :md="12" :xs="24">
<ul>
<li>
<router-link to="/about"></router-link>
</li>
<li>
<a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:苏ICP备2023054420号-2</a>
<!-- <a class="ffoot" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010102004192">-->
<!-- <img src="@/assets/v1/beian.png">-->
<!-- 京公网安备 11010102004192号</a>-->
</li>
<li>邮编:214000</li>
<li>微信: 15606190026</li>
<li>QQ: 497118883</li>
<li>江苏省 无锡市太湖新城和风路与清舒交叉口东北100米</li>
</ul>
</el-col>
<el-col :lg="12" :md="12" :xs="24">
<el-col :lg="10" :md="12" :xs="24">
<ul style="text-align: right">
<li>地址:江苏省无锡市滨湖区体育中心A区201
<li>客服及报障电话:15606190026</li>
<li>客服及报障邮箱: info@jinsports.com</li>
<li>
<!-- <a class="ffoot" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010102004192">-->
<!-- <img src="@/assets/v1/beian.png">-->
<!-- 京公网安备 11010102004192号</a>-->
</li>
<li>邮编:214000</li>
</ul>
</el-col>
<el-col :lg="4" :md="12" :xs="24">
<div>
<img class="mauto" src="/img/wb2.jpg"/>
<p class="text-center mt10">微博关注</p>
</div>
</el-col>
<el-col :span="24">
<div class="text-center copyright">版权所有@无锡和畅赛事运营有限公司
&ensp;&ensp;
<a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:苏ICP备2023054420号-2</a></div>
</el-col>
</el-row>
<el-row style="align-items: center;" v-if="language==1">
<el-col :lg="12" :md="12" :xs="24">
<ul>
......@@ -54,13 +69,19 @@ const language = useStorage('language', 0)
</script>
<style lang="scss" scoped>
.footAll{background: #E0E3E5;;padding: 36px 0;
.copyright{ font-size: 14px;
opacity: 0.88;
color: #4C5359;}
.footAll{background: #E0E3E5;;padding: 36px 0 15px;
p{ font-size: 14px;
opacity: 0.88;
color: #4C5359;}
ul{list-style: none;
li{line-height: 30px;
font-size: 14px;
opacity: 0.88;
color: #4C5359;
a{margin-right: 15px;
a{margin-left: 15px;
&:hover{text-decoration: underline;}
}
}
......
......@@ -17,12 +17,12 @@
<el-menu-item index="/saiC">{{ language==0?'赛程安排':'COMPETITIONS' }}</el-menu-item>
<el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item>
<el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>
<el-sub-menu index="/about">
<template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>
<el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>
<el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>
<el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>
</el-sub-menu>
<!-- <el-sub-menu index="/about">-->
<!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>-->
<!-- <el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>-->
<!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>-->
<!-- <el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>-->
<!-- </el-sub-menu>-->
</el-menu>
<el-menu v-else class="enMenu"
router :default-active="activeIndex" :mode="mode" :ellipsis="true"
......@@ -35,12 +35,12 @@
<el-menu-item index="/saiC">{{ language==0?'赛程安排':'COMPETITIONS' }}</el-menu-item>
<el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item>
<el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>
<el-sub-menu index="/about">
<template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>
<el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>
<el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>
<el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>
</el-sub-menu>
<!-- <el-sub-menu index="/about">-->
<!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>-->
<!-- <el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>-->
<!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>-->
<!-- <el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>-->
<!-- </el-sub-menu>-->
</el-menu>
</div>
......
......@@ -99,6 +99,12 @@ export const constantRoutes = [
component: () => import('@/viewsPc/about/culture'),
name: 'culture',
meta: { title: '地方文化' }
},
{
path: 'leaderInfo/:id',
component: () => import('@/viewsPc/about/leaderInfo'),
name: 'leaderInfo',
meta: { title: '评委详情' }
}
]
},
......
......@@ -210,7 +210,7 @@ export const constantRoutes = [
children: [
{
path: 'index',
component: () => import('@/viewsPc/saiC/index_en'),
component: () => import('@/viewsPc/saiC/index'),
name: 'saiC',
meta: { title: 'COMPETITIONS' }
}
......
......@@ -6,17 +6,9 @@
<el-icon>
<HomeFilled />
</el-icon>
首页
{{ language==0?'首页':'Home' }}
</el-breadcrumb-item>
<el-breadcrumb-item v-if="from=='nationalTeam'" :to="{ name: 'nationalTeam',query: {activeName:'t1'} }">国家队队员</el-breadcrumb-item>
<el-breadcrumb-item v-else-if="from=='7'" to="/competition/coach/7">宣传员</el-breadcrumb-item>
<el-breadcrumb-item v-else-if="from=='2'" to="/competition/coach/2">裁判员</el-breadcrumb-item>
<el-breadcrumb-item v-else-if="from=='1'" to="/competition/coach/1">教练员</el-breadcrumb-item>
<el-breadcrumb-item v-else-if="from=='6'" to="/competition/coach/6">解说员</el-breadcrumb-item>
<el-breadcrumb-item v-else-if="from=='9'" to="/competition/coach/9">运动员</el-breadcrumb-item>
<el-breadcrumb-item v-else-if="from=='list'">人员列表</el-breadcrumb-item>
<el-breadcrumb-item v-else :to="{ name: 'about',params:{activeName:'first'} }">关于协会</el-breadcrumb-item>
<el-breadcrumb-item>人员信息</el-breadcrumb-item>
<el-breadcrumb-item>{{ language==0?'评委详情':'Judge Details' }}</el-breadcrumb-item>
</el-breadcrumb>
<el-card class="mt20">
<el-row class="mt20">
......@@ -78,7 +70,8 @@ import { ArrowRight } from '@element-plus/icons-vue'
import { onMounted, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { getPersonInfo } from '@/apiPc/webSite'
import {useStorage} from "@vueuse/core/index";
const language= useStorage('language',0)
let personId
const route = useRoute()
const person = ref({})
......
......@@ -14,13 +14,16 @@
<template #default="timeData">
<div class="block">{{ timeData.days }}
<span class="colon"></span>
</div>
</div>
<div class="block">{{ timeData.hours }}
<span class="colon"></span>
</div>
</div>
<div class="block">{{ timeData.minutes }}
<span class="colon"></span>
</div>
</div>
<div class="block">{{ timeData.seconds }}
<span class="colon"></span>
</div>
......@@ -42,7 +45,9 @@
<div class="bgbg">
<img src="@/assets/dance/text.png">
<a class="zn-btn">参赛指南
<el-icon><download /></el-icon>
<el-icon>
<download/>
</el-icon>
</a>
</div>
</el-col>
......@@ -50,9 +55,11 @@
<div class="itemBox">
<el-row :gutter="20">
<el-col :sm="12" :lg="8">
<div class="item"><img src="@/assets/dance/btn01.png">酒店预订</div></el-col>
<div class="item"><img src="@/assets/dance/btn01.png">酒店预订</div>
</el-col>
<el-col :sm="12" :lg="8">
<div class="item"><img src="@/assets/dance/btn02.png">车辆预约</div></el-col>
<div class="item"><img src="@/assets/dance/btn02.png">车辆预约</div>
</el-col>
<el-col :sm="12" :lg="8">
<div class="item"><img src="@/assets/dance/btn03.png">餐饮预约</div>
</el-col>
......@@ -60,9 +67,11 @@
<div class="item"><img src="@/assets/dance/btn04.png">票务预订</div>
</el-col>
<el-col :sm="12" :lg="8">
<div class="item"><img src="@/assets/dance/btn05.png">化妆预约</div></el-col>
<div class="item"><img src="@/assets/dance/btn05.png">化妆预约</div>
</el-col>
<el-col :sm="12" :lg="8">
<div class="item"><img src="@/assets/dance/btn06.png">拍照预约</div></el-col>
<div class="item"><img src="@/assets/dance/btn06.png">拍照预约</div>
</el-col>
</el-row>
</div>
......@@ -85,7 +94,7 @@
<template #date-cell="data">
<div v-if="data.data.day.slice(8,10)==22" class="primaryDate date">22</div>
<div v-else class="date">
{{ data.data.day.slice(8,10) }}
{{ data.data.day.slice(8, 10) }}
</div>
</template>
......@@ -120,7 +129,7 @@
<!--历史排名-->
<el-card :body-style="{'padding':'10px 20px 18px'}">
<el-table stripe :data="rankList">
<el-table-column label="名次" align="center" width="55" type="index">
<el-table-column label="名次" align="center" width="50" type="index">
<template #default="scope">
<span v-if="scope.row.index == 1" style="color:#F8A617">{{ scope.row.index }}</span>
<span v-else-if="scope.row.index == 2" style="color:#778B92">{{ scope.row.index }}</span>
......@@ -128,40 +137,42 @@
<span v-else>{{ scope.row.index }}</span>
</template>
</el-table-column>
<el-table-column label="国家/地区" prop="name">
<template #default="scope">
<div>
<span :class="`flag-icon flag-icon-${scope.row.code}`"></span>
{{ scope.row.gj }}</div>
{{ scope.row.gj }}
</div>
</template>
</el-table-column>
<el-table-column prop="score">
<template #header>
<img src="@/assets/dance/1.png">
</template>
<el-table-column label="队伍名称" align="center">
<template #default="scope">
<div class="text-warning">{{ scope.row.score }}</div>
<div class="text-primary esp">{{ scope.row.name }}</div>
</template>
</el-table-column>
<el-table-column prop="score">
<el-table-column width="60">
<template #header>
<img src="@/assets/dance/2.png">
<img class="mauto" src="@/assets/dance/1.png">
</template>
<template #default="scope">
<div class="text-blue">{{ scope.row.score }}</div>
<div class="text-warning text-center">{{ scope.row.jin }}</div>
</template>
</el-table-column>
<el-table-column prop="score">
<el-table-column width="60">
<template #header>
<img src="@/assets/dance/3.png">
<img class="mauto" src="@/assets/dance/2.png">
</template>
<template #default="scope">
<div class="text-primary">{{ scope.row.score }}</div>
<div class="text-blue text-center">{{ scope.row.yin }}</div>
</template>
</el-table-column>
<el-table-column label="总数" align="center">
<el-table-column width="60">
<template #header>
<img class="mauto" src="@/assets/dance/3.png">
</template>
<template #default="scope">
<div class="text-primary">{{ scope.row.score }}</div>
<div class="text-primary text-center">{{ scope.row.tong }}</div>
</template>
</el-table-column>
</el-table>
......@@ -193,7 +204,8 @@
拉丁舞 | 2023-12-12
</div>
<h3 class="esp">{{ n.name }}</h3>
<p class="esp_2">国标拉丁舞是体育竞技舞蹈,爆发力强的风格,技巧是它的特点,有很大的竞技体育舞蹈发挥空间,已经入亚运会正式比赛项目事...</p>
<p class="esp_2">
国标拉丁舞是体育竞技舞蹈,爆发力强的风格,技巧是它的特点,有很大的竞技体育舞蹈发挥空间,已经入亚运会正式比赛项目事...</p>
<a>查看详情</a>
</div>
</div>
......@@ -246,7 +258,7 @@
<img :src="fillImgUrl_webSite(n.picUrl)"></div>
<div class="info">
<div class="text-primary small-size">拉丁舞 | {{ n.belongTime }}</div>
<h2 class="esp_2">{{n.name}}</h2>
<h2 class="esp_2">{{ n.name }}</h2>
</div>
</div>
</el-col>
......@@ -263,10 +275,10 @@
</div>
<el-row :gutter="20">
<el-col :sm="12" :xl="4" :xs="12" :lg="4" :md="8" v-for="n in personList" :key="n.name">
<div class="teacher">
<div class="teacher" @click="goLeaderInfo">
<div class="imgbox"><img :src="n.src"></div>
<h3 class="esp">{{ n.name }}</h3>
<p class="esp text-primary">{{n.pp}}</p>
<p class="esp text-primary">{{ n.pp }}</p>
</div>
</el-col>
</el-row>
......@@ -281,13 +293,15 @@
<a class="more" style="filter: brightness(10)">MORE</a>
</div>
<div class="aboutBox">
<div class="content">中国体育舞蹈联合会成立于1991年,其前身为“中国体育舞蹈运动协会”。2002年与文化部所属“中国业余舞蹈竞技协会”实现联合,形成“中国体育舞蹈联合会”,并成为世界体育舞蹈联合会正式会员(该组织于1997年获得国际奥委会正式承认)。2018年从国家体育总局社体中心“五分离”脱钩,目前霹雳舞项目与总局社体中心联合进行奥运备战。
<div class="content">
中国体育舞蹈联合会成立于1991年,其前身为“中国体育舞蹈运动协会”。2002年与文化部所属“中国业余舞蹈竞技协会”实现联合,形成“中国体育舞蹈联合会”,并成为世界体育舞蹈联合会正式会员(该组织于1997年获得国际奥委会正式承认)。2018年从国家体育总局社体中心“五分离”脱钩,目前霹雳舞项目与总局社体中心联合进行奥运备战。
协会成立30余年来,在竞技水平上不断突破,已成为亚洲领
军力量并进入世界一流;在项目普及上不断夯实,已形成8千万爱好者群体;在产业发展上不断耕耘,坚持推动民族品牌国际化,年消费规模500亿左右;在体育外交上不断拓展,已成为亚洲体育舞蹈联合会主席国,并通过长期坚持举办国际重大赛事活动扩大影响;在体育文化上不断丰富,通过规范技术及礼仪标准,实现了体育舞蹈在中小学的开展,通过与民族舞蹈的结合实现中西文化的交融。
<div class="shadowbox" />
<div class="shadowbox"/>
</div>
<div class="mt30 text-center">
<a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img style="filter: brightness(2);height: 8px" src="@/assets/v1/more.png"/></a>
<a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img
style="filter: brightness(2);height: 8px" src="@/assets/v1/more.png"/></a>
</div>
</div>
......@@ -347,22 +361,25 @@
<div v-if="showgg" class="fixed_gg">
<!--天气-->
<el-icon @click="showgg=false"><circle-close /></el-icon>
<el-icon @click="showgg=false">
<circle-close/>
</el-icon>
<img src="@/assets/dance/weather.png">
</div>
</div>
</template>
<script setup>
import { ref, nextTick, onMounted, watch } from 'vue'
import { getCurrentInstance } from '@vue/runtime-core'
import { getHomePage, getNewsListById, getNewsList } from '@/apiPc/webSite'
import { useRouter } from 'vue-router'
import {ref, nextTick, onMounted, watch} from 'vue'
import {getCurrentInstance} from '@vue/runtime-core'
import {getHomePage, getNewsListById, getNewsList} from '@/apiPc/webSite'
import {useRouter} from 'vue-router'
import {rankList} from '@/assets/js/data'
import _ from 'lodash'
import { getHotActivity } from '@/apiPc/common'
import { Swiper, SwiperSlide } from 'swiper/vue'
import { Autoplay, Navigation } from 'swiper'
import {getHotActivity} from '@/apiPc/common'
import {Swiper, SwiperSlide} from 'swiper/vue'
import {Autoplay, Navigation} from 'swiper'
import 'swiper/css'
import { dayjs } from 'element-plus'
import {dayjs} from 'element-plus'
import r01 from '@/assets/dance/r01.png'
import r02 from '@/assets/dance/r02.png'
import r03 from '@/assets/dance/r03.png'
......@@ -377,29 +394,20 @@ const navigationPic = ref({
prevEl: '.picprev'
})
const router = useRouter()
const { proxy } = getCurrentInstance()
const {proxy} = getCurrentInstance()
const bannerVideo = ref(null)
const isPlay = ref(false)
const canPrev = ref(false)
const canNext = ref(false)
const activeRankName = ref(0)
const time = ref(0)
const rankList = ref([
{ index: '1', code: 'cn', score: '170',gj:'中国' },
{ index: '2', code: 'us', score: '170' ,gj:'中国'},
{ index: '3', code: 'de', score: '170',gj:'中国' },
{ index: '4', code: 'eg', score: '170',gj:'中国' },
{ index: '5', code: 'ly', score: '170' ,gj:'中国'},
{ index: '6', code: 'tn', score: '170' ,gj:'中国'},
{ index: '7', code: 'gw', score: '170' ,gj:'中国'}
])
const personList = ref([
{ name: '张晋', pp:'欧洲舞团团长、艺术总监',src:r01 },
{ name: '王晓敏', pp:'欧洲舞团团长、艺术总监',src:r02 },
{ name: '徐徐', pp:'欧洲舞团团长、艺术总监',src:r03 },
{ name: '汪莉莉', pp:'欧洲舞团团长、艺术总监',src:r04},
{ name: '蒋云澜', pp:'欧洲舞团团长、艺术总监',src:r05 },
{ name: '钱一帆', pp:'欧洲舞团团长、艺术总监',src:r06 }
{name: '张晋', pp: '欧洲舞团团长、艺术总监', src: r01},
{name: '王晓敏', pp: '欧洲舞团团长、艺术总监', src: r02},
{name: '徐徐', pp: '欧洲舞团团长、艺术总监', src: r03},
{name: '汪莉莉', pp: '欧洲舞团团长、艺术总监', src: r04},
{name: '蒋云澜', pp: '欧洲舞团团长、艺术总监', src: r05},
{name: '钱一帆', pp: '欧洲舞团团长、艺术总监', src: r06}
])
const activeNews = ref(0)
const banners = ref([])
......@@ -416,7 +424,7 @@ const maList = ref([])
const loading = ref(false)
const picList = ref([])
const calendarValue = ref(dayjs('2024-07-22').toDate())
const calendarRange = ref([dayjs('2024-07-21').toDate(),dayjs('2024-07-27').toDate()])
const calendarRange = ref([dayjs('2024-07-21').toDate(), dayjs('2024-07-27').toDate()])
const showgg = ref(true)
onMounted(() => {
init()
......@@ -426,30 +434,36 @@ const init = () => {
var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
time.value = dayjs('2024-07-22 14:00:00').diff(today, 'millisecond')
getNewsListById(
{ pageSize: 4,
{
pageSize: 4,
pageNum: 1,
sortId: '10000006' }
sortId: '10000006'
}
).then(res => {
livelist.value = res.rows
})
getNewsListById(
{ pageSize: 5,
{
pageSize: 5,
pageNum: 1,
sortId: '10000007' }
sortId: '10000007'
}
).then(res => {
picList.value = res.rows
})
getNewsList(
{ pageSize: 3,
{
pageSize: 3,
pageNum: 1,
language:1,
code: '1000' }
language: 1,
code: '1000'
}
).then(res => {
newest2.value = res.rows
})
match.getMaList().then((res) => {
maList.value = res.rows
for(let n of maList.value){
for (let n of maList.value) {
var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
n.time = dayjs(n.signEndTime).diff(today, 'millisecond')
}
......@@ -469,6 +483,11 @@ const goDetail = (n) => {
})
}
}
const goLeaderInfo = (n) => {
router.push({
path: `/about/leaderInfo/${n.id || 0}`
})
}
const goList = (query, name) => {
query.sortName = name
router.push({
......@@ -485,29 +504,60 @@ const goNews = () => {
<style scoped lang="scss">
.zn-bg{background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC);
border-radius: 15px;}
.zn-Box{background-size: contain;position: relative;overflow: hidden;
.bbbg{position: absolute;width: 100%;height: 100%;object-fit: cover;}
.bgbg{
.zn-bg {
background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC);
border-radius: 15px;
}
.zn-Box {
background-size: contain;
position: relative;
overflow: hidden;
.bbbg {
position: absolute;
width: 100%;
height: 100%;
object-fit: cover;
}
.bgbg {
padding: 5%;
img{margin: 5% 0}
img {
margin: 5% 0
}
.itemBox{
}
.itemBox {
padding: 20px 40px;
}
border-radius: 15px;
.zn-btn{background: #FFFFFF;
.zn-btn {
background: #FFFFFF;
font-size: 18px;
color: #453DEA;
border-radius: 23px;padding: 10px 20px;display: inline-flex;align-items: center;}
.item{box-shadow: 0px 0px 21px 0px rgba(41,23,101,0.14);margin: 10px 0;
display: flex;align-items: center;
border-radius: 23px;
padding: 10px 20px;
display: inline-flex;
align-items: center;
}
.item {
box-shadow: 0px 0px 21px 0px rgba(41, 23, 101, 0.14);
margin: 10px 0;
display: flex;
align-items: center;
font-size: 22px;
background:url("@/assets/dance/btn_bg.png") no-repeat left #FFFFFF;
background: url("@/assets/dance/btn_bg.png") no-repeat left #FFFFFF;
background-size: 100% 100%;
border-radius: 15px;
img{margin: 0 5%;}
img {
margin: 0 5%;
}
}
}
......@@ -523,9 +573,14 @@ const goNews = () => {
.bannerItem {
height: 450px;
background: #000;position: relative;
.banner-count{position: absolute;padding: 20px 40px;
font-size: 20px;align-items: center;
background: #000;
position: relative;
.banner-count {
position: absolute;
padding: 20px 40px;
font-size: 20px;
align-items: center;
overflow: hidden;
background: url("@/assets/dance/time_bg.png") no-repeat center;
background-size: 100% 100%;
......@@ -535,18 +590,36 @@ const goNews = () => {
//border-image-width:4px;
//border-image-outset:4px;
//background: rgba(0,0,0,0.3);
bottom: 40%;display: flex;flex-wrap: nowrap;
bottom: 40%;
display: flex;
flex-wrap: nowrap;
right: 5%;
color: #fff;
.van-count-down{display: flex;color: #fff;margin: 0 0 0 20px;
.van-count-down {
display: flex;
color: #fff;
margin: 0 0 0 20px;
width: 360px;
font-size: 41px;}
.block{ color: #fff;text-align: center;width: 3em;
font-size: 41px;
font-family: DIN Alternate;}
.colon{ color: #fff;display: block;margin: 20px 0 0;
font-size: 20px;}
}
.block {
color: #fff;
text-align: center;
width: 3em;
font-size: 41px;
font-family: DIN Alternate;
}
.colon {
color: #fff;
display: block;
margin: 20px 0 0;
font-size: 20px;
}
}
.box {
position: absolute;
height: 100%;
......@@ -575,7 +648,8 @@ const goNews = () => {
}
.banner {
position: relative;margin:0 0 30px;
position: relative;
margin: 0 0 30px;
:deep(.el-carousel__arrow) {
border-radius: 0;
......@@ -603,41 +677,121 @@ const goNews = () => {
background-size: contain
}
}
.el-calendar{--el-calendar-border:none;--el-calendar-cell-width:40px;text-align:center;
--el-text-color-regular:#8E8D94;
:deep(.el-calendar__header){justify-content: center;padding: 0 0 10px}
:deep(.el-calendar__body){border: 1px solid #F0F0F0;padding: 0}
:deep(.el-calendar-table .el-calendar-day){padding: 1px;}
:deep(.el-calendar-table td.is-selected){background: transparent;}
:deep(.el-calendar__button-group){display: none;}
:deep(.el-calendar-table thead th){padding: 5px 0 0}
.primaryDate{color: #fff;
background: linear-gradient(90deg, #8623FC, #453DEA);}
.date{ margin:auto;border-radius: 50%;width: 30px;height: 30px;line-height: 30px;
.el-calendar {
--el-calendar-border: none;
--el-calendar-cell-width: 40px;
text-align: center;
--el-text-color-regular: #8E8D94;
:deep(.el-calendar__header) {
justify-content: center;
padding: 0 0 10px
}
:deep(.el-calendar__body) {
border: 1px solid #F0F0F0;
padding: 0
}
:deep(.el-calendar-table .el-calendar-day) {
padding: 1px;
}
:deep(.el-calendar-table td.is-selected) {
background: transparent;
}
:deep(.el-calendar__button-group) {
display: none;
}
:deep(.el-calendar-table thead th) {
padding: 5px 0 0
}
.primaryDate {
color: #fff;
background: linear-gradient(90deg, #8623FC, #453DEA);
}
.date {
margin: auto;
border-radius: 50%;
width: 30px;
height: 30px;
line-height: 30px;
font-weight: bold;
}
}
.calendarList{border: 1px solid #F0F0F0;padding:12px 20px;overflow: auto;height: 225px;
ul{
li{background: #F6F9FE;margin:7px 0 7px 20px;position: relative;padding: 13px;
.calendarList {
border: 1px solid #F0F0F0;
padding: 12px 20px;
overflow: auto;
height: 225px;
ul {
li {
background: #F6F9FE;
margin: 7px 0 7px 20px;
position: relative;
padding: 13px;
border-radius: 10px;
font-weight: 500;
font-size: 15px;
label{color: #453DEA;margin-right: 15px;
&::before{content: '';background:#fff;left: -17px;top: 0px;bottom: 0;margin: auto;
border-radius: 50%;width: 2px;height: 2px;position: absolute;z-index: 1}
label {
color: #453DEA;
margin-right: 15px;
&::before {
content: '';
background: #fff;
left: -17px;
top: 0px;
bottom: 0;
margin: auto;
border-radius: 50%;
width: 2px;
height: 2px;
position: absolute;
z-index: 1
}
}
li::before{content: '';background: linear-gradient(0deg, #8623FC, #453DEA);
border-radius: 50%;width: 8px;height: 8px;position: absolute;
left: -20px;top: 0;bottom: 0;margin: auto;z-index: 1;
}
li::after{content: ''; left: -16px;width: 1px;height: 100%;
background: #EBEBEB; position: absolute;top: 20px}
li:hover{color: #fff;
li::before {
content: '';
background: linear-gradient(0deg, #8623FC, #453DEA);
border-radius: 50%;
width: 8px;
height: 8px;
position: absolute;
left: -20px;
top: 0;
bottom: 0;
margin: auto;
z-index: 1;
}
li::after {
content: '';
left: -16px;
width: 1px;
height: 100%;
background: #EBEBEB;
position: absolute;
top: 20px
}
li:hover {
color: #fff;
background: linear-gradient(-90deg, #8623FC, #453DEA);
label{color: #fff;}
label {
color: #fff;
}
}
}
}
......@@ -654,14 +808,25 @@ const goNews = () => {
.fixed_gg {
position: fixed;right: 0;
position: fixed;
right: 0;
top: 25%;
z-index: 10;
width: 200px;
.el-icon{font-size: 0;color: #fff;
transition: font-size 0.2s;cursor: pointer;
position: absolute;right: 0;}
&:hover .el-icon{font-size: 26px;}
.el-icon {
font-size: 0;
color: #fff;
transition: font-size 0.2s;
cursor: pointer;
position: absolute;
right: 0;
}
&:hover .el-icon {
font-size: 26px;
}
img {
width: 100%;
}
......@@ -682,90 +847,253 @@ const goNews = () => {
}
}
.teacher{height: 330px;background: #fff;
position: relative;border-radius: 10px;overflow: hidden;
.imgbox{background: linear-gradient(0,#C8AAFC,#fff)}
img{height: 270px;width: 100%;object-fit: cover;}
h3{color: #fff;background: url("@/assets/dance/name_bg.png") no-repeat center;
background-size:auto 100%;text-align: center;height: 30px;line-height: 30px;
font-size: 18px;position: absolute;width: 100%;bottom: 30px;}
p{text-align: center;margin: 25px 0 0;
font-size: 14px;}
.teacher {
height: 330px;
background: #fff;
position: relative;
border-radius: 10px;
overflow: hidden;
.imgbox {
background: linear-gradient(0, #C8AAFC, #fff)
}
img {
height: 270px;
width: 100%;
object-fit: cover;
}
h3 {
color: #fff;
background: url("@/assets/dance/name_bg.png") no-repeat center;
background-size: auto 100%;
text-align: center;
height: 30px;
line-height: 30px;
font-size: 18px;
position: absolute;
width: 100%;
bottom: 30px;
}
p {
text-align: center;
margin: 25px 0 0;
font-size: 14px;
}
}
.aboutBox{background: url("@/assets/dance/about_bg.png") no-repeat center;height: 375px;
background-size: cover;padding: 40px 60px; position: relative;
.content{font-size: 18px;line-height: 2.2;height: 240px;overflow: hidden;
text-align: center;text-indent: 2em;}
.shadowbox{position: absolute;left: 0;bottom: 90px;height: 100px;width: 100%;
background: linear-gradient(0deg,rgba(255,255,255,1),rgba(255,255,255,0));
}
.btn-lineG{}
.aboutBox {
background: url("@/assets/dance/about_bg.png") no-repeat center;
height: 375px;
background-size: cover;
padding: 40px 60px;
position: relative;
.content {
font-size: 18px;
line-height: 2.2;
height: 240px;
overflow: hidden;
text-align: center;
text-indent: 2em;
}
.shadowbox {
position: absolute;
left: 0;
bottom: 90px;
height: 100px;
width: 100%;
background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
}
.btn-lineG {
}
}
.mapBox{background: url("@/assets/dance/map.png") no-repeat center;height: 375px;
background-size: cover;padding: 1px;position: relative;display: flex;
.content{background: #fff;width: 60%;left: 40px;padding: 30px;
position: absolute;height: 90%;top: 0;bottom: 0;margin: auto;
}
div{padding-left: 60px;}
.phone{background: url("@/assets/dance/map01.png") no-repeat left;background-size: 30px;}
.address{background: url("@/assets/dance/map02.png") no-repeat left;background-size: 30px;
margin:50px 0;
}
.email{background: url("@/assets/dance/map03.png") no-repeat left;background-size: 30px;}
h4{margin: 0;
.mapBox {
background: url("@/assets/dance/map.png") no-repeat center;
height: 375px;
background-size: cover;
padding: 1px;
position: relative;
display: flex;
.content {
background: #fff;
width: 60%;
left: 40px;
padding: 30px;
position: absolute;
height: 90%;
top: 0;
bottom: 0;
margin: auto;
}
div {
padding-left: 60px;
}
.phone {
background: url("@/assets/dance/map01.png") no-repeat left;
background-size: 30px;
}
.address {
background: url("@/assets/dance/map02.png") no-repeat left;
background-size: 30px;
margin: 50px 0;
}
.email {
background: url("@/assets/dance/map03.png") no-repeat left;
background-size: 30px;
}
h4 {
margin: 0;
font-size: 16px;
color: #AAAAAA;}
p{margin: 13px 0 0;}
color: #AAAAAA;
}
p {
margin: 13px 0 0;
}
}
.logobox{background: #fff;height: 180px;border-radius: 10px;margin: 0 0 30px;
img{width: 100%}
.logobox {
background: #fff;
height: 180px;
border-radius: 10px;
margin: 0 0 30px;
img {
width: 100%
}
}
.swiperPic{background: #F3F1FE;position: relative; height: 100%;
.swiperPic {
background: #F3F1FE;
position: relative;
height: 100%;
padding: 20px 45px;
.picprev{position: absolute; left: 5px;top: 0;bottom:0;margin: auto;height: 33px;
.picprev {
position: absolute;
left: 5px;
top: 0;
bottom: 0;
margin: auto;
height: 33px;
cursor: pointer;
&:hover{filter:brightness(2)}
&:hover {
filter: brightness(2)
}
}
.picnext{position: absolute;right: 5px;top: 0;bottom:0;margin: auto;height: 33px;
.picnext {
position: absolute;
right: 5px;
top: 0;
bottom: 0;
margin: auto;
height: 33px;
cursor: pointer;
&:hover{filter:brightness(2)}}
&:hover {
filter: brightness(2)
}
}
}
@media (max-width: 1200px) {
.teacher{height: 460px;margin: 0 0 20px;
img{height: 400px}
.teacher {
height: 460px;
margin: 0 0 20px;
img {
height: 400px
}
}
}
@media (max-width: 800px) {
.box{width: 94%}
.calendarList{padding: 0;
ul{
li{margin: 10px}
.box {
width: 94%
}
.calendarList {
padding: 0;
ul {
li {
margin: 10px
}
}
}
.aboutBox {
padding: 20px 30px;
}
.aboutBox{padding: 20px 30px;}
.indexTitle{margin: 30px 0 20px}
.teacher{height: 320px;margin: 0 0 20px;
img{height: 260px}
.indexTitle {
margin: 30px 0 20px
}
.teacher {
height: 320px;
margin: 0 0 20px;
img {
height: 260px
}
}
.activeItem {
margin: 0 0 20px;
}
.mapBox {
div {
padding-left: 40px;
}
.content {
width: 80%;
left: 10%;
padding: 10px 20px 0 20px;
}
.address {
margin: 30px 0;
}
p {
text-align: left;
word-break: break-all;
}
.activeItem{margin: 0 0 20px;}
.mapBox{
div{padding-left: 40px;}
.content{ width: 80%;left: 10%;padding:10px 20px 0 20px;}
.address{margin: 30px 0;}
p{text-align: left;word-break: break-all;}
}
.fixed_gg {
display: none;
}
.bannerItem .banner-count{flex-direction: column;
transform: scale(0.8); left: 0;
.bannerItem .banner-count {
flex-direction: column;
transform: scale(0.8);
left: 0;
right: 0;
.van-count-down{margin: 30px 0 0;}
.van-count-down {
margin: 30px 0 0;
}
}
.bgbg {
text-align: center;
img {
max-width: 100%;
}
h1 {
text-align: center
}
.bgbg{ text-align: center;
img{max-width:100%; }
h1{text-align: center}
}
}
</style>
......
......@@ -140,44 +140,44 @@
<span v-else>{{ scope.row.index }}</span>
</template>
</el-table-column>
<el-table-column label="Country/Region" prop="name" min-width="100" align="center">
<el-table-column label="Country/Region">
<template #default="scope">
<div>
<span :class="`flag-icon flag-icon-${scope.row.code}`"></span>
{{ scope.row.gj }}</div>
{{ scope.row.en_gj }}
</div>
</template>
</el-table-column>
<el-table-column prop="score">
<template #header>
<img src="@/assets/dance/1.png">
</template>
<el-table-column label="COUPLE" align="center">
<template #default="scope">
<div class="text-warning">{{ scope.row.score }}</div>
<div class="text-primary esp">{{ scope.row.name }}</div>
</template>
</el-table-column>
<el-table-column prop="score">
<el-table-column width="50">
<template #header>
<img src="@/assets/dance/2.png">
<img class="mauto" src="@/assets/dance/1.png">
</template>
<template #default="scope">
<div class="text-blue">{{ scope.row.score }}</div>
<div class="text-warning text-center">{{ scope.row.jin }}</div>
</template>
</el-table-column>
<el-table-column prop="score">
<el-table-column width="50">
<template #header>
<img src="@/assets/dance/3.png">
<img class="mauto" src="@/assets/dance/2.png">
</template>
<template #default="scope">
<div class="text-primary">{{ scope.row.score }}</div>
<div class="text-blue text-center">{{ scope.row.yin }}</div>
</template>
</el-table-column>
<el-table-column label="Total" align="center">
<el-table-column width="50">
<template #header>
<img class="mauto" src="@/assets/dance/3.png">
</template>
<template #default="scope">
<div class="text-primary">{{ scope.row.score }}</div>
<div class="text-primary text-center">{{ scope.row.tong }}</div>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
......@@ -375,7 +375,6 @@ import { getCurrentInstance } from '@vue/runtime-core'
import { getNewsListById, getNewsList } from '@/apiPc/webSite'
import { useRouter } from 'vue-router'
import _ from 'lodash'
import { getHotActivity } from '@/apiPc/common'
import { Swiper, SwiperSlide } from 'swiper/vue'
import { Autoplay, Navigation } from 'swiper'
import 'swiper/css'
......@@ -387,7 +386,7 @@ import r04 from '@/assets/dance/r04.png'
import r05 from '@/assets/dance/r05.png'
import r06 from '@/assets/dance/r06.png'
import * as match from "@/apiPc/match";
import {rankList} from '@/assets/js/data'
const modules = [Autoplay, Navigation]
const navigationPic = ref({
nextEl: '.picnext',
......@@ -396,15 +395,6 @@ const navigationPic = ref({
const router = useRouter()
const { proxy } = getCurrentInstance()
const time = ref(0)
const rankList = ref([
{ index: '1', code: 'cn', score: '170',gj:'China' },
{ index: '2', code: 'us', score: '170' ,gj:'China'},
{ index: '3', code: 'de', score: '170',gj:'China' },
{ index: '4', code: 'eg', score: '170',gj:'China' },
{ index: '5', code: 'ly', score: '170' ,gj:'China'},
{ index: '6', code: 'tn', score: '170' ,gj:'China'},
{ index: '7', code: 'gw', score: '170' ,gj:'China'}
])
const personList = ref([
{ name: 'Zhang Jin', pp: 'artistic director', src: r01 },
{ name: 'Wang min', pp: 'regimental commander', src: r02 },
......
......@@ -4,7 +4,8 @@
destroy-on-close :show-close="showClose" :close-on-click-modal="false" @close="close"
>
<el-form ref="loginRef" :model="loginForm" :rules="language==0?loginRules:loginRules_en" class="login-form" v-if="loginStatus==0">
<el-form ref="loginRef" :model="loginForm" :rules="language==0?loginRules:loginRules_en" class="login-form"
v-if="loginStatus==0">
<el-form-item prop="username">
<el-input
......@@ -53,15 +54,16 @@
style="width:100%;"
@click.prevent="handleLogin"
>
<span v-if="!loading">{{language==0?'登 录':'Login'}}</span>
<span v-else>{{language==0?'登 录 中...':'Logging in'}}</span>
<span v-if="!loading">{{ language == 0 ? '登 录' : 'Login' }}</span>
<span v-else>{{ language == 0 ? '登 录 中...' : 'Logging in' }}</span>
</el-button>
</el-form-item>
<el-form-item>
<!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>-->
<!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>-->
<div style="display: flex;justify-content: space-between;width: 100%;">
<a class="text-primary" @click="showChangePassword">{{language==0?'忘记密码':'Retrieve password'}}?</a>
<a @click="showRegister" class="text-primary">{{language==0?'账号注册':'Register'}}></a>
<a class="text-primary"
@click="showChangePassword">{{ language == 0 ? '忘记密码' : 'Retrieve password' }}?</a>
<a @click="showRegister" class="text-primary">{{ language == 0 ? '账号注册' : 'Register' }}></a>
</div>
</el-form-item>
<el-form-item>
......@@ -80,21 +82,22 @@
<div v-if="loginStatus==1">
<div class="rItem r1" @click="goRegister(1)">
<h3>{{language==0?'机构用户':'Organization'}}</h3>
<h3>{{ language == 0 ? '机构用户' : 'Organization' }}</h3>
</div>
<div class="rItem r2" @click="goRegister(0)" :style="language==0?'filter:grayscale(1)':''">
<h3>{{language==0?'个人用户':'Individual'}}</h3>
<h3>{{ language == 0 ? '个人用户' : 'Individual' }}</h3>
</div>
</div>
<div v-if="loginStatus==2">
<el-form ref="changePasswordRef" :model="changePasswordForm" :rules="language==0?changePasswordRules:changePasswordRules_en" class="login-form">
<el-form ref="changePasswordRef" :model="changePasswordForm"
:rules="language==0?changePasswordRules:changePasswordRules_en" class="login-form">
<el-form-item prop="username">
<el-input
v-model.trim="changePasswordForm.username"
size="large"
auto-complete="off" @change="changePasswordFormUsername"
:placeholder="language==0?'注册时使用的邮箱/手机号码':'E-mail/ Phone number'"
:placeholder="language==0?'注册时使用的邮箱':'E-mail'"
>
</el-input>
......@@ -104,24 +107,24 @@
v-model.trim="changePasswordForm.code"
size="large"
auto-complete="off"
:placeholder="language==0?'邮箱/手机验证码':'Code'"
:placeholder="language==0?'验证码':'Code'"
@keyup.enter="handleLogin"
>
<template #append>
<el-button type="primary" plain style="width: 110px" @click="sendsmsMsg">
<count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
{{ totalSeconds }} {{ language==0?'秒':'s' }}
{{ totalSeconds }} {{ language == 0 ? '秒' : 's' }}
</count-down>
<span v-else>
<!-- Send verification code-->
{{language==0?'发送验证码':'Send'}}
{{ language == 0 ? '发送验证码' : 'Send' }}
</span>
</el-button>
</template>
</el-input>
<!-- <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">-->
<!-- <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">-->
<Vcode :zIndex="9999" :show="isShow" @success="codeSuccess"></Vcode>
<!-- </div>-->
<!-- </div>-->
</el-form-item>
<el-form-item prop="password">
......@@ -170,16 +173,18 @@ import {forgetPassword, getCodeImg} from '@/api/login'
import * as match from '@/apiPc/match'
import Cookies from 'js-cookie'
import useUserStore from '@/store/modules/user'
const language= useStorage('language',0)
import { useRouter } from 'vue-router'
import { getCurrentInstance, ref, watch } from 'vue'
import { ElMessage,ElMessageBox} from 'element-plus'
const language = useStorage('language', 0)
import {useRouter} from 'vue-router'
import {getCurrentInstance, ref, watch} from 'vue'
import {ElMessage, ElMessageBox} from 'element-plus'
import cache from "@/plugins/cache";
import {useStorage} from "@vueuse/core/index";
const emit = defineEmits(['submitForm'])
const userStore = useUserStore()
const router = useRouter()
const { proxy } = getCurrentInstance()
const {proxy} = getCurrentInstance()
const loginForm = ref({
username: '',
password: '',
......@@ -189,26 +194,26 @@ const loginForm = ref({
})
const countDown = ref(null)
const loginRules = {
username: [{ required: true, trigger: 'change', message: '请输入您的会员号' }],
password: [{ required: true, trigger: 'change', message: '请输入您账号密码' }],
code: [{ required: true, trigger: 'change', message: '请输入验证码' }]
username: [{required: true, trigger: 'change', message: '请输入您的会员号'}],
password: [{required: true, trigger: 'change', message: '请输入您账号密码'}],
code: [{required: true, trigger: 'change', message: '请输入验证码'}]
}
const changePasswordRules = {
username: [{ required: true, trigger: 'change', message: '请输入您的账号' }],
password: [{ required: true, trigger: 'change', message: '请输入您的密码' }],
confirmPassword: [{ required: true, trigger: 'change', message: '请再次输入您的密码' }],
code: [{ required: true, trigger: 'change', message: '请输入验证码' }]
username: [{required: true, trigger: 'change', message: '请输入您的账号'}],
password: [{required: true, trigger: 'change', message: '请输入您的密码'}],
confirmPassword: [{required: true, trigger: 'change', message: '请再次输入您的密码'}],
code: [{required: true, trigger: 'change', message: '请输入验证码'}]
}
const loginRules_en = {
username: [{ required: true, trigger: 'change', message: 'Please enter ' }],
password: [{ required: true, trigger: 'change', message: 'Please enter ' }],
code: [{ required: true, trigger: 'change', message: 'Please enter ' }]
username: [{required: true, trigger: 'change', message: 'Please enter '}],
password: [{required: true, trigger: 'change', message: 'Please enter '}],
code: [{required: true, trigger: 'change', message: 'Please enter '}]
}
const changePasswordRules_en = {
username: [{ required: true, trigger: 'change', message: 'Please enter ' }],
password: [{ required: true, trigger: 'change', message: 'Please enter ' }],
confirmPassword: [{ required: true, trigger: 'change', message: 'Please enter ' }],
code: [{ required: true, trigger: 'change', message: 'Please enter ' }]
username: [{required: true, trigger: 'change', message: 'Please enter '}],
password: [{required: true, trigger: 'change', message: 'Please enter '}],
confirmPassword: [{required: true, trigger: 'change', message: 'Please enter '}],
code: [{required: true, trigger: 'change', message: 'Please enter '}]
}
const show = ref(false)
......@@ -225,15 +230,15 @@ const isShow = ref(false)
const isCodeTrue = ref(false)
const counting = ref(false)
const changePasswordForm = ref({
username:'',
password:'',
confirmPassword:''
username: '',
password: '',
confirmPassword: ''
})
const open = (params) => {
show.value = true
showClose.value = !(params?.notShowClose || false)
if(language.value==0){
if (language.value == 0) {
title.value = '用户登录'
} else {
title.value = 'LOGIN'
......@@ -244,14 +249,15 @@ const open = (params) => {
defineExpose({
open
})
function handleLogin() {
proxy.$refs.loginRef.validate(valid => {
if (valid) {
loading.value = true
// 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
if (loginForm.value.rememberMe) {
Cookies.set('telno', loginForm.value.telno, { expires: 30 })
Cookies.set('rememberMe', loginForm.value.rememberMe, { expires: 30 })
Cookies.set('telno', loginForm.value.telno, {expires: 30})
Cookies.set('rememberMe', loginForm.value.rememberMe, {expires: 30})
} else {
// 否则移除
Cookies.remove('telno')
......@@ -272,29 +278,33 @@ function handleLogin() {
}
})
}
function close() {
loginStatus.value=0
loginStatus.value = 0
title.value = '用户登录'
}
function showChangePassword() {
loginStatus.value=2
if(language.value==0){
loginStatus.value = 2
if (language.value == 0) {
title.value = '忘记密码/密码重置'
} else {
title.value = 'FORGET PASSWORD'
}
}
function showRegister() {
loginStatus.value=1
if(language.value==0){
loginStatus.value = 1
if (language.value == 0) {
title.value = '账号注册'
} else {
title.value = 'REGISTER'
}
}
function goRegister(n) {
if(n==0){
if(language.value==0){
if (n == 0) {
if (language.value == 0) {
// ElMessage.warning('暂不开放国内注册!')
return
}
......@@ -309,6 +319,7 @@ function goRegister(n) {
})
}
}
function getCode() {
getCodeImg().then(res => {
captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled
......@@ -327,35 +338,39 @@ function getCookie() {
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
}
}
function sendsmsMsg() {
if(!changePasswordForm.value.username){
if(language.value==0){
if (!changePasswordForm.value.username) {
if (language.value == 0) {
ElMessage.error('请填写手机/邮箱')
} else {
ElMessage.error('Please fill in your phone/email address')
}
return
}
if(counting.value){
if (counting.value) {
return
} else {
isShow.value = true
}
}
function codeSuccess() {
isShow.value = false
isCodeTrue.value = true
counting.value = true
}
function changePasswordFormUsername() {
isCodeTrue.value = false
}
function handleChangePassword() {
proxy.$refs.changePasswordRef.validate(valid => {
if (valid) {
if(isCodeTrue.value){
if (isCodeTrue.value) {
delete changePasswordForm.value.confirmPassword
forgetPassword(changePasswordForm.value).then(res=>{
forgetPassword(changePasswordForm.value).then(res => {
ElMessage.success('操作成功,请登录')
close()
})
......@@ -394,11 +409,13 @@ function handleChangePassword() {
right: 0;
}
.loginBtn {height: 40px;
.loginBtn {
height: 40px;
background: linear-gradient(-90deg, #8623FC, #453DEA);
border-radius: 20px;
font-size: 18px;
&:hover{
&:hover {
//background: linear-gradient(90deg, #8623FC, #453DEA);
box-shadow: 0 0 10px #453DEA;
}
......@@ -426,7 +443,12 @@ function handleChangePassword() {
.el-input {
height: 40px;
:deep(.el-input__wrapper){box-shadow: none;border-bottom:1px solid #E5E5E5; }
:deep(.el-input__wrapper) {
box-shadow: none;
border-bottom: 1px solid #E5E5E5;
}
input {
height: 40px;
}
......@@ -447,6 +469,7 @@ function handleChangePassword() {
.login-code {
height: 40px;
img {
cursor: pointer;
vertical-align: middle;
......@@ -467,31 +490,70 @@ function handleChangePassword() {
}
.login-code-img {
height: 40px;float: right;
height: 40px;
float: right;
}
:deep(.el-input-group__append) {
background: #fff;padding: 0;
color: #fff;box-shadow: none;
div{color: #fff;}
background: #fff;
padding: 0;
color: #fff;
box-shadow: none;
div {
color: #fff;
}
}
.agreeLine{
a{font-weight: 600;color: #000;
&:hover{text-decoration: underline;}
.agreeLine {
a {
font-weight: 600;
color: #000;
&:hover {
text-decoration: underline;
}
}
}
.rItem{height: 130px;cursor: pointer;width: 350px;padding: 1px;margin:20px auto;
h3{font-size: 30px;margin: 50px;}
&.r1{background: url("@/assets/dance/r1b.png") no-repeat left;
&:hover{background: url("@/assets/dance/r1.png") no-repeat left;}
.rItem {
height: 130px;
cursor: pointer;
width: 350px;
padding: 1px;
margin: 20px auto;
h3 {
font-size: 30px;
margin: 50px;
}
&.r1 {
background: url("@/assets/dance/r1b.png") no-repeat left;
&:hover {
background: url("@/assets/dance/r1.png") no-repeat left;
}
}
&.r2 {
background: url("@/assets/dance/r2b.png") no-repeat left;
&:hover {
background: url("@/assets/dance/r2.png") no-repeat left;
}
&.r2{background: url("@/assets/dance/r2b.png") no-repeat left;
&:hover{background: url("@/assets/dance/r2.png") no-repeat left;}
}
&:hover{color: #fff;}
&:hover {
color: #fff;
}
}
.el-input-group__append{ flex: 1 1 auto;}
.el-input-group__append button.el-button, .el-input-group__append button.el-button:hover{
.el-input-group__append {
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;
......
......@@ -20,7 +20,7 @@
</template>
<div class="chooseForm">
<el-checkbox-group v-model="form.coachs" @change="changecoachs">
<div class="addBttn" @click="addCoach(0)">+</div>
<div class="addBttn" @click="addCoach('1')">+</div>
<el-checkbox v-for="c in personAllList?.coaches" :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="/img/head1.png"/>
......@@ -48,7 +48,7 @@
</template>
<div class="chooseForm">
<el-checkbox-group v-model="form.leader">
<div class="addBttn" @click="addCoach(0)">+</div>
<div class="addBttn" @click="addCoach('2')">+</div>
<el-checkbox v-for="c in personAllList?.leaders" :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="/img/head1.png"/>
......@@ -73,7 +73,7 @@
</template>
<div class="chooseForm">
<el-checkbox-group v-model="form.doctor">
<div class="addBttn" @click="addCoach(0)">+</div>
<div class="addBttn" @click="addCoach('4')">+</div>
<el-checkbox v-for="c in personAllList?.teamDoctors" :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="/img/head1.png"/>
......@@ -98,7 +98,7 @@
</template>
<div class="chooseForm">
<el-checkbox-group v-model="form.translator">
<div class="addBttn" @click="addCoach(0)">+</div>
<div class="addBttn" @click="addCoach('5')">+</div>
<el-checkbox v-for="c in personAllList?.translators" :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="/img/head1.png"/>
......@@ -123,7 +123,7 @@
</template>
<div class="chooseForm">
<el-checkbox-group v-model="form.official">
<div class="addBttn" @click="addCoach(0)">+</div>
<div class="addBttn" @click="addCoach('6')">+</div>
<el-checkbox v-for="c in personAllList?.officials" :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="/img/head1.png"/>
......@@ -148,7 +148,7 @@
</template>
<div class="chooseForm">
<el-checkbox-group v-model="form.other">
<div class="addBttn" @click="addCoach(0)">+</div>
<div class="addBttn" @click="addCoach('3')">+</div>
<el-checkbox v-for="c in personAllList?.others" :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="/img/head1.png"/>
......@@ -365,10 +365,11 @@ function editPerson(id) {
})
}
function addCoach() {
function addCoach(n) {
proxy.$refs['dialogAddCoachRef'].open({
title: language.value==0?'新建人员':'Add',
id: 0,
label: n,
groupId: groupId.value
})
}
......
......@@ -7,22 +7,22 @@
<el-card :body-style="{'padding-top': '0'}">
<el-row class="mt20" :gutter="20">
<el-col :lg="12">
<el-col :lg="8">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3>
<h3 class="panel-title" v-else>Select list of participating athletes</h3>
<!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>-->
<a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>
</div>
<div class="panel-body" style="padding: 10px">
<div style="margin: 0 4px 10px">
<el-select multiple v-model="choosedchoosed" collapse-tags-tooltip filterable
@change="getProjectList">
<el-option v-for="c in athletesList" :key="c.id" :label="c.realName" :value="c.id" ></el-option>
</el-select>
<el-input size="small" v-model="athletesQuery.name" :prefix-icon="Search"
@change="queryAthletes"
clearable/>
</div>
<div class="noPicChooseForm" id="chooseArr">
<el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
<el-button id="addRef" plain @click="chooseSportman">+{{ language == 0 ? '选择' : 'add' }}</el-button>
<el-checkbox v-for="c in choosedListBak" :value="c.id" border>
<p class="name">{{ c.realName }}
<!-- ({{ c.sexStr }})-->
......@@ -35,7 +35,39 @@
</div>
</div>
</el-col>
<el-col :lg="12">
<el-col :lg="8">
<div class="panel border">
<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" style="padding: 10px">
<div class="mb20">
<el-input size="small" v-model="zuQuery.name" :prefix-icon="Search"
@change="queryTeam" clearable/>
</div>
<div class="chooseForm">
<el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
<!-- v-show="choosedchoosed.indexOf(c.id) !== -1"-->
<el-checkbox v-for="c in choosed2Listbak" :value="c.id" checked>
<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="/img/head1.png"/>
<el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="/img/head0.png"/>
<p class="name">{{ c.realName }}
<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>-->
</p>
</el-checkbox>
</el-checkbox-group>
</div>
</div>
</div>
</el-col>
<el-col :lg="8">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">可参与报名的项目</h3>
......@@ -46,7 +78,7 @@
clearable/>
</div>
</div>
<div v-loading="loadingProject" id="projectbox" style="height: 60vh;overflow: auto;">
<div v-loading="loadingProject" id="projectbox" style="height: 60vh">
<el-checkbox-group v-model="projectIds" @change="changeProject">
<el-checkbox class="flexBetweenBox" v-for="c in projectList" :value="c.id" :key="c.id">
<div class="flexBetween w100">
......@@ -166,7 +198,6 @@ const data = reactive({
signInfoList: [],
zuTableList: [],
choosedList: [],
athletesList: [],
choosedListBak: [],
athletesQuery: {
name: ''
......@@ -195,7 +226,7 @@ const data = reactive({
openTour:false
})
const {
activeTeam, names, tableData, signInfoList, zuTableList, choosedList,choosedListBak,athletesList,
activeTeam, names, tableData, signInfoList, zuTableList, choosedList,choosedListBak,
extraform, groupId, signType, coachOrLeaderFlag, showResult, noPhotoCanSign, projectIds, choosedchoosed, activeStep, projectList, choosed2List,choosed2Listbak, loadingProject,
projectQuery, tableType, athletesQuery, zuQuery,openTour,tourCurrent
} = toRefs(data)
......@@ -207,18 +238,11 @@ onMounted(() => {
getSignInfoList()
getMatch(matchId.value)
getMySignInfo()
getAthletesList()
// openTour.value = true
})
let chargeFlag
function getAthletesList() {
// athletesList.value
match.getGroupPersonList({}, groupId.value).then(res => {
athletesList.value = res.rows
})
}
function getMatch(id) {
match.getMatchById({
id: id
......@@ -356,6 +380,15 @@ function getProjectList() {
})
}
function queryAthletes() {
choosedListBak.value = []
for (var t of choosedList.value) {
if (t.realName.indexOf(athletesQuery.value.name) > -1) {
// 筛选
choosedListBak.value.push(t)
}
}
}
function queryTeam() {
choosed2Listbak.value = []
......@@ -408,6 +441,19 @@ function addCoach() {
proxy.$refs['dialogAddCoachRef'].open(params)
}
function emptyChoosed() {
choosedList.value = []
choosedListBak.value = []
}
function emptyChangechoosed() {
choosedchoosed.value = []
choosed2List.value = []
choosed2Listbak.value = []
projectList.value = []
projectIds.value = []
}
function signUp() {
if (projectIds.value.length == 0) {
return
......@@ -571,7 +617,7 @@ watch(choosedchoosed, (newVal, oldVal) => {
.flexBetweenBox {
width: 100%;
height: auto;margin: 0;
height: auto;
border-bottom: 1px solid #eee;
padding: 0 10px;
}
......
......@@ -7,22 +7,22 @@
<el-card :body-style="{'padding-top': '0'}">
<el-row class="mt20" :gutter="20">
<el-col :lg="8">
<el-col :lg="12">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3>
<h3 class="panel-title" v-else>Select list of participating athletes</h3>
<a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>
<!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>-->
</div>
<div class="panel-body" style="padding: 10px">
<div style="margin: 0 4px 10px">
<el-input size="small" v-model="athletesQuery.name" :prefix-icon="Search"
@change="queryAthletes"
clearable/>
<el-select multiple v-model="choosedchoosed" collapse-tags-tooltip filterable
@change="getProjectList">
<el-option v-for="c in athletesList" :key="c.id" :label="c.realName" :value="c.id" ></el-option>
</el-select>
</div>
<div class="noPicChooseForm" id="chooseArr">
<el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
<el-button id="addRef" plain @click="chooseSportman">+{{ language == 0 ? '选择' : 'add' }}</el-button>
<el-checkbox v-for="c in choosedListBak" :value="c.id" border>
<p class="name">{{ c.realName }}
<!-- ({{ c.sexStr }})-->
......@@ -35,39 +35,7 @@
</div>
</div>
</el-col>
<el-col :lg="8">
<div class="panel border">
<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" style="padding: 10px">
<div class="mb20">
<el-input size="small" v-model="zuQuery.name" :prefix-icon="Search"
@change="queryTeam" clearable/>
</div>
<div class="chooseForm">
<el-checkbox-group v-model="choosedchoosed" @change="changechoosed">
<!-- v-show="choosedchoosed.indexOf(c.id) !== -1"-->
<el-checkbox v-for="c in choosed2Listbak" :value="c.id" checked>
<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="/img/head1.png"/>
<el-avatar fit="cover" v-else-if="c.sex == 1" :size="60" src="/img/head0.png"/>
<p class="name">{{ c.realName }}
<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>-->
</p>
</el-checkbox>
</el-checkbox-group>
</div>
</div>
</div>
</el-col>
<el-col :lg="8">
<el-col :lg="12">
<div class="panel border">
<div class="panel-header ">
<h3 class="panel-title" v-if="language==0">可参与报名的项目</h3>
......@@ -78,7 +46,7 @@
clearable/>
</div>
</div>
<div v-loading="loadingProject" id="projectbox" style="height: 60vh">
<div v-loading="loadingProject" id="projectbox" style="height: 60vh;overflow: auto;">
<el-checkbox-group v-model="projectIds" @change="changeProject">
<el-checkbox class="flexBetweenBox" v-for="c in projectList" :value="c.id" :key="c.id">
<div class="flexBetween w100">
......@@ -198,6 +166,7 @@ const data = reactive({
signInfoList: [],
zuTableList: [],
choosedList: [],
athletesList: [],
choosedListBak: [],
athletesQuery: {
name: ''
......@@ -226,7 +195,7 @@ const data = reactive({
openTour:false
})
const {
activeTeam, names, tableData, signInfoList, zuTableList, choosedList,choosedListBak,
activeTeam, names, tableData, signInfoList, zuTableList, choosedList,choosedListBak,athletesList,
extraform, groupId, signType, coachOrLeaderFlag, showResult, noPhotoCanSign, projectIds, choosedchoosed, activeStep, projectList, choosed2List,choosed2Listbak, loadingProject,
projectQuery, tableType, athletesQuery, zuQuery,openTour,tourCurrent
} = toRefs(data)
......@@ -238,11 +207,18 @@ onMounted(() => {
getSignInfoList()
getMatch(matchId.value)
getMySignInfo()
getAthletesList()
// openTour.value = true
})
let chargeFlag
function getAthletesList() {
// athletesList.value
match.getGroupPersonList({}, groupId.value).then(res => {
athletesList.value = res.rows
})
}
function getMatch(id) {
match.getMatchById({
id: id
......@@ -380,15 +356,6 @@ function getProjectList() {
})
}
function queryAthletes() {
choosedListBak.value = []
for (var t of choosedList.value) {
if (t.realName.indexOf(athletesQuery.value.name) > -1) {
// 筛选
choosedListBak.value.push(t)
}
}
}
function queryTeam() {
choosed2Listbak.value = []
......@@ -441,19 +408,6 @@ function addCoach() {
proxy.$refs['dialogAddCoachRef'].open(params)
}
function emptyChoosed() {
choosedList.value = []
choosedListBak.value = []
}
function emptyChangechoosed() {
choosedchoosed.value = []
choosed2List.value = []
choosed2Listbak.value = []
projectList.value = []
projectIds.value = []
}
function signUp() {
if (projectIds.value.length == 0) {
return
......@@ -617,7 +571,7 @@ watch(choosedchoosed, (newVal, oldVal) => {
.flexBetweenBox {
width: 100%;
height: auto;
height: auto;margin: 0;
border-bottom: 1px solid #eee;
padding: 0 10px;
}
......
......@@ -4,6 +4,7 @@
:close-on-click-modal="false" class="pcloginpop"
destroy-on-close
>
<!-- 舞伴-->
<el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="160px" inline>
<el-row :gutter="30">
<el-col :lg="24">
......
......@@ -32,15 +32,14 @@
<el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required>
<el-input v-model="form.idcCode" @blur="checkCode"/>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item :label="language==0?'性别':'sex'" prop="sex">
<el-radio-group v-model="form.sex">
<el-radio value="0">{{ language==0?'女':'female' }}</el-radio>
<el-radio value="1">{{ language==0?'男':'male' }}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item :label="language==0?'出生日期':'birth'" prop="birth" required>
<el-date-picker
v-model="form.birth"
......@@ -58,22 +57,22 @@
</el-form-item>
<!-- <el-form-item :label="language==0?'所属国家':'Nationality'" prop="countryId" required>-->
<!-- <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>-->
<el-form-item :label="language==0?'所属国家':'Nationality'" prop="countryId">
<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>
<!-- <el-form-item :label="language==0?'详细地址':'Address'" prop="address" required>-->
<!-- <el-cascader v-if="form.countryId == 240"-->
<!-- v-model="form.regionId"-->
<!-- style="width: 100%;margin-bottom: 15px"-->
<!-- :options="regionsList"-->
<!-- :props="{ label:'text' }"-->
<!-- />-->
<!-- <el-input v-model="form.address" type="textarea" :rows="4"/>-->
<el-form-item :label="language==0?'详细地址':'Address'" prop="address">
<el-cascader v-if="form.countryId == 240"
v-model="form.regionId"
style="width: 100%;margin-bottom: 15px"
:options="regionsList"
:props="{ label:'text' }"
/>
<el-input v-model="form.address" type="textarea" :rows="4"/>
<!-- </el-form-item>-->
</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>
......@@ -127,13 +126,13 @@ const data = reactive({
rules: {
xing: [{required: true, message: '必填', trigger: 'blur'}],
ming: [{required: true, message: '必填', trigger: 'blur'}],
countryId: [{required: true, message: '必填', trigger: 'change'}],
// countryId: [{required: true, message: '必填', trigger: 'change'}],
idcType: [{required: true, message: '必填', trigger: 'change'}],
idcCode: [{required: true, message: '必填', trigger: 'blur'}],
phone: [{required: true, message: '必填', trigger: 'blur'}],
// regionId: [{ required: true, message: '必填', trigger: 'change' }],
birth: [{required: true, message: '必填', trigger: 'change'}],
address: [{ required: true, message: '必填', trigger: 'blur' }],
// address: [{ required: true, message: '必填', trigger: 'blur' }],
// picUrl: [{required: true, message: '必填', trigger: 'blur'}],
sex: [{required: true, message: '必填', trigger: 'change'}],
labelArr: [{required: true, message: '必填', trigger: 'change'}]
......@@ -141,13 +140,13 @@ const data = reactive({
rules_cn:{
xing: [{required: true, message: 'required', trigger: 'blur'}],
ming: [{required: true, message: 'required', trigger: 'blur'}],
countryId: [{required: true, message: 'required', trigger: 'change'}],
// 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' }],
// 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'}]
......@@ -177,13 +176,17 @@ onMounted(() => {
})
let editgay = false
const open = (params) => {
console.log(params)
console.log(params.label)
show.value = true
title.value = params.title
groupId.value = params.groupId || '0'
isMe.value = params.isMe
if(params.label){
form.value.labelArr= [params.label]
}
if(language.value == 0){
form.value.countryId = 240
form.value.idcType = '0'
}
if(isMe.value){
//个人
......@@ -245,21 +248,22 @@ function getRegionsList() {
}
function checkCode() {
if (form.value.idcType && form.value.idcCode) {
if (form.value.idcType=='0' && form.value.idcCode) {
giveBirthDay()
var obj = {
idcType: form.value.idcType,
idcCode: form.value.idcCode
}
match.checkPerson(obj).then(res => {
if (res.data.idcCode != null) {
form.value = res.data
if (form.value.label != null) {
form.value.labelArr = form.value.label.split(',')
}
form.value.groupId = groupId.value
}
})
// match.checkPerson(obj).then(res => {
// if (res.data.idcCode != null) {
// form.value = res.data
// if (form.value.label != null) {
// form.value.labelArr = form.value.label.split(',')
// }
// form.value.groupId = groupId.value
// }
// })
}
}
......@@ -305,7 +309,7 @@ function submitForm() {
if (showRequire.value) {
var pattern = /^1[3456789]\d{9}$/
if (!pattern.test(form.value.phone)) {
ElMessage.error('请输入正确的手机号')
ElMessage.error(language.value == 0 ?'请输入正确的手机号':'Please enter the correct mobile phone number')
return
}
}
......@@ -319,7 +323,7 @@ function submitForm() {
// 团队
form.value.groupId = groupId.value
match.savePersonForMyGroup(form.value).then(res => {
ElMessage.success('保存成功')
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
show.value = false
emit('submitForm')
})
......@@ -327,20 +331,20 @@ function submitForm() {
if (editgay) {
// id不是0
match.editPersonInfo(form.value).then(res => {
ElMessage.success('保存成功')
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
show.value = false
emit('submitForm')
})
} else {
if(isMe.value){
match.saveMyBaseInfo(form.value).then(res => {
ElMessage.success('保存成功')
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
show.value = false
emit('submitForm')
})
} else {
match.savePersonForMyPerson(form.value).then(res => {
ElMessage.success('保存成功')
ElMessage.success(language.value == 0 ?'保存成功':'Save successful')
show.value = false
emit('submitForm')
})
......
......@@ -4,6 +4,7 @@
:close-on-click-modal="false" class="pcloginpop" @close="cancel"
destroy-on-close
>
<!-- 随行人员-->
<el-form ref="dialogRef" :model="form" :label-width="language==0?120:180" inline>
<el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" v-if="form.id">
{{ form.wdsfMin }}
......
......@@ -34,7 +34,6 @@
/>
<!-- 文件 2-->
<FileUpload v-if="s.type == '2'" v-model="s.fixWxFile" :action="uploadUrl" />
</el-form-item>
</el-form>
</el-col>
......
......@@ -16,25 +16,25 @@
{{ JSON.parse(form.signKnowUrl)[0]?.name }}
</el-link>
</div>
<div class="indexTitle"><h3 class="leftboderTT">免责声明</h3></div>
<div class="xzbox">
<el-link v-if="form.disclaimerUrl" type="primary" :href="fillImgUrl(JSON.parse(form.disclaimerUrl)[0]?.url)" target="_blank">
<el-icon :size="20">
<Download />
</el-icon>
{{ JSON.parse(form.disclaimerUrl)[0]?.name }}
</el-link>
</div>
<div class="indexTitle"><h3 class="leftboderTT">赛事规程</h3></div>
<div class="xzbox">
<!-- <div class="indexTitle"><h3 class="leftboderTT">免责声明</h3></div>-->
<!-- <div class="xzbox">-->
<!-- <el-link v-if="form.disclaimerUrl" type="primary" :href="fillImgUrl(JSON.parse(form.disclaimerUrl)[0]?.url)" target="_blank">-->
<!-- <el-icon :size="20">-->
<!-- <Download />-->
<!-- </el-icon>-->
<!-- {{ JSON.parse(form.disclaimerUrl)[0]?.name }}-->
<!-- </el-link>-->
<!-- </div>-->
<!-- <div class="indexTitle"><h3 class="leftboderTT">赛事规程</h3></div>-->
<!-- <div class="xzbox">-->
<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>
<!-- <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&&form.cptProjectList?.length > 0"><h3 class="leftboderTT">竞赛项目</h3></div>
<div v-if="form.type==1&&form.cptProjectList?.length > 0">
......@@ -58,28 +58,28 @@
{{ JSON.parse(form.signKnowUrl)[0]?.name }}
</el-link>
</div>
<div class="indexTitle"><h3 class="leftboderTT">Disclaimers</h3></div>
<div class="xzbox">
<el-link v-if="form.disclaimerUrl" type="primary" :href="fillImgUrl(JSON.parse(form.disclaimerUrl)[0]?.url)" target="_blank">
<el-icon :size="20">
<Download />
</el-icon>
{{ JSON.parse(form.disclaimerUrl)[0]?.name }}
</el-link>
</div>
<!-- <div class="indexTitle"><h3 class="leftboderTT">Disclaimers</h3></div>-->
<!-- <div class="xzbox">-->
<!-- <el-link v-if="form.disclaimerUrl" type="primary" :href="fillImgUrl(JSON.parse(form.disclaimerUrl)[0]?.url)" target="_blank">-->
<!-- <el-icon :size="20">-->
<!-- <Download />-->
<!-- </el-icon>-->
<!-- {{ JSON.parse(form.disclaimerUrl)[0]?.name }}-->
<!-- </el-link>-->
<!-- </div>-->
<div class="indexTitle"><h3 class="leftboderTT">Competition Regulations</h3></div>
<div class="xzbox">
<div v-html="form.ruleContent">
<!-- <div class="indexTitle"><h3 class="leftboderTT">Competition Regulations</h3></div>-->
<!-- <div class="xzbox">-->
<!-- <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>-->
<!-- <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 && form.cptProjectList?.length > 0"><h3 class="leftboderTT">Event settings</h3></div>
<div v-if="form.type==1 && form.cptProjectList?.length > 0">
<match-info-project-list :list="form.cptProjectList" />
......
<template>
<div style="filter: opacity(1)">
<el-row :gutter="14" v-if="language==0">
<el-col :lg="4" :md="8" :sm="12" :xs="12">
<div class="funcBtn" @click="goBooking(0)">
......@@ -75,6 +76,7 @@
</div>
</el-col>
</el-row>
</div>
</template>
<script setup>
......
......@@ -58,7 +58,7 @@
{{ scope.row.signInfo[0].extraPersonInfoMapList[index].value.name }}
</el-link>
<img v-else-if="scope.row.signInfo[0].extraPersonInfoMapList[index]?.type=='3'" style="width: 50px;"
:src="scope.row.signInfo[0].extraPersonInfoMapList[index].value.url||scope.row.signInfo[0].extraPersonInfoMapList[index].value">
:src="fillImgUrl(scope.row.signInfo[0].extraPersonInfoMapList[index].value.url||scope.row.signInfo[0].extraPersonInfoMapList[index].value)">
<span v-else>{{ scope.row.signInfo[0].extraPersonInfoMapList[index]?.value }}</span>
</template>
</el-table-column>
......
......@@ -3,7 +3,7 @@
<div class="matchItem" v-for="n in list" :key="n.id" @click="goDetail(n.id)">
<el-row :gutter="15">
<el-col :lg="7" :md="24" :xl="6">
<img class="mauto w100" :src="fillImgUrl(n.coverUrl)">
<img class="mauto w100 coverLimitHeight" :src="fillImgUrl(n.coverUrl)">
</el-col>
<el-col :lg="9" :md="12" :xl="12">
<div class="info">
......@@ -12,9 +12,9 @@
<p class="ppl"><label>{{ language==0?'地&ensp;&ensp;&ensp;&ensp;点':'Location' }}</label>{{ n.address }}</p>
<p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}</label>{{ n.signEndTime?.slice(0,10) }}</p>
<p class="ppl"><label>{{ language==0?'联系人员':'Contact Person' }}</label>{{ n.contactPerson }}</p>
<p class="ppl" v-if="n.contactPerson"><label>{{ language==0?'联系人员':'Contact Person' }}</label>{{ n.contactPerson }}</p>
<p class="ppl"><label>{{ language==0?'联系电话':'Phone' }}</label>{{ n.contactTelno }}</p>
<p class="ppl"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'E-mail' }}</label>{{ n.contactEmail }}</p>
<p class="ppl" v-if="n.contactEmail"><label>{{ language==0?'邮&ensp;&ensp;&ensp;&ensp;箱':'E-mail' }}</label>{{ n.contactEmail }}</p>
</div>
</el-col>
......@@ -180,4 +180,5 @@ function goDetail(id) {
@media (max-width: 1450px) {
.block{width: 44px;font-size: 20px;}
}
.coverLimitHeight{max-height: 165px;object-fit: cover;}
</style>
......
......@@ -58,7 +58,7 @@
<div class="matchItem" v-for="n in list" :key="n.id" @click="goDetail(n.id)">
<el-row :gutter="15">
<el-col :lg="7" :md="24" :xl="6">
<img class="mauto w100" :src="fillImgUrl(n.coverUrl)">
<img class="mauto w100 coverLimitHeight" :src="fillImgUrl(n.coverUrl)">
</el-col>
<el-col :lg="9" :md="12" :xl="12">
<div class="info">
......@@ -307,12 +307,12 @@ function goDetail(id) {
li {
margin: 0 0 10px;
display: flex;padding-bottom: 15px;
align-items: center;
& > label {
display: flex;
align-items: flex-start;
& > label {padding: 8px 0;
width:5em;text-align: right;font-weight: normal;
}
.el-radio-button{width: 90px;text-align: center;}
.el-radio-button{min-width: 90px;text-align: center;}
&:last-child{border-bottom: none;margin: 0}
}
}
......@@ -333,4 +333,5 @@ function goDetail(id) {
.el-button--primary:hover {
background: var(--el-color-primary)
}
.coverLimitHeight{max-height: 165px;object-fit: cover;}
</style>
......
......@@ -85,6 +85,14 @@ function sendsmsMsg() {
}
return
}
if (form.value.account.indexOf('@') == -1) {
if (language.value == 0) {
ElMessage.error('请填写正确的邮箱')
} else {
ElMessage.error('Please fill in the correct email')
}
return
}
if (counting.value) {
return
} else {
......@@ -147,6 +155,7 @@ const next = () => {
</script>
<style scoped lang="scss">
.d-form{min-height: 50vh}
.el-input-group__append button.el-button, .el-input-group__append button.el-button:hover {
color: var(--el-color-primary);
background: #efefff;
......
......@@ -45,133 +45,38 @@
</el-row>
</el-card>
<el-card class="mt20 mb20">
<div class="leftboderTT">2023.07.22 赛事成绩</div>
<h3 class="text-center">08:00-09:30 拉丁舞第一组比赛结果</h3>
<el-card class="mt20 mb20" v-for="(n,index) in cjList">
<div class="leftboderTT">{{ n.title }}</div>
<div v-for="(m,jndex) in n.list">
<h3 class="text-center">{{ m.title }}</h3>
<div class="tablebody">
<table class="table table-striped">
<thead>
<tr class="bg-lineg">
<td>编号</td>
<td>姓名</td>
<td>国家</td>
<td>分值</td>
<td>排名</td>
<td>结果</td>
<td>{{ language==0?'编号':'RANK' }}</td>
<td>{{ language==0?'团体名称':'COUPLE' }}</td>
<td>{{ language==0?'国家':'COUNTRY' }}</td>
<td class="text-center">START #</td>
<td class="text-center" v-if="index>0">BASE</td>
<td class="text-center" v-if="index>0">POINTS</td>
</tr>
</thead>
<tbody>
<tr>
<td>3456</td>
<td>王文文</td>
<td>中国</td>
<td class="text-primary">198.00</td>
<td>1</td>
<td class="text-primary">晋级</td>
<tr v-for="(l,kndex) in m.rows">
<td>{{ l.RANK }}</td>
<td>{{ l.COUPLE}}</td>
<td>{{ l.COUNTRY }}</td>
<td class="text-primary text-center">{{ l.START }}</td>
<td class="text-center" v-if="index>0">{{l.BASE}}</td>
<td v-if="index>0" class="text-primary text-center">{{ l.POINTS }}</td>
</tr>
<tr>
<td>4567</td>
<td>张梓涵</td>
<td>中国</td>
<td class="text-primary">191.00</td>
<td>2</td>
<td class="text-primary">晋级</td>
</tr>
<tr>
<td>3456</td>
<td>Sdehj Lijukl</td>
<td>乌兹别克斯坦</td>
<td class="text-primary">190.00</td>
<td>3</td>
<td class="text-primary">晋级</td>
</tr>
<tr>
<td>1255</td>
<td>许昌度</td>
<td>中国香港</td>
<td class="text-primary">188.00</td>
<td>4</td>
<td class="text-primary">晋级</td>
</tr>
<tr>
<td>1299</td>
<td>Alice Luyr</td>
<td>泰国</td>
<td class="text-primary">180.00</td>
<td>5</td>
<td class="text-primary">晋级</td>
</tr>
<tr>
<td>1652</td>
<td>吴遇安</td>
<td>中国香港</td>
<td class="text-primary">188.00</td>
<td>6</td>
<td>淘汰</td>
</tr>
</tbody>
</table>
</div>
<br><br>
<div class="leftboderTT">2023.07.22 赛事成绩</div>
<h3 class="text-center">08:00-09:30 拉丁舞第一组比赛结果</h3>
<div class="tablebody">
<table class="table table-striped">
<tr class="bg-lineg">
<td>编号</td>
<td>姓名</td>
<td>国家</td>
<td>分值</td>
<td>排名</td>
<td>结果</td>
</tr>
<tr>
<td>3456</td>
<td>陈莎莎</td>
<td>中国</td>
<td class="text-primary">198.00</td>
<td>1</td>
<td class="text-primary">晋级</td>
</tr>
<tr>
<td>3001</td>
<td>赵倩</td>
<td>中国</td>
<td class="text-primary">196.00</td>
<td>2</td>
<td class="text-primary">晋级</td>
</tr>
<tr>
<td>1005</td>
<td>张楚楚</td>
<td>中国</td>
<td class="text-primary">190.00</td>
<td>3</td>
<td class="text-primary">晋级</td>
</tr>
<tr>
<td>1544</td>
<td>刘意晚</td>
<td>中国</td>
<td class="text-primary">186.90</td>
<td>4</td>
<td class="text-primary">晋级</td>
</tr>
<tr>
<td>1293</td>
<td>李涵</td>
<td>中国</td>
<td class="text-primary">186.90</td>
<td>5</td>
<td>淘汰</td>
</tr>
</table>
</div>
</el-card>
<br><br>
</div>
</div>
</template>
......@@ -179,9 +84,12 @@
<script setup>
import { onMounted, ref, watch } from 'vue'
import { getPlanYears, getYearZtxPlanList } from '@/apiPc/train'
import {cjList} from '@/assets/js/data'
import { ArrowRight } from '@element-plus/icons-vue'
import { dayjs } from 'element-plus'
import { szToHz } from '@/utils/ruoyi'
import {useStorage} from "@vueuse/core/index";
const language = useStorage('language', 0)
const years = ref([])
const currYear = ref(null)
......
<template>
<div>
<div class="box">
<div class="mt20" />
<el-card>
<el-row :gutter="20">
<el-col :sm="24" :lg="12">
<!--赛事日历-->
<el-calendar v-model="calendarValue">
<template #date-cell="data">
<div v-if="data.data.day.slice(8,10)==22" class="primaryDate date">22</div>
<div v-else class="date">
{{ data.data.day.slice(8,10) }}
</div>
</template>
</el-calendar>
</el-col>
<el-col :sm="24" :lg="12">
<div class="calendarList">
<ul>
<li>
<label>08:00~10:30</label> Wuxi Open
</li>
<li>
<label>11:00</label> the WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024 group A
</li>
<li>
<label>12:00</label> the WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024 group B
</li>
<li>
<label>13:00</label> the WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024 group C
</li>
<li>
<label>15:00</label> the WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024 group D
</li>
</ul>
</div>
</el-col>
</el-row>
</el-card>
<el-card class="mt20 mb20">
<div class="leftboderTT">2023.07.22 Result</div>
<h3 class="text-center">08:00-09:30 The results of the group A of Latin dance competitions</h3>
<div class="tablebody">
<table class="table table-striped">
<thead>
<tr class="bg-lineg">
<td>Number</td>
<td>Name</td>
<td>Country</td>
<td>Score</td>
<td>Ranking</td>
<td>Final result</td>
</tr>
</thead>
<tbody>
<tr>
<td>3456</td>
<td>Wang wenwen</td>
<td>China</td>
<td class="text-primary">198.00</td>
<td>1</td>
<td class="text-primary">advancement</td>
</tr>
<tr>
<td>4567</td>
<td>Zhang</td>
<td>China</td>
<td class="text-primary">191.00</td>
<td>2</td>
<td class="text-primary">advancement</td>
</tr>
<tr>
<td>3456</td>
<td>Sdehj Lijukl</td>
<td>Uzbekistan</td>
<td class="text-primary">190.00</td>
<td>3</td>
<td class="text-primary">advancement</td>
</tr>
<tr>
<td>1255</td>
<td>XuDu</td>
<td>Hong Kong, China</td>
<td class="text-primary">188.00</td>
<td>4</td>
<td class="text-primary">advancement</td>
</tr>
<tr>
<td>1299</td>
<td>Alice Luyr</td>
<td>Thailand</td>
<td class="text-primary">180.00</td>
<td>5</td>
<td class="text-primary">advancement</td>
</tr>
<tr>
<td>1652</td>
<td>Wu Yuan</td>
<td>Hong Kong, China</td>
<td class="text-primary">188.00</td>
<td>6</td>
<td>Out</td>
</tr>
</tbody>
</table>
</div>
<br><br>
<div class="leftboderTT">2023.07.22 Result</div>
<h3 class="text-center">08:00-09:30 The results of the group A of Latin dance competitions</h3>
<div class="tablebody">
<table class="table table-striped">
<tr class="bg-lineg">
<td>Number</td>
<td>Name</td>
<td>Country</td>
<td>Score</td>
<td>Ranking</td>
<td>Final result</td>
</tr>
<tr>
<td>3456</td>
<td>Chen Sha</td>
<td>China</td>
<td class="text-primary">198.00</td>
<td>1</td>
<td class="text-primary">advancement</td>
</tr>
<tr>
<td>3001</td>
<td>ZhaoQian</td>
<td>China</td>
<td class="text-primary">196.00</td>
<td>2</td>
<td class="text-primary">advancement</td>
</tr>
<tr>
<td>1005</td>
<td>ZhangChuChu</td>
<td>China</td>
<td class="text-primary">190.00</td>
<td>3</td>
<td class="text-primary">advancement</td>
</tr>
<tr>
<td>1544</td>
<td>LiuYiwan</td>
<td>China</td>
<td class="text-primary">186.90</td>
<td>4</td>
<td class="text-primary">advancement</td>
</tr>
<tr>
<td>1293</td>
<td>LiHan</td>
<td>China</td>
<td class="text-primary">186.90</td>
<td>5</td>
<td>Out</td>
</tr>
</table>
</div>
</el-card>
</div>
</div>
</template>
<script setup>
import { onMounted, ref, watch } from 'vue'
import { getPlanYears, getYearZtxPlanList } from '@/apiPc/train'
import { ArrowRight } from '@element-plus/icons-vue'
import { dayjs } from 'element-plus'
import { szToHz } from '@/utils/ruoyi'
const years = ref([])
const currYear = ref(null)
const ztxPlanList = ref([])
const planList = ref([])
const loading = ref(false)
const calendarValue = ref('2024-07-22')
// onMounted(() => {
// currYear.value = dayjs().year()
// getPlanYears().then(res => {
// years.value = res.data
// })
// })
//
// watch(currYear, (val) => {
// if (val) {
// getPlanList()
// }
// })
function getPlanList() {
loading.value = true
Promise.all([
getYearZtxPlanList({
year: currYear.value,
type: 1// 中跆协
}),
getYearZtxPlanList({
year: currYear.value,
type: 0 // 省
})
]).then(res => {
loading.value = false
ztxPlanList.value = res[0].rows
planList.value = res[1].rows
})
}
</script>
<style scoped lang="scss">
.leftboderTT{margin: 0 0 20px;color: var(--el-color-primary);
font-size: 20px;}
h3{background: #F5F0FF;margin: 0;padding: 10px 0;
color: var(--el-color-primary);
font-size: 18px;}
.table { border-spacing: 0;
border-collapse: collapse;
width: 100%;
max-width: 100%;
margin-bottom: 20px;
td,th{ padding: 8px; font-size: 14px;}
}
:deep(.table-striped > tbody > tr:nth-of-type(odd)){
background: #F6F9FE;
}
.el-calendar{--el-calendar-border:none;--el-calendar-cell-width:51px;text-align:center;
--el-text-color-regular:#8E8D94;
:deep(.el-calendar__header){justify-content: center;}
:deep(.el-calendar__body){border: 1px solid #F0F0F0;padding: 0}
:deep(.el-calendar-table .el-calendar-day){padding: 1px;}
:deep(.el-calendar-table td.is-selected){background: transparent;}
:deep(.el-calendar__button-group){display: none;}
}
.primaryDate{color: #fff;
background: linear-gradient(90deg, #8623FC, #453DEA);}
.date{ margin:5px auto;border-radius: 50%;width: 30px;height: 30px;line-height: 30px;
font-weight: bold;
}
.calendarList{border: 1px solid #F0F0F0;padding:12px 20px;overflow: hidden;
margin: 46px 0 0;
ul{
li{background: #F6F9FE;margin:7px 0 7px 20px;position: relative;padding: 13px;
border-radius: 10px;
font-weight: 500;
font-size: 15px;
label{color: #453DEA;margin-right: 15px;
&::before{content: '';background:#fff;left: -17px;top: 0px;bottom: 0;margin: auto;
border-radius: 50%;width: 2px;height: 2px;position: absolute;z-index: 1}
}
}
li::before{content: '';background: linear-gradient(0deg, #8623FC, #453DEA);
border-radius: 50%;width: 8px;height: 8px;position: absolute;
left: -20px;top: 0;bottom: 0;margin: auto;z-index: 1;
}
li::after{content: ''; left: -16px;width: 1px;height: 100%;
background: #EBEBEB; position: absolute;top: 20px}
li:hover{color: #fff;
background: linear-gradient(-90deg, #8623FC, #453DEA);
label{color: #fff;}
}
}
}
</style>
......@@ -76,14 +76,14 @@ export default defineConfig(({ mode, command }) => {
rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '')
},
'/dev-api/ztx-webSite': {
target: 'https://dance.itechtop.cn/stage-api',
// target: 'http://192.168.1.131:8083/',
// target: 'https://dance.itechtop.cn/stage-api',
target: 'http://192.168.1.96:9083/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
},
'/dev-api': {
// target: 'http://192.168.1.131:8083',
target: 'https://dance.itechtop.cn/stage-api',
target: 'http://192.168.1.96:9083/',
// target: 'https://dance.itechtop.cn/stage-api',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
}
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!