0610fc57 by 杨炀

no message

1 parent 261424a0
1 # 页面标题
2 VITE_APP_TITLE = 中跆协后台管理系统
3
4 # 开发环境配置
5 VITE_APP_ENV = 'development'
6
7 # 中跆协管理系统/开发环境
8 VITE_APP_BASE_API = '/dev-api'
9
10 # 应用访问路径 例如使用前缀 /admin/
11 VITE_APP_CONTEXT_PATH = '/'
12
13 # 监控地址
14 VITE_APP_MONITRO_ADMIN = 'http://localhost:9090/admin/login'
15
16 # xxl-job 控制台地址
17 VITE_APP_XXL_JOB_ADMIN = 'http://localhost:9100/xxl-job-admin'
18
19 VITE_APP_SOCKET_URL='http://192.168.1.133:8088'
1 # 页面标题
2 VITE_APP_TITLE = 中跆协后台管理系统
3
4 # 生产环境配置
5 VITE_APP_ENV = 'production'
6
7 # 应用访问路径 例如使用前缀 /admin/
8 VITE_APP_CONTEXT_PATH = '/'
9
10 # 监控地址
11 VITE_APP_MONITRO_ADMIN = '/admin/login'
12
13 # 监控地址
14 VITE_APP_XXL_JOB_ADMIN = '/xxl-job-admin'
15
16 # 中跆协管理系统/生产环境
17 VITE_APP_BASE_API = '/prod-api'
18
19 # 是否在打包时开启压缩,支持 gzip 和 brotli
20 VITE_BUILD_COMPRESS = gzip
1 # 页面标题
2 VITE_APP_TITLE = 中跆协后台管理系统
3
4 # 生产环境配置
5 VITE_APP_ENV = 'production'
6
7 # 应用访问路径 例如使用前缀 /admin/
8 VITE_APP_CONTEXT_PATH = '/'
9
10 # 监控地址
11 VITE_APP_MONITRO_ADMIN = '/admin/login'
12
13 # 监控地址
14 VITE_APP_XXL_JOB_ADMIN = '/xxl-job-admin'
15
16 # 中跆协管理系统/测试环境
17 VITE_APP_BASE_API = '/stage-api'
18
19 # 是否在打包时开启压缩,支持 gzip 和 brotli
20 VITE_BUILD_COMPRESS = gzip
21
22 VITE_APP_SOCKET_URL='http://192.168.1.133:8088'
...\ No newline at end of file ...\ No newline at end of file
1 <!DOCTYPE html>
2 <html>
3
4 <head>
5 <meta charset="utf-8">
6 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
7 <meta name="renderer" content="webkit">
8 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
9 <link rel="icon" href="/favicon.ico">
10 <title>亚洲舞蹈大赛</title>
11 <!-- <script src="./browser.js"></script>-->
12 <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
13 <style>
14 html,
15 body,
16 #app {
17 height: 100%;
18 margin: 0px;
19 padding: 0px;
20 }
21
22 .chromeframe {
23 margin: 0.2em 0;
24 background: #ccc;
25 color: #000;
26 padding: 0.2em 0;
27 }
28
29 #loader-wrapper {
30 position: fixed;
31 top: 0;
32 left: 0;
33 width: 100%;
34 height: 100%;
35 z-index: 999999;
36 }
37
38 #loader {
39 display: block;
40 position: relative;
41 left: 50%;
42 top: 50%;
43 width: 150px;
44 height: 150px;
45 margin: -75px 0 0 -75px;
46 border-radius: 50%;
47 border: 3px solid transparent;
48 border-top-color: #FFF;
49 -webkit-animation: spin 2s linear infinite;
50 -ms-animation: spin 2s linear infinite;
51 -moz-animation: spin 2s linear infinite;
52 -o-animation: spin 2s linear infinite;
53 animation: spin 2s linear infinite;
54 z-index: 1001;
55 }
56
57 #loader:before {
58 content: "";
59 position: absolute;
60 top: 5px;
61 left: 5px;
62 right: 5px;
63 bottom: 5px;
64 border-radius: 50%;
65 border: 3px solid transparent;
66 border-top-color: #FFF;
67 -webkit-animation: spin 3s linear infinite;
68 -moz-animation: spin 3s linear infinite;
69 -o-animation: spin 3s linear infinite;
70 -ms-animation: spin 3s linear infinite;
71 animation: spin 3s linear infinite;
72 }
73
74 #loader:after {
75 content: "";
76 position: absolute;
77 top: 15px;
78 left: 15px;
79 right: 15px;
80 bottom: 15px;
81 border-radius: 50%;
82 border: 3px solid transparent;
83 border-top-color: #FFF;
84 -moz-animation: spin 1.5s linear infinite;
85 -o-animation: spin 1.5s linear infinite;
86 -ms-animation: spin 1.5s linear infinite;
87 -webkit-animation: spin 1.5s linear infinite;
88 animation: spin 1.5s linear infinite;
89 }
90
91
92 @-webkit-keyframes spin {
93 0% {
94 -webkit-transform: rotate(0deg);
95 -ms-transform: rotate(0deg);
96 transform: rotate(0deg);
97 }
98
99 100% {
100 -webkit-transform: rotate(360deg);
101 -ms-transform: rotate(360deg);
102 transform: rotate(360deg);
103 }
104 }
105
106 @keyframes spin {
107 0% {
108 -webkit-transform: rotate(0deg);
109 -ms-transform: rotate(0deg);
110 transform: rotate(0deg);
111 }
112
113 100% {
114 -webkit-transform: rotate(360deg);
115 -ms-transform: rotate(360deg);
116 transform: rotate(360deg);
117 }
118 }
119
120
121 #loader-wrapper .loader-section {
122 position: fixed;
123 top: 0;
124 width: 51%;
125 height: 100%;
126 background: #7171C6;
127 z-index: 1000;
128 -webkit-transform: translateX(0);
129 -ms-transform: translateX(0);
130 transform: translateX(0);
131 }
132
133 #loader-wrapper .loader-section.section-left {
134 left: 0;
135 }
136
137 #loader-wrapper .loader-section.section-right {
138 right: 0;
139 }
140
141
142 .loaded #loader-wrapper .loader-section.section-left {
143 -webkit-transform: translateX(-100%);
144 -ms-transform: translateX(-100%);
145 transform: translateX(-100%);
146 -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
147 transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
148 }
149
150 .loaded #loader-wrapper .loader-section.section-right {
151 -webkit-transform: translateX(100%);
152 -ms-transform: translateX(100%);
153 transform: translateX(100%);
154 -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
155 transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
156 }
157
158 .loaded #loader {
159 opacity: 0;
160 -webkit-transition: all 0.3s ease-out;
161 transition: all 0.3s ease-out;
162 }
163
164 .loaded #loader-wrapper {
165 visibility: hidden;
166 -webkit-transform: translateY(-100%);
167 -ms-transform: translateY(-100%);
168 transform: translateY(-100%);
169 -webkit-transition: all 0.3s 1s ease-out;
170 transition: all 0.3s 1s ease-out;
171 }
172
173 .no-js #loader-wrapper {
174 display: none;
175 }
176
177 .no-js h1 {
178 color: #222222;
179 }
180
181 #loader-wrapper .load_title {
182 font-family: 'Open Sans';
183 color: #FFF;
184 font-size: 19px;
185 width: 100%;
186 text-align: center;
187 z-index: 9999999999999;
188 position: absolute;
189 top: 60%;
190 opacity: 1;
191 line-height: 30px;
192 }
193
194 #loader-wrapper .load_title span {
195 font-weight: normal;
196 font-style: italic;
197 font-size: 13px;
198 color: #FFF;
199 opacity: 0.5;
200 }
201 </style>
202 </head>
203
204 <body>
205 <div id="app">
206 <div id="loader-wrapper">
207 <div id="loader"></div>
208 <div class="loader-section section-left"></div>
209 <div class="loader-section section-right"></div>
210 <div class="load_title">正在加载系统资源,请耐心等待</div>
211 </div>
212 </div>
213 <script type="module" src="/src/mainPc.js"></script>
214 </body>
215
216 </html>
1 <template> 1 <template>
2 <!-- <el-config-provider :locale="locale">-->
3 <router-view /> 2 <router-view />
4 <!-- </el-config-provider>-->
5
6 <reset-pwd ref="resetPwdRef" /> 3 <reset-pwd ref="resetPwdRef" />
7 </template> 4 </template>
8 5
9 <script setup> 6 <script setup>
10 import useSettingsStore from '@/store/modules/settings'
11 import { handleThemeStyle } from '@/utils/theme'
12 import { nextTick, onMounted, watch } from 'vue' 7 import { nextTick, onMounted, watch } from 'vue'
13 import useUserStore from '@/store/modules/user' 8 import { handleThemeStyle } from '@/utils/theme'
9 import useSettingsStore from '@/store/modules/settings'
14 import ResetPwd from '@/views/system/user/profile/components/resetPwd' 10 import ResetPwd from '@/views/system/user/profile/components/resetPwd'
11 import useUserStore from '@/store/modules/user'
15 import { getCurrentInstance } from '@vue/runtime-core' 12 import { getCurrentInstance } from '@vue/runtime-core'
16 // import { ElConfigProvider } from 'element-plus'
17 // import locale from 'element-plus/lib/locale/lang/zh-cn'
18 13
19 const userStore = useUserStore() 14 const userStore = useUserStore()
20 const { proxy } = getCurrentInstance() 15 const { proxy } = getCurrentInstance()
21 16
22 onMounted(() => { 17 onMounted(() => {
23 document.body.style.setProperty('--el-color-primary', '#453DEA') 18 document.body.style.setProperty('--el-color-primary', '#453DEA')
24 // 鼠标移动到按钮上方时显示的颜色,默认蓝色,可以和primary设置的颜色不一样
25 document.body.style.setProperty('--el-color-primary-light-3', '#8623FC') 19 document.body.style.setProperty('--el-color-primary-light-3', '#8623FC')
26 20 document.body.style.setProperty('--el-button-hover-bg-color', '#fff')
27 document.body.style.setProperty('--el-color-success', '#29c490')
28 document.body.style.setProperty('--el-color-success-light-3', '#54d0a6')
29 // danger
30 document.body.style.setProperty('--el-color-danger', '#d51515')
31 document.body.style.setProperty('--el-color-danger-light-3', '#d44')
32 // warning
33 document.body.style.setProperty('--el-color-warning', '#e6a23c')
34 document.body.style.setProperty('--el-color-warning-light-3', '#ebb563')
35
36 nextTick(() => { 21 nextTick(() => {
37 // 初始化主题样式 22 // 初始化主题样式
38 handleThemeStyle(useSettingsStore().theme) 23 handleThemeStyle(useSettingsStore().theme)
39 }) 24 })
40 }) 25 })
41 26
42 watch(() => userStore.user?.changePassFlag, (val) => { 27 // watch(() => userStore.user?.changePassFlag, (val) => {
43 if (val === '1') { 28 // if (val === '1') {
44 proxy.$modal.confirm('密码长期未更新,请及时更新').then(() => { 29 // proxy.$modal.confirm('密码长期未更新,请及时更新').then(() => {
45 proxy.$refs['resetPwdRef'].open() 30 // proxy.$refs['resetPwdRef'].open()
46 }) 31 // })
47 } 32 // }
48 }) 33 // })
49 34
50 </script> 35 </script>
36
51 <style lang="scss"> 37 <style lang="scss">
52 .app-container{ 38 :root {
53 background-color: #F5F7F9; 39 --el-color-golden: #946A12;
54 padding:20px; 40 --el-fill-color-light: #faf5f5;
55 min-height: calc(100vh - 85px); 41 --el-button-hover-border-color: #94080B;
42 --el-button-hover-bg-color: rgba(148, 8, 11, 0.3);
43 --el-fill-color-lighter: #F6F9FE!important;
56 } 44 }
57 45
58 /* 搜索栏 */ 46 .el-button:focus, .el-button:hover {
59 .from-Card{ 47 //--el-button-hover-border-color: #94080B;
60 background-color: #fff; 48 //--el-button-hover-bg-color: transparent;
61 padding: 20px;
62 } 49 }
63 .btn-card{
64 padding: 20px;
65 background: #fff;
66 border-radius: 10px;
67 50
51 .box {
52 width: 90%;
53 max-width: 1600px;
54 margin: auto;
68 } 55 }
69 /* 表格 */
70 .table{
71 background-color: #fff;
72 padding:0 20px 10px;
73 position: relative;
74 56
57 .app-container {
58 min-height: 100vh;
75 } 59 }
76 60
77 .box{ 61 .app-main {
78 background: #fff; 62 background: #F4F4F4;
79 border-radius: 5px; 63 }
80 padding: 10px; 64
65 .el-breadcrumb__inner {
66 display: flex;
67
68 .el-icon {
69 margin: 0 4px;
70 }
71 }
72
73 li.el-select-dropdown__item {
74 height: auto;
75 }
76
77 :root {
78 --el-menu-active-color: var(--el-color-primary);
81 } 79 }
82 80
83 /* 分页 */ 81 .el-popper .el-menu {
84 .foot{ 82 background: #fff;
85 background-color: #fff; 83 }
84 .el-popper .el-menu--horizontal .el-menu .el-menu-item {
85 background: transparent;
86 justify-content: center;
86 height: 50px; 87 height: 50px;
88 font-size: 18px;
89 }
90 .el-popper .el-menu--horizontal .el-menu .el-sub-menu .el-sub-menu__title {
91 background: transparent;
92 justify-content: center;
93 height: 50px;
94 font-size: 18px;
95 }
96 .el-popper .el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title {
97 color: #fff;
98 }
99
100 .el-popper .el-menu--horizontal .el-menu .el-menu-item.is-active {
101 color:var(--el-color-primary);
102 }
103
104 .el-popper, .el-menu--popup {
105 border-radius: 0;
106 }
107
108 :deep(.el-menu--popup) {
109 min-width: 130px;padding: 0;
110 }
111
112 .el-popper.is-light.is-pure {
113 border: none;
114 }
115
116 .el-popper {
117 .el-menu--horizontal .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal .el-menu-item:not(.is-disabled):hover {
118 color: var(--el-color-primary);
119 }
120
121 .el-menu--horizontal {
122 border: none;
123 }
124 }
125
126 .home-menu {
127
128 .el-menu {color: #000;}
129
130 .el-menu--horizontal>.el-menu-item {
131 transition: none;color: #000;padding: 6px 10px ;margin: 0 10px;border-radius: 18px;
132 }
133
134 .el-sub-menu .el-sub-menu__title {
135 font-size: 20px;color: #000;
136 }
137
138 .el-menu--horizontal > .el-sub-menu.is-active .el-sub-menu__title {
139 border-bottom: none;
140 color: var(--el-color-primary);
141 }
142
143 .el-menu--horizontal .el-menu .el-menu-item {
144 justify-content: center;
145 }
146
147 .el-menu--horizontal > .el-sub-menu .el-sub-menu__title:hover {
148 color: #453DEA;
149 }
150
151 .el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
152
153 }
154
155 .el-menu--horizontal .el-menu-item:not(.is-disabled):hover {
156 color: #453DEA;
157 }
158
159 .el-menu--horizontal > .el-menu-item.is-active {
160 border-bottom: none;background: linear-gradient(-90deg, #8623FC, #453DEA);
161 border-radius: 18px;color: #fff!important;
162 }
163
164 .el-menu--horizontal {
165 height: 35px;
166 border-bottom: none;
167 justify-content: space-between;
168 }
169
170 .el-menu--horizontal > .el-menu-item {
171 font-size: 20px;
172 }
87 } 173 }
88 174
175 @media (max-width: 1600px) {
176 .el-menu--horizontal > .el-menu-item {
177 padding: 0 15px;
178 }
179 }
89 180
90 .btn-top{ 181 @media (max-width: 1500px) {
91 margin-top: 10px; 182 .home-menu .el-menu--horizontal > .el-menu-item {
183 padding: 0 10px;
184 }
92 } 185 }
93 .el-table{ 186
94 background: url("@/assets/admin/tableBg.png") #F5FBFE no-repeat top; 187 @media (max-width: 1440px) {
95 background-color:#F5FBFE!important; 188 .fixed_nav{ transform: scale(0.8);
96 background-size: 750px; 189 transform-origin: left;}
97 --el-bg-color:#F5FBFE; 190 .home-menu .el-menu--horizontal > .el-menu-item {
98 --el-table-border-color:#e1e4ec; 191 font-size: 16px;
99 --el-fill-color-blank:transparent; 192 padding: 0 10px;
100 --el-fill-color-light:#fff; 193 }
194 .home-menu .el-sub-menu .el-sub-menu__title {
195 font-size: 16px;
196 }
197 .serverRow .item {
198 height: 260px;
199 }
200 .el-popper .el-menu--horizontal .el-menu .el-menu-item {
201 font-size: 16px;
202 }
101 } 203 }
102 204
103 // 审核通过添加背景色 205 //思源宋体
104 .success-row{ 206 @font-face {
105 --el-table-tr-bg-color: rgba(41, 196, 144,.15); 207 font-family: SC-song;
208 src: url("@/assets/fonts/SHSCN_regular.otf") format('otf');
106 } 209 }
107 210
108 .totalCost{ 211 .imgbox {
109 font-weight: 700; 212 img {
110 font-size: 16px; 213 width: 100%;
111 margin-top: 10px; 214 }
112 position: absolute; 215 }
113 bottom: 30px;
114 left: 20px;
115 z-index: 999;
116 216
117 span{ 217 .searchpp {
118 color: orange; 218 .el-dialog__headerbtn .el-dialog__close {
119 margin-right: 20px; 219 font-size: 33px;
120 } 220 }
121 221
222 &.el-dialog {
223 padding: 0 100px;
224 --el-dialog-title-font-size: 40px;
225 --el-dialog-padding-primary: 50px 20px 0 0;
226 box-shadow: 0 2000px 0 2000px rgba(0, 0, 0, 0.6);
227 }
228
229 .el-dialog__headerbtn {
230 right: 20px;
231 top: 30px;
232 }
233 }
234 .searchPark{padding: 10px 20px;height: 100%;
235 background: #F6F6F6;
236 .el-input__suffix{color:var(--el-color-primary)}
237 .el-icon{color:var(--el-color-primary)}
238 .el-input{--el-input-icon-color:var(--el-color-primary)}
239 }
240 .flexformItem{
241 display: flex;width: 100%;
242 .el-date-editor{
243 --el-date-editor-width:100%
244 }
245 .el-input__suffix{color:var(--el-color-primary)}
246 .el-icon{color:var(--el-color-primary)}
247 .el-input{--el-input-icon-color:var(--el-color-primary)}
248 }
249
250 .topBanner{
251 .imgbox{position: relative;height: 100%;
252 img{height: 100%;object-fit: cover;}
253 }
254 h3{position: absolute;bottom: 0;color: #fff;
255 font-size: 36px;margin: 0;
256 text-align: center;width: 100%;padding: 60px 0 40px;
257 background: linear-gradient(0deg,rgba(0,0,0,0.5),rgba(0,0,0,0));
258 }
122 } 259 }
260 .tablebody{width: 100%;overflow: auto}
123 261
124 // 禁选背景色 262 @media (max-width: 800px) {
125 .disabled-row{ 263 .box{width: 96%}
126 --el-table-tr-bg-color: rgba(36, 37, 37,0.1);
127 } 264 }
128 </style> 265 </style>
......
1 <template>
2 <router-view />
3 <reset-pwd ref="resetPwdRef" />
4 </template>
5
6 <script setup>
7 import { nextTick, onMounted, watch } from 'vue'
8 import { handleThemeStyle } from '@/utils/theme'
9 import useSettingsStore from '@/store/modules/settings'
10 import ResetPwd from '@/views/system/user/profile/components/resetPwd'
11 import useUserStore from '@/store/modules/user'
12 import { getCurrentInstance } from '@vue/runtime-core'
13
14 const userStore = useUserStore()
15 const { proxy } = getCurrentInstance()
16
17 onMounted(() => {
18 document.body.style.setProperty('--el-color-primary', '#453DEA')
19 document.body.style.setProperty('--el-color-primary-light-3', '#8623FC')
20 document.body.style.setProperty('--el-button-hover-bg-color', '#fff')
21 nextTick(() => {
22 // 初始化主题样式
23 handleThemeStyle(useSettingsStore().theme)
24 })
25 })
26
27 // watch(() => userStore.user?.changePassFlag, (val) => {
28 // if (val === '1') {
29 // proxy.$modal.confirm('密码长期未更新,请及时更新').then(() => {
30 // proxy.$refs['resetPwdRef'].open()
31 // })
32 // }
33 // })
34
35 </script>
36
37 <style lang="scss">
38 :root {
39 --el-color-golden: #946A12;
40 --el-fill-color-light: #faf5f5;
41 --el-button-hover-border-color: #94080B;
42 --el-button-hover-bg-color: rgba(148, 8, 11, 0.3);
43 --el-fill-color-lighter: #F6F9FE!important;
44 }
45
46 .el-button:focus, .el-button:hover {
47 //--el-button-hover-border-color: #94080B;
48 //--el-button-hover-bg-color: transparent;
49 }
50
51 .box {
52 width: 90%;
53 max-width: 1400px;
54 margin: auto;
55 }
56
57 .app-container {
58 min-height: 100vh;
59 }
60
61 .app-main {
62 background: #F4F4F4;
63 }
64
65 .el-breadcrumb__inner {
66 display: flex;
67
68 .el-icon {
69 margin: 0 4px;
70 }
71 }
72
73 li.el-select-dropdown__item {
74 height: auto;
75 }
76
77 :root {
78 --el-menu-active-color: var(--el-color-primary);
79 }
80
81 .el-popper .el-menu {
82 background: #fff;
83 }
84 .el-popper .el-menu--horizontal .el-menu .el-menu-item {
85 background: transparent;
86 justify-content: center;
87 height: 50px;
88 font-size: 18px;
89 }
90 .el-popper .el-menu--horizontal .el-menu .el-sub-menu .el-sub-menu__title {
91 background: transparent;
92 justify-content: center;
93 height: 50px;
94 font-size: 18px;
95 }
96 .el-popper .el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title {
97 color: #fff;
98 }
99
100 .el-popper .el-menu--horizontal .el-menu .el-menu-item.is-active {
101 color:var(--el-color-primary);
102 }
103
104 .el-popper, .el-menu--popup {
105 border-radius: 0;
106 }
107
108 :deep(.el-menu--popup) {
109 min-width: 130px;padding: 0;
110 }
111
112 .el-popper.is-light.is-pure {
113 border: none;
114 }
115
116 .el-popper {
117 .el-menu--horizontal .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal .el-menu-item:not(.is-disabled):hover {
118 color: var(--el-color-primary);
119 }
120
121 .el-menu--horizontal {
122 border: none;
123 }
124 }
125
126 .home-menu {
127
128 .el-menu {color: #000;}
129
130 .el-menu--horizontal>.el-menu-item {
131 transition: none;color: #000;padding: 6px 10px ;margin: 0 10px;border-radius: 18px;
132 }
133
134 .el-sub-menu .el-sub-menu__title {
135 font-size: 20px;color: #000;
136 }
137
138 .el-menu--horizontal > .el-sub-menu.is-active .el-sub-menu__title {
139 border-bottom: none;
140 color: var(--el-color-primary);
141 }
142
143 .el-menu--horizontal .el-menu .el-menu-item {
144 justify-content: center;
145 }
146
147 .el-menu--horizontal > .el-sub-menu .el-sub-menu__title:hover {
148 color: #453DEA;
149 }
150
151 .el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
152
153 }
154
155 .el-menu--horizontal .el-menu-item:not(.is-disabled):hover {
156 color: #453DEA;
157 }
158
159 .el-menu--horizontal > .el-menu-item.is-active {
160 border-bottom: none;background: linear-gradient(-90deg, #8623FC, #453DEA);
161 border-radius: 18px;color: #fff!important;
162 }
163
164 .el-menu--horizontal {
165 height: 35px;
166 border-bottom: none;
167 justify-content: space-between;
168 }
169
170 .el-menu--horizontal > .el-menu-item {
171 font-size: 20px;
172 }
173 }
174
175 @media (max-width: 1600px) {
176 .el-menu--horizontal > .el-menu-item {
177 padding: 0 15px;
178 }
179 }
180
181 @media (max-width: 1500px) {
182 .home-menu .el-menu--horizontal > .el-menu-item {
183 padding: 0 10px;
184 }
185 }
186
187 @media (max-width: 1440px) {
188 .fixed_nav{ transform: scale(0.8);
189 transform-origin: left;}
190 .home-menu .el-menu--horizontal > .el-menu-item {
191 font-size: 16px;
192 padding: 0 10px;
193 }
194 .home-menu .el-sub-menu .el-sub-menu__title {
195 font-size: 16px;
196 }
197 .serverRow .item {
198 height: 260px;
199 }
200 .el-popper .el-menu--horizontal .el-menu .el-menu-item {
201 font-size: 16px;
202 }
203 }
204
205 //思源宋体
206 @font-face {
207 font-family: SC-song;
208 src: url("@/assets/fonts/SHSCN_regular.otf") format('otf');
209 }
210
211 .imgbox {
212 img {
213 width: 100%;
214 }
215 }
216
217 .searchpp {
218 .el-dialog__headerbtn .el-dialog__close {
219 font-size: 33px;
220 }
221
222 &.el-dialog {
223 padding: 0 100px;
224 --el-dialog-title-font-size: 40px;
225 --el-dialog-padding-primary: 50px 20px 0 0;
226 box-shadow: 0 2000px 0 2000px rgba(0, 0, 0, 0.6);
227 }
228
229 .el-dialog__headerbtn {
230 right: 20px;
231 top: 30px;
232 }
233 }
234 .searchPark{padding: 10px 20px;height: 100%;
235 background: #F6F6F6;
236 .el-input__suffix{color:var(--el-color-primary)}
237 .el-icon{color:var(--el-color-primary)}
238 .el-input{--el-input-icon-color:var(--el-color-primary)}
239 }
240 .flexformItem{
241 display: flex;width: 100%;
242 .el-date-editor{
243 --el-date-editor-width:100%
244 }
245 .el-input__suffix{color:var(--el-color-primary)}
246 .el-icon{color:var(--el-color-primary)}
247 .el-input{--el-input-icon-color:var(--el-color-primary)}
248 }
249
250 .topBanner{
251 .imgbox{position: relative;height: 100%;
252 img{height: 100%;object-fit: cover;}
253 }
254 h3{position: absolute;bottom: 0;color: #fff;
255 font-size: 36px;margin: 0;
256 text-align: center;width: 100%;padding: 60px 0 40px;
257 background: linear-gradient(0deg,rgba(0,0,0,0.5),rgba(0,0,0,0));
258 }
259 }
260
261
262 </style>
1 <template>
2 <!-- <el-config-provider :locale="locale">-->
3 <router-view />
4 <!-- </el-config-provider>-->
5
6 <reset-pwd ref="resetPwdRef" />
7 </template>
8
9 <script setup>
10 import useSettingsStore from '@/store/modules/settings'
11 import { handleThemeStyle } from '@/utils/theme'
12 import { nextTick, onMounted, watch } from 'vue'
13 import useUserStore from '@/store/modules/user'
14 import ResetPwd from '@/views/system/user/profile/components/resetPwd'
15 import { getCurrentInstance } from '@vue/runtime-core'
16 // import { ElConfigProvider } from 'element-plus'
17 // import locale from 'element-plus/lib/locale/lang/zh-cn'
18
19 const userStore = useUserStore()
20 const { proxy } = getCurrentInstance()
21
22 onMounted(() => {
23 document.body.style.setProperty('--el-color-primary', '#453DEA')
24 // 鼠标移动到按钮上方时显示的颜色,默认蓝色,可以和primary设置的颜色不一样
25 document.body.style.setProperty('--el-color-primary-light-3', '#8623FC')
26
27 document.body.style.setProperty('--el-color-success', '#29c490')
28 document.body.style.setProperty('--el-color-success-light-3', '#54d0a6')
29 // danger
30 document.body.style.setProperty('--el-color-danger', '#d51515')
31 document.body.style.setProperty('--el-color-danger-light-3', '#d44')
32 // warning
33 document.body.style.setProperty('--el-color-warning', '#e6a23c')
34 document.body.style.setProperty('--el-color-warning-light-3', '#ebb563')
35
36 nextTick(() => {
37 // 初始化主题样式
38 handleThemeStyle(useSettingsStore().theme)
39 })
40 })
41
42 watch(() => userStore.user?.changePassFlag, (val) => {
43 if (val === '1') {
44 proxy.$modal.confirm('密码长期未更新,请及时更新').then(() => {
45 proxy.$refs['resetPwdRef'].open()
46 })
47 }
48 })
49
50 </script>
51 <style lang="scss">
52 .app-container{
53 background-color: #F5F7F9;
54 padding:20px;
55 min-height: calc(100vh - 85px);
56 }
57
58 /* 搜索栏 */
59 .from-Card{
60 background-color: #fff;
61 padding: 20px;
62 }
63 .btn-card{
64 padding: 20px;
65 background: #fff;
66 border-radius: 10px;
67
68 }
69 /* 表格 */
70 .table{
71 background-color: #fff;
72 padding:0 20px 10px;
73 position: relative;
74
75 }
76
77 .box{
78 background: #fff;
79 border-radius: 5px;
80 padding: 10px;
81 }
82
83 /* 分页 */
84 .foot{
85 background-color: #fff;
86 height: 50px;
87 }
88
89
90 .btn-top{
91 margin-top: 10px;
92 }
93 .el-table{
94 background: url("@/assets/admin/tableBg.png") #F5FBFE no-repeat top;
95 background-color:#F5FBFE!important;
96 background-size: 750px;
97 --el-bg-color:#F5FBFE;
98 --el-table-border-color:#e1e4ec;
99 --el-fill-color-blank:transparent;
100 --el-fill-color-light:#fff;
101 }
102
103 // 审核通过添加背景色
104 .success-row{
105 --el-table-tr-bg-color: rgba(41, 196, 144,.15);
106 }
107
108 .totalCost{
109 font-weight: 700;
110 font-size: 16px;
111 margin-top: 10px;
112 position: absolute;
113 bottom: 30px;
114 left: 20px;
115 z-index: 999;
116
117 span{
118 color: orange;
119 margin-right: 20px;
120 }
121
122 }
123
124 // 禁选背景色
125 .disabled-row{
126 --el-table-tr-bg-color: rgba(36, 37, 37,0.1);
127 }
128 </style>

291 KB | W: | H:

129 KB | W: | H:

src/assets/dance/map.png
src/assets/dance/map.png
src/assets/dance/map.png
src/assets/dance/map.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -496,13 +496,13 @@ img{display: block;} ...@@ -496,13 +496,13 @@ img{display: block;}
496 } 496 }
497 } 497 }
498 .bg-lineg{ background: linear-gradient(90deg, #8623FC, #453DEA);color: #fff;} 498 .bg-lineg{ background: linear-gradient(90deg, #8623FC, #453DEA);color: #fff;}
499 .lineHead{height: 50px;padding: 15px; 499 .lineHead{height: 50px;padding: 15px;overflow: auto;
500 background: linear-gradient(90deg, #8623FC, #453DEA); 500 background: linear-gradient(90deg, #8623FC, #453DEA);
501 h3{margin: 0;background: #FFFFFF; 501 h3{margin: 0;background: #FFFFFF;
502 font-size: 18px; 502 font-size: 18px;
503 color: var(--el-color-primary); 503 color: var(--el-color-primary);
504 border-radius: 5px;display: inline;padding: 5px 15px;} 504 border-radius: 5px;display: inline;padding: 5px 15px;}
505 ul{margin: 0;padding: 0; 505 ul{margin: 0;padding: 0;white-space: nowrap;
506 li{border-radius: 5px;display: inline;padding: 5px 15px; font-size: 18px; 506 li{border-radius: 5px;display: inline;padding: 5px 15px; font-size: 18px;
507 color: #fff;cursor: pointer;} 507 color: #fff;cursor: pointer;}
508 li.active{background: #FFFFFF;color: var(--el-color-primary);cursor: default;} 508 li.active{background: #FFFFFF;color: var(--el-color-primary);cursor: default;}
...@@ -510,7 +510,7 @@ img{display: block;} ...@@ -510,7 +510,7 @@ img{display: block;}
510 } 510 }
511 .news-l-r{ 511 .news-l-r{
512 .item{display: flex;border-bottom: 1px dashed #EEEEEE;padding: 15px;cursor: pointer; 512 .item{display: flex;border-bottom: 1px dashed #EEEEEE;padding: 15px;cursor: pointer;
513 .imgbox{aspect-ratio: 16/9;width: 110px;margin-right: 10px; flex: 0 0 auto; 513 .imgbox{aspect-ratio: 16/9;width: 200px;margin-right: 10px; flex: 0 0 auto;
514 img{height: 100%;object-fit: cover;} 514 img{height: 100%;object-fit: cover;}
515 } 515 }
516 .info{ flex: 1 1 auto; 516 .info{ flex: 1 1 auto;
...@@ -535,6 +535,7 @@ img{display: block;} ...@@ -535,6 +535,7 @@ img{display: block;}
535 } 535 }
536 .item:hover{ 536 .item:hover{
537 h3{color:var(--el-color-primary);} 537 h3{color:var(--el-color-primary);}
538 h2{color:var(--el-color-primary);}
538 } 539 }
539 } 540 }
540 .nakedTitle{display: flex;justify-content: space-between;align-items: baseline; 541 .nakedTitle{display: flex;justify-content: space-between;align-items: baseline;
...@@ -552,7 +553,7 @@ img{display: block;} ...@@ -552,7 +553,7 @@ img{display: block;}
552 } 553 }
553 .topNews{align-items: flex-start;} 554 .topNews{align-items: flex-start;}
554 .carouselImg{position: relative;height: 100%; 555 .carouselImg{position: relative;height: 100%;
555 background: url("@/assets/v1/default.jpg") #f4f4f4 no-repeat center; 556 background: #f4f4f4;
556 background-size: cover; 557 background-size: cover;
557 img{object-fit: cover;height: 100%;} 558 img{object-fit: cover;height: 100%;}
558 .date{width: 60px;height: 60px;text-align: center; 559 .date{width: 60px;height: 60px;text-align: center;
...@@ -911,7 +912,7 @@ img{display: block;} ...@@ -911,7 +912,7 @@ img{display: block;}
911 912
912 .item{ 913 .item{
913 .imgbox{ 914 .imgbox{
914 background: url("@/assets/v1/default.jpg") #f4f4f4 no-repeat center; 915 background: #f4f4f4;
915 background-size: cover; 916 background-size: cover;
916 } 917 }
917 } 918 }
...@@ -960,8 +961,8 @@ img{display: block;} ...@@ -960,8 +961,8 @@ img{display: block;}
960 line-height: 1;padding-left: 10px; 961 line-height: 1;padding-left: 10px;
961 border-left: 1px solid var(--el-color-primary); 962 border-left: 1px solid var(--el-color-primary);
962 color: var(--el-color-primary);} 963 color: var(--el-color-primary);}
963 @media (max-width: 500px) { 964 @media (max-width: 800px) {
964 .app-main{height: 100vh; 965 .app-main{
965 overflow: auto; 966 overflow: auto;
966 background: #F7F8FA;} 967 background: #F7F8FA;}
967 } 968 }
...@@ -1378,3 +1379,16 @@ img{display: block;} ...@@ -1378,3 +1379,16 @@ img{display: block;}
1378 span:hover{font-weight: bold;} 1379 span:hover{font-weight: bold;}
1379 .active{color: var(--el-color-primary);font-weight: bold;cursor: pointer;} 1380 .active{color: var(--el-color-primary);font-weight: bold;cursor: pointer;}
1380 } 1381 }
1382 .mapBox{word-break: break-all;}
1383 @media (max-width: 800px) {
1384 //.liveImgbox{margin: 0 0 20px;}
1385 //.videoImgbox{margin: 0 0 20px;}
1386 //.picbox{margin: 0 0 20px;}
1387 .leftboderTT{font-size: 20px}
1388 .mapBox{
1389 div{padding-left: 40px;}
1390 .content{ width: 80%;left: 10%;padding:10px 20px 0 20px;}
1391 .address{margin: 30px 0;}
1392 p{text-align: left;word-break: break-all;}
1393 }
1394 }
......

200 Bytes | W: | H:

3.53 KB | W: | H:

src/assets/v1/menu.png
src/assets/v1/menu.png
src/assets/v1/menu.png
src/assets/v1/menu.png
  • 2-up
  • Swipe
  • Onion skin

399 KB | W: | H:

191 KB | W: | H:

src/assets/zhinan/map.png
src/assets/zhinan/map.png
src/assets/zhinan/map.png
src/assets/zhinan/map.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -21,7 +21,6 @@ const tagsViewStore = useTagsViewStore() ...@@ -21,7 +21,6 @@ const tagsViewStore = useTagsViewStore()
21 <style lang="scss" scoped> 21 <style lang="scss" scoped>
22 .app-main { 22 .app-main {
23 /* 50= navbar 50 */ 23 /* 50= navbar 50 */
24 min-height: calc(100vh - 50px);
25 width: 100%; 24 width: 100%;
26 position: relative; 25 position: relative;
27 overflow: hidden; 26 overflow: hidden;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
5 <el-col :lg="12" :md="12" :xs="24"> 5 <el-col :lg="12" :md="12" :xs="24">
6 <ul> 6 <ul>
7 <li> 7 <li>
8 <router-link to="/about">亚洲舞蹈大赛版权所有</router-link> 8 <router-link to="/about">亚洲体育舞蹈节版权所有</router-link>
9 </li> 9 </li>
10 <li> 10 <li>
11 <a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:京ICP备2022009428号-1</a> 11 <a target="_blank" href="https://beian.miit.gov.cn/">ICP备案号:京ICP备2022009428号-1</a>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
30 <router-link to="/about">All rights reserved WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024</router-link> 30 <router-link to="/about">All rights reserved WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024</router-link>
31 </li> 31 </li>
32 <li> 32 <li>
33 Phone: Miss Chang +86 13921876678 33 Phone: Miss Chang +86 18888888888
34 </li> 34 </li>
35 </ul> 35 </ul>
36 </el-col> 36 </el-col>
......
1 <template> 1 <template>
2 <div class="topNav forPc"> 2 <div class="topNav">
3 <router-link to="/"> 3 <router-link to="/">
4 <img class="logo" src="@/assets/v1/nav_logo.png"> 4 <img class="logo" src="@/assets/v1/nav_logo.png">
5 </router-link> 5 </router-link>
6 6
7 <div class="home-menu"> 7 <div class="home-menu forPc">
8 <el-menu 8 <el-menu
9 v-if="language==0" 9 v-if="language==0"
10 router :default-active="activeIndex" mode="horizontal" :ellipsis="false" 10 router :default-active="activeIndex" :mode="mode" :ellipsis="true"
11 popper-effect="dark" @select="handleSelect" 11 popper-effect="dark" @select="handleSelect"
12 > 12 >
13 <el-menu-item index="/">首页</el-menu-item> 13 <el-menu-item index="/">首页</el-menu-item>
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
25 </el-menu> 25 </el-menu>
26 <el-menu 26 <el-menu
27 v-if="language==1" 27 v-if="language==1"
28 router :default-active="activeIndex" mode="horizontal" :ellipsis="false" 28 router :default-active="activeIndex" mode="horizontal" :ellipsis="true"
29 popper-effect="dark" @select="handleSelect" 29 popper-effect="dark" @select="handleSelect"
30 > 30 >
31 <el-menu-item index="/">HOME</el-menu-item> 31 <el-menu-item index="/">HOME</el-menu-item>
...@@ -36,22 +36,25 @@ ...@@ -36,22 +36,25 @@
36 <el-menu-item index="/meta">MEDIA</el-menu-item> 36 <el-menu-item index="/meta">MEDIA</el-menu-item>
37 <el-menu-item index="/guide">GUIDELINE</el-menu-item> 37 <el-menu-item index="/guide">GUIDELINE</el-menu-item>
38 <el-sub-menu index="/about"> 38 <el-sub-menu index="/about">
39 <template #title>ABOUT US</template> 39 <template #title>CONTACT & MORE</template>
40 <el-menu-item index="/about/wuDao">舞蹈节</el-menu-item> 40 <el-menu-item index="/about/wuDao">About Us</el-menu-item>
41 <el-menu-item index="/about/culture">地方文化</el-menu-item> 41 <el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item>
42 <el-menu-item index="/about/culture">Culture</el-menu-item>
42 </el-sub-menu> 43 </el-sub-menu>
43 </el-menu> 44 </el-menu>
44 </div> 45 </div>
45 46
46 <div class="flex-right"> 47 <div class="flex-right">
47 <div class="search mr20"> 48 <div class="search mr20 forPc">
48 <el-button :icon="Search" circle @click="searchNews" /> 49 <el-button :icon="Search" circle @click="searchNews" />
49 </div> 50 </div>
50 <div class="languageBtn"> 51 <div class="languageBtn">
51 <span :class="language==0?'active':''" @click="changeLanguage(0)">中文</span> 52 <span v-if="language==0" :class="language==0?'active':''" @click="changeLanguage(0)">中文</span>
53 <span v-else :class="language==0?'active':''" @click="changeLanguage(0)">CN</span>
54 |
52 <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span> 55 <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span>
53 </div> 56 </div>
54 <div class="ml20"> 57 <div class="ml20 forPc" >
55 <el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn"> 58 <el-button v-if="!isLogin" style="border-radius: 20px;" class="loginBtn">
56 <span v-if="language==0" @click="goLogin">登录</span> 59 <span v-if="language==0" @click="goLogin">登录</span>
57 <span v-if="language==1" @click="goLogin">LOGIN</span> 60 <span v-if="language==1" @click="goLogin">LOGIN</span>
...@@ -62,27 +65,63 @@ ...@@ -62,27 +65,63 @@
62 &nbsp;&nbsp;<span @click="logout()">退出</span></el-button> 65 &nbsp;&nbsp;<span @click="logout()">退出</span></el-button>
63 </div> 66 </div>
64 </div> 67 </div>
68 <a class="ropenbtn" @click="showDrawer">
69 <img src="@/assets/v1/menu.png">
70 </a>
65 </div> 71 </div>
66 72
67 <div class="forWei ">
68 <div class="weitop">
69 <img src="@/assets/v1/nav_logo.png" style="height: 40px;margin: 10px">
70 <a class="ropenbtn" @click="showDrawer">
71 <img src="@/assets/v1/menu.png">
72 </a>
73 </div>
74 </div>
75 <el-drawer 73 <el-drawer
76 v-model="drawer" 74 v-model="drawer" size="100%"
77 :style="{'--el-drawer-padding-primary':0}" direction="ltr" :with-header="false" title="菜单" 75 :style="{'--el-drawer-padding-primary':0}" direction="ltr"
76 :with-header="false" title="菜单"
78 > 77 >
79 <el-menu 78 <div class="weiHead">
80 :style="{'--el-menu-hover-bg-color':'#faeeed'}" 79 <div class="languageBtn">
81 class="weiMenu" 80 <span v-if="language==0" :class="language==0?'active':''" @click="changeLanguage(0)">中文</span>
82 router :default-active="activeIndex" mode="vertical" :ellipsis="false" 81 <span v-else :class="language==0?'active':''" @click="changeLanguage(0)">CN</span>
83 popper-effect="dark" @select="handleSelect" 82 |
83 <span :class="language==1?'active':''" @click="changeLanguage(1)">EN</span>
84 </div>
85
86 <el-icon color="#453DEA" size="30" @click="closeDrawer"><close/></el-icon>
87 </div>
88
89 <el-menu class="weiMenu"
90 v-if="language==0"
91 router :default-active="activeIndex" mode="vertical" :ellipsis="false"
92 popper-effect="dark" @select="handleSelect"
84 > 93 >
85 <el-menu-item index="/">首页</el-menu-item> 94 <el-menu-item index="/">首页</el-menu-item>
95 <el-menu-item index="/news">新闻资讯</el-menu-item>
96 <el-menu-item index="/notice">通知公告</el-menu-item>
97 <el-menu-item index="/match/list/0">大赛报名</el-menu-item>
98 <el-menu-item index="/saiC">赛程安排</el-menu-item>
99 <el-menu-item index="/meta">媒体中心</el-menu-item>
100 <el-menu-item index="/guide">参赛指南</el-menu-item>
101 <el-sub-menu index="/about">
102 <template #title>关于我们</template>
103 <el-menu-item index="/about/wuDao">舞蹈节</el-menu-item>
104 <el-menu-item index="/about/culture">地方文化</el-menu-item>
105 </el-sub-menu>
106 </el-menu>
107 <el-menu class="weiMenu"
108 v-if="language==1"
109 router :default-active="activeIndex" mode="vertical" :ellipsis="false"
110 popper-effect="dark" @select="handleSelect"
111 >
112 <el-menu-item index="/">HOME</el-menu-item>
113 <el-menu-item index="/news">NEWS</el-menu-item>
114 <el-menu-item index="/notice">NOTICEBOARD</el-menu-item>
115 <el-menu-item index="/match/list/0">SIGN UP</el-menu-item>
116 <el-menu-item index="/saiC">COMPETITIONS</el-menu-item>
117 <el-menu-item index="/meta">MEDIA</el-menu-item>
118 <el-menu-item index="/guide">GUIDELINE</el-menu-item>
119 <el-sub-menu index="/about">
120 <template #title>CONTACT & MORE</template>
121 <el-menu-item index="/about/wuDao">About Us</el-menu-item>
122 <el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item>
123 <el-menu-item index="/about/culture">Culture</el-menu-item>
124 </el-sub-menu>
86 </el-menu> 125 </el-menu>
87 </el-drawer> 126 </el-drawer>
88 <LoginDialog ref="pcloginDialog" @submitForm="reFlash" /> 127 <LoginDialog ref="pcloginDialog" @submitForm="reFlash" />
...@@ -149,24 +188,29 @@ const activeIndex = ref('/') ...@@ -149,24 +188,29 @@ const activeIndex = ref('/')
149 const registerVisible = ref(false) 188 const registerVisible = ref(false)
150 const loginForm = ref({}) 189 const loginForm = ref({})
151 const drawer = ref(false) 190 const drawer = ref(false)
191 const mode = ref('horizontal')
152 const language = ref(cache.local.get('language') || 0) 192 const language = ref(cache.local.get('language') || 0)
153 onMounted(() => { 193 onMounted(() => {
194 console.log(window.location.href)
154 if (useUserStore().perId) { 195 if (useUserStore().perId) {
155 isLogin.value = true 196 isLogin.value = true
156 } 197 }
157 198 if (window.location.href.indexOf('en') > -1) {
199 cache.local.set('language', 1)
200 // location.reload()
201 }
158 if (route.fullPath.indexOf('news') > -1) { 202 if (route.fullPath.indexOf('news') > -1) {
159 activeIndex.value = '/news' 203 activeIndex.value = '/news'
160 } else if (route.fullPath.indexOf('notice') > -1) { 204 } else if (route.fullPath.indexOf('notice') > -1) {
161 activeIndex.value = '/notice' 205 activeIndex.value = '/notice'
162 } else if (route.fullPath.indexOf('about') > -1) { 206 } else if (route.fullPath.indexOf('about') > -1) {
163 activeIndex.value = '/about' 207 activeIndex.value = '/about'
164 } else if (route.fullPath.indexOf('teen') > -1) { 208 } else if (route.fullPath.indexOf('mate') > -1) {
165 activeIndex.value = '/teen' 209 activeIndex.value = '/mate'
166 } else if (route.fullPath.indexOf('fitness') > -1) { 210 } else if (route.fullPath.indexOf('guide') > -1) {
167 activeIndex.value = '/fitness' 211 activeIndex.value = '/guide'
168 } else if (route.fullPath.indexOf('dope') > -1) { 212 } else if (route.fullPath.indexOf('saiC') > -1) {
169 activeIndex.value = '/dope' 213 activeIndex.value = '/saiC'
170 } 214 }
171 // console.log(activeIndex.value) 215 // console.log(activeIndex.value)
172 }) 216 })
...@@ -178,6 +222,9 @@ function changeLanguage(n) { ...@@ -178,6 +222,9 @@ function changeLanguage(n) {
178 function showDrawer() { 222 function showDrawer() {
179 drawer.value = true 223 drawer.value = true
180 } 224 }
225 function closeDrawer() {
226 drawer.value = false
227 }
181 function handleSelect(key, keyPath) { 228 function handleSelect(key, keyPath) {
182 // console.log(key) 229 // console.log(key)
183 activeIndex.value = key 230 activeIndex.value = key
...@@ -194,13 +241,13 @@ const logout = () => { ...@@ -194,13 +241,13 @@ const logout = () => {
194 } 241 }
195 242
196 const goLogin = (flag) => { 243 const goLogin = (flag) => {
197 let param = null 244 // let param = null
198 if (_.isBoolean(flag)) { 245 // if (_.isBoolean(flag)) {
199 param = { 246 // param = {
200 notShowClose: flag 247 // notShowClose: flag
201 } 248 // }
202 } 249 // }
203 proxy.$refs['pcloginDialog'].open(param) 250 // proxy.$refs['pcloginDialog'].open(param)
204 } 251 }
205 const goRegister = () => { 252 const goRegister = () => {
206 registerVisible.value = true 253 registerVisible.value = true
...@@ -240,20 +287,7 @@ function getCode() { ...@@ -240,20 +287,7 @@ function getCode() {
240 287
241 } 288 }
242 289
243 .quickNav {
244 a {
245 padding: 0 25px;
246 line-height: 1;
247 border-right: 1px solid #DCDCDC;
248 font-size: 14px;
249 color: #9D630F;
250 290
251 &:last-child {
252 border-right: none;
253 }
254 &:hover{font-weight: bold;text-decoration: underline;}
255 }
256 }
257 291
258 .topNav { 292 .topNav {
259 box-shadow: 0px 0px 13px rgba(113,113,113); 293 box-shadow: 0px 0px 13px rgba(113,113,113);
...@@ -305,37 +339,51 @@ function getCode() { ...@@ -305,37 +339,51 @@ function getCode() {
305 background: var(--el-color-primary); 339 background: var(--el-color-primary);
306 } 340 }
307 341
308 @media (max-width: 1000px) { 342
309 .box { 343 .ropenbtn{padding: 10px;display: none;
310 width: 100% 344 img{ width: 50px;}
311 }
312 .flex-right {
313 .quickNav a {
314 padding: 0 4px;
315 border: none;
316 }
317 } 345 }
346
347 :deep(.el-input){height: 100%}
348 :deep(.el-form-item){height: 40px;}
349 .weiMenu.el-menu{
350 border: none;
351 :deep(.el-menu-item.is-active){color: var(--el-color-primary);}
352 }
353 .weiHead{display: flex;justify-content: end;padding: 15px;align-items: center;
354 .languageBtn{font-size: 20px;margin-right: 20px;line-height: 30px;}
355 }
356 .weiMenu{
357 .el-menu-item{font-size: 20px}
358 :deep(.el-sub-menu__title){font-size: 20px}
359 :deep(.el-sub-menu .el-sub-menu__icon-arrow){font-size: 20px}
318 } 360 }
319 361
320 @media (max-width: 750px) { 362 @media (max-width: 1400px) {
321 .search { 363 .search {
322 display: none 364 display: none;
323 } 365 }
324 } 366 }
325 367 @media (max-width: 1340px) {
326 @media (max-width: 500px) { 368 .loginBtn {
327 .forPc {
328 display: none; 369 display: none;
329 } 370 }
371 .home-menu .el-menu--horizontal > .el-menu-item{margin: 0; }
330 } 372 }
331 .weitop{display: flex;justify-content: space-between; 373 @media (max-width: 1000px) {
332 .ropenbtn{padding: 10px} 374 .box {
375 width: 100%
376 }
333 } 377 }
334 :deep(.el-input){height: 100%} 378
335 :deep(.el-form-item){height: 40px;} 379 @media (max-width: 800px) {
336 .weiMenu.el-menu{ 380
337 border: none; 381 .ropenbtn{display: block}
338 :deep(.el-menu-item.is-active){color: var(--el-color-primary);} 382
383 .forPc {
384 display: none;
385 }
339 } 386 }
387
340 </style> 388 </style>
341 389
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
13 <style lang="scss" scoped> 13 <style lang="scss" scoped>
14 .app-main { 14 .app-main {
15 /* 50= navbar 50 */ 15 /* 50= navbar 50 */
16 min-height: calc(100vh - 50px);
17 width: 100%; 16 width: 100%;
18 position: relative; 17 position: relative;
19 overflow: auto; 18 overflow: auto;
......
...@@ -6,18 +6,9 @@ ...@@ -6,18 +6,9 @@
6 > 6 >
7 <div class="searchBody"> 7 <div class="searchBody">
8 <div class="searchline"> 8 <div class="searchline">
9 <el-input v-model="query.name" placeholder="请输入关键词搜索" @change="search" /> 9 <el-input v-model="query.name" placeholder="Search entire site" @change="search" />
10 <el-button :icon="Search" @click="search">search</el-button> 10 <el-button :icon="Search" @click="search">search</el-button>
11 </div> 11 </div>
12 <h2>近期热门</h2>
13 <el-row class="newsimgcover" :gutter="20">
14 <el-col v-for="(n,index) in hottest" v-show="index<4" :key="index" :span="6">
15 <div class="item shadow" @click="goDetail(n)">
16 <div class="imgbox"><img :src="fillImgUrl_webSite(n.picUrl)"></div>
17 <h3 class="esp">{{ n.name }}</h3>
18 </div>
19 </el-col>
20 </el-row>
21 12
22 </div> 13 </div>
23 </el-dialog> 14 </el-dialog>
......
...@@ -3,12 +3,9 @@ import { createApp } from 'vue' ...@@ -3,12 +3,9 @@ import { createApp } from 'vue'
3 import Cookies from 'js-cookie' 3 import Cookies from 'js-cookie'
4 4
5 import ElementPlus from 'element-plus' 5 import ElementPlus from 'element-plus'
6 import locale from 'element-plus/lib/locale/lang/zh-cn' // 中文语言
7
8 import '@/assets/styles/index.scss' // global css 6 import '@/assets/styles/index.scss' // global css
9 import App from './App' 7 import App from './App'
10 import store from './store' 8 import store from './store'
11 import router from './router'
12 import directive from './directive' // directive 9 import directive from './directive' // directive
13 10
14 // 注册指令 11 // 注册指令
...@@ -20,29 +17,20 @@ import 'virtual:svg-icons-register' ...@@ -20,29 +17,20 @@ import 'virtual:svg-icons-register'
20 import SvgIcon from '@/components/SvgIcon' 17 import SvgIcon from '@/components/SvgIcon'
21 import elementIcons from '@/components/SvgIcon/svgicon' 18 import elementIcons from '@/components/SvgIcon/svgicon'
22 19
23 import './permission' // permission control 20 import './permissionPc' // permission control
21 import * as socket from './utils/sockets'
24 22
25 import { useDict } from '@/utils/dict' 23 import { useDict } from '@/utils/dict'
26 import { getConfigKey, updateConfigByKey } from '@/api/system/config' 24 import { getConfigKey, updateConfigByKey } from '@/api/system/config'
27 import { 25 import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels, fillImgUrl, downloadFile } from '@/utils/ruoyi'
28 parseTime, 26 import { CountDown } from 'vant'
29 resetForm, 27 import 'vant/lib/index.css'
30 addDateRange,
31 handleTree,
32 selectDictLabel,
33 selectDictLabels,
34 fillImgUrl
35 } from '@/utils/ruoyi'
36
37 import VueUeditorWrap from 'vue-ueditor-wrap'
38
39 // 分页组件 28 // 分页组件
40 import Pagination from '@/components/Pagination' 29 import PaginationPc from '@/components/PaginationPc'
41 // 自定义表格工具组件 30 // 自定义表格工具组件
42 import RightToolbar from '@/components/RightToolbar' 31 import RightToolbar from '@/components/RightToolbar'
43 // 富文本组件 32 // 富文本组件
44 import Editor from '@/components/Editor' 33 import Editor from '@/components/Editor'
45 import UEditor from '@/components/UEditor'
46 // 文件上传组件 34 // 文件上传组件
47 import FileUpload from '@/components/FileUpload' 35 import FileUpload from '@/components/FileUpload'
48 // 图片上传组件 36 // 图片上传组件
...@@ -56,7 +44,18 @@ import TreeSelect from '@/components/TreeSelect' ...@@ -56,7 +44,18 @@ import TreeSelect from '@/components/TreeSelect'
56 import DictTag from '@/components/DictTag' 44 import DictTag from '@/components/DictTag'
57 45
58 import draggable from 'vuedraggable' 46 import draggable from 'vuedraggable'
47 import wePay from '@/components/hy/wePay'
48
49 import VueVideoPlayer from '@videojs-player/vue'
50 import 'video.js/dist/video-js.min.css'
51 import cache from '@/plugins/cache'
59 52
53 import routerCn from './routerPc/cn'
54 import routerEn from './routerPc/en'
55 import localeCn from 'element-plus/lib/locale/lang/zh-cn' // 中文语言
56 import localeEn from 'element-plus/lib/locale/lang/en'
57
58 const language = cache.local.get('language') || 0
60 const app = createApp(App) 59 const app = createApp(App)
61 60
62 // 全局方法挂载 61 // 全局方法挂载
...@@ -71,10 +70,17 @@ app.config.globalProperties.addDateRange = addDateRange ...@@ -71,10 +70,17 @@ app.config.globalProperties.addDateRange = addDateRange
71 app.config.globalProperties.selectDictLabel = selectDictLabel 70 app.config.globalProperties.selectDictLabel = selectDictLabel
72 app.config.globalProperties.selectDictLabels = selectDictLabels 71 app.config.globalProperties.selectDictLabels = selectDictLabels
73 app.config.globalProperties.fillImgUrl = fillImgUrl 72 app.config.globalProperties.fillImgUrl = fillImgUrl
73 app.config.globalProperties.fillImgUrl_train = (url) => fillImgUrl(url, 'ztx-train')
74 app.config.globalProperties.fillImgUrl_match = (url) => fillImgUrl(url, 'ztx-match')
75 app.config.globalProperties.fillImgUrl_webSite = (url) => fillImgUrl(url, 'ztx-webSite')
76 app.config.globalProperties.downloadFile = downloadFile
77 app.config.globalProperties.downloadFile_match = (filePath) => downloadFile(filePath, 'ztx-webSite')
78 app.config.globalProperties.downloadFile_webSite = (filePath) => downloadFile(filePath, 'ztx-webSite')
79 app.config.globalProperties.$socket = socket
74 80
75 // 全局组件挂载 81 // 全局组件挂载
76 app.component('DictTag', DictTag) 82 app.component('DictTag', DictTag)
77 app.component('Pagination', Pagination) 83 app.component('PaginationPc', PaginationPc)
78 app.component('TreeSelect', TreeSelect) 84 app.component('TreeSelect', TreeSelect)
79 app.component('FileUpload', FileUpload) 85 app.component('FileUpload', FileUpload)
80 app.component('ImageUpload', ImageUpload) 86 app.component('ImageUpload', ImageUpload)
...@@ -82,25 +88,33 @@ app.component('ImageUpload2', ImageUpload2) ...@@ -82,25 +88,33 @@ app.component('ImageUpload2', ImageUpload2)
82 app.component('ImagePreview', ImagePreview) 88 app.component('ImagePreview', ImagePreview)
83 app.component('RightToolbar', RightToolbar) 89 app.component('RightToolbar', RightToolbar)
84 app.component('Editor', Editor) 90 app.component('Editor', Editor)
85 app.component('UEditor', UEditor)
86 app.component('Draggable', draggable) 91 app.component('Draggable', draggable)
92 app.component('WePay', wePay)
93
94
95 if (language == 0) {
96 app.use(routerCn)
97 app.use(ElementPlus, {
98 locale: localeCn,
99 size: Cookies.get('size') || 'default'
100 })
101 } else {
102 app.use(routerEn)
103 app.use(ElementPlus, {
104 locale: localeEn,
105 size: Cookies.get('size') || 'default'
106 })
107 }
87 108
88 app.use(router)
89 app.use(store) 109 app.use(store)
90 app.use(VueUeditorWrap)
91 app.use(plugins) 110 app.use(plugins)
92 app.use(elementIcons) 111 app.use(elementIcons)
112 app.use(CountDown)
93 app.component('SvgIcon', SvgIcon) 113 app.component('SvgIcon', SvgIcon)
94 114
115 app.use(VueVideoPlayer)
95 directive(app) 116 directive(app)
96 117
97 // 使用element-plus 并且设置全局的大小
98 app.use(ElementPlus, {
99 locale: locale,
100 // 支持 large、default、small
101 size: Cookies.get('size') || 'default'
102 })
103
104 // 修改 el-dialog 默认点击遮照为不关闭 118 // 修改 el-dialog 默认点击遮照为不关闭
105 app._context.components.ElDialog.props.closeOnClickModal.default = false 119 app._context.components.ElDialog.props.closeOnClickModal.default = false
106 120
......
...@@ -3,9 +3,12 @@ import { createApp } from 'vue' ...@@ -3,9 +3,12 @@ import { createApp } from 'vue'
3 import Cookies from 'js-cookie' 3 import Cookies from 'js-cookie'
4 4
5 import ElementPlus from 'element-plus' 5 import ElementPlus from 'element-plus'
6 import locale from 'element-plus/lib/locale/lang/zh-cn' // 中文语言
7
6 import '@/assets/styles/index.scss' // global css 8 import '@/assets/styles/index.scss' // global css
7 import App from './AppPc' 9 import App from './App'
8 import store from './store' 10 import store from './store'
11 import router from './router'
9 import directive from './directive' // directive 12 import directive from './directive' // directive
10 13
11 // 注册指令 14 // 注册指令
...@@ -17,20 +20,29 @@ import 'virtual:svg-icons-register' ...@@ -17,20 +20,29 @@ import 'virtual:svg-icons-register'
17 import SvgIcon from '@/components/SvgIcon' 20 import SvgIcon from '@/components/SvgIcon'
18 import elementIcons from '@/components/SvgIcon/svgicon' 21 import elementIcons from '@/components/SvgIcon/svgicon'
19 22
20 import './permissionPc' // permission control 23 import './permission' // permission control
21 import * as socket from './utils/sockets'
22 24
23 import { useDict } from '@/utils/dict' 25 import { useDict } from '@/utils/dict'
24 import { getConfigKey, updateConfigByKey } from '@/api/system/config' 26 import { getConfigKey, updateConfigByKey } from '@/api/system/config'
25 import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels, fillImgUrl, downloadFile } from '@/utils/ruoyi' 27 import {
26 import { CountDown } from 'vant' 28 parseTime,
27 import 'vant/lib/index.css' 29 resetForm,
30 addDateRange,
31 handleTree,
32 selectDictLabel,
33 selectDictLabels,
34 fillImgUrl
35 } from '@/utils/ruoyi'
36
37 import VueUeditorWrap from 'vue-ueditor-wrap'
38
28 // 分页组件 39 // 分页组件
29 import PaginationPc from '@/components/PaginationPc' 40 import Pagination from '@/components/Pagination'
30 // 自定义表格工具组件 41 // 自定义表格工具组件
31 import RightToolbar from '@/components/RightToolbar' 42 import RightToolbar from '@/components/RightToolbar'
32 // 富文本组件 43 // 富文本组件
33 import Editor from '@/components/Editor' 44 import Editor from '@/components/Editor'
45 import UEditor from '@/components/UEditor'
34 // 文件上传组件 46 // 文件上传组件
35 import FileUpload from '@/components/FileUpload' 47 import FileUpload from '@/components/FileUpload'
36 // 图片上传组件 48 // 图片上传组件
...@@ -44,18 +56,7 @@ import TreeSelect from '@/components/TreeSelect' ...@@ -44,18 +56,7 @@ import TreeSelect from '@/components/TreeSelect'
44 import DictTag from '@/components/DictTag' 56 import DictTag from '@/components/DictTag'
45 57
46 import draggable from 'vuedraggable' 58 import draggable from 'vuedraggable'
47 import wePay from '@/components/hy/wePay'
48
49 import VueVideoPlayer from '@videojs-player/vue'
50 import 'video.js/dist/video-js.min.css'
51 import cache from '@/plugins/cache'
52 59
53 import routerCn from './routerPc/cn'
54 import routerEn from './routerPc/en'
55 import localeCn from 'element-plus/lib/locale/lang/zh-cn' // 中文语言
56 import localeEn from 'element-plus/lib/locale/lang/en'
57
58 const language = cache.local.get('language') || 0
59 const app = createApp(App) 60 const app = createApp(App)
60 61
61 // 全局方法挂载 62 // 全局方法挂载
...@@ -70,17 +71,10 @@ app.config.globalProperties.addDateRange = addDateRange ...@@ -70,17 +71,10 @@ app.config.globalProperties.addDateRange = addDateRange
70 app.config.globalProperties.selectDictLabel = selectDictLabel 71 app.config.globalProperties.selectDictLabel = selectDictLabel
71 app.config.globalProperties.selectDictLabels = selectDictLabels 72 app.config.globalProperties.selectDictLabels = selectDictLabels
72 app.config.globalProperties.fillImgUrl = fillImgUrl 73 app.config.globalProperties.fillImgUrl = fillImgUrl
73 app.config.globalProperties.fillImgUrl_train = (url) => fillImgUrl(url, 'ztx-train')
74 app.config.globalProperties.fillImgUrl_match = (url) => fillImgUrl(url, 'ztx-match')
75 app.config.globalProperties.fillImgUrl_webSite = (url) => fillImgUrl(url, 'ztx-webSite')
76 app.config.globalProperties.downloadFile = downloadFile
77 app.config.globalProperties.downloadFile_match = (filePath) => downloadFile(filePath, 'ztx-webSite')
78 app.config.globalProperties.downloadFile_webSite = (filePath) => downloadFile(filePath, 'ztx-webSite')
79 app.config.globalProperties.$socket = socket
80 74
81 // 全局组件挂载 75 // 全局组件挂载
82 app.component('DictTag', DictTag) 76 app.component('DictTag', DictTag)
83 app.component('PaginationPc', PaginationPc) 77 app.component('Pagination', Pagination)
84 app.component('TreeSelect', TreeSelect) 78 app.component('TreeSelect', TreeSelect)
85 app.component('FileUpload', FileUpload) 79 app.component('FileUpload', FileUpload)
86 app.component('ImageUpload', ImageUpload) 80 app.component('ImageUpload', ImageUpload)
...@@ -88,33 +82,25 @@ app.component('ImageUpload2', ImageUpload2) ...@@ -88,33 +82,25 @@ app.component('ImageUpload2', ImageUpload2)
88 app.component('ImagePreview', ImagePreview) 82 app.component('ImagePreview', ImagePreview)
89 app.component('RightToolbar', RightToolbar) 83 app.component('RightToolbar', RightToolbar)
90 app.component('Editor', Editor) 84 app.component('Editor', Editor)
85 app.component('UEditor', UEditor)
91 app.component('Draggable', draggable) 86 app.component('Draggable', draggable)
92 app.component('WePay', wePay)
93
94
95 if (language == 0) {
96 app.use(routerCn)
97 app.use(ElementPlus, {
98 locale: localeCn,
99 size: Cookies.get('size') || 'default'
100 })
101 } else {
102 app.use(routerEn)
103 app.use(ElementPlus, {
104 locale: localeEn,
105 size: Cookies.get('size') || 'default'
106 })
107 }
108 87
88 app.use(router)
109 app.use(store) 89 app.use(store)
90 app.use(VueUeditorWrap)
110 app.use(plugins) 91 app.use(plugins)
111 app.use(elementIcons) 92 app.use(elementIcons)
112 app.use(CountDown)
113 app.component('SvgIcon', SvgIcon) 93 app.component('SvgIcon', SvgIcon)
114 94
115 app.use(VueVideoPlayer)
116 directive(app) 95 directive(app)
117 96
97 // 使用element-plus 并且设置全局的大小
98 app.use(ElementPlus, {
99 locale: locale,
100 // 支持 large、default、small
101 size: Cookies.get('size') || 'default'
102 })
103
118 // 修改 el-dialog 默认点击遮照为不关闭 104 // 修改 el-dialog 默认点击遮照为不关闭
119 app._context.components.ElDialog.props.closeOnClickModal.default = false 105 app._context.components.ElDialog.props.closeOnClickModal.default = false
120 106
......
...@@ -84,15 +84,21 @@ export const constantRoutes = [ ...@@ -84,15 +84,21 @@ export const constantRoutes = [
84 children: [ 84 children: [
85 { 85 {
86 path: 'wudao', 86 path: 'wudao',
87 component: () => import('@/viewsPc/about/wudao'), 87 component: () => import('@/viewsPc/about/wudao_en'),
88 name: 'dangNews', 88 name: 'dangNews',
89 meta: { title: '舞蹈节' } 89 meta: { title: 'about us' }
90 }, 90 },
91 { 91 {
92 path: 'culture', 92 path: 'culture',
93 component: () => import('@/viewsPc/about/culture'), 93 component: () => import('@/viewsPc/about/culture_en'),
94 name: 'culture', 94 name: 'culture',
95 meta: { title: '地方文化' } 95 meta: { title: 'culture' }
96 },
97 {
98 path: 'regulations',
99 component: () => import('@/viewsPc/about/fileList'),
100 name: 'regulations',
101 meta: { title: 'rules and regulations' }
96 } 102 }
97 ] 103 ]
98 }, 104 },
...@@ -103,7 +109,7 @@ export const constantRoutes = [ ...@@ -103,7 +109,7 @@ export const constantRoutes = [
103 children: [ 109 children: [
104 { 110 {
105 path: 'index', 111 path: 'index',
106 component: () => import('@/viewsPc/notice/index'), 112 component: () => import('@/viewsPc/notice/index_en'),
107 name: 'notice', 113 name: 'notice',
108 meta: { title: 'NOTICEBOARD' } 114 meta: { title: 'NOTICEBOARD' }
109 }, 115 },
...@@ -140,13 +146,13 @@ export const constantRoutes = [ ...@@ -140,13 +146,13 @@ export const constantRoutes = [
140 children: [ 146 children: [
141 { 147 {
142 path: 'index', 148 path: 'index',
143 component: () => import('@/viewsPc/news/index'), 149 component: () => import('@/viewsPc/news/index_en'),
144 name: 'news', 150 name: 'news',
145 meta: { title: 'NEWS' } 151 meta: { title: 'NEWS' }
146 }, 152 },
147 { 153 {
148 path: 'list/:id', 154 path: 'list/:id',
149 component: () => import('@/viewsPc/news/list'), 155 component: () => import('@/viewsPc/news/list_en'),
150 name: 'newsList', 156 name: 'newsList',
151 meta: { title: '新闻列表' } 157 meta: { title: '新闻列表' }
152 }, 158 },
...@@ -185,9 +191,9 @@ export const constantRoutes = [ ...@@ -185,9 +191,9 @@ export const constantRoutes = [
185 children: [ 191 children: [
186 { 192 {
187 path: 'index', 193 path: 'index',
188 component: () => import('@/viewsPc/meta/index'), 194 component: () => import('@/viewsPc/meta/index_en'),
189 name: 'meta', 195 name: 'meta',
190 meta: { title: '媒体中心' } 196 meta: { title: 'MEDIA' }
191 } 197 }
192 ] 198 ]
193 }, 199 },
...@@ -198,9 +204,9 @@ export const constantRoutes = [ ...@@ -198,9 +204,9 @@ export const constantRoutes = [
198 children: [ 204 children: [
199 { 205 {
200 path: 'index', 206 path: 'index',
201 component: () => import('@/viewsPc/saiC/index'), 207 component: () => import('@/viewsPc/saiC/index_en'),
202 name: 'saiC', 208 name: 'saiC',
203 meta: { title: '赛程安排' } 209 meta: { title: 'COMPETITIONS' }
204 } 210 }
205 ] 211 ]
206 }, 212 },
...@@ -213,108 +219,7 @@ export const constantRoutes = [ ...@@ -213,108 +219,7 @@ export const constantRoutes = [
213 path: 'index', 219 path: 'index',
214 component: () => import('@/viewsPc/guide/index_en'), 220 component: () => import('@/viewsPc/guide/index_en'),
215 name: 'guide', 221 name: 'guide',
216 meta: { title: '参赛指南' } 222 meta: { title: 'GUIDELINE' }
217 }
218 ]
219 },
220 {
221 path: 'fitness',
222 component: Empty,
223 redirect: '/fitness/index',
224 children: [
225 {
226 path: 'index',
227 component: () => import('@/viewsPc/fitness/index'),
228 name: 'fitness',
229 meta: { title: '全民健身' }
230 }
231 ]
232 },
233 {
234 path: 'dope',
235 component: Empty,
236 redirect: '/dope/index',
237 children: [
238 {
239 path: 'index',
240 component: () => import('@/viewsPc/dope/index'),
241 name: 'dope',
242 meta: { title: '反兴奋剂' }
243 }
244 ]
245 },
246 {
247 path: 'vip',
248 component: Empty,
249 redirect: '/vip/index',
250 children: [
251 {
252 path: 'index',
253 component: () => import('@/viewsPc/vip/index'),
254 name: 'vip',
255 meta: { title: '会员服务' }
256 },
257 {
258 path: 'index/teamVip',
259 component: () => import('@/viewsPc/vip/teamVip'),
260 name: 'teamVip',
261 meta: { title: '会员服务' }
262 },
263 {
264 path: 'index/examPoints',
265 component: () => import('@/viewsPc/vip/examPoints'),
266 name: 'examPoints',
267 meta: { title: '考点展示' }
268 },
269 {
270 path: 'index/plan',
271 component: () => import('@/viewsPc/vip/plan'),
272 name: 'plan',
273 meta: { title: '培训计划' }
274 },
275 {
276 path: 'pplist/:id',
277 component: () => import('@/viewsPc/vip/pplist'),
278 name: 'ppList',
279 meta: { title: '人员列表' }
280 }
281 ]
282 },
283 {
284 path: 'business',
285 component: Empty,
286 redirect: '/business/index',
287 children: [
288 {
289 path: 'index',
290 component: () => import('@/viewsPc/business/index'),
291 name: 'business',
292 meta: { title: '商务专区' }
293 }
294 ]
295 },
296 {
297 path: 'local',
298 component: Empty,
299 redirect: '/local/index',
300 children: [
301 {
302 path: 'index',
303 component: () => import('@/viewsPc/local/index'),
304 name: 'local',
305 meta: { title: '地方协会' }
306 },
307 {
308 path: 'index/list',
309 component: () => import('@/viewsPc/local/list'),
310 name: 'locallist',
311 meta: { title: '地方协会' }
312 },
313 {
314 path: 'index/:id',
315 component: () => import('@/viewsPc/local/detail'),
316 name: 'localDetail',
317 meta: { title: '地方协会' }
318 } 223 }
319 ] 224 ]
320 }, 225 },
...@@ -375,7 +280,7 @@ export const constantRoutes = [ ...@@ -375,7 +280,7 @@ export const constantRoutes = [
375 }, 280 },
376 { 281 {
377 path: 'list/:id', 282 path: 'list/:id',
378 component: () => import('@/viewsPc/match/detail'), 283 component: () => import('@/viewsPc/match/detail_en'),
379 name: 'matchDetail', 284 name: 'matchDetail',
380 meta: { title: '赛事详情' } 285 meta: { title: '赛事详情' }
381 }, 286 },
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 <div class="login"> 2 <div class="login">
3 <el-row :inline="true" justify="space-between" class="title"> 3 <el-row :inline="true" justify="space-between" class="title">
4 <div class="imgBox"> 4 <div class="imgBox">
5 <img class="img" src="@/assets/images/logo@2x.png" alt=""> 5 <!-- <img class="img" src="@/assets/images/logo@2x.png" alt="">-->
6 </div> 6 </div>
7 <div class="title-right"> 7 <div class="title-right">
8 <router-link to="login" class="tilt-btn"> 8 <router-link to="login" class="tilt-btn">
...@@ -104,8 +104,6 @@ watch(() => route.name, (val) => { ...@@ -104,8 +104,6 @@ watch(() => route.name, (val) => {
104 104
105 .login { 105 .login {
106 height: 100%; 106 height: 100%;
107 background-image: url("@/assets/images/bg@2x.png");
108 background-size: cover;
109 } 107 }
110 .login-center { 108 .login-center {
111 height: 80%; 109 height: 80%;
...@@ -151,10 +149,10 @@ watch(() => route.name, (val) => { ...@@ -151,10 +149,10 @@ watch(() => route.name, (val) => {
151 } 149 }
152 150
153 .btnText{ 151 .btnText{
154 color:#014A9F 152 color:#014A9F
155 } 153 }
156 .btn-B{ 154 .btn-B{
157 color:#008BF7 155 color:#008BF7
158 } 156 }
159 157
160 :deep(.el-button--success){ 158 :deep(.el-button--success){
...@@ -168,7 +166,7 @@ color:#014A9F ...@@ -168,7 +166,7 @@ color:#014A9F
168 font-weight: 400; 166 font-weight: 400;
169 color: #FFFFFF; 167 color: #FFFFFF;
170 } 168 }
171 169
172 } 170 }
173 171
174 :deep(.el-tabs__item){ 172 :deep(.el-tabs__item){
......
...@@ -344,7 +344,7 @@ import { deptTreeSelect } from '@/api/system/user' ...@@ -344,7 +344,7 @@ import { deptTreeSelect } from '@/api/system/user'
344 import { getCurrentInstance } from '@vue/runtime-core' 344 import { getCurrentInstance } from '@vue/runtime-core'
345 import { ref, reactive, toRefs } from 'vue' 345 import { ref, reactive, toRefs } from 'vue'
346 import auditEdit from './auditEdit' 346 import auditEdit from './auditEdit'
347 import image from '@/assets/images/certificate.png' 347 // import image from '@/assets/images/certificate.png'
348 import { certifiedDeptTree } from '@/api/system/userInfo.js' 348 import { certifiedDeptTree } from '@/api/system/userInfo.js'
349 import { ElMessageBox } from 'element-plus' 349 import { ElMessageBox } from 'element-plus'
350 // import type { Action } from 'element-plus' 350 // import type { Action } from 'element-plus'
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
33 </script> 33 </script>
34 34
35 <style scoped lang="scss"> 35 <style scoped lang="scss">
36 .bban{width: 100%;} 36 .bban{width: 100%;min-height: 280px;object-fit: cover;object-position: center;}
37 .prbox{position: relative;padding: 0 0 20px;margin: 0 0 30px; 37 .prbox{position: relative;padding: 0 0 20px;margin: 0 0 30px;
38 .bbg{max-width: 100%;margin: auto;} 38 .bbg{max-width: 100%;margin: auto;}
39 .bbtn{position: absolute;right: 5px;bottom: 0px; 39 .bbtn{position: absolute;right: 5px;bottom: 0px;
......
1 <template>
2 <div>
3 <div>
4 <img class="bban" src="@/assets/zhinan/banner_en.png"/>
5 </div>
6 <div class="box">
7 <el-row :gutter="20" class="mt30">
8 <el-col :lg="8">
9 <div class="prbox">
10 <img class="bbg" src="@/assets/zhinan/bg01.png"/>
11 <!-- <img class="bbtn" src="@/assets/zhinan/btn01.png"/>-->
12 <div class="bbtn">WuXi Culture</div>
13
14 </div>
15 </el-col>
16 <el-col :lg="8">
17 <div class="prbox">
18 <img class="bbg" src="@/assets/zhinan/bg02.png"/>
19 <div class="bbtn">Local Specialties</div>
20 <!-- <img class="bbtn" src="@/assets/zhinan/btn02.png"/>-->
21 </div>
22 </el-col>
23 <el-col :lg="8">
24 <div class="prbox">
25 <img class="bbg" src="@/assets/zhinan/bg03.png"/>
26 <div class="bbtn">Scenic Spots</div>
27 <!-- <img class="bbtn" src="@/assets/zhinan/btn03.png"/>-->
28 </div>
29 </el-col>
30 </el-row>
31 </div>
32 </div>
33 </template>
34
35 <script setup>
36
37 </script>
38
39 <style scoped lang="scss">
40 .bban{width: 100%;min-height: 280px;object-fit: cover;object-position: center;}
41 .prbox{position: relative;padding: 0 0 20px;margin: 0 0 30px;
42 .bbg{max-width: 100%;margin: auto;}
43 .bbtn{position: absolute;right: 5px;bottom: 0px;
44 color: #fff;border-radius: 50px;padding: 10px 20px;
45 font-size: 18px;cursor: pointer;
46 background: linear-gradient(-90deg, #8623FC, #453DEA); ;
47 &:hover{filter: brightness(1.6)}
48 }
49 }
50 </style>
1 <template>
2 <div>
3 <div class="box">
4 <!-- <el-breadcrumb class="mt20" :separator-icon="ArrowRight">-->
5 <!-- <el-breadcrumb-item :to="{ path: '/' }">-->
6 <!-- <el-icon>-->
7 <!-- <HomeFilled/>-->
8 <!-- </el-icon>-->
9 <!-- 首页-->
10 <!-- </el-breadcrumb-item>-->
11 <!-- <el-breadcrumb-item :to="{ path: '/business/index' }">商务专区</el-breadcrumb-item>-->
12 <!-- <el-breadcrumb-item>文件下载</el-breadcrumb-item>-->
13 <!-- </el-breadcrumb>-->
14 <el-card class=" mt20 mb20" style="min-height: 70vh;">
15 <div>
16
17 <div v-for="n in newsList" class="item" @click="goDetail(n)">
18 <a class="file-item" target="_blank" :href="fillImgUrl_webSite(n.attacthJsonObj[0]?.url)">
19 <h3 class="esp underline" style="color: var(--el-color-primary)">
20 <i class="icon pdf" v-if="n.attacthJsonObj[0]?.url.indexOf('pdf')>-1"></i>
21 <i class="icon doc" v-else-if="n.attacthJsonObj[0]?.url.indexOf('doc')>-1"></i>
22 <i class="icon xls" v-else-if="n.attacthJsonObj[0]?.url.indexOf('xls')>-1"></i>
23 <i class="icon txt" v-else-if="n.attacthJsonObj[0]?.url.indexOf('txt')>-1"></i>
24 <i class="icon ppt" v-else-if="n.attacthJsonObj[0]?.url.indexOf('ppt')>-1"></i>
25 <i class="icon zip" v-else-if="n.attacthJsonObj[0]?.url.indexOf('zip')>-1"></i>
26 <i class="icon zip" v-else-if="n.attacthJsonObj[0]?.url.indexOf('rar')>-1"></i>
27 <i class="icon othe" v-else></i>
28 <el-icon color="#453DEA" size="20" style="position: relative;top: 2px"><download/></el-icon>
29 {{ n.name }}
30 </h3>
31 </a>
32 </div>
33
34 </div>
35
36 <div class="pc-page-box" v-if="total>8">
37 <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList"/>
38 </div>
39
40 <el-empty v-if="newsList.length == 0" description="暂无数据"/>
41
42 </el-card>
43 </div>
44 </div>
45 </template>
46
47 <script setup>
48 import { ArrowRight } from '@element-plus/icons-vue'
49
50 const route = useRoute()
51 const router = useRouter()
52 import { onMounted, ref } from 'vue'
53 import { getNewsListById } from '@/apiPc/webSite'
54 import { useRoute, useRouter } from 'vue-router'
55
56 const query = ref({
57 pageSize: 10,
58 pageNum: 1
59 })
60 const total = ref(0)
61 const newsList = ref([
62 {name:'Invitation to WDSF Asian DanceSport Festival 2023(230502).pdf',attacthJsonObj:{}},
63 {name:'Invitation WDSF World Championship Junior 2 Standard and Adult Latin 2023.pdf',attacthJsonObj:{}},
64 {name:'WDSF DanceSport Championship Protocol .pdf',attacthJsonObj:{}},
65 ])
66 onMounted(() => {
67 query.value.sortId = route.query.sortId
68 query.value.code = route.query.code
69 // getList()
70 })
71 const getList = () => {
72 getNewsListById(query.value).then(res => {
73 newsList.value = res.rows
74 for(var f of newsList.value){
75 f.attacthJsonObj = JSON.parse(f.attacthJson)
76 }
77 total.value = res.total
78 })
79 }
80 const goDetail = (n) => {
81 // if (n.isOut == '1') {
82 // window.open(n.jumpUrl)
83 // } else {
84 // router.push({
85 // path: `/news/detail/${n.noteId}`
86 // })
87 // }
88 }
89 </script>
90
91 <style scoped lang="scss">
92 .file-item{
93 &:hover{background: #BE8EFB;}
94 }
95 </style>
...@@ -45,11 +45,11 @@ ...@@ -45,11 +45,11 @@
45 <div class="content"> 45 <div class="content">
46 <div class="phone"> 46 <div class="phone">
47 <h4>电话</h4> 47 <h4>电话</h4>
48 <p>张小姐:13921876678</p> 48 <p>张小姐:18888888888</p>
49 </div> 49 </div>
50 <div class="address"> 50 <div class="address">
51 <h4>地址</h4> 51 <h4>地址</h4>
52 <p>江苏省无锡市滨湖区体育中心A区201</p> 52 <p>无锡市经开区清舒道88号</p>
53 </div> 53 </div>
54 <div class="email"> 54 <div class="email">
55 <h4>邮箱</h4> 55 <h4>邮箱</h4>
......
1 <template>
2 <div>
3 <div class="mt20" />
4 <div class="box">
5 <el-card>
6 <el-row :gutter="20">
7 <el-col :lg="5">
8 <div class="leftNav">
9 <ul>
10 <li class="active">About the Organizer</li>
11 <li>WDSF Asian Dancesport Festival</li>
12 <li>About Sports Dance</li>
13 </ul>
14 </div>
15 </el-col>
16 <el-col :lg="19">
17 <div class="infoPart pd20">
18 <h3 class="leftboderTT">About the organizer</h3>
19 <div class="content">
20 <p>On site, the World Sports Dance (Wuxi) Center, a joint headquarters base established by the World Sports Dance Federation that integrates the world, intercontinental, and China, was officially unveiled. In the future, Wuxi will take the settlement of its headquarters as an opportunity to launch and cultivate its own brand event, the China Wuxi Sports and Dance Festival, and continue to expand communication and cooperation, event research and development, education and training and other fields, committed to creating a global sports and dance landmark city and a unique and charming international event city.</p>
21 <p>The Asian Sports Dance Festival has landed in Wuxi in an innovative form of "three competitions in one". Over a period of four days, it will hold two international level events, the World Standard Dance Championships and the World Sports Dance Grand Prix (Wuxi Station), as well as a national level event, the China Sports Dance Open Series (Wuxi Station), attracting more than 1700 participants from 39 countries and regions to participate.</p>
22 <p>Sports dance is divided into two groups and ten dance genres, among which the standard dance (also known as modern dance) group includes waltz, Viennese waltz, tango, foxtrot, and brisk step. The Latin dance project group includes rumba, cha cha, samba, cowboy, and bullfighting dance. According to incomplete statistics, there are currently over 50 million sports dance enthusiasts in China.</p>
23 <p>On site, Latin Girl dance performance and sports dance costume show were performed brilliantly. Top domestic and foreign athletes compete passionately, showcasing their gorgeous makeup and dance moves to the heart of the "gentlemen" and "beauties" participating in the competition.</p>
24 <p>The "most beautiful" sports project is shining on the shore of the Taihu Lake Lake, creating the highlight scene of the annual global sports dance field, and giving another shining card of Wuxi sports.
25 </p>
26 <p>The Asian Sports Dance Festival is open to the public with two types of tickets: VIP and stand tickets. At the same time, the event will also be broadcast online through the Olympic Channel, People's Daily Vision, Migu, the official website of China Sports Dance Federation and Tiktok, Asia Sports Dance Festival WeChat video number, Tiger Teeth, Penguin, Weibo and other platforms.</p>
27
28 <img src="@/assets/zhinan/photo.png"/>
29
30 </div>
31 </div>
32 </el-col>
33 </el-row>
34 </el-card>
35
36 <div class="indexTitle">
37 <h3 class="leftboderTT">CONTACT</h3>
38 </div>
39 <div class="mapBox mb20">
40 <div class="content">
41 <div class="phone">
42 <h4>Phone</h4>
43 <p>Miss Chang:+86 18888888888</p>
44 </div>
45 <div class="address">
46 <h4>Address</h4>
47 <p>No.88 Qingshu Road,Economic and Development District, Wuxi City,Jiangsu Province,China</p>
48 </div>
49 <div class="email">
50 <h4>Email</h4>
51 <p>8888989@163.com</p>
52 </div>
53 </div>
54 </div>
55 </div>
56 </div>
57 </template>
58
59 <script setup>
60
61 </script>
62
63 <style scoped lang="scss">
64 .leftNav{
65 ul{border-right: 2px solid #E5E5E5;padding:0 20px 0 0;}
66 li{margin: 30px 0;padding: 10px;text-align: right;
67 border-radius: 2px;position: relative;
68 font-weight: 600;
69 font-size: 18px;
70 background: linear-gradient(90deg, rgba(134, 35, 252, 0.1), rgba(69, 61, 234, 0.1));}
71 li::after{content: '';position: absolute;background: #898989;width: 8px;height: 8px;
72 border-radius: 50%;right: -29px;border: 4px solid #fff;outline: 2px solid #898989;
73 box-sizing: content-box;top: 0;bottom: 0;margin: auto;}
74 li.active{color: #fff;
75 background: linear-gradient(90deg, #8623FC, #453DEA);
76 &::after{outline: 2px solid #453DEA;background: #453DEA;}
77 }
78 }
79 .infoPart{
80 .leftboderTT{font-size:20px;color: var(--el-color-primary); }
81 }
82 .content{margin: 20px 0 0;text-indent: 2em;
83 line-height: 1.8;
84 font-weight: 400;
85 font-size: 16px;
86 color: #29343C;
87 img{max-width: 100%;margin: 20px auto;display: block;}
88 h4{text-indent: 0}
89 }
90 .mapBox{background: url("@/assets/zhinan/map.png") no-repeat right;height: 375px;
91 background-size: cover;padding: 1px;position: relative;display: flex;
92 .content{background: #fff;width: 60%;left: 40px;padding: 30px;text-indent: 0;
93 line-height: 1;
94 position: absolute;height: 90%;top: 0;bottom: 0;margin: auto;
95 }
96 div{padding-left: 60px;}
97 .phone{background: url("@/assets/dance/map01.png") no-repeat left;background-size: 30px;}
98 .address{background: url("@/assets/dance/map02.png") no-repeat left;background-size: 30px;
99 margin:50px 0;
100 }
101 .email{background: url("@/assets/dance/map03.png") no-repeat left;background-size: 30px;}
102 h4{margin: 0;
103 font-size: 16px;
104 color: #AAAAAA;}
105 p{margin: 13px 0 0;}
106 }
107 @media (max-width: 800px) {
108 .mapBox {
109 div {
110 padding-left: 40px;
111 }
112
113 .content {
114 width: 80%;
115 left: 10%;
116 padding: 10px 20px 0 20px;
117 }
118
119 .address {
120 margin: 30px 0;
121 }
122
123 p {
124 text-align: left;
125 word-break: break-all;
126 }
127 }
128 }
129 </style>
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
93 <div class="content" v-if="activeName==7"><el-empty description="暂未上线"></el-empty></div> 93 <div class="content" v-if="activeName==7"><el-empty description="暂未上线"></el-empty></div>
94 <div class="content" v-if="activeName==8"> 94 <div class="content" v-if="activeName==8">
95 <label>点击下载:</label> 95 <label>点击下载:</label>
96 <a target="_blank" class="text-primary" href="@/assets/zhinan/参赛指南.pdf"> 96 <a target="_blank" class="text-primary">
97 <el-icon style="position: relative;top: 2px"><download/></el-icon> 97 <el-icon style="position: relative;top: 2px"><download/></el-icon>
98 WDSF亚洲体育舞蹈节参赛指南0714 98 WDSF亚洲体育舞蹈节参赛指南0714
99 </a> 99 </a>
...@@ -181,7 +181,7 @@ h4.leftboderTT{text-indent: 0; ...@@ -181,7 +181,7 @@ h4.leftboderTT{text-indent: 0;
181 span{color: #929AA0;font-size: 16px;margin-left: 5px;} 181 span{color: #929AA0;font-size: 16px;margin-left: 5px;}
182 } 182 }
183 .custom-tabs-label { 183 .custom-tabs-label {
184 display: flex; 184 display: flex;font-size: 16px;
185 align-items: center; 185 align-items: center;
186 } 186 }
187 187
......
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
4 <div class="box mb20 "> 4 <div class="box mb20 ">
5 <el-card class="mb20"> 5 <el-card class="mb20">
6 <el-row :gutter="20"> 6 <el-row :gutter="20">
7 <el-col :lg="6"> 7 <el-col :lg="7" :md="24" :xl="6" >
8 <img> 8 <img class="mauto" src="@/assets/dance/fm.jpg">
9 </el-col> 9 </el-col>
10 <el-col :lg="10"> 10 <el-col :lg="9" :md="12" :xl="10">
11 <h3> 11 <h3>
12 2024年WDSF亚洲体育舞蹈节亚洲体育 舞蹈节 12 2024年WDSF亚洲体育舞蹈节亚洲体育 舞蹈节
13 </h3> 13 </h3>
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
16 <p class="ppl"><label class="bm3">&ensp;&ensp;&ensp;&ensp;点:</label>江苏省无锡市滨湖区体育中心A区201</p> 16 <p class="ppl"><label class="bm3">&ensp;&ensp;&ensp;&ensp;点:</label>江苏省无锡市滨湖区体育中心A区201</p>
17 <p class="ppl"><label class="bm4">报名截止:</label>2024-06-30 13:00</p> 17 <p class="ppl"><label class="bm4">报名截止:</label>2024-06-30 13:00</p>
18 </el-col> 18 </el-col>
19 <el-col :lg="8"> 19 <el-col :lg="8" :md="12" :xl="8">
20 <p class="countDownTitle"><span>报名截止倒计时</span></p> 20 <p class="countDownTitle"><span>报名截止倒计时</span></p>
21 <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒"> 21 <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒">
22 <template #default="timeData"> 22 <template #default="timeData">
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
50 </el-card> 50 </el-card>
51 51
52 <el-row :gutter="20"> 52 <el-row :gutter="20">
53 <el-col :span="18"> 53 <el-col :lg="18">
54 <el-card :body-style="{'padding':'0'}"> 54 <el-card :body-style="{'padding':'0'}">
55 55
56 <div class="lineHead"> 56 <div class="lineHead">
...@@ -359,9 +359,10 @@ ...@@ -359,9 +359,10 @@
359 </div> 359 </div>
360 </div> 360 </div>
361 </el-card> 361 </el-card>
362 <div style="height: 20px"></div>
362 363
363 </el-col> 364 </el-col>
364 <el-col :span="6"> 365 <el-col :lg="6">
365 <a class="btn-lineG mb20" style="display: block;text-align: center;">我要报名</a> 366 <a class="btn-lineG mb20" style="display: block;text-align: center;">我要报名</a>
366 <el-card :body-style="{padding: 0}"> 367 <el-card :body-style="{padding: 0}">
367 <el-tabs v-model="activeName2" class="match-tabs" @tab-click="handleClick"> 368 <el-tabs v-model="activeName2" class="match-tabs" @tab-click="handleClick">
...@@ -394,7 +395,7 @@ ...@@ -394,7 +395,7 @@
394 </div> 395 </div>
395 </el-dialog> 396 </el-dialog>
396 397
397 <groupDetail ref="dialogEditGroup" @submitForm="getMyGroupList" /> 398
398 </div> 399 </div>
399 </template> 400 </template>
400 401
...@@ -410,180 +411,8 @@ import * as match from '@/apiPc/match' ...@@ -410,180 +411,8 @@ import * as match from '@/apiPc/match'
410 import { toRefs } from '@vueuse/shared' 411 import { toRefs } from '@vueuse/shared'
411 import { ElMessage } from 'element-plus' 412 import { ElMessage } from 'element-plus'
412 import groupDetail from '../center/component/teamInfo_form' 413 import groupDetail from '../center/component/teamInfo_form'
414 const activeName2 = ref('first')
413 415
414 const data = reactive({
415 activeName: 'tab1',
416 matchData: {},
417 activeName2: 'first',
418 projectList: [],
419 groupList: [],
420 levelList: [],
421 levelListGirl: [],
422 levelListBoy: [],
423 popup: false,
424 popupGroupList: false,
425 groupListArr: [],
426 matchId: 0,
427 groups: [],
428 time: 0,
429 groupId: '',
430 signDoneGroupList: [],
431 cptLabelsList: [],
432 secondTabName: '参赛队',
433 collapseActive: '0',
434 activeNames: '1'
435 })
436 const {
437 activeName, activeName2, matchData, projectList, groupList, levelList, popup, popupGroupList, time,
438 groupListArr, matchId, groups, groupId, signDoneGroupList, levelListGirl, levelListBoy, cptLabelsList, secondTabName,
439 collapseActive, activeNames
440 } = toRefs(data)
441
442 onMounted(() => {
443 matchId.value = route.params.id
444 })
445
446 function getMyGroupList() {
447 match.getMyGroupList().then(res => {
448 groups.value = res.data
449 popupGroupList.value = true
450 })
451 }
452
453 function getMatch(id) {
454 match.getMatchById({ id: id }).then(res => {
455 matchData.value = res.data
456 if (matchData.value.disclaimerUrl && (matchData.value.disclaimerUrl.indexOf('https://') > -1)) {
457 matchData.value.dUrl = JSON.parse(matchData.value.disclaimerUrl)
458 }
459 if (matchData.value.signKnowUrl && (matchData.value.signKnowUrl.indexOf('https://') > -1)) {
460 matchData.value.sUrl = JSON.parse(matchData.value.signKnowUrl)
461 }
462 if (matchData.value.ruleUrl && (matchData.value.ruleUrl.indexOf('https://') > -1)) {
463 matchData.value.rUrl = JSON.parse(matchData.value.ruleUrl)
464 }
465
466 time.value = res.data.secondRemain * 1000
467 if (matchData.value.signType == 1 || matchData.value.signType == 2) {
468
469 } else {
470 secondTabName.value = '参赛人员'
471 }
472 if (matchData.value.type == 1 && matchData.value.cpts) {
473 secondTabName.value = '分站赛'
474 activeName.value = 'third'
475 }
476 if (res.data.cptLabels && cptLabelsList.value.length == 0) {
477 cptLabelsList.value = res.data.cptLabels
478 for (const c of cptLabelsList.value) {
479 if (c.fileUrl && c.fileUrl != 'null') {
480 var arr = JSON.parse(c.fileUrl)
481 c.fileObj = arr[0]
482 console.log(c.fileObj)
483 }
484 }
485 }
486 })
487 }
488
489 function getGroupListByCptId(id) {
490 match.getGroupListByCptId(id).then(res => {
491 signDoneGroupList.value = res.data
492 })
493 }
494
495 function getThisGroupId(item) {
496 groupId.value = item.id
497 checkIsSign(matchData.value.signType).then(() => {
498 goSignType2()
499 })
500 }
501
502 function handleClick(tab, event) {
503 // console.log(tab, event)
504 }
505
506
507 // 获取已报信息
508 function checkIsSign(signType) {
509 var obj = {
510 cptId: matchId.value,
511 groupId: groupId.value || ''
512 }
513 return match.getMySignInfo(obj).then(res => {
514 if (res.data.type == '1') {
515 let str = ''
516 if (signType == '0') {
517 str = '已报名,不能重复报名'
518 } else {
519 str = '该参赛队已报名,请选择其他参赛队'
520 }
521 ElMessage.error(str)
522 return Promise.reject('rejected message')
523 }
524 })
525 }
526
527 function choseSignType(item) {
528 if (item.signType == '0') {
529 // 个人报名
530 checkIsSign(item.signType).then((res) => {
531 router.push({
532 path: `${route.params.id}/singleSign`
533 })
534 })
535 } else {
536 // 团队报名 团体-队伍报名
537 getMyGroupList()
538 }
539 }
540
541 function goSignType2() {
542 router.push({
543 path: `${route.params.id}/teamSign`,
544 query: {
545 matchId: matchId.value,
546 groupId: groupId.value,
547 signType: matchData.value.signType
548 }
549 })
550 }
551
552 function goAddgroup() {
553 // 新团
554 proxy.$refs['dialogEditGroup'].open({
555 title: '新建参赛队'
556 })
557 }
558
559 function goDetail(id) {
560 const routeData = router.resolve({
561 path: `${id}`
562 })
563 window.open(routeData.href, '_blank')
564 }
565
566 function getLevelList(val) {
567 levelList.value = []
568 levelListGirl.value = []
569 levelListBoy.value = []
570 if (val) {
571 match.getLeveListByGroupId(val).then(res => {
572 for (const l of res.data) {
573 if (l.levelType == '1') {
574 levelListBoy.value.push(l)
575 } else if (l.levelType == '2') {
576 levelListGirl.value.push(l)
577 } else {
578 levelList.value.push(l)
579 }
580 }
581 })
582 }
583 }
584
585 // getMatch(route.params.id)
586 // getGroupListByCptId(router.currentRoute.value.params.id)
587 </script> 416 </script>
588 417
589 <style scoped lang="scss"> 418 <style scoped lang="scss">
...@@ -1016,4 +845,17 @@ function getLevelList(val) { ...@@ -1016,4 +845,17 @@ function getLevelList(val) {
1016 h4{margin: 0;font-size: 16px;} 845 h4{margin: 0;font-size: 16px;}
1017 } 846 }
1018 } 847 }
848 .table{white-space: nowrap}
849 @media (max-width: 800px) {
850 .van-count-down{
851 .block{margin: 0 10px;}
852 }
853 .colon{display: none;}
854 .funcBtns{
855 div{padding: 0 0 10px;
856 margin: 0 5px;
857
858 }
859 }
860 }
1019 </style> 861 </style>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
8 8
9 <el-row :gutter="20"> 9 <el-row :gutter="20">
10 <el-col :lg="12" :sm="24" :md="12"> 10 <el-col :lg="12" :sm="24" :md="12">
11 <div class="liveImgbox"> 11 <div class="liveImgbox" @click="goDetail(newsList[0])">
12 <i class="ii">直播中</i> 12 <i class="ii">直播中</i>
13 <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)"> 13 <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">
14 <h3 class="esp">{{ newsList[0]?.name }} 14 <h3 class="esp">{{ newsList[0]?.name }}
...@@ -45,25 +45,25 @@ ...@@ -45,25 +45,25 @@
45 45
46 <div class="indexTitle"> 46 <div class="indexTitle">
47 <h3 class="leftboderTT">精彩图片</h3> 47 <h3 class="leftboderTT">精彩图片</h3>
48 <a class="more" @click="goList(query2.sortId,'舞蹈动态')">MORE</a> 48 <a class="more" @click="goList(query2.sortId,'精彩图片')">MORE</a>
49 </div> 49 </div>
50 <el-row class="mb20" :gutter="20"> 50 <el-row class="mb20" :gutter="20">
51 <el-col :lg="9"> 51 <el-col :lg="9">
52 <div class="picbox" ><img :src="fillImgUrl_webSite(newsList2[0]?.picUrl)"/></div> 52 <div class="picbox" @click="goDetail(newsList2[0])"><img :src="fillImgUrl_webSite(newsList2[0]?.picUrl)"/></div>
53 </el-col> 53 </el-col>
54 <el-col :lg="15"> 54 <el-col :lg="15">
55 <el-row :gutter="20"> 55 <el-row :gutter="20">
56 <el-col :lg="16"> 56 <el-col :lg="16">
57 <div class="picbox"><img :src="fillImgUrl_webSite(newsList2[1]?.picUrl)"/></div> 57 <div class="picbox" @click="goDetail(newsList2[1])"><img :src="fillImgUrl_webSite(newsList2[1]?.picUrl)"/></div>
58 </el-col> 58 </el-col>
59 <el-col :lg="8"> 59 <el-col :lg="8">
60 <div class="picbox" style="height: calc(50% - 10px)"><img :src="fillImgUrl_webSite(newsList2[2]?.picUrl)"/></div> 60 <div class="picbox" @click="goDetail(newsList2[2])" style="height: calc(50% - 10px)"><img :src="fillImgUrl_webSite(newsList2[2]?.picUrl)"/></div>
61 <div class="picbox" style="height: calc(50% - 10px);margin-top: 20px"><img :src="fillImgUrl_webSite(newsList2[3]?.picUrl)"/></div> 61 <div class="picbox" @click="goDetail(newsList2[3])" style="height: calc(50% - 10px);margin-top: 20px"><img :src="fillImgUrl_webSite(newsList2[3]?.picUrl)"/></div>
62 </el-col> 62 </el-col>
63 </el-row> 63 </el-row>
64 <el-row :gutter="20" class="mt20"> 64 <el-row :gutter="20" class="mt20">
65 <el-col :lg="8" v-for="(n,index) in newsList2" :key="index" v-show="index>3"> 65 <el-col :lg="8" v-for="(n,index) in newsList2" :key="index" v-show="index>3">
66 <div class="picbox"><img :src="fillImgUrl_webSite(n.picUrl)"/></div> 66 <div class="picbox" @click="goDetail(n)" ><img :src="fillImgUrl_webSite(n.picUrl)"/></div>
67 </el-col> 67 </el-col>
68 </el-row> 68 </el-row>
69 </el-col> 69 </el-col>
...@@ -88,12 +88,12 @@ const newsList2 = ref([]) ...@@ -88,12 +88,12 @@ const newsList2 = ref([])
88 const query1 = ref({ 88 const query1 = ref({
89 pageSize: 5, 89 pageSize: 5,
90 pageNum: 1, 90 pageNum: 1,
91 sortId: '30000000' 91 sortId: '10000006'
92 }) 92 })
93 const query2 = ref({ 93 const query2 = ref({
94 pageSize: 7, 94 pageSize: 7,
95 pageNum: 1, 95 pageNum: 1,
96 sortId: '30000001' 96 sortId: '10000007'
97 }) 97 })
98 98
99 onMounted(() => { 99 onMounted(() => {
...@@ -133,5 +133,7 @@ const goDetail = (n) => { ...@@ -133,5 +133,7 @@ const goDetail = (n) => {
133 <style lang="scss" scoped> 133 <style lang="scss" scoped>
134 .leftboderTT{ 134 .leftboderTT{
135 font-size: 20px;} 135 font-size: 20px;}
136 136 @media (max-width: 800px) {
137 [class*=el-col-]{display: block;margin: 0 0 20px}
138 }
137 </style> 139 </style>
......
1 <template>
2 <div>
3 <div class="box">
4 <div class="indexTitle">
5 <h3 class="leftboderTT">Event Video</h3>
6 <a class="more" @click="goList(query1.sortId,'Event Video')">MORE</a>
7 </div>
8
9 <el-row :gutter="20">
10 <el-col :lg="12" :sm="24" :md="12">
11 <div class="liveImgbox" @click="goDetail(newsList[0])">
12 <i class="ii">LIVE</i>
13 <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)">
14 <h3 class="esp">{{ newsList[0]?.name }}
15 </h3>
16 </div>
17 </el-col>
18 <el-col :lg="12" :sm="24">
19 <el-row :gutter="20">
20 <el-col :md="12" :lg="12">
21 <div class="videoImgbox" @click="goDetail(newsList[1])">
22 <img :src="fillImgUrl_webSite(newsList[1]?.picUrl)">
23 </div>
24 </el-col>
25 <el-col :md="12" :lg="12">
26 <div class="videoImgbox" @click="goDetail(newsList[2])">
27 <img :src="fillImgUrl_webSite(newsList[2]?.picUrl)">
28 </div>
29 </el-col>
30 <el-col :md="12" :lg="12" class="mt20">
31 <div class="videoImgbox" @click="goDetail(newsList[3])">
32 <img :src="fillImgUrl_webSite(newsList[3]?.picUrl)">
33 </div>
34 </el-col>
35 <el-col :md="12" :lg="12" class="mt20">
36 <div class="videoImgbox" @click="goDetail(newsList[4])">
37 <img :src="fillImgUrl_webSite(newsList[4]?.picUrl)">
38 </div>
39 </el-col>
40 </el-row>
41 </el-col>
42
43 </el-row>
44
45
46 <div class="indexTitle">
47 <h3 class="leftboderTT">Exciting Pictures</h3>
48 <a class="more" @click="goList(query2.sortId,'Exciting Pictures')">MORE</a>
49 </div>
50 <el-row class="mb20" :gutter="20">
51 <el-col :lg="9">
52 <div class="picbox" @click="goDetail(newsList2[0])"><img :src="fillImgUrl_webSite(newsList2[0]?.picUrl)"/></div>
53 </el-col>
54 <el-col :lg="15">
55 <el-row :gutter="20" style="height: 100%">
56 <el-col :lg="16">
57 <div class="picbox" @click="goDetail(newsList2[1])"><img :src="fillImgUrl_webSite(newsList2[1]?.picUrl)"/></div>
58 </el-col>
59 <el-col :lg="8">
60 <div class="picbox" @click="goDetail(newsList2[2])" style="height: calc(50% - 10px)"><img :src="fillImgUrl_webSite(newsList2[2]?.picUrl)"/></div>
61 <div class="picbox" @click="goDetail(newsList2[3])" style="height: calc(50% - 10px);margin-top: 20px"><img :src="fillImgUrl_webSite(newsList2[3]?.picUrl)"/></div>
62 </el-col>
63 </el-row>
64 <el-row :gutter="20" class="mt20">
65 <el-col :lg="8" v-for="(n,index) in newsList2" :key="index" v-show="index>3">
66 <div class="picbox" @click="goDetail(n)"><img :src="fillImgUrl_webSite(n.picUrl)"/></div>
67 </el-col>
68 </el-row>
69 </el-col>
70 </el-row>
71
72 <div class="mb60" />
73 </div>
74 </div>
75 </template>
76 <script setup>
77 import { ArrowRight, Search } from '@element-plus/icons-vue'
78 import { onMounted, ref } from 'vue'
79 import { getNewsListById } from '@/apiPc/webSite'
80 import { useRouter } from 'vue-router'
81
82 const router = useRouter()
83 const activeName = ref(0)
84 const total = ref(0)
85 const list = ref([])
86 const newsList = ref([])
87 const newsList2 = ref([])
88 const query1 = ref({
89 pageSize: 5,
90 pageNum: 1,
91 sortId: '10000008'
92 })
93 const query2 = ref({
94 pageSize: 7,
95 pageNum: 1,
96 sortId: '10000009'
97 })
98
99 onMounted(() => {
100 getList(query1.value)
101 getList2(query2.value)
102 })
103
104 const getList = (obj) => {
105 getNewsListById(obj).then(res => {
106 newsList.value = res.rows
107 })
108 }
109 const getList2 = (obj) => {
110 getNewsListById(obj).then(res => {
111 newsList2.value = res.rows
112 })
113 }
114
115 const goList = (sortId, name) => {
116 router.push({
117 path: `/news/list/${sortId}`,
118 query: {
119 kindName: name
120 }
121 })
122 }
123 const goDetail = (n) => {
124 if (n.isOut == '1') {
125 window.open(n.jumpUrl)
126 } else {
127 window.open(router.resolve({
128 path: `/news/detail/${n.noteId}`
129 }).href)
130 }
131 }
132 </script>
133 <style lang="scss" scoped>
134 .leftboderTT{
135 font-size: 20px;}
136 @media (max-width: 800px) {
137 [class*=el-col-]{display: block;margin: 0 0 20px}
138 }
139 </style>
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4 <el-breadcrumb class="mt20 forPc" :separator-icon="ArrowRight"> 4 <!-- <el-breadcrumb class="mt20 forPc" :separator-icon="ArrowRight">-->
5 <el-breadcrumb-item :to="{ path: '/' }"> 5 <!-- <el-breadcrumb-item :to="{ path: '/' }">-->
6 <el-icon> 6 <!-- <el-icon>-->
7 <HomeFilled /> 7 <!-- <HomeFilled />-->
8 </el-icon> 8 <!-- </el-icon>-->
9 首页 9 <!-- 首页-->
10 </el-breadcrumb-item> 10 <!-- </el-breadcrumb-item>-->
11 <el-breadcrumb-item :to="{ name: 'news' }">新闻</el-breadcrumb-item> 11 <!-- <el-breadcrumb-item :to="{ name: 'news' }">新闻</el-breadcrumb-item>-->
12 <el-breadcrumb-item>详情</el-breadcrumb-item> 12 <!-- <el-breadcrumb-item>详情</el-breadcrumb-item>-->
13 </el-breadcrumb> 13 <!-- </el-breadcrumb>-->
14 14
15 <el-row :gutter="30" class="forPc"> 15
16 <el-col :lg="24" :sm="24">
17 <el-card v-if="form.isOld=='1'" class="mt20 mb20"> 16 <el-card v-if="form.isOld=='1'" class="mt20 mb20">
18 <iframe 17 <iframe
19 id="newsIframe" :src="`./source${form.jumpUrl}`" width="100%" height="0" frameborder="none" 18 id="newsIframe" :src="`./source${form.jumpUrl}`" width="100%" height="0" frameborder="none"
20 scrolling="no" 19 scrolling="no"
21 /> 20 />
22 </el-card> 21 </el-card>
23 <el-card v-else class="mt20 mb20" :body-style="{padding:'30px 60px'}"> 22 <el-card v-else class="mt20 mb20">
24 <h3 class="title"> 23 <div class="bpd">
24 <h3 class="title">
25 <span v-if="form.publishType"> 25 <span v-if="form.publishType">
26 <span v-for="(t,index) in form.publishType.split(',')" :key="index" class="jstype">{{ t }}</span> 26 <span v-for="(t,index) in form.publishType.split(',')" :key="index" class="jstype">{{ t }}</span>
27 </span> 27 </span>
28 28
29 {{ form.name }}</h3> 29 {{ form.name }}</h3>
30 <div class="nInfo"> 30 <div class="nInfo">
31 <span>{{ form.belongTime }}</span> 31 <span>{{ form.belongTime }}</span>
32 <span v-if="form.source">{{ form.source }}</span> 32 <span v-if="form.source">{{ form.source }}</span>
33 <span v-if="form.author">责任编辑:{{ form.author }}</span> 33 <span v-if="form.author">责任编辑:{{ form.author }}</span>
34 </div>
35 <el-divider />
36 <div class="content" v-html="form.content" />
37
38 <!-- 视频-->
39 <div v-if="hasMp4">
40 <video-player v-for="(f,index) in fileList" :key="index" class="videoPlay mb20" controls :src="fillImgUrl_webSite(f.url)" />
41 </div>
42 <div v-if="!hasMp4 && fileList.length>0" class="mt20">
43 <!-- 附件-->
44 <p class="fwb mt20">附件下载:</p>
45 <p v-for="(f,index) in fileList" :key="index" class="fwb">
46 {{ index + 1 }}<a :href="fillImgUrl_webSite(f.url)" target="_blank">{{ f.name }}</a>
47 </p>
48
49 </div>
34 </div> 50 </div>
35 <el-divider />
36 <div class="content" v-html="form.content" />
37 51
38 <!-- 视频-->
39 <div v-if="hasMp4">
40 <video-player v-for="(f,index) in fileList" :key="index" class="videoPlay mb20" controls :src="fillImgUrl_webSite(f.url)" />
41 </div>
42 <div v-if="!hasMp4 && fileList.length>0" class="mt20">
43 <!-- 附件-->
44 <p class="fwb mt20">附件下载:</p>
45 <p v-for="(f,index) in fileList" :key="index" class="fwb">
46 {{ index + 1 }}<a :href="fillImgUrl_webSite(f.url)" target="_blank">{{ f.name }}</a>
47 </p>
48
49 </div>
50 </el-card> 52 </el-card>
51 </el-col> 53
52 </el-row>
53 54
54 </div> 55 </div>
55 </div> 56 </div>
...@@ -73,7 +74,7 @@ let newsId ...@@ -73,7 +74,7 @@ let newsId
73 onMounted(() => { 74 onMounted(() => {
74 newsId = route.params.id 75 newsId = route.params.id
75 getData(newsId) 76 getData(newsId)
76 getNew() 77 // getNew()
77 78
78 window.addEventListener('message', onMessage) 79 window.addEventListener('message', onMessage)
79 }) 80 })
...@@ -108,6 +109,9 @@ function setIframeHeight(height, iframe, handleTimeout) { ...@@ -108,6 +109,9 @@ function setIframeHeight(height, iframe, handleTimeout) {
108 109
109 watch(() => route.params.id, (val) => { 110 watch(() => route.params.id, (val) => {
110 if (val) { 111 if (val) {
112 if(val==0){
113 return
114 }
111 getData(val) 115 getData(val)
112 } 116 }
113 }) 117 })
...@@ -175,7 +179,7 @@ const goDetail = (n) => { ...@@ -175,7 +179,7 @@ const goDetail = (n) => {
175 179
176 .content { 180 .content {
177 text-align: justify; 181 text-align: justify;
178 182 :deep(video){max-width: 100%;}
179 p { 183 p {
180 img { 184 img {
181 max-width: 100%; 185 max-width: 100%;
...@@ -303,33 +307,12 @@ h2 { ...@@ -303,33 +307,12 @@ h2 {
303 .forWei { 307 .forWei {
304 display: none; 308 display: none;
305 } 309 }
306 310 .bpd{padding:30px 60px;
307 @media (max-width: 500px) { 311 video{max-width: 100%;}
308 .forWei { 312 img{max-width: 100%;}
309 height: 100vh; 313 }
310 box-sizing: border-box; 314 @media (max-width: 800px) {
311 overflow: auto; 315 .bpd{padding:30px 10px}
312 display: block;
313 background: #fff;
314 padding: 1px 15px;
315
316 .title {
317 text-align: left;
318 }
319
320 .nInfo {
321 text-align: left;
322
323 span {
324 padding: 0;
325 margin-right: 10px;
326 }
327 }
328 }
329 .forPc {
330 display: none;
331 font-size: 17px;
332 }
333 } 316 }
334 317
335 </style> 318 </style>
......
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
10 <el-col :lg="12" :sm="24" :md="12"> 10 <el-col :lg="12" :sm="24" :md="12">
11 <el-carousel indicator-position="none" height="330"> 11 <el-carousel indicator-position="none" height="330">
12 <el-carousel-item v-for="(n,index) in newsList" :key="index"> 12 <el-carousel-item v-for="(n,index) in newsList" :key="index">
13 <div class="imgbox carouselImg"> 13 <div class="imgbox carouselImg" @click="goDetail(n)">
14 <div class="date"> 14 <div class="date">
15 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div> 15 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div>
16 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p> 16 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p>
17 </div> 17 </div>
18 <img :src="fillImgUrl_webSite(n.bannerUrl)"> 18 <img :src="fillImgUrl_webSite(n.picUrl)">
19 <h3 class="esp">{{ n.name }} 19 <h3 class="esp">{{ n.name }}
20 </h3> 20 </h3>
21 </div> 21 </div>
...@@ -72,13 +72,13 @@ ...@@ -72,13 +72,13 @@
72 <el-row :gutter="20"> 72 <el-row :gutter="20">
73 <el-col 73 <el-col
74 v-for="(n,index) in newsList3" 74 v-for="(n,index) in newsList3"
75 v-show="index<3" :key="n.id" :xs="12" :sm="8" 75 v-show="index<3" :key="n.id" :xs="24" :sm="8"
76 :lg="8" 76 :lg="8"
77 > 77 >
78 <div class="activeItem"> 78 <div class="activeItem" @click="goDetail(n)">
79 <div class="info"> 79 <div class="info">
80 <div class="date"> 80 <div class="date">
81 2023-12-12 81 {{n.belongTime}}
82 </div> 82 </div>
83 <h3 class="esp_2" style="height: 50px">{{ n.name }}</h3> 83 <h3 class="esp_2" style="height: 50px">{{ n.name }}</h3>
84 <p class="esp_2" /> 84 <p class="esp_2" />
...@@ -337,25 +337,11 @@ const goDetail = (n) => { ...@@ -337,25 +337,11 @@ const goDetail = (n) => {
337 height: 100%; 337 height: 100%;
338 } 338 }
339 } 339 }
340 .forWei {
341 display: none;
342 }
343 340
344 @media (max-width: 500px) { 341
345 .box { 342 @media (max-width: 800px) {
346 width: 100%
347 }
348 .forWei {
349 display: block;
350 :deep(.el-input__wrapper){
351 border-radius: 20px;
352 background: #F4F6FA;
353 }
354 }
355 .forPc {
356 display: none
357 }
358 .infoPart{padding: 0;} 343 .infoPart{padding: 0;}
344 .activeItem{margin: 0 0 20px;}
359 .topBannerbox { 345 .topBannerbox {
360 background: #fff; 346 background: #fff;
361 padding: 1px; 347 padding: 1px;
......
...@@ -2,20 +2,20 @@ ...@@ -2,20 +2,20 @@
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4 <div class="indexTitle"> 4 <div class="indexTitle">
5 <h3 class="leftboderTT">要闻</h3> 5 <h3 class="leftboderTT">Asian Games News</h3>
6 <a class="more" @click="goList(query1.sortId,'要闻')">MORE</a> 6 <a class="more" @click="goList(query1.sortId,'Asian Games News')">MORE</a>
7 </div> 7 </div>
8 <el-card> 8 <el-card>
9 <el-row class="topNews" :gutter="20"> 9 <el-row class="topNews" :gutter="20">
10 <el-col :lg="12" :sm="24" :md="12"> 10 <el-col :lg="12" :sm="24" :md="12">
11 <el-carousel indicator-position="none" height="330"> 11 <el-carousel indicator-position="none" height="330">
12 <el-carousel-item v-for="(n,index) in newsList" :key="index"> 12 <el-carousel-item v-for="(n,index) in newsList" :key="index">
13 <div class="imgbox carouselImg"> 13 <div class="imgbox carouselImg" @click="goDetail(n)">
14 <div class="date"> 14 <div class="date">
15 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div> 15 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div>
16 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p> 16 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p>
17 </div> 17 </div>
18 <img :src="fillImgUrl_webSite(n.bannerUrl)"> 18 <img :src="fillImgUrl_webSite(n.picUrl)">
19 <h3 class="esp">{{ n.name }} 19 <h3 class="esp">{{ n.name }}
20 </h3> 20 </h3>
21 </div> 21 </div>
...@@ -41,8 +41,8 @@ ...@@ -41,8 +41,8 @@
41 </el-card> 41 </el-card>
42 42
43 <div class="indexTitle"> 43 <div class="indexTitle">
44 <h3 class="leftboderTT">舞蹈动态</h3> 44 <h3 class="leftboderTT">Official Release</h3>
45 <a class="more" @click="goList(query2.sortId,'舞蹈动态')">MORE</a> 45 <a class="more" @click="goList(query2.sortId,'Official Release')">MORE</a>
46 </div> 46 </div>
47 <el-row class="newsflex mb20"> 47 <el-row class="newsflex mb20">
48 <el-col 48 <el-col
...@@ -63,45 +63,46 @@ ...@@ -63,45 +63,46 @@
63 </div> 63 </div>
64 </el-col> 64 </el-col>
65 </el-row> 65 </el-row>
66 <div class="indexTitle">
67 <h3 class="leftboderTT">官方发布</h3>
68 <a class="more" @click="goList(query3.sortId,'官方发布')">MORE</a>
69 </div>
70 <el-row :gutter="20">
71 <el-col
72 v-for="(n,index) in newsList3"
73 v-show="index<3" :key="n.id" :xs="12" :sm="8"
74 :lg="8"
75 >
76 <div class="activeItem">
77 <div class="info">
78 <div class="date">
79 2023-12-12
80 </div>
81 <h3 class="esp_2" style="height: 50px">{{ n.name }}</h3>
82 <p class="esp_2" />
83 <a>查看详情</a>
84 </div>
85 </div>
86 </el-col>
87 </el-row>
88 66
89 <div class="indexTitle"> 67 <!-- <div class="indexTitle">-->
90 <h3 class="leftboderTT">专题报道</h3> 68 <!-- <h3 class="leftboderTT">官方发布</h3>-->
91 <a class="more" @click="goList(query4.sortId,'专题报道')">MORE</a> 69 <!-- <a class="more" @click="goList(query3.sortId,'官方发布')">MORE</a>-->
92 </div> 70 <!-- </div>-->
93 <el-row :gutter="30" class="newsimgcover"> 71 <!-- <el-row :gutter="20">-->
94 <el-col v-for="(n,index) in newsList4" v-show="index<3" :lg="8" @click="goDetail(n)"> 72 <!-- <el-col-->
95 <div class="item shadow"> 73 <!-- v-for="(n,index) in newsList3"-->
96 <div class="imgbox"><img :src="fillImgUrl_webSite(n.picUrl)"></div> 74 <!-- v-show="index<3" :key="n.id" :xs="12" :sm="8"-->
97 <h3 class="esp"> 75 <!-- :lg="8"-->
98 <span v-if="n.publishType"> 76 <!-- >-->
99 <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span> 77 <!-- <div class="activeItem">-->
100 </span> 78 <!-- <div class="info">-->
101 {{ n.name }}</h3> 79 <!-- <div class="date">-->
102 </div> 80 <!-- 2023-12-12-->
103 </el-col> 81 <!-- </div>-->
104 </el-row> 82 <!-- <h3 class="esp_2" style="height: 50px">{{ n.name }}</h3>-->
83 <!-- <p class="esp_2" />-->
84 <!-- <a>查看详情</a>-->
85 <!-- </div>-->
86 <!-- </div>-->
87 <!-- </el-col>-->
88 <!-- </el-row>-->
89
90 <!-- <div class="indexTitle">-->
91 <!-- <h3 class="leftboderTT">专题报道</h3>-->
92 <!-- <a class="more" @click="goList(query4.sortId,'专题报道')">MORE</a>-->
93 <!-- </div>-->
94 <!-- <el-row :gutter="30" class="newsimgcover">-->
95 <!-- <el-col v-for="(n,index) in newsList4" v-show="index<3" :lg="8" @click="goDetail(n)">-->
96 <!-- <div class="item shadow">-->
97 <!-- <div class="imgbox"><img :src="fillImgUrl_webSite(n.picUrl)"></div>-->
98 <!-- <h3 class="esp">-->
99 <!-- <span v-if="n.publishType">-->
100 <!-- <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span>-->
101 <!-- </span>-->
102 <!-- {{ n.name }}</h3>-->
103 <!-- </div>-->
104 <!-- </el-col>-->
105 <!-- </el-row>-->
105 106
106 <div class="mb60" /> 107 <div class="mb60" />
107 </div> 108 </div>
...@@ -124,12 +125,12 @@ const newsList4 = ref([]) ...@@ -124,12 +125,12 @@ const newsList4 = ref([])
124 const query1 = ref({ 125 const query1 = ref({
125 pageSize: 5, 126 pageSize: 5,
126 pageNum: 1, 127 pageNum: 1,
127 sortId:'10000001' 128 sortId:'10000004'
128 }) 129 })
129 const query2 = ref({ 130 const query2 = ref({
130 pageSize: 4, 131 pageSize: 4,
131 pageNum: 1, 132 pageNum: 1,
132 sortId:'10000002' 133 sortId:'10000005'
133 }) 134 })
134 const query3 = ref({ 135 const query3 = ref({
135 pageSize: 6, 136 pageSize: 6,
...@@ -145,8 +146,8 @@ const query4 = ref({ ...@@ -145,8 +146,8 @@ const query4 = ref({
145 onMounted(() => { 146 onMounted(() => {
146 getList(query1.value) 147 getList(query1.value)
147 getList2(query2.value) 148 getList2(query2.value)
148 getList3(query3.value) 149 // getList3(query3.value)
149 getList4(query4.value) 150 // getList4(query4.value)
150 }) 151 })
151 152
152 const getList = (obj) => { 153 const getList = (obj) => {
...@@ -339,20 +340,7 @@ const goDetail = (n) => { ...@@ -339,20 +340,7 @@ const goDetail = (n) => {
339 display: none; 340 display: none;
340 } 341 }
341 342
342 @media (max-width: 500px) { 343 @media (max-width: 800px) {
343 .box {
344 width: 100%
345 }
346 .forWei {
347 display: block;
348 :deep(.el-input__wrapper){
349 border-radius: 20px;
350 background: #F4F6FA;
351 }
352 }
353 .forPc {
354 display: none
355 }
356 .infoPart{padding: 0;} 344 .infoPart{padding: 0;}
357 .topBannerbox { 345 .topBannerbox {
358 background: #fff; 346 background: #fff;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
5 <div class="lineHead"> 5 <div class="lineHead">
6 <h3>全部{{ kindName }}</h3> 6 <h3>全部{{ kindName }}</h3>
7 </div> 7 </div>
8 <div class="infoPart forPc"> 8 <div class="infoPart">
9 <div class="newsBlock"> 9 <div class="newsBlock">
10 <div v-for="(n,i) in newsList" :key="i" class="item" @click="goDetail(n)"> 10 <div v-for="(n,i) in newsList" :key="i" class="item" @click="goDetail(n)">
11 <div class="date"> 11 <div class="date">
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
17 </div> 17 </div>
18 <div class="item-body"> 18 <div class="item-body">
19 <h3 v-html="n.name" /> 19 <h3 v-html="n.name" />
20 <p v-html="n.subName" /> 20 <p v-html="n.subName"/>
21 <a class="go">查看详情 21 <a class="go">查看详情
22 <el-icon class="rotate90_180"><sort-down/></el-icon> 22 <el-icon class="rotate90_180"><sort-down/></el-icon>
23 </a> 23 </a>
...@@ -118,25 +118,11 @@ const goDetail = (n) => { ...@@ -118,25 +118,11 @@ const goDetail = (n) => {
118 height: 100%; 118 height: 100%;
119 } 119 }
120 } 120 }
121 .forWei {
122 display: none;
123 }
124 121
125 @media (max-width: 500px) { 122
126 .box { 123 @media (max-width: 800px) {
127 width: 100% 124
128 } 125 //.infoPart{padding: 0;}
129 .forWei {
130 display: block;
131 :deep(.el-input__wrapper){
132 border-radius: 20px;
133 background: #F4F6FA;
134 }
135 }
136 .forPc {
137 display: none
138 }
139 .infoPart{padding: 0;}
140 .topBannerbox { 126 .topBannerbox {
141 background: #fff; 127 background: #fff;
142 padding: 1px; 128 padding: 1px;
...@@ -162,5 +148,11 @@ const goDetail = (n) => { ...@@ -162,5 +148,11 @@ const goDetail = (n) => {
162 font-size: 14px; 148 font-size: 14px;
163 } 149 }
164 } 150 }
151 .newsBlock{
152 .item{flex-direction: column;margin: 0 0 40px;padding: 0;
153 .date{position: absolute;top: 20px}
154 }
155 .imgbox{width: 100%;height: auto;margin: 0 0 20px}
156 }
165 } 157 }
166 </style> 158 </style>
......
1 <template>
2 <div>
3 <div class="box">
4 <el-card class="mt20 mb20" :body-style="{'padding':'0'}">
5 <div class="lineHead">
6 <h3>All {{ kindName }}</h3>
7 </div>
8 <div class="infoPart">
9 <div class="newsBlock">
10 <div v-for="(n,i) in newsList" :key="i" class="item" @click="goDetail(n)">
11 <div class="date">
12 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div>
13 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p>
14 </div>
15 <div v-if="n.picUrl" class="imgbox">
16 <img :src="fillImgUrl_webSite(n.picUrl)">
17 </div>
18 <div class="item-body">
19 <h3 v-html="n.name" />
20 <p v-html="n.subName" />
21 <a class="go">Detail
22 <el-icon class="rotate90_180"><sort-down/></el-icon>
23 </a>
24 </div>
25 </div>
26 <el-empty v-if="newsList.length == 0" description="no data" />
27
28 <div v-if="total>9" class="pc-page-box">
29 <!-- <el-pagination @current-change="getList" layout="prev, pager, next" :total="total" />-->
30 <PaginationPc
31 v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total"
32 @pagination="getList"
33 />
34 </div>
35 </div>
36 </div>
37 </el-card>
38
39 </div>
40 </div>
41 </template>
42 <script setup>
43 import { ArrowRight, Search } from '@element-plus/icons-vue'
44 import { onMounted, ref } from 'vue'
45 import { getNewsListById } from '@/apiPc/webSite'
46 import { useRoute, useRouter } from 'vue-router'
47 // import Pagination from '@/components/Pagination'
48 const route = useRoute()
49 const router = useRouter()
50 const kindName = ref('')
51 const total = ref(0)
52 const list = ref([])
53 const newsList = ref([])
54 const query = ref({
55 pageSize: 10,
56 pageNum: 1
57 })
58 onMounted(() => {
59 console.log(route)
60 query.value.sortId = route.params.id
61 kindName.value = route.query.kindName
62 getList()
63 })
64
65 const getList = () => {
66 console.log(query.value)
67 getNewsListById(query.value).then(res => {
68 newsList.value = res.rows
69 total.value = res.total
70 })
71 }
72
73 const goDetail = (n) => {
74 if (n.isOut == '1') {
75 window.open(n.jumpUrl)
76 } else {
77 window.open(router.resolve({
78 path: `/news/detail/${n.noteId}`
79 }).href)
80
81 // router.push({
82 // path: `/news/detail/${n.noteId}`
83 // })
84 }
85 }
86 </script>
87 <style lang="scss" scoped>
88 .flexBody {
89 display: flex;
90 align-items: center;
91
92 .el-form-item {
93 margin-bottom: 0
94 }
95 }
96
97 .infoPart {
98 padding: 20px;
99 flex: 1;
100
101 & > h3 {
102 font-size: 24px;
103 color: var(--el-color-primary);
104 }
105 }
106
107 .firstItem {
108 background: #FAFAFA;
109 }
110
111 .searchPark {
112 background: #F6F6F6;
113 }
114
115
116 .topBanner {height:500px;
117 :deep(.el-carousel__container) {
118 height: 100%;
119 }
120 }
121 .forWei {
122 display: none;
123 }
124
125 @media (max-width: 800px) {
126
127 //.infoPart{padding: 0;}
128 .topBannerbox {
129 background: #fff;
130 padding: 1px;
131
132 .el-carousel {
133 --el-carousel-indicator-height: 4px;
134 --el-carousel-indicator-width: 4px;
135 }
136 }
137 .topBanner {
138 height: 160px;
139 border-radius: 6px;
140 margin: 10px;
141 h3{text-align: left;font-size: 15px;padding: 30px 15px 20px;
142 }
143 :deep(.el-carousel__indicators--horizontal){left: auto;right: 0;
144 bottom: 12px;
145 }
146 :deep(.el-carousel__button){border-radius: 5px;}
147 :deep(.el-carousel__indicator.is-active button){width: 12px;}
148
149 h3 {
150 font-size: 14px;
151 }
152 }
153 .newsBlock{
154 .item{flex-direction: column;margin: 0 0 40px;padding: 0;
155 .date{position: absolute;top: 20px}
156 }
157 .imgbox{width: 100%;height: auto;margin: 0 0 20px}
158 }
159 }
160 </style>
...@@ -93,7 +93,7 @@ const total = ref(0) ...@@ -93,7 +93,7 @@ const total = ref(0)
93 const query = ref({ 93 const query = ref({
94 pageSize: 10, 94 pageSize: 10,
95 pageNum: 1, 95 pageNum: 1,
96 sortId:2000 96 sortId:20000000
97 }) 97 })
98 onMounted(() => { 98 onMounted(() => {
99 getList() 99 getList()
......
1 <template>
2 <div>
3 <div class="box">
4
5 <el-card class="mt20 mb20" :body-style="{'padding':'0'}">
6 <div class="lineHead">
7 <h3> NOTICE </h3>
8 </div>
9 <!-- <el-tabs v-model="activeName" @tab-change="changeTab" @tab-click="clickTab">-->
10 <!-- <el-tab-pane v-for="(tab,index) in list" :key="index" :label="tab.name" :name="index" />-->
11 <!-- </el-tabs>-->
12 <div class="pd20">
13 <el-row class="mb20">
14 <el-col :lg="24" :xs="24">
15 <div v-for="(n,index) in newsList?.slice(0,1)" v-show="index<1" :key="index" class="firstItem" @click="goDetail(n)">
16 <div class="date">
17 <p>{{ n.belongTime }}</p>
18 </div>
19 <div class="item-body">
20 <h3 class="esp_2"><span class="istop">TOP</span>{{n.name}}</h3>
21 </div>
22 <a class="go">DETAIL ⇀</a>
23 </div>
24 </el-col>
25 <!-- <el-col :lg="8" :xs="24" class="forPc">-->
26 <!-- <div class="searchPark">-->
27 <!-- <h3>通知搜索</h3>-->
28 <!-- <el-form>-->
29 <!-- <el-form-item>-->
30 <!-- <div class="flexformItem">-->
31 <!-- <el-date-picker-->
32 <!-- v-model="query.year"-->
33 <!-- class="mr10"-->
34 <!-- type="year" value-format="YYYY"-->
35 <!-- placeholder="选择年份" @change="getList"-->
36 <!-- />-->
37 <!-- <el-date-picker-->
38 <!-- v-model="query.month"-->
39 <!-- format="MM" value-format="MM"-->
40 <!-- type="month"-->
41 <!-- placeholder="选择月份" @change="getList"-->
42 <!-- />-->
43 <!-- </div>-->
44
45 <!-- </el-form-item>-->
46 <!-- <el-form-item>-->
47 <!-- <el-input-->
48 <!-- v-model="query.name"-->
49 <!-- placeholder="输入关键字"-->
50 <!-- :suffix-icon="Search" @change="getList"-->
51 <!-- />-->
52 <!-- </el-form-item>-->
53 <!-- </el-form>-->
54 <!-- </div>-->
55 <!-- </el-col>-->
56 </el-row>
57
58 <div class="newsLine">
59
60
61 <div v-for="(n,index) in newsList" v-show="index>0" :key="index" class="item" @click=" goDetail(n)">
62 <div class="date">
63 <div class="day">{{ n.belongTime?.substring(8, 10) }}</div>
64 <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p>
65 </div>
66 <div class="item-body">
67 <h3 v-html="n.name" />
68 </div>
69 <a class="go" />
70 </div>
71 </div>
72 <div v-if="total>8" class="pc-page-box">
73 <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" />
74 </div>
75 <el-empty v-if="newsList.length == 0" description="暂无数据" />
76 </div>
77 </el-card>
78
79 </div>
80 </div>
81 </template>
82 <script setup>
83 import { ArrowRight, Search } from '@element-plus/icons-vue'
84 import { onMounted, ref } from 'vue'
85 import { getNewsListById, getNoticeSorts } from '@/apiPc/webSite'
86 import { useRouter } from 'vue-router'
87 const router = useRouter()
88 const activeName = ref(0)
89 const list = ref([])
90 const newsList = ref([])
91 const nowTab = ref({})
92 const total = ref(0)
93 const query = ref({
94 pageSize: 10,
95 pageNum: 1,
96 sortId:20000001
97 })
98 onMounted(() => {
99 getList()
100 })
101
102 const getList = () => {
103 getNewsListById(query.value).then(res => {
104 newsList.value = res.rows
105 total.value = res.total
106 if (query.value.name) {
107 const pattern = new RegExp(query.value.name, 'gi')
108 for (var n of newsList.value) {
109 n.name = n.name.replace(pattern, `<span class="highlight">$&</span>`)
110 n.subName = n.name.replace(pattern, `<span class="highlight">$&</span>`)
111 }
112 }
113 })
114 }
115 const clickTab = (pane, ev) => {
116 console.log(pane, ev)
117 }
118 const goDetail = (n) => {
119 if (n.isOut == '1') {
120 window.open(n.jumpUrl)
121 } else {
122 router.push({
123 path: `/news/detail/${n.noteId}`
124 })
125 }
126 }
127
128 </script>
129 <style lang="scss" scoped>
130
131 .infoPart{padding: 20px; flex: 1;
132 &>h3{
133 font-size: 24px;
134 color: var(--el-color-primary);}
135 }
136 .firstItem{cursor: pointer;
137 background: #F8F4FF;height: 100%;padding: 10px 20px;
138 .date{font-weight: bold;transform: scaleX(0.7);transform-origin: left;
139 font-size: 18px;
140 color: var(--el-color-primary);}
141 h3{margin: 10px 0;
142 font-size: 22px;}
143 .go{color: var(--el-color-primary);
144 font-size: 14px;padding: 0 0 5px;}
145 }
146
147
148 .newsLine{
149 .item{display: flex;position: relative;width: 100%;height: 90px;
150 align-items: center;cursor: pointer;border-bottom: 1px dashed #EEEEEE;
151 .date{width: 60px;height: 60px;text-align: center;background: #FAFAFA;margin: 0 10px;
152 .day{color: var(--el-color-primary);transform: scaleX(0.7);font-weight: bold;font-size: 24px;}
153 p{font-size: 14px;margin: 0;transform: scaleX(0.7);font-weight: bold;color: #7B7F83;}
154 }
155 .item-body{width: 60%;
156 h3{padding: 0 10px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;font-size: 18px;color: #000000;}
157 }
158 .go{background: url("@/assets/v1/about/go.png") no-repeat center;background-size: contain;
159 position: absolute;width: 30px;height: 30px;right: 10px;
160 filter:grayscale(1);
161 }
162 }
163 .item:hover{background: #F8F4FF;
164 .date{
165 background: var(--el-color-primary);
166 .day{color: #fff;}
167 p{color: #fff;}
168 }
169 .item-body{
170 h3{color: var(--el-color-primary);}
171 }
172 }
173 }
174
175 @media (max-width: 500px) {
176 .box{width: 100%}
177 .forWei {
178 display: block;
179 }
180 .forPc{display: none}
181 :deep(.el-tabs__nav-scroll){overflow: auto;}
182 :deep(.el-card__body){padding: 10px;}
183 .flexBody{display: block;background: transparent;}
184 .infoPart{background: #fff;padding: 10px;margin:0 15px}
185 .firstItem{padding: 10px 20px;
186 .date{
187 font-size: 14px;}
188 h3{margin: 10px 0;
189 font-size: 14px;}
190 .go{font-size: 12px;}
191 }
192 .newsLine{
193 .item{height: 50px;
194 .date{height: 34px;width: 44px;margin: 0;
195 .day{font-size: 16px;}
196 p{font-size: 12px;}
197 }
198 .item-body{width: 80%;
199 h3{font-size: 14px;}
200 }
201 }
202 .go{display: none;}
203
204 }
205 }
206 </style>
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
48 <el-card class="mt20 mb20"> 48 <el-card class="mt20 mb20">
49 <div class="leftboderTT">2023.07.22 赛事成绩</div> 49 <div class="leftboderTT">2023.07.22 赛事成绩</div>
50 <h3 class="text-center">08:00-09:30 拉丁舞第一组比赛结果</h3> 50 <h3 class="text-center">08:00-09:30 拉丁舞第一组比赛结果</h3>
51 <div class="tablebody">
51 <table class="table table-striped"> 52 <table class="table table-striped">
52 <thead> 53 <thead>
53 <tr class="bg-lineg"> 54 <tr class="bg-lineg">
...@@ -111,11 +112,12 @@ ...@@ -111,11 +112,12 @@
111 112
112 </tbody> 113 </tbody>
113 </table> 114 </table>
114 115 </div>
115 <br><br> 116 <br><br>
116 <div class="leftboderTT">2023.07.22 赛事成绩</div> 117 <div class="leftboderTT">2023.07.22 赛事成绩</div>
117 118
118 <h3 class="text-center">08:00-09:30 拉丁舞第一组比赛结果</h3> 119 <h3 class="text-center">08:00-09:30 拉丁舞第一组比赛结果</h3>
120 <div class="tablebody">
119 <table class="table table-striped"> 121 <table class="table table-striped">
120 <tr class="bg-lineg"> 122 <tr class="bg-lineg">
121 <td>编号</td> 123 <td>编号</td>
...@@ -168,6 +170,7 @@ ...@@ -168,6 +170,7 @@
168 170
169 171
170 </table> 172 </table>
173 </div>
171 </el-card> 174 </el-card>
172 </div> 175 </div>
173 </div> 176 </div>
...@@ -188,18 +191,18 @@ const loading = ref(false) ...@@ -188,18 +191,18 @@ const loading = ref(false)
188 const calendarValue = ref('2024-07-22') 191 const calendarValue = ref('2024-07-22')
189 192
190 193
191 onMounted(() => { 194 // onMounted(() => {
192 currYear.value = dayjs().year() 195 // currYear.value = dayjs().year()
193 getPlanYears().then(res => { 196 // getPlanYears().then(res => {
194 years.value = res.data 197 // years.value = res.data
195 }) 198 // })
196 }) 199 // })
197 200 //
198 watch(currYear, (val) => { 201 // watch(currYear, (val) => {
199 if (val) { 202 // if (val) {
200 getPlanList() 203 // getPlanList()
201 } 204 // }
202 }) 205 // })
203 206
204 function getPlanList() { 207 function getPlanList() {
205 loading.value = true 208 loading.value = true
......
1 <template>
2 <div>
3 <div class="box">
4
5 <div class="mt20" />
6 <el-card>
7 <el-row :gutter="20">
8 <el-col :sm="24" :lg="12">
9 <!--赛事日历-->
10
11 <el-calendar v-model="calendarValue">
12 <template #date-cell="data">
13 <div v-if="data.data.day.slice(8,10)==22" class="primaryDate date">22</div>
14 <div v-else class="date">
15 {{ data.data.day.slice(8,10) }}
16 </div>
17
18 </template>
19 </el-calendar>
20
21 </el-col>
22 <el-col :sm="24" :lg="12">
23 <div class="calendarList">
24 <ul>
25 <li>
26 <label>08:00~10:30</label> Wuxi Open
27 </li>
28 <li>
29 <label>11:00</label> the WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024 group A
30 </li>
31 <li>
32 <label>12:00</label> the WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024 group B
33 </li>
34 <li>
35 <label>13:00</label> the WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024 group C
36 </li>
37 <li>
38 <label>15:00</label> the WDSF ASIAN DANCESPORT FESTIVAL .WUXI 2024 group D
39 </li>
40 </ul>
41
42 </div>
43
44 </el-col>
45 </el-row>
46 </el-card>
47
48 <el-card class="mt20 mb20">
49 <div class="leftboderTT">2023.07.22 Result</div>
50 <h3 class="text-center">08:00-09:30 The results of the group A of Latin dance competitions</h3>
51 <div class="tablebody">
52 <table class="table table-striped">
53 <thead>
54 <tr class="bg-lineg">
55 <td>Number</td>
56 <td>Name</td>
57 <td>Country</td>
58 <td>Score</td>
59 <td>Ranking</td>
60 <td>Final result</td>
61 </tr>
62 </thead>
63 <tbody>
64 <tr>
65 <td>3456</td>
66 <td>Wang wenwen</td>
67 <td>China</td>
68 <td class="text-primary">198.00</td>
69 <td>1</td>
70 <td class="text-primary">advancement</td>
71 </tr>
72 <tr>
73 <td>4567</td>
74 <td>Zhang</td>
75 <td>China</td>
76 <td class="text-primary">191.00</td>
77 <td>2</td>
78 <td class="text-primary">advancement</td>
79 </tr>
80 <tr>
81 <td>3456</td>
82 <td>Sdehj Lijukl</td>
83 <td>Uzbekistan</td>
84 <td class="text-primary">190.00</td>
85 <td>3</td>
86 <td class="text-primary">advancement</td>
87 </tr>
88 <tr>
89 <td>1255</td>
90 <td>XuDu</td>
91 <td>Hong Kong, China</td>
92 <td class="text-primary">188.00</td>
93 <td>4</td>
94 <td class="text-primary">advancement</td>
95 </tr>
96 <tr>
97 <td>1299</td>
98 <td>Alice Luyr</td>
99 <td>Thailand</td>
100 <td class="text-primary">180.00</td>
101 <td>5</td>
102 <td class="text-primary">advancement</td>
103 </tr>
104 <tr>
105 <td>1652</td>
106 <td>Wu Yuan</td>
107 <td>Hong Kong, China</td>
108 <td class="text-primary">188.00</td>
109 <td>6</td>
110 <td>Out</td>
111 </tr>
112
113 </tbody>
114 </table>
115 </div>
116 <br><br>
117 <div class="leftboderTT">2023.07.22 Result</div>
118
119 <h3 class="text-center">08:00-09:30 The results of the group A of Latin dance competitions</h3>
120 <div class="tablebody">
121 <table class="table table-striped">
122 <tr class="bg-lineg">
123 <td>Number</td>
124 <td>Name</td>
125 <td>Country</td>
126 <td>Score</td>
127 <td>Ranking</td>
128 <td>Final result</td>
129 </tr>
130 <tr>
131 <td>3456</td>
132 <td>Chen Sha</td>
133 <td>China</td>
134 <td class="text-primary">198.00</td>
135 <td>1</td>
136 <td class="text-primary">advancement</td>
137 </tr>
138 <tr>
139 <td>3001</td>
140 <td>ZhaoQian</td>
141 <td>China</td>
142 <td class="text-primary">196.00</td>
143 <td>2</td>
144 <td class="text-primary">advancement</td>
145 </tr>
146 <tr>
147 <td>1005</td>
148 <td>ZhangChuChu</td>
149 <td>China</td>
150 <td class="text-primary">190.00</td>
151 <td>3</td>
152 <td class="text-primary">advancement</td>
153 </tr>
154 <tr>
155 <td>1544</td>
156 <td>LiuYiwan</td>
157 <td>China</td>
158 <td class="text-primary">186.90</td>
159 <td>4</td>
160 <td class="text-primary">advancement</td>
161 </tr>
162 <tr>
163 <td>1293</td>
164 <td>LiHan</td>
165 <td>China</td>
166 <td class="text-primary">186.90</td>
167 <td>5</td>
168 <td>Out</td>
169 </tr>
170
171
172 </table>
173 </div>
174 </el-card>
175 </div>
176 </div>
177 </template>
178
179 <script setup>
180 import { onMounted, ref, watch } from 'vue'
181 import { getPlanYears, getYearZtxPlanList } from '@/apiPc/train'
182 import { ArrowRight } from '@element-plus/icons-vue'
183 import { dayjs } from 'element-plus'
184 import { szToHz } from '@/utils/ruoyi'
185
186 const years = ref([])
187 const currYear = ref(null)
188 const ztxPlanList = ref([])
189 const planList = ref([])
190 const loading = ref(false)
191 const calendarValue = ref('2024-07-22')
192
193
194 // onMounted(() => {
195 // currYear.value = dayjs().year()
196 // getPlanYears().then(res => {
197 // years.value = res.data
198 // })
199 // })
200 //
201 // watch(currYear, (val) => {
202 // if (val) {
203 // getPlanList()
204 // }
205 // })
206
207 function getPlanList() {
208 loading.value = true
209
210 Promise.all([
211 getYearZtxPlanList({
212 year: currYear.value,
213 type: 1// 中跆协
214 }),
215 getYearZtxPlanList({
216 year: currYear.value,
217 type: 0 // 省
218 })
219 ]).then(res => {
220 loading.value = false
221 ztxPlanList.value = res[0].rows
222 planList.value = res[1].rows
223 })
224 }
225
226 </script>
227
228 <style scoped lang="scss">
229 .leftboderTT{margin: 0 0 20px;color: var(--el-color-primary);
230 font-size: 20px;}
231 h3{background: #F5F0FF;margin: 0;padding: 10px 0;
232 color: var(--el-color-primary);
233 font-size: 18px;}
234 .table { border-spacing: 0;
235 border-collapse: collapse;
236 width: 100%;
237 max-width: 100%;
238 margin-bottom: 20px;
239 td,th{ padding: 8px; font-size: 14px;}
240 }
241 :deep(.table-striped > tbody > tr:nth-of-type(odd)){
242 background: #F6F9FE;
243 }
244
245 .el-calendar{--el-calendar-border:none;--el-calendar-cell-width:51px;text-align:center;
246 --el-text-color-regular:#8E8D94;
247 :deep(.el-calendar__header){justify-content: center;}
248 :deep(.el-calendar__body){border: 1px solid #F0F0F0;padding: 0}
249 :deep(.el-calendar-table .el-calendar-day){padding: 1px;}
250 :deep(.el-calendar-table td.is-selected){background: transparent;}
251 :deep(.el-calendar__button-group){display: none;}
252 }
253 .primaryDate{color: #fff;
254 background: linear-gradient(90deg, #8623FC, #453DEA);}
255 .date{ margin:5px auto;border-radius: 50%;width: 30px;height: 30px;line-height: 30px;
256 font-weight: bold;
257 }
258 .calendarList{border: 1px solid #F0F0F0;padding:12px 20px;overflow: hidden;
259 margin: 46px 0 0;
260 ul{
261 li{background: #F6F9FE;margin:7px 0 7px 20px;position: relative;padding: 13px;
262 border-radius: 10px;
263 font-weight: 500;
264 font-size: 15px;
265 label{color: #453DEA;margin-right: 15px;
266 &::before{content: '';background:#fff;left: -17px;top: 0px;bottom: 0;margin: auto;
267 border-radius: 50%;width: 2px;height: 2px;position: absolute;z-index: 1}
268 }
269 }
270 li::before{content: '';background: linear-gradient(0deg, #8623FC, #453DEA);
271 border-radius: 50%;width: 8px;height: 8px;position: absolute;
272 left: -20px;top: 0;bottom: 0;margin: auto;z-index: 1;
273 }
274 li::after{content: ''; left: -16px;width: 1px;height: 100%;
275 background: #EBEBEB; position: absolute;top: 20px}
276 li:hover{color: #fff;
277 background: linear-gradient(-90deg, #8623FC, #453DEA);
278 label{color: #fff;}
279 }
280 }
281 }
282
283 </style>
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4 <el-breadcrumb class="mt20" :separator-icon="ArrowRight"> 4 <!-- <el-breadcrumb class="mt20" :separator-icon="ArrowRight">-->
5 <el-breadcrumb-item :to="{ path: '/' }"> 5 <!-- <el-breadcrumb-item :to="{ path: '/' }">-->
6 <el-icon> 6 <!-- <el-icon>-->
7 <HomeFilled/> 7 <!-- <HomeFilled/>-->
8 </el-icon> 8 <!-- </el-icon>-->
9 首页 9 <!-- 首页-->
10 </el-breadcrumb-item> 10 <!-- </el-breadcrumb-item>-->
11 <el-breadcrumb-item>搜索结果</el-breadcrumb-item> 11 <!-- <el-breadcrumb-item>搜索结果</el-breadcrumb-item>-->
12 </el-breadcrumb> 12 <!-- </el-breadcrumb>-->
13 13
14 <el-card class="mt20 mb20"> 14 <el-card class="mt20 mb20">
15 <div class="infoPart"> 15 <div class="infoPart" style="min-height: 65vh">
16 <div class="newsBlock"> 16 <div class="newsBlock">
17 <div v-for="n in newsList" class="item" @click="goDetail(n)"> 17 <div v-for="n in newsList" class="item" @click="goDetail(n)">
18 <div class="date"> 18 <div class="date">
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
29 <a class="go"/> 29 <a class="go"/>
30 </div> 30 </div>
31 </div> 31 </div>
32 <el-empty v-if="newsList.length == 0" description="暂无数据"/> 32 <el-empty v-if="newsList.length == 0" />
33 33
34 </div> 34 </div>
35 35
......
...@@ -53,18 +53,18 @@ ...@@ -53,18 +53,18 @@
53 <el-col :lg="12" :xs="24" :sm="12"> 53 <el-col :lg="12" :xs="24" :sm="12">
54 <div class="black-pic-bg"> 54 <div class="black-pic-bg">
55 <div class="item" @click="goCoach(1)"> 55 <div class="item" @click="goCoach(1)">
56 <div><img src="@/assets/v1/hy_btn01.png"> 56 <div>
57 <h3>教练员</h3></div> 57 <h3>教练员</h3></div>
58 </div> 58 </div>
59 <div class="item" @click="goCoach(2)"> 59 <div class="item" @click="goCoach(2)">
60 <div><img src="@/assets/v1/hy_btn02.png"> 60 <div>
61 <h3>裁判员</h3></div> 61 <h3>裁判员</h3></div>
62 </div> 62 </div>
63 <!-- <div class="item" @click="goNationalTeam('t1')">--> 63 <!-- <div class="item" @click="goNationalTeam('t1')">-->
64 <!-- <div><img src="@/assets/v1/hy_btn03.png"><h3>运动员</h3></div>--> 64 <!-- <div><img src="@/assets/v1/hy_btn03.png"><h3>运动员</h3></div>-->
65 <!-- </div>--> 65 <!-- </div>-->
66 <div class="item" @click="goCoach(3)"> 66 <div class="item" @click="goCoach(3)">
67 <div><img src="@/assets/v1/hy_btn04.png"> 67 <div>
68 <h3>考官</h3></div> 68 <h3>考官</h3></div>
69 </div> 69 </div>
70 </div> 70 </div>
......
...@@ -111,7 +111,6 @@ export default defineConfig(({ mode, command }) => { ...@@ -111,7 +111,6 @@ export default defineConfig(({ mode, command }) => {
111 rollupOptions: { 111 rollupOptions: {
112 input: { 112 input: {
113 main: resolve(__dirname, 'index.html') 113 main: resolve(__dirname, 'index.html')
114 // pc: resolve(__dirname, 'pc.html')
115 } 114 }
116 } 115 }
117 } 116 }
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!