e3f46817 by 华明祺

no message

1 parent 45b4252e
......@@ -15,7 +15,8 @@
"@element-plus/icons-vue": "2.0.10",
"@videojs-player/vue": "^1.0.0",
"@vueup/vue-quill": "1.1.1",
"@vueuse/core": "^10.1.2",
"@vueuse/core": "^13.4.0",
"@vueuse/router": "^13.4.0",
"axios": "0.27.2",
"crypto-js": "^4.1.1",
"echarts": "5.4.0",
......
......@@ -32,7 +32,9 @@
<el-col :span="14">
<ul>
<li>Postal code:214000</li>
<li>Address:100 meters northeast of the intersection of Hefeng Road and Qingshu, the Taihu Lake New Town, Wuxi, Jiangsu</li>
<li>Address:100 meters northeast of the intersection of Hefeng Road and Qingshu, the Taihu Lake New Town,
Wuxi, Jiangsu
</li>
</ul>
</el-col>
<el-col :span="6">
......@@ -56,22 +58,25 @@
</div>
<div class="fixed-right forPc">
<div class="mlb" v-if="language===0">
<div @click="goAround" class="mb10 pb5">
<a>
<img class="kf" src="@/assets/logo/btn02.png"/>
<div class="text-center mt10">周边活动</div>
</a>
</div>
<div onclick="window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=6c500b60-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=ZHCN','_blank','height=700px,width=700px,top=50,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="客服" >
<div @click="goAround" class="mb10 pb5">
<a>
<img class="kf" src="@/assets/logo/btn02.png"/>
<div class="text-center mt10">周边活动</div>
</a>
</div>
<div
style="display: none" title="客服"
onclick="window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=6c500b60-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=ZHCN','_blank','height=700px,width=700px,top=50,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')"
>
<img class="kf" src="@/assets/logo/btn01.png"/>
<div class="text-center mt10">在线客服</div>
</div>
<!-- <div @click="goHelpZH">-->
<!-- <a>-->
<!-- <img class="kf" src="@/assets/logo/btn02.png"/>-->
<!-- <div class="text-center mt10">周边活动</div>-->
<!-- </a>-->
<!-- </div>-->
<!-- <div @click="goHelpZH">-->
<!-- <a>-->
<!-- <img class="kf" src="@/assets/logo/btn02.png"/>-->
<!-- <div class="text-center mt10">周边活动</div>-->
<!-- </a>-->
<!-- </div>-->
</div>
<div class="mlb" v-else>
<div @click="goAround" class="mb10 pb5">
......@@ -80,14 +85,16 @@
<div class="text-center mt10">ACTIVITIES</div>
</a>
</div>
<div onclick="window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=707daf80-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=EN','_blank','height=700px,width=700px,top=100,left=150,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="Live Chat">
<div
onclick="window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=707daf80-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=EN','_blank','height=700px,width=700px,top=100,left=150,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')"
title="Live Chat">
<img class="kf" src="@/assets/logo/btn01.png"/>
<div class="text-center ">LIVE CHAT</div>
</div>
<!-- <div @click="goHelp">-->
<!-- <img class="kf" src="@/assets/logo/btn02.png"/>-->
<!-- <div class="text-center uppercase">Video Guide</div>-->
<!-- </div>-->
<!-- <div @click="goHelp">-->
<!-- <img class="kf" src="@/assets/logo/btn02.png"/>-->
<!-- <div class="text-center uppercase">Video Guide</div>-->
<!-- </div>-->
</div>
</div>
</template>
......@@ -96,78 +103,160 @@
import {useStorage} from "@vueuse/core/index";
import {useRouter} from "vue-router";
import {ElMessage} from "element-plus";
const router = useRouter()
const language = useStorage('language', 0)
const goHelp = () => {
router.push({
path: `/news/list/20000100`,
query:{
kindName: language.value===0?'操作指引':'Video Guide'
query: {
kindName: language.value === 0 ? '操作指引' : 'Video Guide'
}
})
}
const goHelpZH = () => {
// ElMessage.success('已下载文件')
router.push({
name: 'guide',
query: {
index:8
}
})
router.push({
name: 'guide',
query: {
index: 8
}
})
}
const goAround = () => {
//周边活动
router.push({path: `/about/wuDao`,query: {activeIndex: '2'}})
router.push({path: `/about/wuDao`, query: {activeIndex: '2'}})
}
</script>
<style lang="scss" scoped>
.kf{width: 45px;margin: auto;height: auto;
.kf {
width: 45px;
margin: auto;
height: auto;
//animation: pop 2s infinite;
}
.fixed-right{position: fixed;right: 0;top: 65%;z-index: 9;
.mlb{background: #fff;border-radius: 10px 0 0 10px;box-shadow: 0 2px 8px #aaa;
padding: 10px 8px;text-align: center;cursor: pointer;
div{text-transform: uppercase;}
div:first-child{border-bottom: 0.5px solid #eee;
.fixed-right {
position: fixed;
right: 0;
top: 65%;
z-index: 9;
.mlb {
background: #fff;
border-radius: 10px 0 0 10px;
box-shadow: 0 2px 8px #aaa;
padding: 10px 8px;
text-align: center;
cursor: pointer;
div {
text-transform: uppercase;
}
div:first-child {
border-bottom: 0.5px solid #eee;
//padding: 0 0 10px;margin-bottom: 10px;
}
div:hover{.gradient-text{font-weight: bold;}}
div:hover {
.gradient-text {
font-weight: bold;
}
}
}
}
.copyright{font-size: 14px;opacity: 0.88;color: #4C5359;}
.footAll{background: #E0E3E5;;padding: 36px 0 5px;
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-left: 15px;
&:hover{text-decoration: underline;}
.copyright {
font-size: 14px;
opacity: 0.88;
color: #4C5359;
}
.footAll {
background: #E0E3E5;;
padding: 36px 0 5px;
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-left: 15px;
&:hover {
text-decoration: underline;
}
}
}
}
img{height: 80px;}
img {
height: 80px;
}
}
.gradient-text {
font-family: FZJunHeiS-B-GB;
font-weight: 600;font-size: 17px;
font-weight: 600;
font-size: 17px;
background: linear-gradient(0deg, #8226FC 0%, #483BEB 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
@media (max-width: 500px) {
.forWei{display: none;}
.footAll{padding:10px 0;
ul {
li {
font-size: 10px;line-height: 1.4;
}
.forWei {
display: none;
}
.footAll {
padding: 10px 0;
ul {
li {
font-size: 10px;
line-height: 1.4;
}
img{height: 60px;}
p{font-size: 10px;line-height: 1.4;}
.copyright{font-size: 10px;line-height: 1.4;}
}
img {
height: 60px;
}
p {
font-size: 10px;
line-height: 1.4;
}
.copyright {
font-size: 10px;
line-height: 1.4;
}
}
}
.ffoot{display: inline-flex;
img{width: 20px;height: 20px;display: inline-block;position: relative;top: 4px;margin-right: 4px;}
.ffoot {
display: inline-flex;
img {
width: 20px;
height: 20px;
display: inline-block;
position: relative;
top: 4px;
margin-right: 4px;
}
}
</style>
......
......@@ -92,6 +92,8 @@
<div v-if="labelObj.tv==1"><img src="@/assets/img/svg/tag18@2x.png"/>{{ language==0 ?'电视': 'tv' }}</div>
<div v-if="labelObj.hours==1"><img src="@/assets/img/svg/tag19@2x.png"/>{{ language==0 ?'24小时前台': '24Hours Available' }}</div>
<div v-if="labelObj.breakfast==1"><img src="@/assets/img/svg/tag20@2x.png"/>{{ language==0 ?'早餐': 'breakfast' }}</div>
<div v-if="labelObj.ntatorium==1"><img src="@/assets/img/svg/tag21@2x.png"/>{{ language==0 ?'泳池': 'ntatorium' }}</div>
<div v-if="labelObj.gymnasium==1"><img src="@/assets/img/svg/tag22@2x.png"/>{{ language==0 ?'健身房': 'gymnasium' }}</div>
</div>
</el-card>
......
......@@ -16,12 +16,12 @@
<el-col :sm="12" :lg="4" :xs="12">
<div class="item" @click="goMedia"><img src="@/assets/dance/btn07.png">媒体注册</div>
</el-col>
<!-- <el-col :sm="12" :lg="4" :xs="12">-->
<!-- <div class="item" @click="goAround"><img src="@/assets/dance/btn06.png">周边活动</div>-->
<!-- </el-col>-->
<!-- <el-col :sm="12" :lg="4" :xs="12">-->
<!-- <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">赛事直播</div>-->
<!-- </el-col>-->
<!-- <el-col :sm="12" :lg="4" :xs="12">-->
<!-- <div class="item" @click="goAround"><img src="@/assets/dance/btn06.png">周边活动</div>-->
<!-- </el-col>-->
<!-- <el-col :sm="12" :lg="4" :xs="12">-->
<!-- <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">赛事直播</div>-->
<!-- </el-col>-->
</el-row>
</div>
<div class="itemBox_en" v-else>
......@@ -41,18 +41,18 @@
<el-col :sm="12" :lg="4" :xs="12">
<div class="item" @click="goMedia"><img src="@/assets/dance/btn07.png">Media Registration</div>
</el-col>
<!-- <el-col :sm="12" :lg="4" :xs="12">-->
<!-- <div class="item" @click="goAround"><img src="@/assets/dance/btn06.png">Around Activity</div>-->
<!-- </el-col>-->
<!-- <el-col :sm="12" :lg="4" :xs="12">-->
<!-- <div class="item" @click="goAround"><img src="@/assets/dance/btn06.png">Around Activity</div>-->
<!-- </el-col>-->
<!-- <el-col :sm="12" :lg="4" :xs="12">-->
<!-- <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">live streaming</div>-->
<!-- </el-col>-->
<!-- <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">live streaming</div>-->
<!-- </el-col>-->
</el-row>
</div>
<order-remark ref="orderRemarkRef" @submit="goBooking"/>
<affix-invitation ref="dialogInvitationRef"/>
<!-- 媒体注册-->
<!-- 媒体注册-->
<media-register ref="mediaRegisterRef"/>
</template>
......@@ -99,16 +99,16 @@ watch(matchId, (val) => {
form.value = null
})
match.getInfoByCptId({ cptId:props.matchId }).then((res) => {
match.getInfoByCptId({cptId: props.matchId}).then((res) => {
liveData.value = res.data || {}
})
}
})
const liveClick = () => {
if (liveData.value.videoStatus=="1") {
if (liveData.value.videoStatus == "1") {
if(language.value==0){
if (language.value == 0) {
window.open(liveData.value.videoUrlCn)
} else {
......@@ -124,7 +124,7 @@ const goAbout = () => {
}
const goAround = () => {
//周边活动
router.push({path: `/about/wuDao`,query: {activeIndex: '2'}})
router.push({path: `/about/wuDao`, query: {activeIndex: '2'}})
}
onMounted(() => {
......@@ -135,6 +135,7 @@ function building() {
ElMessage.warning(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.')
return
}
function applyInvitation() {
var obj = {
title: language.value == 0 ? '邀请函申请' : 'Visa Invitation Letter ',
......@@ -142,13 +143,18 @@ function applyInvitation() {
}
proxy.$refs['dialogInvitationRef'].open(obj)
}
const user = useUserStore().user
function goMedia() {
proxy.$modal.msgWarning(language.value == 0 ? '暂未开放' :'Not yet open')
return;
//如果没登录
if (!user) {
ElMessage({
type: 'warning',
message: language.value == 0 ? '请先登录' : 'Please log in first',
message: language.value == 0 ? '请先登录' : 'Please login first',
})
return
}
......@@ -162,16 +168,16 @@ function popRemark(type) {
return
}
if(type == '0'){
if (type == '0') {
// 签证
if(language.value === 0){
if (language.value === 0) {
ElMessage.warning('请切换英文页面办理')
return
} else {
if (!user) {
ElMessage({
type: 'warning',
message: language.value == 0 ? '请先登录' : 'Please log in first',
message: language.value == 0 ? '请先登录' : 'Please login first',
})
return
}
......@@ -200,20 +206,20 @@ function popRemark(type) {
proxy.$refs['orderRemarkRef'].open(params)
}
function goBooking(n) {
function goBooking(n, f) {
switch (n) {
case 10:
// 票务
// router.push({
// path: `/booking/ticket/${props.matchId}`,
// params: {id:props.matchId},
// query: {id: props.matchId}
// path: `/booking/ticket/${props.matchId}`,
// params: {id:props.matchId},
// query: {id: props.matchId}
// })
break;
case 1:
//酒店
router.push({path: `/booking/hotel/${props.matchId}`})
router.push({path: `/booking/hotel/${props.matchId}`, query: {flag: f}})
break;
case 2:
//车辆
......@@ -236,29 +242,43 @@ function goBooking(n) {
</script>
<style scoped lang="scss">
.itemBox,.itemBox_en {
padding: 20px;background: #fff;box-shadow: 0 0 46px 0 rgba(1,16,64,0.08);
.itemBox, .itemBox_en {
padding: 20px;
background: #fff;
box-shadow: 0 0 46px 0 rgba(1, 16, 64, 0.08);
border-radius: 20px;
}
:deep(.el-col){ max-width: 20%;flex: 0 0 20%;}
:deep(.el-col) {
max-width: 20%;
flex: 0 0 20%;
}
.item {
//box-shadow: 0px 0px 21px 0px rgba(41, 23, 101, 0.14);
padding: 10px 0;
display: flex;
align-items: center;justify-content: center;
align-items: center;
justify-content: center;
font-size: 20px;
background: url("@/assets/dance/btn_bg.png") no-repeat left #FFFFFF;
background-size: 100% 100%;
border-radius: 15px;gap: 10px;
border-radius: 15px;
gap: 10px;
img {object-fit: contain;
width: 75px;height: 75px;
img {
object-fit: contain;
width: 75px;
height: 75px;
}
}
.itemBox_en .item {
flex-direction: column;text-align: center;text-transform: uppercase;
height: 100%;
flex-direction: column;
text-align: center;
text-transform: uppercase;
height: 100%;
img {
position: relative;
transition: all 0.2s;
......@@ -278,11 +298,23 @@ height: 100%;
}
@media screen and (max-width: 768px) {
.itemBox,.itemBox_en{padding: 0 20px 0}
.item{font-size: 16px;height: auto !important;
padding: 15px 0;margin: 10px 0;
img{width: 50px;height: 50px}
.itemBox, .itemBox_en {
padding: 0 20px 0
}
.item {
font-size: 16px;
height: auto !important;
padding: 15px 0;
margin: 10px 0;
img {
width: 50px;
height: 50px
}
}
:deep(.el-col) {
max-width: 50%;
flex: 0 0 50%;
}
:deep(.el-col){ max-width: 50%;flex: 0 0 50%;}
}
</style>
......
<template>
<el-dialog :title="title" v-model="show" width="400px" @close="close">
<el-dialog :title="title" v-model="show" @close="close">
<div>
<h2 class="text-warning text-center" v-if="cptName">{{cptName}}</h2>
......@@ -9,6 +9,15 @@
<div v-if="type==4" class="plr20" v-html="form.reserveDesMeal"></div>
<div v-if="type==5" class="plr20" v-html="form.reserveDesPhoto"></div>
<div v-if="type==10" class="plr20" v-html="form.reserveDesTitck"></div>
<el-row v-if="type==1" justify="center">
<el-radio-group v-model="hotelType">
<el-radio label="0">{{language==0?'运动队酒店':'Team Hotel Reservation'}}</el-radio>
<el-radio label="1">{{language==0?'执委大会酒店':'Conference Hotel Reservation'}}</el-radio>
</el-radio-group>
</el-row>
</div>
<template #footer>
<div class="dialog-footer text-center">
......@@ -31,6 +40,8 @@ const title = ref('')
const cptName = ref('')
const show = ref(false)
const form = ref({})
const hotelType= ref('1')
let matchId = ''
let type = ''
const open = (params) => {
......@@ -64,7 +75,7 @@ function ok() {
// if(!user){
// useUserStore().setVisitor()
// } else {
emit('submit', type)
emit('submit', type, hotelType.value)
// }
}
</script>
......
<template>
<el-dialog
v-model="show" :title="title" width="600px" append-to-body close-icon="CircleClose" center
v-model="show" :title="title" append-to-body close-icon="CircleClose" center
:close-on-click-modal="false" class="pcloginpop"
destroy-on-close
>
......@@ -24,7 +24,7 @@
<el-form :model="form" :rules="rules" ref="iformRef" label-position="top" v-else>
<el-form-item :label="language==0?'申请人类别':'Applicant Type'" required prop="applicatType">
<el-select v-model="form.applicatType">
<el-option label="MNA" value="1"/>
<el-option label="MNA/Team" value="1"/>
<el-option label="Technical Officials" value="2"/>
<el-option label="WT Staff" value="3"/>
<el-option label="Supplier" value="4"/>
......@@ -38,6 +38,11 @@
<el-option :label="language==0?'TE/PU(外办)邀请函':'TE/PU Invitation'" value="2"/>
</el-select>
</el-form-item>
<el-form-item v-if="form.invitationType=='2'" label="Proof of Employment" required prop="invitationFile">
<el-text type="danger">Proof of Employment(Note: This document must be issued by the invitee’s association and must bear an official stamp or signature.)</el-text>
<br/>
<file-upload v-model="form.invitationFile" :is-show-tip="false" :limit="1"></file-upload>
</el-form-item>
<el-form-item :label="language==0?'是否需要中文邀请函':'Do you need a Chinese invitation?'" required prop="chinese">
<el-radio-group v-model="form.chinese">
<el-radio :value="1">{{ language == 0 ? '是' : 'Yes' }}</el-radio>
......@@ -46,18 +51,19 @@
</el-form-item>
<!-- 一般信息-->
<el-form-item :label="language==0?'国家/地区协会名':'MNA Name'" :required="form.applicatType!=2"
<el-form-item :label="language==0?'国家/地区协会名':'MNA/Team Name'" :required="form.applicatType==1"
prop="associationCode">
<el-select v-model="form.associationCode" filterable>
<el-option v-for="item in mnaList" :key="item.code" :label="language==0?item.nameCn:item.nameEn"
:value="item.code"/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'国家/地区协会地址':'MNA Address'" :required="form.applicatType!=2"
<el-form-item :label="language==0?'国家/地区协会地址':'MNA/Team Address'" :required="form.applicatType==1"
prop="associationAddress">
<el-input v-model="form.associationAddress"/>
</el-form-item>
<el-form-item :label="language==0?'邮箱':'Contact Email'" required prop="email">
<el-text type="danger">Note: Notifications from the organizing committee will be sent to this email address.</el-text>
<el-input v-model="form.email" type="email">
<template #append>
<el-button @click="sendEmail" v-loading="codeloading">
......@@ -95,7 +101,8 @@
<!--上传护照,多张-->
<div class="cptVisaInfoBosTable">
<el-form-item :label="language==0?'有效证件':'Passport Copy'" required>
<ImageUpload v-model="form.passportCopy" :is-show-tip="false" :limit="100"
<el-text type="danger">Please ensure that the uploaded passport image is clear, complete, and free from glare or reflections.</el-text>
<ImageUpload v-model="form.passportCopy" :is-show-tip="false" :limit="20"
:action="'/league/visa/getPersonInfoFromCert/3'"
paramName="pic" list-type="text" :show-file-list="false"
:button-text="language==0?'上传':'Upload'" @response="getPassportInfo"
......@@ -230,7 +237,6 @@
</el-table-column>
</el-table>
</div>
</div>
<!-- 补充材料-->
<el-form-item :label="language==0?'补充材料':'Additional Documents'" prop="files">
......@@ -266,7 +272,8 @@ const {proxy} = getCurrentInstance()
const language = useStorage('language', 0)
const form = ref({
gender: '0',
cptVisaInfoBos: []
cptVisaInfoBos: [],
email: user?.email,
})
const show = ref(false)
const codeloading = ref(false)
......@@ -294,7 +301,7 @@ const open = (params) => {
form.value.cptId = params.cptId
getCountryList()
getMNAList()
getVisa()
// getVisa()
}
defineExpose({open})
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!