6692d073 by zhangmeng

2024改成2025

1 parent b1908dcf
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 <div> 2 <div>
3 <!-- top --> 3 <!-- top -->
4 <div class="container top"> 4 <div class="container top">
5 <img :src="fillImgUrl(matchForm.ticketImg)" class="cover_img"/> 5 <img :src="fillImgUrl(matchForm.ticketImg)" class="cover_img">
6 <div class="info"> 6 <div class="info">
7 <div class="title">{{ matchForm.name }}</div> 7 <div class="title">{{ matchForm.name }}</div>
8 <div class="time"> 8 <div class="time">
...@@ -67,8 +67,10 @@ ...@@ -67,8 +67,10 @@
67 {{ triggerLanguage(language, "票档", "Tickets") }} : 67 {{ triggerLanguage(language, "票档", "Tickets") }} :
68 </div> 68 </div>
69 <div v-if="matchForm.ticketLayout"> 69 <div v-if="matchForm.ticketLayout">
70 <span style="color: #493ceb;cursor:pointer;font-weight:600;font-size: 14px" 70 <span
71 @click="show=true"> <span style="color: red;font-size: 18px">*</span> 71 style="color: #493ceb;cursor:pointer;font-weight:600;font-size: 14px"
72 @click="show=true"
73 > <span style="color: red;font-size: 18px">*</span>
72 {{ 74 {{
73 language == 0 ? '点击查看场馆布局' : 'View Venue Layout' 75 language == 0 ? '点击查看场馆布局' : 'View Venue Layout'
74 }} 76 }}
...@@ -141,8 +143,10 @@ ...@@ -141,8 +143,10 @@
141 </div> 143 </div>
142 </div> 144 </div>
143 145
144 <div v-if="endTime<=0" class="btn" style="margin-left: 40px;opacity: 0.5;cursor: not-allowed;margin-top: 10px" 146 <div
145 @click="toSelectClosed"> 147 v-if="endTime<=0" class="btn" style="margin-left: 40px;opacity: 0.5;cursor: not-allowed;margin-top: 10px"
148 @click="toSelectClosed"
149 >
146 {{ 150 {{
147 triggerLanguage(language, "售票结束", "Sale closed") 151 triggerLanguage(language, "售票结束", "Sale closed")
148 }} 152 }}
...@@ -163,8 +167,8 @@ ...@@ -163,8 +167,8 @@
163 <div :class="{'bg':active==1}" class="buBg" @click="active=1">购票说明</div> 167 <div :class="{'bg':active==1}" class="buBg" @click="active=1">购票说明</div>
164 <div :class="{'bg' :active==2}" class="buBg" @click="active=2">购票须知</div> 168 <div :class="{'bg' :active==2}" class="buBg" @click="active=2">购票须知</div>
165 </div> 169 </div>
166 <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes"/> 170 <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes" />
167 <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice"/> 171 <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice" />
168 172
169 <el-dialog v-model="show" title="" width="1000px"> 173 <el-dialog v-model="show" title="" width="1000px">
170 <div> 174 <div>
...@@ -177,30 +181,30 @@ ...@@ -177,30 +181,30 @@
177 181
178 182
179 <script setup> 183 <script setup>
180 import {ref, computed} from "vue"; 184 import { ref, computed } from 'vue'
181 import {listApi, getTicketInfoByActivityId, getTicketListApi, checkNonPayment} from '@/apiPc/booking' 185 import { listApi, getTicketInfoByActivityId, getTicketListApi, checkNonPayment } from '@/apiPc/booking'
182 186
183 import {dayjs} from "element-plus"; 187 import { dayjs } from 'element-plus'
184 import {ElMessageBox, ElMessage} from "element-plus"; 188 import { ElMessageBox, ElMessage } from 'element-plus'
185 import {languageFormat, getDayName} from "@/viewsPc/seat/utils/language"; 189 import { languageFormat, getDayName } from '@/viewsPc/seat/utils/language'
186 import {fillImgUrl} from "/@/utils/ruoyi"; 190 import { fillImgUrl } from '/@/utils/ruoyi'
187 import useUserStore from "/@/store/modules/user"; 191 import useUserStore from '/@/store/modules/user'
188 import {triggerLanguage} from '@/utils/ruoyi' 192 import { triggerLanguage } from '@/utils/ruoyi'
189 import {useStorage} from "@vueuse/core/index"; 193 import { useStorage } from '@vueuse/core/index'
190 194
191 const language = useStorage('language', 0) 195 const language = useStorage('language', 0)
192 const useStore = useUserStore() 196 const useStore = useUserStore()
193 const user = computed(() => useUserStore().user) 197 const user = computed(() => useUserStore().user)
194 const route = useRoute(); 198 const route = useRoute()
195 const router = useRouter(); 199 const router = useRouter()
196 const show = ref(false) 200 const show = ref(false)
197 const activeId = ref(route.params.activeId) 201 const activeId = ref(route.params.activeId)
198 const flag = ref(false) 202 const flag = ref(false)
199 const active = ref(1) 203 const active = ref(1)
200 const countDown = ref(false) 204 const countDown = ref(false)
201 const props = defineProps({ 205 const props = defineProps({
202 activityId: [String, Number], 206 activityId: [String, Number]
203 }); 207 })
204 const timeData = ref() 208 const timeData = ref()
205 const endTime = ref() 209 const endTime = ref()
206 const matchForm = ref({}) 210 const matchForm = ref({})
...@@ -209,7 +213,7 @@ const selectForm = ref({ ...@@ -209,7 +213,7 @@ const selectForm = ref({
209 latId: null, 213 latId: null,
210 id: null, 214 id: null,
211 price: '--', 215 price: '--',
212 priceEn: '--', 216 priceEn: '--'
213 }) 217 })
214 const tickList = ref([]) 218 const tickList = ref([])
215 219
...@@ -217,14 +221,14 @@ const tickList = ref([]) ...@@ -217,14 +221,14 @@ const tickList = ref([])
217 getDetail() 221 getDetail()
218 222
219 async function getDetail() { 223 async function getDetail() {
220 const res = await getTicketInfoByActivityId({activityId: activeId.value}) 224 const res = await getTicketInfoByActivityId({ activityId: activeId.value })
221 matchForm.value = res.data 225 matchForm.value = res.data
222 console.log(res) 226 console.log(res)
223 const today = dayjs().format('YYYY-MM-DD HH:mm:ss') 227 const today = dayjs().format('YYYY-MM-DD HH:mm:ss')
224 timeData.value = dayjs(res.data.ticketStart).diff(today, 'millisecond') 228 timeData.value = dayjs(res.data.ticketStart).diff(today, 'millisecond')
225 endTime.value = dayjs(res.data.ticketEnd).diff(today, 'millisecond') 229 endTime.value = dayjs(res.data.ticketEnd).diff(today, 'millisecond')
226 // if (timeData.value <= nowData.value) countDown.value = true 230 // if (timeData.value <= nowData.value) countDown.value = true
227 // timeData.value = dayjs('2024-08-10 00:00:00').diff(today, 'millisecond') 231 // timeData.value = dayjs('2025-08-10 00:00:00').diff(today, 'millisecond')
228 } 232 }
229 233
230 // 根据赛事ID获取票档 234 // 根据赛事ID获取票档
...@@ -243,8 +247,8 @@ async function getTicketList() { ...@@ -243,8 +247,8 @@ async function getTicketList() {
243 247
244 // 根据票档获取场次 248 // 根据票档获取场次
245 async function getTicketListType() { 249 async function getTicketListType() {
246 let arr = [] 250 const arr = []
247 const res = await listApi({latId: selectForm.value.latId}) 251 const res = await listApi({ latId: selectForm.value.latId })
248 tickList.value = res.rows 252 tickList.value = res.rows
249 for (const v of res.rows) { 253 for (const v of res.rows) {
250 if (v.isView == 0) arr.push(v) 254 if (v.isView == 0) arr.push(v)
...@@ -277,8 +281,8 @@ function selectTick(v) { ...@@ -277,8 +281,8 @@ function selectTick(v) {
277 } 281 }
278 282
279 function toSelectSeat() { 283 function toSelectSeat() {
280 if (!selectForm.value.latId) return ElMessage.error(language.value == 0 ? "请选择票档" : 'Please select a ticket file') 284 if (!selectForm.value.latId) return ElMessage.error(language.value == 0 ? '请选择票档' : 'Please select a ticket file')
281 if (!selectForm.value.id) return ElMessage.error(language.value == 0 ? "请选择时间" : 'Please select time') 285 if (!selectForm.value.id) return ElMessage.error(language.value == 0 ? '请选择时间' : 'Please select time')
282 if (!user.value) { 286 if (!user.value) {
283 useStore.setVisitor() 287 useStore.setVisitor()
284 return 288 return
...@@ -296,10 +300,7 @@ function toSelectSeat() { ...@@ -296,10 +300,7 @@ function toSelectSeat() {
296 } else { 300 } else {
297 router.push('/center/myReservation') 301 router.push('/center/myReservation')
298 } 302 }
299
300 }) 303 })
301
302
303 } 304 }
304 305
305 function toSelectClosed() { 306 function toSelectClosed() {
......
...@@ -15,42 +15,48 @@ ...@@ -15,42 +15,48 @@
15 <div class="esp mt5">{{ n.name }}</div> 15 <div class="esp mt5">{{ n.name }}</div>
16 </li> 16 </li>
17 </ul> 17 </ul>
18 <el-empty v-if="schList.length== 0" 18 <el-empty
19 style="--el-empty-padding:0;--el-empty-description-margin-top:0" 19 v-if="schList.length== 0"
20 :image="`/img/order_no.png`" :image-size="200"/> 20 :image="`/img/order_no.png`"
21 :image-size="200" style="--el-empty-padding:0;--el-empty-description-margin-top:0"
22 />
21 </div> 23 </div>
22 </div> 24 </div>
23 </template> 25 </template>
24 26
25 <script setup> 27 <script setup>
26 import {ref} from "vue"; 28 import { ref } from 'vue'
27 import {dayjs} from "element-plus"; 29 import { dayjs } from 'element-plus'
28 import {getIndexScheduleList} from "@/apiPc/common"; 30 import { getIndexScheduleList } from '@/apiPc/common'
29 import {useRouter} from "vue-router"; 31 import { useRouter } from 'vue-router'
32
30 const router = useRouter() 33 const router = useRouter()
31 const currentDate = ref(new Date()) 34 const currentDate = ref(new Date())
32 const calendarRange = ref([dayjs('2024-07-17').toDate(), dayjs('2024-07-17').toDate()]) 35 const calendarRange = ref([dayjs('2025-07-17').toDate(), dayjs('2025-07-17').toDate()])
33 const schList = ref([]) 36 const schList = ref([])
34 const loading = ref(false) 37 const loading = ref(false)
35 const query = ref({ 38 const query = ref({
36 // currentDate:dayjs().format('YYYY-MM-DD') 39 // currentDate:dayjs().format('YYYY-MM-DD')
37 currentDate: '2024-07-17' 40 currentDate: '2025-07-17'
38 }) 41 })
39 getScheduleList() 42 getScheduleList()
43
40 function getScheduleList() { 44 function getScheduleList() {
41 loading.value = true 45 loading.value = true
42 query.value.currentDate = dayjs(query.value.currentDate).format('YYYY-MM-DD') 46 query.value.currentDate = dayjs(query.value.currentDate).format('YYYY-MM-DD')
43 getIndexScheduleList(query.value).then(res=>{ 47 getIndexScheduleList(query.value).then(res => {
44 loading.value = false 48 loading.value = false
45 schList.value = res.data 49 schList.value = res.data
46 }) 50 })
47 } 51 }
52
48 function selectDate(date) { 53 function selectDate(date) {
49 console.log(dayjs(date).toDate()) 54 console.log(dayjs(date).toDate())
50 console.log(query.value.currentDate) 55 console.log(query.value.currentDate)
51 query.value.currentDate = dayjs(date).toDate() 56 query.value.currentDate = dayjs(date).toDate()
52 getScheduleList() 57 getScheduleList()
53 } 58 }
59
54 function goMatch(n) { 60 function goMatch(n) {
55 router.push({ 61 router.push({
56 name: 'matchDetail', 62 name: 'matchDetail',
...@@ -64,7 +70,7 @@ function goMatch(n) { ...@@ -64,7 +70,7 @@ function goMatch(n) {
64 } 70 }
65 </script> 71 </script>
66 72
67 <style scoped lang="scss"> 73 <style lang="scss" scoped>
68 .el-calendar { 74 .el-calendar {
69 --el-calendar-border: none; 75 --el-calendar-border: none;
70 --el-calendar-cell-width: 40px; 76 --el-calendar-cell-width: 40px;
...@@ -119,7 +125,8 @@ function goMatch(n) { ...@@ -119,7 +125,8 @@ function goMatch(n) {
119 height: 225px; 125 height: 225px;
120 126
121 ul { 127 ul {
122 li {cursor: pointer; 128 li {
129 cursor: pointer;
123 background: #F6F9FE; 130 background: #F6F9FE;
124 margin: 7px 0 7px 20px; 131 margin: 7px 0 7px 20px;
125 position: relative; 132 position: relative;
......
1 <template> 1 <template>
2 <el-dialog 2 <el-dialog
3 v-model="show" :title="title" width="600px" append-to-body close-icon="CircleClose" center 3 v-model="show" :close-on-click-modal="false" :title="title" append-to-body center
4 :close-on-click-modal="false" class="pcloginpop" 4 class="pcloginpop"
5 destroy-on-close 5 close-icon="CircleClose" destroy-on-close
6 width="600px"
6 > 7 >
7 <div class="boxInvitation pd20"> 8 <div class="boxInvitation pd20">
8 <el-steps :active="activeStep" align-center class="mb20"> 9 <el-steps :active="activeStep" align-center class="mb20">
9 <el-step :title="language==0?'报名须知':'Notice'"/> 10 <el-step :title="language==0?'报名须知':'Notice'" />
10 <el-step :title="language==0?'填写信息':'Information'"/> 11 <el-step :title="language==0?'填写信息':'Information'" />
11 <el-step :title="language==0?'选择课程':'Courses'"/> 12 <el-step :title="language==0?'选择课程':'Courses'" />
12 </el-steps> 13 </el-steps>
13 <div v-if="activeStep==0"> 14 <div v-if="activeStep==0">
14 <div class="mb60 xzRich" style="max-height: 50vh;overflow: auto"> 15 <div class="mb60 xzRich" style="max-height: 50vh;overflow: auto">
15 <div v-if="language==0" style="width: 300px;margin: auto"><br/> 16 <div v-if="language==0" style="width: 300px;margin: auto"><br>
16 培训地点:无锡君来世尊酒店<br/> 17 培训地点:无锡君来世尊酒店<br>
17 详细地址:江苏省 无锡市 滨湖区 和风路111号<br/> 18 详细地址:江苏省 无锡市 滨湖区 和风路111号<br>
18 报到时间:2024年7月14日13:30 -17:00<br/> 19 报到时间:2024年7月14日13:30 -17:00<br>
19 联系人:蒋璐<br/> 20 联系人:蒋璐<br>
20 联系电话:15961580050<br/> 21 联系电话:15961580050<br>
21 报名截止日期:<span style="text-decoration: underline">2024-06-30</span><br/> 22 报名截止日期:<span style="text-decoration: underline">2025-06-30</span><br>
22 </div> 23 </div>
23 <div v-else style="width: 400px;margin: auto;text-transform: capitalize"><br/> 24 <div v-else style="width: 400px;margin: auto;text-transform: capitalize"><br>
24 <!-- The age limit for Youth Session: Born between 1st Jan, 2006 and 31st Dec., 2009.<br/>--> 25 <!-- The age limit for Youth Session: Born between 1st Jan, 2006 and 31st Dec., 2009.<br/>-->
25 <!-- The age limit for Juvenile Session: Born after 1 Jan., 2010.<br/>--> 26 <!-- The age limit for Juvenile Session: Born after 1 Jan., 2010.<br/>-->
26 Training Camp Venue:Worldhotel Grand Juna Wuxi<br/> 27 Training Camp Venue:Worldhotel Grand Juna Wuxi<br>
27 Address:No.111 Hefeng Road, Binhu District, Wuxi, Jiangsu<br/> 28 Address:No.111 Hefeng Road, Binhu District, Wuxi, Jiangsu<br>
28 Check-in:From 13:30 to 17:00 on July 14, 2024.<br/> 29 Check-in:From 13:30 to 17:00 on July 14, 2025.<br>
29 Contact Person:Dean Ding<br/> 30 Contact Person:Dean Ding<br>
30 Tel:+86 19951486130<br/> 31 Tel:+86 19951486130<br>
31 Registration Deadline:<span style="text-decoration: underline">2024-06-30</span><br/> 32 Registration Deadline:<span style="text-decoration: underline">2025-06-30</span><br>
32 </div> 33 </div>
33 </div> 34 </div>
34 <div class="text-center" v-loading="loading"> 35 <div v-loading="loading" class="text-center">
35 <el-button type="primary" v-if="courseList.length>0" class="btn-lineG" round @click="setActive(1)"> 36 <el-button v-if="courseList.length>0" class="btn-lineG" round type="primary" @click="setActive(1)">
36 <span v-if="dayjs().format('YYYY-MM-DD')>'2024-06-30'"> 37 <span v-if="dayjs().format('YYYY-MM-DD')>'2025-06-30'">
37 {{ language == 0 ? '报名已结束' : 'Registration has ended' }} 38 {{ language == 0 ? '报名已结束' : 'Registration has ended' }}
38 </span> 39 </span>
39 <span v-else>{{ language == 0 ? '下一步' : 'NEXT' }}</span> 40 <span v-else>{{ language == 0 ? '下一步' : 'NEXT' }}</span>
40 </el-button> 41 </el-button>
41 <el-button type="primary" class="btn-lineG" round v-else @click="close"> 42 <el-button v-else class="btn-lineG" round type="primary" @click="close">
42 {{ language == 0 ? '暂无可报课程' : 'No courses available for reporting' }} 43 {{ language == 0 ? '暂无可报课程' : 'No courses available for reporting' }}
43 </el-button> 44 </el-button>
44 </div> 45 </div>
45 </div> 46 </div>
46 <div v-if="activeStep==1"> 47 <div v-if="activeStep==1">
47 <el-form :model="form" :rules="rules" ref="iformRef" label-position="right" 48 <el-form
48 :label-width="language==0?'80px':'160px'"> 49 ref="iformRef" :label-width="language==0?'80px':'160px'" :model="form" :rules="rules"
49 <el-form-item :label="language==0?'姓名':'Name'" required prop="name"> 50 label-position="right"
50 <el-input v-model="form.name"/> 51 >
52 <el-form-item :label="language==0?'姓名':'Name'" prop="name" required>
53 <el-input v-model="form.name" />
51 </el-form-item> 54 </el-form-item>
52 <el-form-item :label="language==0?'性别':'Gender'" required prop="gender"> 55 <el-form-item :label="language==0?'性别':'Gender'" prop="gender" required>
53 <el-radio-group v-model="form.gender"> 56 <el-radio-group v-model="form.gender">
54 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> 57 <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
55 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> 58 <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
56 </el-radio-group> 59 </el-radio-group>
57 </el-form-item> 60 </el-form-item>
58 <el-form-item :label="language==0?'国籍':'Nationality'" required prop="nationality"> 61 <el-form-item :label="language==0?'国籍':'Nationality'" prop="nationality" required>
59 <el-select filterable v-model="form.nationality" style="width: 100%;"> 62 <el-select v-model="form.nationality" filterable style="width: 100%;">
60 <el-option v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName" 63 <el-option
61 :value="item.id"/> 64 v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
65 :value="item.id"
66 />
62 </el-select> 67 </el-select>
63 </el-form-item> 68 </el-form-item>
64 <el-form-item :label="language==0?'出生日期':'Date of Birth'" required prop="birth"> 69 <el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth" required>
65 <el-date-picker 70 <el-date-picker
66 v-model="form.birth" 71 v-model="form.birth"
67 style="width: 100%;" placeholder="YYYY-MM-DD" 72 format="YYYY-MM-DD" placeholder="YYYY-MM-DD"
68 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 73 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
69 /> 74 />
70 </el-form-item> 75 </el-form-item>
71 <el-form-item :label="language==0?'手机号':'Phone number'" required prop="phone"> 76 <el-form-item :label="language==0?'手机号':'Phone number'" prop="phone" required>
72 <el-input v-model="form.phone"/> 77 <el-input v-model="form.phone" />
73 </el-form-item> 78 </el-form-item>
74 <el-form-item :label="language==0?'邮箱':'Email'" required prop="email"> 79 <el-form-item :label="language==0?'邮箱':'Email'" prop="email" required>
75 <el-input v-model="form.email" type="email"/> 80 <el-input v-model="form.email" type="email" />
76 </el-form-item> 81 </el-form-item>
77 <el-form-item :label="language==0?'证件号':'National license No.'" required prop="passportNo"> 82 <el-form-item :label="language==0?'证件号':'National license No.'" prop="passportNo" required>
78 <el-input v-model="form.passportNo" @blur="checkCard"/> 83 <el-input v-model="form.passportNo" @blur="checkCard" />
79 </el-form-item> 84 </el-form-item>
80 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy"> 85 <el-form-item :label="language==0?'有效证件':'Passport Copy'" prop="passportCopy" required>
81 <image-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false" 86 <image-upload
82 :button-text="language==0?'上传':'Upload'"/> 87 v-model="form.passportCopy" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"
88 :limit="1"
89 />
83 </el-form-item> 90 </el-form-item>
84 <!-- <el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">--> 91 <!-- <el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">-->
85 <!-- <el-date-picker--> 92 <!-- <el-date-picker-->
...@@ -96,52 +103,58 @@ ...@@ -96,52 +103,58 @@
96 <!-- />--> 103 <!-- />-->
97 <!-- </el-form-item>--> 104 <!-- </el-form-item>-->
98 <el-form-item :label="language==0?'备注':'Remark '"> 105 <el-form-item :label="language==0?'备注':'Remark '">
99 <el-input type="textarea" v-model="form.remark" rows="3"/> 106 <el-input v-model="form.remark" rows="3" type="textarea" />
100 </el-form-item> 107 </el-form-item>
101 108
102 <div class="text-center"> 109 <div class="text-center">
103 <el-button size="large" @click="setActive(0)" round plain type="primary"> 110 <el-button plain round size="large" type="primary" @click="setActive(0)">
104 {{ language == 0 ? '上一步' : 'PREV' }} 111 {{ language == 0 ? '上一步' : 'PREV' }}
105 </el-button> 112 </el-button>
106 <el-button type="primary" size="large" @click="checkApplyCourse(2)" round class="btn-lineG"> 113 <el-button class="btn-lineG" round size="large" type="primary" @click="checkApplyCourse(2)">
107 {{ language == 0 ? '下一步' : 'NEXT' }} 114 {{ language == 0 ? '下一步' : 'NEXT' }}
108 </el-button> 115 </el-button>
109 </div> 116 </div>
110 </el-form> 117 </el-form>
111 </div> 118 </div>
112 <div v-if="activeStep==2"> 119 <div v-if="activeStep==2">
113 <div class="text-center pd20" v-if="showR"> 120 <div v-if="showR" class="text-center pd20">
114 <img class="mauto" src="@/assets/dance/ok.png"/> 121 <img class="mauto" src="@/assets/dance/ok.png">
115 <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2> 122 <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>
116 <h4 class="text-center" v-if="language == 0"> 123 <h4 v-if="language == 0" class="text-center">
117 我们已收到您的申请,请在7月14日到无锡报到。 124 我们已收到您的申请,请在7月14日到无锡报到。
118 </h4> 125 </h4>
119 <h4 v-else> 126 <h4 v-else>
120 Your application has been received, 127 Your application has been received,
121 <br/> 128 <br>
122 Please register in Wuxi on July 14. 129 Please register in Wuxi on July 14.
123 </h4> 130 </h4>
124 </div> 131 </div>
125 <div v-else> 132 <div v-else>
126 <div class="tip text-danger mb20" v-if="language==0">*选择参加的课程(最少一项,最多两项)</div> 133 <div v-if="language==0" class="tip text-danger mb20">*选择参加的课程(最少一项,最多两项)</div>
127 <div class="tip text-danger mb20" v-else>*Select the courses to enroll in (at least one, no more than two) 134 <div v-else class="tip text-danger mb20">*Select the courses to enroll in (at least one, no more than two)
128 </div> 135 </div>
129 <el-checkbox-group size="large" v-model="form.courseId" @change="courseChange"> 136 <el-checkbox-group v-model="form.courseId" size="large" @change="courseChange">
130 <div v-for="c in courseList" class="mb20"> 137 <div v-for="c in courseList" class="mb20">
131 <el-checkbox :value="c.id" border class="w100" 138 <el-checkbox
132 :disabled="(form.courseId?.length>=2&&form.courseId.indexOf(c.id)==-1)||disChoose||(form.nationality==240&&c.viewStateCn == 0)||(form.nationality!=240&&c.viewStateEn == 0)"> 139 :disabled="(form.courseId?.length>=2&&form.courseId.indexOf(c.id)==-1)||disChoose||(form.nationality==240&&c.viewStateCn == 0)||(form.nationality!=240&&c.viewStateEn == 0)" :value="c.id" border
140 class="w100"
141 >
133 <div v-if="language==0" style="display: flex"> 142 <div v-if="language==0" style="display: flex">
134 <div> {{ c.name }}{{ c.name.indexOf('青年') > -1 ? '(年龄在15岁~18岁)' : '(年龄在14岁以下)' }}</div> 143 <div> {{ c.name }}{{ c.name.indexOf('青年') > -1 ? '(年龄在15岁~18岁)' : '(年龄在14岁以下)' }}</div>
135 </div> 144 </div>
136 <div v-else> 145 <div v-else>
137 <div> 146 <div>
138 {{ c.nameEn }}{{ c.nameEn.indexOf('Youth') > -1 ? '(Between the age 15 and 18)' : '(Under the age of 14)' }} 147 {{
148 c.nameEn
149 }}{{ c.nameEn.indexOf('Youth') > -1 ? '(Between the age 15 and 18)' : '(Under the age of 14)' }}
139 </div> 150 </div>
140 </div> 151 </div>
141 152
142 <el-tag class="ml20" 153 <el-tag
143 v-if="(form.nationality==240&&c.viewStateCn == 0)||(form.nationality!=240&&c.viewStateEn == 0)" 154 v-if="(form.nationality==240&&c.viewStateCn == 0)||(form.nationality!=240&&c.viewStateEn == 0)"
144 type="danger" effect="dark">{{ language == 0 ? '已报满' : 'Already full' }} 155 class="ml20"
156 effect="dark" type="danger"
157 >{{ language == 0 ? '已报满' : 'Already full' }}
145 </el-tag> 158 </el-tag>
146 </el-checkbox> 159 </el-checkbox>
147 </div> 160 </div>
...@@ -149,10 +162,13 @@ ...@@ -149,10 +162,13 @@
149 162
150 163
151 <div class="text-center"> 164 <div class="text-center">
152 <el-button size="large" @click="setActive(1)" round plain type="primary"> 165 <el-button plain round size="large" type="primary" @click="setActive(1)">
153 {{ language == 0 ? '上一步' : 'PREV' }} 166 {{ language == 0 ? '上一步' : 'PREV' }}
154 </el-button> 167 </el-button>
155 <el-button type="primary" v-if="!disChoose" size="large" @click="submit" round class="btn-lineG w200px"> 168 <el-button
169 v-if="!disChoose" class="btn-lineG w200px" round size="large" type="primary"
170 @click="submit"
171 >
156 {{ language == 0 ? '提交' : 'SUBMIT' }} 172 {{ language == 0 ? '提交' : 'SUBMIT' }}
157 </el-button> 173 </el-button>
158 174
...@@ -166,16 +182,16 @@ ...@@ -166,16 +182,16 @@
166 </template> 182 </template>
167 183
168 <script setup> 184 <script setup>
169 import {useStorage} from "@vueuse/core/index"; 185 import { useStorage } from '@vueuse/core/index'
170 import {getCurrentInstance, watch} from "vue"; 186 import { getCurrentInstance, watch } from 'vue'
171 import {nextTick} from "@vue/runtime-core"; 187 import { nextTick } from '@vue/runtime-core'
172 import {ElMessage, ElMessageBox} from "element-plus"; 188 import { ElMessage, ElMessageBox } from 'element-plus'
173 import {addInvitation, countryList} from "@/apiPc/match"; 189 import { addInvitation, countryList } from '@/apiPc/match'
174 import ImageUpload from "@/components/ImageUpload"; 190 import ImageUpload from '@/components/ImageUpload'
175 import {masterClassList, getByCard, submitMasterApply, getMasterApply, delByCard} from "@/apiPc/common"; 191 import { masterClassList, getByCard, submitMasterApply, getMasterApply, delByCard } from '@/apiPc/common'
176 import dayjs from "dayjs"; 192 import dayjs from 'dayjs'
177 193
178 const {proxy} = getCurrentInstance() 194 const { proxy } = getCurrentInstance()
179 const language = useStorage('language', 0) 195 const language = useStorage('language', 0)
180 const form = ref({}) 196 const form = ref({})
181 const show = ref(false) 197 const show = ref(false)
...@@ -189,14 +205,14 @@ const loading = ref(false) ...@@ -189,14 +205,14 @@ const loading = ref(false)
189 const cptId = ref('') 205 const cptId = ref('')
190 const rules = ref( 206 const rules = ref(
191 { 207 {
192 nationality: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 208 nationality: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
193 name: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},], 209 name: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter' }],
194 email: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},], 210 email: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter' }],
195 birth: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 211 birth: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
196 passportNo: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},], 212 passportNo: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter' }],
197 passportCopy: [{required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload'},], 213 passportCopy: [{ required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload' }],
198 arrival: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 214 arrival: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
199 departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 215 departure: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }]
200 }) 216 })
201 const open = (params) => { 217 const open = (params) => {
202 console.log(params) 218 console.log(params)
...@@ -205,7 +221,7 @@ const open = (params) => { ...@@ -205,7 +221,7 @@ const open = (params) => {
205 cptId.value = params.cptId 221 cptId.value = params.cptId
206 getCourse() 222 getCourse()
207 } 223 }
208 defineExpose({open}) 224 defineExpose({ open })
209 watch(show, (value) => { 225 watch(show, (value) => {
210 if (!value) { 226 if (!value) {
211 form.value = { 227 form.value = {
...@@ -223,14 +239,14 @@ watch(show, (value) => { ...@@ -223,14 +239,14 @@ watch(show, (value) => {
223 function getCourse() { 239 function getCourse() {
224 // '1777256058082189313' 240 // '1777256058082189313'
225 loading.value = true 241 loading.value = true
226 masterClassList({cptId: cptId.value}).then(res => { 242 masterClassList({ cptId: cptId.value }).then(res => {
227 courseList.value = res.data 243 courseList.value = res.data
228 loading.value = false 244 loading.value = false
229 }) 245 })
230 } 246 }
231 247
232 function setActive(n) { 248 function setActive(n) {
233 if(n==1&&dayjs().format('YYYY-MM-DD')>'2024-06-30'){ 249 if (n == 1 && dayjs().format('YYYY-MM-DD') > '2025-06-30') {
234 ElMessage.error(language.value == 0 ? '报名已结束' : 'The application has ended') 250 ElMessage.error(language.value == 0 ? '报名已结束' : 'The application has ended')
235 return 251 return
236 } 252 }
...@@ -242,7 +258,7 @@ function courseChange(e) { ...@@ -242,7 +258,7 @@ function courseChange(e) {
242 } 258 }
243 259
244 function checkApplyCourse(n) { 260 function checkApplyCourse(n) {
245 getMasterApply({card: form.value.passportNo}).then(res => { 261 getMasterApply({ card: form.value.passportNo }).then(res => {
246 if (res.data?.length > 0) { 262 if (res.data?.length > 0) {
247 form.value.courseId = [] 263 form.value.courseId = []
248 for (var n of res.data) { 264 for (var n of res.data) {
...@@ -255,7 +271,7 @@ function checkApplyCourse(n) { ...@@ -255,7 +271,7 @@ function checkApplyCourse(n) {
255 cancelButtonText: language.value == 0 ? '否' : 'Cancel', 271 cancelButtonText: language.value == 0 ? '否' : 'Cancel',
256 type: 'warning' 272 type: 'warning'
257 }).then(() => { 273 }).then(() => {
258 //删除原记录 274 // 删除原记录
259 delByCard(form.value.passportNo).then(res => { 275 delByCard(form.value.passportNo).then(res => {
260 form.value.courseId = [] 276 form.value.courseId = []
261 disChoose.value = false 277 disChoose.value = false
...@@ -269,7 +285,6 @@ function checkApplyCourse(n) { ...@@ -269,7 +285,6 @@ function checkApplyCourse(n) {
269 to2() 285 to2()
270 } 286 }
271 }) 287 })
272
273 } 288 }
274 289
275 function to2() { 290 function to2() {
...@@ -290,7 +305,7 @@ function to2() { ...@@ -290,7 +305,7 @@ function to2() {
290 305
291 306
292 function checkCard() { 307 function checkCard() {
293 getByCard({card: form.value.passportNo}).then(res => { 308 getByCard({ card: form.value.passportNo }).then(res => {
294 if (res.data) { 309 if (res.data) {
295 form.value = res.data 310 form.value = res.data
296 } else { 311 } else {
......
1 <template> 1 <template>
2 <el-dialog 2 <el-dialog
3 v-model="show" :close-on-click-modal="false" :title="title" append-to-body center class="pcloginpop" 3 v-model="show" :close-on-click-modal="false" :title="title" append-to-body center
4 class="pcloginpop"
4 close-icon="CircleClose" destroy-on-close 5 close-icon="CircleClose" destroy-on-close
5 width="900px" 6 width="900px"
6 > 7 >
7 <div class="boxInvitation pd20"> 8 <div class="boxInvitation pd20">
8 <div v-if="!showR"> 9 <div v-if="!showR">
9 <el-form ref="iformRef" :label-width="language==0?'120px':'240px'" :model="form" :rules="rules" 10 <el-form
10 label-position="right"> 11 ref="iformRef" :label-width="language==0?'120px':'240px'" :model="form" :rules="rules"
12 label-position="right"
13 >
11 <el-form-item :label="language==0?'服务类型':'Service Type '" prop="type" required style="margin-bottom: 0px"> 14 <el-form-item :label="language==0?'服务类型':'Service Type '" prop="type" required style="margin-bottom: 0px">
12 <el-checkbox-group v-model="form.type"> 15 <el-checkbox-group v-model="form.type">
13 <el-checkbox label="1">{{ language == 0 ? '接机' : 'airport pickup' }}</el-checkbox> 16 <el-checkbox label="1">{{ language == 0 ? '接机' : 'airport pickup' }}</el-checkbox>
...@@ -22,33 +25,38 @@ ...@@ -22,33 +25,38 @@
22 </div> 25 </div>
23 <div v-if="form.type?.some(v=>v==1)"> 26 <div v-if="form.type?.some(v=>v==1)">
24 <h3 class="leftboderTT">{{ language == 0 ? '接机信息' : 'Pick-up information' }}</h3> 27 <h3 class="leftboderTT">{{ language == 0 ? '接机信息' : 'Pick-up information' }}</h3>
25 <el-form-item :label="language==0?'抵达人员身份':'Role of Person-Arrival'" prop="pickUpBo.standing" 28 <el-form-item
26 required> 29 :label="language==0?'抵达人员身份':'Role of Person-Arrival'" prop="pickUpBo.standing"
30 required
31 >
27 <el-checkbox-group v-model="form.pickUpBo.standing"> 32 <el-checkbox-group v-model="form.pickUpBo.standing">
28 <el-checkbox :label="language==0?'运动员':'Athlete'" name="1"/> 33 <el-checkbox :label="language==0?'运动员':'Athlete'" name="1" />
29 <el-checkbox :label="language==0?'随队人员':'Accompanying Person'" name="2"/> 34 <el-checkbox :label="language==0?'随队人员':'Accompanying Person'" name="2" />
30 <el-checkbox :label="language==0?'官员':'Official'" name="3"/> 35 <el-checkbox :label="language==0?'官员':'Official'" name="3" />
31 <el-checkbox :label="language==0?'其他':'Others'" name="4"/> 36 <el-checkbox :label="language==0?'其他':'Others'" name="4" />
32 </el-checkbox-group> 37 </el-checkbox-group>
33 </el-form-item> 38 </el-form-item>
34 <el-form-item :label="language==0?'国家/地区':'Country/Region'" prop="pickUpBo.nationalitys" required> 39 <el-form-item :label="language==0?'国家/地区':'Country/Region'" prop="pickUpBo.nationalitys" required>
35 <el-select v-model="form.pickUpBo.nationalitys" filterable multiple style="width: 100%;"> 40 <el-select v-model="form.pickUpBo.nationalitys" filterable multiple style="width: 100%;">
36 <el-option v-for="item in countrys" 41 <el-option
42 v-for="item in countrys"
37 :key="item.id" 43 :key="item.id"
38 :label="language==0?item.name:item.enName" 44 :label="language==0?item.name:item.enName"
39 :value="language==0?item.name :item.enName"/> 45 :value="language==0?item.name :item.enName"
46 />
40 </el-select> 47 </el-select>
41 </el-form-item> 48 </el-form-item>
42 <el-form-item :label="language==0?'联系人':'Contact Person'" prop="pickUpBo.name" required> 49 <el-form-item :label="language==0?'联系人':'Contact Person'" prop="pickUpBo.name" required>
43 <el-input v-model="form.pickUpBo.name"/> 50 <el-input v-model="form.pickUpBo.name" />
44 </el-form-item> 51 </el-form-item>
45 <el-form-item :label="language==0?'联系电话':'Contact Phone Number'" prop="pickUpBo.phone" required> 52 <el-form-item :label="language==0?'联系电话':'Contact Phone Number'" prop="pickUpBo.phone" required>
46 <el-input v-model="form.pickUpBo.phone"/> 53 <el-input v-model="form.pickUpBo.phone" />
47 </el-form-item> 54 </el-form-item>
48 <el-form-item :label="language==0?'接机人数':'Number of People'" prop="pickUpBo.counts" required> 55 <el-form-item :label="language==0?'接机人数':'Number of People'" prop="pickUpBo.counts" required>
49 <el-input-number v-model="form.pickUpBo.counts"/> 56 <el-input-number v-model="form.pickUpBo.counts" />
50 <span 57 <span
51 style="color: red;margin-left: 10px">{{ 58 style="color: red;margin-left: 10px"
59 >{{
52 language == 0 ? '(填写的人数需是乘坐同一航班/车次)' : 'The number of people to be filled in must be on the same flight/train' 60 language == 0 ? '(填写的人数需是乘坐同一航班/车次)' : 'The number of people to be filled in must be on the same flight/train'
53 }}</span> 61 }}</span>
54 </el-form-item> 62 </el-form-item>
...@@ -56,46 +64,56 @@ ...@@ -56,46 +64,56 @@
56 <!-- {{language==0?'填写的人数需是乘坐同一航班/车次':'The number of people to be filled in must be on the same flight/train'}}--> 64 <!-- {{language==0?'填写的人数需是乘坐同一航班/车次':'The number of people to be filled in must be on the same flight/train'}}-->
57 65
58 <!-- </div>--> 66 <!-- </div>-->
59 <el-form-item :label="language==0?'抵达日期':'Flight/Train Arrival Date'" 67 <el-form-item
68 :label="language==0?'抵达日期':'Flight/Train Arrival Date'"
60 prop="pickUpBo.arrivalDate" 69 prop="pickUpBo.arrivalDate"
61 required> 70 required
71 >
62 <div style="padding: 1px"> 72 <div style="padding: 1px">
63 <el-date-picker 73 <el-date-picker
64 :disabled-date="disabledDateRZ" default-value="'2024-09-27'" 74 v-model="form.pickUpBo.arrivalDate" :disabled-date="disabledDateRZ"
65 v-model="form.pickUpBo.arrivalDate" format="YYYY-MM-DD" 75 default-value="'2025-09-27'" format="YYYY-MM-DD"
66 placeholder="YYYY-MM-DD" 76 placeholder="YYYY-MM-DD"
67 style="width: 100%;" type="date" value-format="YYYY-MM-DD" 77 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
68 /> 78 />
69 </div> 79 </div>
70 </el-form-item> 80 </el-form-item>
71 <el-form-item :label="language==0?'抵达时间':'Flight/Train Arrival Time'" prop="pickUpBo.arrivaTime" 81 <el-form-item
72 required> 82 :label="language==0?'抵达时间':'Flight/Train Arrival Time'" prop="pickUpBo.arrivaTime"
83 required
84 >
73 <!-- <el-date-picker--> 85 <!-- <el-date-picker-->
74 <!-- v-model="form.pickUpBo.arrivaTime"--> 86 <!-- v-model="form.pickUpBo.arrivaTime"-->
75 <!-- format="YYYY-MM-DD" placeholder="YYYY-MM-DD"--> 87 <!-- format="YYYY-MM-DD" placeholder="YYYY-MM-DD"-->
76 <!-- style="width: 100%;" type="date" value-format="YYYY-MM-DD"--> 88 <!-- style="width: 100%;" type="date" value-format="YYYY-MM-DD"-->
77 <!-- />--> 89 <!-- />-->
78 <el-time-picker v-model="form.pickUpBo.arrivaTime" placeholder="HH:mm:ss" value-format="HH:mm:ss" 90 <el-time-picker
79 format="HH:mm:ss" style="width: 100%;"/> 91 v-model="form.pickUpBo.arrivaTime" format="HH:mm:ss" placeholder="HH:mm:ss"
92 style="width: 100%;" value-format="HH:mm:ss"
93 />
80 </el-form-item> 94 </el-form-item>
81 95
82 <el-form-item :label="language==0?'航班/车次':'Flight/Train Number'" prop="pickUpBo.flight" required> 96 <el-form-item :label="language==0?'航班/车次':'Flight/Train Number'" prop="pickUpBo.flight" required>
83 <el-input v-model="form.pickUpBo.flight"/> 97 <el-input v-model="form.pickUpBo.flight" />
84 </el-form-item> 98 </el-form-item>
85 <el-form-item :label="language==0?'机场/火车站':'Airport/Train Station'" prop="pickUpBo.stationName" 99 <el-form-item
86 required> 100 :label="language==0?'机场/火车站':'Airport/Train Station'" prop="pickUpBo.stationName"
87 <el-input v-model="form.pickUpBo.stationName"/> 101 required
102 >
103 <el-input v-model="form.pickUpBo.stationName" />
88 </el-form-item> 104 </el-form-item>
89 <el-form-item :label="language==0?'航站楼':'Air Terminal'" prop="pickUpBo.terminal" required> 105 <el-form-item :label="language==0?'航站楼':'Air Terminal'" prop="pickUpBo.terminal" required>
90 <el-input v-model="form.pickUpBo.terminal"/> 106 <el-input v-model="form.pickUpBo.terminal" />
91 </el-form-item> 107 </el-form-item>
92 <el-form-item :label="language==0?'送达酒店':'Destination Hotel'" prop="pickUpBo.hotle" required> 108 <el-form-item :label="language==0?'送达酒店':'Destination Hotel'" prop="pickUpBo.hotle" required>
93 <el-input v-model="form.pickUpBo.hotle"/> 109 <el-input v-model="form.pickUpBo.hotle" />
94 </el-form-item> 110 </el-form-item>
95 <el-form-item :label="language==0?'行程单':'Round-Trip Itinerary'" prop="pickUpBo.itinerary" required> 111 <el-form-item :label="language==0?'行程单':'Round-Trip Itinerary'" prop="pickUpBo.itinerary" required>
96 <image-upload v-model="form.pickUpBo.itinerary" :button-text="language==0?'上传':'Upload'" 112 <image-upload
113 v-model="form.pickUpBo.itinerary" :button-text="language==0?'上传':'Upload'"
97 :is-show-tip="false" 114 :is-show-tip="false"
98 :limit="1"/> 115 :limit="1"
116 />
99 </el-form-item> 117 </el-form-item>
100 </div> 118 </div>
101 119
...@@ -105,38 +123,42 @@ ...@@ -105,38 +123,42 @@
105 <h3 class="leftboderTT">{{ language == 0 ? '送机信息' : 'Delivery information' }}</h3> 123 <h3 class="leftboderTT">{{ language == 0 ? '送机信息' : 'Delivery information' }}</h3>
106 <el-form-item 124 <el-form-item
107 :label="language==0?'离会人员身份':'Role of Person-Departure'" 125 :label="language==0?'离会人员身份':'Role of Person-Departure'"
108 prop="downOffBo.standing" required> 126 prop="downOffBo.standing" required
127 >
109 <!-- <el-input v-model="form.downOffBo.standing"/>--> 128 <!-- <el-input v-model="form.downOffBo.standing"/>-->
110 <el-checkbox-group v-model="form.downOffBo.standing"> 129 <el-checkbox-group v-model="form.downOffBo.standing">
111 <el-checkbox :label="language==0?'运动员':'Athlete'" name="1"/> 130 <el-checkbox :label="language==0?'运动员':'Athlete'" name="1" />
112 <el-checkbox :label="language==0?'随队人员':'Accompanying Person'" name="2"/> 131 <el-checkbox :label="language==0?'随队人员':'Accompanying Person'" name="2" />
113 <el-checkbox :label="language==0?'官员':'Official'" name="3"/> 132 <el-checkbox :label="language==0?'官员':'Official'" name="3" />
114 <el-checkbox :label="language==0?'其他':'Others'" name="4"/> 133 <el-checkbox :label="language==0?'其他':'Others'" name="4" />
115 </el-checkbox-group> 134 </el-checkbox-group>
116 </el-form-item> 135 </el-form-item>
117 <el-form-item :label="language==0?'国家/地区':'Country/Region'" prop="downOffBo.nationalitys" required> 136 <el-form-item :label="language==0?'国家/地区':'Country/Region'" prop="downOffBo.nationalitys" required>
118 <el-select v-model="form.downOffBo.nationalitys" filterable multiple style="width: 100%;"> 137 <el-select v-model="form.downOffBo.nationalitys" filterable multiple style="width: 100%;">
119 <el-option v-for="item in countrys" 138 <el-option
139 v-for="item in countrys"
120 :key="item.id" 140 :key="item.id"
121 :label="language==0?item.name:item.enName" 141 :label="language==0?item.name:item.enName"
122 :value="language==0?item.name:item.enName"/> 142 :value="language==0?item.name:item.enName"
143 />
123 </el-select> 144 </el-select>
124 </el-form-item> 145 </el-form-item>
125 <el-form-item :label="language==0?'联系人':'Contact Person'" prop="downOffBo.name" required> 146 <el-form-item :label="language==0?'联系人':'Contact Person'" prop="downOffBo.name" required>
126 <el-input v-model="form.downOffBo.name"/> 147 <el-input v-model="form.downOffBo.name" />
127 </el-form-item> 148 </el-form-item>
128 <el-form-item :label="language==0?'联系电话':'Contact Phone Number'" prop="downOffBo.phone" required> 149 <el-form-item :label="language==0?'联系电话':'Contact Phone Number'" prop="downOffBo.phone" required>
129 <el-input v-model="form.downOffBo.phone"/> 150 <el-input v-model="form.downOffBo.phone" />
130 </el-form-item> 151 </el-form-item>
131 <!-- todo 增加邮箱字段,登记成功后发送邮件通知--> 152 <!-- todo 增加邮箱字段,登记成功后发送邮件通知-->
132 <el-form-item :label="language==0?'联系邮箱':'Contact Email'" prop="downOffBo.email" required> 153 <el-form-item :label="language==0?'联系邮箱':'Contact Email'" prop="downOffBo.email" required>
133 <el-input v-model="form.downOffBo.email"/> 154 <el-input v-model="form.downOffBo.email" />
134 </el-form-item> 155 </el-form-item>
135 <el-form-item :label="language==0?'送机人数':'Number of People'" prop="downOffBo.counts" required> 156 <el-form-item :label="language==0?'送机人数':'Number of People'" prop="downOffBo.counts" required>
136 <el-input-number v-model="form.downOffBo.counts"/> 157 <el-input-number v-model="form.downOffBo.counts" />
137 158
138 <span 159 <span
139 style="color: red;margin-left: 10px">{{ 160 style="color: red;margin-left: 10px"
161 >{{
140 language == 0 ? '(填写的人数需是乘坐同一航班/车次)' : 'The number of people to be filled in must be on the same flight/train' 162 language == 0 ? '(填写的人数需是乘坐同一航班/车次)' : 'The number of people to be filled in must be on the same flight/train'
141 }}</span> 163 }}</span>
142 </el-form-item> 164 </el-form-item>
...@@ -144,46 +166,56 @@ ...@@ -144,46 +166,56 @@
144 <!-- {{language==0?'填写的人数需是乘坐同一航班/车次':'The number of people to be filled in must be on the same flight/train'}}--> 166 <!-- {{language==0?'填写的人数需是乘坐同一航班/车次':'The number of people to be filled in must be on the same flight/train'}}-->
145 167
146 <!-- </div>--> 168 <!-- </div>-->
147 <el-form-item :label="language==0?'离开日期':'Departure Date from Hotel'" prop="downOffBo.arrivalDate" 169 <el-form-item
148 required> 170 :label="language==0?'离开日期':'Departure Date from Hotel'" prop="downOffBo.arrivalDate"
171 required
172 >
149 <div style="padding: 1px"> 173 <div style="padding: 1px">
150 <el-date-picker 174 <el-date-picker
151 v-model="form.downOffBo.arrivalDate" format="YYYY-MM-DD" 175 v-model="form.downOffBo.arrivalDate" :disabled-date="disabledDateDP"
152 placeholder="YYYY-MM-DD" :disabled-date="disabledDateDP" 176 default-value="'2025-09-30'" format="YYYY-MM-DD"
153 default-value="'2024-09-30'" 177 placeholder="YYYY-MM-DD"
154 style="width: 100%;" type="date" value-format="YYYY-MM-DD" 178 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
155 /> 179 />
156 </div> 180 </div>
157 181
158 </el-form-item> 182 </el-form-item>
159 <el-form-item :label="language==0?'离开时间':'Departure Time from Hotel'" prop="downOffBo.arrivaTime" 183 <el-form-item
160 required> 184 :label="language==0?'离开时间':'Departure Time from Hotel'" prop="downOffBo.arrivaTime"
185 required
186 >
161 <!-- <el-date-picker--> 187 <!-- <el-date-picker-->
162 <!-- v-model="form.downOffBo.rrivaTime"--> 188 <!-- v-model="form.downOffBo.rrivaTime"-->
163 <!-- format="YYYY-MM-DD" placeholder="YYYY-MM-DD"--> 189 <!-- format="YYYY-MM-DD" placeholder="YYYY-MM-DD"-->
164 <!-- style="width: 100%;" type="date" value-format="YYYY-MM-DD"--> 190 <!-- style="width: 100%;" type="date" value-format="YYYY-MM-DD"-->
165 <!-- />--> 191 <!-- />-->
166 <el-time-picker v-model="form.downOffBo.arrivaTime" placeholder="HH:mm:ss" value-format="HH:mm:ss" 192 <el-time-picker
167 format="HH:mm:ss" style="width: 100%;"/> 193 v-model="form.downOffBo.arrivaTime" format="HH:mm:ss" placeholder="HH:mm:ss"
194 style="width: 100%;" value-format="HH:mm:ss"
195 />
168 </el-form-item> 196 </el-form-item>
169 197
170 <el-form-item :label="language==0?'航班/车次':'Flight/Train Number'" prop="downOffBo.flight" required> 198 <el-form-item :label="language==0?'航班/车次':'Flight/Train Number'" prop="downOffBo.flight" required>
171 <el-input v-model="form.downOffBo.flight"/> 199 <el-input v-model="form.downOffBo.flight" />
172 </el-form-item> 200 </el-form-item>
173 <el-form-item :label="language==0?'机场/火车站':'Airport/Train Station'" prop="downOffBo.stationName" 201 <el-form-item
174 required> 202 :label="language==0?'机场/火车站':'Airport/Train Station'" prop="downOffBo.stationName"
175 <el-input v-model="form.downOffBo.stationName"/> 203 required
204 >
205 <el-input v-model="form.downOffBo.stationName" />
176 </el-form-item> 206 </el-form-item>
177 <el-form-item :label="language==0?'航站楼':'Air Terminal'" prop="downOffBo.terminal" required> 207 <el-form-item :label="language==0?'航站楼':'Air Terminal'" prop="downOffBo.terminal" required>
178 <el-input v-model="form.downOffBo.terminal"/> 208 <el-input v-model="form.downOffBo.terminal" />
179 </el-form-item> 209 </el-form-item>
180 <el-form-item :label="language==0?'出发酒店':'Departure Hotel'" prop="downOffBo.hotle" required> 210 <el-form-item :label="language==0?'出发酒店':'Departure Hotel'" prop="downOffBo.hotle" required>
181 <el-input v-model="form.downOffBo.hotle"/> 211 <el-input v-model="form.downOffBo.hotle" />
182 </el-form-item> 212 </el-form-item>
183 <el-form-item :label="language==0?'行程单':'Round-Trip Itinerary'" prop="downOffBo.itinerary" required> 213 <el-form-item :label="language==0?'行程单':'Round-Trip Itinerary'" prop="downOffBo.itinerary" required>
184 <image-upload v-model="form.downOffBo.itinerary" :button-text="language==0?'上传':'Upload'" 214 <image-upload
215 v-model="form.downOffBo.itinerary" :button-text="language==0?'上传':'Upload'"
185 :is-show-tip="false" 216 :is-show-tip="false"
186 :limit="1"/> 217 :limit="1"
218 />
187 </el-form-item> 219 </el-form-item>
188 </div> 220 </div>
189 221
...@@ -196,7 +228,7 @@ ...@@ -196,7 +228,7 @@
196 </div> 228 </div>
197 <div> 229 <div>
198 <div v-if="showR" class="text-center pd20"> 230 <div v-if="showR" class="text-center pd20">
199 <img class="mauto" src="@/assets/dance/ok.png"/> 231 <img class="mauto" src="@/assets/dance/ok.png">
200 <h2 class="text-center">{{ 232 <h2 class="text-center">{{
201 language == 0 ? '境外及港澳台接送信息已提交' : 'Request Form for Overseas, HKT, Mau, China and TPE Athletes Arrival and Departure' 233 language == 0 ? '境外及港澳台接送信息已提交' : 'Request Form for Overseas, HKT, Mau, China and TPE Athletes Arrival and Departure'
202 }}</h2> 234 }}</h2>
...@@ -216,22 +248,22 @@ ...@@ -216,22 +248,22 @@
216 </template> 248 </template>
217 249
218 <script setup> 250 <script setup>
219 import {useStorage} from "@vueuse/core/index"; 251 import { useStorage } from '@vueuse/core/index'
220 import {getCurrentInstance, watch, ref} from "vue"; 252 import { getCurrentInstance, watch, ref } from 'vue'
221 import {nextTick} from "@vue/runtime-core"; 253 import { nextTick } from '@vue/runtime-core'
222 import {dayjs, ElMessage, ElMessageBox} from "element-plus"; 254 import { dayjs, ElMessage, ElMessageBox } from 'element-plus'
223 import {addInvitation, countryList} from "@/apiPc/match"; 255 import { addInvitation, countryList } from '@/apiPc/match'
224 import ImageUpload from "@/components/ImageUpload"; 256 import ImageUpload from '@/components/ImageUpload'
225 import {masterClassList, getByCard, submitMasterApply, getMasterApply, delByCard, addPickup} from "@/apiPc/common"; 257 import { masterClassList, getByCard, submitMasterApply, getMasterApply, delByCard, addPickup } from '@/apiPc/common'
226 258
227 const {proxy} = getCurrentInstance() 259 const { proxy } = getCurrentInstance()
228 const language = useStorage('language', 0) 260 const language = useStorage('language', 0)
229 const form = ref({ 261 const form = ref({
230 pickUpBo: { 262 pickUpBo: {
231 serviceType: 1, 263 serviceType: 1
232 }, 264 },
233 downOffBo: { 265 downOffBo: {
234 serviceType: 2, 266 serviceType: 2
235 }, 267 },
236 type: ['1'] 268 type: ['1']
237 }) 269 })
...@@ -244,123 +276,123 @@ const courseList = ref([]) ...@@ -244,123 +276,123 @@ const courseList = ref([])
244 const cptId = ref('') 276 const cptId = ref('')
245 const rules = ref( 277 const rules = ref(
246 { 278 {
247 type: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 279 type: [{ required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose' }],
248 'pickUpBo.standing': [{ 280 'pickUpBo.standing': [{
249 required: true, 281 required: true,
250 trigger: 'change', 282 trigger: 'change',
251 message: language.value == 0 ? '请选择' : 'Please choose' 283 message: language.value == 0 ? '请选择' : 'Please choose'
252 },], 284 }],
253 'pickUpBo.nationalitys': [{ 285 'pickUpBo.nationalitys': [{
254 required: true, 286 required: true,
255 trigger: 'blur', 287 trigger: 'blur',
256 message: language.value == 0 ? '请选择' : 'Please choose' 288 message: language.value == 0 ? '请选择' : 'Please choose'
257 },], 289 }],
258 'pickUpBo.name': [{required: true, trigger: 'change', message: language.value == 0 ? '请输入' : 'Please enter'},], 290 'pickUpBo.name': [{ required: true, trigger: 'change', message: language.value == 0 ? '请输入' : 'Please enter' }],
259 'pickUpBo.phone': [{ 291 'pickUpBo.phone': [{
260 required: true, 292 required: true,
261 trigger: 'change', 293 trigger: 'change',
262 message: language.value == 0 ? '请输入' : 'Please enter' 294 message: language.value == 0 ? '请输入' : 'Please enter'
263 },], 295 }],
264 'pickUpBo.counts': [{ 296 'pickUpBo.counts': [{
265 required: true, 297 required: true,
266 trigger: 'change', 298 trigger: 'change',
267 message: language.value == 0 ? '请输入' : 'Please enter' 299 message: language.value == 0 ? '请输入' : 'Please enter'
268 },], 300 }],
269 'pickUpBo.arrivalDate': [{ 301 'pickUpBo.arrivalDate': [{
270 required: true, 302 required: true,
271 trigger: 'change', 303 trigger: 'change',
272 message: language.value == 0 ? '请选择' : 'Please choose' 304 message: language.value == 0 ? '请选择' : 'Please choose'
273 },], 305 }],
274 'pickUpBo.arrivaTime': [{ 306 'pickUpBo.arrivaTime': [{
275 required: true, 307 required: true,
276 trigger: 'change', 308 trigger: 'change',
277 message: language.value == 0 ? '请选择' : 'Please choose' 309 message: language.value == 0 ? '请选择' : 'Please choose'
278 },], 310 }],
279 'pickUpBo.flight': [{ 311 'pickUpBo.flight': [{
280 required: true, 312 required: true,
281 trigger: 'change', 313 trigger: 'change',
282 message: language.value == 0 ? '请输入' : 'Please enter' 314 message: language.value == 0 ? '请输入' : 'Please enter'
283 },], 315 }],
284 'pickUpBo.stationName': [{ 316 'pickUpBo.stationName': [{
285 required: true, 317 required: true,
286 trigger: 'change', 318 trigger: 'change',
287 message: language.value == 0 ? '请输入' : 'Please enter' 319 message: language.value == 0 ? '请输入' : 'Please enter'
288 },], 320 }],
289 'pickUpBo.terminal': [{ 321 'pickUpBo.terminal': [{
290 required: true, 322 required: true,
291 trigger: 'change', 323 trigger: 'change',
292 message: language.value == 0 ? '请输入' : 'Please enter' 324 message: language.value == 0 ? '请输入' : 'Please enter'
293 },], 325 }],
294 'pickUpBo.hotle': [{ 326 'pickUpBo.hotle': [{
295 required: true, 327 required: true,
296 trigger: 'change', 328 trigger: 'change',
297 message: language.value == 0 ? '请输入' : 'Please enter' 329 message: language.value == 0 ? '请输入' : 'Please enter'
298 },], 330 }],
299 'pickUpBo.itinerary': [{ 331 'pickUpBo.itinerary': [{
300 required: true, 332 required: true,
301 trigger: 'change', 333 trigger: 'change',
302 message: language.value == 0 ? '请选择' : 'Please choose' 334 message: language.value == 0 ? '请选择' : 'Please choose'
303 },], 335 }],
304 'downOffBo.nationalitys': [{ 336 'downOffBo.nationalitys': [{
305 required: true, 337 required: true,
306 trigger: 'blur', 338 trigger: 'blur',
307 message: language.value == 0 ? '请选择' : 'Please choose' 339 message: language.value == 0 ? '请选择' : 'Please choose'
308 },], 340 }],
309 'downOffBo.standing': [{ 341 'downOffBo.standing': [{
310 required: true, 342 required: true,
311 trigger: 'change', 343 trigger: 'change',
312 message: language.value == 0 ? '请选择' : 'Please choose' 344 message: language.value == 0 ? '请选择' : 'Please choose'
313 },], 345 }],
314 'downOffBo.name': [{ 346 'downOffBo.name': [{
315 required: true, 347 required: true,
316 trigger: 'change', 348 trigger: 'change',
317 message: language.value == 0 ? '请输入' : 'Please enter' 349 message: language.value == 0 ? '请输入' : 'Please enter'
318 },], 350 }],
319 'downOffBo.phone': [{ 351 'downOffBo.phone': [{
320 required: true, 352 required: true,
321 trigger: 'change', 353 trigger: 'change',
322 message: language.value == 0 ? '请输入' : 'Please enter' 354 message: language.value == 0 ? '请输入' : 'Please enter'
323 },], 355 }],
324 'downOffBo.counts': [{ 356 'downOffBo.counts': [{
325 required: true, 357 required: true,
326 trigger: 'change', 358 trigger: 'change',
327 message: language.value == 0 ? '请选择' : 'Please choose' 359 message: language.value == 0 ? '请选择' : 'Please choose'
328 },], 360 }],
329 'downOffBo.arrivalDate': [{ 361 'downOffBo.arrivalDate': [{
330 required: true, 362 required: true,
331 trigger: 'change', 363 trigger: 'change',
332 message: language.value == 0 ? '请选择' : 'Please choose' 364 message: language.value == 0 ? '请选择' : 'Please choose'
333 },], 365 }],
334 'downOffBo.arrivaTime': [{ 366 'downOffBo.arrivaTime': [{
335 required: true, 367 required: true,
336 trigger: 'change', 368 trigger: 'change',
337 message: language.value == 0 ? '请选择' : 'Please choose' 369 message: language.value == 0 ? '请选择' : 'Please choose'
338 },], 370 }],
339 'downOffBo.flight': [{ 371 'downOffBo.flight': [{
340 required: true, 372 required: true,
341 trigger: 'change', 373 trigger: 'change',
342 message: language.value == 0 ? '请输入' : 'Please enter' 374 message: language.value == 0 ? '请输入' : 'Please enter'
343 },], 375 }],
344 'downOffBo.stationName': [{ 376 'downOffBo.stationName': [{
345 required: true, 377 required: true,
346 trigger: 'change', 378 trigger: 'change',
347 message: language.value == 0 ? '请输入' : 'Please enter' 379 message: language.value == 0 ? '请输入' : 'Please enter'
348 },], 380 }],
349 'downOffBo.terminal': [{ 381 'downOffBo.terminal': [{
350 required: true, 382 required: true,
351 trigger: 'change', 383 trigger: 'change',
352 message: language.value == 0 ? '请输入' : 'Please enter' 384 message: language.value == 0 ? '请输入' : 'Please enter'
353 },], 385 }],
354 'downOffBo.hotle': [{ 386 'downOffBo.hotle': [{
355 required: true, 387 required: true,
356 trigger: 'change', 388 trigger: 'change',
357 message: language.value == 0 ? '请输入' : 'Please enter' 389 message: language.value == 0 ? '请输入' : 'Please enter'
358 },], 390 }],
359 'downOffBo.itinerary': [{ 391 'downOffBo.itinerary': [{
360 required: true, 392 required: true,
361 trigger: 'change', 393 trigger: 'change',
362 message: language.value == 0 ? '请选择' : 'Please choose' 394 message: language.value == 0 ? '请选择' : 'Please choose'
363 },], 395 }]
364 396
365 }) 397 })
366 const open = (params) => { 398 const open = (params) => {
...@@ -369,20 +401,20 @@ const open = (params) => { ...@@ -369,20 +401,20 @@ const open = (params) => {
369 form.value = { 401 form.value = {
370 pickUpBo: { 402 pickUpBo: {
371 serviceType: 1, 403 serviceType: 1,
372 arrivalDate:'2024-09-27' 404 arrivalDate: '2025-09-27'
373 }, 405 },
374 downOffBo: { 406 downOffBo: {
375 serviceType: 2, 407 serviceType: 2,
376 arrivalDate:'2024-09-30' 408 arrivalDate: '2025-09-30'
377 }, 409 },
378 type: ['1'], 410 type: ['1']
379 } 411 }
380 title.value = language.value == 0 ? '境外及港澳台接送信息登记' : 'Request Form for Overseas, HKT, Mau, China and TPE Athletes Arrival and Departure' 412 title.value = language.value == 0 ? '境外及港澳台接送信息登记' : 'Request Form for Overseas, HKT, Mau, China and TPE Athletes Arrival and Departure'
381 cptId.value = params.cptId 413 cptId.value = params.cptId
382 getCourse() 414 getCourse()
383 // proxy.$refs['iformRef'] 415 // proxy.$refs['iformRef']
384 } 416 }
385 defineExpose({open}) 417 defineExpose({ open })
386 watch(show, (value) => { 418 watch(show, (value) => {
387 if (!value) { 419 if (!value) {
388 form.value = { 420 form.value = {
...@@ -395,7 +427,7 @@ watch(show, (value) => { ...@@ -395,7 +427,7 @@ watch(show, (value) => {
395 }) 427 })
396 428
397 function getCourse() { 429 function getCourse() {
398 masterClassList({cptId: cptId.value}).then(res => { 430 masterClassList({ cptId: cptId.value }).then(res => {
399 courseList.value = res.data 431 courseList.value = res.data
400 }) 432 })
401 } 433 }
...@@ -412,7 +444,7 @@ function submitForm() { ...@@ -412,7 +444,7 @@ function submitForm() {
412 // form.value.pickUpBo.serviceType=1 444 // form.value.pickUpBo.serviceType=1
413 // form.value.downOffBo.serviceType=2 445 // form.value.downOffBo.serviceType=2
414 console.log(form.value) 446 console.log(form.value)
415 let forms = JSON.parse(JSON.stringify(form.value)) 447 const forms = JSON.parse(JSON.stringify(form.value))
416 forms.pickUpBo.nationalitys = forms.pickUpBo.nationalitys?.join(',') 448 forms.pickUpBo.nationalitys = forms.pickUpBo.nationalitys?.join(',')
417 forms.pickUpBo.standing = forms.pickUpBo.standing?.join(',') 449 forms.pickUpBo.standing = forms.pickUpBo.standing?.join(',')
418 forms.downOffBo.nationalitys = forms.downOffBo.nationalitys?.join(',') 450 forms.downOffBo.nationalitys = forms.downOffBo.nationalitys?.join(',')
...@@ -490,32 +522,32 @@ function getCountryList() { ...@@ -490,32 +522,32 @@ function getCountryList() {
490 522
491 // function initdateRZ() { 523 // function initdateRZ() {
492 // const today = dayjs().format('YYYY-MM-DD') 524 // const today = dayjs().format('YYYY-MM-DD')
493 // form.value.pickUpBo.arrivalDate ='2024-07' 525 // form.value.pickUpBo.arrivalDate ='2025-07'
494 // } 526 // }
495 // function initdateDP() { 527 // function initdateDP() {
496 // const today = dayjs().format('YYYY-MM-DD') 528 // const today = dayjs().format('YYYY-MM-DD')
497 // form.value.downOffBo.arrivalDate ='2024-07' 529 // form.value.downOffBo.arrivalDate ='2025-07'
498 // } 530 // }
499 function disabledDateRZ(date) { 531 function disabledDateRZ(date) {
500 // 16-20 532 // 16-20
501 //判读今天大与2024-07-16 533 // 判读今天大与2024-07-16
502 const today = dayjs().format('YYYY-MM-DD') 534 const today = dayjs().format('YYYY-MM-DD')
503 // if ('2024-07-16' < today) { 535 // if ('2025-07-16' < today) {
504 // return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs('2024-09-27').valueOf())) 536 // return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs('2025-09-27').valueOf()))
505 // } else { 537 // } else {
506 // return !((date.getTime() >= dayjs('2024-07-16').valueOf()) && (date.getTime() <= dayjs('2024-07-20').valueOf())) 538 // return !((date.getTime() >= dayjs('2025-07-16').valueOf()) && (date.getTime() <= dayjs('2025-07-20').valueOf()))
507 // } 539 // }
508 return !(date.getTime() == dayjs('2024-09-27').valueOf()) 540 return !(date.getTime() == dayjs('2025-09-27').valueOf())
509 } 541 }
510 542
511 function disabledDateDP(date) { 543 function disabledDateDP(date) {
512 const today = dayjs().format('YYYY-MM-DD') 544 const today = dayjs().format('YYYY-MM-DD')
513 // if ('2024-07-18' < today) { 545 // if ('2025-07-18' < today) {
514 // return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs('2024-07-22').valueOf())) 546 // return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs('2025-07-22').valueOf()))
515 // } else { 547 // } else {
516 // return !((date.getTime() >= dayjs('2024-07-18').valueOf()) && (date.getTime() <= dayjs('2024-07-22').valueOf())) 548 // return !((date.getTime() >= dayjs('2025-07-18').valueOf()) && (date.getTime() <= dayjs('2025-07-22').valueOf()))
517 // } 549 // }
518 return !(date.getTime() == dayjs('2024-09-30').valueOf()) 550 return !(date.getTime() == dayjs('2025-09-30').valueOf())
519 } 551 }
520 </script> 552 </script>
521 553
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="banner"> 3 <div class="banner">
4 <el-carousel class="forPc" autoplay :interval="2000" height="450px" :autoplay="false" arrow="hover" @change="carouselChange"> 4 <el-carousel
5 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id"> 5 :autoplay="false" :interval="2000" arrow="hover" autoplay class="forPc"
6 height="450px"
7 @change="carouselChange"
8 >
9 <el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;">
6 <div class="bannerItem"> 10 <div class="bannerItem">
7 <div class="h100" @click.stop="goMatch(n)"> 11 <div class="h100" @click.stop="goMatch(n)">
8 <img v-if="n.bgImgUrl" class="bannerImg" :src="fillImgUrl(n.bgImgUrl)"> 12 <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg">
9 <img v-else class="bannerImg" src="@/assets/dance/banner.png"> 13 <img v-else class="bannerImg" src="@/assets/dance/banner.png">
10 <div class="box forPc" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> 14 <div class="box forPc" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;">
11 <div class="banner-count" v-if="n.time>0" @click="goMatch(n)"> 15 <div v-if="n.time>0" class="banner-count" @click="goMatch(n)">
12 距离开始还有 16 距离开始还有
13 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> 17 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
14 <template #default="timeData"> 18 <template #default="timeData">
...@@ -36,7 +40,7 @@ ...@@ -36,7 +40,7 @@
36 报名已结束 40 报名已结束
37 </div> 41 </div>
38 </div> 42 </div>
39 <div class="banner-count bb" v-if="n.time<=0 && n.timeEnd>=0" @click="goMatch(n)"> 43 <div v-if="n.time<=0 && n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)">
40 开始报名 44 开始报名
41 </div> 45 </div>
42 </div> 46 </div>
...@@ -44,14 +48,14 @@ ...@@ -44,14 +48,14 @@
44 </div> 48 </div>
45 </el-carousel-item> 49 </el-carousel-item>
46 </el-carousel> 50 </el-carousel>
47 <el-carousel class="forWei" height="160px" autoplay arrow="hover" @change="carouselChange"> 51 <el-carousel arrow="hover" autoplay class="forWei" height="160px" @change="carouselChange">
48 <el-carousel-item style="height: 160px;" v-for="n in maList" :key="n.id"> 52 <el-carousel-item v-for="n in maList" :key="n.id" style="height: 160px;">
49 <div class="bannerItem" style="height:100%"> 53 <div class="bannerItem" style="height:100%">
50 <div class="h100" style="position: relative"> 54 <div class="h100" style="position: relative">
51 <img v-if="n.bgImgUrl" class="bannerImg" :src="fillImgUrl(n.bgImgUrl)"> 55 <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg">
52 <img v-else class="bannerImg" src="@/assets/dance/banner.png"> 56 <img v-else class="bannerImg" src="@/assets/dance/banner.png">
53 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;"> 57 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;">
54 <div class="banner-count" v-if="n.time>0" @click="goMatch(n)"> 58 <div v-if="n.time>0" class="banner-count" @click="goMatch(n)">
55 距离开始还有 59 距离开始还有
56 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> 60 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
57 <template #default="timeData"> 61 <template #default="timeData">
...@@ -74,36 +78,36 @@ ...@@ -74,36 +78,36 @@
74 </van-count-down> 78 </van-count-down>
75 </div> 79 </div>
76 <div v-if="n.timeEnd<0"> 80 <div v-if="n.timeEnd<0">
77 <!-- <a target="_blank" href="https://wx.vzan.com/live/page/1151815649?v=1720589464698" class="banner-count" v-if="time>0&&n.id=='1778253367748993026'" @click="goMatch(n)">--> 81 <!-- <a target="_blank" href="https://wx.vzan.com/live/page/1151815649?v=1720589464698" class="banner-count" v-if="time>0&&n.id=='1778253367748993026'" @click="goMatch(n)">-->
78 <!-- <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒">--> 82 <!-- <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒">-->
79 <!-- <template #default="timeData">--> 83 <!-- <template #default="timeData">-->
80 <!-- <div class="block">{{ timeData.days }}--> 84 <!-- <div class="block">{{ timeData.days }}-->
81 <!-- <span class="colon">天</span>--> 85 <!-- <span class="colon">天</span>-->
82 <!-- </div>--> 86 <!-- </div>-->
83 <!-- :--> 87 <!-- :-->
84 <!-- <div class="block">{{ timeData.hours }}--> 88 <!-- <div class="block">{{ timeData.hours }}-->
85 <!-- <span class="colon">时</span>--> 89 <!-- <span class="colon">时</span>-->
86 <!-- </div>--> 90 <!-- </div>-->
87 <!-- :--> 91 <!-- :-->
88 <!-- <div class="block">{{ timeData.minutes }}--> 92 <!-- <div class="block">{{ timeData.minutes }}-->
89 <!-- <span class="colon">分</span>--> 93 <!-- <span class="colon">分</span>-->
90 <!-- </div>--> 94 <!-- </div>-->
91 <!-- :--> 95 <!-- :-->
92 <!-- <div class="block">{{ timeData.seconds }}--> 96 <!-- <div class="block">{{ timeData.seconds }}-->
93 <!-- <span class="colon">秒</span>--> 97 <!-- <span class="colon">秒</span>-->
94 <!-- </div>--> 98 <!-- </div>-->
95 <!-- </template>--> 99 <!-- </template>-->
96 <!-- </van-count-down>--> 100 <!-- </van-count-down>-->
97 <!-- 开始直播--> 101 <!-- 开始直播-->
98 <!-- </a>--> 102 <!-- </a>-->
99 <!-- <a target="_blank" href="https://wx.vzan.com/live/page/1151815649?v=1720589464698" class="banner-count bb" v-else-if="time<=0&&n.id=='1778253367748993026'" @click="goMatch(n)">--> 103 <!-- <a target="_blank" href="https://wx.vzan.com/live/page/1151815649?v=1720589464698" class="banner-count bb" v-else-if="time<=0&&n.id=='1778253367748993026'" @click="goMatch(n)">-->
100 <!-- 直播进行中--> 104 <!-- 直播进行中-->
101 <!-- </a>--> 105 <!-- </a>-->
102 <div class="banner-count bb" @click="goMatch(n)"> 106 <div class="banner-count bb" @click="goMatch(n)">
103 报名已结束 107 报名已结束
104 </div> 108 </div>
105 </div> 109 </div>
106 <div class="banner-count bb" v-if="n.time<=0 && n.timeEnd>=0" @click="goMatch(n)"> 110 <div v-if="n.time<=0 && n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)">
107 开始报名 111 开始报名
108 </div> 112 </div>
109 </div> 113 </div>
...@@ -115,23 +119,29 @@ ...@@ -115,23 +119,29 @@
115 119
116 <div class="box zn-bg"> 120 <div class="box zn-bg">
117 <div class="zn-Box"> 121 <div class="zn-Box">
118 <img class="bbbg" v-if="matchData?.logoUrl" :src="fillImgUrl(matchData.logoUrl)"/> 122 <img v-if="matchData?.logoUrl" :src="fillImgUrl(matchData.logoUrl)" class="bbbg">
119 <el-row style="align-items: center"> 123 <el-row style="align-items: center">
120 <el-col :sm="24" :lg="10"> 124 <el-col :lg="10" :sm="24">
121 <div class="bgbg"> 125 <div class="bgbg">
122 <h1 style="color: #fff">{{matchData?.name}}</h1> 126 <h1 style="color: #fff">{{ matchData?.name }}</h1>
123 <a class="zn-btn" @click="goGuide" target="_blank" >参赛指南 127 <a class="zn-btn" target="_blank" @click="goGuide">参赛指南
124 <el-icon> 128 <el-icon>
125 <download/> 129 <download />
126 </el-icon> 130 </el-icon>
127 </a> 131 </a>
128 <a class="zn-btn ml20 btn-q forPc" v-if="matchData.isCourseView==1" @click="popMaster">青少年公益课报名</a> 132 <a
129 <a class="zn-btn ml20 btn-q" v-show="matchData?.id=='1778253367748993026'" @click="backNumberSearch">背号查询</a> 133 v-if="matchData.isCourseView==1" class="zn-btn ml20 btn-q forPc"
130 <a class="zn-btn ml20 btn-q" v-show="matchData?.id=='1778253367748993026'" @click="schSearch">日程查询</a> 134 @click="popMaster"
135 >青少年公益课报名</a>
136 <a
137 v-show="matchData?.id=='1778253367748993026'" class="zn-btn ml20 btn-q"
138 @click="backNumberSearch"
139 >背号查询</a>
140 <a v-show="matchData?.id=='1778253367748993026'" class="zn-btn ml20 btn-q" @click="schSearch">日程查询</a>
131 </div> 141 </div>
132 </el-col> 142 </el-col>
133 <el-col :sm="24" :lg="14"> 143 <el-col :lg="14" :sm="24">
134 <HomeQuick :match-id="matchData?.id" :cpt-name="matchData?.name"/> 144 <HomeQuick :cpt-name="matchData?.name" :match-id="matchData?.id" />
135 </el-col> 145 </el-col>
136 </el-row> 146 </el-row>
137 </div> 147 </div>
...@@ -140,25 +150,25 @@ ...@@ -140,25 +150,25 @@
140 150
141 <div id="part0" class="box part"> 151 <div id="part0" class="box part">
142 <el-row :gutter="20"> 152 <el-row :gutter="20">
143 <el-col :sm="24" :lg="12"> 153 <el-col :lg="12" :sm="24">
144 <div class="indexTitle"> 154 <div class="indexTitle">
145 <h3 class="leftboderTT">赛事日程</h3> 155 <h3 class="leftboderTT">赛事日程</h3>
146 <a class="more" href="#/saiC">MORE</a> 156 <a class="more" href="#/saiC">MORE</a>
147 </div> 157 </div>
148 <!--赛事日历--> 158 <!--赛事日历-->
149 <el-card :body-style="{'padding':'20px 20px'}"> 159 <el-card :body-style="{'padding':'20px 20px'}">
150 <home-calendar/> 160 <home-calendar />
151 </el-card> 161 </el-card>
152 </el-col> 162 </el-col>
153 <el-col :sm="24" :lg="12"> 163 <el-col :lg="12" :sm="24">
154 <div class="indexTitle"> 164 <div class="indexTitle">
155 <h3 class="leftboderTT">奖牌榜</h3> 165 <h3 class="leftboderTT">奖牌榜</h3>
156 <a class="more" href="#/saiC">MORE</a> 166 <a class="more" href="#/saiC">MORE</a>
157 </div> 167 </div>
158 <!--历史排名--> 168 <!--历史排名-->
159 <el-card :body-style="{'padding':'10px 20px 18px'}"> 169 <el-card :body-style="{'padding':'10px 20px 18px'}">
160 <el-table stripe :data="rank"> 170 <el-table :data="rank" stripe>
161 <el-table-column label="名次" align="center" width="50" type="index"> 171 <el-table-column align="center" label="名次" type="index" width="50">
162 <template #default="scope"> 172 <template #default="scope">
163 <span v-if="scope.row.mingCi == 1" style="color:#F8A617">{{ scope.row.mingCi }}</span> 173 <span v-if="scope.row.mingCi == 1" style="color:#F8A617">{{ scope.row.mingCi }}</span>
164 <span v-else-if="scope.row.mingCi == 2" style="color:#778B92">{{ scope.row.mingCi }}</span> 174 <span v-else-if="scope.row.mingCi == 2" style="color:#778B92">{{ scope.row.mingCi }}</span>
...@@ -170,12 +180,12 @@ ...@@ -170,12 +180,12 @@
170 <el-table-column label="国家" prop="name"> 180 <el-table-column label="国家" prop="name">
171 <template #default="scope"> 181 <template #default="scope">
172 <div> 182 <div>
173 <span :class="`flag-icon flag-icon-${scope.row.code}`"></span> 183 <span :class="`flag-icon flag-icon-${scope.row.code}`" />
174 {{ scope.row.countryName }} 184 {{ scope.row.countryName }}
175 </div> 185 </div>
176 </template> 186 </template>
177 </el-table-column> 187 </el-table-column>
178 <el-table-column label="组合" align="center"> 188 <el-table-column align="center" label="组合">
179 <template #default="scope"> 189 <template #default="scope">
180 <div class="text-primary esp">{{ scope.row.zuHe }}</div> 190 <div class="text-primary esp">{{ scope.row.zuHe }}</div>
181 </template> 191 </template>
...@@ -221,8 +231,8 @@ ...@@ -221,8 +231,8 @@
221 <el-row :gutter="20"> 231 <el-row :gutter="20">
222 <el-col 232 <el-col
223 v-for="(n,index) in newest2" 233 v-for="(n,index) in newest2"
224 :key="n.id" :xs="24" :sm="8" 234 :key="n.id" :lg="8" :sm="8"
225 :lg="8" 235 :xs="24"
226 > 236 >
227 <div class="activeItem" @click="goDetail(n)"> 237 <div class="activeItem" @click="goDetail(n)">
228 <div class="imgbox"> 238 <div class="imgbox">
...@@ -230,11 +240,11 @@ ...@@ -230,11 +240,11 @@
230 </div> 240 </div>
231 <div class="info"> 241 <div class="info">
232 <div class="date"> 242 <div class="date">
233 {{ n.sortName }} | {{n.belongTime}} 243 {{ n.sortName }} | {{ n.belongTime }}
234 </div> 244 </div>
235 <h3 class="esp">{{ n.name }}</h3> 245 <h3 class="esp">{{ n.name }}</h3>
236 <p class="esp_2" style="height: 40px"> 246 <p class="esp_2" style="height: 40px">
237 {{n.subName}} 247 {{ n.subName }}
238 </p> 248 </p>
239 <a>查看详情</a> 249 <a>查看详情</a>
240 </div> 250 </div>
...@@ -253,7 +263,7 @@ ...@@ -253,7 +263,7 @@
253 <el-row :gutter="20"> 263 <el-row :gutter="20">
254 <el-col :lg="8"> 264 <el-col :lg="8">
255 <a class="liveImgbox" target="_blank" @click="golive(livelist[0])"> 265 <a class="liveImgbox" target="_blank" @click="golive(livelist[0])">
256 <div class="livetimecount" v-if="time>0"> 266 <div v-if="time>0" class="livetimecount">
257 <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒"> 267 <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒">
258 <template #default="timeData"> 268 <template #default="timeData">
259 <div class="block">{{ timeData.days }} 269 <div class="block">{{ timeData.days }}
...@@ -271,26 +281,26 @@ ...@@ -271,26 +281,26 @@
271 </template> 281 </template>
272 </van-count-down> 282 </van-count-down>
273 </div> 283 </div>
274 <i class="ii" v-else-if="etime>0&&time<=0">直播中</i> 284 <i v-else-if="etime>0&&time<=0" class="ii">直播中</i>
275 <!-- <i class="livetimecount" v-if="etime<=0">直播已结束</i>--> 285 <!-- <i class="livetimecount" v-if="etime<=0">直播已结束</i>-->
276 <div class="imgBox"> 286 <div class="imgBox">
277 <img v-if="time>0" src="/img/111.jpeg"/> 287 <img v-if="time>0" src="/img/111.jpeg">
278 <img v-else :src="fillImgUrl_webSite(livelist[0]?.picUrl)"> 288 <img v-else :src="fillImgUrl_webSite(livelist[0]?.picUrl)">
279 </div> 289 </div>
280 <h3 class="esp" v-if="time>0"> 290 <h3 v-if="time>0" class="esp">
281 2024WDSF亚洲体育舞蹈节 291 2024WDSF亚洲体育舞蹈节
282 </h3> 292 </h3>
283 <h3 class="esp" v-else> 293 <h3 v-else class="esp">
284 {{livelist[0]?.name }} 294 {{ livelist[0]?.name }}
285 </h3> 295 </h3>
286 </a> 296 </a>
287 </el-col> 297 </el-col>
288 <el-col :lg="16"> 298 <el-col :lg="16">
289 <div class="swiperPic"> 299 <div class="swiperPic">
290 <swiper 300 <swiper
291 class="swiper-wrapper" :modules="modules" :slides-per-view="3" :space-between="20" 301 :autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic"
292 :navigation="navigationPic" 302 :slides-per-view="3"
293 :autoplay="true" :loop="true" 303 :space-between="20" class="swiper-wrapper"
294 > 304 >
295 <swiper-slide v-for="(n,i) in picList" :key="i"> 305 <swiper-slide v-for="(n,i) in picList" :key="i">
296 <div class="picbox" @click="goDetail(n)"> 306 <div class="picbox" @click="goDetail(n)">
...@@ -304,15 +314,16 @@ ...@@ -304,15 +314,16 @@
304 </el-col> 314 </el-col>
305 </el-row> 315 </el-row>
306 <el-row class="news-l-r"> 316 <el-row class="news-l-r">
307 <el-col v-for="(n,index) in livelist" :lg="8" v-show="index>0"> 317 <el-col v-for="(n,index) in livelist" v-show="index>0" :lg="8">
308 <div class="item" style="padding: 0;margin: 20px 0 0" @click="goDetail(n)"> 318 <div class="item" style="padding: 0;margin: 20px 0 0" @click="goDetail(n)">
309 <div class="imgbox"> 319 <div class="imgbox">
310 <i class="playIcon"></i> 320 <i class="playIcon" />
311 <img :src="fillImgUrl_webSite(n.picUrl)"></div> 321 <img :src="fillImgUrl_webSite(n.picUrl)"></div>
312 <div class="info"> 322 <div class="info">
313 <div class="text-primary small-size"> 323 <div class="text-primary small-size">
314 <span v-if="n.subName">{{n.subName + ' | '}}</span> 324 <span v-if="n.subName">{{ n.subName + ' | ' }}</span>
315 {{ n.belongTime }}</div> 325 {{ n.belongTime }}
326 </div>
316 <h2 class="esp_2">{{ n.name }}</h2> 327 <h2 class="esp_2">{{ n.name }}</h2>
317 </div> 328 </div>
318 </div> 329 </div>
...@@ -329,7 +340,10 @@ ...@@ -329,7 +340,10 @@
329 <h3 class="leftboderTT">评委介绍</h3> 340 <h3 class="leftboderTT">评委介绍</h3>
330 </div> 341 </div>
331 <el-row :gutter="20"> 342 <el-row :gutter="20">
332 <el-col :sm="12" :xl="4" :xs="12" :lg="4" :md="8" v-for="n in personList" :key="n.name"> 343 <el-col
344 v-for="n in personList" :key="n.name" :lg="4" :md="8" :sm="12"
345 :xl="4" :xs="12"
346 >
333 <div class="teacher" @click="goLeaderInfo"> 347 <div class="teacher" @click="goLeaderInfo">
334 <div class="imgbox"><img :src="n.src"></div> 348 <div class="imgbox"><img :src="n.src"></div>
335 <h3 class="esp">{{ n.name }}</h3> 349 <h3 class="esp">{{ n.name }}</h3>
...@@ -348,14 +362,15 @@ ...@@ -348,14 +362,15 @@
348 </div> 362 </div>
349 <div class="aboutBox"> 363 <div class="aboutBox">
350 <div class="content"> 364 <div class="content">
351 <div v-html="aboutUsContent"></div> 365 <div v-html="aboutUsContent" />
352 <!-- 无锡WDSF亚洲体育舞蹈节是由世界体育舞蹈(无锡)中心(世界体育舞蹈联合、亚洲体育舞蹈联合、中国体育舞蹈联合会和无锡市人民政府共建)打造面向全球的、长期落户的、城市自主的品牌赛事。--> 366 <!-- 无锡WDSF亚洲体育舞蹈节是由世界体育舞蹈(无锡)中心(世界体育舞蹈联合、亚洲体育舞蹈联合、中国体育舞蹈联合会和无锡市人民政府共建)打造面向全球的、长期落户的、城市自主的品牌赛事。-->
353 <!-- 2023年7月首次举办无锡2023年WDSF亚洲体育舞蹈节,包括2023年WDSF世界标准舞锦标赛、2023年WDSF世界体育舞蹈大奖赛(中国无锡)、2023年全国体育舞蹈公开系列赛(无锡站),共吸引来自全球39个国家及地区的1,716名顶级舞者参与。--> 367 <!-- 2023年7月首次举办无锡2023年WDSF亚洲体育舞蹈节,包括2023年WDSF世界标准舞锦标赛、2023年WDSF世界体育舞蹈大奖赛(中国无锡)、2023年全国体育舞蹈公开系列赛(无锡站),共吸引来自全球39个国家及地区的1,716名顶级舞者参与。-->
354 <!-- 同时,并将世界体育舞蹈(无锡)中心成功落户中国无锡,以“节日有竞赛、竞赛节日化”为发展指导原则,“四方”共同努力服务全球舞者。 <div class="shadowbox"/>--> 368 <!-- 同时,并将世界体育舞蹈(无锡)中心成功落户中国无锡,以“节日有竞赛、竞赛节日化”为发展指导原则,“四方”共同努力服务全球舞者。 <div class="shadowbox"/>-->
355 </div> 369 </div>
356 <div class="mt30 text-center"> 370 <div class="mt30 text-center">
357 <a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img 371 <a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img
358 style="filter: brightness(2);height: 8px" src="@/assets/v1/more.png"/></a> 372 src="@/assets/v1/more.png" style="filter: brightness(2);height: 8px"
373 ></a>
359 </div> 374 </div>
360 375
361 </div> 376 </div>
...@@ -390,7 +405,7 @@ ...@@ -390,7 +405,7 @@
390 <h3 class="leftboderTT">合作伙伴</h3> 405 <h3 class="leftboderTT">合作伙伴</h3>
391 </div> 406 </div>
392 <el-row :gutter="20"> 407 <el-row :gutter="20">
393 <el-col :lg="6" :sm="6" :xs="6" v-for="p in partners"> 408 <el-col v-for="p in partners" :lg="6" :sm="6" :xs="6">
394 <div class="logobox"> 409 <div class="logobox">
395 <img :src="fillImgUrl(JSON.parse(p.picUrl))"> 410 <img :src="fillImgUrl(JSON.parse(p.picUrl))">
396 </div> 411 </div>
...@@ -402,26 +417,27 @@ ...@@ -402,26 +417,27 @@
402 <script setup> 417 <script setup>
403 import HomeQuick from '@/viewsPc/components/homeQuick' 418 import HomeQuick from '@/viewsPc/components/homeQuick'
404 import HomeCalendar from '@/viewsPc/components/homeCalendar' 419 import HomeCalendar from '@/viewsPc/components/homeCalendar'
405 import {ref, nextTick, onMounted, watch} from 'vue' 420 import { ref, nextTick, onMounted, watch } from 'vue'
406 import {getCurrentInstance} from '@vue/runtime-core' 421 import { getCurrentInstance } from '@vue/runtime-core'
407 import {getHomePage, getNewsListById, getNewsList, getRank} from '@/apiPc/webSite' 422 import { getHomePage, getNewsListById, getNewsList, getRank } from '@/apiPc/webSite'
408 import {useRouter} from 'vue-router' 423 import { useRouter } from 'vue-router'
409 import {rankList} from '@/assets/js/data' 424 import { rankList } from '@/assets/js/data'
410 import _ from 'lodash' 425 import _ from 'lodash'
411 import {Swiper, SwiperSlide} from 'swiper/vue' 426 import { Swiper, SwiperSlide } from 'swiper/vue'
412 import {Autoplay, Navigation} from 'swiper' 427 import { Autoplay, Navigation } from 'swiper'
413 import 'swiper/css' 428 import 'swiper/css'
414 import {dayjs} from 'element-plus' 429 import { dayjs } from 'element-plus'
415 import * as match from "@/apiPc/match"; 430 import * as match from '@/apiPc/match'
416 import {getAboutUs, getppInfo, getZNList} from "@/apiPc/match"; 431 import { getAboutUs, getppInfo, getZNList } from '@/apiPc/match'
432
417 const modules = [Autoplay, Navigation] 433 const modules = [Autoplay, Navigation]
418 const navigationPic = ref({ 434 const navigationPic = ref({
419 nextEl: '.picnext', 435 nextEl: '.picnext',
420 prevEl: '.picprev' 436 prevEl: '.picprev'
421 }) 437 })
422 const router = useRouter() 438 const router = useRouter()
423 const {proxy} = getCurrentInstance() 439 const { proxy } = getCurrentInstance()
424 const emit = defineEmits(['pop','pickup','backNumber','schSearch']) 440 const emit = defineEmits(['pop', 'pickup', 'backNumber', 'schSearch'])
425 const time = ref(0) 441 const time = ref(0)
426 const etime = ref(0) 442 const etime = ref(0)
427 const personList = ref([ 443 const personList = ref([
...@@ -429,7 +445,7 @@ const personList = ref([ ...@@ -429,7 +445,7 @@ const personList = ref([
429 { name: 'Nenad Jeftic', pp: '标准舞裁判长 塞尔维亚', src: '/img/2.png' }, 445 { name: 'Nenad Jeftic', pp: '标准舞裁判长 塞尔维亚', src: '/img/2.png' },
430 { name: 'Dorel Bagiu', pp: '罗马尼亚', src: '/img/3.png' }, 446 { name: 'Dorel Bagiu', pp: '罗马尼亚', src: '/img/3.png' },
431 { name: 'Eduard Korotin', pp: ' 爱沙尼亚', src: '/img/4.png' }, 447 { name: 'Eduard Korotin', pp: ' 爱沙尼亚', src: '/img/4.png' },
432 { name: 'Ana Cristina Silva', pp: '葡萄牙', src: '/img/5.png'}, 448 { name: 'Ana Cristina Silva', pp: '葡萄牙', src: '/img/5.png' },
433 { name: 'Dallas Leslie Williams', pp: '记分长 澳大利亚', src: '/img/6.png' } 449 { name: 'Dallas Leslie Williams', pp: '记分长 澳大利亚', src: '/img/6.png' }
434 ]) 450 ])
435 const activeNews = ref(0) 451 const activeNews = ref(0)
...@@ -455,13 +471,13 @@ onMounted(() => { ...@@ -455,13 +471,13 @@ onMounted(() => {
455 471
456 const init = () => { 472 const init = () => {
457 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 473 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
458 time.value = dayjs('2024-07-17 07:00:00').diff(today, 'millisecond') 474 time.value = dayjs('2025-07-17 07:00:00').diff(today, 'millisecond')
459 etime.value = dayjs('2024-07-22 12:00:00').diff(today, 'millisecond') 475 etime.value = dayjs('2025-07-22 12:00:00').diff(today, 'millisecond')
460 getRank().then(res=>{ 476 getRank().then(res => {
461 rank.value = res.data.slice(0,6) 477 rank.value = res.data.slice(0, 6)
462 }) 478 })
463 getNewsListById({ 479 getNewsListById({
464 pageSize: time.value>0? 3:4, 480 pageSize: time.value > 0 ? 3 : 4,
465 pageNum: 1, 481 pageNum: 1,
466 sortId: '10000006' 482 sortId: '10000006'
467 } 483 }
...@@ -485,16 +501,16 @@ const init = () => { ...@@ -485,16 +501,16 @@ const init = () => {
485 ).then(res => { 501 ).then(res => {
486 newest2.value = res.rows 502 newest2.value = res.rows
487 }) 503 })
488 match.getMaList({topFlag:1}).then((res) => { 504 match.getMaList({ topFlag: 1 }).then((res) => {
489 maList.value = res.rows 505 maList.value = res.rows
490 for (let n of maList.value) { 506 for (const n of maList.value) {
491 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 507 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
492 if(n.signBeginTime){ 508 if (n.signBeginTime) {
493 n.time = dayjs(n.signBeginTime).diff(today, 'millisecond') 509 n.time = dayjs(n.signBeginTime).diff(today, 'millisecond')
494 } else { 510 } else {
495 n.time = 0 511 n.time = 0
496 } 512 }
497 if(n.signEndTime){ 513 if (n.signEndTime) {
498 n.timeEnd = dayjs(n.signEndTime).diff(today, 'millisecond') 514 n.timeEnd = dayjs(n.signEndTime).diff(today, 'millisecond')
499 } else { 515 } else {
500 n.time = 0 516 n.time = 0
...@@ -508,7 +524,7 @@ const getpartners = () => { ...@@ -508,7 +524,7 @@ const getpartners = () => {
508 match.getppInfo('10000001').then((res) => { 524 match.getppInfo('10000001').then((res) => {
509 aboutUsContent.value = res.data.contextZh 525 aboutUsContent.value = res.data.contextZh
510 }) 526 })
511 match.getZNList({sortId:'2000',language:1}).then((res) => { 527 match.getZNList({ sortId: '2000', language: 1 }).then((res) => {
512 partners.value = res.rows 528 partners.value = res.rows
513 }) 529 })
514 } 530 }
...@@ -525,7 +541,7 @@ const goDetail = (n) => { ...@@ -525,7 +541,7 @@ const goDetail = (n) => {
525 } 541 }
526 } 542 }
527 const golive = (n) => { 543 const golive = (n) => {
528 if(time.value>0){ 544 if (time.value > 0) {
529 window.open('https://wx.vzan.com/live/page/1151815649?v=1720589464698') 545 window.open('https://wx.vzan.com/live/page/1151815649?v=1720589464698')
530 } else { 546 } else {
531 router.push({ 547 router.push({
...@@ -560,38 +576,38 @@ const goGuide = () => { ...@@ -560,38 +576,38 @@ const goGuide = () => {
560 router.push({ 576 router.push({
561 name: 'guide', 577 name: 'guide',
562 query: { 578 query: {
563 index:8 579 index: 8
564 } 580 }
565 }) 581 })
566 } 582 }
567 const popMaster = () => { 583 const popMaster = () => {
568 var params = { 584 var params = {
569 cptId:matchData.value.id 585 cptId: matchData.value.id
570 } 586 }
571 emit('pop',params) 587 emit('pop', params)
572 } 588 }
573 const backNumberSearch = () => { 589 const backNumberSearch = () => {
574 var params = { 590 var params = {
575 cptId:matchData.value.id 591 cptId: matchData.value.id
576 } 592 }
577 emit('backNumber',params) 593 emit('backNumber', params)
578 } 594 }
579 const schSearch = () => { 595 const schSearch = () => {
580 var params = { 596 var params = {
581 cptId:matchData.value.id 597 cptId: matchData.value.id
582 } 598 }
583 emit('schSearch',params) 599 emit('schSearch', params)
584 } 600 }
585 const handlePickup=()=>{ 601 const handlePickup = () => {
586 const params={ 602 const params = {
587 cptId :matchData.value.id 603 cptId: matchData.value.id
588 } 604 }
589 emit('pickup',params) 605 emit('pickup', params)
590 } 606 }
591 607
592 </script> 608 </script>
593 609
594 <style scoped lang="scss"> 610 <style lang="scss" scoped>
595 611
596 .zn-bg { 612 .zn-bg {
597 background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC); 613 background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC);
...@@ -652,7 +668,8 @@ const handlePickup=()=>{ ...@@ -652,7 +668,8 @@ const handlePickup=()=>{
652 background: #000; 668 background: #000;
653 position: relative; 669 position: relative;
654 670
655 .banner-count {cursor: pointer; 671 .banner-count {
672 cursor: pointer;
656 position: absolute; 673 position: absolute;
657 padding: 20px 40px; 674 padding: 20px 40px;
658 font-size: 20px; 675 font-size: 20px;
...@@ -695,10 +712,20 @@ const handlePickup=()=>{ ...@@ -695,10 +712,20 @@ const handlePickup=()=>{
695 font-size: 20px; 712 font-size: 20px;
696 } 713 }
697 } 714 }
698 .bb{width: 580px;justify-content: center;height: 100px;font-size: 30px;} 715
699 .banner-count.bb:hover{box-shadow: 0 0 20px #453DEA;border-radius: 100px; 716 .bb {
717 width: 580px;
718 justify-content: center;
719 height: 100px;
720 font-size: 30px;
721 }
722
723 .banner-count.bb:hover {
724 box-shadow: 0 0 20px #453DEA;
725 border-radius: 100px;
700 background: linear-gradient(-90deg, #8623FC, #453DEA) 726 background: linear-gradient(-90deg, #8623FC, #453DEA)
701 } 727 }
728
702 .box { 729 .box {
703 position: absolute; 730 position: absolute;
704 height: 100%; 731 height: 100%;
...@@ -765,6 +792,7 @@ const handlePickup=()=>{ ...@@ -765,6 +792,7 @@ const handlePickup=()=>{
765 position: relative; 792 position: relative;
766 height: 400px; 793 height: 400px;
767 } 794 }
795
768 .ggbond { 796 .ggbond {
769 height: 230px; 797 height: 230px;
770 position: relative; 798 position: relative;
...@@ -780,44 +808,94 @@ const handlePickup=()=>{ ...@@ -780,44 +808,94 @@ const handlePickup=()=>{
780 } 808 }
781 } 809 }
782 810
783 .teacher{height: 410px;background: #fff; 811 .teacher {
784 position: relative;border-radius: 10px;overflow: hidden; 812 height: 410px;
785 .imgbox{background: linear-gradient(0,#C8AAFC,#fff)} 813 background: #fff;
786 img{height: 350px;width: 100%;object-fit: cover;} 814 position: relative;
787 h3{color: #fff;background: url("@/assets/dance/name_bg.png") no-repeat center; 815 border-radius: 10px;
788 background-size:110% 100%;text-align: center;height: 30px;line-height: 30px; 816 overflow: hidden;
789 font-size: 18px;position: absolute;width: 100%;bottom: 30px;} 817
790 p{text-align: center;margin: 25px 0 0; 818 .imgbox {
791 font-size: 14px;} 819 background: linear-gradient(0, #C8AAFC, #fff)
820 }
821
822 img {
823 height: 350px;
824 width: 100%;
825 object-fit: cover;
826 }
827
828 h3 {
829 color: #fff;
830 background: url("@/assets/dance/name_bg.png") no-repeat center;
831 background-size: 110% 100%;
832 text-align: center;
833 height: 30px;
834 line-height: 30px;
835 font-size: 18px;
836 position: absolute;
837 width: 100%;
838 bottom: 30px;
839 }
840
841 p {
842 text-align: center;
843 margin: 25px 0 0;
844 font-size: 14px;
845 }
792 } 846 }
847
793 @media screen and (max-width: 1650px) { 848 @media screen and (max-width: 1650px) {
794 .teacher{height: 320px; 849 .teacher {
795 .imgbox{ 850 height: 320px;
796 img{height: 260px} 851
852 .imgbox {
853 img {
854 height: 260px
855 }
797 } 856 }
798 } 857 }
799 } 858 }
859
800 @media screen and (max-width: 1200px) { 860 @media screen and (max-width: 1200px) {
801 .teacher{height: 450px;margin: 0 0 20px; 861 .teacher {
802 .imgbox{ 862 height: 450px;
803 img{height: 390px} 863 margin: 0 0 20px;
864
865 .imgbox {
866 img {
867 height: 390px
868 }
804 } 869 }
805 } 870 }
806 } 871 }
872
807 @media screen and (max-width: 900px) { 873 @media screen and (max-width: 900px) {
808 .teacher{height: 400px;margin: 0 0 20px; 874 .teacher {
809 .imgbox{ 875 height: 400px;
810 img{height: 340px} 876 margin: 0 0 20px;
877
878 .imgbox {
879 img {
880 height: 340px
881 }
811 } 882 }
812 } 883 }
813 } 884 }
885
814 @media screen and (max-width: 800px) { 886 @media screen and (max-width: 800px) {
815 .teacher{height: 400px;margin: 0 0 20px; 887 .teacher {
816 .imgbox{ 888 height: 400px;
817 img{height: 260px} 889 margin: 0 0 20px;
890
891 .imgbox {
892 img {
893 height: 260px
894 }
818 } 895 }
819 } 896 }
820 } 897 }
898
821 .aboutBox { 899 .aboutBox {
822 background: url("@/assets/dance/about_bg.png") no-repeat center; 900 background: url("@/assets/dance/about_bg.png") no-repeat center;
823 height: 375px; 901 height: 375px;
...@@ -905,7 +983,9 @@ const handlePickup=()=>{ ...@@ -905,7 +983,9 @@ const handlePickup=()=>{
905 margin: 0 0 30px; 983 margin: 0 0 30px;
906 984
907 img { 985 img {
908 width: 100%;height: 100%;object-fit: contain; 986 width: 100%;
987 height: 100%;
988 object-fit: contain;
909 } 989 }
910 } 990 }
911 991
...@@ -1032,15 +1112,30 @@ const handlePickup=()=>{ ...@@ -1032,15 +1112,30 @@ const handlePickup=()=>{
1032 } 1112 }
1033 } 1113 }
1034 } 1114 }
1035 .livetimecount{position: absolute;top: 0;z-index: 2;background: #F04035; 1115
1116 .livetimecount {
1117 position: absolute;
1118 top: 0;
1119 z-index: 2;
1120 background: #F04035;
1036 padding: 2px 4px; 1121 padding: 2px 4px;
1037 &::after{content: ''; width: 0; 1122
1038 height: 0;position: absolute;right: -15px;top: 0; 1123 &::after {
1124 content: '';
1125 width: 0;
1126 height: 0;
1127 position: absolute;
1128 right: -15px;
1129 top: 0;
1039 border-top: 24px solid #F04035; 1130 border-top: 24px solid #F04035;
1040 border-right: 15px solid transparent;} 1131 border-right: 15px solid transparent;
1041 .van-count-down { display: flex; 1132 }
1133
1134 .van-count-down {
1135 display: flex;
1042 color: #fff; 1136 color: #fff;
1043 font-size: 14px; 1137 font-size: 14px;
1138
1044 .block { 1139 .block {
1045 color: #fff; 1140 color: #fff;
1046 text-align: center; 1141 text-align: center;
...@@ -1049,12 +1144,16 @@ const handlePickup=()=>{ ...@@ -1049,12 +1144,16 @@ const handlePickup=()=>{
1049 } 1144 }
1050 } 1145 }
1051 } 1146 }
1147
1052 @media (max-width: 500px) { 1148 @media (max-width: 500px) {
1053 .forPc{display: none!important;} 1149 .forPc {
1054 .logobox{ 1150 display: none !important;
1151 }
1152 .logobox {
1055 height: 60px; 1153 height: 60px;
1056 } 1154 }
1057 } 1155 }
1156
1058 :deep(.btn-q) { 1157 :deep(.btn-q) {
1059 //background: #FFFFFF; 1158 //background: #FFFFFF;
1060 //font-size: 18px; 1159 //font-size: 18px;
...@@ -1077,16 +1176,16 @@ const handlePickup=()=>{ ...@@ -1077,16 +1176,16 @@ const handlePickup=()=>{
1077 box-sizing: inherit; 1176 box-sizing: inherit;
1078 } 1177 }
1079 1178
1080 .btn-q:hover{ 1179 .btn-q:hover {
1081 box-shadow: 0 0 20px #453DEA; 1180 box-shadow: 0 0 20px #453DEA;
1082 border-radius: 100px; 1181 border-radius: 100px;
1083 background: linear-gradient(-90deg, #8623FC, #453DEA) !important; 1182 background: linear-gradient(-90deg, #8623FC, #453DEA) !important;
1084 } 1183 }
1085 1184
1086 .ding{ 1185 .ding {
1087 position: fixed; 1186 position: fixed;
1088 right: 0px; 1187 right: 0px;
1089 z-index:99; 1188 z-index: 99;
1090 top: 40%; 1189 top: 40%;
1091 background: linear-gradient(-90deg, #8623FC, #453DEA) !important; 1190 background: linear-gradient(-90deg, #8623FC, #453DEA) !important;
1092 box-shadow: none; 1191 box-shadow: none;
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="banner"> 3 <div class="banner">
4 <el-carousel height="450px" autoplay :interval="2000" class="forPc" :autoplay="false" arrow="hover" @change="carouselChange"> 4 <el-carousel
5 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id"> 5 :autoplay="false" :interval="2000" arrow="hover" autoplay class="forPc"
6 height="450px"
7 @change="carouselChange"
8 >
9 <el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;">
6 <div class="bannerItem"> 10 <div class="bannerItem">
7 <div class="h100" @click.stop="goMatch(n)"> 11 <div class="h100" @click.stop="goMatch(n)">
8 <img v-if="n.bgImgUrl" class="bannerImg" :src="fillImgUrl(n.bgImgUrl)"> 12 <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg">
9 <img v-else class="bannerImg" src="@/assets/dance/banner.png"> 13 <img v-else class="bannerImg" src="@/assets/dance/banner.png">
10 <div class="box" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> 14 <div class="box" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;">
11 15
12 <div class="banner-count" v-if="n.time>0" > 16 <div v-if="n.time>0" class="banner-count">
13 Countdown 17 Countdown
14 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> 18 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
15 <template #default="timeData"> 19 <template #default="timeData">
16 <div class="block">{{ timeData.days }} 20 <div class="block">{{ timeData.days }}
17 <span class="colon">Days</span> 21 <span class="colon">Days</span>
18 </div> 22 </div>
23
19 <div class="block">{{ timeData.hours }} 24 <div class="block">{{ timeData.hours }}
20 <span class="colon">Hrs</span> 25 <span class="colon">Hrs</span>
21 </div> 26 </div>
27
22 <div class="block">{{ timeData.minutes }} 28 <div class="block">{{ timeData.minutes }}
23 <span class="colon">Min</span> 29 <span class="colon">Min</span>
24 </div> 30 </div>
31
25 <div class="block">{{ timeData.seconds }} 32 <div class="block">{{ timeData.seconds }}
26 <span class="colon">Sec</span> 33 <span class="colon">Sec</span>
27 </div> 34 </div>
...@@ -33,7 +40,7 @@ ...@@ -33,7 +40,7 @@
33 Registration has ended 40 Registration has ended
34 </div> 41 </div>
35 </div> 42 </div>
36 <div class="banner-count bb" v-if="n.time<=0&&n.timeEnd>=0" @click="goMatch(n)"> 43 <div v-if="n.time<=0&&n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)">
37 REGISTER NOW 44 REGISTER NOW
38 </div> 45 </div>
39 </div> 46 </div>
...@@ -41,26 +48,29 @@ ...@@ -41,26 +48,29 @@
41 </div> 48 </div>
42 </el-carousel-item> 49 </el-carousel-item>
43 </el-carousel> 50 </el-carousel>
44 <el-carousel class="forWei" height="160px" autoplay arrow="hover" @change="carouselChange"> 51 <el-carousel arrow="hover" autoplay class="forWei" height="160px" @change="carouselChange">
45 <el-carousel-item style="height: 160px;" v-for="n in maList" :key="n.id"> 52 <el-carousel-item v-for="n in maList" :key="n.id" style="height: 160px;">
46 <div class="bannerItem" style="height:100%"> 53 <div class="bannerItem" style="height:100%">
47 <div class="h100" style="position: relative"> 54 <div class="h100" style="position: relative">
48 <img v-if="n.bgImgUrl" class="bannerImg" :src="fillImgUrl(n.bgImgUrl)"> 55 <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg">
49 <img v-else class="bannerImg" src="@/assets/dance/banner.png"> 56 <img v-else class="bannerImg" src="@/assets/dance/banner.png">
50 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;"> 57 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;">
51 <div class="banner-count" v-if="n.time>0" > 58 <div v-if="n.time>0" class="banner-count">
52 Countdown 59 Countdown
53 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> 60 <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒">
54 <template #default="timeData"> 61 <template #default="timeData">
55 <div class="block">{{ timeData.days }} 62 <div class="block">{{ timeData.days }}
56 <span class="colon">Days</span> 63 <span class="colon">Days</span>
57 </div> 64 </div>
65
58 <div class="block">{{ timeData.hours }} 66 <div class="block">{{ timeData.hours }}
59 <span class="colon">Hrs</span> 67 <span class="colon">Hrs</span>
60 </div> 68 </div>
69
61 <div class="block">{{ timeData.minutes }} 70 <div class="block">{{ timeData.minutes }}
62 <span class="colon">Min</span> 71 <span class="colon">Min</span>
63 </div> 72 </div>
73
64 <div class="block">{{ timeData.seconds }} 74 <div class="block">{{ timeData.seconds }}
65 <span class="colon">Sec</span> 75 <span class="colon">Sec</span>
66 </div> 76 </div>
...@@ -73,7 +83,7 @@ ...@@ -73,7 +83,7 @@
73 Registration has ended 83 Registration has ended
74 </div> 84 </div>
75 </div> 85 </div>
76 <div class="banner-count bb" v-if="n.time<=0&&n.timeEnd>=0" @click="goMatch(n)"> 86 <div v-if="n.time<=0&&n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)">
77 REGISTER NOW 87 REGISTER NOW
78 </div> 88 </div>
79 89
...@@ -86,28 +96,38 @@ ...@@ -86,28 +96,38 @@
86 96
87 <div class="box zn-bg"> 97 <div class="box zn-bg">
88 <div class="zn-Box"> 98 <div class="zn-Box">
89 <img class="bbbg" v-if="matchData?.logoUrl" :src="fillImgUrl(matchData?.logoUrl)"/> 99 <img v-if="matchData?.logoUrl" :src="fillImgUrl(matchData?.logoUrl)" class="bbbg">
90 <el-row> 100 <el-row>
91 <el-col :sm="24" :lg="10"> 101 <el-col :lg="10" :sm="24">
92 <div class="bgbg"> 102 <div class="bgbg">
93 <h1 style="color: #fff">{{matchData?.name}}</h1> 103 <h1 style="color: #fff">{{ matchData?.name }}</h1>
94 <div class="mb30"> 104 <div class="mb30">
95 <a class="zn-btn" style="font-size: 15px" @click="goGuide"> 105 <a class="zn-btn" style="font-size: 15px" @click="goGuide">
96 GUIDELINE 106 GUIDELINE
97 <el-icon><download /></el-icon> 107 <el-icon>
108 <download />
109 </el-icon>
98 </a> 110 </a>
99 <a class="zn-btn ml20 btn-q forPc" v-if="matchData.isCourseView==1" style="font-size: 15px;margin-right: 20px" @click="popMaster"> 111 <a
100 Junior &Youth Camp REGISTER<el-icon><Edit /></el-icon> 112 v-if="matchData.isCourseView==1" class="zn-btn ml20 btn-q forPc"
113 style="font-size: 15px;margin-right: 20px" @click="popMaster"
114 >
115 Junior &Youth Camp REGISTER
116 <el-icon>
117 <Edit />
118 </el-icon>
101 </a> 119 </a>
102 <a class="zn-btn ml20 btn-q" v-show="matchData?.id=='1778253367748993026'" @click="backNumberSearch">Competition Number</a> 120 <a v-show="matchData?.id=='1778253367748993026'" class="zn-btn ml20 btn-q" @click="backNumberSearch">Competition
103 <a class="zn-btn ml20 btn-q" v-show="matchData?.id=='1778253367748993026'" @click="schSearchSearch">Schedule Inquiry</a> 121 Number</a>
122 <a v-show="matchData?.id=='1778253367748993026'" class="zn-btn ml20 btn-q" @click="schSearchSearch">Schedule
123 Inquiry</a>
104 124
105 </div> 125 </div>
106 126
107 </div> 127 </div>
108 </el-col> 128 </el-col>
109 <el-col :sm="24" :lg="14"> 129 <el-col :lg="14" :sm="24">
110 <HomeQuick :match-id="matchData?.id" :cpt-name="matchData?.name"/> 130 <HomeQuick :cpt-name="matchData?.name" :match-id="matchData?.id" />
111 </el-col> 131 </el-col>
112 </el-row> 132 </el-row>
113 </div> 133 </div>
...@@ -116,25 +136,25 @@ ...@@ -116,25 +136,25 @@
116 136
117 <div id="part0" class="box part"> 137 <div id="part0" class="box part">
118 <el-row :gutter="20"> 138 <el-row :gutter="20">
119 <el-col :sm="24" :lg="12"> 139 <el-col :lg="12" :sm="24">
120 <div class="indexTitle"> 140 <div class="indexTitle">
121 <h3 class="leftboderTT">COMPETITION SCHEDULE</h3> 141 <h3 class="leftboderTT">COMPETITION SCHEDULE</h3>
122 <a class="more" @click="gosaiC">MORE</a> 142 <a class="more" @click="gosaiC">MORE</a>
123 </div> 143 </div>
124 <!--赛事日历--> 144 <!--赛事日历-->
125 <el-card :body-style="{'padding':'20px 20px'}"> 145 <el-card :body-style="{'padding':'20px 20px'}">
126 <home-calendar/> 146 <home-calendar />
127 </el-card> 147 </el-card>
128 </el-col> 148 </el-col>
129 <el-col :sm="24" :lg="12"> 149 <el-col :lg="12" :sm="24">
130 <div class="indexTitle"> 150 <div class="indexTitle">
131 <h3 class="leftboderTT">MEDAL LIST</h3> 151 <h3 class="leftboderTT">MEDAL LIST</h3>
132 <!-- <a class="more" href="#/saiC">MORE</a>--> 152 <!-- <a class="more" href="#/saiC">MORE</a>-->
133 </div> 153 </div>
134 <!--历史排名--> 154 <!--历史排名-->
135 <el-card :body-style="{'padding':'10px 20px 18px'}"> 155 <el-card :body-style="{'padding':'10px 20px 18px'}">
136 <el-table stripe :data="rank"> 156 <el-table :data="rank" stripe>
137 <el-table-column label="RANK" align="center" width="80" type="index"> 157 <el-table-column align="center" label="RANK" type="index" width="80">
138 <template #default="scope"> 158 <template #default="scope">
139 <span v-if="scope.row.mingCi == 1" style="color:#F8A617">{{ scope.row.mingCi }}</span> 159 <span v-if="scope.row.mingCi == 1" style="color:#F8A617">{{ scope.row.mingCi }}</span>
140 <span v-else-if="scope.row.mingCi == 2" style="color:#778B92">{{ scope.row.mingCi }}</span> 160 <span v-else-if="scope.row.mingCi == 2" style="color:#778B92">{{ scope.row.mingCi }}</span>
...@@ -145,12 +165,12 @@ ...@@ -145,12 +165,12 @@
145 <el-table-column label="COUNTRY"> 165 <el-table-column label="COUNTRY">
146 <template #default="scope"> 166 <template #default="scope">
147 <div> 167 <div>
148 <span :class="`flag-icon flag-icon-${scope.row.code}`"></span> 168 <span :class="`flag-icon flag-icon-${scope.row.code}`" />
149 {{ scope.row.countryShortName }} 169 {{ scope.row.countryShortName }}
150 </div> 170 </div>
151 </template> 171 </template>
152 </el-table-column> 172 </el-table-column>
153 <el-table-column label="COUPLE" align="center"> 173 <el-table-column align="center" label="COUPLE">
154 <template #default="scope"> 174 <template #default="scope">
155 <div class="text-primary esp">{{ scope.row.zuHe }}</div> 175 <div class="text-primary esp">{{ scope.row.zuHe }}</div>
156 </template> 176 </template>
...@@ -195,8 +215,8 @@ ...@@ -195,8 +215,8 @@
195 <el-row :gutter="20"> 215 <el-row :gutter="20">
196 <el-col 216 <el-col
197 v-for="(n,index) in newest2" 217 v-for="(n,index) in newest2"
198 :key="n.id" :xs="24" :sm="8" 218 :key="n.id" :lg="8" :sm="8"
199 :lg="8" 219 :xs="24"
200 > 220 >
201 <div class="activeItem" @click="goNewsDetail(n)"> 221 <div class="activeItem" @click="goNewsDetail(n)">
202 <div class="imgbox"> 222 <div class="imgbox">
...@@ -208,7 +228,7 @@ ...@@ -208,7 +228,7 @@
208 </div> 228 </div>
209 <h3 class="esp">{{ n.name }}</h3> 229 <h3 class="esp">{{ n.name }}</h3>
210 <p class="esp_2" style="height: 40px"> 230 <p class="esp_2" style="height: 40px">
211 {{n.subName}} 231 {{ n.subName }}
212 </p> 232 </p>
213 <a>DETAIL</a> 233 <a>DETAIL</a>
214 </div> 234 </div>
...@@ -227,8 +247,8 @@ ...@@ -227,8 +247,8 @@
227 <el-card> 247 <el-card>
228 <el-row :gutter="20"> 248 <el-row :gutter="20">
229 <el-col :lg="8"> 249 <el-col :lg="8">
230 <a class="liveImgbox" target="_blank" href="https://wx.vzan.com/live/page/1151815649?v=1720589464698"> 250 <a class="liveImgbox" href="https://wx.vzan.com/live/page/1151815649?v=1720589464698" target="_blank">
231 <div class="livetimecount" v-if="time>0"> 251 <div v-if="time>0" class="livetimecount">
232 <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒"> 252 <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒">
233 <template #default="timeData"> 253 <template #default="timeData">
234 <div class="block">{{ timeData.days }} 254 <div class="block">{{ timeData.days }}
...@@ -246,11 +266,11 @@ ...@@ -246,11 +266,11 @@
246 </template> 266 </template>
247 </van-count-down> 267 </van-count-down>
248 </div> 268 </div>
249 <!-- <i class="ii" v-else-if="etime>0&&time<=0">Living</i>--> 269 <!-- <i class="ii" v-else-if="etime>0&&time<=0">Living</i>-->
250 <!-- <i class="livetimecount" v-if="etime<=0">End</i>--> 270 <!-- <i class="livetimecount" v-if="etime<=0">End</i>-->
251 <div class="imgBox"><img src="/img/111.jpeg"/></div> 271 <div class="imgBox"><img src="/img/111.jpeg"></div>
252 <h3 class="esp"> 272 <h3 class="esp">
253 WUXI 2024 WDSF ASIAN DANCESPORT FESTIVAL 273 WUXI 2025 WDSF ASIAN DANCESPORT FESTIVAL
254 </h3> 274 </h3>
255 </a> 275 </a>
256 </el-col> 276 </el-col>
...@@ -258,11 +278,11 @@ ...@@ -258,11 +278,11 @@
258 278
259 <div class="swiperPic forPx"> 279 <div class="swiperPic forPx">
260 <swiper 280 <swiper
261 class="swiper-wrapper" :modules="modules" :slides-per-view="3" :space-between="20" 281 :autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic"
262 :navigation="navigationPic" 282 :slides-per-view="3"
263 :autoplay="true" :loop="true" 283 :space-between="20" class="swiper-wrapper"
264 > 284 >
265 <swiper-slide v-for="(n,i) in picList" :key="i" > 285 <swiper-slide v-for="(n,i) in picList" :key="i">
266 <div class="picbox" @click="goNewsDetail(n)"> 286 <div class="picbox" @click="goNewsDetail(n)">
267 <img :src="fillImgUrl_webSite(n.picUrl)"> 287 <img :src="fillImgUrl_webSite(n.picUrl)">
268 </div> 288 </div>
...@@ -282,8 +302,9 @@ ...@@ -282,8 +302,9 @@
282 <img :src="fillImgUrl_webSite(n.picUrl)"></div> 302 <img :src="fillImgUrl_webSite(n.picUrl)"></div>
283 <div class="info"> 303 <div class="info">
284 <div class="text-primary small-size"> 304 <div class="text-primary small-size">
285 <span v-if="n.subName">{{n.subName + ' | '}}</span> 305 <span v-if="n.subName">{{ n.subName + ' | ' }}</span>
286 {{ n.belongTime }}</div> 306 {{ n.belongTime }}
307 </div>
287 <h2 class="esp_2">{{ n.name }}</h2> 308 <h2 class="esp_2">{{ n.name }}</h2>
288 </div> 309 </div>
289 </div> 310 </div>
...@@ -301,8 +322,8 @@ ...@@ -301,8 +322,8 @@
301 </div> 322 </div>
302 <el-row :gutter="20"> 323 <el-row :gutter="20">
303 <el-col 324 <el-col
304 v-for="n in personList" :key="n.name" :sm="8" :xl="4" :xs="12" 325 v-for="n in personList" :key="n.name" :lg="4" :sm="8" :xl="4"
305 :lg="4" 326 :xs="12"
306 > 327 >
307 <div class="teacher"> 328 <div class="teacher">
308 <div class="imgbox"><img :src="n.src"></div> 329 <div class="imgbox"><img :src="n.src"></div>
...@@ -323,11 +344,12 @@ ...@@ -323,11 +344,12 @@
323 </div> 344 </div>
324 <div class="aboutBox"> 345 <div class="aboutBox">
325 <div class="content"> 346 <div class="content">
326 <div v-html="aboutUsContent"></div> 347 <div v-html="aboutUsContent" />
327 <div class="shadowbox" /> 348 <div class="shadowbox" />
328 </div> 349 </div>
329 <div class="mt30 text-center"> 350 <div class="mt30 text-center">
330 <a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">Learn more <img style="filter: brightness(2);height: 8px;margin-left: 10px" src="@/assets/v1/more.png"></a> 351 <a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">Learn more
352 <img src="@/assets/v1/more.png" style="filter: brightness(2);height: 8px;margin-left: 10px"></a>
331 </div> 353 </div>
332 354
333 </div> 355 </div>
...@@ -335,7 +357,7 @@ ...@@ -335,7 +357,7 @@
335 <el-col :lg="12"> 357 <el-col :lg="12">
336 <div class="indexTitle"> 358 <div class="indexTitle">
337 <h3 class="leftboderTT">CONTACT</h3> 359 <h3 class="leftboderTT">CONTACT</h3>
338 <a class="more" style="filter: brightness(10)" href="#/about/wuDao">MORE</a> 360 <a class="more" href="#/about/wuDao" style="filter: brightness(10)">MORE</a>
339 </div> 361 </div>
340 <div class="mapBox"> 362 <div class="mapBox">
341 <div class="content"> 363 <div class="content">
...@@ -362,7 +384,7 @@ ...@@ -362,7 +384,7 @@
362 <h3 class="leftboderTT">PARTNERS</h3> 384 <h3 class="leftboderTT">PARTNERS</h3>
363 </div> 385 </div>
364 <el-row :gutter="20"> 386 <el-row :gutter="20">
365 <el-col :lg="6" :sm="12" :xs="6" v-for="p in partners"> 387 <el-col v-for="p in partners" :lg="6" :sm="12" :xs="6">
366 <div class="logobox"> 388 <div class="logobox">
367 <img :src="fillImgUrl(JSON.parse(p.picUrl))"> 389 <img :src="fillImgUrl(JSON.parse(p.picUrl))">
368 </div> 390 </div>
...@@ -376,7 +398,7 @@ ...@@ -376,7 +398,7 @@
376 <script setup> 398 <script setup>
377 import { ref, nextTick, onMounted, watch } from 'vue' 399 import { ref, nextTick, onMounted, watch } from 'vue'
378 import { getCurrentInstance } from '@vue/runtime-core' 400 import { getCurrentInstance } from '@vue/runtime-core'
379 import {getNewsListById, getNewsList, getWeather, getRank} from '@/apiPc/webSite' 401 import { getNewsListById, getNewsList, getWeather, getRank } from '@/apiPc/webSite'
380 import { useRouter } from 'vue-router' 402 import { useRouter } from 'vue-router'
381 import _ from 'lodash' 403 import _ from 'lodash'
382 import HomeQuick from '@/viewsPc/components/homeQuick' 404 import HomeQuick from '@/viewsPc/components/homeQuick'
...@@ -384,9 +406,10 @@ import HomeCalendar from '@/viewsPc/components/homeCalendar' ...@@ -384,9 +406,10 @@ import HomeCalendar from '@/viewsPc/components/homeCalendar'
384 import { Swiper, SwiperSlide } from 'swiper/vue' 406 import { Swiper, SwiperSlide } from 'swiper/vue'
385 import { Autoplay, Navigation } from 'swiper' 407 import { Autoplay, Navigation } from 'swiper'
386 import 'swiper/css' 408 import 'swiper/css'
387 import {dayjs, ElMessage} from 'element-plus' 409 import { dayjs, ElMessage } from 'element-plus'
388 import * as match from "@/apiPc/match"; 410 import * as match from '@/apiPc/match'
389 import {rankList} from '@/assets/js/data' 411 import { rankList } from '@/assets/js/data'
412
390 const modules = [Autoplay, Navigation] 413 const modules = [Autoplay, Navigation]
391 const navigationPic = ref({ 414 const navigationPic = ref({
392 nextEl: '.picnext', 415 nextEl: '.picnext',
...@@ -394,7 +417,7 @@ const navigationPic = ref({ ...@@ -394,7 +417,7 @@ const navigationPic = ref({
394 }) 417 })
395 const router = useRouter() 418 const router = useRouter()
396 const { proxy } = getCurrentInstance() 419 const { proxy } = getCurrentInstance()
397 const emit = defineEmits(['pop','backNumber','schSearch']) 420 const emit = defineEmits(['pop', 'backNumber', 'schSearch'])
398 const time = ref(0) 421 const time = ref(0)
399 const etime = ref(0) 422 const etime = ref(0)
400 423
...@@ -403,7 +426,7 @@ const personList = ref([ ...@@ -403,7 +426,7 @@ const personList = ref([
403 { name: 'Nenad Jeftic', pp: 'Chairperson for Standard SRB', src: '/img/2.png' }, 426 { name: 'Nenad Jeftic', pp: 'Chairperson for Standard SRB', src: '/img/2.png' },
404 { name: 'Dorel Bagiu', pp: 'ROU', src: '/img/3.png' }, 427 { name: 'Dorel Bagiu', pp: 'ROU', src: '/img/3.png' },
405 { name: 'Eduard Korotin', pp: ' EST', src: '/img/4.png' }, 428 { name: 'Eduard Korotin', pp: ' EST', src: '/img/4.png' },
406 { name: 'Ana Cristina Silva', pp: 'POR', src: '/img/5.png'}, 429 { name: 'Ana Cristina Silva', pp: 'POR', src: '/img/5.png' },
407 { name: 'Dallas Leslie Williams', pp: 'Scrutineer AUS', src: '/img/6.png' } 430 { name: 'Dallas Leslie Williams', pp: 'Scrutineer AUS', src: '/img/6.png' }
408 ]) 431 ])
409 const activeNews = ref(0) 432 const activeNews = ref(0)
...@@ -421,7 +444,7 @@ const nowscores = ref([]) ...@@ -421,7 +444,7 @@ const nowscores = ref([])
421 const livelist = ref([]) 444 const livelist = ref([])
422 const maList = ref([]) 445 const maList = ref([])
423 const picList = ref([]) 446 const picList = ref([])
424 const calendarValue = ref('2024-07-22') 447 const calendarValue = ref('2025-07-22')
425 const aboutUsContent = ref('') 448 const aboutUsContent = ref('')
426 const partners = ref([]) 449 const partners = ref([])
427 450
...@@ -432,37 +455,43 @@ onMounted(() => { ...@@ -432,37 +455,43 @@ onMounted(() => {
432 455
433 const init = () => { 456 const init = () => {
434 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 457 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
435 etime.value = dayjs('2024-07-22 12:00:00').diff(today, 'millisecond') 458 etime.value = dayjs('2025-07-22 12:00:00').diff(today, 'millisecond')
436 time.value = dayjs('2024-07-17 07:00:00').diff(today, 'millisecond') 459 time.value = dayjs('2025-07-17 07:00:00').diff(today, 'millisecond')
437 getRank().then(res=>{ 460 getRank().then(res => {
438 rank.value = res.data 461 rank.value = res.data
439 }) 462 })
440 getNewsListById( 463 getNewsListById(
441 { pageSize: 4, 464 {
465 pageSize: 4,
442 pageNum: 1, 466 pageNum: 1,
443 sortId: '10000008' } 467 sortId: '10000008'
468 }
444 ).then(res => { 469 ).then(res => {
445 livelist.value = res.rows 470 livelist.value = res.rows
446 }) 471 })
447 getNewsListById({ pageSize: 5, 472 getNewsListById({
473 pageSize: 5,
448 pageNum: 1, 474 pageNum: 1,
449 sortId: '10000009' } 475 sortId: '10000009'
476 }
450 ).then(res => { 477 ).then(res => {
451 picList.value = res.rows 478 picList.value = res.rows
452 }) 479 })
453 getNewsList({ pageSize: 3, 480 getNewsList({
481 pageSize: 3,
454 pageNum: 1, 482 pageNum: 1,
455 language:2, 483 language: 2,
456 code: '1000' } 484 code: '1000'
485 }
457 ).then(res => { 486 ).then(res => {
458 newest2.value = res.rows 487 newest2.value = res.rows
459 }) 488 })
460 match.getMaList({topFlag:1}).then((res) => { 489 match.getMaList({ topFlag: 1 }).then((res) => {
461 maList.value = res.rows 490 maList.value = res.rows
462 for (let n of maList.value) { 491 for (const n of maList.value) {
463 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 492 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
464 n.time = dayjs(n.signBeginTime).diff(today, 'millisecond') 493 n.time = dayjs(n.signBeginTime).diff(today, 'millisecond')
465 if(n.signEndTime){ 494 if (n.signEndTime) {
466 n.timeEnd = dayjs(n.signEndTime).diff(today, 'millisecond') 495 n.timeEnd = dayjs(n.signEndTime).diff(today, 'millisecond')
467 } else { 496 } else {
468 n.time = 0 497 n.time = 0
...@@ -476,7 +505,7 @@ const getpartners = () => { ...@@ -476,7 +505,7 @@ const getpartners = () => {
476 match.getAboutUs().then((res) => { 505 match.getAboutUs().then((res) => {
477 aboutUsContent.value = res.data.contextEn 506 aboutUsContent.value = res.data.contextEn
478 }) 507 })
479 match.getZNList({sortId:'2000',language:2}).then((res) => { 508 match.getZNList({ sortId: '2000', language: 2 }).then((res) => {
480 partners.value = res.rows 509 partners.value = res.rows
481 }) 510 })
482 } 511 }
...@@ -522,65 +551,112 @@ const building = () => { ...@@ -522,65 +551,112 @@ const building = () => {
522 const goGuide = () => { 551 const goGuide = () => {
523 router.push({ 552 router.push({
524 path: `/guide`, 553 path: `/guide`,
525 query:{ 554 query: {
526 index:8 555 index: 8
527 } 556 }
528 }) 557 })
529 } 558 }
530 const popMaster = () => { 559 const popMaster = () => {
531 var params = { 560 var params = {
532 cptId:matchData.value.id 561 cptId: matchData.value.id
533 } 562 }
534 emit('pop',params) 563 emit('pop', params)
535 } 564 }
536 const backNumberSearch = () => { 565 const backNumberSearch = () => {
537 var params = { 566 var params = {
538 cptId:matchData.value.id 567 cptId: matchData.value.id
539 } 568 }
540 emit('backNumber',params) 569 emit('backNumber', params)
541 } 570 }
542 const schSearchSearch = () => { 571 const schSearchSearch = () => {
543 var params = { 572 var params = {
544 cptId:matchData.value.id 573 cptId: matchData.value.id
545 } 574 }
546 emit('schSearch',params) 575 emit('schSearch', params)
547 } 576 }
548 const handlePickup=()=>{ 577 const handlePickup = () => {
549 const params={ 578 const params = {
550 cptId :matchData.value.id 579 cptId: matchData.value.id
551 } 580 }
552 emit('pickup',params) 581 emit('pickup', params)
553 } 582 }
554 </script> 583 </script>
555 584
556 <style scoped lang="scss"> 585 <style lang="scss" scoped>
557 .zn-bg{background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC); 586 .zn-bg {
558 border-radius: 15px;} 587 background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC);
559 .zn-Box{background-size: contain;position: relative;overflow: hidden; 588 border-radius: 15px;
560 .bbbg{position: absolute;width: 100%;height: 100%;object-fit: cover;} 589 }
561 .bgbg{height: 100%; 590
562 padding: 5%;display: flex; 591 .zn-Box {
592 background-size: contain;
593 position: relative;
594 overflow: hidden;
595
596 .bbbg {
597 position: absolute;
598 width: 100%;
599 height: 100%;
600 object-fit: cover;
601 }
602
603 .bgbg {
604 height: 100%;
605 padding: 5%;
606 display: flex;
563 flex-direction: column; 607 flex-direction: column;
564 justify-content: center; 608 justify-content: center;
565 img{margin: 5% 0} 609
610 img {
611 margin: 5% 0
612 }
566 } 613 }
567 .itemBox{ 614
615 .itemBox {
568 padding: 20px 40px; 616 padding: 20px 40px;
569 p{margin: 0;height: 40px;line-height: 20px;display: flex;align-items: center;} 617
618 p {
619 margin: 0;
620 height: 40px;
621 line-height: 20px;
622 display: flex;
623 align-items: center;
570 } 624 }
625 }
626
571 border-radius: 15px; 627 border-radius: 15px;
572 .zn-btn{background: #FFFFFF;text-transform: uppercase; 628
573 font-size: 16px; width: fit-content; margin: 5px 5px 5px 0; 629 .zn-btn {
630 background: #FFFFFF;
631 text-transform: uppercase;
632 font-size: 16px;
633 width: fit-content;
634 margin: 5px 5px 5px 0;
574 color: #453DEA; 635 color: #453DEA;
575 border-radius: 23px;padding: 10px 20px;display: inline-flex;align-items: center;} 636 border-radius: 23px;
576 .item{box-shadow: 0px 0px 21px 0px rgba(41,23,101,0.14);margin: 40px 0 0; 637 padding: 10px 20px;
577 display: flex;align-items: center;text-align: center; 638 display: inline-flex;
578 font-size: 18px; flex-direction: column;padding: 35px 10px 20px; 639 align-items: center;
579 background:url("@/assets/dance/znbb.png") no-repeat left #FFFFFF; 640 }
641
642 .item {
643 box-shadow: 0px 0px 21px 0px rgba(41, 23, 101, 0.14);
644 margin: 40px 0 0;
645 display: flex;
646 align-items: center;
647 text-align: center;
648 font-size: 18px;
649 flex-direction: column;
650 padding: 35px 10px 20px;
651 background: url("@/assets/dance/znbb.png") no-repeat left #FFFFFF;
580 background-size: cover; 652 background-size: cover;
581 position: relative; 653 position: relative;
582 border-radius: 15px; 654 border-radius: 15px;
583 img{position: absolute;top: -30px} 655
656 img {
657 position: absolute;
658 top: -30px
659 }
584 } 660 }
585 } 661 }
586 662
...@@ -593,13 +669,24 @@ const handlePickup=()=>{ ...@@ -593,13 +669,24 @@ const handlePickup=()=>{
593 clear: both; 669 clear: both;
594 overflow: hidden; 670 overflow: hidden;
595 } 671 }
596 .banner-pp{ position: absolute; bottom: 40%;right: 5%;width: 200px;} 672
673 .banner-pp {
674 position: absolute;
675 bottom: 40%;
676 right: 5%;
677 width: 200px;
678 }
597 679
598 .bannerItem { 680 .bannerItem {
599 height: 450px; 681 height: 450px;
600 background: #000;position: relative; 682 background: #000;
601 .banner-count{position: absolute;padding: 20px 40px; 683 position: relative;
602 font-size: 20px;align-items: center; 684
685 .banner-count {
686 position: absolute;
687 padding: 20px 40px;
688 font-size: 20px;
689 align-items: center;
603 overflow: hidden; 690 overflow: hidden;
604 background: url("@/assets/dance/time_bg.png") no-repeat center; 691 background: url("@/assets/dance/time_bg.png") no-repeat center;
605 background-size: 100% 100%; 692 background-size: 100% 100%;
...@@ -609,22 +696,49 @@ const handlePickup=()=>{ ...@@ -609,22 +696,49 @@ const handlePickup=()=>{
609 //border-image-width:4px; 696 //border-image-width:4px;
610 //border-image-outset:4px; 697 //border-image-outset:4px;
611 //background: rgba(0,0,0,0.3); 698 //background: rgba(0,0,0,0.3);
612 bottom: 40%;display: flex;flex-wrap: nowrap; 699 bottom: 40%;
700 display: flex;
701 flex-wrap: nowrap;
613 right: 5%; 702 right: 5%;
614 color: #fff; 703 color: #fff;
615 .van-count-down{display: flex;color: #fff;margin: 0 0 0 20px; 704
705 .van-count-down {
706 display: flex;
707 color: #fff;
708 margin: 0 0 0 20px;
616 width: 360px; 709 width: 360px;
617 font-size: 41px;}
618 .block{ color: #fff;text-align: center;width: 3em;
619 font-size: 41px; 710 font-size: 41px;
620 font-family: DIN Alternate;}
621 .colon{ color: #fff;display: block;margin: 20px 0 0;
622 font-size: 20px;}
623 } 711 }
624 .bb{width: 580px;justify-content: center;height: 100px;font-size: 30px;} 712
625 .banner-count.bb:hover{box-shadow: 0 0 20px #453DEA;border-radius: 100px; 713 .block {
714 color: #fff;
715 text-align: center;
716 width: 3em;
717 font-size: 41px;
718 font-family: DIN Alternate;
719 }
720
721 .colon {
722 color: #fff;
723 display: block;
724 margin: 20px 0 0;
725 font-size: 20px;
726 }
727 }
728
729 .bb {
730 width: 580px;
731 justify-content: center;
732 height: 100px;
733 font-size: 30px;
734 }
735
736 .banner-count.bb:hover {
737 box-shadow: 0 0 20px #453DEA;
738 border-radius: 100px;
626 background: linear-gradient(-90deg, #8623FC, #453DEA) 739 background: linear-gradient(-90deg, #8623FC, #453DEA)
627 } 740 }
741
628 .box { 742 .box {
629 position: absolute; 743 position: absolute;
630 height: 100%; 744 height: 100%;
...@@ -653,7 +767,8 @@ const handlePickup=()=>{ ...@@ -653,7 +767,8 @@ const handlePickup=()=>{
653 } 767 }
654 768
655 .banner { 769 .banner {
656 position: relative;margin:0 0 30px; 770 position: relative;
771 margin: 0 0 30px;
657 772
658 :deep(.el-carousel__arrow) { 773 :deep(.el-carousel__arrow) {
659 border-radius: 0; 774 border-radius: 0;
...@@ -681,41 +796,121 @@ const handlePickup=()=>{ ...@@ -681,41 +796,121 @@ const handlePickup=()=>{
681 background-size: contain 796 background-size: contain
682 } 797 }
683 } 798 }
684 .el-calendar{--el-calendar-border:none;--el-calendar-cell-width:40px;text-align:center; 799
685 --el-text-color-regular:#8E8D94; 800 .el-calendar {
686 :deep(.el-calendar__header){justify-content: center;padding: 0 0 10px} 801 --el-calendar-border: none;
687 :deep(.el-calendar__body){border: 1px solid #F0F0F0;padding: 0} 802 --el-calendar-cell-width: 40px;
688 :deep(.el-calendar-table .el-calendar-day){padding: 1px;} 803 text-align: center;
689 :deep(.el-calendar-table td.is-selected){background: transparent;} 804 --el-text-color-regular: #8E8D94;
690 :deep(.el-calendar__button-group){display: none;} 805
691 :deep(.el-calendar-table thead th){padding: 5px 0 0} 806 :deep(.el-calendar__header) {
692 .primaryDate{color: #fff; 807 justify-content: center;
693 background: linear-gradient(90deg, #8623FC, #453DEA);} 808 padding: 0 0 10px
694 .date{ margin:auto;border-radius: 50%;width: 30px;height: 30px;line-height: 30px; 809 }
810
811 :deep(.el-calendar__body) {
812 border: 1px solid #F0F0F0;
813 padding: 0
814 }
815
816 :deep(.el-calendar-table .el-calendar-day) {
817 padding: 1px;
818 }
819
820 :deep(.el-calendar-table td.is-selected) {
821 background: transparent;
822 }
823
824 :deep(.el-calendar__button-group) {
825 display: none;
826 }
827
828 :deep(.el-calendar-table thead th) {
829 padding: 5px 0 0
830 }
831
832 .primaryDate {
833 color: #fff;
834 background: linear-gradient(90deg, #8623FC, #453DEA);
835 }
836
837 .date {
838 margin: auto;
839 border-radius: 50%;
840 width: 30px;
841 height: 30px;
842 line-height: 30px;
695 font-weight: bold; 843 font-weight: bold;
696 } 844 }
697 } 845 }
698 846
699 .calendarList{border: 1px solid #F0F0F0;padding:12px 20px;overflow: auto;height: 233px; 847 .calendarList {
700 ul{ 848 border: 1px solid #F0F0F0;
701 li{background: #F6F9FE;margin:7px 0 7px 0;position: relative;padding: 13px; 849 padding: 12px 20px;
850 overflow: auto;
851 height: 233px;
852
853 ul {
854 li {
855 background: #F6F9FE;
856 margin: 7px 0 7px 0;
857 position: relative;
858 padding: 13px;
702 border-radius: 10px; 859 border-radius: 10px;
703 font-weight: 500; 860 font-weight: 500;
704 font-size: 15px; 861 font-size: 15px;
705 label{color: #453DEA;margin-right: 15px; 862
706 &::before{content: '';background:#fff;left: -17px;top: 0px;bottom: 0;margin: auto; 863 label {
707 border-radius: 50%;width: 2px;height: 2px;position: absolute;z-index: 1} 864 color: #453DEA;
865 margin-right: 15px;
866
867 &::before {
868 content: '';
869 background: #fff;
870 left: -17px;
871 top: 0px;
872 bottom: 0;
873 margin: auto;
874 border-radius: 50%;
875 width: 2px;
876 height: 2px;
877 position: absolute;
878 z-index: 1
708 } 879 }
709 } 880 }
710 li::before{content: '';background: linear-gradient(0deg, #8623FC, #453DEA);
711 border-radius: 50%;width: 8px;height: 8px;position: absolute;
712 left: -20px;top: 0;bottom: 0;margin: auto;z-index: 1;
713 } 881 }
714 li::after{content: ''; left: -16px;width: 1px;height: 100%; 882
715 background: #EBEBEB; position: absolute;top: 20px} 883 li::before {
716 li:hover{color: #fff; 884 content: '';
885 background: linear-gradient(0deg, #8623FC, #453DEA);
886 border-radius: 50%;
887 width: 8px;
888 height: 8px;
889 position: absolute;
890 left: -20px;
891 top: 0;
892 bottom: 0;
893 margin: auto;
894 z-index: 1;
895 }
896
897 li::after {
898 content: '';
899 left: -16px;
900 width: 1px;
901 height: 100%;
902 background: #EBEBEB;
903 position: absolute;
904 top: 20px
905 }
906
907 li:hover {
908 color: #fff;
717 background: linear-gradient(-90deg, #8623FC, #453DEA); 909 background: linear-gradient(-90deg, #8623FC, #453DEA);
718 label{color: #fff;} 910
911 label {
912 color: #fff;
913 }
719 } 914 }
720 } 915 }
721 } 916 }
...@@ -741,115 +936,295 @@ const handlePickup=()=>{ ...@@ -741,115 +936,295 @@ const handlePickup=()=>{
741 } 936 }
742 } 937 }
743 938
744 .teacher{height: 410px;background: #fff; 939 .teacher {
745 position: relative;border-radius: 10px;overflow: hidden; 940 height: 410px;
746 .imgbox{background: linear-gradient(0,#C8AAFC,#fff)} 941 background: #fff;
747 img{height: 350px;width: 100%;object-fit: cover;} 942 position: relative;
748 h3{color: #fff;background: url("@/assets/dance/name_bg.png") no-repeat center; 943 border-radius: 10px;
749 background-size:110% 100%;text-align: center;height: 30px;line-height: 30px; 944 overflow: hidden;
750 font-size: 18px;position: absolute;width: 100%;bottom: 30px;} 945
751 p{text-align: center;margin: 25px 0 0; 946 .imgbox {
752 font-size: 14px;} 947 background: linear-gradient(0, #C8AAFC, #fff)
948 }
949
950 img {
951 height: 350px;
952 width: 100%;
953 object-fit: cover;
954 }
955
956 h3 {
957 color: #fff;
958 background: url("@/assets/dance/name_bg.png") no-repeat center;
959 background-size: 110% 100%;
960 text-align: center;
961 height: 30px;
962 line-height: 30px;
963 font-size: 18px;
964 position: absolute;
965 width: 100%;
966 bottom: 30px;
967 }
968
969 p {
970 text-align: center;
971 margin: 25px 0 0;
972 font-size: 14px;
973 }
753 } 974 }
975
754 @media screen and (max-width: 1650px) { 976 @media screen and (max-width: 1650px) {
755 .teacher{height: 320px; 977 .teacher {
756 .imgbox{ 978 height: 320px;
757 img{height: 260px} 979
980 .imgbox {
981 img {
982 height: 260px
983 }
758 } 984 }
759 } 985 }
760 } 986 }
987
761 @media screen and (max-width: 1200px) { 988 @media screen and (max-width: 1200px) {
762 .teacher{height: 450px;margin: 0 0 20px; 989 .teacher {
763 .imgbox{ 990 height: 450px;
764 img{height: 390px} 991 margin: 0 0 20px;
992
993 .imgbox {
994 img {
995 height: 390px
996 }
765 } 997 }
766 } 998 }
767 } 999 }
1000
768 @media screen and (max-width: 900px) { 1001 @media screen and (max-width: 900px) {
769 .teacher{height: 400px;margin: 0 0 20px; 1002 .teacher {
770 .imgbox{ 1003 height: 400px;
771 img{height: 340px} 1004 margin: 0 0 20px;
1005
1006 .imgbox {
1007 img {
1008 height: 340px
1009 }
772 } 1010 }
773 } 1011 }
774 } 1012 }
1013
775 @media screen and (max-width: 800px) { 1014 @media screen and (max-width: 800px) {
776 .teacher{height: 400px;margin: 0 0 20px; 1015 .teacher {
777 .imgbox{ 1016 height: 400px;
778 img{height: 260px} 1017 margin: 0 0 20px;
1018
1019 .imgbox {
1020 img {
1021 height: 260px
1022 }
779 } 1023 }
780 } 1024 }
781 } 1025 }
782 .aboutBox{background: url("@/assets/dance/about_bg.png") no-repeat center;height: 375px; 1026
783 background-size: cover;padding: 40px 60px; position: relative; 1027 .aboutBox {
784 .content{font-size: 18px;line-height: 2.2;height: 240px;overflow: hidden; 1028 background: url("@/assets/dance/about_bg.png") no-repeat center;
785 text-align: left;text-indent: 2em;} 1029 height: 375px;
786 .shadowbox{position: absolute;left: 0;bottom: 90px;height: 100px;width: 100%; 1030 background-size: cover;
787 background: linear-gradient(0deg,rgba(255,255,255,1),rgba(255,255,255,0)); 1031 padding: 40px 60px;
1032 position: relative;
1033
1034 .content {
1035 font-size: 18px;
1036 line-height: 2.2;
1037 height: 240px;
1038 overflow: hidden;
1039 text-align: left;
1040 text-indent: 2em;
1041 }
1042
1043 .shadowbox {
1044 position: absolute;
1045 left: 0;
1046 bottom: 90px;
1047 height: 100px;
1048 width: 100%;
1049 background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
1050 }
1051
1052 .btn-lineG {
788 } 1053 }
789 .btn-lineG{}
790 } 1054 }
791 .mapBox{background: url("@/assets/dance/map.png") no-repeat center;height: 375px; 1055
792 background-size: cover;padding: 1px;position: relative;display: flex; 1056 .mapBox {
793 .content{background: #fff;width: 60%;left: 40px;padding: 30px; 1057 background: url("@/assets/dance/map.png") no-repeat center;
794 position: absolute;height: 90%;top: 0;bottom: 0;margin: auto; 1058 height: 375px;
1059 background-size: cover;
1060 padding: 1px;
1061 position: relative;
1062 display: flex;
1063
1064 .content {
1065 background: #fff;
1066 width: 60%;
1067 left: 40px;
1068 padding: 30px;
1069 position: absolute;
1070 height: 90%;
1071 top: 0;
1072 bottom: 0;
1073 margin: auto;
1074 }
1075
1076 div {
1077 padding-left: 60px;
795 } 1078 }
796 div{padding-left: 60px;} 1079
797 .phone{background: url("@/assets/dance/map01.png") no-repeat left;background-size: 30px;} 1080 .phone {
798 .address{background: url("@/assets/dance/map02.png") no-repeat left;background-size: 30px; 1081 background: url("@/assets/dance/map01.png") no-repeat left;
799 margin:50px 0; 1082 background-size: 30px;
1083 }
1084
1085 .address {
1086 background: url("@/assets/dance/map02.png") no-repeat left;
1087 background-size: 30px;
1088 margin: 50px 0;
1089 }
1090
1091 .email {
1092 background: url("@/assets/dance/map03.png") no-repeat left;
1093 background-size: 30px;
800 } 1094 }
801 .email{background: url("@/assets/dance/map03.png") no-repeat left;background-size: 30px;} 1095
802 h4{margin: 0; 1096 h4 {
1097 margin: 0;
803 font-size: 16px; 1098 font-size: 16px;
804 color: #AAAAAA;} 1099 color: #AAAAAA;
805 p{margin: 13px 0 0;} 1100 }
1101
1102 p {
1103 margin: 13px 0 0;
1104 }
806 } 1105 }
807 .logobox{background: #fff;height: 180px;border-radius: 10px;margin: 0 0 30px; 1106
808 img{width: 100%;height: 100%;object-fit: contain;} 1107 .logobox {
1108 background: #fff;
1109 height: 180px;
1110 border-radius: 10px;
1111 margin: 0 0 30px;
1112
1113 img {
1114 width: 100%;
1115 height: 100%;
1116 object-fit: contain;
1117 }
809 } 1118 }
810 .swiperPic{background: #F3F1FE;position: relative; height: 100%; 1119
1120 .swiperPic {
1121 background: #F3F1FE;
1122 position: relative;
1123 height: 100%;
811 padding: 20px 45px; 1124 padding: 20px 45px;
812 .picprev{position: absolute; left: 5px;top: 0;bottom:0;margin: auto;height: 33px; 1125
1126 .picprev {
1127 position: absolute;
1128 left: 5px;
1129 top: 0;
1130 bottom: 0;
1131 margin: auto;
1132 height: 33px;
813 cursor: pointer; 1133 cursor: pointer;
814 &:hover{filter:brightness(2)} 1134
1135 &:hover {
1136 filter: brightness(2)
815 } 1137 }
816 .picnext{position: absolute;right: 5px;top: 0;bottom:0;margin: auto;height: 33px; 1138 }
1139
1140 .picnext {
1141 position: absolute;
1142 right: 5px;
1143 top: 0;
1144 bottom: 0;
1145 margin: auto;
1146 height: 33px;
817 cursor: pointer; 1147 cursor: pointer;
818 &:hover{filter:brightness(2)}} 1148
1149 &:hover {
1150 filter: brightness(2)
1151 }
1152 }
819 } 1153 }
820 1154
821 @media (max-width: 800px) { 1155 @media (max-width: 800px) {
822 .box{width: 94%} 1156 .box {
823 .calendarList{padding: 0; 1157 width: 94%
824 ul{ 1158 }
825 li{margin: 10px} 1159 .calendarList {
1160 padding: 0;
1161
1162 ul {
1163 li {
1164 margin: 10px
1165 }
826 } 1166 }
827 } 1167 }
828 .aboutBox{padding: 20px 30px;} 1168 .aboutBox {
829 .indexTitle{margin: 30px 0 20px} 1169 padding: 20px 30px;
830 .teacher{height: 320px;margin: 0 0 20px; 1170 }
831 img{height: 260px} 1171 .indexTitle {
1172 margin: 30px 0 20px
1173 }
1174 .teacher {
1175 height: 320px;
1176 margin: 0 0 20px;
1177
1178 img {
1179 height: 260px
1180 }
1181 }
1182 .activeItem {
1183 margin: 0 0 20px;
1184 }
1185 .mapBox {
1186 div {
1187 padding-left: 40px;
1188 }
1189
1190 .content {
1191 width: 80%;
1192 left: 10%;
1193 padding: 10px 20px 0 20px;
1194 }
1195
1196 .address {
1197 margin: 30px 0;
1198 }
1199
1200 p {
1201 text-align: left;
1202 word-break: break-all;
832 } 1203 }
833 .activeItem{margin: 0 0 20px;}
834 .mapBox{
835 div{padding-left: 40px;}
836 .content{ width: 80%;left: 10%;padding:10px 20px 0 20px;}
837 .address{margin: 30px 0;}
838 p{text-align: left;word-break: break-all;}
839 } 1204 }
840 .fixed_gg { 1205 .fixed_gg {
841 display: none; 1206 display: none;
842 } 1207 }
843 .bannerItem .banner-count{flex-direction: column; 1208 .bannerItem .banner-count {
844 transform: scale(0.5); width: auto; 1209 flex-direction: column;
1210 transform: scale(0.5);
1211 width: auto;
845 left: 0; 1212 left: 0;
846 right: 0; 1213 right: 0;
847 .van-count-down{margin: 30px 0 0;} 1214
1215 .van-count-down {
1216 margin: 30px 0 0;
1217 }
1218 }
1219 .bgbg {
1220 text-align: center;
1221
1222 h1 {
1223 text-align: center
848 } 1224 }
849 .bgbg{ text-align: center;
850 h1{text-align: center}
851 } 1225 }
852 } 1226 }
1227
853 :deep(.btn-q) { 1228 :deep(.btn-q) {
854 //background: #FFFFFF; 1229 //background: #FFFFFF;
855 //font-size: 18px; 1230 //font-size: 18px;
...@@ -872,16 +1247,16 @@ const handlePickup=()=>{ ...@@ -872,16 +1247,16 @@ const handlePickup=()=>{
872 box-sizing: inherit; 1247 box-sizing: inherit;
873 } 1248 }
874 1249
875 .btn-q:hover{ 1250 .btn-q:hover {
876 box-shadow: 0 0 20px #453DEA; 1251 box-shadow: 0 0 20px #453DEA;
877 border-radius: 100px; 1252 border-radius: 100px;
878 background: linear-gradient(-90deg, #8623FC, #453DEA) !important; 1253 background: linear-gradient(-90deg, #8623FC, #453DEA) !important;
879 } 1254 }
880 1255
881 .ding{ 1256 .ding {
882 position: fixed; 1257 position: fixed;
883 right:0px; 1258 right: 0px;
884 z-index:99; 1259 z-index: 99;
885 top: 40%; 1260 top: 40%;
886 background: linear-gradient(-90deg, #8623FC, #453DEA) !important; 1261 background: linear-gradient(-90deg, #8623FC, #453DEA) !important;
887 box-shadow: none; 1262 box-shadow: none;
...@@ -890,16 +1265,34 @@ const handlePickup=()=>{ ...@@ -890,16 +1265,34 @@ const handlePickup=()=>{
890 //height: 100px; 1265 //height: 100px;
891 padding: 20px; 1266 padding: 20px;
892 } 1267 }
893 .mb30{margin-bottom: 30px;} 1268
894 .livetimecount{position: absolute;top: 0;z-index: 2;background: #F04035; 1269 .mb30 {
1270 margin-bottom: 30px;
1271 }
1272
1273 .livetimecount {
1274 position: absolute;
1275 top: 0;
1276 z-index: 2;
1277 background: #F04035;
895 padding: 2px 4px; 1278 padding: 2px 4px;
896 &::after{content: ''; width: 0; 1279
897 height: 0;position: absolute;right: -15px;top: 0; 1280 &::after {
1281 content: '';
1282 width: 0;
1283 height: 0;
1284 position: absolute;
1285 right: -15px;
1286 top: 0;
898 border-top: 24px solid #F04035; 1287 border-top: 24px solid #F04035;
899 border-right: 15px solid transparent;} 1288 border-right: 15px solid transparent;
900 .van-count-down { display: flex; 1289 }
1290
1291 .van-count-down {
1292 display: flex;
901 color: #fff; 1293 color: #fff;
902 font-size: 14px; 1294 font-size: 14px;
1295
903 .block { 1296 .block {
904 color: #fff; 1297 color: #fff;
905 text-align: center; 1298 text-align: center;
...@@ -908,13 +1301,23 @@ const handlePickup=()=>{ ...@@ -908,13 +1301,23 @@ const handlePickup=()=>{
908 } 1301 }
909 } 1302 }
910 } 1303 }
1304
911 @media (max-width: 500px) { 1305 @media (max-width: 500px) {
912 .forPc{display: none!important;} 1306 .forPc {
913 .zn-Box .bgbg{padding: 10px 0 0; 1307 display: none !important;
914 .mb30{margin: 0} 1308 }
915 .zn-btn{margin-top: 10px} 1309 .zn-Box .bgbg {
1310 padding: 10px 0 0;
1311
1312 .mb30 {
1313 margin: 0
1314 }
1315
1316 .zn-btn {
1317 margin-top: 10px
1318 }
916 } 1319 }
917 .logobox{ 1320 .logobox {
918 height: 60px; 1321 height: 60px;
919 } 1322 }
920 } 1323 }
......
...@@ -5,28 +5,31 @@ ...@@ -5,28 +5,31 @@
5 <div class="mt20" /> 5 <div class="mt20" />
6 <el-card> 6 <el-card>
7 <el-row :gutter="20"> 7 <el-row :gutter="20">
8 <el-col :sm="24" :lg="12"> 8 <el-col :lg="12" :sm="24">
9 <!--赛事日历--> 9 <!--赛事日历-->
10 10
11 <el-calendar v-model="currentDate"> 11 <el-calendar v-model="currentDate">
12 <template #date-cell="data"> 12 <template #date-cell="data">
13 13
14 <div class="date" :class="data.data.day==query.currentDate?'primaryDate':''" @click="selectDate(data.data.day)"> 14 <div
15 {{ data.data.day.slice(8,10) }} 15 :class="data.data.day==query.currentDate?'primaryDate':''" class="date"
16 @click="selectDate(data.data.day)"
17 >
18 {{ data.data.day.slice(8, 10) }}
16 </div> 19 </div>
17 20
18 </template> 21 </template>
19 </el-calendar> 22 </el-calendar>
20 23
21 </el-col> 24 </el-col>
22 <el-col :sm="24" :lg="12"> 25 <el-col :lg="12" :sm="24">
23 <div class="calendarList"> 26 <div class="calendarList">
24 <ul v-loading="loading"> 27 <ul v-loading="loading">
25 <li v-for="n in schList" @click="goMatch(n)"> 28 <li v-for="n in schList" @click="goMatch(n)">
26 <label>{{ n.timeStr }}</label> 29 <label>{{ n.timeStr }}</label>
27 <div class="esp mt5">{{ n.name }}</div> 30 <div class="esp mt5">{{ n.name }}</div>
28 </li> 31 </li>
29 <el-empty v-if="schList.length== 0" :image="`/img/order_no.png`" :image-size="200"/> 32 <el-empty v-if="schList.length== 0" :image="`/img/order_no.png`" :image-size="200" />
30 </ul> 33 </ul>
31 </div> 34 </div>
32 35
...@@ -34,8 +37,8 @@ ...@@ -34,8 +37,8 @@
34 </el-row> 37 </el-row>
35 </el-card> 38 </el-card>
36 <el-card class="mt20 mb20"> 39 <el-card class="mt20 mb20">
37 <el-table stripe :data="rank"> 40 <el-table :data="rank" stripe>
38 <el-table-column label="名次" align="center" type="index"> 41 <el-table-column align="center" label="名次" type="index">
39 <template #default="scope"> 42 <template #default="scope">
40 <span v-if="scope.row.mingCi == 1" style="color:#F8A617">{{ scope.row.mingCi }}</span> 43 <span v-if="scope.row.mingCi == 1" style="color:#F8A617">{{ scope.row.mingCi }}</span>
41 <span v-else-if="scope.row.mingCi == 2" style="color:#778B92">{{ scope.row.mingCi }}</span> 44 <span v-else-if="scope.row.mingCi == 2" style="color:#778B92">{{ scope.row.mingCi }}</span>
...@@ -47,12 +50,12 @@ ...@@ -47,12 +50,12 @@
47 <el-table-column label="国家" prop="name"> 50 <el-table-column label="国家" prop="name">
48 <template #default="scope"> 51 <template #default="scope">
49 <div> 52 <div>
50 <span :class="`flag-icon flag-icon-${scope.row.code}`"></span> 53 <span :class="`flag-icon flag-icon-${scope.row.code}`" />
51 {{ scope.row.countryName }} 54 {{ scope.row.countryName }}
52 </div> 55 </div>
53 </template> 56 </template>
54 </el-table-column> 57 </el-table-column>
55 <el-table-column label="组合" align="center"> 58 <el-table-column align="center" label="组合">
56 <template #default="scope"> 59 <template #default="scope">
57 <div class="text-primary esp">{{ scope.row.zuHe }}</div> 60 <div class="text-primary esp">{{ scope.row.zuHe }}</div>
58 </template> 61 </template>
...@@ -84,29 +87,29 @@ ...@@ -84,29 +87,29 @@
84 </el-table> 87 </el-table>
85 88
86 </el-card> 89 </el-card>
87 <el-card class="mt20 mb20" v-for="(n,index) in cjList" hidden> 90 <el-card v-for="(n,index) in cjList" class="mt20 mb20" hidden>
88 <div class="leftboderTT">{{ language==0?n.title:n.en_title }}</div> 91 <div class="leftboderTT">{{ language == 0 ? n.title : n.en_title }}</div>
89 <div v-for="(m,jndex) in n.list"> 92 <div v-for="(m,jndex) in n.list">
90 <h3 class="text-center">{{ m.title }}</h3> 93 <h3 class="text-center">{{ m.title }}</h3>
91 <div class="tablebody"> 94 <div class="tablebody">
92 <table class="table table-striped"> 95 <table class="table table-striped">
93 <thead> 96 <thead>
94 <tr class="bg-lineg"> 97 <tr class="bg-lineg">
95 <td class="text-center" style="width: 120px;">{{ language==0?'名次':'RANK' }}</td> 98 <td class="text-center" style="width: 120px;">{{ language == 0 ? '名次' : 'RANK' }}</td>
96 <td class="text-center">{{ language==0?'组合':'COUPLE' }}</td> 99 <td class="text-center">{{ language == 0 ? '组合' : 'COUPLE' }}</td>
97 <td class="text-center w15">{{ language==0?'国家':'COUNTRY' }}</td> 100 <td class="text-center w15">{{ language == 0 ? '国家' : 'COUNTRY' }}</td>
98 <td class="text-center w15">START #</td> 101 <td class="text-center w15">START #</td>
99 <td class="text-center w15" v-if="index>0">BASE</td> 102 <td v-if="index>0" class="text-center w15">BASE</td>
100 <td class="text-center w15" v-if="index>0">POINTS</td> 103 <td v-if="index>0" class="text-center w15">POINTS</td>
101 </tr> 104 </tr>
102 </thead> 105 </thead>
103 <tbody> 106 <tbody>
104 <tr v-for="(l,kndex) in m.rows"> 107 <tr v-for="(l,kndex) in m.rows">
105 <td class="text-center">{{ l.RANK }}</td> 108 <td class="text-center">{{ l.RANK }}</td>
106 <td class="text-center">{{ l.COUPLE}}</td> 109 <td class="text-center">{{ l.COUPLE }}</td>
107 <td class="text-center">{{ l.COUNTRY }}</td> 110 <td class="text-center">{{ l.COUNTRY }}</td>
108 <td class="text-primary text-center">{{ l.START }}</td> 111 <td class="text-primary text-center">{{ l.START }}</td>
109 <td class="text-center" v-if="index>0">{{l.BASE}}</td> 112 <td v-if="index>0" class="text-center">{{ l.BASE }}</td>
110 <td v-if="index>0" class="text-primary text-center">{{ l.POINTS }}</td> 113 <td v-if="index>0" class="text-primary text-center">{{ l.POINTS }}</td>
111 </tr> 114 </tr>
112 </tbody> 115 </tbody>
...@@ -123,14 +126,16 @@ ...@@ -123,14 +126,16 @@
123 <script setup> 126 <script setup>
124 import { onMounted, ref, watch } from 'vue' 127 import { onMounted, ref, watch } from 'vue'
125 import { getPlanYears, getYearZtxPlanList } from '@/apiPc/train' 128 import { getPlanYears, getYearZtxPlanList } from '@/apiPc/train'
126 import {cjList} from '@/assets/js/data' 129 import { cjList } from '@/assets/js/data'
127 import { ArrowRight } from '@element-plus/icons-vue' 130 import { ArrowRight } from '@element-plus/icons-vue'
128 import { dayjs } from 'element-plus' 131 import { dayjs } from 'element-plus'
132
129 const router = useRouter() 133 const router = useRouter()
130 import {useStorage} from "@vueuse/core/index"; 134 import { useStorage } from '@vueuse/core/index'
131 import {getIndexScheduleList} from "@/apiPc/common"; 135 import { getIndexScheduleList } from '@/apiPc/common'
132 import {getRank} from '@/apiPc/webSite' 136 import { getRank } from '@/apiPc/webSite'
133 import {useRouter} from "vue-router"; 137 import { useRouter } from 'vue-router'
138
134 const language = useStorage('language', 0) 139 const language = useStorage('language', 0)
135 const years = ref([]) 140 const years = ref([])
136 const currYear = ref(null) 141 const currYear = ref(null)
...@@ -139,33 +144,37 @@ const planList = ref([]) ...@@ -139,33 +144,37 @@ const planList = ref([])
139 const rank = ref([]) 144 const rank = ref([])
140 const schList = ref([]) 145 const schList = ref([])
141 const loading = ref(false) 146 const loading = ref(false)
142 const currentDate = ref(dayjs('2024-07-17').toDate()) 147 const currentDate = ref(dayjs('2025-07-17').toDate())
143 const query = ref({ 148 const query = ref({
144 // currentDate:dayjs().format('YYYY-MM-DD') 149 // currentDate:dayjs().format('YYYY-MM-DD')
145 currentDate: '2024-07-17' 150 currentDate: '2025-07-17'
146 }) 151 })
147 152
148 getScheduleList() 153 getScheduleList()
149 getRankList() 154 getRankList()
155
150 function getRankList() { 156 function getRankList() {
151 getRank().then(res=>{ 157 getRank().then(res => {
152 rank.value = res.data 158 rank.value = res.data
153 }) 159 })
154 } 160 }
161
155 function getScheduleList() { 162 function getScheduleList() {
156 loading.value = true 163 loading.value = true
157 query.value.currentDate = dayjs(query.value.currentDate).format('YYYY-MM-DD') 164 query.value.currentDate = dayjs(query.value.currentDate).format('YYYY-MM-DD')
158 getIndexScheduleList(query.value).then(res=>{ 165 getIndexScheduleList(query.value).then(res => {
159 loading.value = false 166 loading.value = false
160 schList.value = res.data 167 schList.value = res.data
161 }) 168 })
162 } 169 }
170
163 function selectDate(date) { 171 function selectDate(date) {
164 console.log(dayjs(date).toDate()) 172 console.log(dayjs(date).toDate())
165 console.log(query.value.currentDate) 173 console.log(query.value.currentDate)
166 query.value.currentDate = dayjs(date).toDate() 174 query.value.currentDate = dayjs(date).toDate()
167 getScheduleList() 175 getScheduleList()
168 } 176 }
177
169 function goMatch(n) { 178 function goMatch(n) {
170 router.push({ 179 router.push({
171 name: 'matchDetail', 180 name: 'matchDetail',
...@@ -179,59 +188,157 @@ function goMatch(n) { ...@@ -179,59 +188,157 @@ function goMatch(n) {
179 } 188 }
180 </script> 189 </script>
181 190
182 <style scoped lang="scss"> 191 <style lang="scss" scoped>
183 .leftboderTT{margin: 0 0 20px;color: var(--el-color-primary); 192 .leftboderTT {
184 font-size: 20px;} 193 margin: 0 0 20px;
185 h3{background: #F5F0FF;margin: 0;padding: 10px 0;
186 color: var(--el-color-primary); 194 color: var(--el-color-primary);
187 font-size: 18px;} 195 font-size: 20px;
188 .table { border-spacing: 0; 196 }
197
198 h3 {
199 background: #F5F0FF;
200 margin: 0;
201 padding: 10px 0;
202 color: var(--el-color-primary);
203 font-size: 18px;
204 }
205
206 .table {
207 border-spacing: 0;
189 border-collapse: collapse; 208 border-collapse: collapse;
190 width: 100%; 209 width: 100%;
191 max-width: 100%; 210 max-width: 100%;
192 margin-bottom: 20px; 211 margin-bottom: 20px;
193 td,th{ padding: 8px; font-size: 14px;} 212
213 td, th {
214 padding: 8px;
215 font-size: 14px;
216 }
194 } 217 }
195 :deep(.table-striped > tbody > tr:nth-of-type(odd)){ 218
219 :deep(.table-striped > tbody > tr:nth-of-type(odd)) {
196 background: #F6F9FE; 220 background: #F6F9FE;
197 } 221 }
198 222
199 .el-calendar{--el-calendar-border:none;--el-calendar-cell-width:51px;text-align:center; 223 .el-calendar {
200 --el-text-color-regular:#8E8D94; 224 --el-calendar-border: none;
201 :deep(.el-calendar__header){justify-content: center;} 225 --el-calendar-cell-width: 51px;
202 :deep(.el-calendar__body){border: 1px solid #F0F0F0;padding: 0} 226 text-align: center;
203 :deep(.el-calendar-table .el-calendar-day){padding: 1px;} 227 --el-text-color-regular: #8E8D94;
204 :deep(.el-calendar-table td.is-selected){background: transparent;} 228
205 :deep(.el-calendar__button-group){display: none;} 229 :deep(.el-calendar__header) {
230 justify-content: center;
231 }
232
233 :deep(.el-calendar__body) {
234 border: 1px solid #F0F0F0;
235 padding: 0
236 }
237
238 :deep(.el-calendar-table .el-calendar-day) {
239 padding: 1px;
240 }
241
242 :deep(.el-calendar-table td.is-selected) {
243 background: transparent;
244 }
245
246 :deep(.el-calendar__button-group) {
247 display: none;
248 }
249 }
250
251 .primaryDate {
252 color: #fff;
253 background: linear-gradient(90deg, #8623FC, #453DEA);
206 } 254 }
207 .primaryDate{color: #fff; 255
208 background: linear-gradient(90deg, #8623FC, #453DEA);} 256 .date {
209 .date{ margin:5px auto;border-radius: 50%;width: 34px;height: 34px;line-height: 34px; 257 margin: 5px auto;
258 border-radius: 50%;
259 width: 34px;
260 height: 34px;
261 line-height: 34px;
210 font-weight: bold; 262 font-weight: bold;
211 } 263 }
212 .calendarList{border: 1px solid #F0F0F0;padding:12px 20px 0;overflow: hidden; 264
265 .calendarList {
266 border: 1px solid #F0F0F0;
267 padding: 12px 20px 0;
268 overflow: hidden;
213 height: 100%; 269 height: 100%;
214 ul{ overflow: auto;height: 330px;margin: 0; 270
215 li{background: #F6F9FE;margin:7px 0 7px 20px;position: relative;padding: 13px; 271 ul {
272 overflow: auto;
273 height: 330px;
274 margin: 0;
275
276 li {
277 background: #F6F9FE;
278 margin: 7px 0 7px 20px;
279 position: relative;
280 padding: 13px;
216 border-radius: 10px; 281 border-radius: 10px;
217 font-weight: 500; 282 font-weight: 500;
218 font-size: 15px;cursor: pointer; 283 font-size: 15px;
219 label{color: #453DEA;margin-right: 15px; 284 cursor: pointer;
220 &::before{content: '';background:#fff;left: -17px;top: 0px;bottom: 0;margin: auto; 285
221 border-radius: 50%;width: 2px;height: 2px;position: absolute;z-index: 1} 286 label {
287 color: #453DEA;
288 margin-right: 15px;
289
290 &::before {
291 content: '';
292 background: #fff;
293 left: -17px;
294 top: 0px;
295 bottom: 0;
296 margin: auto;
297 border-radius: 50%;
298 width: 2px;
299 height: 2px;
300 position: absolute;
301 z-index: 1
222 } 302 }
223 } 303 }
224 li::before{content: '';background: linear-gradient(0deg, #8623FC, #453DEA);
225 border-radius: 50%;width: 8px;height: 8px;position: absolute;
226 left: -20px;top: 0;bottom: 0;margin: auto;z-index: 1;
227 } 304 }
228 li::after{content: ''; left: -16px;width: 1px;height: 100%; 305
229 background: #EBEBEB; position: absolute;top: 20px} 306 li::before {
230 li:hover{color: #fff; 307 content: '';
308 background: linear-gradient(0deg, #8623FC, #453DEA);
309 border-radius: 50%;
310 width: 8px;
311 height: 8px;
312 position: absolute;
313 left: -20px;
314 top: 0;
315 bottom: 0;
316 margin: auto;
317 z-index: 1;
318 }
319
320 li::after {
321 content: '';
322 left: -16px;
323 width: 1px;
324 height: 100%;
325 background: #EBEBEB;
326 position: absolute;
327 top: 20px
328 }
329
330 li:hover {
331 color: #fff;
231 background: linear-gradient(-90deg, #8623FC, #453DEA); 332 background: linear-gradient(-90deg, #8623FC, #453DEA);
232 label{color: #fff;} 333
334 label {
335 color: #fff;
336 }
233 } 337 }
234 } 338 }
235 } 339 }
236 .w15{width: 15%;} 340
341 .w15 {
342 width: 15%;
343 }
237 </style> 344 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!