3fa14c0a by zhangmeng

Merge remote-tracking branch 'origin/dev' into dev

2 parents 87df0e78 d4261530
1 viewPc
2 测试打包 npm run build:stage
3 生产打包 npm run build:prod

27.9 KB | W: | H:

159 KB | W: | H:

public/img/code.jpg
public/img/code.jpg
public/img/code.jpg
public/img/code.jpg
  • 2-up
  • Swipe
  • Onion skin
...@@ -457,7 +457,7 @@ export const constantRoutes = [ ...@@ -457,7 +457,7 @@ export const constantRoutes = [
457 }, 457 },
458 { 458 {
459 path: 'list/:id', 459 path: 'list/:id',
460 component: () => import('@/viewsPc/match/detail'), 460 component: () => import('@/viewsPc/match/detail_en'),
461 name: 'matchDetail', 461 name: 'matchDetail',
462 meta: { title: '赛事详情' } 462 meta: { title: '赛事详情' }
463 } 463 }
......
...@@ -399,7 +399,7 @@ export const constantRoutes = [ ...@@ -399,7 +399,7 @@ export const constantRoutes = [
399 }, 399 },
400 { 400 {
401 path: 'list/:id', 401 path: 'list/:id',
402 component: () => import('@/viewsPc/match/detail'), 402 component: () => import('@/viewsPc/match/detail_en'),
403 name: 'matchDetail', 403 name: 'matchDetail',
404 meta: { title: '赛事详情' } 404 meta: { title: '赛事详情' }
405 }, 405 },
......
...@@ -61,9 +61,9 @@ ...@@ -61,9 +61,9 @@
61 </div> 61 </div>
62 </el-dialog> 62 </el-dialog>
63 </div> 63 </div>
64 <!-- <div class="poCode">--> 64 <div class="poCode">
65 <!-- <el-image :preview-src-list="['/img/code.jpg']" hide-on-click-modal="true" style="width: 120px;height: 120px;" src="/img/code.jpg"/>--> 65 <el-image :preview-src-list="['/img/code.jpg']" hide-on-click-modal="true" style="width: 120px;height: 120px;" src="/img/code.jpg"/>
66 <!-- </div>--> 66 </div>
67 <dialog-master-class ref="masterClassRef"/> 67 <dialog-master-class ref="masterClassRef"/>
68 <pick-up ref="pickupRef"></pick-up> 68 <pick-up ref="pickupRef"></pick-up>
69 <back-number ref="backNumberRef"></back-number> 69 <back-number ref="backNumberRef"></back-number>
......
1 <template>
2 <!-- 已废弃-->
3 <div class="app-container" v-loading="loading">
4 <div class="mt30"/>
5 <div v-if="error">
6 <el-result
7 icon="error"
8 title="未找到赛事"
9 >
10 <template #extra>
11 </template>
12 </el-result>
13 </div>
14 <div class="box mb20 " v-else>
15 <el-card class="mb20">
16 <el-row :gutter="20">
17 <el-col :lg="7" :md="matchData.type=='0'?24:12" :xl="matchData.type=='0'?6:6">
18 <img class="mauto w100" :src="fillImgUrl(matchData.coverUrl)">
19 </el-col>
20 <el-col style="position: relative" :lg="matchData.type=='0'?9:17" :md="matchData.type=='0'?12:12" :xl="matchData.type=='0'?10:10">
21 <h3 class="mtitle">
22 {{ matchData.name }}
23 </h3>
24 <p class="ppl"><label class="bm1">比赛时间:</label>{{ matchData.beginTime?.slice(0, 10) }} 至
25 {{ matchData.endTime?.slice(0, 10) }}</p>
26 <p class="ppl"><label class="bm2">赛事级别:</label>{{ matchData.level }}</p>
27 <p class="ppl" v-if="matchData.address"><label class="bm3">&ensp;&ensp;&ensp;&ensp;点:</label>{{ matchData.address }}</p>
28 <!-- <p class="ppl" v-if="matchData.signEndTime"><label class="bm4">报名截止:</label>{{ matchData.signEndTime?.slice(0, 10) }}</p>-->
29
30 <p class="ppl" v-if="matchData.type=='1'">
31 <label>
32 <svg style="position: relative;top: 2px;" t="1711708779620" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7920" width="20" height="20"><path d="M398.652952 165.692952c-32.280381-46.006857-58.172952-61.318095-92.867047-54.808381-14.969905 2.80381-24.210286 7.850667-41.20381 22.528l-12.946285 11.361524-25.185524 20.894476-6.582857 5.753905c-3.705905 3.413333-6.38781 6.217143-9.825524 10.118095-64 72.46019-81.724952 185.782857-44.470857 292.327619 26.794667 76.55619 74.605714 152.624762 142.774857 228.644572 72.289524 80.62781 133.046857 131.364571 202.922666 168.374857 54.857143 29.013333 96.865524 41.74019 145.676191 43.227429 59.001905 1.828571 110.957714-11.50781 153.648762-39.15581a162.133333 162.133333 0 0 0 19.553524-15.189333l8.289523-7.558095 16.335239-15.213715 5.534476-4.924952 10.922666-9.435429c22.040381-19.651048 29.184-31.939048 30.646858-51.370666 2.194286-29.647238-11.215238-52.736-49.737143-85.699048l-26.063238-21.820952-12.117334-10.581334-11.459047-9.825524c-37.229714-30.744381-64.804571-40.69181-100.205715-35.35238-24.283429 3.632762-38.278095 12.141714-63.073523 38.107428l-10.947048 11.654095c-18.041905 19.017143-28.330667 26.258286-43.544381 29.305905-22.25981 4.461714-44.373333-7.046095-80.262095-36.205714-46.250667-37.546667-84.626286-80.676571-117.613715-131.949714-22.869333-35.766857-31.890286-62.902857-24.941714-87.600762 2.82819-9.99619 9.679238-17.042286 24.064-28.184381l14.994286-11.312762 2.413714-1.877334 22.747429-18.553904c20.114286-16.822857 28.281905-28.281905 32.572952-45.836191 8.899048-36.10819 0.487619-66.072381-32.426667-117.638095l-15.62819-24.234667-5.558857-8.533333-6.436572-9.435429z" p-id="7921" fill="#d3d8d9"></path></svg>
33 联系电话:</label>{{matchData.contactTelno}}
34 </p>
35 <p class="ppl" v-if="matchData.type=='1'">
36 <label>
37 <svg style="position: relative;top: 2px;" t="1711707785514" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6578" width="18" height="18">
38 <path d="M780 68H256c-71.6 0-130.2 55.5-130.2 123.2v711.2c1.5 42.8 50 69.3 90.6 50.6l227.2-105c38.5-17.8 83.4-18.5 122.6-1.9l255.4 108.6c34.8 14.8 76.1-2.7 86.3-37.6 1.6-5.4 2.4-11 2.4-16.9v-709C910.2 123.5 851.6 68 780 68zM276.9 231.3h255.9c23.9 0 43.3 18.4 43.3 41s-19.4 41-43.3 41H276.9c-23.9 0-43.3-18.4-43.3-41s19.4-41 43.3-41z m386.8 464H276.9c-23.9 0-43.3-18.4-43.3-41s19.4-41 43.3-41h386.8c23.9 0 43.3 18.4 43.3 41s-19.4 41-43.3 41z m0-191H276.9c-23.9 0-43.3-18.4-43.3-41s19.4-41 43.3-41h386.8c23.9 0 43.3 18.4 43.3 41s-19.4 41-43.3 41z" p-id="6579" fill="#d3d8d9"></path></svg>
39 分站赛:</label>{{matchData.cpts.length}}
40 </p>
41 <div style="height: 30px"></div>
42 <div class="ppl_pb">
43 <el-link class="mr20" v-if="matchData.signKnowUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.signKnowUrl)[0]?.url)" target="_blank">
44 <el-icon :size="20">
45 <Download />
46 </el-icon>
47 <!-- {{ JSON.parse(matchData.signKnowUrl)[0]?.name}}-->
48 报名须知
49 </el-link>
50
51 <el-link class="mr20" v-if="matchData.disclaimerUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.disclaimerUrl)[0]?.url)" target="_blank">
52 <el-icon :size="20">
53 <Download />
54 </el-icon>免责声明
55 <!-- {{ JSON.parse(matchData.disclaimerUrl)[0]?.name }}-->
56 </el-link>
57 <el-link v-if="matchData.ruleUrl" type="primary" :href="fillImgUrl(JSON.parse(matchData.ruleUrl)[0]?.url)" target="_blank">
58 <el-icon :size="20">
59 <Download />
60 </el-icon>赛事规程
61 <!-- {{ JSON.parse(matchData.ruleUrl)[0]?.name }}-->
62 </el-link>
63 </div>
64 </el-col>
65 <el-col :lg="8" :md="12" :xl="8" v-if="matchData.type=='0'">
66 <p class="countDownTitle"><span>报名截止倒计时</span></p>
67 <van-count-down :time="startSign>0?startSign:time" format="DD 天 HH 时 mm 分 ss 秒">
68 <template #default="timeData">
69 <span class="block">{{ timeData.days }}</span>
70 <span class="colon"></span>
71 <span class="block">{{ timeData.hours }}</span>
72 <span class="colon"></span>
73 <span class="block">{{ timeData.minutes }}</span>
74 <span class="colon"></span>
75 <span class="block">{{ timeData.seconds }}</span>
76 <span class="colon"></span>
77 </template>
78 </van-count-down>
79
80 <div class="mt30">
81 <a class="btn-lineG mb20" v-if="matchData.progressStatusCode=='2'" @click="choseSignType" style="display: block;text-align: center;">
82 我要报名
83 </a>
84 <div v-else-if="time<=0" style="opacity: 0.5;" class="btn-lineG mb20 mauto text-center">报名已结束</div>
85 <div v-else-if="startSign>0" style="opacity: 0.5;" class="btn-lineG mb20 mauto text-center">报名未开始</div>
86 </div>
87 </el-col>
88 </el-row>
89 </el-card>
90
91 <quick-row :match-id="matchId"/>
92
93 <el-row :gutter="20" v-if="matchData.type=='0'">
94 <el-col :lg="18">
95 <el-card :body-style="{'padding':'0'}">
96 <div class="lineHead">
97 <ul>
98 <li v-for="l in menu" :key="l.name" @click="changeMenu(menu,l)" :class="l.active==1?'active':''">
99 {{ l.name }}
100 </li>
101 </ul>
102 </div>
103 <matchInfo :form="matchData" v-if="menu[0].active==1"/>
104 <div v-if="menu[1].active==1">
105 <match-info-project-list :match-id="matchData.id" />
106 </div>
107 <match-schedule-list :match-data="matchData" v-if="menu[2].active==1"/>
108 <div v-if="menu[3].active==1">
109 <el-row :gutter="20" v-if="matchData.signType == '0'">
110 <el-col v-for="t in signDoneGroupList" :key="t.id" :span="8">
111 <div class="teamItem">
112 <el-avatar :size="60" :src="fillImgUrl(t.imgUrl||t.avatar)"/>
113 <span class="name">{{ t.name }}</span>
114 </div>
115 </el-col>
116 </el-row>
117 <el-row :gutter="20" v-else>
118 <el-col :span="24" v-for="(t,index) in signDoneGroupList" :key="t.id">
119 <div class="nowteamItem">
120 <span>{{ index + 1 }}.</span>
121 <el-avatar :size="80" :src="fillImgUrl(t.imgUrl||t.avatar)" :fit="cover"/>
122 <div class="info">
123 <h3 class="name">{{ t.name }}</h3>
124 <p v-if="t.extraInfo">
125 <span v-for="(ee,index) in JSON.parse(t.extraInfo)" :key="index"
126 v-show="(ee?.type == '0'||ee?.type == '4')&&index<2">
127 {{ ee.value }}&ensp;&ensp;
128 </span>
129 </p>
130 </div>
131 <p class="rr"><span>{{ t.renCi }}</span> 人参赛</p>
132 </div>
133 </el-col>
134 </el-row>
135 <el-empty :image="`/img/order_no.png`" :image-size="228"
136 v-if="(signDoneGroupList==null)||(signDoneGroupList.length==0)" description=""/>
137 </div>
138 <div v-if="menu[4].active==1">
139 <!-- 成绩-->
140 <el-empty :image="`/img/order_no.png`" :image-size="228"/>
141 </div>
142 <div v-if="menu[5].active==1" class="pd20">
143 <div class="xzbox">
144 <div v-html="matchData.signKnow"></div>
145 <div v-if="matchData.signKnowUrl">{{JSON.parse(matchData.signKnowUrl)}}
146 <el-link v-for="(item,index) in JSON.parse(matchData.signKnowUrl)" type="primary"
147 :href="fillImgUrl(item.url)" target="_blank">
148 <el-icon :size="20">
149 <Download />
150 </el-icon>
151 {{ item.name }}
152 </el-link>
153 </div>
154 </div>
155 </div>
156 </el-card>
157 <div style="height: 20px"></div>
158
159 </el-col>
160 <el-col :lg="6">
161 <match-news :match-id="matchId"/>
162 </el-col>
163 </el-row>
164
165 <el-row v-if="matchData.type=='1'" class="mb20">
166 <el-col :lg="24">
167 <el-card :body-style="{'padding':'0'}">
168 <div class="lineHead">
169 <ul>
170 <li v-for="l in menu1" :key="l.name" @click="changeMenu(menu1,l)" :class="l.active==1?'active':''">
171 {{ l.name }}
172 </li>
173 </ul>
174 </div>
175 <!-- 分站赛-->
176 <substation-list v-if="menu1[0].active==1" :list="matchData.cpts"/>
177 <matchInfo :form="matchData" v-if="menu1[1].active==1"/>
178 <match-schedule-list :match-data="matchData" v-if="menu1[2].active==1"/>
179 </el-card>
180 </el-col>
181 </el-row>
182 </div>
183
184 </div>
185 </template>
186
187 <script setup>
188 import MatchInfo from '@/viewsPc/match/components/matchInfo'
189 import MatchScheduleList from "@/viewsPc/match/components/matchScheduleList";
190 import MatchNews from "@/viewsPc/match/components/matchNews";
191 import SubstationList from "@/viewsPc/match/components/substation-list";
192 import MatchInfoProjectList from "@/viewsPc/match/components/matchInfo-projectList";
193 import QuickRow from "@/viewsPc/match/components/quick-row";
194
195 import {getCurrentInstance, ref} from 'vue'
196 import {reactive, onMounted} from '@vue/runtime-core'
197 import {useRoute, useRouter} from 'vue-router'
198
199 const route = useRoute()
200 const router = useRouter()
201 const {proxy} = getCurrentInstance()
202 import * as match from '@/apiPc/match'
203 import {toRefs} from '@vueuse/shared'
204 import {dayjs, ElMessage, ElMessageBox} from 'element-plus'
205 import useUserStore from "@/store/modules/user";
206 import {isRelogin} from "@/utils/request";
207
208 const data = reactive({
209 loading:false,
210 error:false,
211 matchData: {},
212 matchId: '0',
213 groupId: '',
214 activeName2: 'first',
215 popupGroupList: false,
216 menu: [{name: '赛事详情', active: 1}, {name: '赛事设项', active: 0}, {name: '日程', active: 0}, {
217 name: '参赛队',
218 active: 0
219 }, {name: '成绩', active: 0}, {name: '报名须知', active: 0}],
220 menu1: [{name: '分站赛', active: 1}, {name: '赛事详情', active: 0}, {name: '日程', active: 0}],
221 signDoneGroupList: [],
222 time: '',
223 time2: '',
224 startSign: ''
225 })
226 const {loading,error,time,time2,startSign, matchData, matchId, groupId, activeName2, popupGroupList, menu, menu1, signDoneGroupList} = toRefs(data)
227 const group = useUserStore().group
228 const user = useUserStore().user
229 onMounted(() => {
230 if (group) {
231 groupId.value = group.id
232 } else {
233 groupId.value = 0
234 }
235 match.getMaList({topFlag:1,status:1}).then((res) => {
236 if (route.params.id != 0) {
237 matchId.value = route.params.id
238 } else {
239 matchId.value = res.rows[0].id
240 }
241 getMatch(matchId.value)
242 getGroupListByCptId(matchId.value)
243 })
244
245 })
246
247 function building() {
248 ElMessage.warning('暂未开发,敬请期待!')
249 }
250
251 function getMatch(id) {
252 loading.value = true
253 match.getMatchById({id: id}).then(res => {
254 matchData.value = res.data
255 loading.value = false
256 var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
257 time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond')
258 startSign.value = dayjs(res.data.signBeginTime).diff(today, 'millisecond')
259 }).catch(res=>{
260 error.value = true
261 loading.value = false
262 })
263 }
264
265 function getGroupListByCptId(id) {
266 match.getGroupListByCptId(id).then(res => {
267 signDoneGroupList.value = res.data
268 })
269 }
270
271 function changeMenu(menu, l) {
272 for (const n of menu) {
273 if (n == l) {
274 n.active = 1
275 } else {
276 n.active = 0
277 }
278 }
279 }
280 function goLogin() {
281 useUserStore().setReLogin()
282 }
283 function choseSignType() {
284 console.log(matchData.value.signType,user)
285 if (!user) {
286 goLogin()
287 } else {
288 checkIsSign().then(() => {
289 switch (matchData.value.signType) {
290 case '0':
291 if (user.utype == '1') {
292 goPersonalSign()
293 } else {
294 ElMessageBox.confirm(
295 '当前活动是个人活动,无法报名',
296 '提示',
297 {
298 confirmButtonText: '好的',
299 cancelButtonText: '取消',
300 type: 'warning',
301 }
302 )
303 }
304 break
305 case '1':
306 if (user.utype == '1') {
307 ElMessageBox.confirm(
308 '当前活动是团队活动,无法报名',
309 '提示',
310 {
311 confirmButtonText: '好的',
312 cancelButtonText: '取消',
313 type: 'warning',
314 }
315 )
316 } else {
317 goTeamSign()
318 }
319 break
320 case '2':
321 if (user.utype == '1') {
322 goPersonalSign()
323 } else {
324 goTeamSign()
325 }
326 break
327 }
328 })
329 }
330 }
331 function goTeamSign() {
332 const routeData = router.resolve({
333 path: `${matchId.value}/teamSign`,
334 query: {
335 matchId: matchId.value,
336 groupId: groupId.value,
337 signType: matchData.value.signType
338 }
339 })
340 window.open(routeData.href, '_blank')
341 }
342 function goPersonalSign() {
343 // 选项目
344 const routeData = router.resolve({
345 name: `chooseProject`,
346 query: {
347 matchId: matchId.value
348 }
349 })
350 window.open(routeData.href, '_blank')
351 }
352 // 获取已报信息
353 function checkIsSign() {
354 var obj = {
355 cptId: matchId.value,
356 groupId: groupId.value || 0
357 }
358 return match.getMySignInfo(obj).then(res => {
359 if (res.data.type == '1') {
360 ElMessageBox.confirm(
361 '已报名,不能重复报名,是否前往个人中心查看',
362 '提示',
363 {
364 confirmButtonText: '确定',
365 cancelButtonText: '取消',
366 type: 'warning',
367 }
368 ).then(() => {
369 router.push({name: 'myMatch'})
370 })
371
372 return Promise.reject('rejected message')
373 }
374 if (res.data.type == '2') {
375 ElMessageBox.confirm(
376 '报名审批拒绝,是否重新报名',
377 '提示',
378 {
379 confirmButtonText: '确定',
380 cancelButtonText: '取消',
381 type: 'warning',
382 }
383 ).then(() => {
384 match.recoverMySignFromCancel(matchId.value).then((res)=>{
385 switch (matchData.value.signType) {
386 case '0':
387 if (user.utype == '1') {
388 goPersonalSign()
389 } else {
390 ElMessageBox.confirm(
391 '当前活动是个人活动,无法报名',
392 '提示',
393 {
394 confirmButtonText: '好的',
395 cancelButtonText: '取消',
396 type: 'warning',
397 }
398 )
399 }
400 break
401 case '1':
402 if (user.utype == '1') {
403 ElMessageBox.confirm(
404 '当前活动是团队活动,无法报名',
405 '提示',
406 {
407 confirmButtonText: '好的',
408 cancelButtonText: '取消',
409 type: 'warning',
410 }
411 )
412 } else {
413 goTeamSign()
414 }
415 break
416 case '2':
417 if (user.utype == '1') {
418 goPersonalSign()
419 } else {
420 goTeamSign()
421 }
422 break
423 }
424 })
425 })
426 return Promise.reject('rejected message')
427 }
428 })
429 }
430 </script>
431
432 <style scoped lang="scss">
433 .app-container{min-height: 80vh;}
434 .mtitle{margin:5px 0 0;line-height: 1.4;}
435 .indexTitle {
436 margin: 20px 0 12px;
437
438 h3 {
439 font-size: 20px;
440 color: var(--el-color-primary);
441 }
442 }
443
444
445 .ppl {
446 color: #29343C;margin: 10px 0 0;
447
448 label {
449 color: #929AA0;
450 }
451 }
452
453 .bm1 {
454 background: url("@/assets/dance/bm1.png") no-repeat left;
455 background-size: contain;
456 padding-left: 24px;
457 }
458
459 .bm2 {
460 background: url("@/assets/dance/bm2.png") no-repeat left;
461 background-size: contain;
462 padding-left: 24px;
463 }
464
465 .bm3 {
466 background: url("@/assets/dance/bm3.png") no-repeat left;
467 background-size: contain;
468 padding-left: 24px;
469 }
470
471 .bm4 {
472 background: url("@/assets/dance/bm4.png") no-repeat left;
473 background-size: contain;
474 padding-left: 24px;
475 }
476
477 .app-container {
478 padding: 0;
479 background: #F5F7F9;
480 }
481
482 .countDownTitle {
483 text-align: center;
484 color: #525F6B;
485 position: relative;
486 width: 100%;
487 left: 0;
488 font-size: 14px;
489 }
490
491 .countDownTitle span {
492 background: #fff;
493 padding: 0 10px;
494 position: relative;
495 z-index: 1;
496 }
497
498 .countDownTitle::after {
499 position: absolute;
500 background: #ccc;
501 height: 1px;
502 content: '';
503 top: 0;
504 bottom: 0;
505 margin: auto;
506 width: 100%;
507 left: 0;
508 }
509
510 .typeTag {
511 border-radius: 10px 10px 10px 0px;
512 padding: 2px 12px;
513 background: #FF8124;
514 font-size: 14px;
515 color: #fff;
516 }
517
518 .matchItem {
519 cursor: pointer;
520 margin-bottom: 40px;
521 height: 180px;
522 background: #FFFFFF;
523 position: relative;
524 border-radius: 10px;
525
526 .el-avatar {
527 position: absolute;
528 left: 20px;
529 top: 30px;
530
531 img {
532 background: #fff;
533 }
534 }
535
536 .info {
537 padding: 12px 0 0 140px;
538
539 p {
540 font-size: 14px;
541 }
542 }
543
544 .typeTag {
545 position: absolute;
546 right: 0;
547 top: 0;
548 }
549
550 h3 {
551 font-weight: 500;
552 font-size: 18px;
553 color: #000000;
554 text-overflow: ellipsis;
555 }
556
557 &:hover h3 {
558 font-weight: bold;
559 }
560 }
561
562 .el-pagination {
563 justify-content: center;
564 --el-pagination-bg-color: none;
565 }
566
567 .kind {
568 background: #fff;
569 margin: 0 0 30px;
570
571 ul {
572 list-style: none;
573 padding: 30px 0 10px;
574
575 li {
576 margin: 0 0 20px;
577 display: flex;
578 align-items: center;
579 }
580 }
581 }
582
583 .listTitle {
584 display: flex;
585 justify-content: space-between;
586 align-items: center;
587 }
588
589 .match-tabs {
590 background: #fff;
591 padding: 10px 20px 20px;
592 }
593
594 .teamItem {
595 height: 80px;
596 background: #FBFCFD;
597 border-radius: 10px;
598 margin: 10px 0;
599 display: flex;
600 align-items: center;
601 padding: 0 20px;
602 overflow: hidden;
603 text-overflow: ellipsis;
604
605 .el-avatar {
606 border: 1px solid #EEEEEE;
607 }
608
609 .name {
610 margin-left: 15px;
611 flex: 1;
612 font-size: 14px;
613 }
614 }
615
616 .grid-top {
617 background: #fff;
618 min-height: 300px;
619 padding: 28px 28px 10px;
620 border-radius: 10px;
621 margin: 30px auto;
622 position: relative;
623
624 .cover {
625 width: 420px;
626 height: 250px;
627 position: absolute;
628 border-radius: 10px;
629 background: #fff;
630 object-fit: cover;
631 }
632
633 .info {
634 padding-left: 440px;
635
636 h3 {
637 font-weight: 500;
638 color: #000000;
639 margin: 0 0 10px;
640 font-size: 24px;
641
642 img {
643 margin-right: 10px
644 }
645
646 .typeTag {
647 border-radius: 13px 13px 13px 0;
648 margin-left: 10px;
649 }
650 }
651
652 p {
653 color: #7B7F83;
654 font-size: 16px;
655 }
656
657 .countDownTitle {
658 font-size: 14px;
659 }
660
661 .el-button.el-button--primary {
662 background: #CA171D;
663 border: none;
664 }
665 }
666 }
667
668 .gg {
669 margin: 0 0 28px;
670
671 h3 {
672 border-left: 2px solid #BA2E29;
673 padding: 0 0 0 12px;
674 margin: 20px 0 8px;
675 font-weight: 500;
676 font-size: 16px;
677 }
678
679 p {
680 font-size: 16px;
681 color: #000;
682 margin: 0 0 8px;
683 line-height: 24px;
684
685 label {
686 color: #7D8790;
687 }
688 }
689
690 .pp {
691 border: 1px solid rgba(186, 46, 41, 0.3);
692 padding: 20px;
693 }
694 }
695
696 .van-count-down {
697 text-align: center;
698 margin: 20px 0;
699 }
700
701 .colon {
702 display: inline-block;
703 font-size: 16px;
704 margin: 0 8px;
705 color: #7B7F83;
706 }
707
708 .block {
709 display: inline-block;
710 width: 52px;
711 color: #fff;
712 font-size: 26px;
713 font-weight: bold;
714 border-radius: 10px;
715 background: url(@/assets/img/djs_bg.png) left;
716 background-size: 100% 100%;
717 line-height: 50px;
718 text-align: center;
719 }
720
721
722 .time-address {
723 font-size: 15px;
724 margin: 10px 0 0;
725 color: #999;
726 }
727
728 .popList .teamItem {
729 cursor: pointer;
730 }
731
732 .popList .teamItem:hover {
733 background: #e7e7e7;
734 }
735
736 .richContent {
737 overflow: hidden;
738 }
739
740 .richContent img {
741 max-width: 100%;
742 }
743
744 .red-center {
745 font-size: 24px;
746 text-align: center;
747 font-family: DIN Alternate;
748 padding: 30px 0;
749 font-weight: bold;
750 color: #E60012;
751 }
752
753 .plist {
754 dt {
755 font-size: 14px;
756 }
757
758 dd {
759 display: inline-block;
760 margin: 0 15px 0 0;
761 }
762
763 dd.t {
764 display: block;
765 margin: 15px 0 6px;
766 border-left: 3px solid #1ec886;
767 line-height: 1;
768 padding: 6px;
769 background: #f5f5f5;
770 }
771
772 li {
773 line-height: 40px;
774 display: flex;
775 justify-content: space-between;
776 padding: 0 20px;
777 align-items: center;
778 cursor: pointer;
779 }
780
781 li:hover {
782 background: #eee;
783 }
784 }
785
786 .pp .el-link {
787 margin-right: 15px;
788 font-size: 16px;
789 }
790
791 :deep(.el-collapse-item__header) {
792 font-weight: 500;
793 font-size: 16px;
794 }
795
796 .pobtns {
797 position: absolute;
798 right: 20px;
799 bottom: 20px;
800 }
801
802 :deep(.el-tabs__item) {
803 font-size: 16px;
804 }
805
806 .signButton {
807 margin: 0 0 20px;
808
809 button {
810 width: 90%;
811 background: var(--el-color-primary);
812 font-size: 20px;
813 margin: 30px auto 0;
814 display: block;
815 height: 50px;
816 }
817 }
818
819 .el-timeline-item__timestamp.is-top {
820 font-size: 16px;
821 }
822
823 .el-timeline-item__content {
824 font-size: 16px;
825 margin: 10px 0 0;
826 }
827
828 .typeTag.blue {
829 background: #00a0e9;
830 }
831
832 .typeTag.green {
833 background: #34cf96;
834 }
835
836 :deep(.el-tabs__nav-wrap::after) {
837 height: 1px;
838 }
839
840 .table {
841 width: 100%;
842 border-left: 1px solid #e1e1e1;
843 border-top: 1px solid #e1e1e1;
844
845 th {
846 background: #eee;
847 padding: 6px 10px;
848 border-right: 1px solid #e1e1e1;
849 border-bottom: 1px solid #e1e1e1;
850 font-size: 15px;
851 }
852
853 td {
854 padding: 6px 10px;
855 border-right: 1px solid #e1e1e1;
856 font-size: 15px;
857 border-bottom: 1px solid #e1e1e1;
858 vertical-align: middle;
859 text-align: center;
860
861 span {
862 margin-right: 10px
863 }
864
865 span::after {
866 content: ','
867 }
868
869 span:last-child::after {
870 content: ''
871 }
872 }
873 }
874
875 .flexLine {
876 display: flex;
877
878 label {
879 font-weight: normal
880 }
881 }
882
883 .nowteamItem {
884 height: 100px;
885 background: #FBFCFD;
886 border-radius: 10px;
887 margin: 20px 0;
888 display: flex;
889 align-items: center;
890 padding: 0 20px;
891 overflow: hidden;
892 text-overflow: ellipsis;
893
894 .el-avatar {
895 margin: 0 20px
896 }
897
898 .info {
899 h3 {
900 margin: 0 0 15px;
901 }
902
903 p {
904 margin: 0;
905 color: #1ab394
906 }
907 }
908
909 .rr {
910 text-align: right;
911 flex: 1;
912
913 span {
914 color: #1ab394
915 }
916 }
917 }
918
919 .collapsebox {
920 .el-collapse-item {
921 margin-bottom: 15px;
922 --el-collapse-content-bg-color: #F4F9FE;
923 border: 2px solid #DDECFB;
924
925 .table {
926 background: #fff;
927 }
928 }
929
930 .is-active {
931 --el-collapse-header-bg-color: #F4F9FE
932 }
933
934 :deep(.el-collapse-item__header) {
935 padding: 0 20px;
936 }
937 }
938
939 .funcBtns {
940 display: flex;
941 justify-content: space-around;
942
943 div {
944 text-align: center;
945 background: #F7FAFF;
946 box-shadow: 0 0 10px #d4cae4;
947 border-radius: 15px;
948 padding: 0px 10px 5px;
949
950 img {
951 }
952
953 h4 {
954 margin: 0;
955 font-size: 16px;
956 }
957 }
958 }
959
960 .table {
961 white-space: nowrap
962 }
963 .ppl_pb{position: absolute;bottom:0;}
964 @media (max-width: 1650px){
965 .ppl {
966 color: #29343C;margin: 5px 0 0;
967 }
968 }
969 @media (max-width: 800px) {
970 .van-count-down {
971 .block {
972 margin: 0 10px;
973 }
974 }
975 .colon {
976 display: none;
977 }
978 .funcBtns {
979 div {
980 padding: 0 0 10px;
981 margin: 0 5px;
982
983 }
984 }
985 }
986 </style>
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!