fcfc577a by zhangmeng

Merge remote-tracking branch 'origin/世锦赛' into 世锦赛

# Conflicts:
#	src/viewsPc/components/homeQuick.vue
#	src/viewsPc/index.vue
#	src/viewsPc/index_en.vue
2 parents f23375cd 11b19150
...@@ -15,7 +15,8 @@ ...@@ -15,7 +15,8 @@
15 "@element-plus/icons-vue": "2.0.10", 15 "@element-plus/icons-vue": "2.0.10",
16 "@videojs-player/vue": "^1.0.0", 16 "@videojs-player/vue": "^1.0.0",
17 "@vueup/vue-quill": "1.1.1", 17 "@vueup/vue-quill": "1.1.1",
18 "@vueuse/core": "^10.1.2", 18 "@vueuse/core": "^13.4.0",
19 "@vueuse/router": "^13.4.0",
19 "axios": "0.27.2", 20 "axios": "0.27.2",
20 "crypto-js": "^4.1.1", 21 "crypto-js": "^4.1.1",
21 "echarts": "5.4.0", 22 "echarts": "5.4.0",
......
...@@ -790,6 +790,30 @@ export function getVisaInfo(query) { ...@@ -790,6 +790,30 @@ export function getVisaInfo(query) {
790 }) 790 })
791 } 791 }
792 792
793 export function downInvite(params) {
794 return request({
795 url: '/league/visa/downInvite',
796 method: 'get',
797 params
798 })
799 }
800
801 export function getUplaodFile(params) {
802 return request({
803 url: '/league/visa/getUplaodFile',
804 method: 'get',
805 params
806 })
807 }
808
809 export function listVisaInfo(query) {
810 return request({
811 url: '/league/visaInfo/list',
812 method: 'get',
813 params: query
814 })
815 }
816
793 // 酒店预约查询 817 // 酒店预约查询
794 export function hotelList(params) { 818 export function hotelList(params) {
795 return request({ 819 return request({
......
1 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24px" height="23px"><path fill-rule="evenodd" fill="rgb(146, 154, 160)" d="M1.242,17.158 C2.102,17.158 2.498,17.424 2.998,17.759 C3.558,18.134 4.257,18.601 5.551,18.601 C6.846,18.601 7.543,18.134 8.103,17.759 C8.603,17.424 8.998,17.158 9.857,17.158 C10.718,17.158 11.113,17.424 11.615,17.759 C12.175,18.134 12.873,18.601 14.168,18.601 C15.464,18.601 16.162,18.134 16.722,17.759 C17.224,17.424 17.620,17.158 18.481,17.158 C19.342,17.158 19.738,17.424 20.240,17.759 C20.801,18.134 21.498,18.601 22.794,18.601 C23.191,18.601 23.513,18.278 23.513,17.880 C23.513,17.481 23.191,17.158 22.794,17.158 C21.934,17.158 21.537,16.893 21.036,16.558 C20.474,16.183 19.777,15.715 18.481,15.715 C17.185,15.715 16.487,16.183 15.926,16.558 C15.425,16.893 15.028,17.158 14.168,17.158 C13.307,17.158 12.912,16.893 12.411,16.558 C11.850,16.183 11.152,15.715 9.857,15.715 C8.563,15.715 7.866,16.183 7.306,16.558 C6.806,16.893 6.411,17.158 5.551,17.158 C4.692,17.158 4.296,16.893 3.796,16.558 C3.235,16.183 2.537,15.715 1.242,15.715 C0.846,15.715 0.524,16.038 0.524,16.437 C0.524,16.835 0.846,17.158 1.242,17.158 L1.242,17.158 ZM22.794,21.038 C21.934,21.038 21.537,20.773 21.036,20.438 C20.474,20.063 19.777,19.595 18.481,19.595 C17.185,19.595 16.487,20.063 15.926,20.438 C15.425,20.773 15.028,21.038 14.168,21.038 C13.307,21.038 12.912,20.773 12.411,20.438 C11.850,20.063 11.152,19.595 9.857,19.595 C8.563,19.595 7.866,20.063 7.306,20.438 C6.806,20.773 6.411,21.038 5.551,21.038 C4.692,21.038 4.296,20.773 3.796,20.438 C3.235,20.063 2.537,19.595 1.242,19.595 C0.846,19.595 0.524,19.918 0.524,20.317 C0.524,20.715 0.846,21.038 1.242,21.038 C2.102,21.038 2.498,21.304 2.998,21.638 C3.558,22.014 4.257,22.481 5.551,22.481 C6.846,22.481 7.543,22.014 8.103,21.638 C8.603,21.304 8.998,21.038 9.857,21.038 C10.718,21.038 11.113,21.304 11.615,21.638 C12.175,22.014 12.873,22.481 14.168,22.481 C15.464,22.481 16.162,22.014 16.722,21.638 C17.224,21.304 17.620,21.038 18.481,21.038 C19.342,21.038 19.738,21.304 20.240,21.638 C20.801,22.014 21.498,22.481 22.794,22.481 C23.191,22.481 23.513,22.158 23.513,21.760 C23.513,21.361 23.191,21.038 22.794,21.038 L22.794,21.038 ZM3.527,14.664 C3.924,14.664 3.1000,14.399 3.1000,14.000 L3.1000,9.1000 L13.1000,9.1000 L13.1000,14.000 C13.1000,14.399 14.004,14.664 14.401,14.664 C14.797,14.664 15.000,14.399 15.000,14.000 L15.000,5.000 C15.000,3.286 16.508,2.338 18.215,2.338 C19.922,2.338 21.312,3.734 21.312,5.449 C21.312,5.848 21.633,6.171 22.030,6.171 C22.427,6.171 22.748,5.848 22.748,5.449 C22.748,2.939 20.714,0.896 18.215,0.896 C15.717,0.896 13.1000,2.489 13.1000,5.000 L13.1000,9.000 L3.1000,9.000 L3.1000,5.000 C3.1000,3.286 5.635,2.338 7.342,2.338 C9.049,2.338 10.439,3.734 10.439,5.449 C10.439,5.848 10.761,6.171 11.158,6.171 C11.554,6.171 11.876,5.848 11.876,5.449 C11.873,2.936 9.845,0.899 7.342,0.896 C4.839,0.899 3.002,2.487 3.000,5.000 L3.000,14.000 C3.000,14.399 3.130,14.664 3.527,14.664 L3.527,14.664 Z"/></svg>
...\ No newline at end of file ...\ No newline at end of file
1 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="26px" height="17px"><path fill-rule="evenodd" fill="rgb(146, 154, 160)" d="M23.1000,13.1000 L23.1000,15.000 C23.1000,16.263 22.595,17.002 21.297,17.002 C19.999,17.002 18.1000,16.263 18.1000,15.000 L18.1000,10.1000 L6.1000,10.1000 L6.1000,15.000 C6.1000,16.263 6.004,17.002 4.706,17.002 C3.408,17.002 2.356,15.978 2.356,14.715 L2.356,13.859 C1.979,13.989 1.483,14.002 1.000,13.1000 C0.571,13.998 0.006,13.947 0.006,13.000 L0.006,4.997 C0.006,4.050 0.795,3.282 1.768,3.282 C2.005,3.282 2.197,3.329 2.356,3.412 L2.356,3.282 C2.356,2.676 2.604,2.094 3.044,1.666 C3.485,1.237 4.083,0.996 4.706,0.996 C4.706,0.996 5.465,0.787 6.368,1.666 C6.809,2.094 6.1000,2.394 6.1000,3.000 L6.1000,6.1000 L18.1000,6.1000 L18.1000,3.1000 C18.1000,1.780 19.927,0.996 21.297,0.996 C22.472,0.926 23.952,1.658 23.1000,3.000 L23.1000,3.320 C24.075,3.301 24.152,3.286 24.235,3.282 C25.208,3.282 25.997,4.050 25.997,4.997 L25.997,13.000 C25.997,13.947 24.973,13.1000 23.1000,13.1000 ZM1.768,4.426 C1.768,4.426 1.000,4.382 1.000,5.000 L1.000,12.1000 C0.1000,13.571 1.988,13.387 1.1000,12.1000 L1.1000,5.000 C1.1000,4.684 2.093,4.426 1.768,4.426 ZM6.000,10.1000 L6.000,6.1000 L6.000,3.1000 C6.048,1.941 4.1000,2.000 4.1000,2.000 C4.098,1.853 2.905,2.276 3.000,3.1000 L3.000,5.000 L3.000,12.1000 L3.000,13.1000 C3.148,15.694 4.351,15.1000 4.1000,15.1000 C5.649,15.1000 6.000,14.631 6.000,13.1000 L6.000,10.1000 ZM6.1000,8.000 L6.1000,9.1000 L18.1000,9.1000 L18.1000,8.000 L6.1000,8.000 ZM21.297,2.139 C20.810,2.139 19.1000,2.412 19.1000,3.1000 L19.1000,6.1000 L19.1000,10.1000 L19.1000,15.000 C19.1000,15.631 20.648,15.858 21.297,15.858 C21.946,15.858 23.000,15.631 23.000,15.000 L23.000,12.1000 L23.000,5.000 L23.000,3.1000 C23.162,2.860 22.369,1.955 21.297,2.139 ZM25.000,5.000 C25.000,4.848 24.760,4.700 24.650,4.593 C24.540,4.486 24.391,4.426 24.235,4.426 C24.078,4.426 24.020,4.488 23.1000,4.586 L23.1000,5.000 L23.1000,12.1000 C23.1000,13.176 24.138,13.484 25.000,12.1000 L25.000,5.000 Z"/></svg>
...\ No newline at end of file ...\ No newline at end of file

36.2 KB | W: | H:

29.6 KB | W: | H:

src/assets/logo/banner-text.png
src/assets/logo/banner-text.png
src/assets/logo/banner-text.png
src/assets/logo/banner-text.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 <el-col :lg="10" :md="10" :xs="10"> 13 <el-col :lg="10" :md="10" :xs="10">
14 <ul style="text-align: right"> 14 <ul style="text-align: right">
15 <li>客服及报障电话:15606190026</li> 15 <li>客服及报障电话:15606190026</li>
16 <li>客服及报障邮箱: info@wdsfwuxicenter.com</li> 16 <li>客服及报障邮箱: office@2025wtcwuxi.com</li>
17 </ul> 17 </ul>
18 </el-col> 18 </el-col>
19 <el-col :lg="4" :md="4" :xs="4"> 19 <el-col :lg="4" :md="4" :xs="4">
...@@ -32,13 +32,15 @@ ...@@ -32,13 +32,15 @@
32 <el-col :span="14"> 32 <el-col :span="14">
33 <ul> 33 <ul>
34 <li>Postal code:214000</li> 34 <li>Postal code:214000</li>
35 <li>Address:100 meters northeast of the intersection of Hefeng Road and Qingshu, the Taihu Lake New Town, Wuxi, Jiangsu</li> 35 <li>Address:100 meters northeast of the intersection of Hefeng Road and Qingshu, the Taihu Lake New Town,
36 Wuxi, Jiangsu
37 </li>
36 </ul> 38 </ul>
37 </el-col> 39 </el-col>
38 <el-col :span="6"> 40 <el-col :span="6">
39 <ul style="text-align: right"> 41 <ul style="text-align: right">
40 <li>Telephone:086-15606190026</li> 42 <li>Telephone:086-15606190026</li>
41 <li>E-mail:info@wdsfwuxicenter.com</li> 43 <li>E-mail:office@2025wtcwuxi.com</li>
42 </ul> 44 </ul>
43 </el-col> 45 </el-col>
44 <el-col :span="4"> 46 <el-col :span="4">
...@@ -54,120 +56,207 @@ ...@@ -54,120 +56,207 @@
54 </el-row> 56 </el-row>
55 </div> 57 </div>
56 </div> 58 </div>
57 <div class="fixed-right forPc"> 59 <!-- <div class="fixed-right forPc">-->
58 <div class="mlb" v-if="language===0"> 60 <!-- <div class="mlb" v-if="language===0">-->
59 <div @click="goAround" class="mb10 pb5"> 61 <!-- <div @click="goAround" class="mb10 pb5">-->
60 <a>
61 <img class="kf" src="@/assets/logo/btn02.png"/>
62 <div class="text-center mt10">周边活动</div>
63 </a>
64 </div>
65 <div onclick="window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=6c500b60-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=ZHCN','_blank','height=700px,width=700px,top=50,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="客服" >
66 <img class="kf" src="@/assets/logo/btn01.png"/>
67 <div class="text-center mt10">在线客服</div>
68 </div>
69 <!-- <div @click="goHelpZH">-->
70 <!-- <a>--> 62 <!-- <a>-->
71 <!-- <img class="kf" src="@/assets/logo/btn02.png"/>--> 63 <!-- <img class="kf" src="@/assets/logo/btn02.png"/>-->
72 <!-- <div class="text-center mt10">周边活动</div>--> 64 <!-- <div class="text-center mt10">周边活动</div>-->
73 <!-- </a>--> 65 <!-- </a>-->
74 <!-- </div>--> 66 <!-- </div>-->
75 </div> 67 <!-- <div-->
76 <div class="mlb" v-else> 68 <!-- style="display: none" title="客服"-->
77 <div @click="goAround" class="mb10 pb5"> 69 <!-- onclick="window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=6c500b60-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=ZHCN','_blank','height=700px,width=700px,top=50,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')"-->
78 <a> 70 <!-- >-->
79 <img class="kf" src="@/assets/logo/btn02.png"/> 71 <!-- <img class="kf" src="@/assets/logo/btn01.png"/>-->
80 <div class="text-center mt10">ACTIVITIES</div> 72 <!-- <div class="text-center mt10">在线客服</div>-->
81 </a>
82 </div>
83 <div onclick="window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=707daf80-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=EN','_blank','height=700px,width=700px,top=100,left=150,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')" title="Live Chat">
84 <img class="kf" src="@/assets/logo/btn01.png"/>
85 <div class="text-center ">LIVE CHAT</div>
86 </div>
87 <!-- <div @click="goHelp">-->
88 <!-- <img class="kf" src="@/assets/logo/btn02.png"/>-->
89 <!-- <div class="text-center uppercase">Video Guide</div>-->
90 <!-- </div>--> 73 <!-- </div>-->
91 </div> 74 <!-- &lt;!&ndash; <div @click="goHelpZH">&ndash;&gt;-->
92 </div> 75 <!-- &lt;!&ndash; <a>&ndash;&gt;-->
76 <!-- &lt;!&ndash; <img class="kf" src="@/assets/logo/btn02.png"/>&ndash;&gt;-->
77 <!-- &lt;!&ndash; <div class="text-center mt10">周边活动</div>&ndash;&gt;-->
78 <!-- &lt;!&ndash; </a>&ndash;&gt;-->
79 <!-- &lt;!&ndash; </div>&ndash;&gt;-->
80 <!-- </div>-->
81 <!-- <div class="mlb" v-else>-->
82 <!-- <div @click="goAround" class="mb10 pb5">-->
83 <!-- <a>-->
84 <!-- <img class="kf" src="@/assets/logo/btn02.png"/>-->
85 <!-- <div class="text-center mt10">ACTIVITIES</div>-->
86 <!-- </a>-->
87 <!-- </div>-->
88 <!--&lt;!&ndash; <div&ndash;&gt;-->
89 <!--&lt;!&ndash; onclick="window.open('https://ykf-weixin01.7moor.com/wapchat.html?accessId=707daf80-02c6-11ef-9a4d-85cd5dacc5bf&fromUrl=&urlTitle=&language=EN','_blank','height=700px,width=700px,top=100,left=150,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')"&ndash;&gt;-->
90 <!--&lt;!&ndash; title="Live Chat">&ndash;&gt;-->
91 <!--&lt;!&ndash; <img class="kf" src="@/assets/logo/btn01.png"/>&ndash;&gt;-->
92 <!--&lt;!&ndash; <div class="text-center ">LIVE CHAT</div>&ndash;&gt;-->
93 <!--&lt;!&ndash; </div>&ndash;&gt;-->
94 <!-- &lt;!&ndash; <div @click="goHelp">&ndash;&gt;-->
95 <!-- &lt;!&ndash; <img class="kf" src="@/assets/logo/btn02.png"/>&ndash;&gt;-->
96 <!-- &lt;!&ndash; <div class="text-center uppercase">Video Guide</div>&ndash;&gt;-->
97 <!-- &lt;!&ndash; </div>&ndash;&gt;-->
98 <!-- </div>-->
99 <!-- </div>-->
93 </template> 100 </template>
94 101
95 <script setup> 102 <script setup>
96 import {useStorage} from "@vueuse/core/index"; 103 import {useStorage} from "@vueuse/core/index";
97 import {useRouter} from "vue-router"; 104 import {useRouter} from "vue-router";
98 import {ElMessage} from "element-plus"; 105 import {ElMessage} from "element-plus";
106
99 const router = useRouter() 107 const router = useRouter()
100 const language = useStorage('language', 0) 108 const language = useStorage('language', 0)
101 const goHelp = () => { 109 const goHelp = () => {
102 router.push({ 110 router.push({
103 path: `/news/list/20000100`, 111 path: `/news/list/20000100`,
104 query:{ 112 query: {
105 kindName: language.value===0?'操作指引':'Video Guide' 113 kindName: language.value === 0 ? '操作指引' : 'Video Guide'
106 } 114 }
107 }) 115 })
108 } 116 }
109 const goHelpZH = () => { 117 const goHelpZH = () => {
110 // ElMessage.success('已下载文件') 118 // ElMessage.success('已下载文件')
111 router.push({ 119 router.push({
112 name: 'guide', 120 name: 'guide',
113 query: { 121 query: {
114 index:8 122 index: 8
115 } 123 }
116 }) 124 })
117 } 125 }
118 const goAround = () => { 126 const goAround = () => {
119 //周边活动 127 //周边活动
120 router.push({path: `/about/wuDao`,query: {activeIndex: '2'}}) 128 router.push({path: `/about/wuDao`, query: {activeIndex: '2'}})
121 } 129 }
122 </script> 130 </script>
123 131
124 <style lang="scss" scoped> 132 <style lang="scss" scoped>
125 .kf{width: 45px;margin: auto;height: auto; 133 .kf {
134 width: 45px;
135 margin: auto;
136 height: auto;
126 //animation: pop 2s infinite; 137 //animation: pop 2s infinite;
127 } 138 }
128 .fixed-right{position: fixed;right: 0;top: 65%;z-index: 9; 139
129 .mlb{background: #fff;border-radius: 10px 0 0 10px;box-shadow: 0 2px 8px #aaa; 140 .fixed-right {
130 padding: 10px 8px;text-align: center;cursor: pointer; 141 position: fixed;
131 div{text-transform: uppercase;} 142 right: 0;
132 div:first-child{border-bottom: 0.5px solid #eee; 143 top: 65%;
144 z-index: 9;
145
146 .mlb {
147 background: #fff;
148 border-radius: 10px 0 0 10px;
149 box-shadow: 0 2px 8px #aaa;
150 padding: 10px 8px;
151 text-align: center;
152 cursor: pointer;
153
154 div {
155 text-transform: uppercase;
156 }
157
158 div:first-child {
159 border-bottom: 0.5px solid #eee;
133 //padding: 0 0 10px;margin-bottom: 10px; 160 //padding: 0 0 10px;margin-bottom: 10px;
134 } 161 }
135 div:hover{.gradient-text{font-weight: bold;}} 162
163 div:hover {
164 .gradient-text {
165 font-weight: bold;
166 }
167 }
136 } 168 }
137 } 169 }
138 .copyright{font-size: 14px;opacity: 0.88;color: #4C5359;} 170
139 .footAll{background: #E0E3E5;;padding: 36px 0 5px; 171 .copyright {
140 p{font-size: 14px;opacity: 0.88;color: #4C5359;} 172 font-size: 14px;
141 ul{list-style: none; 173 opacity: 0.88;
142 li{line-height: 30px;font-size: 14px;opacity: 0.88;color: #4C5359; 174 color: #4C5359;
143 a{margin-left: 15px; 175 }
144 &:hover{text-decoration: underline;} 176
177 .footAll {
178 background: #E0E3E5;;
179 padding: 36px 0 5px;
180
181 p {
182 font-size: 14px;
183 opacity: 0.88;
184 color: #4C5359;
185 }
186
187 ul {
188 list-style: none;
189
190 li {
191 line-height: 30px;
192 font-size: 14px;
193 opacity: 0.88;
194 color: #4C5359;
195
196 a {
197 margin-left: 15px;
198
199 &:hover {
200 text-decoration: underline;
201 }
145 } 202 }
146 } 203 }
147 } 204 }
148 img{height: 80px;} 205
206 img {
207 height: 80px;
208 }
149 } 209 }
210
150 .gradient-text { 211 .gradient-text {
151 font-family: FZJunHeiS-B-GB; 212 font-family: FZJunHeiS-B-GB;
152 font-weight: 600;font-size: 17px; 213 font-weight: 600;
214 font-size: 17px;
153 background: linear-gradient(0deg, #8226FC 0%, #483BEB 100%); 215 background: linear-gradient(0deg, #8226FC 0%, #483BEB 100%);
154 -webkit-background-clip: text; 216 -webkit-background-clip: text;
155 -webkit-text-fill-color: transparent; 217 -webkit-text-fill-color: transparent;
156 } 218 }
219
157 @media (max-width: 500px) { 220 @media (max-width: 500px) {
158 .forWei{display: none;} 221 .forWei {
159 .footAll{padding:10px 0; 222 display: none;
160 ul { 223 }
161 li { 224 .footAll {
162 font-size: 10px;line-height: 1.4; 225 padding: 10px 0;
163 } 226
227 ul {
228 li {
229 font-size: 10px;
230 line-height: 1.4;
164 } 231 }
165 img{height: 60px;}
166 p{font-size: 10px;line-height: 1.4;}
167 .copyright{font-size: 10px;line-height: 1.4;}
168 } 232 }
233
234 img {
235 height: 60px;
236 }
237
238 p {
239 font-size: 10px;
240 line-height: 1.4;
241 }
242
243 .copyright {
244 font-size: 10px;
245 line-height: 1.4;
246 }
247 }
169 } 248 }
170 .ffoot{display: inline-flex; 249
171 img{width: 20px;height: 20px;display: inline-block;position: relative;top: 4px;margin-right: 4px;} 250 .ffoot {
251 display: inline-flex;
252
253 img {
254 width: 20px;
255 height: 20px;
256 display: inline-block;
257 position: relative;
258 top: 4px;
259 margin-right: 4px;
260 }
172 } 261 }
173 </style> 262 </style>
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 <el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item> 13 <el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item>
14 <el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item> 14 <el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item>
15 <el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item> 15 <el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item>
16 <el-menu-item index="/match/list">{{ language==0?'赛事服务':'REGISTRATION' }}</el-menu-item> 16 <!-- <el-menu-item index="/match/list">{{ language==0?'赛事服务':'REGISTRATION' }}</el-menu-item>-->
17 <el-menu-item index="/saiC">{{ language==0?'竞赛日程':'COMPETITIONS' }}</el-menu-item> 17 <el-menu-item index="/saiC">{{ language==0?'竞赛日程':'COMPETITIONS' }}</el-menu-item>
18 <el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item> 18 <el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item>
19 <!-- <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>--> 19 <!-- <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>-->
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
32 <el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item> 32 <el-menu-item index="/">{{ language==0?'首页':'HOME' }}</el-menu-item>
33 <el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item> 33 <el-menu-item index="/news">{{ language==0?'新闻资讯':'NEWS' }}</el-menu-item>
34 <el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item> 34 <el-menu-item index="/notice">{{ language==0?'通知公告':'NOTICEBOARD' }}</el-menu-item>
35 <el-menu-item index="/match/list">{{ language==0?'赛事服务':'COMPETITION INFO' }}</el-menu-item> 35 <!-- <el-menu-item index="/match/list">{{ language==0?'赛事服务':'COMPETITION INFO' }}</el-menu-item>-->
36 <el-menu-item index="/saiC">{{ language==0?'竞赛日程':'COMPETITION SCHEDULE' }}</el-menu-item> 36 <el-menu-item index="/saiC">{{ language==0?'竞赛日程':'COMPETITION SCHEDULE' }}</el-menu-item>
37 <el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item> 37 <el-menu-item index="/meta">{{ language==0?'媒体中心':'MEDIA' }}</el-menu-item>
38 <!-- <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>--> 38 <!-- <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item>-->
......
...@@ -567,6 +567,12 @@ export const constantRoutes = [ ...@@ -567,6 +567,12 @@ export const constantRoutes = [
567 meta: {title: 'My reservation'} 567 meta: {title: 'My reservation'}
568 }, 568 },
569 { 569 {
570 path: 'myVisa',
571 component: () => import('@/viewsPc/center/myVisa'),
572 name: 'myVisa',
573 meta: {title: 'My visa'}
574 },
575 {
570 path: 'mySms', 576 path: 'mySms',
571 component: () => import('@/viewsPc/center/mySms'), 577 component: () => import('@/viewsPc/center/mySms'),
572 name: 'mySms', 578 name: 'mySms',
......
...@@ -76,7 +76,7 @@ const contact = ref([ ...@@ -76,7 +76,7 @@ const contact = ref([
76 {name:'电话',ename:'Phone',value:'武先生:15606190026',evalue:'Mr.WU:15606190026'}, 76 {name:'电话',ename:'Phone',value:'武先生:15606190026',evalue:'Mr.WU:15606190026'},
77 {name:'地址',ename:'Address',value:'江苏省 无锡市太湖新城和风路与清舒交叉口东北100米', 77 {name:'地址',ename:'Address',value:'江苏省 无锡市太湖新城和风路与清舒交叉口东北100米',
78 evalue:'No.88 Qingshu Road,Economic Development District, Wuxi City,Jiangsu Province,China'}, 78 evalue:'No.88 Qingshu Road,Economic Development District, Wuxi City,Jiangsu Province,China'},
79 {name:'邮箱',ename:'Email',value:'info@wdsfwuxicenter.com',evalue:'info@wdsfwuxicenter.com'}, 79 {name:'邮箱',ename:'Email',value:'office@2025wtcwuxi.com',evalue:'office@2025wtcwuxi.com'},
80 ]) 80 ])
81 81
82 onMounted(()=>{ 82 onMounted(()=>{
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="banner"> 3 <div class="banner">
4 <img v-if="language==0" src="@/assets/booking/jd_text_c.png"> 4 <img v-if="language==0" src="@/assets/booking/jd_text_c.png">
5 <img v-else src="@/assets/booking/jd_text_e.png"> 5 <img v-else src="@/assets/booking/jd_text_e.png">
6 </div> 6 </div>
7 <div class="box"> 7 <div class="box">
8 <div class="searchBar"> 8 <div class="searchBar">
9 <el-input :placeholder="language==0?'请输入关键字搜索':'Search'" v-model="query.name" class="no-border"> 9 <el-input :placeholder="language==0?'请输入关键字搜索':'Search'" v-model="query.name" class="no-border">
10 </el-input> 10 </el-input>
11 <el-button size="large" type="primary" class="btn-lineG" icon="search" @click="getList"> 11 <el-button size="large" type="primary" class="btn-lineG" icon="search" @click="getList">
12 {{ language==0?'搜索':'Search' }}</el-button> 12 {{ language == 0 ? '搜索' : 'Search' }}
13 </el-button>
14 </div>
13 </div> 15 </div>
14 </div>
15 16
16 <div class="box" v-loading="loading"> 17 <div class="box" v-loading="loading">
17 <el-row :gutter="20"> 18 <el-row :gutter="20">
18 <el-col :lg="24" :md="24" :sm="24" :xs="24" :xl="24" v-for="(h,index) in list" class="mb20"> 19 <el-col :lg="24" :md="24" :sm="24" :xs="24" :xl="24" v-for="(h,index) in list" class="mb20">
19 <el-card @click="goDetail(h)"> 20 <el-card @click="goDetail(h)">
20 <!-- 酒店列表--> 21 <!-- 酒店列表-->
21 <el-row class="hotel" align="middle" :gutter="20"> 22 <el-row class="hotel" align="middle" :gutter="20">
22 <el-col :lg="6" :md="6"> 23 <el-col :lg="6" :md="6">
23 <div class="imgbox"> 24 <div class="imgbox">
24 <img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])"/> 25 <img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])"/>
25 </div> 26 </div>
26 </el-col> 27 </el-col>
27 <el-col :lg="12" :md="12"> 28 <el-col :lg="12" :md="12">
28 <h3 class="esp">{{h.name}}</h3> 29 <h3 class="esp">{{ h.name }}</h3>
29 <div class="starBox"> 30 <div class="starBox">
30 <img v-for="i in Number(h.starLevel||0)" src="@/assets/booking/star.png"> 31 <img v-for="i in Number(h.starLevel||0)" src="@/assets/booking/star.png">
31 </div> 32 </div>
32 <div class="tagbox esp"> 33 <div class="tagbox esp">
33 <span v-for="(t,index) in h.label?.split(',')" v-show="index<4">{{t}}</span> 34 <span v-for="(t,index) in h.label?.split(',')" v-show="index<4">{{ t }}</span>
34 <a v-show="h.label?.split(',').length>4">{{ language==0?'更多':'MORE' }} ></a> 35 <a v-show="h.label?.split(',').length>4">{{ language == 0 ? '更多' : 'MORE' }} ></a>
35 </div> 36 </div>
36 <p class="esp addr mt20"> 37 <p class="esp addr mt20">
37 <el-icon size="16" style="position: relative;top: 2px" color="#929AA0"><LocationFilled /></el-icon> 38 <el-icon size="16" style="position: relative;top: 2px" color="#929AA0">
38 {{h.address}} 39 <LocationFilled/>
39 </p> 40 </el-icon>
40 </el-col> 41 {{ h.address }}
41 <el-col :lg="4" :md="4" class="text-right"> 42 </p>
42 <div class="price">{{ language==0?'¥':'$' }}<span>{{ h.price }}</span> 43 </el-col>
43 <i v-if="language==0"></i> 44 <el-col :lg="4" :md="4" class="text-right">
44 </div> 45 <div class="price">{{ language == 0 ? '¥' : '$' }}<span>{{ h.price }}</span>
45 <el-button class="w200px blackBtn" round type="primary" >{{ language==0?'立即预订':'Select' }}</el-button> 46 <i v-if="language==0"></i>
46 </el-col> 47 </div>
47 </el-row> 48 <el-button class="w200px blackBtn" round type="primary">{{ language == 0 ? '立即预订' : 'Select' }}
48 </el-card> 49 </el-button>
49 </el-col> 50 </el-col>
50 </el-row> 51 </el-row>
51 <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description="" /> 52 </el-card>
52 <div style="height: 50px"></div> 53 </el-col>
53 </div> 54 </el-row>
55 <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description=""/>
56 <div style="height: 50px"></div>
57 </div>
54 58
55 </div> 59 </div>
56 </template> 60 </template>
57 61
58 <script setup> 62 <script setup>
59 import {onMounted} from "@vue/runtime-core" 63 import * as booking from "@/apiPc/booking"
60 import * as booking from "@/apiPc/booking" 64 import {useRouter, useRoute} from "vue-router";
61 import {useRouter,useRoute} from "vue-router"; 65 import {useStorage} from "@vueuse/core";
62 import {useStorage} from "@vueuse/core/index"; 66 import useUserStore from "@/store/modules/user";
63 import useUserStore from "@/store/modules/user"; 67 import {ElMessageBox} from "element-plus";
64 import {ElMessageBox} from "element-plus"; 68 import {useRouteQuery} from '@vueuse/router'
65 const router = useRouter() 69 import {onMounted} from "vue";
66 const route = useRoute()
67 const user = useUserStore().user
68 const useStore = useUserStore
69 const language= useStorage('language',0)
70 const query = ref({
71 name:''
72 })
73 const cptId = ref('')
74 const list = ref([])
75 const loading = ref(false)
76 onMounted(()=>{
77 query.value.activityId = route.params.cptId
78 getList()
79 })
80 70
81 function getList() { 71 const router = useRouter()
82 loading.value = true 72 const route = useRoute()
83 booking.getHotelList(query.value).then(res=>{
84 list.value = res.rows
85 loading.value = false
86 console.log(list.value)
87 73
88 }).catch(e=>{ 74 const useStore = useUserStore()
89 loading.value = false 75 const user = useStore.user
90 }) 76
77 const flag = useRouteQuery('flag')
78
79 const language = useStorage('language', 0)
80 const query = ref({
81 name: ''
82 })
83 const cptId = ref('')
84 const list = ref([])
85 const loading = ref(false)
86 onMounted(() => {
87 query.value.activityId = route.params.cptId
88 getList()
89 })
90
91 function getList() {
92 loading.value = true
93 booking.getHotelList(Object.assign({
94 meeting: flag.value,
95 },query.value)).then(res => {
96 list.value = res.rows
97 loading.value = false
98 console.log(list.value)
99
100 }).catch(e => {
101 loading.value = false
102 })
103 }
104
105 function goDetail(item) {
106 if (!user) {
107 useStore.setVisitor()
108 return
91 } 109 }
92 function goDetail(item) { 110 if (item.meeting == '1') {
93 if(!user){ 111 ElMessageBox.confirm(item.meetText, '', {
94 useStore().setVisitor() 112 cancelButtonText: language.value == 1 ? 'Close ' : '关闭',
95 return 113 confirmButtonText: language.value == 1 ? 'Continue to book' : '继续预订',
96 } 114 dangerouslyUseHTMLString: true,
97 if(item.meeting=='1'){ 115 type: 'warning',
98 ElMessageBox.confirm( item.meetText,'',{ 116 }).then((res) => {
99 cancelButtonText: language.value==1?'Close ':'关闭',
100 confirmButtonText: language.value==1?'Continue to book':'继续预订',
101 type: 'warning',
102 }).then((res) => {
103 router.push({
104 name:'hotelDetail',
105 params:{
106 hotelId:item.hotelId,
107 },
108 query:{
109 id:item.id
110 }
111 })
112 })
113 } else {
114 router.push({ 117 router.push({
115 name:'hotelDetail', 118 name: 'hotelDetail',
116 params:{ 119 params: {
117 hotelId:item.hotelId, 120 hotelId: item.hotelId,
118 }, 121 },
119 query:{ 122 query: {
120 id:item.id 123 id: item.id
121 } 124 }
122 }) 125 })
123 } 126 })
127 } else {
128 router.push({
129 name: 'hotelDetail',
130 params: {
131 hotelId: item.hotelId,
132 },
133 query: {
134 id: item.id
135 }
136 })
124 } 137 }
138 }
125 </script> 139 </script>
126 140
127 <style scoped lang="scss"> 141 <style scoped lang="scss">
128 .hotel{ 142 .hotel {
129 h3{margin: 0 0 10px;} 143 h3 {
130 img.w100{object-fit: cover;aspect-ratio: 16/9} 144 margin: 0 0 10px;
131 .addr{font-size: 14px;color: #929AA0;font-weight: 400;margin: 0 0 10px;} 145 }
132 .price{margin: 0 0 8px; 146
133 color: #FF8124;font-size: 18px; 147 img.w100 {
134 span{font-size: 36px;margin: 0 8px;font-family: 'DINAlternate-Bold';font-weight: 600;} 148 object-fit: cover;
135 i{font-style: normal;color: #929AA0;} 149 aspect-ratio: 16/9
150 }
151
152 .addr {
153 font-size: 14px;
154 color: #929AA0;
155 font-weight: 400;
156 margin: 0 0 10px;
157 }
158
159 .price {
160 margin: 0 0 8px;
161 color: #FF8124;
162 font-size: 18px;
163
164 span {
165 font-size: 36px;
166 margin: 0 8px;
167 font-family: 'DINAlternate-Bold';
168 font-weight: 600;
136 } 169 }
137 .blackBtn{background: #000;border: #000;} 170
138 } 171 i {
139 .banner{height: 140px;background-size: cover;text-align: center; 172 font-style: normal;
140 background: url("@/assets/booking/jd_bg.png") center;display: flex;align-items: center; 173 color: #929AA0;
141 justify-content: center; 174 }
142 img{display: block;margin:-30px auto 0;width: auto;} 175 }
143 } 176
144 .searchBar{position: relative;top: -30px; 177 .blackBtn {
145 background: #FFFFFF;display: flex;padding: 20px; 178 background: #000;
146 border-radius: 10px;} 179 border: #000;
147 .no-border{border: none;background: #F5F7F9; 180 }
148 :deep(.el-input__wrapper){border: none;box-shadow: none;background: #F5F7F9;} 181 }
149 } 182
150 .imgbox {width: 100%;height: 100%;position: relative; 183 .banner {
151 img{width: 100%;height: 100%;} 184 height: 140px;
152 .starBox{position: absolute;bottom: 0;right: 0;background: rgba(0,0,0,0.4);padding: 10px 15px 3px;} 185 background-size: cover;
153 } 186 text-align: center;
154 .po-r-b{} 187 background: url("@/assets/booking/jd_bg.png") center;
155 .starBox{ 188 display: flex;
156 border-radius: 14px 0 0 0; 189 align-items: center;
157 img{display: inline-block;margin-right: 4px;width: 24px;} 190 justify-content: center;
158 } 191
159 .tagbox{margin: 10px 0; 192 img {
160 a{color: #AFB5B9;font-size: 12px;} 193 display: block;
161 span{border-radius: 13px;font-size: 12px;padding: 3px 10px;margin-right:10px;font-weight: 400;} 194 margin: -30px auto 0;
162 span:nth-child(4n){background: rgba(50, 177, 108, 0.2);color: rgba(50, 177, 108, 1);} 195 width: auto;
163 span:nth-child(4n+1){background:rgba(243, 152, 0, 0.2);color: rgba(243, 152, 0, 1);} 196 }
164 span:nth-child(4n+2){background: rgba(0, 160, 233, 0.2);color: rgba(0, 160, 233, 1);} 197 }
165 span:nth-child(4n+3){background: rgba(247, 64, 166, 0.2);color:rgba(247, 64, 166, 1);} 198
166 } 199 .searchBar {
167 @media screen and (max-width: 768px) { 200 position: relative;
168 .hotel h3{margin: 20px 0 10px; font-size: 18px;} 201 top: -30px;
202 background: #FFFFFF;
203 display: flex;
204 padding: 20px;
205 border-radius: 10px;
206 }
207
208 .no-border {
209 border: none;
210 background: #F5F7F9;
211
212 :deep(.el-input__wrapper) {
213 border: none;
214 box-shadow: none;
215 background: #F5F7F9;
216 }
217 }
218
219 .imgbox {
220 width: 100%;
221 height: 100%;
222 position: relative;
223
224 img {
225 width: 100%;
226 height: 100%;
227 }
228
229 .starBox {
230 position: absolute;
231 bottom: 0;
232 right: 0;
233 background: rgba(0, 0, 0, 0.4);
234 padding: 10px 15px 3px;
235 }
236 }
237
238 .po-r-b {
239 }
240
241 .starBox {
242 border-radius: 14px 0 0 0;
243
244 img {
245 display: inline-block;
246 margin-right: 4px;
247 width: 24px;
248 }
249 }
250
251 .tagbox {
252 margin: 10px 0;
253
254 a {
255 color: #AFB5B9;
256 font-size: 12px;
257 }
258
259 span {
260 border-radius: 13px;
261 font-size: 12px;
262 padding: 3px 10px;
263 margin-right: 10px;
264 font-weight: 400;
265 }
266
267 span:nth-child(4n) {
268 background: rgba(50, 177, 108, 0.2);
269 color: rgba(50, 177, 108, 1);
270 }
271
272 span:nth-child(4n+1) {
273 background: rgba(243, 152, 0, 0.2);
274 color: rgba(243, 152, 0, 1);
275 }
276
277 span:nth-child(4n+2) {
278 background: rgba(0, 160, 233, 0.2);
279 color: rgba(0, 160, 233, 1);
280 }
281
282 span:nth-child(4n+3) {
283 background: rgba(247, 64, 166, 0.2);
284 color: rgba(247, 64, 166, 1);
285 }
286 }
287
288 @media screen and (max-width: 768px) {
289 .hotel h3 {
290 margin: 20px 0 10px;
291 font-size: 18px;
169 } 292 }
293 }
170 </style> 294 </style>
......
...@@ -92,6 +92,8 @@ ...@@ -92,6 +92,8 @@
92 <div v-if="labelObj.tv==1"><img src="@/assets/img/svg/tag18@2x.png"/>{{ language==0 ?'电视': 'tv' }}</div> 92 <div v-if="labelObj.tv==1"><img src="@/assets/img/svg/tag18@2x.png"/>{{ language==0 ?'电视': 'tv' }}</div>
93 <div v-if="labelObj.hours==1"><img src="@/assets/img/svg/tag19@2x.png"/>{{ language==0 ?'24小时前台': '24Hours Available' }}</div> 93 <div v-if="labelObj.hours==1"><img src="@/assets/img/svg/tag19@2x.png"/>{{ language==0 ?'24小时前台': '24Hours Available' }}</div>
94 <div v-if="labelObj.breakfast==1"><img src="@/assets/img/svg/tag20@2x.png"/>{{ language==0 ?'早餐': 'breakfast' }}</div> 94 <div v-if="labelObj.breakfast==1"><img src="@/assets/img/svg/tag20@2x.png"/>{{ language==0 ?'早餐': 'breakfast' }}</div>
95 <div v-if="labelObj.ntatorium==1"><img src="@/assets/img/svg/tag21@2x.png"/>{{ language==0 ?'泳池': 'ntatorium' }}</div>
96 <div v-if="labelObj.gymnasium==1"><img src="@/assets/img/svg/tag22@2x.png"/>{{ language==0 ?'健身房': 'gymnasium' }}</div>
95 </div> 97 </div>
96 </el-card> 98 </el-card>
97 99
......
...@@ -47,7 +47,8 @@ import {onMounted} from '@vue/runtime-core' ...@@ -47,7 +47,8 @@ import {onMounted} from '@vue/runtime-core'
47 import useUserStore from '@/store/modules/user' 47 import useUserStore from '@/store/modules/user'
48 import _ from 'lodash' 48 import _ from 'lodash'
49 import {useStorage} from "@vueuse/core/index"; 49 import {useStorage} from "@vueuse/core/index";
50 const language= useStorage('language',0) 50
51 const language = useStorage('language', 0)
51 52
52 const route = useRoute() 53 const route = useRoute()
53 const router = useRouter() 54 const router = useRouter()
...@@ -63,14 +64,14 @@ const menus3 = ref([ ...@@ -63,14 +64,14 @@ const menus3 = ref([
63 // isActive: false 64 // isActive: false
64 // }, 65 // },
65 { 66 {
66 name: language.value==0?'修改密码':'Change Password', 67 name: language.value == 0 ? '修改密码' : 'Change Password',
67 routeName: 'myPassword', 68 routeName: 'myPassword',
68 picUrl1: '/img/nav_27.png', 69 picUrl1: '/img/nav_27.png',
69 picUrl2: '/img/nav_27_dwn.png', 70 picUrl2: '/img/nav_27_dwn.png',
70 isActive: false 71 isActive: false
71 }, 72 },
72 { 73 {
73 name: language.value==0?'我的预订':'My Reservation', 74 name: language.value == 0 ? '我的预订' : 'My Reservation',
74 routeName: 'myReservation', 75 routeName: 'myReservation',
75 picUrl1: '/img/nav_29.png', 76 picUrl1: '/img/nav_29.png',
76 picUrl2: '/img/nav_29_dwn.png', 77 picUrl2: '/img/nav_29_dwn.png',
...@@ -84,7 +85,7 @@ const menus3 = ref([ ...@@ -84,7 +85,7 @@ const menus3 = ref([
84 // isActive: false 85 // isActive: false
85 // }, 86 // },
86 { 87 {
87 name: language.value==0?'发票申请':'Electronic invoice', 88 name: language.value == 0 ? '发票申请' : 'Electronic invoice',
88 routeName: 'myKP', 89 routeName: 'myKP',
89 picUrl1: '/img/fp.svg', 90 picUrl1: '/img/fp.svg',
90 picUrl2: '/img/fp_dwn.svg', 91 picUrl2: '/img/fp_dwn.svg',
...@@ -100,19 +101,26 @@ const menus3En = ref([ ...@@ -100,19 +101,26 @@ const menus3En = ref([
100 // isActive: false 101 // isActive: false
101 // }, 102 // },
102 { 103 {
103 name: language.value==0?'修改密码':'Change Password', 104 name: language.value == 0 ? '修改密码' : 'Change Password',
104 routeName: 'myPassword', 105 routeName: 'myPassword',
105 picUrl1: '/img/nav_27.png', 106 picUrl1: '/img/nav_27.png',
106 picUrl2: '/img/nav_27_dwn.png', 107 picUrl2: '/img/nav_27_dwn.png',
107 isActive: false 108 isActive: false
108 }, 109 },
109 { 110 {
110 name: language.value==0?'我的预订':'My Reservation', 111 name: language.value == 0 ? '我的预订' : 'My Reservation',
111 routeName: 'myReservation', 112 routeName: 'myReservation',
112 picUrl1: '/img/nav_29.png', 113 picUrl1: '/img/nav_29.png',
113 picUrl2: '/img/nav_29_dwn.png', 114 picUrl2: '/img/nav_29_dwn.png',
114 isActive: false 115 isActive: false
115 }, 116 },
117 {
118 name: language.value == 0 ? '签证审核记录' : 'Visa Review record',
119 routeName: 'myVisa',
120 picUrl1: '/img/fp.svg',
121 picUrl2: '/img/fp_dwn.svg',
122 isActive: false
123 },
116 // { 124 // {
117 // name: language.value==0?'票务预订':'Ticket Reservation', 125 // name: language.value==0?'票务预订':'Ticket Reservation',
118 // routeName: 'seat_order', 126 // routeName: 'seat_order',
...@@ -125,18 +133,19 @@ const menus3En = ref([ ...@@ -125,18 +133,19 @@ const menus3En = ref([
125 let currMenu 133 let currMenu
126 onMounted(() => { 134 onMounted(() => {
127 console.log(route.query) 135 console.log(route.query)
128 if(!user.utype){ 136 if (!user.utype) {
129 router.push({name: 'home'}) 137 router.push({name: 'home'})
130 return 138 return
131 } 139 }
132 currMenu = _.find(menus3.value, (m) => { 140
133 return m.routeName === route.name 141 currMenu = _.find((language.value == 0? menus3.value: menus3En.value), (m) => {
134 }) 142 return m.routeName === route.name
135 currMenu.isActive = true 143 })
144 currMenu.isActive = true
136 145
137 }) 146 })
138 147
139 const toInfo = (item,list) => { 148 const toInfo = (item, list) => {
140 _.each(list, (m) => { 149 _.each(list, (m) => {
141 m.isActive = false 150 m.isActive = false
142 }) 151 })
...@@ -159,11 +168,23 @@ const toInfo = (item,list) => { ...@@ -159,11 +168,23 @@ const toInfo = (item,list) => {
159 li { 168 li {
160 margin-bottom: 15px; 169 margin-bottom: 15px;
161 } 170 }
162 &.en-menu{text-align: left; 171
163 li{padding: 6px 0 6px 14px; 172 &.en-menu {
164 a{display: flex;align-items: center;} 173 text-align: left;
174
175 li {
176 padding: 6px 0 6px 14px;
177
178 a {
179 display: flex;
180 align-items: center;
181 }
182 }
183
184 img {
185 padding: 0;
186 width: 26px;
165 } 187 }
166 img{padding: 0;width: 26px;}
167 } 188 }
168 } 189 }
169 190
...@@ -179,24 +200,61 @@ li img { ...@@ -179,24 +200,61 @@ li img {
179 background: #000; 200 background: #000;
180 border-radius: 20px; 201 border-radius: 20px;
181 } 202 }
203
182 @media (max-width: 500px) { 204 @media (max-width: 500px) {
183 .pd20{padding: 8px;} 205 .pd20 {
184 .el-card{box-shadow: none!important; 206 padding: 8px;
185 :deep(.el-card__body){padding: 0!important;} 207 }
208 .el-card {
209 box-shadow: none !important;
210
211 :deep(.el-card__body) {
212 padding: 0 !important;
213 }
214 }
215 .el-col {
216 padding: 0 !important;
186 } 217 }
187 .el-col{padding: 0!important;} 218 .center-menu {
188 .center-menu{height: 100vh;padding: 20px 0;position: fixed;left: 0;z-index: 1; 219 height: 100vh;
189 background: #F5F7F9;top: 80px;width: 100px;border-right: 1px solid #eee; 220 padding: 20px 0;
190 li{font-size: 13px;padding:8px 10px;border-radius: 0; 221 position: fixed;
191 img{display: none} 222 left: 0;
192 &.active{background: #fff; 223 z-index: 1;
224 background: #F5F7F9;
225 top: 80px;
226 width: 100px;
227 border-right: 1px solid #eee;
228
229 li {
230 font-size: 13px;
231 padding: 8px 10px;
232 border-radius: 0;
233
234 img {
235 display: none
236 }
237
238 &.active {
239 background: #fff;
193 border-left: 2px solid var(--el-color-primary); 240 border-left: 2px solid var(--el-color-primary);
194 color: var(--el-color-primary);} 241 color: var(--el-color-primary);
242 }
195 } 243 }
196 } 244 }
197 .rightPart{width: calc(100vw - 100px);left: 100px;position: fixed; z-index: 1; 245 .rightPart {
198 height: calc(100vh - 80px);overflow: auto;top: 80px;background: #fff; 246 width: calc(100vw - 100px);
247 left: 100px;
248 position: fixed;
249 z-index: 1;
250 height: calc(100vh - 80px);
251 overflow: auto;
252 top: 80px;
253 background: #fff;
199 } 254 }
200 } 255 }
201 .app-container{min-height: 80vh;} 256
257 .app-container {
258 min-height: 80vh;
259 }
202 </style> 260 </style>
......
1 <template>
2 <div>
3 <el-card :body-style="{'padding':'0'}">
4 <div class="indexTitle">
5 <h3 class="leftboderTT">{{ language == 0 ? '我的签证' : 'My visa' }}
6 </h3>
7
8 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'发票开具':'Invoice' }}</el-button>-->
9 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'我的发票':'My Invoice' }}</el-button>-->
10 </div>
11 <el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228"/>
12
13 <div class="pd20">
14 <div v-for="b in list" class="item">
15 <div class="title">
16 <label class="orangeTag"> {{ b.applicatTypeName }} </label>
17 <span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
18 </div>
19
20 <div class="status-po">
21 <span v-if="b.status == '0'" class="bg-gary">{{ 'Under Review' }}</span>
22 <span v-if="b.status == '1'" class="bg-blue">{{ 'Approved' }}</span>
23 <span v-if="b.status == '2'" class="bg-danger">{{ 'Rejected' }}</span>
24 </div>
25
26 <el-row align="middle" class="pd20 mt10" justify="space-between">
27 <el-col :lg="9" :md="12" :sm="12" :xs="24">
28 <div>
29 <h3 class="name">{{ b.fullName }}</h3>
30 <p>{{ b.email }}</p>
31 <p>{{ b.createTime }}</p>
32 </div>
33 </el-col>
34 <el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
35 <span class="text-warning"> {{ b.invitationTypeName }} </span>
36 </el-col>
37 <el-col :lg="6" :md="16" :sm="16" :xs="16">
38 <div class="text-right">
39 <el-button class="mb10" :disabled="b.emailFlag!='1'" plain round size="small" type="primary"
40 @click="handleDownload(b)">
41 {{ language == 0 ? '下载邀请函' : 'Download Invitation' }}
42 </el-button>
43 <el-button class="mb10" plain round size="small" type="primary" @click="goDetail(b)">
44 {{ language == 0 ? '详情' : 'Detail' }}
45 </el-button>
46 </div>
47 </el-col>
48 </el-row>
49 </div>
50 </div>
51 </el-card>
52 <affix-invitation-view ref="affixInvitationRef"></affix-invitation-view>
53 </div>
54 </template>
55
56 <script setup>
57 import {onMounted, getCurrentInstance} from "@vue/runtime-core";
58 import {useStorage} from "@vueuse/core/index";
59 // import {newbilllist} from "@/apiPc/common";
60 import useUserStore from "@/store/modules/user";
61 // import dayjs from 'dayjs'
62 import {cancelOrder2, cancelOrder} from "/@/apiPc/booking";
63
64 import {ElMessage} from "element-plus";
65 import {downInvite, getUplaodFile, getVisaInfo} from "/@/apiPc/match";
66 import AffixInvitationView from "/@/viewsPc/match/components/affix-invitation-view.vue";
67 import {ref} from "vue";
68 import {useRouter} from "vue-router";
69 import {fillImgUrl} from "/@/utils/ruoyi";
70
71 const router = useRouter()
72 const language = useStorage('language', 0)
73 const list = ref([])
74 const user = useUserStore().user
75 const {proxy} = getCurrentInstance()
76
77 const affixInvitationRef = ref(null)
78
79 onMounted(() => {
80 getList()
81 })
82
83 function finish(bill) {
84 bill.status = '2'
85 // getList()
86 }
87
88 function getList() {
89 getVisaInfo({userId: user.userId}).then(res => {
90 list.value = res.rows || []
91 })
92 }
93
94 function goDetail(b) {
95 affixInvitationRef.value.open(b)
96 // router.push({
97 // name: 'bookingPay',
98 // query: {
99 // orderId: b.id,
100 // orderType: b.orderType
101 // }
102 // })
103 }
104
105 function handleDownload(b) {
106 getUplaodFile({id: b.id}).then(res => {
107 window.open(fillImgUrl(res.msg), '_blank')
108 })
109 }
110
111 function Rebook(row) {
112 console.log(row)
113 if (row.orderType == 0) {
114 router.push({
115 name: 'hotelDetail',
116 params: {
117 cptId: row.activeId,
118 hotelId: row.hotelId
119 },
120 query: {
121 id: row.extId
122 }
123 })
124 } else {
125 router.push({
126 name: 'ticket',
127 params: {
128 activeId: row.activeId,
129 }
130 })
131 }
132 }
133
134 const cancel = (row) => {
135 //取消订单
136 proxy.$modal.confirm(language.value == 0 ? '确定取消订单吗 ?' : `Are you sure to cancel the order?`).then(() => {
137 return cancelOrder2(row.id).then(res => {
138 getList()
139 ElMessage({
140 message: language.value == 0 ? '操作成功' : 'Successful operation!',
141 type: 'success'
142 })
143 })
144 })
145 }
146
147 const unsubscribe = (row) => {
148 proxy.$modal.confirm(language.value == 0 ? `确定退款吗 ?` : 'Are you sure to refund?').then(() => {
149 return cancelOrder(row.id).then(res => {
150 getList()
151 ElMessage({
152 message: language.value == 0 ? '已提交退款,请等待审核!' : 'Refund has been submitted, please wait for review!',
153 type: 'success'
154 })
155 })
156 })
157 }
158
159
160 function toInvoice() {
161 router.push({
162 name: 'invoice'
163 })
164 }
165 </script>
166
167 <style lang="scss" scoped>
168 .bigMoney {
169 font-size: 24px;
170 font-family: "DIN Alternate";
171 }
172
173 .name {
174 font-size: 18px;
175 margin: 0;
176 }
177
178 .status-po {
179 position: absolute;
180 right: 0;
181 top: 0;
182 font-size: 12px;
183 color: #FFFFFF;
184
185 span {
186 border-radius: 0px 10px 0px 10px;
187 padding: 4px 10px;
188 }
189
190 .bg-danger {
191 background: #E60012;
192 }
193
194 .bg-warning {
195 background: #e89f39;
196 }
197
198 .bg-pink {
199 background: #F740A6;
200 }
201
202 .bg-primary {
203 background: var(--el-color-primary)
204 }
205
206 .bg-blue {
207 background: #00a0e9
208 }
209 }
210
211 .indexTitle {
212 margin: 20px 0 12px;
213 overflow: visible;
214 padding: 0 20px 15px;
215 border-bottom: 1px solid #e5e5e5;
216
217 .fr {
218 margin: -8px 0 0
219 }
220
221 h3 {
222 display: inline-block;
223 font-size: 16px;
224 color: var(--el-color-primary);
225 }
226 }
227
228 .item {
229 .name {
230 font-size: 18px;
231 color: #000000;
232 margin: 0 0 10px;
233 }
234
235 p {
236 margin: 8px 0 0;
237 color: #707070;
238 font-size: 14px;
239 }
240
241 margin: 0 0 20px;
242 border: 1px solid #E5E5E5;
243 border-radius: 10px;
244 position: relative;
245
246 .bbody {
247 padding: 0 15px 20px;
248 }
249
250 .title {
251 background: #F7F7F7;
252 border-bottom: 1px solid #E5E5E5;
253
254 span {
255 font-size: 14px;
256 color: #4C5359;
257 }
258 }
259
260 .title label {
261 border-radius: 5px 0 5px 0;
262 font-size: 12px;
263 color: #fff;
264 padding: 4px 10px;
265 margin-right: 10px;
266 }
267
268 .blueTag {
269 background-color: #1EC886;
270 }
271
272 .purpleTag {
273 background-color: #717bef;
274 }
275
276 .orangeTag {
277 background-color: #ff8124;
278 }
279 }
280
281 .billFoot {
282 .price {
283 width: 100%;
284 justify-content: space-between;
285 }
286 }
287
288 .billFoot .tip {
289 font-size: 24px;
290 color: #999;
291 font-weight: 500;
292 margin: 0 20px;
293 }
294
295 .status {
296 position: absolute;
297 right: 10px;
298 bottom: 60px;
299 white-space: nowrap;
300
301 .warning {
302 color: #ff8124;
303 }
304
305 .danger {
306 color: #da2a2a;
307 }
308
309 .gary {
310 color: #666;
311 }
312
313 .success {
314 color: #1EC886;
315 }
316 }
317
318 </style>
319
1 <template> 1 <template>
2 <div v-if="language === 0" class="itemBox"> 2 <div class="itemBox" v-if="language === 0">
3 <el-row :gutter="20"> 3 <el-row :gutter="20">
4 <el-col :lg="4" :sm="12" :xs="12"> 4 <el-col :sm="12" :lg="4" :xs="12">
5 <div class="item" @click="popRemark(0)"><img src="@/assets/dance/btn01.png">签证服务</div> 5 <div class="item" @click="popRemark(0)"><img src="@/assets/dance/btn01.png">签证服务</div>
6 </el-col> 6 </el-col>
7 <el-col :lg="4" :sm="12" :xs="12"> 7 <el-col :sm="12" :lg="4" :xs="12">
8 <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn02.png">酒店预订</div> 8 <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn02.png">酒店预订</div>
9 </el-col> 9 </el-col>
10 <el-col :lg="4" :sm="12" :xs="12"> 10 <el-col :sm="12" :lg="4" :xs="12">
11 <div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn03.png">接送服务</div> 11 <div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn03.png">接送服务</div>
12 </el-col> 12 </el-col>
13 <el-col :lg="4" :sm="12" :xs="12"> 13 <el-col :sm="12" :lg="4" :xs="12">
14 <div class="item" @click="popRemark(10)"><img src="@/assets/dance/btn04.png">票务服务</div> 14 <div class="item" @click="popRemark(10)"><img src="@/assets/dance/btn04.png">票务服务</div>
15 </el-col> 15 </el-col>
16 <el-col :lg="4" :sm="12" :xs="12"> 16 <el-col :sm="12" :lg="4" :xs="12">
17 <div class="item" @click="goMedia"><img src="@/assets/dance/btn07.png">媒体注册</div> 17 <div class="item" @click="goMedia"><img src="@/assets/dance/btn07.png">媒体注册</div>
18 </el-col> 18 </el-col>
19 <!-- <el-col :sm="12" :lg="4" :xs="12">--> 19 <!-- <el-col :sm="12" :lg="4" :xs="12">-->
...@@ -24,27 +24,27 @@ ...@@ -24,27 +24,27 @@
24 <!-- </el-col>--> 24 <!-- </el-col>-->
25 </el-row> 25 </el-row>
26 </div> 26 </div>
27 <div v-else class="itemBox_en"> 27 <div class="itemBox_en" v-else>
28 <el-row :gutter="20" justify="space-around"> 28 <el-row :gutter="20" justify="space-around">
29 <el-col :lg="4" :sm="12" :xs="12"> 29 <el-col :sm="12" :lg="4" :xs="12">
30 <div class="item" @click="popRemark(0)"><img src="@/assets/dance/btn01.png">Visa Services</div> 30 <div class="item" @click="popRemark(0)"><img src="@/assets/dance/btn01.png">Visa Services</div>
31 </el-col> 31 </el-col>
32 <el-col :lg="4" :sm="12" :xs="12"> 32 <el-col :sm="12" :lg="4" :xs="12">
33 <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn02.png">HOTEL RESERVATION</div> 33 <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn02.png">HOTEL RESERVATION</div>
34 </el-col> 34 </el-col>
35 <el-col :lg="4" :sm="12" :xs="12"> 35 <el-col :sm="12" :lg="4" :xs="12">
36 <div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn03.png">TRANSPORTATION RESERVATION</div> 36 <div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn03.png">TRANSPORTATION RESERVATION</div>
37 </el-col> 37 </el-col>
38 <el-col :lg="4" :sm="12" :xs="12"> 38 <el-col :sm="12" :lg="4" :xs="12">
39 <div class="item" @click="popRemark(10)"><img src="@/assets/dance/btn04.png">TICKET SERVICES</div> 39 <div class="item" @click="popRemark(10)"><img src="@/assets/dance/btn04.png">TICKET SERVICES</div>
40 </el-col> 40 </el-col>
41 <el-col :lg="4" :sm="12" :xs="12"> 41 <el-col :sm="12" :lg="4" :xs="12">
42 <div class="item" @click="goMedia"><img src="@/assets/dance/btn07.png">Media Registration</div> 42 <div class="item" @click="goMedia"><img src="@/assets/dance/btn07.png">Media Registration</div>
43 </el-col> 43 </el-col>
44 <!-- <el-col :sm="12" :lg="4" :xs="12">--> 44 <!-- <el-col :sm="12" :lg="4" :xs="12">-->
45 <!-- <div class="item" @click="goAround"><img src="@/assets/dance/btn06.png">Around Activity</div>--> 45 <!-- <div class="item" @click="goAround"><img src="@/assets/dance/btn06.png">Around Activity</div>-->
46 <!-- </el-col>--> 46 <!-- </el-col>-->
47 47
48 <!-- <el-col :sm="12" :lg="4" :xs="12">--> 48 <!-- <el-col :sm="12" :lg="4" :xs="12">-->
49 <!-- <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">live streaming</div>--> 49 <!-- <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">live streaming</div>-->
50 <!-- </el-col>--> 50 <!-- </el-col>-->
...@@ -73,6 +73,8 @@ import {getBaseInfoByActiveId} from "@/apiPc/booking"; ...@@ -73,6 +73,8 @@ import {getBaseInfoByActiveId} from "@/apiPc/booking";
73 import * as match from "@/apiPc/match"; 73 import * as match from "@/apiPc/match";
74 import useUserStore from "@/store/modules/user"; 74 import useUserStore from "@/store/modules/user";
75 75
76 const emit = defineEmits(['pickUp'])
77
76 const props = defineProps({ 78 const props = defineProps({
77 matchId: { 79 matchId: {
78 type: String, 80 type: String,
...@@ -94,12 +96,11 @@ watch(matchId, (val) => { ...@@ -94,12 +96,11 @@ watch(matchId, (val) => {
94 if (val && val != '0') { 96 if (val && val != '0') {
95 getBaseInfoByActiveId(props.matchId).then(res => { 97 getBaseInfoByActiveId(props.matchId).then(res => {
96 form.value = res.data || null 98 form.value = res.data || null
97 console.log(form.value)
98 }).catch(err => { 99 }).catch(err => {
99 console.log(err) 100 console.log(err)
100 form.value = null 101 form.value = null
101 }) 102 })
102 103
103 match.getInfoByCptId({cptId: props.matchId}).then((res) => { 104 match.getInfoByCptId({cptId: props.matchId}).then((res) => {
104 liveData.value = res.data || {} 105 liveData.value = res.data || {}
105 }) 106 })
...@@ -108,9 +109,9 @@ watch(matchId, (val) => { ...@@ -108,9 +109,9 @@ watch(matchId, (val) => {
108 109
109 const liveClick = () => { 110 const liveClick = () => {
110 if (liveData.value.videoStatus == "1") { 111 if (liveData.value.videoStatus == "1") {
111 112
112 if (language.value == 0) { 113 if (language.value == 0) {
113 114
114 window.open(liveData.value.videoUrlCn) 115 window.open(liveData.value.videoUrlCn)
115 } else { 116 } else {
116 window.open(liveData.value.videoUrlEn) 117 window.open(liveData.value.videoUrlEn)
...@@ -134,7 +135,7 @@ onMounted(() => { ...@@ -134,7 +135,7 @@ onMounted(() => {
134 135
135 function building() { 136 function building() {
136 ElMessage.warning(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') 137 ElMessage.warning(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.')
137 138 return
138 } 139 }
139 140
140 function applyInvitation() { 141 function applyInvitation() {
...@@ -148,19 +149,18 @@ function applyInvitation() { ...@@ -148,19 +149,18 @@ function applyInvitation() {
148 const user = useUserStore().user 149 const user = useUserStore().user
149 150
150 function goMedia() { 151 function goMedia() {
152 proxy.$modal.msgWarning(language.value == 0 ? '暂未开放' : 'Not yet open')
153 return;
154
151 //如果没登录 155 //如果没登录
152 if (form.value.isMedia == 0) {
153 building()
154 return
155 }
156 if (!user) { 156 if (!user) {
157 ElMessage({ 157 ElMessage({
158 type: 'warning', 158 type: 'warning',
159 message: language.value == 0 ? '请先登录' : 'Please log in first', 159 message: language.value == 0 ? '请先登录' : 'Please login first',
160 }) 160 })
161 return 161 return
162 } 162 }
163 163
164 proxy.$refs['mediaRegisterRef'].open({cptId: matchId.value}) 164 proxy.$refs['mediaRegisterRef'].open({cptId: matchId.value})
165 } 165 }
166 166
...@@ -169,42 +169,45 @@ function popRemark(type) { ...@@ -169,42 +169,45 @@ function popRemark(type) {
169 building() 169 building()
170 return 170 return
171 } 171 }
172 172
173 if (type == '0') { 173 if (type == '0') {
174 ElMessage.warning('The visa invitation letter application will be available soon. Thank you for your patience.')
175 return;
174 // 签证 176 // 签证
175 if (language.value === 0) { 177 if (language.value === 0) {
176 ElMessage.warning('请切换英文页面办理') 178 ElMessage.warning('请切换英文页面办理')
177 return 179 return
178 } else { 180 } else {
179 if (form.value.isVisa == 0) {
180 building()
181 return
182 }
183
184 if (!user) { 181 if (!user) {
185 ElMessage({ 182 ElMessage({
186 type: 'warning', 183 type: 'warning',
187 message: language.value == 0 ? '请先登录' : 'Please log in first', 184 message: language.value == 0 ? '请先登录' : 'Please login first',
188 }) 185 })
189 return 186 return
190 } 187 }
191 188
192
193 applyInvitation() 189 applyInvitation()
194 return 190 return
195 } 191 }
196 } 192 }
197 193
198 if ((form.value.isJdView == 0 && type == '1') 194 if ((form.value.isJdView == 0 && type == '1')
199 || (form.value.isCarView == 0 && type == '2') 195 || (form.value.isCarView == 0 && type == '2')
200 || (form.value.isFoodView == 0 && type == '3') 196 || (form.value.isFoodView == 0 && type == '3')
201 || (form.value.isMealView == 0 && type == '4') 197 || (form.value.isMealView == 0 && type == '4')
202 || (form.value.isPhotoView == 0 && type == '5') 198 || (form.value.isPhotoView == 0 && type == '5')
203 || (form.value.isTicketView == 0 && type == '10') 199 || (form.value.isTicketView == 0 && type == '10')
204 ) { 200 ) {
205 building() 201 building()
206 return 202 return
207 } 203 }
204
205 if (type == '2') {
206 emit("pickUp")
207 return;
208 }
209
210
208 const params = { 211 const params = {
209 matchId: props.matchId, 212 matchId: props.matchId,
210 title: language.value == 0 ? '预订说明' : 'Booking Instructions', 213 title: language.value == 0 ? '预订说明' : 'Booking Instructions',
...@@ -214,11 +217,11 @@ function popRemark(type) { ...@@ -214,11 +217,11 @@ function popRemark(type) {
214 proxy.$refs['orderRemarkRef'].open(params) 217 proxy.$refs['orderRemarkRef'].open(params)
215 } 218 }
216 219
217 function goBooking(n) { 220 function goBooking(n, f) {
218 switch (n) { 221 switch (n) {
219 case 10: 222 case 10:
220 // 票务 223 // 票务
221 224
222 // router.push({ 225 // router.push({
223 // path: `/booking/ticket/${props.matchId}`, 226 // path: `/booking/ticket/${props.matchId}`,
224 // params: {id:props.matchId}, 227 // params: {id:props.matchId},
...@@ -227,7 +230,7 @@ function goBooking(n) { ...@@ -227,7 +230,7 @@ function goBooking(n) {
227 break; 230 break;
228 case 1: 231 case 1:
229 //酒店 232 //酒店
230 router.push({path: `/booking/hotel/${props.matchId}`}) 233 router.push({path: `/booking/hotel/${props.matchId}`, query: {flag: f}})
231 break; 234 break;
232 case 2: 235 case 2:
233 //车辆 236 //车辆
...@@ -249,7 +252,7 @@ function goBooking(n) { ...@@ -249,7 +252,7 @@ function goBooking(n) {
249 } 252 }
250 </script> 253 </script>
251 254
252 <style lang="scss" scoped> 255 <style scoped lang="scss">
253 .itemBox, .itemBox_en { 256 .itemBox, .itemBox_en {
254 padding: 20px; 257 padding: 20px;
255 background: #fff; 258 background: #fff;
...@@ -273,7 +276,7 @@ function goBooking(n) { ...@@ -273,7 +276,7 @@ function goBooking(n) {
273 background-size: 100% 100%; 276 background-size: 100% 100%;
274 border-radius: 15px; 277 border-radius: 15px;
275 gap: 10px; 278 gap: 10px;
276 279
277 img { 280 img {
278 object-fit: contain; 281 object-fit: contain;
279 width: 75px; 282 width: 75px;
...@@ -286,19 +289,19 @@ function goBooking(n) { ...@@ -286,19 +289,19 @@ function goBooking(n) {
286 text-align: center; 289 text-align: center;
287 text-transform: uppercase; 290 text-transform: uppercase;
288 height: 100%; 291 height: 100%;
289 292
290 img { 293 img {
291 position: relative; 294 position: relative;
292 transition: all 0.2s; 295 transition: all 0.2s;
293 } 296 }
294 297
295 &:hover { 298 &:hover {
296 box-shadow: 0 0 10px #eee; 299 box-shadow: 0 0 10px #eee;
297 300
298 img { 301 img {
299 transform: rotateY(180deg); 302 transform: rotateY(180deg);
300 } 303 }
301 304
302 p { 305 p {
303 color: #000; 306 color: #000;
304 } 307 }
...@@ -314,7 +317,7 @@ function goBooking(n) { ...@@ -314,7 +317,7 @@ function goBooking(n) {
314 height: auto !important; 317 height: auto !important;
315 padding: 15px 0; 318 padding: 15px 0;
316 margin: 10px 0; 319 margin: 10px 0;
317 320
318 img { 321 img {
319 width: 50px; 322 width: 50px;
320 height: 50px 323 height: 50px
......
1 <template> 1 <template>
2 <el-dialog :title="title" v-model="show" width="400px" @close="close"> 2 <el-dialog :title="title" v-model="show" @close="close">
3 <div> 3 <div>
4 <h2 class="text-warning text-center" v-if="cptName">{{cptName}}</h2> 4 <h2 class="text-warning text-center" v-if="cptName">{{cptName}}</h2>
5 5
...@@ -9,6 +9,15 @@ ...@@ -9,6 +9,15 @@
9 <div v-if="type==4" class="plr20" v-html="form.reserveDesMeal"></div> 9 <div v-if="type==4" class="plr20" v-html="form.reserveDesMeal"></div>
10 <div v-if="type==5" class="plr20" v-html="form.reserveDesPhoto"></div> 10 <div v-if="type==5" class="plr20" v-html="form.reserveDesPhoto"></div>
11 <div v-if="type==10" class="plr20" v-html="form.reserveDesTitck"></div> 11 <div v-if="type==10" class="plr20" v-html="form.reserveDesTitck"></div>
12
13
14 <el-row v-if="type==1" justify="center">
15 <el-radio-group v-model="hotelType">
16 <el-radio label="0">{{language==0?'运动队酒店':'Team Hotel Reservation'}}</el-radio>
17 <el-radio label="1">{{language==0?'执委大会酒店':'Conference Hotel Reservation'}}</el-radio>
18 </el-radio-group>
19 </el-row>
20
12 </div> 21 </div>
13 <template #footer> 22 <template #footer>
14 <div class="dialog-footer text-center"> 23 <div class="dialog-footer text-center">
...@@ -31,6 +40,8 @@ const title = ref('') ...@@ -31,6 +40,8 @@ const title = ref('')
31 const cptName = ref('') 40 const cptName = ref('')
32 const show = ref(false) 41 const show = ref(false)
33 const form = ref({}) 42 const form = ref({})
43 const hotelType= ref('1')
44
34 let matchId = '' 45 let matchId = ''
35 let type = '' 46 let type = ''
36 const open = (params) => { 47 const open = (params) => {
...@@ -64,7 +75,7 @@ function ok() { ...@@ -64,7 +75,7 @@ function ok() {
64 // if(!user){ 75 // if(!user){
65 // useUserStore().setVisitor() 76 // useUserStore().setVisitor()
66 // } else { 77 // } else {
67 emit('submit', type) 78 emit('submit', type, hotelType.value)
68 // } 79 // }
69 } 80 }
70 </script> 81 </script>
......
...@@ -22,15 +22,20 @@ ...@@ -22,15 +22,20 @@
22 </div> 22 </div>
23 <div v-if="form.type?.some(v=>v==1)"> 23 <div v-if="form.type?.some(v=>v==1)">
24 <h3 class="leftboderTT">{{ language == 0 ? '接机信息' : 'Pick-up information' }}</h3> 24 <h3 class="leftboderTT">{{ language == 0 ? '接机信息' : 'Pick-up information' }}</h3>
25 <el-form-item :label="language==0?'抵达人员身份':'Role of Person-Arrival'" prop="pickUpBo.standing" 25 <!-- <el-form-item :label="language==0?'抵达人员身份':'Role of Person-Arrival'" prop="pickUpBo.standing"-->
26 required> 26 <!-- required>-->
27 <el-checkbox-group v-model="form.pickUpBo.standing"> 27 <!-- <el-checkbox-group v-model="form.pickUpBo.standing">-->
28 <el-checkbox :label="language==0?'运动员':'Athlete'" name="1"/> 28 <!-- <el-checkbox :label="language==0?'运动员':'Athlete'" name="1"/>-->
29 <el-checkbox :label="language==0?'随队人员':'Accompanying Person'" name="2"/> 29 <!-- <el-checkbox :label="language==0?'随队人员':'Accompanying Person'" name="2"/>-->
30 <el-checkbox :label="language==0?'官员':'Official'" name="3"/> 30 <!-- <el-checkbox :label="language==0?'官员':'Official'" name="3"/>-->
31 <el-checkbox :label="language==0?'其他':'Others'" name="4"/> 31 <!-- <el-checkbox :label="language==0?'其他':'Others'" name="4"/>-->
32 </el-checkbox-group> 32 <!-- </el-checkbox-group>-->
33 <!-- </el-form-item>-->
34
35 <el-form-item :label="language==0?'队伍俱乐部':'Team/Club Name'" prop="pickUpBo.standing" required>
36 <el-input v-model="form.pickUpBo.standing"/>
33 </el-form-item> 37 </el-form-item>
38
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 v-for="item in countrys"
...@@ -97,23 +102,35 @@ ...@@ -97,23 +102,35 @@
97 :is-show-tip="false" 102 :is-show-tip="false"
98 :limit="1"/> 103 :limit="1"/>
99 </el-form-item> 104 </el-form-item>
105
106 <el-form-item :label="language==0?'酒店预订单':'Hotel Reservation'" prop="pickUpBo.hotleFile" required>
107 <image-upload v-model="form.pickUpBo.hotleFile" :button-text="language==0?'上传':'Upload'"
108 :is-show-tip="false"
109 :limit="1"/>
110 </el-form-item>
111
100 </div> 112 </div>
101 113
102 <div v-if="form.type?.some(v=>v==2)"> 114 <div v-if="form.type?.some(v=>v==2)">
103 <!-- <el-form-item :label="language == 0 ? '送机信息' : 'Delivery information' ">--> 115 <!-- <el-form-item :label="language == 0 ? '送机信息' : 'Delivery information' ">-->
104 <!-- </el-form-item>--> 116 <!-- </el-form-item>-->
105 <h3 class="leftboderTT">{{ language == 0 ? '送机信息' : 'Delivery information' }}</h3> 117 <h3 class="leftboderTT">{{ language == 0 ? '送机信息' : 'Delivery information' }}</h3>
106 <el-form-item 118 <!-- <el-form-item-->
107 :label="language==0?'离会人员身份':'Role of Person-Departure'" 119 <!-- :label="language==0?'离会人员身份':'Role of Person-Departure'"-->
108 prop="downOffBo.standing" required> 120 <!-- prop="downOffBo.standing" required>-->
109 <!-- <el-input v-model="form.downOffBo.standing"/>--> 121 <!-- &lt;!&ndash; <el-input v-model="form.downOffBo.standing"/>&ndash;&gt;-->
110 <el-checkbox-group v-model="form.downOffBo.standing"> 122 <!-- <el-checkbox-group v-model="form.downOffBo.standing">-->
111 <el-checkbox :label="language==0?'运动员':'Athlete'" name="1"/> 123 <!-- <el-checkbox :label="language==0?'运动员':'Athlete'" name="1"/>-->
112 <el-checkbox :label="language==0?'随队人员':'Accompanying Person'" name="2"/> 124 <!-- <el-checkbox :label="language==0?'随队人员':'Accompanying Person'" name="2"/>-->
113 <el-checkbox :label="language==0?'官员':'Official'" name="3"/> 125 <!-- <el-checkbox :label="language==0?'官员':'Official'" name="3"/>-->
114 <el-checkbox :label="language==0?'其他':'Others'" name="4"/> 126 <!-- <el-checkbox :label="language==0?'其他':'Others'" name="4"/>-->
115 </el-checkbox-group> 127 <!-- </el-checkbox-group>-->
128 <!-- </el-form-item>-->
129
130 <el-form-item :label="language==0?'队伍俱乐部':'Team/Club Name'" prop="pickUpBo.standing" required>
131 <el-input v-model="form.pickUpBo.standing"/>
116 </el-form-item> 132 </el-form-item>
133
117 <el-form-item :label="language==0?'国家/地区':'Country/Region'" prop="downOffBo.nationalitys" required> 134 <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%;"> 135 <el-select v-model="form.downOffBo.nationalitys" filterable multiple style="width: 100%;">
119 <el-option v-for="item in countrys" 136 <el-option v-for="item in countrys"
...@@ -181,6 +198,13 @@ ...@@ -181,6 +198,13 @@
181 :is-show-tip="false" 198 :is-show-tip="false"
182 :limit="1"/> 199 :limit="1"/>
183 </el-form-item> 200 </el-form-item>
201
202 <el-form-item :label="language==0?'酒店预订单':'Hotel Reservation'" prop="pickUpBo.hotleFile" required>
203 <image-upload v-model="form.pickUpBo.hotleFile" :button-text="language==0?'上传':'Upload'"
204 :is-show-tip="false"
205 :limit="1"/>
206 </el-form-item>
207
184 </div> 208 </div>
185 209
186 <div class="text-center"> 210 <div class="text-center">
......
1 <template> 1 <template>
2 <div class="syBg"> 2 <div class="syBg">
3 <div class="banner"> 3 <div class="banner">
4 <el-carousel :autoplay="false" :interval="2000" arrow="hover" autoplay class="forPc" height="450px" 4 <el-carousel class="forPc" autoplay :interval="2000" height="450px" :autoplay="false" arrow="hover"
5 @change="carouselChange"> 5 @change="carouselChange">
6 <el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;"> 6 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id">
7 <div class="bannerItem"> 7 <div class="bannerItem">
8 <div class="h100" @click.stop="goMatch(n)"> 8 <div class="h100" @click.stop="goMatch(n)">
9 <img :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> 9 <img class="bannerImg" :src="fillImgUrl(n.bgImgUrl)">
10 <div class="box forPc" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> 10 <div class="box forPc" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;">
11 <img class="slogen" src="@/assets/logo/banner-text.png"/> 11 <img class="slogen" src="@/assets/logo/banner-text.png"/>
12 12
13 <div class="btabs"> 13 <div class="btabs">
14 <div v-for="tab in tabList" @click.stop="goMatchWithTab(n,tab.id)">{{ tab.customTitle }}</div> 14 <div v-for="tab in tabList" @click.stop="goMatchWithTab(n,tab.id)">{{ tab.customTitle }}</div>
15 </div> 15 </div>
16 16
17 17
18 <div v-if="!liveData || liveData.videoStatus==0"> 18 <div v-if="!liveData || liveData.videoStatus==0">
19 <!-- <div class="banner-count bb"></div>--> 19 <!-- <div class="banner-count bb"></div>-->
20 </div> 20 </div>
21 <div v-if="currentDateTime < liveData.videoStart&&form.isLiveVideo==1" class="banner-count" 21 <div class="banner-count" v-if="currentDateTime < liveData.videoStart" @click.stop="goliveUrl">
22 @click.stop="goliveUrl">
23 距离直播开始 22 距离直播开始
24 <van-count-down :time="liveStartTime" format="DD 天 HH 时 mm 分 ss 秒"> 23 <van-count-down :time="liveStartTime" format="DD 天 HH 时 mm 分 ss 秒">
25 <template #default="timeData"> 24 <template #default="timeData">
...@@ -43,34 +42,33 @@ ...@@ -43,34 +42,33 @@
43 </div> 42 </div>
44 <!--如果有直播--> 43 <!--如果有直播-->
45 <div v-if="liveData&& liveData.videoStatus==1" @click.stop="goliveUrl"> 44 <div v-if="liveData&& liveData.videoStatus==1" @click.stop="goliveUrl">
46 <div v-if="(currentDateTime>liveData.videoStart)&&(currentDateTime<liveData.videoEnd)" 45 <div class="banner-count bb"
47 class="banner-count bb">直播进行中 46 v-if="(currentDateTime>liveData.videoStart)&&(currentDateTime<liveData.videoEnd)">直播进行中
48 </div> 47 </div>
49 <div v-if="currentDateTime > liveData.videoEnd" class="banner-count bb">直播已结束</div> 48 <div class="banner-count bb" v-if="currentDateTime > liveData.videoEnd">直播已结束</div>
50 <!-- <div class="banner-count bb" v-if="currentDateTime < liveData.videoStart">直播即将开始</div>--> 49 <!-- <div class="banner-count bb" v-if="currentDateTime < liveData.videoStart">直播即将开始</div>-->
51 </div> 50 </div>
52 51 <div v-if="liveData&& liveData.picStatus==1" @click.stop="gopicliveUrl">
53 <div v-if="liveData&& liveData.picStatus==1&&form.isLivePic==1" @click.stop="gopicliveUrl"> 52 <div class="picliveBtn" v-if="(currentDateTime>liveData.picStart)&&(currentDateTime<liveData.picEnd)">
54 <div v-if="(currentDateTime>liveData.picStart)&&(currentDateTime<liveData.picEnd)" class="picliveBtn">
55 图片直播中 53 图片直播中
56 </div> 54 </div>
57 <div v-if="currentDateTime > liveData.picEnd" class="picliveBtn">图片直播</div> 55 <div class="picliveBtn" v-if="currentDateTime > liveData.picEnd">图片直播</div>
58 <div v-if="currentDateTime < liveData.picStart" class="picliveBtn">图片直播</div> 56 <div class="picliveBtn" v-if="currentDateTime < liveData.picStart">图片直播</div>
59 </div> 57 </div>
60 </div> 58 </div>
61 </div> 59 </div>
62 </div> 60 </div>
63 </el-carousel-item> 61 </el-carousel-item>
64 </el-carousel> 62 </el-carousel>
65 <el-carousel arrow="hover" autoplay class="forWei" height="160px" @change="carouselChange"> 63 <el-carousel class="forWei" height="160px" autoplay arrow="hover" @change="carouselChange">
66 <el-carousel-item v-for="n in maList" :key="n.id" style="height: 160px;"> 64 <el-carousel-item style="height: 160px;" v-for="n in maList" :key="n.id">
67 <div class="bannerItem" style="height:100%"> 65 <div class="bannerItem" style="height:100%">
68 <div class="h100" style="position: relative"> 66 <div class="h100" style="position: relative">
69 <img :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> 67 <img class="bannerImg" :src="fillImgUrl(n.bgImgUrl)">
70 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;"> 68 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;">
71 <!-- <img class="slogen" src="@/assets/logo/banner-text.png"/>--> 69 <!-- <img class="slogen" src="@/assets/logo/banner-text.png"/>-->
72 70
73 <div v-if="currentDateTime < liveData.videoStart" class="banner-count" @click="goliveUrl"> 71 <div class="banner-count" v-if="currentDateTime < liveData.videoStart" @click="goliveUrl">
74 距离直播开始 72 距离直播开始
75 <van-count-down :time="liveStartTime" format="DD 天 HH 时 mm 分 ss 秒"> 73 <van-count-down :time="liveStartTime" format="DD 天 HH 时 mm 分 ss 秒">
76 <template #default="timeData"> 74 <template #default="timeData">
...@@ -93,10 +91,10 @@ ...@@ -93,10 +91,10 @@
93 </van-count-down> 91 </van-count-down>
94 </div> 92 </div>
95 <div v-if="liveData&& liveData.videoStatus==1" @click.stop="goliveUrl"> 93 <div v-if="liveData&& liveData.videoStatus==1" @click.stop="goliveUrl">
96 <div v-if="(currentDateTime>liveData.videoStart)&&(currentDateTime<liveData.videoEnd)" 94 <div class="banner-count"
97 class="banner-count">直播进行中 95 v-if="(currentDateTime>liveData.videoStart)&&(currentDateTime<liveData.videoEnd)">直播进行中
98 </div> 96 </div>
99 <div v-if="currentDateTime > liveData.videoEnd" class="banner-count">直播已结束</div> 97 <div class="banner-count" v-if="currentDateTime > liveData.videoEnd">直播已结束</div>
100 </div> 98 </div>
101 </div> 99 </div>
102 </div> 100 </div>
...@@ -104,18 +102,18 @@ ...@@ -104,18 +102,18 @@
104 </el-carousel-item> 102 </el-carousel-item>
105 </el-carousel> 103 </el-carousel>
106 </div> 104 </div>
107 105
108 <div class="mb30"> 106 <div class="mb30">
109 <home-weather-bar/> 107 <home-weather-bar/>
110 </div> 108 </div>
111 109
112 <div class="box"> 110 <div class="box">
113 <HomeQuick :cpt-name="matchData?.name" :match-id="matchData?.id"/> 111 <HomeQuick :match-id="matchData?.id" :cpt-name="matchData?.name" @pick-up="handlePickup"/>
114 </div> 112 </div>
115 113
116 <div id="part0" class="box part"> 114 <div id="part0" class="box part">
117 <el-row :gutter="20"> 115 <el-row :gutter="20">
118 <el-col :lg="12" :sm="24"> 116 <el-col :sm="24" :lg="12">
119 <div class="indexTitle"> 117 <div class="indexTitle">
120 <h3 class="leftboderTT">通知公告</h3> 118 <h3 class="leftboderTT">通知公告</h3>
121 <a class="more" href="#/notice">MORE</a> 119 <a class="more" href="#/notice">MORE</a>
...@@ -127,7 +125,7 @@ ...@@ -127,7 +125,7 @@
127 </div> 125 </div>
128 </el-card> 126 </el-card>
129 </el-col> 127 </el-col>
130 <el-col :lg="12" :sm="24"> 128 <el-col :sm="24" :lg="12">
131 <div class="indexTitle"> 129 <div class="indexTitle">
132 <h3 class="leftboderTT">竞赛日程</h3> 130 <h3 class="leftboderTT">竞赛日程</h3>
133 <a class="more" href="#/saiC">MORE</a> 131 <a class="more" href="#/saiC">MORE</a>
...@@ -137,12 +135,12 @@ ...@@ -137,12 +135,12 @@
137 <home-calendar/> 135 <home-calendar/>
138 </el-card> 136 </el-card>
139 </el-col> 137 </el-col>
140 138
141 </el-row> 139 </el-row>
142 </div> 140 </div>
143 <!-- 新闻 --> 141 <!-- 新闻 -->
144 <div id="part1" class="part"> 142 <div id="part1" class="part">
145 143
146 <div class="box"> 144 <div class="box">
147 <div class="indexTitle"> 145 <div class="indexTitle">
148 <h3 class="leftboderTT">新闻资讯</h3> 146 <h3 class="leftboderTT">新闻资讯</h3>
...@@ -150,9 +148,9 @@ ...@@ -150,9 +148,9 @@
150 </div> 148 </div>
151 <el-row :gutter="20"> 149 <el-row :gutter="20">
152 <el-col 150 <el-col
153 v-for="(n,index) in newest2" 151 v-for="(n,index) in newest2"
154 :key="n.id" :lg="8" :sm="8" 152 :key="n.id" :xs="24" :sm="8"
155 :xs="24" 153 :lg="8"
156 > 154 >
157 <div class="activeItem" @click="goDetail(n)"> 155 <div class="activeItem" @click="goDetail(n)">
158 <div class="imgbox"> 156 <div class="imgbox">
...@@ -215,9 +213,9 @@ ...@@ -215,9 +213,9 @@
215 <el-col :lg="16"> 213 <el-col :lg="16">
216 <div class="swiperPic"> 214 <div class="swiperPic">
217 <swiper 215 <swiper
218 :autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic" 216 class="swiper-wrapper" :modules="modules" :slides-per-view="3" :space-between="20"
219 :slides-per-view="3" 217 :navigation="navigationPic"
220 :space-between="20" class="swiper-wrapper" 218 :autoplay="true" :loop="true"
221 > 219 >
222 <swiper-slide v-for="(n,i) in picList" :key="i"> 220 <swiper-slide v-for="(n,i) in picList" :key="i">
223 <div class="picbox" @click="goDetail(n)"> 221 <div class="picbox" @click="goDetail(n)">
...@@ -231,7 +229,7 @@ ...@@ -231,7 +229,7 @@
231 </el-col> 229 </el-col>
232 </el-row> 230 </el-row>
233 <el-row class="news-l-r"> 231 <el-row class="news-l-r">
234 <el-col v-for="(n,index) in livelist" v-show="index>0" :lg="8"> 232 <el-col v-for="(n,index) in livelist" :lg="8" v-show="index>0">
235 <div class="item" style="padding: 0;margin: 20px 0 0" @click="goDetail(n)"> 233 <div class="item" style="padding: 0;margin: 20px 0 0" @click="goDetail(n)">
236 <div class="imgbox"> 234 <div class="imgbox">
237 <i class="playIcon"></i> 235 <i class="playIcon"></i>
...@@ -249,7 +247,7 @@ ...@@ -249,7 +247,7 @@
249 </el-card> 247 </el-card>
250 </div> 248 </div>
251 </div> 249 </div>
252 250
253 <div class="box"> 251 <div class="box">
254 <el-row :gutter="20"> 252 <el-row :gutter="20">
255 <el-col :lg="12"> 253 <el-col :lg="12">
...@@ -263,9 +261,9 @@ ...@@ -263,9 +261,9 @@
263 </div> 261 </div>
264 <div class="mt30 text-center"> 262 <div class="mt30 text-center">
265 <a class="btn-black" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img 263 <a class="btn-black" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img
266 src="@/assets/v1/more.png" style="filter: brightness(2);height: 8px"/></a> 264 style="filter: brightness(2);height: 8px" src="@/assets/v1/more.png"/></a>
267 </div> 265 </div>
268 266
269 </div> 267 </div>
270 </el-col> 268 </el-col>
271 <el-col :lg="12"> 269 <el-col :lg="12">
...@@ -285,20 +283,20 @@ ...@@ -285,20 +283,20 @@
285 </div> 283 </div>
286 <div class="email"> 284 <div class="email">
287 <h4>邮箱</h4> 285 <h4>邮箱</h4>
288 <p>info@wdsfwuxicenter.com</p> 286 <p>office@2025wtcwuxi.com</p>
289 </div> 287 </div>
290 </div> 288 </div>
291 </div> 289 </div>
292 </el-col> 290 </el-col>
293 </el-row> 291 </el-row>
294 </div> 292 </div>
295 293
296 <div class="box"> 294 <div class="box">
297 <div class="indexTitle"> 295 <div class="indexTitle">
298 <h3 class="leftboderTT">合作伙伴</h3> 296 <h3 class="leftboderTT">合作伙伴</h3>
299 </div> 297 </div>
300 <el-row :gutter="20"> 298 <el-row :gutter="20">
301 <el-col v-for="p in partners" :lg="6" :sm="6" :xs="12"> 299 <el-col :lg="6" :sm="6" :xs="12" v-for="p in partners">
302 <div class="logobox"> 300 <div class="logobox">
303 <img :src="fillImgUrl(JSON.parse(p.picUrl))"> 301 <img :src="fillImgUrl(JSON.parse(p.picUrl))">
304 </div> 302 </div>
...@@ -321,10 +319,8 @@ import {Autoplay, Navigation} from 'swiper' ...@@ -321,10 +319,8 @@ import {Autoplay, Navigation} from 'swiper'
321 import 'swiper/css' 319 import 'swiper/css'
322 import {dayjs, ElMessage} from 'element-plus' 320 import {dayjs, ElMessage} from 'element-plus'
323 import * as match from "@/apiPc/match"; 321 import * as match from "@/apiPc/match";
324 // import {getAboutUs, getInfoByCptId, getppInfo, getZNList} from "@/apiPc/match"; 322 import {getAboutUs, getInfoByCptId, getppInfo, getZNList} from "@/apiPc/match";
325 import HomeWeatherBar from "@/viewsPc/components/homeWeatherBar"; 323 import HomeWeatherBar from "@/viewsPc/components/homeWeatherBar";
326 import {getBaseInfoByActiveId} from "@/apiPc/booking";
327
328 324
329 const modules = [Autoplay, Navigation] 325 const modules = [Autoplay, Navigation]
330 const navigationPic = ref({ 326 const navigationPic = ref({
...@@ -356,7 +352,6 @@ const partners = ref([]) ...@@ -356,7 +352,6 @@ const partners = ref([])
356 const liveData = ref({}) 352 const liveData = ref({})
357 const aboutUsContent = ref('') 353 const aboutUsContent = ref('')
358 const liveStartTime = ref(0) 354 const liveStartTime = ref(0)
359 const form = ref({})
360 355
361 onMounted(() => { 356 onMounted(() => {
362 init() 357 init()
...@@ -364,44 +359,38 @@ onMounted(() => { ...@@ -364,44 +359,38 @@ onMounted(() => {
364 359
365 const init = () => { 360 const init = () => {
366 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 361 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
367 time.value = dayjs('2025-07-17 07:00:00').diff(today, 'millisecond') 362 time.value = dayjs('2024-07-17 07:00:00').diff(today, 'millisecond')
368 etime.value = dayjs('2025-07-22 12:00:00').diff(today, 'millisecond') 363 etime.value = dayjs('2024-07-22 12:00:00').diff(today, 'millisecond')
369 getNewsListById({ 364 getNewsListById({
370 pageSize: time.value > 0 ? 3 : 4, 365 pageSize: time.value > 0 ? 3 : 4,
371 pageNum: 1, 366 pageNum: 1,
372 sortId: '30000006' 367 sortId: '30000006'
373 } 368 }
374 ).then(res => { 369 ).then(res => {
375 livelist.value = res.rows 370 livelist.value = res.rows
376 }) 371 })
377 getNewsListById({ 372 getNewsListById({
378 pageSize: 5, 373 pageSize: 5,
379 pageNum: 1, 374 pageNum: 1,
380 sortId: '30000007' 375 sortId: '30000007'
381 } 376 }
382 ).then(res => { 377 ).then(res => {
383 picList.value = res.rows 378 picList.value = res.rows
384 }) 379 })
385 getNewsList({ 380 getNewsList({
386 pageSize: 3, 381 pageSize: 3,
387 pageNum: 1, 382 pageNum: 1,
388 language: 1, 383 language: 1,
389 code: '1000' 384 code: '1000'
390 } 385 }
391 ).then(res => { 386 ).then(res => {
392 newest2.value = res.rows 387 newest2.value = res.rows
393 }) 388 })
394 389
395 getNewsListById({pageSize: 6, pageNum: 1, sortId: '20000000'}).then(res => { 390 getNewsListById({pageSize: 6, pageNum: 1, sortId: '20000000'}).then(res => {
396 newsList.value = res.rows 391 newsList.value = res.rows
397 }) 392 })
398 393
399 async function getMatchSet(id) {
400 const res = await getBaseInfoByActiveId(id)
401 form.value = res.data ?? null
402 console.log(form.value)
403 }
404
405 match.getMaList({topFlag: 1}).then((res) => { 394 match.getMaList({topFlag: 1}).then((res) => {
406 maList.value = res.rows 395 maList.value = res.rows
407 for (let n of maList.value) { 396 for (let n of maList.value) {
...@@ -419,9 +408,8 @@ const init = () => { ...@@ -419,9 +408,8 @@ const init = () => {
419 } 408 }
420 matchData.value = maList.value[0] 409 matchData.value = maList.value[0]
421 getMatchInfo(matchData.value.id) 410 getMatchInfo(matchData.value.id)
422 getMatchSet(matchData.value.id)
423 }) 411 })
424 412
425 match.getLabelList().then(res => { 413 match.getLabelList().then(res => {
426 tabList.value = res.data 414 tabList.value = res.data
427 }) 415 })
...@@ -526,22 +514,28 @@ const handlePickup = () => { ...@@ -526,22 +514,28 @@ const handlePickup = () => {
526 } 514 }
527 515
528 const goliveUrl = () => { 516 const goliveUrl = () => {
529 if (liveData.value.videoStatus == "1") { 517 ElMessage.warning('暂未开放')
530 window.open(liveData.value.videoUrlCn) 518
531 } else { 519 // if (liveData.value.videoStatus == "1") {
532 ElMessage.warning('暂无直播') 520 // window.open(liveData.value.videoUrlCn)
533 } 521 // } else {
522 // ElMessage.warning('暂无直播')
523 // }
534 } 524 }
535 const gopicliveUrl = () => { 525 const gopicliveUrl = () => {
526 proxy.$modal.msgWarning('暂未开放')
527 return
528
536 if (liveData.value.picStatus == "1") { 529 if (liveData.value.picStatus == "1") {
537 window.open(liveData.value.picUrlCn) 530 window.open(liveData.value.picUrlCn)
538 } else { 531 } else {
539 ElMessage.warning('暂无直播') 532 ElMessage.warning('暂无直播')
540 } 533 }
541 } 534 }
535
542 </script> 536 </script>
543 537
544 <style lang="scss" scoped> 538 <style scoped lang="scss">
545 .syBg { 539 .syBg {
546 background: url("@/assets/dance/logo_l.png") no-repeat bottom left, 540 background: url("@/assets/dance/logo_l.png") no-repeat bottom left,
547 url("@/assets/dance/logo_r1.png") no-repeat bottom right; 541 url("@/assets/dance/logo_r1.png") no-repeat bottom right;
...@@ -552,7 +546,7 @@ const gopicliveUrl = () => { ...@@ -552,7 +546,7 @@ const gopicliveUrl = () => {
552 position: absolute; 546 position: absolute;
553 bottom: 60px; 547 bottom: 60px;
554 gap: 10px; 548 gap: 10px;
555 549
556 div { 550 div {
557 color: #fff; 551 color: #fff;
558 background-color: rgba(0, 0, 0, 0.5); 552 background-color: rgba(0, 0, 0, 0.5);
...@@ -561,7 +555,7 @@ const gopicliveUrl = () => { ...@@ -561,7 +555,7 @@ const gopicliveUrl = () => {
561 border-radius: 50px; 555 border-radius: 50px;
562 padding: 6px 20px; 556 padding: 6px 20px;
563 } 557 }
564 558
565 div:hover { 559 div:hover {
566 cursor: pointer; 560 cursor: pointer;
567 background: #fff; 561 background: #fff;
...@@ -580,18 +574,18 @@ const gopicliveUrl = () => { ...@@ -580,18 +574,18 @@ const gopicliveUrl = () => {
580 .zn-Box { 574 .zn-Box {
581 .bgbg { 575 .bgbg {
582 padding: 5%; 576 padding: 5%;
583 577
584 img { 578 img {
585 margin: 5% 0 579 margin: 5% 0
586 } 580 }
587 } 581 }
588 582
589 .itemBox { 583 .itemBox {
590 padding: 20px 0; 584 padding: 20px 0;
591 } 585 }
592 586
593 border-radius: 15px; 587 border-radius: 15px;
594 588
595 .zn-btn { 589 .zn-btn {
596 background: #FFFFFF; 590 background: #FFFFFF;
597 font-size: 18px; 591 font-size: 18px;
...@@ -601,8 +595,8 @@ const gopicliveUrl = () => { ...@@ -601,8 +595,8 @@ const gopicliveUrl = () => {
601 display: inline-flex; 595 display: inline-flex;
602 align-items: center; 596 align-items: center;
603 } 597 }
604 598
605 599
606 } 600 }
607 601
608 .app-main { 602 .app-main {
...@@ -619,12 +613,12 @@ const gopicliveUrl = () => { ...@@ -619,12 +613,12 @@ const gopicliveUrl = () => {
619 height: 450px; 613 height: 450px;
620 background: #000; 614 background: #000;
621 position: relative; 615 position: relative;
622 616
623 .slogen { 617 .slogen {
624 position: relative; 618 position: relative;
625 top: 130px; 619 top: 130px;
626 } 620 }
627 621
628 .picliveBtn { 622 .picliveBtn {
629 position: absolute; 623 position: absolute;
630 cursor: pointer; 624 cursor: pointer;
...@@ -636,7 +630,7 @@ const gopicliveUrl = () => { ...@@ -636,7 +630,7 @@ const gopicliveUrl = () => {
636 border: 2px solid rgba(255, 255, 255, 0.5); 630 border: 2px solid rgba(255, 255, 255, 0.5);
637 border-radius: 50px; 631 border-radius: 50px;
638 } 632 }
639 633
640 .banner-count { 634 .banner-count {
641 cursor: pointer; 635 cursor: pointer;
642 position: absolute; 636 position: absolute;
...@@ -651,7 +645,7 @@ const gopicliveUrl = () => { ...@@ -651,7 +645,7 @@ const gopicliveUrl = () => {
651 flex-wrap: nowrap; 645 flex-wrap: nowrap;
652 right: 5%; 646 right: 5%;
653 color: #fff; 647 color: #fff;
654 648
655 .van-count-down { 649 .van-count-down {
656 display: flex; 650 display: flex;
657 color: #fff; 651 color: #fff;
...@@ -659,7 +653,7 @@ const gopicliveUrl = () => { ...@@ -659,7 +653,7 @@ const gopicliveUrl = () => {
659 width: 360px; 653 width: 360px;
660 font-size: 41px; 654 font-size: 41px;
661 } 655 }
662 656
663 .block { 657 .block {
664 color: #fff; 658 color: #fff;
665 text-align: center; 659 text-align: center;
...@@ -667,7 +661,7 @@ const gopicliveUrl = () => { ...@@ -667,7 +661,7 @@ const gopicliveUrl = () => {
667 font-size: 41px; 661 font-size: 41px;
668 font-family: DIN Alternate; 662 font-family: DIN Alternate;
669 } 663 }
670 664
671 .colon { 665 .colon {
672 color: #fff; 666 color: #fff;
673 display: block; 667 display: block;
...@@ -675,27 +669,27 @@ const gopicliveUrl = () => { ...@@ -675,27 +669,27 @@ const gopicliveUrl = () => {
675 font-size: 20px; 669 font-size: 20px;
676 } 670 }
677 } 671 }
678 672
679 .bb { 673 .bb {
680 width: 580px; 674 width: 580px;
681 justify-content: center; 675 justify-content: center;
682 height: 100px; 676 height: 100px;
683 font-size: 30px; 677 font-size: 30px;
684 } 678 }
685 679
686 .banner-count.bb:hover { 680 .banner-count.bb:hover {
687 box-shadow: 0 0 20px #453DEA; 681 box-shadow: 0 0 20px #453DEA;
688 border-radius: 100px; 682 border-radius: 100px;
689 background: #000 683 background: #000
690 } 684 }
691 685
692 .box { 686 .box {
693 position: absolute; 687 position: absolute;
694 height: 100%; 688 height: 100%;
695 left: 0; 689 left: 0;
696 right: 0; 690 right: 0;
697 } 691 }
698 692
699 h3 { 693 h3 {
700 position: absolute; 694 position: absolute;
701 color: #fff; 695 color: #fff;
...@@ -704,7 +698,7 @@ const gopicliveUrl = () => { ...@@ -704,7 +698,7 @@ const gopicliveUrl = () => {
704 bottom: 50px; 698 bottom: 50px;
705 font-size: 3vw; 699 font-size: 3vw;
706 } 700 }
707 701
708 video { 702 video {
709 width: 100%; 703 width: 100%;
710 height: 100%; 704 height: 100%;
...@@ -719,26 +713,26 @@ const gopicliveUrl = () => { ...@@ -719,26 +713,26 @@ const gopicliveUrl = () => {
719 .banner { 713 .banner {
720 position: relative; 714 position: relative;
721 margin: 0 0 30px; 715 margin: 0 0 30px;
722 716
723 :deep(.el-carousel__arrow) { 717 :deep(.el-carousel__arrow) {
724 border-radius: 0; 718 border-radius: 0;
725 719
726 .el-icon { 720 .el-icon {
727 color: transparent; 721 color: transparent;
728 } 722 }
729 723
730 &:hover { 724 &:hover {
731 filter: brightness(1.5) 725 filter: brightness(1.5)
732 } 726 }
733 } 727 }
734 728
735 :deep(.el-carousel__arrow--left) { 729 :deep(.el-carousel__arrow--left) {
736 background: url("@/assets/images/prev2@2x.png") no-repeat center; 730 background: url("@/assets/images/prev2@2x.png") no-repeat center;
737 width: 78px; 731 width: 78px;
738 height: 45px; 732 height: 45px;
739 background-size: contain; 733 background-size: contain;
740 } 734 }
741 735
742 :deep(.el-carousel__arrow--right) { 736 :deep(.el-carousel__arrow--right) {
743 background: url("@/assets/images/next2@2x.png") no-repeat center; 737 background: url("@/assets/images/next2@2x.png") no-repeat center;
744 width: 78px; 738 width: 78px;
...@@ -759,7 +753,7 @@ const gopicliveUrl = () => { ...@@ -759,7 +753,7 @@ const gopicliveUrl = () => {
759 .ggbond { 753 .ggbond {
760 height: 230px; 754 height: 230px;
761 position: relative; 755 position: relative;
762 756
763 img { 757 img {
764 height: 100%; 758 height: 100%;
765 object-fit: cover; 759 object-fit: cover;
...@@ -777,17 +771,17 @@ const gopicliveUrl = () => { ...@@ -777,17 +771,17 @@ const gopicliveUrl = () => {
777 position: relative; 771 position: relative;
778 border-radius: 10px; 772 border-radius: 10px;
779 overflow: hidden; 773 overflow: hidden;
780 774
781 .imgbox { 775 .imgbox {
782 background: linear-gradient(0, #C8AAFC, #fff) 776 background: linear-gradient(0, #C8AAFC, #fff)
783 } 777 }
784 778
785 img { 779 img {
786 height: 350px; 780 height: 350px;
787 width: 100%; 781 width: 100%;
788 object-fit: cover; 782 object-fit: cover;
789 } 783 }
790 784
791 h3 { 785 h3 {
792 color: #fff; 786 color: #fff;
793 background: url("@/assets/dance/name_bg.png") no-repeat center; 787 background: url("@/assets/dance/name_bg.png") no-repeat center;
...@@ -800,7 +794,7 @@ const gopicliveUrl = () => { ...@@ -800,7 +794,7 @@ const gopicliveUrl = () => {
800 width: 100%; 794 width: 100%;
801 bottom: 30px; 795 bottom: 30px;
802 } 796 }
803 797
804 p { 798 p {
805 text-align: center; 799 text-align: center;
806 margin: 25px 0 0; 800 margin: 25px 0 0;
...@@ -811,7 +805,7 @@ const gopicliveUrl = () => { ...@@ -811,7 +805,7 @@ const gopicliveUrl = () => {
811 @media screen and (max-width: 1650px) { 805 @media screen and (max-width: 1650px) {
812 .teacher { 806 .teacher {
813 height: 320px; 807 height: 320px;
814 808
815 .imgbox { 809 .imgbox {
816 img { 810 img {
817 height: 260px 811 height: 260px
...@@ -824,7 +818,7 @@ const gopicliveUrl = () => { ...@@ -824,7 +818,7 @@ const gopicliveUrl = () => {
824 .teacher { 818 .teacher {
825 height: 450px; 819 height: 450px;
826 margin: 0 0 20px; 820 margin: 0 0 20px;
827 821
828 .imgbox { 822 .imgbox {
829 img { 823 img {
830 height: 390px 824 height: 390px
...@@ -837,7 +831,7 @@ const gopicliveUrl = () => { ...@@ -837,7 +831,7 @@ const gopicliveUrl = () => {
837 .teacher { 831 .teacher {
838 height: 400px; 832 height: 400px;
839 margin: 0 0 20px; 833 margin: 0 0 20px;
840 834
841 .imgbox { 835 .imgbox {
842 img { 836 img {
843 height: 340px 837 height: 340px
...@@ -850,7 +844,7 @@ const gopicliveUrl = () => { ...@@ -850,7 +844,7 @@ const gopicliveUrl = () => {
850 .teacher { 844 .teacher {
851 height: 400px; 845 height: 400px;
852 margin: 0 0 20px; 846 margin: 0 0 20px;
853 847
854 .imgbox { 848 .imgbox {
855 img { 849 img {
856 height: 260px 850 height: 260px
...@@ -865,7 +859,7 @@ const gopicliveUrl = () => { ...@@ -865,7 +859,7 @@ const gopicliveUrl = () => {
865 background-size: cover; 859 background-size: cover;
866 padding: 40px 60px; 860 padding: 40px 60px;
867 position: relative; 861 position: relative;
868 862
869 .content { 863 .content {
870 font-size: 18px; 864 font-size: 18px;
871 line-height: 2.2; 865 line-height: 2.2;
...@@ -874,7 +868,7 @@ const gopicliveUrl = () => { ...@@ -874,7 +868,7 @@ const gopicliveUrl = () => {
874 text-align: left; 868 text-align: left;
875 text-indent: 2em; 869 text-indent: 2em;
876 } 870 }
877 871
878 .shadowbox { 872 .shadowbox {
879 position: absolute; 873 position: absolute;
880 left: 0; 874 left: 0;
...@@ -883,7 +877,7 @@ const gopicliveUrl = () => { ...@@ -883,7 +877,7 @@ const gopicliveUrl = () => {
883 width: 100%; 877 width: 100%;
884 background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)); 878 background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
885 } 879 }
886 880
887 .btn-lineG { 881 .btn-lineG {
888 } 882 }
889 } 883 }
...@@ -895,7 +889,7 @@ const gopicliveUrl = () => { ...@@ -895,7 +889,7 @@ const gopicliveUrl = () => {
895 padding: 1px; 889 padding: 1px;
896 position: relative; 890 position: relative;
897 display: flex; 891 display: flex;
898 892
899 .content { 893 .content {
900 background: #fff; 894 background: #fff;
901 width: 60%; 895 width: 60%;
...@@ -907,33 +901,33 @@ const gopicliveUrl = () => { ...@@ -907,33 +901,33 @@ const gopicliveUrl = () => {
907 bottom: 0; 901 bottom: 0;
908 margin: auto; 902 margin: auto;
909 } 903 }
910 904
911 div { 905 div {
912 padding-left: 60px; 906 padding-left: 60px;
913 } 907 }
914 908
915 .phone { 909 .phone {
916 background: url("@/assets/dance/map01.png") no-repeat left; 910 background: url("@/assets/dance/map01.png") no-repeat left;
917 background-size: 30px; 911 background-size: 30px;
918 } 912 }
919 913
920 .address { 914 .address {
921 background: url("@/assets/dance/map02.png") no-repeat left; 915 background: url("@/assets/dance/map02.png") no-repeat left;
922 background-size: 30px; 916 background-size: 30px;
923 margin: 50px 0; 917 margin: 50px 0;
924 } 918 }
925 919
926 .email { 920 .email {
927 background: url("@/assets/dance/map03.png") no-repeat left; 921 background: url("@/assets/dance/map03.png") no-repeat left;
928 background-size: 30px; 922 background-size: 30px;
929 } 923 }
930 924
931 h4 { 925 h4 {
932 margin: 0; 926 margin: 0;
933 font-size: 16px; 927 font-size: 16px;
934 color: #AAAAAA; 928 color: #AAAAAA;
935 } 929 }
936 930
937 p { 931 p {
938 margin: 13px 0 0; 932 margin: 13px 0 0;
939 } 933 }
...@@ -944,7 +938,7 @@ const gopicliveUrl = () => { ...@@ -944,7 +938,7 @@ const gopicliveUrl = () => {
944 height: 180px; 938 height: 180px;
945 border-radius: 10px; 939 border-radius: 10px;
946 margin: 0 0 30px; 940 margin: 0 0 30px;
947 941
948 img { 942 img {
949 width: 100%; 943 width: 100%;
950 height: 100%; 944 height: 100%;
...@@ -957,7 +951,7 @@ const gopicliveUrl = () => { ...@@ -957,7 +951,7 @@ const gopicliveUrl = () => {
957 position: relative; 951 position: relative;
958 height: 100%; 952 height: 100%;
959 padding: 20px 45px; 953 padding: 20px 45px;
960 954
961 .picprev { 955 .picprev {
962 position: absolute; 956 position: absolute;
963 left: 5px; 957 left: 5px;
...@@ -966,12 +960,12 @@ const gopicliveUrl = () => { ...@@ -966,12 +960,12 @@ const gopicliveUrl = () => {
966 margin: auto; 960 margin: auto;
967 height: 33px; 961 height: 33px;
968 cursor: pointer; 962 cursor: pointer;
969 963
970 &:hover { 964 &:hover {
971 filter: brightness(2) 965 filter: brightness(2)
972 } 966 }
973 } 967 }
974 968
975 .picnext { 969 .picnext {
976 position: absolute; 970 position: absolute;
977 right: 5px; 971 right: 5px;
...@@ -980,7 +974,7 @@ const gopicliveUrl = () => { ...@@ -980,7 +974,7 @@ const gopicliveUrl = () => {
980 margin: auto; 974 margin: auto;
981 height: 33px; 975 height: 33px;
982 cursor: pointer; 976 cursor: pointer;
983 977
984 &:hover { 978 &:hover {
985 filter: brightness(2) 979 filter: brightness(2)
986 } 980 }
...@@ -991,7 +985,7 @@ const gopicliveUrl = () => { ...@@ -991,7 +985,7 @@ const gopicliveUrl = () => {
991 .teacher { 985 .teacher {
992 height: 460px; 986 height: 460px;
993 margin: 0 0 20px; 987 margin: 0 0 20px;
994 988
995 img { 989 img {
996 height: 400px 990 height: 400px
997 } 991 }
...@@ -1002,11 +996,11 @@ const gopicliveUrl = () => { ...@@ -1002,11 +996,11 @@ const gopicliveUrl = () => {
1002 .box { 996 .box {
1003 width: 94% 997 width: 94%
1004 } 998 }
1005 999
1006 1000
1007 .calendarList { 1001 .calendarList {
1008 padding: 0; 1002 padding: 0;
1009 1003
1010 ul { 1004 ul {
1011 li { 1005 li {
1012 margin: 10px 1006 margin: 10px
...@@ -1022,7 +1016,7 @@ const gopicliveUrl = () => { ...@@ -1022,7 +1016,7 @@ const gopicliveUrl = () => {
1022 .teacher { 1016 .teacher {
1023 height: 320px; 1017 height: 320px;
1024 margin: 0 0 20px; 1018 margin: 0 0 20px;
1025 1019
1026 img { 1020 img {
1027 height: 260px 1021 height: 260px
1028 } 1022 }
...@@ -1034,17 +1028,17 @@ const gopicliveUrl = () => { ...@@ -1034,17 +1028,17 @@ const gopicliveUrl = () => {
1034 div { 1028 div {
1035 padding-left: 40px; 1029 padding-left: 40px;
1036 } 1030 }
1037 1031
1038 .content { 1032 .content {
1039 width: 80%; 1033 width: 80%;
1040 left: 10%; 1034 left: 10%;
1041 padding: 10px 20px 0 20px; 1035 padding: 10px 20px 0 20px;
1042 } 1036 }
1043 1037
1044 .address { 1038 .address {
1045 margin: 30px 0; 1039 margin: 30px 0;
1046 } 1040 }
1047 1041
1048 p { 1042 p {
1049 text-align: left; 1043 text-align: left;
1050 word-break: break-all; 1044 word-break: break-all;
...@@ -1059,19 +1053,19 @@ const gopicliveUrl = () => { ...@@ -1059,19 +1053,19 @@ const gopicliveUrl = () => {
1059 width: auto; 1053 width: auto;
1060 left: 0; 1054 left: 0;
1061 right: 0; 1055 right: 0;
1062 1056
1063 .van-count-down { 1057 .van-count-down {
1064 margin: 30px 0 0; 1058 margin: 30px 0 0;
1065 } 1059 }
1066 } 1060 }
1067 1061
1068 .bgbg { 1062 .bgbg {
1069 text-align: center; 1063 text-align: center;
1070 1064
1071 img { 1065 img {
1072 max-width: 100%; 1066 max-width: 100%;
1073 } 1067 }
1074 1068
1075 h1 { 1069 h1 {
1076 text-align: center 1070 text-align: center
1077 } 1071 }
...@@ -1084,7 +1078,7 @@ const gopicliveUrl = () => { ...@@ -1084,7 +1078,7 @@ const gopicliveUrl = () => {
1084 z-index: 2; 1078 z-index: 2;
1085 background: #F04035; 1079 background: #F04035;
1086 padding: 2px 4px; 1080 padding: 2px 4px;
1087 1081
1088 &::after { 1082 &::after {
1089 content: ''; 1083 content: '';
1090 width: 0; 1084 width: 0;
...@@ -1095,12 +1089,12 @@ const gopicliveUrl = () => { ...@@ -1095,12 +1089,12 @@ const gopicliveUrl = () => {
1095 border-top: 24px solid #F04035; 1089 border-top: 24px solid #F04035;
1096 border-right: 15px solid transparent; 1090 border-right: 15px solid transparent;
1097 } 1091 }
1098 1092
1099 .van-count-down { 1093 .van-count-down {
1100 display: flex; 1094 display: flex;
1101 color: #fff; 1095 color: #fff;
1102 font-size: 14px; 1096 font-size: 14px;
1103 1097
1104 .block { 1098 .block {
1105 color: #fff; 1099 color: #fff;
1106 text-align: center; 1100 text-align: center;
...@@ -1116,7 +1110,7 @@ const gopicliveUrl = () => { ...@@ -1116,7 +1110,7 @@ const gopicliveUrl = () => {
1116 height: 56px; 1110 height: 56px;
1117 justify-content: space-between; 1111 justify-content: space-between;
1118 cursor: pointer; 1112 cursor: pointer;
1119 1113
1120 h3 { 1114 h3 {
1121 font-weight: 400; 1115 font-weight: 400;
1122 margin: 0; 1116 margin: 0;
...@@ -1127,13 +1121,13 @@ const gopicliveUrl = () => { ...@@ -1127,13 +1121,13 @@ const gopicliveUrl = () => {
1127 font-size: 18px; 1121 font-size: 18px;
1128 color: #030303; 1122 color: #030303;
1129 } 1123 }
1130 1124
1131 span { 1125 span {
1132 font-weight: 400; 1126 font-weight: 400;
1133 font-size: 14px; 1127 font-size: 14px;
1134 color: #B4B6B8; 1128 color: #B4B6B8;
1135 } 1129 }
1136 1130
1137 &:hover { 1131 &:hover {
1138 background: #F7F8FC; 1132 background: #F7F8FC;
1139 } 1133 }
...@@ -1148,12 +1142,12 @@ const gopicliveUrl = () => { ...@@ -1148,12 +1142,12 @@ const gopicliveUrl = () => {
1148 } 1142 }
1149 .newline { 1143 .newline {
1150 height: 40px; 1144 height: 40px;
1151 1145
1152 h3 { 1146 h3 {
1153 width: 70%; 1147 width: 70%;
1154 font-size: 14px; 1148 font-size: 14px;
1155 } 1149 }
1156 1150
1157 span { 1151 span {
1158 font-size: 12px; 1152 font-size: 12px;
1159 } 1153 }
......
1 <template> 1 <template>
2 <div class="syBg"> 2 <div class="syBg">
3 <div class="banner"> 3 <div class="banner">
4 <el-carousel :autoplay="false" :interval="2000" arrow="hover" autoplay class="forPc" height="450px" 4 <el-carousel height="450px" autoplay :interval="2000" class="forPc" :autoplay="false" arrow="hover" @change="carouselChange">
5 @change="carouselChange"> 5 <el-carousel-item style="height: 450px;" v-for="n in maList" :key="n.id">
6 <el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;">
7 <div class="bannerItem"> 6 <div class="bannerItem">
8 <div class="h100" @click.stop="goMatch(n)"> 7 <div class="h100" @click.stop="goMatch(n)">
9 <img :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> 8 <img class="bannerImg" :src="fillImgUrl(n.bgImgUrl)">
10 <div class="box" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> 9 <div class="box" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;">
11 <img class="slogen" src="@/assets/logo/banner-text.png"/> 10 <img class="slogen" src="@/assets/logo/banner-text.png"/>
12 11
13 <div class="btabs"> 12 <div class="btabs">
14 <div v-for="tab in tabList" @click.stop="goMatchWithTab(n,tab.id)">{{ tab.customTitle }}</div> 13 <div v-for="tab in tabList" @click.stop="goMatchWithTab(n,tab.id)">{{tab.customTitle}}</div>
15 </div> 14 </div>
16 <div v-if="currentDateTime < liveData.videoStart&&form.isLiveVideo==1" class="banner-count" 15 <div class="banner-count" v-if="currentDateTime < liveData.videoStart" @click.stop="goliveUrl">
17 @click.stop="goliveUrl">
18 Live Countdown 16 Live Countdown
19 <van-count-down :time="liveStartTime" format="DD 天 HH 时 mm 分 ss 秒"> 17 <van-count-down :time="liveStartTime" format="DD 天 HH 时 mm 分 ss 秒">
20 <template #default="timeData"> 18 <template #default="timeData">
...@@ -36,13 +34,12 @@ ...@@ -36,13 +34,12 @@
36 </template> 34 </template>
37 </van-count-down> 35 </van-count-down>
38 </div> 36 </div>
39 37
40 <div v-if="liveData&& liveData.videoStatus==1&&form.isLivePic==1" @click.stop="goliveUrl"> 38 <div v-if="liveData&& liveData.videoStatus==1" @click.stop="goliveUrl">
41 <div v-if="(currentDateTime>liveData.videoStart)&&(currentDateTime<liveData.videoEnd)" 39 <div class="banner-count" v-if="(currentDateTime>liveData.videoStart)&&(currentDateTime<liveData.videoEnd)">
42 class="banner-count">
43 Live Now 40 Live Now
44 </div> 41 </div>
45 <div v-if="currentDateTime > liveData.videoEnd" class="banner-count"> 42 <div class="banner-count" v-if="currentDateTime > liveData.videoEnd">
46 Live End 43 Live End
47 </div> 44 </div>
48 </div> 45 </div>
...@@ -51,40 +48,36 @@ ...@@ -51,40 +48,36 @@
51 </div> 48 </div>
52 </el-carousel-item> 49 </el-carousel-item>
53 </el-carousel> 50 </el-carousel>
54 <el-carousel arrow="hover" autoplay class="forWei" height="160px" @change="carouselChange"> 51 <el-carousel class="forWei" height="160px" autoplay arrow="hover" @change="carouselChange">
55 <el-carousel-item v-for="n in maList" :key="n.id" style="height: 160px;"> 52 <el-carousel-item style="height: 160px;" v-for="n in maList" :key="n.id">
56 <div class="bannerItem" style="height:100%"> 53 <div class="bannerItem" style="height:100%">
57 <div class="h100" style="position: relative"> 54 <div class="h100" style="position: relative">
58 <img :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> 55 <img class="bannerImg" :src="fillImgUrl(n.bgImgUrl)">
59 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;"> 56 <div style="position: absolute;left: 0;right: 0;bottom: 0;margin: auto;">
60 <div v-if="currentDateTime < liveData.videoStart" class="banner-count" @click="goliveUrl"> 57 <div class="banner-count" v-if="currentDateTime < liveData.videoStart" @click="goliveUrl">
61 Live Countdown 58 Live Countdown
62 <van-count-down :time="liveStartTime" format="DD 天 HH 时 mm 分 ss 秒"> 59 <van-count-down :time="liveStartTime" format="DD 天 HH 时 mm 分 ss 秒">
63 <template #default="timeData"> 60 <template #default="timeData">
64 <div class="block">{{ timeData.days }} 61 <div class="block">{{ timeData.days }}
65 <span class="colon">Days</span> 62 <span class="colon">Days</span>
66 </div> 63 </div>
67
68 <div class="block">{{ timeData.hours }} 64 <div class="block">{{ timeData.hours }}
69 <span class="colon">Hrs</span> 65 <span class="colon">Hrs</span>
70 </div> 66 </div>
71
72 <div class="block">{{ timeData.minutes }} 67 <div class="block">{{ timeData.minutes }}
73 <span class="colon">Min</span> 68 <span class="colon">Min</span>
74 </div> 69 </div>
75
76 <div class="block">{{ timeData.seconds }} 70 <div class="block">{{ timeData.seconds }}
77 <span class="colon">Sec</span> 71 <span class="colon">Sec</span>
78 </div> 72 </div>
79 </template> 73 </template>
80 </van-count-down> 74 </van-count-down>
81 </div> 75 </div>
82 <div v-if="liveData&& liveData.videoStatus==1&&form.isLivePic==1" @click.stop="goliveUrl"> 76 <div v-if="liveData&& liveData.videoStatus==1" @click.stop="goliveUrl">
83 <div v-if="(currentDateTime>liveData.videoStart)&&(currentDateTime<liveData.videoEnd)" 77 <div class="banner-count" v-if="(currentDateTime>liveData.videoStart)&&(currentDateTime<liveData.videoEnd)">
84 class="banner-count">
85 Live Now 78 Live Now
86 </div> 79 </div>
87 <div v-if="currentDateTime > liveData.videoEnd" class="banner-count"> 80 <div class="banner-count" v-if="currentDateTime > liveData.videoEnd">
88 Live End 81 Live End
89 </div> 82 </div>
90 </div> 83 </div>
...@@ -94,19 +87,19 @@ ...@@ -94,19 +87,19 @@
94 </el-carousel-item> 87 </el-carousel-item>
95 </el-carousel> 88 </el-carousel>
96 </div> 89 </div>
97 90
98 <div class="mb30"> 91 <div class="mb30">
99 <home-weather-bar :lang="1"/> 92 <home-weather-bar :lang="1"/>
100 </div> 93 </div>
101 94
102 <div class="box"> 95 <div class="box">
103 <HomeQuick :cpt-name="matchData?.name" :match-id="matchData?.id"/> 96 <HomeQuick :match-id="matchData?.id" :cpt-name="matchData?.name" @pick-up="handlePickup"/>
104 </div> 97 </div>
105 98
106 99
107 <div id="part0" class="box part"> 100 <div id="part0" class="box part">
108 <el-row :gutter="20"> 101 <el-row :gutter="20">
109 <el-col :lg="12" :sm="24"> 102 <el-col :sm="24" :lg="12">
110 <div class="indexTitle"> 103 <div class="indexTitle">
111 <h3 class="leftboderTT">NOTICEBOARD</h3> 104 <h3 class="leftboderTT">NOTICEBOARD</h3>
112 <a class="more" href="#/notice">MORE</a> 105 <a class="more" href="#/notice">MORE</a>
...@@ -114,11 +107,11 @@ ...@@ -114,11 +107,11 @@
114 <el-card :body-style="{'padding':'10px 20px 18px'}"> 107 <el-card :body-style="{'padding':'10px 20px 18px'}">
115 <div v-for="(n,index) in newsList" :key="index" class="newline" @click="goDetail(n)"> 108 <div v-for="(n,index) in newsList" :key="index" class="newline" @click="goDetail(n)">
116 <h3>{{ n.name }}</h3> 109 <h3>{{ n.name }}</h3>
117 <span class="date">{{ n.belongTime }}</span> 110 <span class="date">{{n.belongTime}}</span>
118 </div> 111 </div>
119 </el-card> 112 </el-card>
120 </el-col> 113 </el-col>
121 <el-col :lg="12" :sm="24"> 114 <el-col :sm="24" :lg="12">
122 <div class="indexTitle"> 115 <div class="indexTitle">
123 <h3 class="leftboderTT">COMPETITION SCHEDULE</h3> 116 <h3 class="leftboderTT">COMPETITION SCHEDULE</h3>
124 <a class="more" @click="gosaiC">MORE</a> 117 <a class="more" @click="gosaiC">MORE</a>
...@@ -128,12 +121,12 @@ ...@@ -128,12 +121,12 @@
128 <home-calendar/> 121 <home-calendar/>
129 </el-card> 122 </el-card>
130 </el-col> 123 </el-col>
131 124
132 </el-row> 125 </el-row>
133 </div> 126 </div>
134 <!-- NEWS --> 127 <!-- NEWS -->
135 <div id="part1" class="part"> 128 <div id="part1" class="part">
136 129
137 <div class="box"> 130 <div class="box">
138 <div class="indexTitle"> 131 <div class="indexTitle">
139 <h3 class="leftboderTT">NEWS</h3> 132 <h3 class="leftboderTT">NEWS</h3>
...@@ -142,20 +135,20 @@ ...@@ -142,20 +135,20 @@
142 <el-row :gutter="20"> 135 <el-row :gutter="20">
143 <el-col 136 <el-col
144 v-for="(n,index) in newest2" 137 v-for="(n,index) in newest2"
145 :key="n.id" :lg="8" :sm="8" 138 :key="n.id" :xs="24" :sm="8"
146 :xs="24" 139 :lg="8"
147 > 140 >
148 <div class="activeItem" @click="goNewsDetail(n)"> 141 <div class="activeItem" @click="goNewsDetail(n)">
149 <div class="imgbox"> 142 <div class="imgbox">
150 <img :src="fillImgUrl_webSite(n.picUrl)"> 143 <img :src="fillImgUrl_webSite(n.picUrl)">
151 </div> 144 </div>
152 <div class="info"> 145 <div class="info">
153 <div class="date"> 146 <div class="date">
154 {{ n.sortName }} | {{ n.belongTime }} 147 {{ n.sortName }} | {{ n.belongTime }}
155 </div> 148 </div>
156 <h3 class="esp">{{ n.name }}</h3> 149 <h3 class="esp">{{ n.name }}</h3>
157 <p class="esp_2" style="height: 40px"> 150 <p class="esp_2" style="height: 40px">
158 {{ n.subName }} 151 {{n.subName}}
159 </p> 152 </p>
160 <a>DETAIL</a> 153 <a>DETAIL</a>
161 </div> 154 </div>
...@@ -183,14 +176,14 @@ ...@@ -183,14 +176,14 @@
183 </a> 176 </a>
184 </el-col> 177 </el-col>
185 <el-col :lg="16"> 178 <el-col :lg="16">
186 179
187 <div class="swiperPic forPx"> 180 <div class="swiperPic forPx">
188 <swiper 181 <swiper
189 :autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic" 182 class="swiper-wrapper" :modules="modules" :slides-per-view="3" :space-between="20"
190 :slides-per-view="3" 183 :navigation="navigationPic"
191 :space-between="20" class="swiper-wrapper" 184 :autoplay="true" :loop="true"
192 > 185 >
193 <swiper-slide v-for="(n,i) in picList" :key="i"> 186 <swiper-slide v-for="(n,i) in picList" :key="i" >
194 <div class="picbox" @click="goNewsDetail(n)"> 187 <div class="picbox" @click="goNewsDetail(n)">
195 <img :src="fillImgUrl_webSite(n.picUrl)"> 188 <img :src="fillImgUrl_webSite(n.picUrl)">
196 </div> 189 </div>
...@@ -199,30 +192,29 @@ ...@@ -199,30 +192,29 @@
199 <div class="picprev"><img src="@/assets/dance/prev1.png"></div> 192 <div class="picprev"><img src="@/assets/dance/prev1.png"></div>
200 <div class="picnext"><img src="@/assets/dance/next1.png"></div> 193 <div class="picnext"><img src="@/assets/dance/next1.png"></div>
201 </div> 194 </div>
202 195
203 </el-col> 196 </el-col>
204 </el-row> 197 </el-row>
205 <el-row class="news-l-r"> 198 <el-row class="news-l-r">
206 <el-col v-for="(n,index) in livelist" v-show="index>0" :lg="8"> 199 <el-col v-for="(n,index) in livelist" v-show="index>0" :lg="8">
207 <div class="item" style="padding: 0;margin: 20px 0 0" @click="goNewsDetail(n)"> 200 <div class="item" style="padding: 0;margin: 20px 0 0" @click="goNewsDetail(n)">
208 <div class="imgbox"> 201 <div class="imgbox">
209 <i class="playIcon"/> 202 <i class="playIcon" />
210 <img :src="fillImgUrl_webSite(n.picUrl)"></div> 203 <img :src="fillImgUrl_webSite(n.picUrl)"></div>
211 <div class="info"> 204 <div class="info">
212 <div class="text-primary small-size"> 205 <div class="text-primary small-size">
213 <span v-if="n.subName">{{ n.subName + ' | ' }}</span> 206 <span v-if="n.subName">{{n.subName + ' | '}}</span>
214 {{ n.belongTime }} 207 {{ n.belongTime }}</div>
215 </div>
216 <h2 class="esp_2">{{ n.name }}</h2> 208 <h2 class="esp_2">{{ n.name }}</h2>
217 </div> 209 </div>
218 </div> 210 </div>
219 </el-col> 211 </el-col>
220 </el-row> 212 </el-row>
221 </el-card> 213 </el-card>
222 214
223 </div> 215 </div>
224 </div> 216 </div>
225 217
226 <div hidden> 218 <div hidden>
227 <div class="box"> 219 <div class="box">
228 <div class="indexTitle"> 220 <div class="indexTitle">
...@@ -230,8 +222,8 @@ ...@@ -230,8 +222,8 @@
230 </div> 222 </div>
231 <el-row :gutter="20"> 223 <el-row :gutter="20">
232 <el-col 224 <el-col
233 v-for="n in personList" :key="n.name" :lg="4" :sm="8" :xl="4" 225 v-for="n in personList" :key="n.name" :sm="8" :xl="4" :xs="12"
234 :xs="12" 226 :lg="4"
235 > 227 >
236 <div class="teacher"> 228 <div class="teacher">
237 <div class="imgbox"><img :src="n.src"></div> 229 <div class="imgbox"><img :src="n.src"></div>
...@@ -242,7 +234,7 @@ ...@@ -242,7 +234,7 @@
242 </el-row> 234 </el-row>
243 </div> 235 </div>
244 </div> 236 </div>
245 237
246 <div class="box"> 238 <div class="box">
247 <el-row :gutter="20"> 239 <el-row :gutter="20">
248 <el-col :lg="12"> 240 <el-col :lg="12">
...@@ -253,19 +245,18 @@ ...@@ -253,19 +245,18 @@
253 <div class="aboutBox"> 245 <div class="aboutBox">
254 <div class="content"> 246 <div class="content">
255 <div v-html="aboutUsContent"></div> 247 <div v-html="aboutUsContent"></div>
256 <div class="shadowbox"/> 248 <div class="shadowbox" />
257 </div> 249 </div>
258 <div class="mt30 text-center"> 250 <div class="mt30 text-center">
259 <a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">Learn more 251 <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>
260 <img src="@/assets/v1/more.png" style="filter: brightness(2);height: 8px;margin-left: 10px"></a>
261 </div> 252 </div>
262 253
263 </div> 254 </div>
264 </el-col> 255 </el-col>
265 <el-col :lg="12"> 256 <el-col :lg="12">
266 <div class="indexTitle"> 257 <div class="indexTitle">
267 <h3 class="leftboderTT">CONTACT US</h3> 258 <h3 class="leftboderTT">CONTACT US</h3>
268 <a class="more" href="#/about/wuDao" style="filter: brightness(10)">MORE</a> 259 <a class="more" style="filter: brightness(10)" href="#/about/wuDao">MORE</a>
269 </div> 260 </div>
270 <div class="mapBox"> 261 <div class="mapBox">
271 <div class="content"> 262 <div class="content">
...@@ -279,40 +270,40 @@ ...@@ -279,40 +270,40 @@
279 </div> 270 </div>
280 <div class="email"> 271 <div class="email">
281 <h4>Email</h4> 272 <h4>Email</h4>
282 <p>info@wdsfwuxicenter.com</p> 273 <p>office@2025wtcwuxi.com</p>
283 </div> 274 </div>
284 </div> 275 </div>
285 </div> 276 </div>
286 </el-col> 277 </el-col>
287 </el-row> 278 </el-row>
288 </div> 279 </div>
289 280
290 <div class="box"> 281 <div class="box">
291 <div class="indexTitle"> 282 <div class="indexTitle">
292 <h3 class="leftboderTT">PARTNERS</h3> 283 <h3 class="leftboderTT">PARTNERS</h3>
293 </div> 284 </div>
294 <el-row :gutter="20"> 285 <el-row :gutter="20">
295 <el-col v-for="p in partners" :lg="6" :sm="12" :xs="6"> 286 <el-col :lg="6" :sm="12" :xs="6" v-for="p in partners">
296 <div class="logobox"> 287 <div class="logobox">
297 <img :src="fillImgUrl(JSON.parse(p.picUrl))"> 288 <img :src="fillImgUrl(JSON.parse(p.picUrl))">
298 </div> 289 </div>
299 </el-col> 290 </el-col>
300 </el-row> 291 </el-row>
301 </div> 292 </div>
302 293
303 294
304 </div> 295 </div>
305 </template> 296 </template>
306 <script setup> 297 <script setup>
307 import {ref, nextTick, onMounted, watch} from 'vue' 298 import { ref, nextTick, onMounted, watch } from 'vue'
308 import {getCurrentInstance} from '@vue/runtime-core' 299 import { getCurrentInstance } from '@vue/runtime-core'
309 import {getNewsListById, getNewsList, getWeather} from '@/apiPc/webSite' 300 import { getNewsListById, getNewsList,getWeather} from '@/apiPc/webSite'
310 import {useRouter} from 'vue-router' 301 import { useRouter } from 'vue-router'
311 import _ from 'lodash' 302 import _ from 'lodash'
312 import HomeQuick from '@/viewsPc/components/homeQuick' 303 import HomeQuick from '@/viewsPc/components/homeQuick'
313 import HomeCalendar from '@/viewsPc/components/homeCalendar' 304 import HomeCalendar from '@/viewsPc/components/homeCalendar'
314 import {Swiper, SwiperSlide} from 'swiper/vue' 305 import { Swiper, SwiperSlide } from 'swiper/vue'
315 import {Autoplay, Navigation} from 'swiper' 306 import { Autoplay, Navigation } from 'swiper'
316 import 'swiper/css' 307 import 'swiper/css'
317 import {dayjs, ElMessage} from 'element-plus' 308 import {dayjs, ElMessage} from 'element-plus'
318 import * as match from "@/apiPc/match"; 309 import * as match from "@/apiPc/match";
...@@ -320,26 +311,24 @@ import HomeWeatherBar from "@/viewsPc/components/homeWeatherBar"; ...@@ -320,26 +311,24 @@ import HomeWeatherBar from "@/viewsPc/components/homeWeatherBar";
320 311
321 312
322 import {rankList} from '@/assets/js/data' 313 import {rankList} from '@/assets/js/data'
323 import {getBaseInfoByActiveId} from "/@/apiPc/booking";
324
325 const modules = [Autoplay, Navigation] 314 const modules = [Autoplay, Navigation]
326 const navigationPic = ref({ 315 const navigationPic = ref({
327 nextEl: '.picnext', 316 nextEl: '.picnext',
328 prevEl: '.picprev' 317 prevEl: '.picprev'
329 }) 318 })
330 const router = useRouter() 319 const router = useRouter()
331 const {proxy} = getCurrentInstance() 320 const { proxy } = getCurrentInstance()
332 const emit = defineEmits(['pop', 'backNumber', 'schSearch']) 321 const emit = defineEmits(['pop','backNumber','schSearch'])
333 const time = ref(0) 322 const time = ref(0)
334 const etime = ref(0) 323 const etime = ref(0)
335 324
336 const personList = ref([ 325 const personList = ref([
337 {name: 'Wolfgang Eliasch', pp: 'Chairperson for Latin AUT', src: '/img/1.png'}, 326 { name: 'Wolfgang Eliasch', pp: 'Chairperson for Latin AUT', src: '/img/1.png' },
338 {name: 'Nenad Jeftic', pp: 'Chairperson for Standard SRB', src: '/img/2.png'}, 327 { name: 'Nenad Jeftic', pp: 'Chairperson for Standard SRB', src: '/img/2.png' },
339 {name: 'Dorel Bagiu', pp: 'ROU', src: '/img/3.png'}, 328 { name: 'Dorel Bagiu', pp: 'ROU', src: '/img/3.png' },
340 {name: 'Eduard Korotin', pp: ' EST', src: '/img/4.png'}, 329 { name: 'Eduard Korotin', pp: ' EST', src: '/img/4.png' },
341 {name: 'Ana Cristina Silva', pp: 'POR', src: '/img/5.png'}, 330 { name: 'Ana Cristina Silva', pp: 'POR', src: '/img/5.png'},
342 {name: 'Dallas Leslie Williams', pp: 'Scrutineer AUS', src: '/img/6.png'} 331 { name: 'Dallas Leslie Williams', pp: 'Scrutineer AUS', src: '/img/6.png' }
343 ]) 332 ])
344 const activeNews = ref(0) 333 const activeNews = ref(0)
345 const banners = ref([]) 334 const banners = ref([])
...@@ -363,7 +352,7 @@ const newsList = ref([]) ...@@ -363,7 +352,7 @@ const newsList = ref([])
363 const currentDateTime = dayjs().format('YYYY-MM-DD HH:mm:ss') 352 const currentDateTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
364 const liveStartTime = ref(0) 353 const liveStartTime = ref(0)
365 const liveData = ref({}) 354 const liveData = ref({})
366 const form = ref({}) 355
367 const matchData = ref({}) 356 const matchData = ref({})
368 onMounted(() => { 357 onMounted(() => {
369 init() 358 init()
...@@ -371,68 +360,53 @@ onMounted(() => { ...@@ -371,68 +360,53 @@ onMounted(() => {
371 360
372 const init = () => { 361 const init = () => {
373 var today = dayjs().format('YYYY-MM-DD HH:mm:ss') 362 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
374 getNewsListById({pageSize: 6, pageNum: 1, sortId: '20000001'}).then(res => { 363 getNewsListById({pageSize: 6, pageNum: 1,sortId: '20000001'}).then(res => {
375 newsList.value = res.rows 364 newsList.value = res.rows
376 }) 365 })
377 getNewsListById( 366 getNewsListById(
378 { 367 { pageSize: 4,
379 pageSize: 4,
380 pageNum: 1, 368 pageNum: 1,
381 sortId: '30000008' 369 sortId: '30000008' }
382 }
383 ).then(res => { 370 ).then(res => {
384 livelist.value = res.rows 371 livelist.value = res.rows
385 }) 372 })
386 getNewsListById({ 373 getNewsListById({ pageSize: 5,
387 pageSize: 5,
388 pageNum: 1, 374 pageNum: 1,
389 sortId: '30000009' 375 sortId: '30000009' }
390 }
391 ).then(res => { 376 ).then(res => {
392 picList.value = res.rows 377 picList.value = res.rows
393 }) 378 })
394 getNewsList({ 379 getNewsList({ pageSize: 3,
395 pageSize: 3, 380 pageNum: 1,
396 pageNum: 1, 381 language:2,
397 language: 2, 382 code: '1000' }
398 code: '1000'
399 }
400 ).then(res => { 383 ).then(res => {
401 newest2.value = res.rows 384 newest2.value = res.rows
402 }) 385 })
403 match.getMaList({topFlag: 1}).then((res) => { 386 match.getMaList({topFlag:1}).then((res) => {
404 maList.value = res.rows 387 maList.value = res.rows
405 matchData.value = maList.value[0] 388 matchData.value = maList.value[0]
406 getMatchInfo(matchData.value.id) 389 getMatchInfo(matchData.value.id)
407 getMatchSet(matchData.value.id)
408 }) 390 })
409 match.getLabelList().then(res => { 391 match.getLabelList().then(res=> {
410 tabList.value = res.data 392 tabList.value = res.data
411 }) 393 })
412 394
413 getpartners() 395 getpartners()
414 } 396 }
415 const getMatchInfo = (id) => { 397 const getMatchInfo = (id) => {
416 match.getInfoByCptId({cptId: id}).then((res) => { 398 match.getInfoByCptId({ cptId:id }).then((res) => {
417 liveData.value = res.data || {} 399 liveData.value = res.data || {}
418 console.log(333333, liveData.value) 400 if(liveData.value.videoStart){
419 if (liveData.value.videoStart) {
420 liveStartTime.value = dayjs(liveData.value.videoStart).diff(currentDateTime.value, 'millisecond') 401 liveStartTime.value = dayjs(liveData.value.videoStart).diff(currentDateTime.value, 'millisecond')
421 } 402 }
422 }) 403 })
423 } 404 }
424
425 async function getMatchSet(id) {
426 const res = await getBaseInfoByActiveId(id)
427 form.value = res.data ?? null
428 console.log(form.value)
429 }
430
431 const getpartners = () => { 405 const getpartners = () => {
432 match.getAboutUs().then((res) => { 406 match.getAboutUs().then((res) => {
433 aboutUsContent.value = res.data.contextEn 407 aboutUsContent.value = res.data.contextEn
434 }) 408 })
435 match.getZNList({sortId: '2000', language: 2}).then((res) => { 409 match.getZNList({sortId:'2000',language:2}).then((res) => {
436 partners.value = res.rows 410 partners.value = res.rows
437 }) 411 })
438 } 412 }
...@@ -485,48 +459,49 @@ const building = () => { ...@@ -485,48 +459,49 @@ const building = () => {
485 const goGuide = () => { 459 const goGuide = () => {
486 router.push({ 460 router.push({
487 path: `/guide`, 461 path: `/guide`,
488 query: { 462 query:{
489 index: 8 463 index:8
490 } 464 }
491 }) 465 })
492 } 466 }
493 const popMaster = () => { 467 const popMaster = () => {
494 var params = { 468 var params = {
495 cptId: matchData.value.id 469 cptId:matchData.value.id
496 } 470 }
497 emit('pop', params) 471 emit('pop',params)
498 } 472 }
499 const backNumberSearch = () => { 473 const backNumberSearch = () => {
500 var params = { 474 var params = {
501 cptId: matchData.value.id 475 cptId:matchData.value.id
502 } 476 }
503 emit('backNumber', params) 477 emit('backNumber',params)
504 } 478 }
505 const schSearchSearch = () => { 479 const schSearchSearch = () => {
506 var params = { 480 var params = {
507 cptId: matchData.value.id 481 cptId:matchData.value.id
508 } 482 }
509 emit('schSearch', params) 483 emit('schSearch',params)
510 } 484 }
511 const handlePickup = () => { 485 const handlePickup=()=>{
512 const params = { 486 const params={
513 cptId: matchData.value.id 487 cptId :matchData.value.id
514 } 488 }
515 emit('pickup', params) 489 emit('pickup',params)
516 } 490 }
517 491
518 const goliveUrl = () => { 492 const goliveUrl = () => {
519 if (liveData.value.videoStatus == "1") { 493 ElMessage.warning('This function is temporarily closed.' )
520 window.open(liveData.value.videoUrlCn) 494 // if (liveData.value.videoStatus=="1") {
521 } else { 495 // window.open(liveData.value.videoUrlCn)
522 ElMessage.warning('No live') 496 // } else {
523 } 497 // ElMessage.warning('No live' )
498 // }
524 } 499 }
525 const gopicliveUrl = () => { 500 const gopicliveUrl = () => {
526 if (liveData.value.picStatus == "1") { 501 if (liveData.value.picStatus=="1") {
527 window.open(liveData.value.picUrlCn) 502 window.open(liveData.value.picUrlCn)
528 } else { 503 } else {
529 ElMessage.warning('No live') 504 ElMessage.warning( 'No live' )
530 } 505 }
531 } 506 }
532 507
...@@ -541,110 +516,46 @@ const goDetail = (n) => { ...@@ -541,110 +516,46 @@ const goDetail = (n) => {
541 } 516 }
542 </script> 517 </script>
543 518
544 <style lang="scss" scoped> 519 <style scoped lang="scss">
545 .syBg { 520 .syBg{
546 background: url("@/assets/dance/logo_l.png") no-repeat left 98%, 521 background: url("@/assets/dance/logo_l.png") no-repeat left 98%,
547 url("@/assets/dance/logo_r1.png") no-repeat right 98%; 522 url("@/assets/dance/logo_r1.png") no-repeat right 98%;
548 background-size: 30%; 523 background-size: 30%;
549 } 524 }
550 525 .btabs{display: flex;position: absolute;bottom: 60px;gap: 10px;
551 .btabs { 526 div{color: #fff; background-color: rgba(0, 0, 0, 0.5);
552 display: flex; 527 backdrop-filter: blur(4px);border: 2px solid #9ba6d4;border-radius: 50px;
553 position: absolute; 528 padding:6px 20px;
554 bottom: 60px;
555 gap: 10px;
556
557 div {
558 color: #fff;
559 background-color: rgba(0, 0, 0, 0.5);
560 backdrop-filter: blur(4px);
561 border: 2px solid #9ba6d4;
562 border-radius: 50px;
563 padding: 6px 20px;
564 }
565
566 div:hover {
567 cursor: pointer;
568 background: #fff;
569 color: #000;
570 border: 2px solid #fff;
571 } 529 }
530 div:hover{cursor: pointer;background: #fff;color: #000;border:2px solid #fff;}
572 } 531 }
573 532 .zn-bg{background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC);
574 .zn-bg { 533 border-radius: 15px;}
575 background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC); 534 .zn-Box{background-size: contain;position: relative;overflow: hidden;
576 border-radius: 15px; 535 .bbbg{position: absolute;width: 100%;height: 100%;object-fit: cover;}
577 } 536 .bgbg{height: 100%;
578 537 padding: 5%;display: flex;
579 .zn-Box {
580 background-size: contain;
581 position: relative;
582 overflow: hidden;
583
584 .bbbg {
585 position: absolute;
586 width: 100%;
587 height: 100%;
588 object-fit: cover;
589 }
590
591 .bgbg {
592 height: 100%;
593 padding: 5%;
594 display: flex;
595 flex-direction: column; 538 flex-direction: column;
596 justify-content: center; 539 justify-content: center;
597 540 img{margin: 5% 0}
598 img {
599 margin: 5% 0
600 }
601 } 541 }
602 542 .itemBox{
603 .itemBox {
604 padding: 20px 40px; 543 padding: 20px 40px;
605 544 p{margin: 0;height: 40px;line-height: 20px;display: flex;align-items: center;}
606 p {
607 margin: 0;
608 height: 40px;
609 line-height: 20px;
610 display: flex;
611 align-items: center;
612 }
613 } 545 }
614
615 border-radius: 15px; 546 border-radius: 15px;
616 547 .zn-btn{background: #FFFFFF;text-transform: uppercase;
617 .zn-btn { 548 font-size: 16px; width: fit-content; margin: 5px 5px 5px 0;
618 background: #FFFFFF;
619 text-transform: uppercase;
620 font-size: 16px;
621 width: fit-content;
622 margin: 5px 5px 5px 0;
623 color: #453DEA; 549 color: #453DEA;
624 border-radius: 23px; 550 border-radius: 23px;padding: 10px 20px;display: inline-flex;align-items: center;}
625 padding: 10px 20px; 551 .item{box-shadow: 0px 0px 21px 0px rgba(41,23,101,0.14);margin: 40px 0 0;
626 display: inline-flex; 552 display: flex;align-items: center;text-align: center;
627 align-items: center; 553 font-size: 18px; flex-direction: column;padding: 35px 10px 20px;
628 } 554 background:url("@/assets/dance/znbb.png") no-repeat left #FFFFFF;
629
630 .item {
631 box-shadow: 0px 0px 21px 0px rgba(41, 23, 101, 0.14);
632 margin: 40px 0 0;
633 display: flex;
634 align-items: center;
635 text-align: center;
636 font-size: 18px;
637 flex-direction: column;
638 padding: 35px 10px 20px;
639 background: url("@/assets/dance/znbb.png") no-repeat left #FFFFFF;
640 background-size: cover; 555 background-size: cover;
641 position: relative; 556 position: relative;
642 border-radius: 15px; 557 border-radius: 15px;
643 558 img{position: absolute;top: -30px}
644 img {
645 position: absolute;
646 top: -30px
647 }
648 } 559 }
649 } 560 }
650 561
...@@ -657,29 +568,14 @@ const goDetail = (n) => { ...@@ -657,29 +568,14 @@ const goDetail = (n) => {
657 clear: both; 568 clear: both;
658 overflow: hidden; 569 overflow: hidden;
659 } 570 }
660 571 .banner-pp{ position: absolute; bottom: 40%;right: 5%;width: 200px;}
661 .banner-pp {
662 position: absolute;
663 bottom: 40%;
664 right: 5%;
665 width: 200px;
666 }
667 572
668 .bannerItem { 573 .bannerItem {
669 height: 450px; 574 height: 450px;
670 background: #000; 575 background: #000;position: relative;
671 position: relative; 576 .slogen{position: relative;top: 130px;}
672 577 .banner-count{position: absolute;padding: 20px 40px;
673 .slogen { 578 font-size: 20px;align-items: center;
674 position: relative;
675 top: 130px;
676 }
677
678 .banner-count {
679 position: absolute;
680 padding: 20px 40px;
681 font-size: 20px;
682 align-items: center;
683 overflow: hidden; 579 overflow: hidden;
684 background: url("@/assets/dance/time_bg.png") no-repeat center; 580 background: url("@/assets/dance/time_bg.png") no-repeat center;
685 background-size: 100% 100%; 581 background-size: 100% 100%;
...@@ -689,56 +585,29 @@ const goDetail = (n) => { ...@@ -689,56 +585,29 @@ const goDetail = (n) => {
689 //border-image-width:4px; 585 //border-image-width:4px;
690 //border-image-outset:4px; 586 //border-image-outset:4px;
691 //background: rgba(0,0,0,0.3); 587 //background: rgba(0,0,0,0.3);
692 bottom: 40%; 588 bottom: 40%;display: flex;flex-wrap: nowrap;
693 display: flex;
694 flex-wrap: nowrap;
695 right: 5%; 589 right: 5%;
696 color: #fff; 590 color: #fff;
697 591 .van-count-down{display: flex;color: #fff;margin: 0 0 0 20px;
698 .van-count-down {
699 display: flex;
700 color: #fff;
701 margin: 0 0 0 20px;
702 width: 360px; 592 width: 360px;
593 font-size: 41px;}
594 .block{ color: #fff;text-align: center;width: 3em;
703 font-size: 41px; 595 font-size: 41px;
704 } 596 font-family: DIN Alternate;}
705 597 .colon{ color: #fff;display: block;margin: 20px 0 0;
706 .block { 598 font-size: 20px;}
707 color: #fff;
708 text-align: center;
709 width: 3em;
710 font-size: 41px;
711 font-family: DIN Alternate;
712 }
713
714 .colon {
715 color: #fff;
716 display: block;
717 margin: 20px 0 0;
718 font-size: 20px;
719 }
720 } 599 }
721 600 .bb{width: 580px;justify-content: center;height: 100px;font-size: 30px;}
722 .bb { 601 .banner-count.bb:hover{box-shadow: 0 0 20px #453DEA;border-radius: 100px;
723 width: 580px;
724 justify-content: center;
725 height: 100px;
726 font-size: 30px;
727 }
728
729 .banner-count.bb:hover {
730 box-shadow: 0 0 20px #453DEA;
731 border-radius: 100px;
732 background: #000 602 background: #000
733 } 603 }
734
735 .box { 604 .box {
736 position: absolute; 605 position: absolute;
737 height: 100%; 606 height: 100%;
738 left: 0; 607 left: 0;
739 right: 0; 608 right: 0;
740 } 609 }
741 610
742 h3 { 611 h3 {
743 position: absolute; 612 position: absolute;
744 color: #fff; 613 color: #fff;
...@@ -747,7 +616,7 @@ const goDetail = (n) => { ...@@ -747,7 +616,7 @@ const goDetail = (n) => {
747 bottom: 50px; 616 bottom: 50px;
748 font-size: 3vw; 617 font-size: 3vw;
749 } 618 }
750 619
751 video { 620 video {
752 width: 100%; 621 width: 100%;
753 height: 100%; 622 height: 100%;
...@@ -760,28 +629,27 @@ const goDetail = (n) => { ...@@ -760,28 +629,27 @@ const goDetail = (n) => {
760 } 629 }
761 630
762 .banner { 631 .banner {
763 position: relative; 632 position: relative;margin:0 0 30px;
764 margin: 0 0 30px; 633
765
766 :deep(.el-carousel__arrow) { 634 :deep(.el-carousel__arrow) {
767 border-radius: 0; 635 border-radius: 0;
768 636
769 .el-icon { 637 .el-icon {
770 color: transparent; 638 color: transparent;
771 } 639 }
772 640
773 &:hover { 641 &:hover {
774 filter: brightness(1.5) 642 filter: brightness(1.5)
775 } 643 }
776 } 644 }
777 645
778 :deep(.el-carousel__arrow--left) { 646 :deep(.el-carousel__arrow--left) {
779 background: url("@/assets/images/prev2@2x.png") no-repeat center; 647 background: url("@/assets/images/prev2@2x.png") no-repeat center;
780 width: 78px; 648 width: 78px;
781 height: 45px; 649 height: 45px;
782 background-size: contain; 650 background-size: contain;
783 } 651 }
784 652
785 :deep(.el-carousel__arrow--right) { 653 :deep(.el-carousel__arrow--right) {
786 background: url("@/assets/images/next2@2x.png") no-repeat center; 654 background: url("@/assets/images/next2@2x.png") no-repeat center;
787 width: 78px; 655 width: 78px;
...@@ -789,121 +657,41 @@ const goDetail = (n) => { ...@@ -789,121 +657,41 @@ const goDetail = (n) => {
789 background-size: contain 657 background-size: contain
790 } 658 }
791 } 659 }
792 660 .el-calendar{--el-calendar-border:none;--el-calendar-cell-width:40px;text-align:center;
793 .el-calendar { 661 --el-text-color-regular:#8E8D94;
794 --el-calendar-border: none; 662 :deep(.el-calendar__header){justify-content: center;padding: 0 0 10px}
795 --el-calendar-cell-width: 40px; 663 :deep(.el-calendar__body){border: 1px solid #F0F0F0;padding: 0}
796 text-align: center; 664 :deep(.el-calendar-table .el-calendar-day){padding: 1px;}
797 --el-text-color-regular: #8E8D94; 665 :deep(.el-calendar-table td.is-selected){background: transparent;}
798 666 :deep(.el-calendar__button-group){display: none;}
799 :deep(.el-calendar__header) { 667 :deep(.el-calendar-table thead th){padding: 5px 0 0}
800 justify-content: center; 668 .primaryDate{color: #fff;
801 padding: 0 0 10px 669 background: #000;}
802 } 670 .date{ margin:auto;border-radius: 50%;width: 30px;height: 30px;line-height: 30px;
803
804 :deep(.el-calendar__body) {
805 border: 1px solid #F0F0F0;
806 padding: 0
807 }
808
809 :deep(.el-calendar-table .el-calendar-day) {
810 padding: 1px;
811 }
812
813 :deep(.el-calendar-table td.is-selected) {
814 background: transparent;
815 }
816
817 :deep(.el-calendar__button-group) {
818 display: none;
819 }
820
821 :deep(.el-calendar-table thead th) {
822 padding: 5px 0 0
823 }
824
825 .primaryDate {
826 color: #fff;
827 background: #000;
828 }
829
830 .date {
831 margin: auto;
832 border-radius: 50%;
833 width: 30px;
834 height: 30px;
835 line-height: 30px;
836 font-weight: bold; 671 font-weight: bold;
837 } 672 }
838 } 673 }
839 674
840 .calendarList { 675 .calendarList{border: 1px solid #F0F0F0;padding:12px 20px;overflow: auto;height: 233px;
841 border: 1px solid #F0F0F0; 676 ul{
842 padding: 12px 20px; 677 li{background: #F6F9FE;margin:7px 0 7px 0;position: relative;padding: 13px;
843 overflow: auto;
844 height: 233px;
845
846 ul {
847 li {
848 background: #F6F9FE;
849 margin: 7px 0 7px 0;
850 position: relative;
851 padding: 13px;
852 border-radius: 10px; 678 border-radius: 10px;
853 font-weight: 500; 679 font-weight: 500;
854 font-size: 15px; 680 font-size: 15px;
855 681 label{color: #000;margin-right: 15px;
856 label { 682 &::before{content: '';background:#fff;left: -17px;top: 0px;bottom: 0;margin: auto;
857 color: #000; 683 border-radius: 50%;width: 2px;height: 2px;position: absolute;z-index: 1}
858 margin-right: 15px;
859
860 &::before {
861 content: '';
862 background: #fff;
863 left: -17px;
864 top: 0px;
865 bottom: 0;
866 margin: auto;
867 border-radius: 50%;
868 width: 2px;
869 height: 2px;
870 position: absolute;
871 z-index: 1
872 }
873 } 684 }
874 } 685 }
875 686 li::before{content: '';background: #000;
876 li::before { 687 border-radius: 50%;width: 8px;height: 8px;position: absolute;
877 content: ''; 688 left: -20px;top: 0;bottom: 0;margin: auto;z-index: 1;
878 background: #000;
879 border-radius: 50%;
880 width: 8px;
881 height: 8px;
882 position: absolute;
883 left: -20px;
884 top: 0;
885 bottom: 0;
886 margin: auto;
887 z-index: 1;
888 }
889
890 li::after {
891 content: '';
892 left: -16px;
893 width: 1px;
894 height: 100%;
895 background: #EBEBEB;
896 position: absolute;
897 top: 20px
898 } 689 }
899 690 li::after{content: ''; left: -16px;width: 1px;height: 100%;
900 li:hover { 691 background: #EBEBEB; position: absolute;top: 20px}
901 color: #fff; 692 li:hover{color: #fff;
902 background: #000; 693 background: #000;
903 694 label{color: #fff;}
904 label {
905 color: #fff;
906 }
907 } 695 }
908 } 696 }
909 } 697 }
...@@ -917,7 +705,7 @@ const goDetail = (n) => { ...@@ -917,7 +705,7 @@ const goDetail = (n) => {
917 .ggbond { 705 .ggbond {
918 height: 230px; 706 height: 230px;
919 position: relative; 707 position: relative;
920 708
921 img { 709 img {
922 height: 100%; 710 height: 100%;
923 object-fit: cover; 711 object-fit: cover;
...@@ -929,336 +717,131 @@ const goDetail = (n) => { ...@@ -929,336 +717,131 @@ const goDetail = (n) => {
929 } 717 }
930 } 718 }
931 719
932 .teacher { 720 .teacher{height: 410px;background: #fff;
933 height: 410px; 721 position: relative;border-radius: 10px;overflow: hidden;
934 background: #fff; 722 .imgbox{background: linear-gradient(0,#C8AAFC,#fff)}
935 position: relative; 723 img{height: 350px;width: 100%;object-fit: cover;}
936 border-radius: 10px; 724 h3{color: #fff;background: url("@/assets/dance/name_bg.png") no-repeat center;
937 overflow: hidden; 725 background-size:110% 100%;text-align: center;height: 30px;line-height: 30px;
938 726 font-size: 18px;position: absolute;width: 100%;bottom: 30px;}
939 .imgbox { 727 p{text-align: center;margin: 25px 0 0;
940 background: linear-gradient(0, #C8AAFC, #fff) 728 font-size: 14px;}
941 }
942
943 img {
944 height: 350px;
945 width: 100%;
946 object-fit: cover;
947 }
948
949 h3 {
950 color: #fff;
951 background: url("@/assets/dance/name_bg.png") no-repeat center;
952 background-size: 110% 100%;
953 text-align: center;
954 height: 30px;
955 line-height: 30px;
956 font-size: 18px;
957 position: absolute;
958 width: 100%;
959 bottom: 30px;
960 }
961
962 p {
963 text-align: center;
964 margin: 25px 0 0;
965 font-size: 14px;
966 }
967 } 729 }
968
969 @media screen and (max-width: 1650px) { 730 @media screen and (max-width: 1650px) {
970 .teacher { 731 .teacher{height: 320px;
971 height: 320px; 732 .imgbox{
972 733 img{height: 260px}
973 .imgbox {
974 img {
975 height: 260px
976 }
977 } 734 }
978 } 735 }
979 } 736 }
980
981 @media screen and (max-width: 1200px) { 737 @media screen and (max-width: 1200px) {
982 .teacher { 738 .teacher{height: 450px;margin: 0 0 20px;
983 height: 450px; 739 .imgbox{
984 margin: 0 0 20px; 740 img{height: 390px}
985
986 .imgbox {
987 img {
988 height: 390px
989 }
990 } 741 }
991 } 742 }
992 } 743 }
993
994 @media screen and (max-width: 900px) { 744 @media screen and (max-width: 900px) {
995 .teacher { 745 .teacher{height: 400px;margin: 0 0 20px;
996 height: 400px; 746 .imgbox{
997 margin: 0 0 20px; 747 img{height: 340px}
998
999 .imgbox {
1000 img {
1001 height: 340px
1002 }
1003 } 748 }
1004 } 749 }
1005 } 750 }
1006
1007 @media screen and (max-width: 800px) { 751 @media screen and (max-width: 800px) {
1008 .teacher { 752 .teacher{height: 400px;margin: 0 0 20px;
1009 height: 400px; 753 .imgbox{
1010 margin: 0 0 20px; 754 img{height: 260px}
1011
1012 .imgbox {
1013 img {
1014 height: 260px
1015 }
1016 } 755 }
1017 } 756 }
1018 } 757 }
1019 758 .aboutBox{background: url("@/assets/dance/about_bg.png") no-repeat center;height: 375px;
1020 .aboutBox { 759 background-size: cover;padding: 40px 60px; position: relative;
1021 background: url("@/assets/dance/about_bg.png") no-repeat center; 760 .content{font-size: 18px;line-height: 2.2;height: 240px;overflow: hidden;
1022 height: 375px; 761 text-align: left;text-indent: 2em;}
1023 background-size: cover; 762 .shadowbox{position: absolute;left: 0;bottom: 90px;height: 100px;width: 100%;
1024 padding: 40px 60px; 763 background: linear-gradient(0deg,rgba(255,255,255,1),rgba(255,255,255,0));
1025 position: relative;
1026
1027 .content {
1028 font-size: 18px;
1029 line-height: 2.2;
1030 height: 240px;
1031 overflow: hidden;
1032 text-align: left;
1033 text-indent: 2em;
1034 }
1035
1036 .shadowbox {
1037 position: absolute;
1038 left: 0;
1039 bottom: 90px;
1040 height: 100px;
1041 width: 100%;
1042 background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
1043 }
1044
1045 .btn-lineG {
1046 } 764 }
765 .btn-lineG{}
1047 } 766 }
1048 767 .mapBox{background: url("@/assets/dance/map.png") no-repeat center;height: 375px;
1049 .mapBox { 768 background-size: cover;padding: 1px;position: relative;display: flex;
1050 background: url("@/assets/dance/map.png") no-repeat center; 769 .content{background: #fff;width: 60%;left: 40px;padding: 30px;
1051 height: 375px; 770 position: absolute;height: 90%;top: 0;bottom: 0;margin: auto;
1052 background-size: cover;
1053 padding: 1px;
1054 position: relative;
1055 display: flex;
1056
1057 .content {
1058 background: #fff;
1059 width: 60%;
1060 left: 40px;
1061 padding: 30px;
1062 position: absolute;
1063 height: 90%;
1064 top: 0;
1065 bottom: 0;
1066 margin: auto;
1067 }
1068
1069 div {
1070 padding-left: 60px;
1071 }
1072
1073 .phone {
1074 background: url("@/assets/dance/map01.png") no-repeat left;
1075 background-size: 30px;
1076 } 771 }
1077 772 div{padding-left: 60px;}
1078 .address { 773 .phone{background: url("@/assets/dance/map01.png") no-repeat left;background-size: 30px;}
1079 background: url("@/assets/dance/map02.png") no-repeat left; 774 .address{background: url("@/assets/dance/map02.png") no-repeat left;background-size: 30px;
1080 background-size: 30px; 775 margin:50px 0;
1081 margin: 50px 0;
1082 } 776 }
1083 777 .email{background: url("@/assets/dance/map03.png") no-repeat left;background-size: 30px;}
1084 .email { 778 h4{margin: 0;
1085 background: url("@/assets/dance/map03.png") no-repeat left;
1086 background-size: 30px;
1087 }
1088
1089 h4 {
1090 margin: 0;
1091 font-size: 16px; 779 font-size: 16px;
1092 color: #AAAAAA; 780 color: #AAAAAA;}
1093 } 781 p{margin: 13px 0 0;}
1094
1095 p {
1096 margin: 13px 0 0;
1097 }
1098 } 782 }
1099 783 .logobox{background: #fff;height: 180px;border-radius: 10px;margin: 0 0 30px;
1100 .logobox { 784 img{width: 100%;height: 100%;object-fit: contain;}
1101 background: #fff;
1102 height: 180px;
1103 border-radius: 10px;
1104 margin: 0 0 30px;
1105
1106 img {
1107 width: 100%;
1108 height: 100%;
1109 object-fit: contain;
1110 }
1111 } 785 }
1112 786 .swiperPic{background: #F3F1FE;position: relative; height: 100%;
1113 .swiperPic {
1114 background: #F3F1FE;
1115 position: relative;
1116 height: 100%;
1117 padding: 20px 45px; 787 padding: 20px 45px;
1118 788 .picprev{position: absolute; left: 5px;top: 0;bottom:0;margin: auto;height: 33px;
1119 .picprev {
1120 position: absolute;
1121 left: 5px;
1122 top: 0;
1123 bottom: 0;
1124 margin: auto;
1125 height: 33px;
1126 cursor: pointer; 789 cursor: pointer;
1127 790 &:hover{filter:brightness(2)}
1128 &:hover {
1129 filter: brightness(2)
1130 }
1131 } 791 }
1132 792 .picnext{position: absolute;right: 5px;top: 0;bottom:0;margin: auto;height: 33px;
1133 .picnext {
1134 position: absolute;
1135 right: 5px;
1136 top: 0;
1137 bottom: 0;
1138 margin: auto;
1139 height: 33px;
1140 cursor: pointer; 793 cursor: pointer;
1141 794 &:hover{filter:brightness(2)}}
1142 &:hover {
1143 filter: brightness(2)
1144 }
1145 }
1146 } 795 }
1147 796 .newline{display: flex;align-items: center;height: 56px;justify-content: space-between;
1148 .newline {
1149 display: flex;
1150 align-items: center;
1151 height: 56px;
1152 justify-content: space-between;
1153 cursor: pointer; 797 cursor: pointer;
1154 798 h3{font-weight: 400;margin: 0;width: 80%;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;
1155 h3 {
1156 font-weight: 400;
1157 margin: 0;
1158 width: 80%;
1159 text-overflow: ellipsis;
1160 white-space: nowrap;
1161 overflow: hidden;
1162 font-size: 18px; 799 font-size: 18px;
1163 color: #030303; 800 color: #030303;}
1164 } 801 span{font-weight: 400;
1165
1166 span {
1167 font-weight: 400;
1168 font-size: 14px; 802 font-size: 14px;
1169 color: #B4B6B8; 803 color: #B4B6B8;}
1170 } 804 &:hover{
1171
1172 &:hover {
1173 background: #F7F8FC; 805 background: #F7F8FC;
1174 } 806 }
1175 } 807 }
1176 808
1177 @media (max-width: 800px) { 809 @media (max-width: 800px) {
1178 .newline { 810 .newline{height: 40px;
1179 height: 40px; 811 h3{width: 70%;font-size: 14px;}
1180 812 span{font-size: 12px;}
1181 h3 {
1182 width: 70%;
1183 font-size: 14px;
1184 }
1185
1186 span {
1187 font-size: 12px;
1188 }
1189 } 813 }
1190 .box { 814 .box{width: 94%}
1191 width: 94% 815 .calendarList{padding: 0;
1192 } 816 ul{
1193 .calendarList { 817 li{margin: 10px}
1194 padding: 0;
1195
1196 ul {
1197 li {
1198 margin: 10px
1199 }
1200 } 818 }
1201 } 819 }
1202 .aboutBox { 820 .aboutBox{padding: 20px 30px;}
1203 padding: 20px 30px; 821 .indexTitle{margin: 30px 0 20px}
822 .teacher{height: 320px;margin: 0 0 20px;
823 img{height: 260px}
1204 } 824 }
1205 .indexTitle { 825 .activeItem{margin: 0 0 20px;}
1206 margin: 30px 0 20px 826 .mapBox{
1207 } 827 div{padding-left: 40px;}
1208 .teacher { 828 .content{ width: 80%;left: 10%;padding:10px 20px 0 20px;}
1209 height: 320px; 829 .address{margin: 30px 0;}
1210 margin: 0 0 20px; 830 p{text-align: left;word-break: break-all;}
1211
1212 img {
1213 height: 260px
1214 }
1215 }
1216 .activeItem {
1217 margin: 0 0 20px;
1218 }
1219 .mapBox {
1220 div {
1221 padding-left: 40px;
1222 }
1223
1224 .content {
1225 width: 80%;
1226 left: 10%;
1227 padding: 10px 20px 0 20px;
1228 }
1229
1230 .address {
1231 margin: 30px 0;
1232 }
1233
1234 p {
1235 text-align: left;
1236 word-break: break-all;
1237 }
1238 } 831 }
1239 .fixed_gg { 832 .fixed_gg {
1240 display: none; 833 display: none;
1241 } 834 }
1242 .bannerItem .banner-count { 835 .bannerItem .banner-count{flex-direction: column;
1243 flex-direction: column; 836 transform: scale(0.5); width: auto;
1244 transform: scale(0.5);
1245 width: auto;
1246 left: 0; 837 left: 0;
1247 right: 0; 838 right: 0;
1248 839 .van-count-down{margin: 30px 0 0;}
1249 .van-count-down {
1250 margin: 30px 0 0;
1251 }
1252 } 840 }
1253 .bgbg { 841 .bgbg{ text-align: center;
1254 text-align: center; 842 h1{text-align: center}
1255
1256 h1 {
1257 text-align: center
1258 }
1259 } 843 }
1260 } 844 }
1261
1262 :deep(.btn-q) { 845 :deep(.btn-q) {
1263 //background: #FFFFFF; 846 //background: #FFFFFF;
1264 //font-size: 18px; 847 //font-size: 18px;
...@@ -1267,7 +850,7 @@ const goDetail = (n) => { ...@@ -1267,7 +850,7 @@ const goDetail = (n) => {
1267 //padding: 10px 20px; 850 //padding: 10px 20px;
1268 //display: inline-flex; 851 //display: inline-flex;
1269 //align-items: center; 852 //align-items: center;
1270 853
1271 padding: 20px 40px; 854 padding: 20px 40px;
1272 font-size: 20px; 855 font-size: 20px;
1273 align-items: center; 856 align-items: center;
...@@ -1281,16 +864,16 @@ const goDetail = (n) => { ...@@ -1281,16 +864,16 @@ const goDetail = (n) => {
1281 box-sizing: inherit; 864 box-sizing: inherit;
1282 } 865 }
1283 866
1284 .btn-q:hover { 867 .btn-q:hover{
1285 box-shadow: 0 0 20px #453DEA; 868 box-shadow: 0 0 20px #453DEA;
1286 border-radius: 100px; 869 border-radius: 100px;
1287 background: #000 !important; 870 background: #000 !important;
1288 } 871 }
1289 872
1290 .ding { 873 .ding{
1291 position: fixed; 874 position: fixed;
1292 right: 0px; 875 right:0px;
1293 z-index: 99; 876 z-index:99;
1294 top: 40%; 877 top: 40%;
1295 background: #000 !important; 878 background: #000 !important;
1296 box-shadow: none; 879 box-shadow: none;
...@@ -1299,34 +882,16 @@ const goDetail = (n) => { ...@@ -1299,34 +882,16 @@ const goDetail = (n) => {
1299 //height: 100px; 882 //height: 100px;
1300 padding: 20px; 883 padding: 20px;
1301 } 884 }
1302 885 .mb30{margin-bottom: 30px;}
1303 .mb30 { 886 .livetimecount{position: absolute;top: 0;z-index: 2;background: #F04035;
1304 margin-bottom: 30px;
1305 }
1306
1307 .livetimecount {
1308 position: absolute;
1309 top: 0;
1310 z-index: 2;
1311 background: #F04035;
1312 padding: 2px 4px; 887 padding: 2px 4px;
1313 888 &::after{content: ''; width: 0;
1314 &::after { 889 height: 0;position: absolute;right: -15px;top: 0;
1315 content: '';
1316 width: 0;
1317 height: 0;
1318 position: absolute;
1319 right: -15px;
1320 top: 0;
1321 border-top: 24px solid #F04035; 890 border-top: 24px solid #F04035;
1322 border-right: 15px solid transparent; 891 border-right: 15px solid transparent;}
1323 } 892 .van-count-down { display: flex;
1324
1325 .van-count-down {
1326 display: flex;
1327 color: #fff; 893 color: #fff;
1328 font-size: 14px; 894 font-size: 14px;
1329
1330 .block { 895 .block {
1331 color: #fff; 896 color: #fff;
1332 text-align: center; 897 text-align: center;
...@@ -1335,23 +900,13 @@ const goDetail = (n) => { ...@@ -1335,23 +900,13 @@ const goDetail = (n) => {
1335 } 900 }
1336 } 901 }
1337 } 902 }
1338
1339 @media (max-width: 500px) { 903 @media (max-width: 500px) {
1340 .forPc { 904 .forPc{display: none!important;}
1341 display: none !important; 905 .zn-Box .bgbg{padding: 10px 0 0;
1342 } 906 .mb30{margin: 0}
1343 .zn-Box .bgbg { 907 .zn-btn{margin-top: 10px}
1344 padding: 10px 0 0;
1345
1346 .mb30 {
1347 margin: 0
1348 }
1349
1350 .zn-btn {
1351 margin-top: 10px
1352 }
1353 } 908 }
1354 .logobox { 909 .logobox{
1355 height: 60px; 910 height: 60px;
1356 } 911 }
1357 } 912 }
......
1 <template>
2 <el-dialog
3 v-model="show" title="Visa Invitation Letter" append-to-body close-icon="CircleClose" center
4 close-on-click-modal destroy-on-close width="1100"
5 >
6 <el-descriptions border>
7 <el-descriptions-item label="No.">{{ form.id }}</el-descriptions-item>
8 <el-descriptions-item label="Applicant Type">{{ form.remarks || form.applicatTypeName }}</el-descriptions-item>
9 <el-descriptions-item label="Invitation Type">{{ form.invitationTypeName }}</el-descriptions-item>
10 <el-descriptions-item label="Do you need a Chinese invitation?">{{
11 form.chinese == '1' ? 'YES' : 'No'
12 }}
13 </el-descriptions-item>
14 <el-descriptions-item label="MNA/Team Name">{{ form.nameEn }}</el-descriptions-item>
15 <el-descriptions-item label="MNA/Team Address">{{ form.associationAddress }}</el-descriptions-item>
16 <el-descriptions-item label="Contact Email">{{ form.email }}</el-descriptions-item>
17 <el-descriptions-item label="Full Name">{{ form.fullName }}</el-descriptions-item>
18 <el-descriptions-item label="Position">{{ form.remarks1 || form.positionName }}</el-descriptions-item>
19 <el-descriptions-item label="Phone">{{ form.phone }}</el-descriptions-item>
20 <el-descriptions-item label="Chinese Embassy Visas Office">{{ form.embassy }}</el-descriptions-item>
21 <el-descriptions-item label="Chinese Embassy Email">{{ form.embassyEmail }}</el-descriptions-item>
22 <el-descriptions-item label="Additional Documents">
23 <el-link v-if="form.files" :href="fillImgUrl(form.files)" target="_blank" type="primary">
24 additional documents
25 </el-link>
26 </el-descriptions-item>
27 <el-descriptions-item label="Proof of Employment">
28 <el-link v-if="form.invitationFile" target="_blank" :href="fillImgUrl(form.invitationFile)" type="primary">
29 proof of employment
30 </el-link>
31 </el-descriptions-item>
32 </el-descriptions>
33 <!-- <el-divider></el-divider>-->
34 <br/>
35 <el-table :data="visaList" border stripe>
36 <el-table-column prop="passportCopy" label="Passport Copy">
37 <template #default="{row}">
38 <el-image
39 :src="fillImgUrl(row.passportCopy)"
40 :preview-src-list="[fillImgUrl(row.passportCopy)]"
41 :preview-teleported="true"
42 style="width: 50px;height: 70px"
43 />
44 </template>
45 </el-table-column>
46 <el-table-column label="position" align="center" prop="position"/>
47 <el-table-column label="lastName" align="center" prop="lastName"/>
48 <el-table-column label="firstName" align="center" prop="fristName"/>
49 <el-table-column prop="sex" label="Gender" align="center">
50 <template #default="{row}">
51 {{ row.sex == '0' ? 'M' : 'F' }}
52 </template>
53 </el-table-column>
54 <el-table-column label="nationality" align="center" prop="nationality"/>
55 <el-table-column label="birthday" align="center" prop="birthday"/>
56 <el-table-column label="Passport No." align="center" prop="passportNo"/>
57 <el-table-column label="DATE OF ISSUE" align="center" prop="issueDate"/>
58 <el-table-column label="DATE OF EXPIRY" align="center" prop="expiryDate"/>
59 </el-table>
60 </el-dialog>
61
62 </template>
63
64 <script setup>
65 import {useStorage} from "@vueuse/core/index";
66 import {getCurrentInstance, ref} from "vue";
67 import {listVisaInfo} from "@/apiPc/match";
68 import useUserStore from "@/store/modules/user";
69 import {fillImgUrl} from "/@/utils/ruoyi";
70
71 const user = useUserStore().user
72 const {proxy} = getCurrentInstance()
73 const language = useStorage('language', 0)
74 const form = ref({
75 gender: '0',
76 cptVisaInfoBos: [],
77 email: user?.email,
78 })
79 const show = ref(false)
80 const visaList = ref([])
81
82 const open = (params) => {
83 show.value = true
84 form.value = params
85
86 listVisaInfo({visaId: params.id})
87 .then((res) => {
88 visaList.value = res.rows
89 })
90
91 }
92 defineExpose({open})
93
94 </script>
95
96 <style scoped lang="scss">
97
98 </style>
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" :title="title" append-to-body close-icon="CircleClose" center
4 :close-on-click-modal="false" class="pcloginpop" 4 :close-on-click-modal="false" class="pcloginpop"
5 destroy-on-close 5 destroy-on-close
6 > 6 >
...@@ -19,12 +19,16 @@ ...@@ -19,12 +19,16 @@
19 <br/> 19 <br/>
20 Thank you so much for your kind patience. 20 Thank you so much for your kind patience.
21 </h4> 21 </h4>
22
23 <div class="red">To check your application status, please go to Account > Personal > Visa Review ReCEBOA Ror refer to your email for any updates..
24 </div>
25
22 </div> 26 </div>
23 27
24 <el-form :model="form" :rules="rules" ref="iformRef" label-position="top" v-else> 28 <el-form :model="form" :rules="rules" ref="iformRef" label-position="top" v-else>
25 <el-form-item :label="language==0?'申请人类别':'Applicant Type'" required prop="applicatType"> 29 <el-form-item :label="language==0?'申请人类别':'Applicant Type'" required prop="applicatType">
26 <el-select v-model="form.applicatType"> 30 <el-select v-model="form.applicatType">
27 <el-option label="MNA" value="1"/> 31 <el-option label="MNA/Team" value="1"/>
28 <el-option label="Technical Officials" value="2"/> 32 <el-option label="Technical Officials" value="2"/>
29 <el-option label="WT Staff" value="3"/> 33 <el-option label="WT Staff" value="3"/>
30 <el-option label="Supplier" value="4"/> 34 <el-option label="Supplier" value="4"/>
...@@ -38,7 +42,16 @@ ...@@ -38,7 +42,16 @@
38 <el-option :label="language==0?'TE/PU(外办)邀请函':'TE/PU Invitation'" value="2"/> 42 <el-option :label="language==0?'TE/PU(外办)邀请函':'TE/PU Invitation'" value="2"/>
39 </el-select> 43 </el-select>
40 </el-form-item> 44 </el-form-item>
41 <el-form-item :label="language==0?'是否需要中文邀请函':'Do you need a Chinese invitation?'" required prop="chinese"> 45 <el-form-item v-if="form.invitationType=='2'" label="Proof of Employment" required prop="invitationFileArr">
46 <div class="red">Proof of employment is required for TE/PU invitation letters.</div>
47 <div class="red">
48 This document must be issued by the invitee's association and must bear an official stamp orsignature.)
49 </div>
50 <br/>
51 <file-upload v-model="form.invitationFileArr" :is-show-tip="false" :limit="1"></file-upload>
52 </el-form-item>
53 <el-form-item :label="language==0?'是否需要中文邀请函':'Do you need a Chinese invitation?'" required
54 prop="chinese">
42 <el-radio-group v-model="form.chinese"> 55 <el-radio-group v-model="form.chinese">
43 <el-radio :value="1">{{ language == 0 ? '是' : 'Yes' }}</el-radio> 56 <el-radio :value="1">{{ language == 0 ? '是' : 'Yes' }}</el-radio>
44 <el-radio :value="0">{{ language == 0 ? '否' : 'No' }}</el-radio> 57 <el-radio :value="0">{{ language == 0 ? '否' : 'No' }}</el-radio>
...@@ -46,18 +59,20 @@ ...@@ -46,18 +59,20 @@
46 </el-form-item> 59 </el-form-item>
47 60
48 <!-- 一般信息--> 61 <!-- 一般信息-->
49 <el-form-item :label="language==0?'国家/地区协会名':'MNA Name'" :required="form.applicatType!=2" 62 <el-form-item :label="language==0?'国家/地区协会名':'MNA/Team Name'" :required="form.applicatType==1"
50 prop="associationCode"> 63 prop="associationCode">
51 <el-select v-model="form.associationCode" filterable> 64 <el-select v-model="form.associationCode" filterable clearable>
52 <el-option v-for="item in mnaList" :key="item.code" :label="language==0?item.nameCn:item.nameEn" 65 <el-option v-for="item in mnaList" :key="item.code" :label="language==0?item.nameCn:item.nameEn"
53 :value="item.code"/> 66 :value="item.code"/>
54 </el-select> 67 </el-select>
55 </el-form-item> 68 </el-form-item>
56 <el-form-item :label="language==0?'国家/地区协会地址':'MNA Address'" :required="form.applicatType!=2" 69 <el-form-item :label="language==0?'国家/地区协会地址':'MNA/Team Address'" :required="form.applicatType==1"
57 prop="associationAddress"> 70 prop="associationAddress">
58 <el-input v-model="form.associationAddress"/> 71 <el-input v-model="form.associationAddress"/>
59 </el-form-item> 72 </el-form-item>
60 <el-form-item :label="language==0?'邮箱':'Contact Email'" required prop="email"> 73 <el-form-item :label="language==0?'邮箱':'Contact Email'" required prop="email">
74 <div class="red">Note: Notifications from the organizing committee will be sent to this email address.
75 </div>
61 <el-input v-model="form.email" type="email"> 76 <el-input v-model="form.email" type="email">
62 <template #append> 77 <template #append>
63 <el-button @click="sendEmail" v-loading="codeloading"> 78 <el-button @click="sendEmail" v-loading="codeloading">
...@@ -65,7 +80,7 @@ ...@@ -65,7 +80,7 @@
65 </el-button> 80 </el-button>
66 </template> 81 </template>
67 </el-input> 82 </el-input>
68 <!-- <div class="tip"></div>--> 83 <!-- <div class="tip"></div>-->
69 </el-form-item> 84 </el-form-item>
70 <el-form-item prop="code" required> 85 <el-form-item prop="code" required>
71 <el-input placeholder="Email verification code" v-model="form.code"/> 86 <el-input placeholder="Email verification code" v-model="form.code"/>
...@@ -86,6 +101,8 @@ ...@@ -86,6 +101,8 @@
86 <el-input v-model="form.phone"/> 101 <el-input v-model="form.phone"/>
87 </el-form-item> 102 </el-form-item>
88 <el-form-item :label="language==0?'签证办理中国大使馆':'Chinese Embassy Visas Office'" required prop="embassy"> 103 <el-form-item :label="language==0?'签证办理中国大使馆':'Chinese Embassy Visas Office'" required prop="embassy">
104 <div class="red">Ex:EMBASSY OF THE PEOPLE'S REPUBLIC OFCHINA IN THE ISLAMIC REPUBLIC OF PAKISTAN
105 </div>
89 <el-input v-model="form.embassy"/> 106 <el-input v-model="form.embassy"/>
90 </el-form-item> 107 </el-form-item>
91 <el-form-item :label="language==0?'中国大使馆邮箱':'Chinese Embassy Email'" required prop="embassyEmail"> 108 <el-form-item :label="language==0?'中国大使馆邮箱':'Chinese Embassy Email'" required prop="embassyEmail">
...@@ -95,11 +112,21 @@ ...@@ -95,11 +112,21 @@
95 <!--上传护照,多张--> 112 <!--上传护照,多张-->
96 <div class="cptVisaInfoBosTable"> 113 <div class="cptVisaInfoBosTable">
97 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required> 114 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required>
98 <ImageUpload v-model="form.passportCopy" :is-show-tip="false" :limit="100" 115 <div class="wrap-item">
99 :action="'/league/visa/getPersonInfoFromCert/3'" 116 <!-- <el-text type="success">Please ensure that the uploaded passport image is clear, complete, and free from
100 paramName="pic" list-type="text" :show-file-list="false" 117 glare or reflections.
101 :button-text="language==0?'上传':'Upload'" @response="getPassportInfo" 118 </el-text> -->
102 /> 119 <div class="red">Please ensure that the uploaded passport image is clear, complete, and free from
120 glare or reflections.
121 </div>
122 <div class="red">You may upload multiple passports at once to appy for multiple applicants.
123 </div>
124 <ImageUpload v-model="form.passportCopy" :is-show-tip="false" :limit="20"
125 :action="'/league/visa/getPersonInfoFromCert/3' "
126 paramName="pic" list-type="text" :show-file-list="false"
127 :button-text="language==0?'上传':'Upload'" @response="getPassportInfo"
128 />
129 </div>
103 </el-form-item> 130 </el-form-item>
104 <!--识别信息--> 131 <!--识别信息-->
105 <div v-if="form.cptVisaInfoBos?.length>0" class="border"> 132 <div v-if="form.cptVisaInfoBos?.length>0" class="border">
...@@ -122,7 +149,19 @@ ...@@ -122,7 +149,19 @@
122 </div> 149 </div>
123 </template> 150 </template>
124 <template #default="scope"> 151 <template #default="scope">
125 <el-input v-model="scope.row.position" size="small"/> 152 <el-select v-model="scope.row.position" size="small">
153 <el-option label="Head Of Team" value="Head Of Team"/>
154 <el-option label="Head Coach" value="Head Coach"/>
155 <el-option label="Manager" value="Manager"/>
156 <el-option label="Coach" value="Coach"/>
157 <el-option label="Trainer" value="Trainer"/>
158 <el-option label="Team Doctor" value="Team Doctor"/>
159 <el-option label="Team Physiotherepaist" value="Team Physiotherepaist"/>
160 <el-option label="Competitor" value="Competitor"/>
161 <el-option label="MNA Official" value="MNA Official"/>
162 <el-option label="MNA Guest" value="MNA Guest"/>
163 </el-select>
164
126 </template> 165 </template>
127 </el-table-column> 166 </el-table-column>
128 <el-table-column prop="lastName" :label="'lastName'" min-width="100"> 167 <el-table-column prop="lastName" :label="'lastName'" min-width="100">
...@@ -225,12 +264,11 @@ ...@@ -225,12 +264,11 @@
225 </el-table-column> 264 </el-table-column>
226 <el-table-column label="Actions" fixed="right"> 265 <el-table-column label="Actions" fixed="right">
227 <template #default="scope"> 266 <template #default="scope">
228 <el-button type="danger" size="small" @click="delPassportInfo(scope.row)" icon="delete"/> 267 <el-button type="danger" size="small" @click="delPassportInfo(scope.$index)" icon="delete"/>
229 </template> 268 </template>
230 </el-table-column> 269 </el-table-column>
231 </el-table> 270 </el-table>
232 </div> 271 </div>
233
234 </div> 272 </div>
235 <!-- 补充材料--> 273 <!-- 补充材料-->
236 <el-form-item :label="language==0?'补充材料':'Additional Documents'" prop="files"> 274 <el-form-item :label="language==0?'补充材料':'Additional Documents'" prop="files">
...@@ -240,7 +278,7 @@ ...@@ -240,7 +278,7 @@
240 278
241 279
242 <div class="text-center"> 280 <div class="text-center">
243 <el-button type="primary" size="large" @click="submit" round class="btn-lineG"> 281 <el-button type="primary" size="large" :disabled="!cptId" @click="submit" round class="btn-lineG">
244 {{ language == 0 ? '提交' : 'SUBMIT' }} 282 {{ language == 0 ? '提交' : 'SUBMIT' }}
245 </el-button> 283 </el-button>
246 </div> 284 </div>
...@@ -266,7 +304,8 @@ const {proxy} = getCurrentInstance() ...@@ -266,7 +304,8 @@ const {proxy} = getCurrentInstance()
266 const language = useStorage('language', 0) 304 const language = useStorage('language', 0)
267 const form = ref({ 305 const form = ref({
268 gender: '0', 306 gender: '0',
269 cptVisaInfoBos: [] 307 cptVisaInfoBos: [],
308 email: user?.email,
270 }) 309 })
271 const show = ref(false) 310 const show = ref(false)
272 const codeloading = ref(false) 311 const codeloading = ref(false)
...@@ -290,11 +329,15 @@ const open = (params) => { ...@@ -290,11 +329,15 @@ const open = (params) => {
290 show.value = true 329 show.value = true
291 title.value = params.title 330 title.value = params.title
292 cptId.value = params.cptId 331 cptId.value = params.cptId
332 if (!cptId.value) {
333 proxy.$modal.msgError('参数有误');
334 }
335
293 form.value.userId = user.userId 336 form.value.userId = user.userId
294 form.value.cptId = params.cptId 337 form.value.cptId = params.cptId
295 getCountryList() 338 getCountryList()
296 getMNAList() 339 getMNAList()
297 getVisa() 340 // getVisa()
298 } 341 }
299 defineExpose({open}) 342 defineExpose({open})
300 343
...@@ -327,27 +370,31 @@ function getMNAList() { ...@@ -327,27 +370,31 @@ function getMNAList() {
327 const submit = () => { 370 const submit = () => {
328 console.log(form.value) 371 console.log(form.value)
329 if (form.value.email?.indexOf('@') == -1) { 372 if (form.value.email?.indexOf('@') == -1) {
330 ElMessage.warning(language.value == 0?'请填写正确的邮箱':'Invalid Emaill Address!') 373 ElMessage.warning(language.value == 0 ? '请填写正确的邮箱' : 'Invalid Emaill Address!')
331 return 374 return
332 } 375 }
333 if(form.value.applicatType==5 && !form.value.remarks){ 376 if (form.value.applicatType == 5 && !form.value.remarks) {
334 ElMessage.warning('Please specify Applicant Type') 377 ElMessage.warning('Please specify Applicant Type')
335 return 378 return
336 } 379 }
337 if(form.value.position==3 && !form.value.remarks1){ 380 if (form.value.position == 3 && !form.value.remarks1) {
338 ElMessage.warning('Please specify position') 381 ElMessage.warning('Please specify position')
339 return 382 return
340 } 383 }
341 for (let row of form.value.cptVisaInfoBos){ 384 for (let row of form.value.cptVisaInfoBos) {
342 if(!row.position){ 385 if (!row.position) {
343 ElMessage.warning(`Please specify ${row.fristName}'s position`) 386 ElMessage.warning(`Please specify ${row.fristName}'s position`)
344 return 387 return
345 } 388 }
346 } 389 }
347 390
348 if (form.value.files && Array.isArray(form.value.files)) { 391 if (form.value.files && Array.isArray(form.value.files)) {
349 form.value.files = form.value.files[0]?.url 392 form.value.files = form.value.files[0]?.url
350 } 393 }
394 if (form.value.invitationFileArr) {
395 form.value.invitationFile = JSON.stringify(form.value.invitationFileArr)
396 }
397
351 proxy.$refs.iformRef.validate(valid => { 398 proxy.$refs.iformRef.validate(valid => {
352 if (valid) { 399 if (valid) {
353 ElMessageBox.confirm( 400 ElMessageBox.confirm(
...@@ -359,8 +406,8 @@ const submit = () => { ...@@ -359,8 +406,8 @@ const submit = () => {
359 }).then(() => { 406 }).then(() => {
360 form.value.cptId = cptId.value 407 form.value.cptId = cptId.value
361 addInvitation(form.value).then((res) => { 408 addInvitation(form.value).then((res) => {
362 if(res.data==-200){ 409 if (res.data == -200) {
363 ElMessage.error(language.value == 0 ? '邮箱验证码不正确':'Invalid email verification code') 410 ElMessage.error(language.value == 0 ? '邮箱验证码不正确' : 'Invalid email verification code')
364 } else { 411 } else {
365 ElMessage.success(language.value == 0 ? '提交成功' : 'Successfully!') 412 ElMessage.success(language.value == 0 ? '提交成功' : 'Successfully!')
366 showR.value = true 413 showR.value = true
...@@ -391,20 +438,12 @@ const getPassportInfo = (res) => { ...@@ -391,20 +438,12 @@ const getPassportInfo = (res) => {
391 } 438 }
392 } 439 }
393 440
394 function delPassportInfo(row) { 441 function delPassportInfo(index) {
395 console.log(row,form.value.cptVisaInfoBos) 442 form.value.cptVisaInfoBos.splice(index, 1)
396 if(form.value.cptVisaInfoBos.length==1){
397 form.value.cptVisaInfoBos = []
398 }else {
399 for(let n of form.value.cptVisaInfoBos){
400 if(n.passportNo==row.passportNo){
401 form.value.cptVisaInfoBos.splice(form.value.cptVisaInfoBos.indexOf(n),1)
402 }
403 }
404 }
405 } 443 }
444
406 function sendEmail() { 445 function sendEmail() {
407 if(!form.value.email){ 446 if (!form.value.email) {
408 ElMessage.error(language.value == 0 ? '请输入邮箱' : 'Please enter contact Email') 447 ElMessage.error(language.value == 0 ? '请输入邮箱' : 'Please enter contact Email')
409 return 448 return
410 } 449 }
...@@ -413,11 +452,11 @@ function sendEmail() { ...@@ -413,11 +452,11 @@ function sendEmail() {
413 return 452 return
414 } 453 }
415 codeloading.value = true 454 codeloading.value = true
416 sendVisaCode({email:form.value.email}).then(res=>{ 455 sendVisaCode({email: form.value.email}).then(res => {
417 codeloading.value = false 456 codeloading.value = false
418 if(res.code == 200){ 457 if (res.code == 200) {
419 ElMessage.success(language.value == 0 ? '发送成功,请前往邮箱查看' : 'Send success, please check your email') 458 ElMessage.success(language.value == 0 ? '发送成功,请前往邮箱查看' : 'Send success, please check your email')
420 }else{ 459 } else {
421 ElMessage.error(res.msg) 460 ElMessage.error(res.msg)
422 } 461 }
423 }) 462 })
...@@ -425,7 +464,10 @@ function sendEmail() { ...@@ -425,7 +464,10 @@ function sendEmail() {
425 </script> 464 </script>
426 465
427 <style scoped lang="scss"> 466 <style scoped lang="scss">
428 .red{color: red!important;} 467 .red {
468 color: red !important;
469 }
470
429 :deep(.el-upload--picture-card) { 471 :deep(.el-upload--picture-card) {
430 --el-upload-picture-card-size: 60px; 472 --el-upload-picture-card-size: 60px;
431 } 473 }
...@@ -453,4 +495,9 @@ h4 { ...@@ -453,4 +495,9 @@ h4 {
453 font-size: 12px; 495 font-size: 12px;
454 } 496 }
455 } 497 }
498
499 .wrap-item {
500 flex-wrap: wrap;
501 display: block;
502 }
456 </style> 503 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!