2a7aa630 by 李婷婷

预定查询

1 parent 00bdea3a
......@@ -185,4 +185,40 @@ export function queryTicket(qy) {
params: qy
})
}
// 酒店
export function orderRoomList(qy) {
return request({
url: `/ota/orderRoom/getReservationRecordList`,
method: 'get',
params: qy
})
}
// 接送
export function orderCarList(qy) {
return request({
url: `/ota/orderCar/getReservationRecordList`,
method: 'get',
params: qy
})
}
export function orderMealList(qy) {
return request({
url: `/ota/orderMeal/getReservationRecordList`,
method: 'get',
params: qy
})
}
export function orderScenicList(qy) {
return request({
url: `/ota/orderScenic/getReservationRecordList`,
method: 'get',
params: qy
})
}
export function orderTicketList(qy) {
return request({
url: `/ota/orderTicket/getReservationRecordList`,
method: 'get',
params: qy
})
}
......
......@@ -75,7 +75,7 @@ onMounted(() => {
function getList() {
query.value.activityId = route.params.cptId
getActivityRestaurantList(query.value).then(res => {
list.value = res.rows
list.value = res.rows.filter(item => item.viewStatus == '1');
})
}
......
......@@ -75,7 +75,7 @@ onMounted(()=>{
function getList() {
loading.value = true
booking.getMakeUpList(query.value).then(res=>{
list.value = res.rows
list.value = res.rows.filter(item => item.viewStatus == 1)
loading.value = false
}).catch(e=>{
loading.value = false
......
......@@ -75,7 +75,7 @@ onMounted(()=>{
function getList() {
loading.value = true
booking.getShootList(query.value).then(res=>{
list.value = res.rows
list.value = res.rows.filter(item => item.viewStatus == 1)
loading.value = false
}).catch(e=>{
loading.value = false
......
......@@ -159,17 +159,20 @@
</div>
</div>
<div class="select_item_box">
<div class="select_item">
<div class="select_item-tag">
<div
v-for="it in tickList[selectForm.sessionType]"
:key="it.id"
:class="[
it.id == selectForm.latstId ? 'tagActive' : 'tag',
it.isView==0?'forbid':''
]"
@click="selectTick(it)"
>
{{ it.name }}
<span v-if="it.viewStatus === '1'" :class="[
it.id == selectForm.latstId ? 'tagActive' : 'tag',
it.isView==0?'forbid':''
]" >
{{ it.name}}
</span>
</div>
<div class="father">
<el-image
......@@ -665,6 +668,65 @@ getmatchData()
cursor: no-drop;
}
}
.select_item-tag{
display: flex;
flex-wrap: wrap;
// gap: 10px;
user-select: none;
.tag_t {
padding: 1px 15px;
font-weight: 400;
font-size: 14px;
color: #493ceb;
border-radius: 6px;
border: 1px solid #453dea;
margin-left: 5px;
}
.tag {
display: flex;
padding: 12px 18px;
background: #eeeeee;
border-radius: 4px;
border: 1px solid #29343c;
font-size: 14px;
color: #4a4a4a;
margin-right: 10px;
margin-bottom: 10px;
cursor: pointer;
}
.tagActive {
display: flex;
padding: 12px 18px;
background: #fff;
border-radius: 4px;
border: 1px solid #493ceb;
font-size: 14px;
color: #493ceb;
margin-right: 10px;
margin-bottom: 10px;
cursor: pointer;
}
.tao {
border: 1px solid #493ceb;
font-size: 14px;
color: #493ceb;
margin-left: 10px;
}
.tagDisabled {
padding: 12px 18px;
background: #878787;
border-radius: 4px;
border: 1px solid #29343c;
font-size: 14px;
color: #4a4a4a;
cursor: no-drop;
}
}
}
.btn {
......@@ -871,4 +933,11 @@ getmatchData()
}
}
}
.view-status-mark {
color: #493ceb; /* 与票档主题色一致 */
font-size: 12px; /* 小于票型名称字号,避免突兀 */
margin-left: 4px; /* 与名称保持间距 */
font-weight: 500;
}
</style>
......
......@@ -100,7 +100,7 @@ onMounted(() => {
function getList() {
loading.value = true
booking.getScenicList(query.value).then(res => {
list.value = res.rows
list.value = res.rows.filter(item => item.viewStatus == '1');
loading.value = false
console.log(list.value)
}).catch(e => {
......
<template>
<el-dialog
v-model="show"
:close-on-click-modal="false"
:title="language==0?'日程查询':'Schedule inquiry'"
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 v-if="!type||type==''">
<div class="rItem" @click="type='0'">{{ language == 0 ? '按项目查询' : 'Query by project' }}</div>
<div class="rItem" @click="type='1'">{{ language == 0 ? '按团队查询' : 'Query by team' }}</div>
<div class="rItem" @click="type='2'">{{ language == 0 ? '按姓名查询' : 'Query by name' }}</div>
</div>
<div v-if="type=='0'">
<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">{{
<el-dialog v-model="show" :close-on-click-modal="false" :title="language === 0 ? '预订查询' : 'Reservation Inquiry'"
align-center append-to-body center class="booking-inquiry-dialog" close-icon="CircleClose" destroy-on-close>
<!-- 查询区域 -->
<div class="search-container">
<el-input v-model="query" :placeholder="language === 0 ? '输入邮箱号查询' : 'Enter email to Query'" clearable
@blur="handleSearch" @empty="handleSearch" @enter="handleSearch" class="search-input" />
<el-button class="btn-lineG" style="color: #fff" @click="handleSearch">{{
language == 0 ? '查询' : 'Search'
}}
</el-button>
</div>
<div v-if="list.length>0" class="mt30 rollY">
<el-timeline>
<el-timeline-item
v-for="(form, index) in list"
:key="index" :timestamp="form.date + ' ' + form.timeStr"
placement="top"
>
<div class="text-primary">
<span v-if="language==1&&form.projectNameEn">{{ form.projectNameEn }}</span>
<span v-else-if="form.projectName">{{ form.projectName }}</span>
<span class="fr">{{ form.changCi }} <i
v-if="form.changCi"
>/ </i> {{ language == 0 ? form.lun : form.lunEn }} </span>
</div>
<div>{{ form.danceType }}</div>
<div>{{ form.address }}</div>
</el-timeline-item>
</el-timeline>
</div>
<div v-else>
<el-empty />
</div>
</div>
<div class="searchBox">
<div v-if="type=='1'">
<div class="flex mt20">
<el-input
v-model="query2"
:placeholder="language==0?'请输入代表队名称至少两字符':'Enter the representing team name,At least two characters'"
clearable
@blur="searchTeam" @empty="searchTeam" @enter="searchTeam"
/>
<el-button class="btn-lineG" style="color: #fff" @click="searchTeam">
{{ language == 0 ? '查询' : 'Search' }}
</el-button>
</div>
<span class="tip">*{{ language == 0 ? '模糊查询' : 'Fuzzy query' }}</span>
<div v-if="showGroupList" class="text-danger text-center">
{{ language == 0 ? '找到多个团体' : 'Found multiple teams' }}
</div>
<div v-if="showGroupList" class="groupList rollY">
<ul>
<li v-for="(item, index) in groupList" :key="index" @click="showDetail(item)">{{ item }}
<el-icon class="fr">
<ArrowRight />
</el-icon>
</li>
</ul>
</div>
<div v-if="teamlist.length>0" class="temell mt20 rollY">
<el-collapse accordion>
<el-collapse-item v-for="(team,index) in teamlist" :key="index" :name="index" :title="team[0].title">
<el-timeline>
<el-timeline-item v-for="(form, index) in team" :key="index" placement="top">
<div class="text-primary" style="position: relative;top:-15px">
{{ form.date + ' ' + form.timeStr + ' / ' + form.address }}
<span v-if="form.lunEn"> / {{ form.lunEn }}</span>
<span v-else-if="form.lun"> / {{ form.lun }}</span>
<span v-if="form.changCi "> / {{ language == 0 ? '场次' : 'Session' }}{{ form.changCi }}</span>
</div>
<div v-if="form.projectNameEn" class="tname">{{ form.projectNameEn }}</div>
<div v-if="form.projectName" class="tname">{{ form.projectName }}</div>
<div>{{ form.danceType }}</div>
</el-timeline-item>
</el-timeline>
</el-collapse-item>
</el-collapse>
</div>
</div>
<!-- 标签页 -->
<el-tabs v-model="activeName" class="tabs-container" @tab-click="handleTabClick">
<el-tab-pane :label="language === 0 ? '酒店' : 'Hotel'" name="1"></el-tab-pane>
<el-tab-pane :label="language === 0 ? '化妆' : 'Makeup'" name="2"></el-tab-pane>
<el-tab-pane :label="language === 0 ? '接送' : 'Transfer'" name="3"></el-tab-pane>
<el-tab-pane :label="language === 0 ? '旅游' : 'Tour'" name="4"></el-tab-pane>
<el-tab-pane :label="language === 0 ? '票务' : 'Tickets'" name="5"></el-tab-pane>
</el-tabs>
<div v-if="type=='2'">
<div class="flex mt30">
<el-input
v-model="query3"
:placeholder="language==0?'输入选手姓名查询':'Enter the name of the player to Query'" clearable
@blur="personalSearch" @empty="personalSearch" @enter="personalSearch"
/>
<el-button class="btn-lineG" style="color: #fff" @click="personalSearch">{{
language == 0 ? '查询' : 'Search'
}}
</el-button>
</div>
<div v-if="list.length>0" class="temell mt20 rollY">
<el-timeline>
<el-timeline-item v-for="(team,j) in list" :key="j" placement="top">
<div v-for="(form, index) in team" v-show="index==0" :key="index">
<div class="text-primary" style="position: relative;top:-15px">
{{ form.date + ' ' + form.timeStr + ' / ' + form.address }}
<span v-if="form.lunEn"> / {{ form.lunEn }}</span>
<span v-else-if="form.lun"> / {{ form.lun }}</span>
<span v-if="form.changCi "> / {{ language == 0 ? '场次' : 'Session' }}{{ form.changCi }}</span>
</div>
<div v-if="form.projectNameEn" class="tname">{{ form.projectNameEn }}</div>
<div v-if="form.projectName" class="tname">{{ form.projectName }}</div>
<div>{{ form.danceType }}</div>
</div>
<div v-for="(form, index) in team" v-show="index>0" :key="index" style="margin: 8px 0 0">
{{ form.date + ' ' + form.timeStr + ' / ' + form.address }}
<span v-if="form.lunEn"> / {{ form.lunEn }}</span>
<span v-else-if="form.lun"> / {{ form.lun }}</span>
<span v-if="form.changCi "> / {{ language == 0 ? '场次' : 'Session' }}{{ form.changCi }}</span>
</div>
</el-timeline-item>
</el-timeline>
</div>
</div>
<!-- 加载状态 -->
<div v-if="loading" class="loading-container">
<el-loading :text="language === 0 ? '查询中...' : 'Searching...'" />
</div>
<!-- 结果列表 -->
<div v-else class="results-container">
<!-- 酒店 -->
<el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '1'">
<p><span class="label">{{ language === 0 ? '酒店名称:' : 'Hotel Name:' }}</span>{{ item.hotelName }}</p>
<p><span class="label">{{ language === 0 ? '酒店联系人:' : 'Contact Person:' }}</span>{{ item.contact || '-' }}
</p>
<p><span class="label">{{ language === 0 ? '预定日期:' : 'Booking Date:' }}</span>{{ item.handleDate }}</p>
<p><span class="label">{{ language === 0 ? '预定数量:' : 'Quantity:' }}</span>{{ item.roomNum }}</p>
<p><span class="label">{{ language === 0 ? '入住人:' : 'Guest:' }}</span>{{ item.rzUsers }}</p>
</el-card>
<!-- 化妆 -->
<el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '2'">
<p><span class="label">{{ language === 0 ? '商家名称:' : 'Merchant:' }}</span>{{ item.name }}</p>
<p><span class="label">{{ language === 0 ? '套餐名称:' : 'Package:' }}</span>{{ item.meal?.packageName || '-' }}</p>
<p><span class="label">{{ language === 0 ? '工作室联系人:' : 'Studio Contact:' }}</span>{{ item.contacts }}</p>
<p><span class="label">{{ language === 0 ? '预定数量:' : 'Quantity:' }}</span>{{ item.num }}</p>
<p><span class="label">{{ language === 0 ? '预定时间:' : 'Booking Time:' }}</span>{{ item.payDate }}</p>
</el-card>
<!-- 接送 -->
<el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '3'">
<p><span class="label">{{ language === 0 ? '出发地:' : 'From:' }}</span>{{ item.resName.split('——')[0] || '-' }}
</p>
<p><span class="label">{{ language === 0 ? '终点地:' : 'To:' }}</span>{{ item.resName.split('——')[1] || '-' }}</p>
<p><span class="label">{{ language === 0 ? '用车日期:' : 'Date:' }}</span>{{ item.revTime }}</p>
<p><span class="label">{{ language === 0 ? '乘坐人:' : 'Passengers:' }}</span><span v-html="item.person"></span>
</p>
</el-card>
<!-- 旅游 -->
<el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '4'">
<p><span class="label">{{ language === 0 ? '景点名称:' : 'Attraction:' }}</span>{{ item.name }}</p>
<p><span class="label">{{ language === 0 ? '景区联系人:' : 'Contact:' }}</span>{{ item.contact }}</p>
<p><span class="label">{{ language === 0 ? '预约日期:' : 'Booking Date:' }}</span>{{ item.dcStart }}</p>
<p><span class="label">{{ language === 0 ? '预约人:' : 'Booker:' }}</span>{{ item.contacts }}</p>
<p><span class="label">{{ language === 0 ? '集合地点:' : 'Meeting Point:' }}</span>{{ item.address || '-' }}
</p>
<p><span class="label">{{ language === 0 ? '集合时间:' : 'Meeting Time:' }}</span>{{ item.startTime || '-' }}</p>
</el-card>
<!-- 票务 -->
<el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '5'">
<p><span class="label">{{ language === 0 ? '票型:' : 'Ticket Type:' }}</span>{{ item.ticketTypeStr }}</p>
<p><span class="label">{{ language === 0 ? '预定日期:' : 'Booking Date:' }}</span>{{ item.ticketTimeName }}</p>
<p><span class="label">{{ language === 0 ? '场次:' : 'Session:' }}</span>{{ item.sessionTypeName }}</p>
<p><span class="label">{{ language === 0 ? '场馆:' : 'Venue:' }}</span>{{ item.stadiumName }}</p>
<p><span class="label">{{ language === 0 ? '区域:' : 'Area:' }}</span>{{ item.ticketName || '-' }}</p>
<p><span class="label">{{ language === 0 ? '观影人:' : 'Attendees:' }}</span><span v-html="item.customers"></span>
</p>
</el-card>
<!-- 无结果 -->
<div v-if="list.length === 0" class="empty-container">
<el-empty :description="language === 0 ? '暂无相关预定记录' : 'No records found'" />
</div>
<div v-if="list.length>0||showGroupList.length>0||teamlist.length>0||groupList.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 { ElMessage, ElLoading } from 'element-plus'
import {
getquerySchedule2Pre,
getqySchedule,
getqySchedule2,
getTeamBackNumber,
getTeamBackNumberPre, queryScheduleSingle
orderRoomList,//酒店
orderMealList,//化妆
orderCarList,//接送
orderScenicList,//旅游
orderTicketList,//票务
} from '@/apiPc/common'
import { useStorage } from '@vueuse/core/index'
// 状态管理
const language = useStorage('language', 0)
const show = ref(false)
// const form = ref({})
const list = ref([])
const loading = ref(false)
const groupList = ref([])
const teamlist = ref([])
const query = ref('')
const query2 = ref('')
const query3 = ref('')
const type = ref('')
const showGroupList = ref(false)
const cptId = ref()
const activeName = ref('1')
const search = () => {
if (!query.value) {
ElMessage.warning(language.value == 0 ? '请输入搜索关键词' : 'Enter project name or code to Query')
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
// 处理tab切换
const handleTabClick = (val) => {
activeName.value = val.paneName
if (query.value) {
handleSearch()
}
list.value = res.data
}).catch(e => {
loading.value = false
})
}
const searchTeam = () => {
teamlist.value = []
if (!query2.value || query2.value.length < 2) {
ElMessage.warning(language.value == 0 ? '请输入代表队名称至少两字符' : 'Enter the representing team name,At least two characters')
// 处理搜索
const handleSearch = () => {
// 验证输入
if (!query.value) {
ElMessage.warning(language.value === 0 ? '请输入邮箱号' : 'Enter email to Query')
return
}
// 显示加载状态
loading.value = true
getquerySchedule2Pre({ groupName: query2.value, cptId: cptId.value }).then(res => {
loading.value = false
if (!res.data || res.data.length == 0) {
groupList.value = []
// 提示 '未找到结果,请重新查询'
ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result')
return
}
groupList.value = res.data
if (groupList.value.length == 1) {
showDetail(groupList.value[0])
}
if (groupList.value.length > 1) {
showGroupList.value = true
}
}).catch(e => {
loading.value = false
})
}
const personalSearch = () => {
if (!query3.value) {
ElMessage.warning(language.value == 0 ? '请输入搜索关键词' : 'Enter project name or code to Query')
return
list.value = []
// 根据当前tab调用不同接口
const params = { createBy: query.value }
let requestPromise;
switch (activeName.value) {
case '1':
requestPromise = orderRoomList(params)
break
case '2':
requestPromise = orderMealList(params)
break
case '3':
requestPromise = orderCarList(params)
break
case '4':
requestPromise = orderScenicList(params)
break
case '5':
requestPromise = orderTicketList(params)
break
default:
requestPromise = Promise.reject(new Error('Invalid tab'))
}
loading.value = true
queryScheduleSingle({ query: query3.value, cptId: cptId.value }).then(res => {
// 处理请求结果
requestPromise.then(res => {
loading.value = false
if (!res.data || res.data.length == 0) {
if (!res.rows || res.rows.length === 0) {
list.value = []
// 提示 '未找到结果,请重新查询'
ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result')
ElMessage.info(language.value === 0 ? '未找到结果,请重新查询' : 'No results found')
return
}
list.value = res.data
list.value = res.rows
}).catch(e => {
loading.value = false
ElMessage.error(language.value === 0 ? '查询失败,请稍后重试' : 'Query failed, please try again later')
console.error('查询错误:', e)
})
}
// 打开对话框
const open = (param) => {
console.log(param)
cptId.value = param.cptId
cptId.value = param?.cptId
show.value = true
list.value = []
teamlist.value = []
groupList.value = []
query.value = ''
type.value = ''
activeName.value = '1'
loading.value = false
}
// 暴露方法
defineExpose({
open
})
function showDetail(name) {
query2.value = name
showGroupList.value = false
loading.value = true
getqySchedule2({ groupName: name, cptId: cptId.value }).then(res => {
loading.value = false
teamlist.value = res.data
}).catch(e => {
loading.value = false
})
}
</script>
<style lang="scss" scoped>
.tname {
font-size: 14px;
font-weight: bold;
position: relative;
top: -8px
}
.booking-inquiry-dialog {
min-width: 300px;
max-width: 500px;
padding: 15px;
.tip {
font-size: 12px;
margin: 4px 0 0;
display: inline-block;
// 适配移动端
@media (max-width: 768px) {
width: 90% !important;
max-width: none;
}
}
.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);
.search-container {
display: flex;
gap: 10px;
margin-bottom: 20px;
width: 100%;
.search-input {
flex: 1;
}
.search-btn {
background-color: #409eff;
color: white;
&:hover {
background: linear-gradient(90deg, #453DEA, #8623FC);
box-shadow: 0 4px 10px #453DEA;
border: none;
background-color: #66b1ff;
}
}
}
.nowteamItem {
.tabs-container {
margin-bottom: 20px;
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%
::v-deep .el-tabs__nav {
flex-wrap: wrap;
}
div {
font-size: 14px;
color: #333;
margin: 6px 0 0;
}
::v-deep .el-tabs__item {
margin-bottom: 5px;
}
}
.temell {
.nowteamItem {
padding: 10px;
margin: 0 0 10px;
.loading-container {
display: flex;
justify-content: center;
align-items: center;
padding: 40px 0;
}
.nowName {
font-size: 15px;
font-weight: bold;
margin-right: 10px
}
.results-container {
max-height: 500px;
overflow-y: auto;
padding-right: 5px;
.text-bold {
font-weight: bold;
// 滚动条美化
&::-webkit-scrollbar {
width: 6px;
}
.fontsize14 {
font-size: 14px;
}
&::-webkit-scrollbar-thumb {
background-color: #ddd;
border-radius: 3px;
}
}
.groupList {
max-height: 70vh;
overflow: auto;
border: 1px solid #e1e1e1;
margin-top: 10px;
.result-card {
margin-bottom: 15px;
border-radius: 6px;
overflow: hidden;
li {
padding: 10px;
border-bottom: 1px solid #e1e1e1;
cursor: pointer;
::v-deep .el-card__body {
padding: 15px;
}
}
.searchBox {
height: 50vh;
//overflow-y: auto;
p {
margin: 0 0 8px 0;
line-height: 1.5;
font-size: 14px;
.label {
color: #666;
font-weight: 500;
}
}
p:last-child {
margin-bottom: 0;
}
}
.rollY {
height: 45vh;
overflow-y: auto;
.empty-container {
padding: 40px 0;
text-align: center;
}
</style>
......
<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)">
<img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg">
<img v-else class="bannerImg" src="@/assets/dance/banner.png">
<div class="box forPc" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;">
<div v-if="n.time>0" class="banner-count" @click="goMatch(n)">
<div v-if="n.time > 0" class="banner-count" @click="goMatch(n)">
距离开始还有
<van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
<template #default="timeData">
......@@ -34,30 +31,21 @@
</template>
</van-count-down>
</div>
<div v-if="n.timeEnd<0">
<div v-if="n.timeEnd < 0">
<div class="banner-count bb" @click="goMatch(n)">
报名已结束
</div>
</div>
<div v-if="n.time<=0 && n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)">
<div v-if="n.time <= 0 && n.timeEnd >= 0" class="banner-count bb" @click="goMatch(n)">
开始报名
</div>
<div
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"
>赛事直播
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">赛事直播
</a>
<a
class=" btn2"
@click.stop="popMaster"
>公益课
<a class=" btn2" @click.stop="popMaster">公益课
</a>
</div>
......@@ -73,7 +61,7 @@
<img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg">
<img v-else class="bannerImg" src="@/assets/dance/banner.png">
<div style="position: absolute;left: 0;right: 0;top: 100px;margin: auto;">
<div v-if="n.time>0" class="banner-count" @click="goMatch(n)">
<div v-if="n.time > 0" class="banner-count" @click="goMatch(n)">
距离开始还有
<van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
<template #default="timeData">
......@@ -95,31 +83,22 @@
</template>
</van-count-down>
</div>
<div v-if="n.timeEnd<0">
<div v-if="n.timeEnd < 0">
<div class="banner-count bb" @click="goMatch(n)">
报名已结束
</div>
</div>
<div v-if="n.time<=0 && n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)">
<div v-if="n.time <= 0 && n.timeEnd >= 0" class="banner-count bb" @click="goMatch(n)">
开始报名
</div>
</div>
<div
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"
>赛事直播
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">赛事直播
</a>
<a
class=" btn2-phone"
@click.stop="popMaster"
>公益课
<a class=" btn2-phone" @click.stop="popMaster">公益课
</a>
</div>
</div>
......@@ -140,16 +119,10 @@
<download />
</el-icon>
</a>
<a
class="zn-btn ml20 btn-q"
@click="reserveSearch"
>预定查询</a>
<br/>
<a
v-show="matchData?.id" class="zn-btn btn-q mt20"
@click="backNumberSearch"
>背号查询</a>
<a v-show="matchData?.id" class="zn-btn ml20 btn-q" @click="schSearch">日程查询</a>
<a class="zn-btn ml10 btn-q" @click="reserveSearch">预订查询</a>
<a v-show="matchData?.id" class="zn-btn ml10 btn-q mt20" @click="backNumberSearch">背号查询</a>
<a v-show="matchData?.id" class="zn-btn ml10 btn-q" @click="schSearch">日程查询</a>
</div>
</el-col>
<el-col :lg="14" :sm="24">
......@@ -168,7 +141,7 @@
<a class="more" href="#/saiC">MORE</a>
</div>
<!--赛事日历-->
<el-card :body-style="{'padding':'20px 20px'}">
<el-card :body-style="{ 'padding': '20px 20px' }">
<home-calendar />
</el-card>
</el-col>
......@@ -178,14 +151,14 @@
<a class="more" href="#/saiC">MORE</a>
</div>
<!--历史排名-->
<el-card :body-style="{'padding':'10px 20px 18px'}">
<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 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>
......@@ -247,11 +220,7 @@
<a class="more" @click="goNews">MORE</a>
</div>
<el-row :gutter="20">
<el-col
v-for="(n,index) in newest2"
:key="n.id" :lg="8" :sm="8"
:xs="24"
>
<el-col v-for="(n, index) in newest2" :key="n.id" :lg="8" :sm="8" :xs="24">
<div class="activeItem" @click="goDetail(n)">
<div class="imgbox">
<img :src="fillImgUrl_webSite(n.picUrl)">
......@@ -281,7 +250,7 @@
<el-row :gutter="20">
<el-col :lg="8">
<a class="liveImgbox" target="_blank" @click="golive(livelist[0])">
<div v-if="time>0" class="livetimecount">
<div v-if="time > 0" class="livetimecount">
<van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒">
<template #default="timeData">
<div class="block">{{ timeData.days }}
......@@ -299,13 +268,13 @@
</template>
</van-count-down>
</div>
<i v-else-if="etime>0&&time<=0" class="ii">直播中</i>
<i v-else-if="etime > 0 && time <= 0" class="ii">直播中</i>
<!-- <i class="livetimecount" v-if="etime<=0">直播已结束</i>-->
<div class="imgBox">
<img v-if="time>0" src="/img/111.jpg">
<img v-if="time > 0" src="/img/111.jpg">
<img v-else :src="fillImgUrl_webSite(livelist[0]?.picUrl)">
</div>
<h3 v-if="time>0" class="esp">
<h3 v-if="time > 0" class="esp">
2025WDSF亚洲体育舞蹈节
</h3>
<h3 v-else class="esp">
......@@ -315,12 +284,9 @@
</el-col>
<el-col :lg="16">
<div class="swiperPic">
<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">
<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="goDetail(n)">
<img :src="fillImgUrl_webSite(n.picUrl)">
</div>
......@@ -332,11 +298,12 @@
</el-col>
</el-row>
<el-row class="news-l-r">
<el-col v-for="(n,index) in livelist" v-show="index>0" :lg="8">
<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" />
<img :src="fillImgUrl_webSite(n.picUrl)"></div>
<img :src="fillImgUrl_webSite(n.picUrl)">
</div>
<div class="info">
<div class="text-primary small-size">
<span v-if="n.subName">{{ n.subName + ' | ' }}</span>
......@@ -358,10 +325,7 @@
<h3 class="leftboderTT">评委介绍</h3>
</div>
<el-row :gutter="20">
<el-col
v-for="n in personList" :key="n.name" :lg="4" :md="8" :sm="12"
:xl="4" :xs="12"
>
<el-col v-for="n in personList" :key="n.name" :lg="4" :md="8" :sm="12" :xl="4" :xs="12">
<div class="teacher" @click="goLeaderInfo">
<div class="imgbox"><img :src="n.src"></div>
<h3 class="esp">{{ n.name }}</h3>
......@@ -387,8 +351,7 @@
</div>
<div class="mt30 text-center">
<a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img
src="@/assets/v1/more.png" style="filter: brightness(2);height: 8px"
></a>
src="@/assets/v1/more.png" style="filter: brightness(2);height: 8px"></a>
</div>
</div>
......@@ -437,36 +400,22 @@
<img src="@/assets/logo/Invitation_c.png" @click="applyInvitation" v-if="matchData.invitationSw == '1'">
<!-- && 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"
/>
<el-image :preview-src-list="[clubImage]" :src="clubImage" fit="cover" preview-teleported
style="width: 120px" />
</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">
<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>
......@@ -505,7 +454,7 @@ const navigationPic = ref({
})
const router = useRouter()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['pop', 'pickup', 'backNumber', 'schSearch','reserveSearch'])
const emit = defineEmits(['pop', 'pickup', 'backNumber', 'schSearch', 'reserveSearch'])
const time = ref(0)
const etime = ref(0)
const personList = ref([
......@@ -584,7 +533,7 @@ const init = () => {
})
match.getMaList({ topFlag: 1 }).then((res) => {
maList.value = res.rows
console.log(333,maList.value)
console.log(333, maList.value)
for (const n of maList.value) {
const today = dayjs().format('YYYY-MM-DD HH:mm:ss')
if (n.signBeginTime) {
......@@ -665,11 +614,11 @@ const goGuide = () => {
})
}
const liveQrcodeShowBtn = () => {
if(!matchData.value.liveQrcode){
if (!matchData.value.liveQrcode) {
ElMessage.warning('当前赛事暂无直播')
return
}else{
liveQrcodeShow.value=true
} else {
liveQrcodeShow.value = true
}
}
const popMaster = () => {
......@@ -715,7 +664,6 @@ function applyInvitation() {
</script>
<style lang="scss" scoped>
.zn-bg {
background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC);
border-radius: 15px;
......@@ -1028,8 +976,7 @@ function applyInvitation() {
background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
}
.btn-lineG {
}
.btn-lineG {}
}
.mapBox {
......@@ -1146,6 +1093,7 @@ function applyInvitation() {
.box {
width: 94%
}
.calendarList {
padding: 0;
......@@ -1155,12 +1103,15 @@ function applyInvitation() {
}
}
}
.aboutBox {
padding: 20px 30px;
}
.indexTitle {
margin: 30px 0 20px
}
.teacher {
height: 320px;
margin: 0 0 20px;
......@@ -1169,9 +1120,11 @@ function applyInvitation() {
height: 260px
}
}
.activeItem {
margin: 0 0 20px;
}
.mapBox {
div {
padding-left: 40px;
......@@ -1192,9 +1145,11 @@ function applyInvitation() {
word-break: break-all;
}
}
.fixed_gg {
display: none;
}
.bannerItem .banner-count {
flex-direction: column;
transform: scale(0.5);
......@@ -1256,6 +1211,7 @@ function applyInvitation() {
.forPc {
display: none !important;
}
.logobox {
height: 60px;
}
......@@ -1338,6 +1294,7 @@ function applyInvitation() {
color: #fff;
border-radius: 20px;
}
.btn2-phone {
cursor: pointer;
padding: 10px 20px;
......@@ -1375,5 +1332,4 @@ function applyInvitation() {
}
}
}
</style>
......
<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)">
......@@ -13,7 +10,7 @@
<img v-else class="bannerImg" src="@/assets/dance/banner.png">
<div class="box" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;">
<div v-if="n.time>0" class="banner-count">
<div v-if="n.time > 0" class="banner-count">
Countdown
<van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
<template #default="timeData">
......@@ -35,29 +32,22 @@
</template>
</van-count-down>
</div>
<div v-if="n.timeEnd<0">
<div v-if="n.timeEnd < 0">
<div class="banner-count bb" @click="goMatch(n)">
Registration has ended
</div>
</div>
<div v-if="n.time<=0&&n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)">
<div v-if="n.time <= 0 && n.timeEnd >= 0" class="banner-count bb" @click="goMatch(n)">
REGISTER NOW
</div>
<div
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"
>
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
</a>
<a
class=" btn2"
@click.stop="popMaster"
>Junior &Youth Camp REGISTER
<a class=" btn2" @click.stop="popMaster">Junior &Youth Camp REGISTER
</a>
</div>
</div>
......@@ -72,7 +62,7 @@
<img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg">
<img v-else class="bannerImg" src="@/assets/dance/banner.png">
<div style="position: absolute;left: 0;right: 0;top: 100px;margin: auto;">
<div v-if="n.time>0" class="banner-count">
<div v-if="n.time > 0" class="banner-count">
Countdown
<van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
<template #default="timeData">
......@@ -94,31 +84,24 @@
</template>
</van-count-down>
</div>
<div v-if="n.timeEnd<0">
<div v-if="n.timeEnd < 0">
<div class="banner-count bb" @click="goMatch(n)">
Registration has ended
</div>
</div>
<div v-if="n.time<=0&&n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)">
<div v-if="n.time <= 0 && n.timeEnd >= 0" class="banner-count bb" @click="goMatch(n)">
REGISTER NOW
</div>
</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"
>
<a class=" btn2-phone" style="z-index: 999999" @click.stop="liveQrcodeShowBtn">
Live Qrcode
</a>
<a
class=" btn2-phone"
@click.stop="popMaster"
>Junior &Youth Camp REGISTER
<a class=" btn2-phone" @click.stop="popMaster">Junior &Youth Camp REGISTER
</a>
</div>
</div>
......@@ -141,7 +124,7 @@
<download />
</el-icon>
</a>
<a class="zn-btn ml20 btn-q" @click="popMaster">Booking Inquiry</a>
<a class="zn-btn ml20 btn-q" @click="reserveSearch">Reservation Inquiry</a>
<!-- <a
v-if="matchData.isCourseView==1" class="zn-btn ml20 btn-q forPc"
style="font-size: 15px;margin-right: 20px" @click="popMaster"
......@@ -177,7 +160,7 @@
<a class="more" @click="gosaiC">MORE</a>
</div>
<!--赛事日历-->
<el-card :body-style="{'padding':'20px 20px'}">
<el-card :body-style="{ 'padding': '20px 20px' }">
<home-calendar />
</el-card>
</el-col>
......@@ -187,7 +170,7 @@
<!-- <a class="more" href="#/saiC">MORE</a>-->
</div>
<!--历史排名-->
<el-card :body-style="{'padding':'10px 20px 18px'}">
<el-card :body-style="{ 'padding': '10px 20px 18px' }">
<el-table :data="rank" height="490" stripe @row-click="handleRowClick">
<el-table-column align="center" label="RANK" prop="index" width="80">
<!-- <template #default="scope">-->
......@@ -201,7 +184,7 @@
<template #default="scope">
<div>
<!-- <span :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-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>
......@@ -256,11 +239,7 @@
<a class="more" @click="goNews">MORE</a>
</div>
<el-row :gutter="20">
<el-col
v-for="(n,index) in newest2"
:key="n.id" :lg="8" :sm="8"
:xs="24"
>
<el-col v-for="(n, index) in newest2" :key="n.id" :lg="8" :sm="8" :xs="24">
<div class="activeItem" @click="goNewsDetail(n)">
<div class="imgbox">
<img :src="fillImgUrl_webSite(n.picUrl)">
......@@ -291,7 +270,7 @@
<el-row :gutter="20">
<el-col :lg="8">
<a class="liveImgbox" href="https://wx.vzan.com/live/page/1151815649?v=1720589464698" target="_blank">
<div v-if="time>0" class="livetimecount">
<div v-if="time > 0" class="livetimecount">
<van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒">
<template #default="timeData">
<div class="block">{{ timeData.days }}
......@@ -320,12 +299,9 @@
<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-slide v-for="(n,i) in picList" :key="i">
<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)">
</div>
......@@ -338,11 +314,12 @@
</el-col>
</el-row>
<el-row class="news-l-r">
<el-col v-for="(n,index) in livelist" v-show="index>0" :lg="8">
<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="goNewsDetail(n)">
<div class="imgbox">
<i class="playIcon" />
<img :src="fillImgUrl_webSite(n.picUrl)"></div>
<img :src="fillImgUrl_webSite(n.picUrl)">
</div>
<div class="info">
<div class="text-primary small-size">
<span v-if="n.subName">{{ n.subName + ' | ' }}</span>
......@@ -364,10 +341,7 @@
<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>
......@@ -440,36 +414,21 @@
<img src="@/assets/logo/Invitation_e.png" @click="applyInvitation" v-if="matchData.invitationSw == '1'">
<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">
<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>
......@@ -505,7 +464,7 @@ const navigationPic = ref({
})
const router = useRouter()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['pop', 'backNumber', 'schSearch'])
const emit = defineEmits(['pop', 'backNumber', 'schSearch', 'reserveSearch'])
const time = ref(0)
const etime = ref(0)
const liveQrcodeShow = ref(false)
......@@ -540,6 +499,12 @@ const matchData = ref({})
onMounted(() => {
init()
})
const reserveSearch = () => {
var params = {
cptId: matchData.value.id
}
emit('reserveSearch', params); // 向父组件发射事件+参数
};
function handleRowClick(row) {
console.log(row)
......@@ -659,11 +624,11 @@ const goGuide = () => {
})
}
const liveQrcodeShowBtn = () => {
if(!matchData.value.liveQrcode){
if (!matchData.value.liveQrcode) {
ElMessage.warning('There is currently no live broadcast of the event')
return
}else{
liveQrcodeShow.value=true
} else {
liveQrcodeShow.value = true
}
}
......@@ -1169,8 +1134,7 @@ function applyInvitation() {
background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
}
.btn-lineG {
}
.btn-lineG {}
}
.mapBox {
......@@ -1276,6 +1240,7 @@ function applyInvitation() {
.box {
width: 94%
}
.calendarList {
padding: 0;
......@@ -1285,12 +1250,15 @@ function applyInvitation() {
}
}
}
.aboutBox {
padding: 20px 30px;
}
.indexTitle {
margin: 30px 0 20px
}
.teacher {
height: 320px;
margin: 0 0 20px;
......@@ -1299,9 +1267,11 @@ function applyInvitation() {
height: 260px
}
}
.activeItem {
margin: 0 0 20px;
}
.mapBox {
div {
padding-left: 40px;
......@@ -1322,9 +1292,11 @@ function applyInvitation() {
word-break: break-all;
}
}
.fixed_gg {
display: none;
}
.bannerItem .banner-count {
flex-direction: column;
transform: scale(0.5);
......@@ -1336,6 +1308,7 @@ function applyInvitation() {
margin: 30px 0 0;
}
}
.bgbg {
text-align: center;
......@@ -1426,6 +1399,7 @@ function applyInvitation() {
.forPc {
display: none !important;
}
.zn-Box .bgbg {
padding: 10px 0 0;
......@@ -1437,6 +1411,7 @@ function applyInvitation() {
margin-top: 10px
}
}
.logobox {
height: 60px;
}
......@@ -1500,5 +1475,4 @@ function applyInvitation() {
}
}
}
</style>
......
<template>
<el-dialog
v-model="show"
:append-to-body="true"
:close-on-click-modal="false"
:show-close="showClose"
:title="title"
center
class="pcloginpop"
close-icon="CircleClose"
destroy-on-close
style="max-width: 450px;min-width: 350px"
@close="close"
>
<el-dialog v-model="show" :append-to-body="true" :close-on-click-modal="false" :show-close="showClose" :title="title"
center class="pcloginpop" close-icon="CircleClose" destroy-on-close style="max-width: 450px;min-width: 350px"
@close="close">
<div class="pd10" />
<el-form
v-if="loginStatus==0" ref="loginRef" :model="loginForm"
:rules="language==0?loginRules:loginRules_en" class="login-form"
>
<el-form v-if="loginStatus == 0" ref="loginRef" :model="loginForm" :rules="language == 0 ? loginRules : loginRules_en"
class="login-form">
<el-form-item prop="username">
<el-input
v-model.trim="loginForm.username"
:placeholder="language==0?'账号(注册时使用的邮箱)':'Account (e-mail)'"
auto-complete="off"
size="large"
/>
<el-input v-model.trim="loginForm.username" :placeholder="language == 0 ? '账号(注册时使用的邮箱)' : 'Account (e-mail)'"
auto-complete="off" size="large" />
</el-form-item>
<el-form-item prop="password">
<el-input
v-model.trim="loginForm.password"
:placeholder="language==0?'密码':'Password'"
auto-complete="off" show-password
size="large"
type="password"
@keyup.enter="handleLogin"
/>
<el-input v-model.trim="loginForm.password" :placeholder="language == 0 ? '密码' : 'Password'" auto-complete="off"
show-password size="large" type="password" @keyup.enter="handleLogin" />
</el-form-item>
<el-form-item v-if="captchaEnabled" prop="code">
<el-input
v-model.trim="loginForm.code"
:placeholder="language==0?'验证码':'Code'"
auto-complete="off"
size="large"
@keyup.enter="handleLogin"
>
<el-input v-model.trim="loginForm.code" :placeholder="language == 0 ? '验证码' : 'Code'" auto-complete="off" size="large"
@keyup.enter="handleLogin">
<template #append>
<div class="login-code">
<img :src="codeUrl" class="login-code-img" @click="getCode">
......@@ -54,14 +27,8 @@
</el-form-item>
<el-form-item style="width:100%;">
<el-button
:loading="loading"
class="loginBtn"
size="large"
style="width:100%;"
type="primary"
@click.prevent="handleLogin"
>
<el-button :loading="loading" class="loginBtn" size="large" style="width:100%;" type="primary"
@click.prevent="handleLogin">
<span v-if="!loading">{{ language == 0 ? '登 录' : 'Login' }}</span>
<span v-else>{{ language == 0 ? '登 录 中...' : 'Logging in' }}</span>
</el-button>
......@@ -69,15 +36,12 @@
<el-form-item>
<!-- <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 ? '忘记密码' : 'Forgot password' }}?</a>
<a class="text-primary" @click="showChangePassword">{{ language == 0 ? '忘记密码' : 'Forgot password' }}?</a>
<a class="text-primary" @click="showRegister">{{ language == 0 ? '账号注册' : 'Register' }}></a>
</div>
</el-form-item>
<el-form-item>
<div v-if="language==0" class="agreeLine">
<div v-if="language == 0" class="agreeLine">
登录或注册即代表同意
<a target="_blank" @click="goAgreement">《用户协议》</a>
<a target="_blank" @click="goPolicy">《隐私政策》</a>
......@@ -90,7 +54,7 @@
</el-form-item>
</el-form>
<div v-if="loginStatus==1">
<div v-if="loginStatus == 1">
<a class="poLeft" @click="close()">
<el-icon>
<ArrowLeftBold />
......@@ -103,36 +67,25 @@
<h3>{{ language == 0 ? '个人用户' : 'Individual' }}</h3>
</div>
</div>
<div v-if="loginStatus==2">
<div v-if="loginStatus == 2">
<a class="poLeft" @click="close()">
<el-icon>
<ArrowLeftBold />
</el-icon>
</a>
<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"
:placeholder="language==0?'注册时使用的邮箱':'E-mail'"
auto-complete="off" size="large"
@change="changePasswordFormUsername"
/>
<el-input v-model.trim="changePasswordForm.username" :placeholder="language == 0 ? '注册时使用的邮箱' : 'E-mail'"
auto-complete="off" size="large" @change="changePasswordFormUsername" />
</el-form-item>
<el-form-item>
<el-input
v-model.trim="changePasswordForm.code"
:placeholder="language==0?'验证码':'Code'"
auto-complete="off"
size="large"
@keyup.enter="handleLogin"
>
<el-input v-model.trim="changePasswordForm.code" :placeholder="language == 0 ? '验证码' : 'Code'" auto-complete="off"
size="large" @keyup.enter="handleLogin">
<template #append>
<el-button plain style="width: 110px;" type="primary" @click="sendsmsMsg">
<van-count-down v-if="counting" :time="60000" format="ss" @finish="counting=false">
<van-count-down v-if="counting" :time="60000" format="ss" @finish="counting = false">
<template #default="timeData">
<span class="text-primary">{{ timeData.seconds }}{{ language == 0 ? '秒' : 's' }}</span>
</template>
......@@ -147,42 +100,24 @@
</template>
</el-input>
<!-- <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">-->
<Vcode
:fail-text="failVcode" :show="isShow" :slider-text="sliderText" :success-text="successVcode"
:z-index="9999" @success="codeSuccess"
/>
<Vcode :fail-text="failVcode" :show="isShow" :slider-text="sliderText" :success-text="successVcode"
:z-index="9999" @success="codeSuccess" />
<!-- </div>-->
</el-form-item>
<el-form-item prop="password">
<el-input
v-model.trim="changePasswordForm.password"
:placeholder="language==0?'新密码':'New password'"
auto-complete="off" show-password
size="large"
type="password"
@keyup.enter="handleLogin"
/>
<el-input v-model.trim="changePasswordForm.password" :placeholder="language == 0 ? '新密码' : 'New password'"
auto-complete="off" show-password size="large" type="password" @keyup.enter="handleLogin" />
</el-form-item>
<el-form-item prop="confirmPassword">
<el-input
v-model.trim="changePasswordForm.confirmPassword"
:placeholder="language==0?'确认密码':'Confirm password'"
auto-complete="off" show-password
size="large"
type="password"
/>
<el-input v-model.trim="changePasswordForm.confirmPassword"
:placeholder="language == 0 ? '确认密码' : 'Confirm password'" auto-complete="off" show-password size="large"
type="password" />
</el-form-item>
<el-form-item style="width:100%;">
<el-button
:loading="loading"
class="loginBtn"
size="large"
style="width:100%;"
type="primary"
@click.prevent="handleChangePassword"
>
<span v-if="language==0">确定</span>
<el-button :loading="loading" class="loginBtn" size="large" style="width:100%;" type="primary"
@click.prevent="handleChangePassword">
<span v-if="language == 0">确定</span>
<span v-else>Submit</span>
</el-button>
</el-form-item>
......@@ -624,7 +559,8 @@ const goPolicy = () => {
flex: 1 1 auto;
}
.el-input-group__append button.el-button, .el-input-group__append button.el-button:hover {
.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;
......
......@@ -86,12 +86,12 @@
application of visa invitation letter and purchasing insurance etc.</span>
</div>
</el-form-item>
<el-form-item :label="language==0?'证件号':'Passport number'" required>
<el-input v-model="wdsfData.passportNumber" />
</el-form-item>
<el-form-item :label="language==0?'姓名':'Name'" required>
<el-input v-model.trim="wdsfData.certName" />
</el-form-item>
<el-form-item :label="language==0?'证件号':'Passport number'" required>
<el-input v-model="wdsfData.passportNumber" />
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required>
<el-radio-group v-model="wdsfData.sex">
<el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
......@@ -105,6 +105,9 @@
style="width: 100%;" type="date" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'联系方式':'Contact Information'" required>
<el-input v-model.trim="wdsfData.phone" />
</el-form-item>
<div class="h30" />
......@@ -372,6 +375,10 @@ function bigNext() {
ElMessage.warning(language.value == 0 ? '请输入姓名' : 'Please enter your name')
return
}
if (!wdsfData.value.phone) {
ElMessage.warning(language.value == 0 ? '请输入联系方式' : 'Please enter your phone')
return
}
if (user && user.utype == '3') {
const obj = {
card: form.value.card,
......@@ -381,6 +388,7 @@ function bigNext() {
birth: wdsfData.value.birthday,
certName: wdsfData.value.certName,
passportNumber: wdsfData.value.passportNumber,
phone:wdsfData.value.phone,
ocrFlag: '1'
}
if (Array.isArray(wdsfData.value.passportUrl)) {
......@@ -424,6 +432,7 @@ function next() {
certName: wdsfData.value.certName,
birth: wdsfData.value.birthday,
passportNumber: wdsfData.value.passportNumber,
phone:wdsfData.value.phone,
ocrFlag: '1'
}
if (Array.isArray(wdsfData.value.passportUrl)) {
......@@ -449,6 +458,7 @@ function next() {
// personId: wdsfData.value.personId,
username: wdsfData.value.email,
password: form.value.password,
phone:wdsfData.value.phone,
ocrFlag: '1'
}
if (Array.isArray(wdsfData.value.passportUrl)) {
......
......@@ -64,35 +64,40 @@ export default defineConfig(({ mode, command }) => {
proxy: {
// https://cn.vitejs.dev/config/#server-proxy
'/dev-api/ztx-train': {
// target: 'http://192.168.1.118:1896/stage-api',
target: 'https://wdsfwuxicenter.com/stage-api',
target: 'http://192.168.1.22:8081',
// target: 'https://wdsfwuxicenter.com/stage-api',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '')
},
'/dev-api/ztx-match': {
// target: 'http://192.168.1.118:8081',
target: 'https://wdsfwuxicenter.com/stage-api',
target: 'http://192.168.1.22:8081',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'https://wdsfwuxicenter.com/stage-api',
// target: 'https://wdsfwuxicenter.com/stage-api/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '')
},
'/dev-api/ztx-webSite': {
// target: 'http://192.168.1.118:8081',
target: 'https://wdsfwuxicenter.com/stage-api',
target: 'http://192.168.1.22:8081',
// target: 'https://wdsfwuxicenter.com/stage-api',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
},
'/dev-api': {
// target: 'http://192.168.1.213:8081/',
target: 'http://192.168.1.22:8081',
// target: 'http://192.168.1.169:8081',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
target: 'https://wdsfwuxicenter.com/stage-api/',
// target: 'https://wdsfwuxicenter.com/stage-api/',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
},
'/ticket': {
// target: 'http://192.168.1.242:8081/',
target: 'https://wdsfwuxicenter.com/h5/',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
target: 'http://192.168.1.22:8081',
// target: 'https://wdsfwuxicenter.com/h5/',
// target: 'https://ticketh5.wdsfwuxicenter.com/h5/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/ticket/, '')
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!