864892cf by zhangmeng

奖牌

1 parent f95e2295
1 <template> 1 <template>
2 <div class="footAll"> 2 <div class="footAll">
3 <div class="box" style="max-width: 90%"> 3 <div class="box" style="max-width: 90%">
4 <el-row align="middle" v-if="language==0"> 4 <el-row v-if="language==0" align="middle">
5 <el-col :lg="10" :md="10" :xs="10"> 5 <el-col :lg="10" :md="10" :xs="10">
6 <ul> 6 <ul>
7 <li>邮编:214000</li> 7 <li>邮编:214000</li>
...@@ -18,22 +18,24 @@ ...@@ -18,22 +18,24 @@
18 </el-col> 18 </el-col>
19 <el-col :lg="4" :md="4" :xs="4"> 19 <el-col :lg="4" :md="4" :xs="4">
20 <div> 20 <div>
21 <img class="mauto" src="/img/wb2.jpg"/> 21 <img class="mauto" src="/img/wb2.jpg">
22 <p class="text-center mt10">微博关注</p> 22 <p class="text-center mt10">微博关注</p>
23 </div> 23 </div>
24 </el-col> 24 </el-col>
25 <el-col :span="24" style="border-top: 1px solid #d0d0d0"> 25 <el-col :span="24" style="border-top: 1px solid #d0d0d0">
26 <div class="text-center copyright pd10">版权所有@无锡和畅赛事运营有限公司 26 <div class="text-center copyright pd10">版权所有@无锡和畅赛事运营有限公司
27 &ensp;&ensp 27 &ensp;&ensp
28 <a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:苏ICP备2023054420号-2</a></div> 28 <a href="https://beian.miit.gov.cn/" target="_blank">ICP备案号:苏ICP备2023054420号-2</a></div>
29 </el-col> 29 </el-col>
30 </el-row> 30 </el-row>
31 31
32 <el-row align="middle" v-if="language===1"> 32 <el-row v-if="language===1" align="middle">
33 <el-col :span="14"> 33 <el-col :span="14">
34 <ul> 34 <ul>
35 <li>Postal code:214000</li> 35 <li>Postal code:214000</li>
36 <li>Address:100 meters northeast of the intersection of Hefeng Road and Qingshu, the Taihu Lake New Town, Wuxi, Jiangsu</li> 36 <li>Address:100 meters northeast of the intersection of Hefeng Road and Qingshu, the Taihu Lake New Town,
37 Wuxi, Jiangsu
38 </li>
37 </ul> 39 </ul>
38 </el-col> 40 </el-col>
39 <el-col :span="6"> 41 <el-col :span="6">
...@@ -44,113 +46,216 @@ ...@@ -44,113 +46,216 @@
44 </el-col> 46 </el-col>
45 <el-col :span="4"> 47 <el-col :span="4">
46 <div> 48 <div>
47 <img class="mauto" src="/img/wb2.jpg"/> 49 <img class="mauto" src="/img/wb2.jpg">
48 <p class="text-center mt10">Weibo</p> 50 <p class="text-center mt10">Weibo</p>
49 </div> 51 </div>
50 </el-col> 52 </el-col>
51 <el-col :span="24" style="border-top: 1px solid #d0d0d0"> 53 <el-col :span="24" style="border-top: 1px solid #d0d0d0">
52 <div class="text-center copyright pd10">Copyright@Wuxi Hechang Sports Operations Co., Ltd 54 <div class="text-center copyright pd10">Copyright@Wuxi Hechang Sports Operations Co., Ltd
53 <a target="_blank" href="https://beian.miit.gov.cn/">ICP:苏ICP备2023054420号-2</a></div> 55 <a href="https://beian.miit.gov.cn/" target="_blank">ICP:苏ICP备2023054420号-2</a></div>
54 </el-col> 56 </el-col>
55 </el-row> 57 </el-row>
56 </div> 58 </div>
57 </div> 59 </div>
58 <div class="fixed-right forPc"> 60 <div class="fixed-right forPc">
59 <div class="mlb" v-if="language===0"> 61 <div v-if="language===0" class="mlb">
60 <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="客服" > 62 <div
61 <img class="kf" src="@/assets/logo/btn01.png"/> 63 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')"
64 title="客服"
65 >
66 <img class="kf" src="@/assets/logo/btn01.png">
62 <div class="text-center mt10 gradient-text">在线客服</div> 67 <div class="text-center mt10 gradient-text">在线客服</div>
63 </div> 68 </div>
64 <div @click="goHelpZH"> 69 <div @click="goHelpZH">
65 <!-- <a target="_blank" href="https://wdsfwuxicenter.com/stage-api/fs/file/操作指引.zip">--> 70 <!-- <a target="_blank" href="https://wdsfwuxicenter.com/stage-api/fs/file/操作指引.zip">-->
66 <a> 71 <a>
67 <img class="kf" src="@/assets/logo/btn02.png"/> 72 <img class="kf" src="@/assets/logo/btn02.png">
68 <div class="text-center mt10 gradient-text">指南下载</div> 73 <div class="text-center mt10 gradient-text">指南下载</div>
69 </a> 74 </a>
70 </div> 75 </div>
71 </div> 76 </div>
72 <div class="mlb" v-else> 77 <div v-else class="mlb">
73 <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"> 78 <div
74 <img class="kf" src="@/assets/logo/btn01.png"/> 79 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')"
80 title="Live Chat"
81 >
82 <img class="kf" src="@/assets/logo/btn01.png">
75 <div class="text-center gradient-text">LIVE CHAT</div> 83 <div class="text-center gradient-text">LIVE CHAT</div>
76 </div> 84 </div>
77 <div @click="goHelp"> 85 <div @click="goHelp">
78 <img class="kf" src="@/assets/logo/btn02.png"/> 86 <img class="kf" src="@/assets/logo/btn02.png">
79 <div class="text-center gradient-text uppercase">Video Guide</div> 87 <div class="text-center gradient-text uppercase">Video Guide</div>
80 </div> 88 </div>
81 </div> 89 </div>
90
91 <a v-show="false" ref="aRef" :href="fillImgUrl(file[0]?.url)" target="_blank" />
82 </div> 92 </div>
83 </template> 93 </template>
84 94
85 <script setup> 95 <script setup>
86 import {useStorage} from "@vueuse/core/index"; 96 import { useStorage } from '@vueuse/core/index'
87 import {useRouter} from "vue-router"; 97 import { useRouter } from 'vue-router'
88 import {ElMessage} from "element-plus"; 98 import { ElMessage } from 'element-plus'
99 import { getCurrentInstance, ref } from '@vue/runtime-core'
100
101 import { getMatchById, getppInfo, getZNList } from '@/apiPc/match'
102 import { fillImgUrl } from '/@/utils/ruoyi'
103
104 const { proxy } = getCurrentInstance()
89 const router = useRouter() 105 const router = useRouter()
90 const language = useStorage('language', 0) 106 const language = useStorage('language', 0)
91 const goHelp = () => { 107 const goHelp = () => {
92 router.push({ 108 router.push({
93 path: `/news/list/20000100`, 109 path: `/news/list/20000100`,
94 query:{ 110 query: {
95 kindName: language.value===0?'操作指引':'Video Guide' 111 kindName: language.value === 0 ? '操作指引' : 'Video Guide'
96 } 112 }
97 }) 113 })
98 } 114 }
99 const goHelpZH = () => { 115
116
117 const file = ref({})
118 const goHelpZH = async() => {
100 // ElMessage.success('已下载文件') 119 // ElMessage.success('已下载文件')
101 router.push({ 120 // router.push({
102 name: 'guide', 121 // name: 'guide',
103 query: { 122 // query: {
104 index:8 123 // index: 8
124 // }
125 // })
126 const res = await getZNList({ sortId: 30000009, language: 1 })
127 if (res.rows.length > 0) {
128 file.value = JSON.parse(res.rows[0].picUrl)
129 proxy.$refs['aRef'].click()
105 } 130 }
106 })
107 } 131 }
108 </script> 132 </script>
109 133
110 <style lang="scss" scoped> 134 <style lang="scss" scoped>
111 .kf{width: 45px;margin: auto;height: auto; 135 .kf {
136 width: 45px;
137 margin: auto;
138 height: auto;
112 //animation: pop 2s infinite; 139 //animation: pop 2s infinite;
113 } 140 }
114 .fixed-right{position: fixed;right: 0;top: 65%;z-index: 9; 141
115 .mlb{background: #fff;border-radius: 10px 0 0 10px;box-shadow: 0 2px 8px #aaa; 142 .fixed-right {
116 padding: 10px 8px;text-align: center;cursor: pointer; 143 position: fixed;
117 div:first-child{border-bottom: 0.5px solid #eee;padding: 0 0 10px;margin-bottom: 10px} 144 right: 0;
118 div:hover{.gradient-text{font-weight: bold;}} 145 top: 65%;
146 z-index: 9;
147
148 .mlb {
149 background: #fff;
150 border-radius: 10px 0 0 10px;
151 box-shadow: 0 2px 8px #aaa;
152 padding: 10px 8px;
153 text-align: center;
154 cursor: pointer;
155
156 div:first-child {
157 border-bottom: 0.5px solid #eee;
158 padding: 0 0 10px;
159 margin-bottom: 10px
160 }
161
162 div:hover {
163 .gradient-text {
164 font-weight: bold;
165 }
166 }
119 } 167 }
120 } 168 }
121 .copyright{font-size: 14px;opacity: 0.88;color: #4C5359;} 169
122 .footAll{background: #E0E3E5;;padding: 36px 0 5px; 170 .copyright {
123 p{font-size: 14px;opacity: 0.88;color: #4C5359;} 171 font-size: 14px;
124 ul{list-style: none; 172 opacity: 0.88;
125 li{line-height: 30px;font-size: 14px;opacity: 0.88;color: #4C5359; 173 color: #4C5359;
126 a{margin-left: 15px; 174 }
127 &:hover{text-decoration: underline;} 175
176 .footAll {
177 background: #E0E3E5;;
178 padding: 36px 0 5px;
179
180 p {
181 font-size: 14px;
182 opacity: 0.88;
183 color: #4C5359;
184 }
185
186 ul {
187 list-style: none;
188
189 li {
190 line-height: 30px;
191 font-size: 14px;
192 opacity: 0.88;
193 color: #4C5359;
194
195 a {
196 margin-left: 15px;
197
198 &:hover {
199 text-decoration: underline;
200 }
128 } 201 }
129 } 202 }
130 } 203 }
131 img{height: 80px;} 204
205 img {
206 height: 80px;
207 }
132 } 208 }
209
133 .gradient-text { 210 .gradient-text {
134 font-family: FZJunHeiS-B-GB; 211 font-family: FZJunHeiS-B-GB;
135 font-weight: 600;font-size: 17px; 212 font-weight: 600;
213 font-size: 17px;
136 background: linear-gradient(0deg, #8226FC 0%, #483BEB 100%); 214 background: linear-gradient(0deg, #8226FC 0%, #483BEB 100%);
137 -webkit-background-clip: text; 215 -webkit-background-clip: text;
138 -webkit-text-fill-color: transparent; 216 -webkit-text-fill-color: transparent;
139 } 217 }
218
140 @media (max-width: 500px) { 219 @media (max-width: 500px) {
141 .forWei{display: none;} 220 .forWei {
142 .footAll{padding:10px 0; 221 display: none;
222 }
223 .footAll {
224 padding: 10px 0;
225
143 ul { 226 ul {
144 li { 227 li {
145 font-size: 10px;line-height: 1.4; 228 font-size: 10px;
229 line-height: 1.4;
230 }
231 }
232
233 img {
234 height: 60px;
235 }
236
237 p {
238 font-size: 10px;
239 line-height: 1.4;
146 } 240 }
241
242 .copyright {
243 font-size: 10px;
244 line-height: 1.4;
147 } 245 }
148 img{height: 60px;}
149 p{font-size: 10px;line-height: 1.4;}
150 .copyright{font-size: 10px;line-height: 1.4;}
151 } 246 }
152 } 247 }
153 .ffoot{display: inline-flex; 248
154 img{width: 20px;height: 20px;display: inline-block;position: relative;top: 4px;margin-right: 4px;} 249 .ffoot {
250 display: inline-flex;
251
252 img {
253 width: 20px;
254 height: 20px;
255 display: inline-block;
256 position: relative;
257 top: 4px;
258 margin-right: 4px;
259 }
155 } 260 }
156 </style> 261 </style>
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4 <div class=" mt30"></div> 4 <div class=" mt30" />
5 <div class="flexBody"> 5 <div class="flexBody">
6 <el-tabs class="forPc" v-model="activeName" tab-position="left" @tab-change="changeTab" @tab-click="clickTab"> 6 <el-tabs v-model="activeName" class="forPc" tab-position="left" @tab-change="changeTab" @tab-click="clickTab">
7 <el-tab-pane v-for="(tab,index) in (language===0?list:list_en)" :label="tab.name" :name="index"> 7 <el-tab-pane v-for="(tab,index) in (language===0?list:list_en)" :label="tab.name" :name="index">
8 <template #label> 8 <template #label>
9 <span class="custom-tabs-label"> 9 <span class="custom-tabs-label">
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
12 </template> 12 </template>
13 </el-tab-pane> 13 </el-tab-pane>
14 </el-tabs> 14 </el-tabs>
15 <el-tabs class="forWei" v-model="activeName" tab-position="top" @tab-change="changeTab" @tab-click="clickTab"> 15 <el-tabs v-model="activeName" class="forWei" tab-position="top" @tab-change="changeTab" @tab-click="clickTab">
16 <el-tab-pane v-for="(tab,index) in (language===0?list:list_en)" :label="tab.name" :name="index"> 16 <el-tab-pane v-for="(tab,index) in (language===0?list:list_en)" :label="tab.name" :name="index">
17 <template #label> 17 <template #label>
18 <span class="custom-tabs-label"> 18 <span class="custom-tabs-label">
...@@ -21,28 +21,28 @@ ...@@ -21,28 +21,28 @@
21 </template> 21 </template>
22 </el-tab-pane> 22 </el-tab-pane>
23 </el-tabs> 23 </el-tabs>
24 <div class="infoPart" v-loading="loading"> 24 <div v-loading="loading" class="infoPart">
25 <h3 class="leftboderTT">{{ nowTab.name }}</h3> 25 <h3 class="leftboderTT">{{ nowTab.name }}</h3>
26 <div class="content" v-if="activeName!==8"> 26 <div v-if="activeName!==8" class="content">
27 <div v-html="content" v-if="content"></div> 27 <div v-if="content" v-html="content" />
28 <div v-else> 28 <div v-else>
29 <el-empty /> 29 <el-empty />
30 </div> 30 </div>
31 </div> 31 </div>
32 32
33 <div class="content flex" v-if="activeName===8"> 33 <div v-if="activeName===8" class="content flex">
34 <label>{{ language===0?'点击下载':'DownLoad' }}:</label> 34 <label>{{ language === 0 ? '点击下载' : 'DownLoad' }}:</label>
35 <div v-if="fileList.length>0"> 35 <div v-if="fileList.length>0">
36 <div v-for="f in fileList"> 36 <div v-for="f in fileList" :key="f">
37 <a target="_blank" class="text-primary" :href="f.fileUrl"> 37 <a :href="fillImgUrl(f.url) " class="text-primary" target="_blank">
38 <el-icon style="position: relative;top: 2px"> 38 <el-icon style="position: relative;top: 2px">
39 <download/> 39 <download />
40 </el-icon> 40 </el-icon>
41 {{f.name}} 41 {{ f.name }}
42 </a> 42 </a>
43 </div> 43 </div>
44 </div> 44 </div>
45 <div v-else>{{ language==0?'暂无':'No Data' }}</div> 45 <div v-else>{{ language == 0 ? '暂无' : 'No Data' }}</div>
46 </div> 46 </div>
47 </div> 47 </div>
48 </div> 48 </div>
...@@ -50,40 +50,42 @@ ...@@ -50,40 +50,42 @@
50 </div> 50 </div>
51 </template> 51 </template>
52 <script setup> 52 <script setup>
53 import {onMounted, ref} from 'vue' 53 import { onMounted, ref } from 'vue'
54 import {getNewsListById, getRuleKind} from '@/apiPc/webSite' 54 import { getNewsListById, getRuleKind } from '@/apiPc/webSite'
55 import {useRoute, useRouter} from 'vue-router' 55 import { useRoute, useRouter } from 'vue-router'
56 import {useStorage} from "@vueuse/core"; 56 import { useStorage } from '@vueuse/core'
57 import {getCurrentInstance} from "@vue/runtime-core"; 57 import { getCurrentInstance } from '@vue/runtime-core'
58 import {getppInfo, getZNList} from "@/apiPc/match"; 58 import { getMatchById, getppInfo, getZNList } from '@/apiPc/match'
59 import * as match from '@/apiPc/match'
60 import { fillImgUrl } from '/@/utils/ruoyi'
59 61
60 const language = useStorage('language', 0) 62 const language = useStorage('language', 0)
61 const router = useRouter() 63 const router = useRouter()
62 const route = useRoute() 64 const route = useRoute()
63 const {proxy} = getCurrentInstance() 65 const { proxy } = getCurrentInstance()
64 const activeName = ref(0) 66 const activeName = ref(0)
65 const showVipFee = ref(false) 67 const showVipFee = ref(false)
66 const list = ref([ 68 const list = ref([
67 {name: '参赛场馆介绍',code: '30000001'}, 69 { name: '参赛场馆介绍', code: '30000001' },
68 {name: ' 注册报到中心',code: '30000002'}, 70 { name: ' 注册报到中心', code: '30000002' },
69 {name: '证件管理 ',code: '30000003'}, 71 { name: '证件管理 ', code: '30000003' },
70 {name: '地图指引 ',code: '30000004'}, 72 { name: '地图指引 ', code: '30000004' },
71 {name: '技术官员与运动队服务 ',code: '30000005'}, 73 { name: '技术官员与运动队服务 ', code: '30000005' },
72 {name: '医疗服务 ',code: '30000006'}, 74 { name: '医疗服务 ', code: '30000006' },
73 {name: '周边交通图 ',code: '30000007'}, 75 { name: '周边交通图 ', code: '30000007' },
74 {name: 'VISA 签证 ',code: '30000008'}, 76 { name: 'VISA 签证 ', code: '30000008' },
75 {name: '指南手册下载',code: '30000009'} 77 { name: '指南手册下载', code: '30000009' }
76 ]) 78 ])
77 const list_en = ref([ 79 const list_en = ref([
78 {name: 'Introduction of the Competition Venue'}, 80 { name: 'Introduction of the Competition Venue' },
79 {name: ' Registration Center'}, 81 { name: ' Registration Center' },
80 {name: 'License Management'}, 82 { name: 'License Management' },
81 {name: 'Map Guidance '}, 83 { name: 'Map Guidance ' },
82 {name: 'Service for Technical Officials and Teams'}, 84 { name: 'Service for Technical Officials and Teams' },
83 {name: 'Medical Services '}, 85 { name: 'Medical Services ' },
84 {name: 'Surrounding Traffic Map'}, 86 { name: 'Surrounding Traffic Map' },
85 {name: 'VISA '}, 87 { name: 'VISA ' },
86 {name: 'The Manual'} 88 { name: 'The Manual' }
87 ]) 89 ])
88 const newsList = ref([]) 90 const newsList = ref([])
89 const nowTab = ref({ 91 const nowTab = ref({
...@@ -97,12 +99,16 @@ const query = ref({ ...@@ -97,12 +99,16 @@ const query = ref({
97 const content = ref({}) 99 const content = ref({})
98 const fileList = ref([]) 100 const fileList = ref([])
99 const loading = ref(false) 101 const loading = ref(false)
102 const cptId = ref(route.query.cptId)
103
100 onMounted(() => { 104 onMounted(() => {
101 if (route.query.index) { 105 if (route.query.index) {
102 changeTab(route.query.index) 106 changeTab(route.query.index)
103 } else { 107 } else {
104 getKindList() 108 getKindList()
105 } 109 }
110
111 if (route.query.cptId) getMatch()
106 }) 112 })
107 const getKindList = () => { 113 const getKindList = () => {
108 changeTab(0) 114 changeTab(0)
...@@ -116,22 +122,22 @@ const changeTab = (n) => { ...@@ -116,22 +122,22 @@ const changeTab = (n) => {
116 } 122 }
117 activeName.value = n 123 activeName.value = n
118 124
119 if(n==8){ 125 if (n == 8) {
120 var obj = {sortId:30000009,language:1} 126 var obj = { sortId: 30000009, language: 1 }
121 if(language.value==1){ 127 if (language.value == 1) {
122 obj.language = 2 128 obj.language = 2
123 } 129 }
124 getZNList(obj).then(res=>{ 130 getZNList(obj).then(res => {
125 fileList.value = res.rows 131 fileList.value = res.rows
126 for(let f of fileList.value){ 132 for (const f of fileList.value) {
127 f.fileUrl = JSON.parse(f.picUrl)[0].url 133 f.fileUrl = JSON.parse(f.picUrl)[0].url
128 } 134 }
129 }) 135 })
130 } else { 136 } else {
131 loading.value = true 137 loading.value = true
132 getppInfo(list.value[n].code).then(res=>{ 138 getppInfo(list.value[n].code).then(res => {
133 loading.value = false 139 loading.value = false
134 if(language.value==0){ 140 if (language.value == 0) {
135 content.value = res.data.contextZh 141 content.value = res.data.contextZh
136 } else { 142 } else {
137 content.value = res.data.contextEn 143 content.value = res.data.contextEn
...@@ -174,6 +180,16 @@ const goDetail = (n) => { ...@@ -174,6 +180,16 @@ const goDetail = (n) => {
174 const showBuilding = () => { 180 const showBuilding = () => {
175 proxy.$message.warning(language.value == 0 ? '待更新' : 'Building') 181 proxy.$message.warning(language.value == 0 ? '待更新' : 'Building')
176 } 182 }
183
184 async function getMatch() {
185 const res = await match.getMatchById({ id: cptId.value })
186 if (res.data.cptGuide) {
187 fileList.value = JSON.parse(res.data.cptGuide)
188 } else {
189 fileList.value = []
190 }
191 console.log(res)
192 }
177 </script> 193 </script>
178 <style lang="scss" scoped> 194 <style lang="scss" scoped>
179 .content { 195 .content {
......
...@@ -603,7 +603,8 @@ const goGuide = () => { ...@@ -603,7 +603,8 @@ const goGuide = () => {
603 router.push({ 603 router.push({
604 name: 'guide', 604 name: 'guide',
605 query: { 605 query: {
606 index: 8 606 index: 8,
607 cptId: matchData.value.id
607 } 608 }
608 }) 609 })
609 } 610 }
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!