1c9d32e9 by zhangmeng

成绩查询

1 parent f53d9b64
<template>
<el-dialog
v-model="show"
:close-on-click-modal="false"
:title="language==0?'成绩查询':'RESULT QUERY'"
align-center
append-to-body
center
class="pcloginpop"
close-icon="CircleClose"
destroy-on-close
style="min-width:350px;max-width: 500px"
>
<div v-loading="loading" style="min-height: 500px;height: 50vh;">
<div>
<div class="flex mt30">
<el-input
v-model="query"
:placeholder="language==0?'输入项目编号查询':'Enter project name or code to Query'" clearable
@blur="search" @empty="search" @enter="search"
/>
<el-button class="btn-lineG" style="color: #fff" @click="search">{{ language == 0 ? '查询' : 'Search' }}
</el-button>
</div>
<div v-if="list.length>0" class="mt30 rollY">
<div v-for="val in list" :key="val.id">
<el-image
v-for="obj in val.resultUrl"
:key="obj"
:src="fillImgUrl(obj)"
:preview-teleported="true"
:preview-src-list="[fillImgUrl(obj)]"
class="resultUrlImag"
/>
</div>
</div>
<div v-else>
<el-empty />
</div>
</div>
</div>
<div v-if="list.length>0" class="text-center">
{{ language == 0 ? '下滑查看更多' : 'Scroll down to view more' }}
</div>
</el-dialog>
</template>
<script setup>
import { ref } from 'vue'
import { ElMessage } from 'element-plus'
import {
getqySchedule
} from '@/apiPc/common'
import { useStorage } from '@vueuse/core/index'
import { fillImgUrl } from '/@/utils/ruoyi'
const language = useStorage('language', 0)
const show = ref(false)
const list = ref([])
const loading = ref(false)
const groupList = ref([])
const teamlist = ref([])
const query = ref('')
const type = ref('')
const cptId = ref()
const search = () => {
if (!query.value) {
ElMessage.warning(language.value == 0 ? '请输入项目编号' : 'Please enter the project number')
return
}
getqySchedule({ projectName: query.value, cptId: cptId.value }).then(res => {
if (!res.data || res.data.length == 0) {
list.value = []
// 提示 '未找到结果,请重新查询'
ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result')
return
}
list.value = res.data
for (const val of list.value) {
if (val.resultUrl) val.resultUrl = val.resultUrl.split(',')
}
}).catch(e => {
loading.value = false
})
}
const open = (param) => {
cptId.value = param.cptId
show.value = true
list.value = []
teamlist.value = []
groupList.value = []
query.value = ''
type.value = ''
loading.value = false
// search()
}
defineExpose({
open
})
</script>
<style lang="scss" scoped>
.tname {
font-size: 14px;
font-weight: bold;
position: relative;
top: -8px
}
.tip {
font-size: 12px;
margin: 4px 0 0;
display: inline-block;
}
.rItem {
max-height: 130px;
cursor: pointer;
border: 1px solid #e1e1e1;
border-radius: 4px;
max-width: 350px;
text-align: center;
line-height: 130px;
padding: 1px;
font-size: 30px;
color: #fff;
margin: 20px auto;
background: linear-gradient(90deg, #8623FC, #453DEA);
&:hover {
background: linear-gradient(90deg, #453DEA, #8623FC);
box-shadow: 0 4px 10px #453DEA;
border: none;
}
}
.nowteamItem {
width: 100%;
border: 1px solid #c8c5ff;
margin-top: 20px;
position: relative;
border-radius: 4px;
padding: 0 0 20px;
background: #FFFFFF;
box-sizing: border-box;
.info {
.nowName {
font-family: "DIN Alternate";
font-size: 60px;
font-weight: bold;
overflow: hidden;
display: block;
margin: 10px;
}
label {
text-align: right;
font-size: 14px;
padding-left: 7%
}
div {
font-size: 14px;
color: #333;
margin: 6px 0 0;
}
}
}
.temell {
.nowteamItem {
padding: 10px;
margin: 0 0 10px;
.nowName {
font-size: 15px;
font-weight: bold;
margin-right: 10px
}
.text-bold {
font-weight: bold;
}
.fontsize14 {
font-size: 14px;
}
}
}
.groupList {
max-height: 70vh;
overflow: auto;
border: 1px solid #e1e1e1;
margin-top: 10px;
li {
padding: 10px;
border-bottom: 1px solid #e1e1e1;
cursor: pointer;
}
}
.searchBox {
height: 50vh;
//overflow-y: auto;
}
.rollY {
height: 45vh;
overflow-y: auto;
}
.resultUrlImag {
width: 100%;
margin-bottom: 10px;
}
</style>
......@@ -2,9 +2,12 @@
<div>
<index-Ch
v-if="language ==0" @backNumber="openBackNumber" @pickup="openPickup" @pop="openMaster"
@schSearch="openSchSearch" @reserveSearch="bookingSearchOpen"
@schSearch="openSchSearch" @reserveSearch="bookingSearchOpen" @performance="openPerformance"
/>
<index-En
v-else @backNumber="openBackNumber" @pickup="openPickup" @pop="openMaster" @reserveSearch="bookingSearchOpen"
@schSearch="openSchSearch" @performance="openPerformance"
/>
<index-En v-else @backNumber="openBackNumber" @pickup="openPickup" @pop="openMaster" @reserveSearch="bookingSearchOpen" @schSearch="openSchSearch" />
<div v-if="showgg" class="fixed_gg">
<!--天气-->
<el-icon class="cclose" @click.stop="showgg=false">
......@@ -81,6 +84,8 @@
<back-number ref="backNumberRef" />
<sch-search ref="schSearchRef" />
<bookingSearch ref="bookingSearchRef" />
<performance ref="performanceRef" />
</div>
</template>
......@@ -93,6 +98,7 @@ import DialogMasterClass from '@/viewsPc/components/masterClass'
import PickUp from '@/viewsPc/components/pickup'
import BackNumber from '@/viewsPc/components/querybackNumber'
import SchSearch from '@/viewsPc/components/schSearch'
import performance from '@/viewsPc/components/performance'
import bookingSearch from '@/viewsPc/components/bookingSearch'
import { useStorage } from '@vueuse/core/index'
import { ref } from 'vue'
......@@ -154,7 +160,15 @@ const openSchSearch = (params) => {
}
proxy.$refs['schSearchRef'].open(obj)
}
const bookingSearchOpen= (params) => {
const openPerformance = (params) => {
const obj = {
title: '成绩查询',
cptId: params.cptId
}
proxy.$refs['performanceRef'].open(obj)
}
const bookingSearchOpen = (params) => {
console.log(params)
const obj = {
title: '日程查询',
......
......@@ -115,20 +115,22 @@
<div class="bgbg btn-group">
<h1 style="color: #fff">{{ matchData?.name }}</h1>
<div class="btn-group">
<a class="zn-btn ml10" target="_blank" @click="goGuide">参赛指南
<el-icon>
<download />
<download/>
</el-icon>
</a>
<a class="zn-btn ml10 btn-q" @click="reserveSearch">预订查询</a>
<a v-show="matchData?.id" class="zn-btn ml10 btn-q " @click="backNumberSearch">背号查询</a>
<a v-show="matchData?.id" class="zn-btn ml10 btn-q" @click="schSearch">日程查询</a>
<a v-show="matchData?.id" class="zn-btn ml10 btn-q" @click="handelPerformance">成绩查询</a>
</div>
</div>
</el-col>
<el-col :lg="14" :sm="24">
<HomeQuick :cpt-name="matchData?.name" :match-id="matchData?.id" />
<HomeQuick :cpt-name="matchData?.name" :match-id="matchData?.id"/>
</el-col>
</el-row>
</div>
......@@ -144,7 +146,7 @@
</div>
<!--赛事日历-->
<el-card :body-style="{ 'padding': '20px 20px' }">
<home-calendar />
<home-calendar/>
</el-card>
</el-col>
<el-col :lg="12" :sm="24">
......@@ -155,12 +157,12 @@
<!--历史排名-->
<el-card :body-style="{ 'padding': '10px 20px 18px' }">
<el-table :data="rank" height="495" stripe @row-click="handleRowClick">
<el-table-column align="center" label="名次" prop="index" width="50" />
<el-table-column align="center" label="名次" prop="index" width="50"/>
<el-table-column label="国家" prop="name">
<template #default="scope">
<div>
<span v-if="scope.row.code != 'tw'" :class="`flag-icon flag-icon-${scope.row.code}`" />
<span v-if="scope.row.code != 'tw'" :class="`flag-icon flag-icon-${scope.row.code}`"/>
<span v-else class="flag-icon">
<img :src="hkImage" alt="" class="hkimg">
</span>
......@@ -303,7 +305,7 @@
<el-col v-for="(n, index) in livelist" v-show="index > 0" :lg="8">
<div class="item" style="padding: 0;margin: 20px 0 0" @click="goDetail(n)">
<div class="imgbox">
<i class="playIcon" />
<i class="playIcon"/>
<img :src="fillImgUrl_webSite(n.picUrl)">
</div>
<div class="info">
......@@ -346,7 +348,7 @@
</div>
<div class="aboutBox">
<div class="content">
<div v-html="aboutUsContent" />
<div v-html="aboutUsContent"/>
<!-- 无锡WDSF亚洲体育舞蹈节是由世界体育舞蹈(无锡)中心(世界体育舞蹈联合、亚洲体育舞蹈联合、中国体育舞蹈联合会和无锡市人民政府共建)打造面向全球的、长期落户的、城市自主的品牌赛事。-->
<!-- 2023年7月首次举办无锡2023年WDSF亚洲体育舞蹈节,包括2023年WDSF世界标准舞锦标赛、2023年WDSF世界体育舞蹈大奖赛(中国无锡)、2023年全国体育舞蹈公开系列赛(无锡站),共吸引来自全球39个国家及地区的1,716名顶级舞者参与。-->
<!-- 同时,并将世界体育舞蹈(无锡)中心成功落户中国无锡,以“节日有竞赛、竞赛节日化”为发展指导原则,“四方”共同努力服务全球舞者。 <div class="shadowbox"/>-->
......@@ -403,7 +405,7 @@
<!-- && maList.invitationSw == '1' -->
<div v-if="clubImage && matchData.visaSw == '1'" style="padding-left: 7px;">
<el-image :preview-src-list="[clubImage]" :src="clubImage" fit="cover" preview-teleported
style="width: 120px" />
style="width: 120px"/>
</div>
</div>
......@@ -411,13 +413,13 @@
<!-- 群聊-->
<div v-if="matchData.chatQrcode" class="fixed_gg_l club">
<el-image :preview-src-list="[fillImgUrl(matchData.chatQrcode)]" :src="fillImgUrl(matchData.chatQrcode)"
fit="cover" preview-teleported style="width: 120px;height: 120px" />
fit="cover" preview-teleported style="width: 120px;height: 120px"/>
</div>
<affix-invitation ref="dialogInvitationRef" />
<affix-invitation ref="dialogInvitationRef"/>
<el-dialog v-model="liveQrcodeShow" :title="language == 0 ? '赛事直播' : 'Live QR Code'" width="350px">
<div v-if="matchData.liveQrcode" style="display: flex;justify-content: space-between">
<el-image :src="fillImgUrl(matchData.liveQrcode)" fit="cover" style="width: 350px;" />
<el-image :src="fillImgUrl(matchData.liveQrcode)" fit="cover" style="width: 350px;"/>
</div>
</el-dialog>
......@@ -426,26 +428,26 @@
<script setup>
import HomeQuick from '@/viewsPc/components/homeQuick'
import HomeCalendar from '@/viewsPc/components/homeCalendar'
import { ref, nextTick, onMounted, watch } from 'vue'
import { getCurrentInstance } from '@vue/runtime-core'
import { getHomePage, getNewsListById, getNewsList, getRank } 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, getRank} from '@/apiPc/webSite'
import {useRouter} from 'vue-router'
import clubImage from '@/assets/logo/club.png'
import { rankList } from '@/assets/js/data'
import {rankList} from '@/assets/js/data'
import _ from 'lodash'
import { Swiper, SwiperSlide } from 'swiper/vue'
import { Autoplay, Navigation } from 'swiper'
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 * as match from '@/apiPc/match'
import { getAboutUs, getppInfo, getZNList } from '@/apiPc/match'
import {getAboutUs, getppInfo, getZNList} from '@/apiPc/match'
import hkImage from '@/assets/nationalFlag/hk.png'
import AffixInvitation from '/@/viewsPc/match/components/affix-invitation.vue'
import { useStorage } from '@vueuse/core/index'
import {useStorage} from '@vueuse/core/index'
import useUserStore from '@/store/modules/user'
import { fillImgUrl } from '/@/utils/ruoyi'
import {fillImgUrl} from '/@/utils/ruoyi'
const language = useStorage('language', 0)
const liveQrcodeShow = ref(false)
......@@ -455,17 +457,17 @@ const navigationPic = ref({
prevEl: '.picprev'
})
const router = useRouter()
const { proxy } = getCurrentInstance()
const {proxy} = getCurrentInstance()
const emit = defineEmits(['pop', 'pickup', 'backNumber', 'schSearch', 'reserveSearch'])
const time = ref(0)
const etime = ref(0)
const personList = ref([
{ name: 'Wolfgang Eliasch', pp: '拉丁舞裁判长 奥地利', src: '/img/1.png' },
{ name: 'Nenad Jeftic', pp: '标准舞裁判长 塞尔维亚', src: '/img/2.png' },
{ name: 'Dorel Bagiu', pp: '罗马尼亚', src: '/img/3.png' },
{ name: 'Eduard Korotin', pp: ' 爱沙尼亚', src: '/img/4.png' },
{ name: 'Ana Cristina Silva', pp: '葡萄牙', src: '/img/5.png' },
{ name: 'Dallas Leslie Williams', pp: '记分长 澳大利亚', src: '/img/6.png' }
{name: 'Wolfgang Eliasch', pp: '拉丁舞裁判长 奥地利', src: '/img/1.png'},
{name: 'Nenad Jeftic', pp: '标准舞裁判长 塞尔维亚', src: '/img/2.png'},
{name: 'Dorel Bagiu', pp: '罗马尼亚', src: '/img/3.png'},
{name: 'Eduard Korotin', pp: ' 爱沙尼亚', src: '/img/4.png'},
{name: 'Ana Cristina Silva', pp: '葡萄牙', src: '/img/5.png'},
{name: 'Dallas Leslie Williams', pp: '记分长 澳大利亚', src: '/img/6.png'}
])
const activeNews = ref(0)
const rank = ref([])
......@@ -533,7 +535,7 @@ const init = () => {
).then(res => {
newest2.value = res.rows
})
match.getMaList({ topFlag: 1 }).then((res) => {
match.getMaList({topFlag: 1}).then((res) => {
maList.value = res.rows
console.log(333, maList.value)
for (const n of maList.value) {
......@@ -558,7 +560,7 @@ const getpartners = () => {
match.getppInfo('10000001').then((res) => {
aboutUsContent.value = res.data.contextZh
})
match.getZNList({ sortId: '2000', language: 1 }).then((res) => {
match.getZNList({sortId: '2000', language: 1}).then((res) => {
partners.value = res.rows
})
}
......@@ -647,6 +649,13 @@ const schSearch = () => {
}
emit('schSearch', params)
}
const handelPerformance=()=>{
const params = {
cptId: matchData.value.id
}
emit('performance', params)
}
const handlePickup = () => {
const params = {
cptId: matchData.value.id
......@@ -978,7 +987,8 @@ function applyInvitation() {
background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
}
.btn-lineG {}
.btn-lineG {
}
}
.mapBox {
......
<template>
<div>
<div class="banner">
<el-carousel :autoplay="false" :interval="2000" arrow="hover" class="forPc" height="450px"
@change="carouselChange">
<el-carousel
:autoplay="false" :interval="2000" arrow="hover" class="forPc" height="450px"
@change="carouselChange"
>
<el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;">
<div class="bannerItem">
<div class="h100" @click.stop="goMatch(n)">
......@@ -42,7 +44,8 @@
</div>
<div
style="position: absolute;bottom:22%;right:5%;z-index: 999;display: flex;width: 580px;justify-content: space-around">
style="position: absolute;bottom:22%;right:5%;z-index: 999;display: flex;width: 580px;justify-content: space-around"
>
<a class=" btn2" style="z-index: 999999" @click.stop="liveQrcodeShowBtn">
<!-- 赛事直播-->
Live Qrcode
......@@ -96,7 +99,8 @@
</div>
<div
style="position: absolute;bottom:20px;z-index: 999;display: flex;width: 380px;justify-content: space-around">
style="position: absolute;bottom:20px;z-index: 999;display: flex;width: 380px;justify-content: space-around"
>
<a class=" btn2-phone" style="z-index: 999999" @click.stop="liveQrcodeShowBtn">
Live Qrcode
......@@ -134,11 +138,10 @@
<Edit />
</el-icon>
</a> -->
<br/>
<a class="zn-btn btn-q" @click="backNumberSearch">Competition
Number</a>
<a class="zn-btn btn-q" @click="schSearchSearch">Schedule
Inquiry</a>
<br>
<a class="zn-btn btn-q" @click="backNumberSearch">Competition Number</a>
<a class="zn-btn btn-q" @click="schSearchSearch">Schedule Inquiry</a>
<a class="zn-btn btn-q" @click="performanceSearch">RESULT QUERY</a>
</div>
......@@ -299,8 +302,10 @@
<el-col :lg="16">
<div class="swiperPic forPx">
<swiper :autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic"
:slides-per-view="3" :space-between="20" class="swiper-wrapper">
<swiper
:autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic"
:slides-per-view="3" :space-between="20" class="swiper-wrapper"
>
<swiper-slide v-for="(n, i) in picList" :key="i">
<div class="picbox" @click="goNewsDetail(n)">
<img :src="fillImgUrl_webSite(n.picUrl)">
......@@ -341,7 +346,10 @@
<h3 class="leftboderTT">INTRODUCTION OF ADJUDICATORS</h3>
</div>
<el-row :gutter="20">
<el-col v-for="n in personList" :key="n.name" :lg="4" :sm="8" :xl="4" :xs="12">
<el-col
v-for="n in personList" :key="n.name" :lg="4" :sm="8" :xl="4"
:xs="12"
>
<div class="teacher">
<div class="imgbox"><img :src="n.src"></div>
<h3 class="esp">{{ n.name }}</h3>
......@@ -411,24 +419,30 @@
<!-- 邀请函-->
<div class="fixed_gg_l yaoQing">
<img src="@/assets/logo/Invitation_e.png" @click="applyInvitation" v-if="matchData.invitationSw == '1'">
<img v-if="matchData.invitationSw == '1'" src="@/assets/logo/Invitation_e.png" @click="applyInvitation">
<div style="padding-left: 7px;">
<el-image v-if="clubImage && matchData.visaSw == '1'" :preview-src-list="[clubImage]" :src="clubImage"
fit="cover" preview-teleported style="width: 124px" />
<el-image
v-if="clubImage && matchData.visaSw == '1'" :preview-src-list="[clubImage]" :src="clubImage"
fit="cover" preview-teleported style="width: 124px"
/>
</div>
</div>
<!-- 群聊-->
<div v-if="matchData.chatQrcode" class="fixed_gg_l club">
<el-image :preview-src-list="[fillImgUrl(matchData.chatQrcode)]" :src="fillImgUrl(matchData.chatQrcode)"
fit="cover" preview-teleported style="width: 120px;height: 120px" />
<el-image
:preview-src-list="[fillImgUrl(matchData.chatQrcode)]" :src="fillImgUrl(matchData.chatQrcode)"
fit="cover" preview-teleported style="width: 120px;height: 120px"
/>
</div>
<affix-invitation ref="dialogInvitationRef" />
<el-dialog v-model="liveQrcodeShow" :title="language == 0 ? '赛事直播' : 'Live QR Code'" width="350px">
<div style="display: flex;justify-content: space-between">
<el-image v-if="matchData.liveQrcode" :src="fillImgUrl(matchData.liveQrcode)" fit="cover"
style="max-width: 350px;" />
<el-image
v-if="matchData.liveQrcode" :src="fillImgUrl(matchData.liveQrcode)" fit="cover"
style="max-width: 350px;"
/>
</div>
</el-dialog>
......@@ -464,7 +478,7 @@ const navigationPic = ref({
})
const router = useRouter()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['pop', 'backNumber', 'schSearch', 'reserveSearch'])
const emit = defineEmits(['pop', 'backNumber', 'schSearch', 'reserveSearch', 'performance'])
const time = ref(0)
const etime = ref(0)
const liveQrcodeShow = ref(false)
......@@ -503,8 +517,8 @@ const reserveSearch = () => {
var params = {
cptId: matchData.value.id
}
emit('reserveSearch', params); // 向父组件发射事件+参数
};
emit('reserveSearch', params) // 向父组件发射事件+参数
}
function handleRowClick(row) {
console.log(row)
......@@ -626,7 +640,6 @@ const goGuide = () => {
const liveQrcodeShowBtn = () => {
if (!matchData.value.liveQrcode) {
ElMessage.warning('There is currently no live broadcast of the event')
return
} else {
liveQrcodeShow.value = true
}
......@@ -650,6 +663,15 @@ const schSearchSearch = () => {
}
emit('schSearch', params)
}
const performanceSearch = () => {
const params = {
cptId: matchData.value.id
}
console.log(1111)
emit('performance', params)
}
const handlePickup = () => {
const params = {
cptId: matchData.value.id
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!