c6964735 by 杨炀

no message

1 parent 763d3b45
......@@ -1341,8 +1341,10 @@ img{display: block;}
font-size: 16px;
color: var(--el-color-primary);
}
.mb30{margin-bottom: 30px}
.blackBtn{background: #000;}
.btn-black{background: #000;border-radius: 23px;padding: 6px 40px;color: #FFFFFF;font-size: 18px;}
.btn-lineG{background: linear-gradient(90deg, #1B69F8, #0540EC);
border-radius: 23px;padding: 6px 40px;
color: #FFFFFF;
......
......@@ -64,7 +64,7 @@
<!-- <a target="_blank" href="https://wdsfwuxicenter.com/stage-api/fs/file/操作指引.zip">-->
<a>
<img class="kf" src="@/assets/logo/btn02.png"/>
<div class="text-center mt10">指南下载</div>
<div class="text-center mt10">参赛指南</div>
</a>
</div>
</div>
......
......@@ -267,6 +267,19 @@ export const constantRoutes = [
]
},
{
path: 'serverSearch',
component: Empty,
redirect: '/serverSearch',
children: [
{
path: '',
component: () => import('@/viewsPc/booking/serverSearch'),
name: 'serverSearch',
meta: {title: '预约搜索'}
}
]
},
{
path: 'competition',
component: Empty,
redirect: '/competition/index',
......
<template>
<div>
<div class="box">
<el-card class="mt20 mb20" :body-style="{'padding':'0'}">
<div class="lineHead">
<h3>{{ language==0?'服务查询': 'Service Search' }}</h3>
</div>
<div class="pd20">
<div class="topsearch">
<el-input v-if="activeTab==0" placeholder="请输入护照号搜索"/>
<el-input v-else placeholder="请输入姓名搜索"/>
<el-button class="btn-lineG" type="primary" @click="search">
<el-icon class="mr20">
<Search/>
</el-icon>
{{ language==0?'搜索': 'Search' }}
</el-button>
</div>
<div class="stab">
<div :class="activeTab==0?'active':''" @click="activeTab=0">
<img v-show="activeTab!=0" src="@/assets/img/tag01@2x.png"/>
<img v-show="activeTab==0" src="@/assets/img/tag01_dwn@2x.png"/>
{{language==0?'签证服务':''}}
</div>
<div :class="activeTab==1?'active':''" @click="activeTab=1">
<img v-show="activeTab!=1" src="@/assets/img/tag02@2x.png"/>
<img v-show="activeTab==1" src="@/assets/img/tag02_dwn@2x.png"/>
{{language==0?'酒店预定':''}}
</div>
<div :class="activeTab==2?'active':''" @click="activeTab=2">
<img v-show="activeTab!=2" src="@/assets/img/tag03@2x.png"/>
<img v-show="activeTab==2" src="@/assets/img/tag03_dwn@2x.png"/>
{{language==0?'接送服务':''}}
</div>
</div>
<div>
<div v-for="item in list"></div>
</div>
<el-empty v-if="list.length==0"/>
</div>
</el-card>
</div>
</div>
</template>
<script setup>
import {ref, computed, onMounted} from 'vue'
import {queryTicket} from "@/apiPc/common";
import {ElMessage} from "element-plus";
import {useStorage} from "@vueuse/core/index";
const language = useStorage('language', 0)
const activeTab = ref(0)
const form = ref({})
const list = ref([])
const query = ref({
status: 1
})
const loading = ref(false)
function search() {
if (!query.value.idCard) {
ElMessage.warning('请输入证件号')
return
}
loading.value = true
queryTicket(query.value).then(res => {
list.value = res.data
for (let bill of list.value) {
// p.idCard = p.idCard.substring(0,4)+'****'+p.idCard.substring(8,p.idCard.length)
const pattern = new RegExp(query.value.idCard, 'gi')
bill.idCard = bill.idCard.replace(pattern, `<span class="highlight">$&</span>`)
}
loading.value = false
})
}
</script>
<style scoped lang="scss">
.highlight {
background: yellow;
}
.topsearch{display: flex;gap:10px;
.el-input {--el-input-bg-color: #F5F7F9;height: 50px;
--el-input-border-radius: 10px;}
.btn-lineG{border-radius: 10px;height: 50px;width: 130px;font-size: 20px;}
}
.stab{display: flex;gap: 20px;margin: 20px 0 0 ;
div{font-weight: 400;padding: 10px 0;display: flex;align-items: center;
font-size: 18px;cursor: pointer;
color: #4C5359;
img{height: 30px;}
}
.active{color: #030303;border-bottom: 2px solid #030303;}
}
</style>
<template>
<div class="itemBox" v-if="language === 0">
<el-row :gutter="0" justify="space-around">
<el-col :sm="12" :lg="4" :xs="12">
<div class="item" @click="building"><img src="@/assets/dance/btn01.png">签证服务</div>
<el-row :gutter="20">
<el-col :sm="12" :lg="6" :xs="12">
<div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn01.png">签证服务</div>
</el-col>
<el-col :sm="12" :lg="4" :xs="12">
<el-col :sm="12" :lg="6" :xs="12">
<div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn02.png">酒店预订</div>
</el-col>
<el-col :sm="12" :lg="4" :xs="12">
<el-col :sm="12" :lg="6" :xs="12">
<div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn03.png">接送服务</div>
</el-col>
<el-col :sm="12" :lg="4" :xs="12">
<el-col :sm="12" :lg="6" :xs="12">
<div class="item" @click="goAbout"><img src="@/assets/dance/btn04.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="liveClick"><img src="@/assets/dance/btn05.png">赛事直播</div>-->
<!-- </el-col>-->
</el-row>
</div>
<div class="itemBox_en" v-else>
......@@ -32,13 +32,13 @@
<el-col :sm="12" :lg="4" :xs="12">
<div class="item" @click="goAbout"><img src="@/assets/dance/btn04.png">Venue Introduction</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>
<!-- <el-col :sm="12" :lg="4" :xs="12">-->
<!-- <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"/>
</template>
<script setup>
......@@ -46,6 +46,7 @@ import {useRouter} from "vue-router";
const router = useRouter()
import OrderRemark from '@/viewsPc/components/orderRemark'
import AffixInvitation from '@/viewsPc/match/components/affix-invitation'
const {proxy} = getCurrentInstance()
import {useStorage} from "@vueuse/core/index";
......@@ -112,12 +113,24 @@ 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 ',
cptId: matchId.value,
}
proxy.$refs['dialogInvitationRef'].open(obj)
}
function popRemark(type) {
if (!form.value) {
building()
return
}
if(type == '1'){
// 签证
applyInvitation()
return
}
if ((form.value.isJdView == 0 && type == '1')
|| (form.value.isCarView == 0 && type == '2')
|| (form.value.isFoodView == 0 && type == '3')
......@@ -173,8 +186,8 @@ function goBooking(n) {
<style scoped lang="scss">
.itemBox,.itemBox_en {
padding: 20px 0;background: #fff;box-shadow: 0 0 46px 0 rgba(1,16,64,0.08);
border-radius: 20px;margin-bottom: 22px;
padding: 20px;background: #fff;box-shadow: 0 0 46px 0 rgba(1,16,64,0.08);
border-radius: 20px;
}
......
......@@ -21,7 +21,7 @@
</div>
</el-col>
<el-col :sm="24" :lg="14">
<el-button round class="searchfw">
<el-button round class="searchfw" @click="goSearch">
<el-icon class="mr20">
<Search/>
</el-icon>
......@@ -38,6 +38,7 @@ import useUserStore from '@/store/modules/user'
import WeatherIcon from '@/viewsPc/components/weatherIcon'
import {getWeather} from "@/apiPc/webSite"
import dayjs from "dayjs"
import router from "@/routerPc/en";
const language = useUserStore().language
const weatherObj = ref({
forecast:[]
......@@ -55,6 +56,10 @@ function init(){
useUserStore().setWeather(weatherObj.value)
})
}
function goSearch() {
router.push({path: '/serverSearch'})
}
</script>
<style scoped lang="scss">
......
......@@ -90,12 +90,14 @@
</el-carousel>
</div>
<div class="mb30">
<home-weather-bar/>
</div>
<div class="box">
<HomeQuick :match-id="matchData?.id" :cpt-name="matchData?.name"/>
</div>
<home-weather-bar/>
<div id="part0" class="box part">
<el-row :gutter="20">
<el-col :sm="24" :lg="12">
......@@ -248,7 +250,7 @@
<div v-html="aboutUsContent"></div>
</div>
<div class="mt30 text-center">
<a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img
<a class="btn-black" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img
style="filter: brightness(2);height: 8px" src="@/assets/v1/more.png"/></a>
</div>
......
......@@ -169,6 +169,8 @@
</el-form-item>
</el-form>
</div>
</el-dialog>
</template>
......@@ -187,7 +189,8 @@ import {ElMessage, ElMessageBox} from 'element-plus'
import cache from "@/plugins/cache";
import {useStorage} from "@vueuse/core/index";
import {getCaptchaSms, getCaptchaSms2} from "@/apiPc/match";
const user = useUserStore().user
const useStore = useUserStore
const emit = defineEmits(['submitForm'])
const userStore = useUserStore()
const router = useRouter()
......@@ -307,11 +310,9 @@ function showChangePassword() {
}
function showRegister() {
loginStatus.value = 1
if (language.value == 0) {
title.value = '账号注册'
} else {
title.value = 'REGISTER'
if(!user){
useStore().setVisitor()
return
}
}
......
<template>
<el-dialog v-model="show" :title="language==0?'快捷注册':'Quick Login'" close-icon="CircleClose"
width="480" :append-to-body="true" destroy-on-close @close="close">
<el-dialog v-model="show" :title="language==0?'注册':'Login'" close-icon="CircleClose"
width="480" :append-to-body="true" destroy-on-close @close="close" center>
<div>
<el-form class="d-form" size="large" :label-width="language==0?80:150" :label-position="language==0?'right':'top'" style="max-width: 500px;margin: auto">
<el-form-item :label="language==0?'邮箱':'E-mail'" required>
......@@ -46,9 +46,8 @@
</div>
<template #footer>
<div class="dialog-footer text-center">
<el-button type="primary" class="btn-lineG w200px" round @click="register">{{language==0?'登录':'Confirm'}}</el-button>
<a class="btn-black w200px" @click="register">{{language==0?'登录':'Confirm'}}</a>
<div class="text-primary underline mt20 pointer" @click="goLogin">{{language==0?'已有账号去登录':'Already have an account? Login'}}</div>
</div>
</template>
</el-dialog>
......
......@@ -3,15 +3,15 @@
<div class="box">
<el-card class="mt30 mb60" >
<div v-if="language==0">
<h3 class="text-center">体育舞蹈系统用户注册隐私政策</h3>
<h3 class="text-center">系统用户注册隐私政策</h3>
<h4>一、前言</h4>
我们非常重视您的隐私,并致力于保护您的个人信息。本隐私政策旨在向您说明我们在您注册和使用体育舞蹈系统时,如何收集、使用、存储和保护您的个人信息。请您在注册前仔细阅读本隐私政策,确保您充分理解并同意我们的隐私保护措施。
我们非常重视您的隐私,并致力于保护您的个人信息。本隐私政策旨在向您说明我们在您注册和使用系统时,如何收集、使用、存储和保护您的个人信息。请您在注册前仔细阅读本隐私政策,确保您充分理解并同意我们的隐私保护措施。
<h4>二、个人信息的收集</h4>
注册信息:在您注册体育舞蹈系统账户时,我们会收集您的姓名、性别、出生日期、电子邮箱、手机号码等基本信息。<br/>
注册信息:在您注册系统账户时,我们会收集您的姓名、性别、出生日期、电子邮箱、手机号码等基本信息。<br/>
使用信息:在您使用系统服务时,我们会自动收集并记录您的使用信息,包括但不限于访问日期和时间、使用时长、浏览记录等。<br/>
位置信息:根据您的授权,我们可能会收集您的地理位置信息,以便为您提供更准确的服务。<br/>
<h4>三、个人信息的使用</h4>
提供服务:我们会使用您的个人信息为您提供体育舞蹈系统服务,包括但不限于在线课程、社区交流、活动报名等。<br/>
提供服务:我们会使用您的个人信息为您提供系统服务,包括但不限于在线课程、社区交流、活动报名等。<br/>
优化服务:我们会根据您的使用信息和反馈,不断优化和改进我们的服务,提升用户体验。<br/>
推荐内容:我们会根据您的兴趣和偏好,为您推荐相关课程和活动。<br/>
<h4>四、个人信息的存储与保护</h4>
......@@ -26,7 +26,7 @@
投诉与举报:如果您认为我们在处理您的个人信息方面存在不当行为,您可以向相关部门进行投诉或举报。<br/>
<h4>七、其他</h4>
政策更新:我们可能会根据需要对本隐私政策进行更新。更新后的政策将通过系统通知或其他适当方式通知您。请您定期查看本隐私政策,以确保您了解并同意我们的隐私保护措施。<br/>
适用范围:本隐私政策适用于体育舞蹈系统及其相关服务。对于其他第三方服务或网站,我们建议您查阅其相关的隐私政策。<br/>
适用范围:本隐私政策适用于系统及其相关服务。对于其他第三方服务或网站,我们建议您查阅其相关的隐私政策。<br/>
<h4>八、联系方式</h4>
如果您对本隐私政策有任何疑问或建议,请通过以下方式与我们联系:<br/>
<p>电子邮箱:[497118883@qq.com]</p>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!