| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <script setup> |
| | | import { ref, onMounted } from 'vue' |
| | | import dayjs from 'dayjs' |
| | | import UQRCode from 'uqrcodejs' |
| | | |
| | | const initQrcode = () => { |
| | | var qr = new UQRCode(); |
| | | // 设置äºç»´ç å
容 |
| | | qr.data = "https://uqrcode.cn/doc"; |
| | | qr.size = 254; |
| | | // è°ç¨å¶ä½äºç»´ç æ¹æ³ |
| | | qr.make(); |
| | | var canvas = document.getElementById("qrcode"); |
| | | var canvasContext = canvas.getContext("2d"); |
| | | qr.canvasContext = canvasContext; |
| | | qr.drawCanvas(); |
| | | } |
| | | onMounted(() => { |
| | | initQrcode() |
| | | }) |
| | | |
| | | const weekMap = ['卿¥', 'å¨ä¸', 'å¨äº', 'å¨ä¸', 'å¨å', 'å¨äº', 'å¨å
'] |
| | | const newWeek = ref(weekMap[new Date().getDay()]) |
| | | const newDate = ref(dayjs().format('YYYY-MM-DD')) |
| | | const newTime = ref(dayjs().format('HH:mm')) |
| | | setInterval(() => { |
| | | newWeek.value = weekMap[new Date().getDay()] |
| | | newDate.value = dayjs().format('YYYY-MM-DD') |
| | | newTime.value = dayjs().format('HH:mm') |
| | | }, 1000) |
| | | </script> |
| | | <template> |
| | | <div class="main_app"> |
| | | <div class="main_header"> |
| | | <img class="bg" src="@/assets/images/call/title@2x.png" alt=""> |
| | | <div class="title">宿³°æºæ
§ç©æµååº-车è¾å«å·å¤§å±</div> |
| | | <div class="time_wrap"> |
| | | <div class="left"> |
| | | <div class="week">{{ newWeek }}</div> |
| | | <div class="date">{{ newDate }}</div> |
| | | </div> |
| | | <div class="time">{{ newTime }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="main_content"> |
| | | <div class="list"> |
| | | <div class="line header"> |
| | | <div class="item no">åºå·</div> |
| | | <div class="item">车çå·</div> |
| | | <div class="item status">ç¶æ</div> |
| | | <div class="item">åé æå°</div> |
| | | <div class="item">æ¶é´</div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="item no">åºå·</div> |
| | | <div class="item">车çå·</div> |
| | | <div class="item"> |
| | | <div class="status underway">ä½ä¸ä¸</div> |
| | | </div> |
| | | <div class="item">åé æå°</div> |
| | | <div class="item">æ¶é´</div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="item no">åºå·</div> |
| | | <div class="item">车çå·</div> |
| | | <div class="item"> |
| | | <div class="status call_ed">ä½ä¸ä¸</div> |
| | | </div> |
| | | <div class="item">åé æå°</div> |
| | | <div class="item">æ¶é´</div> |
| | | </div> |
| | | <div class="line"> |
| | | <div class="item no">åºå·</div> |
| | | <div class="item">车çå·</div> |
| | | <div class="item"> |
| | | <div class="status padding">ä½ä¸ä¸</div> |
| | | </div> |
| | | <div class="item">åé æå°</div> |
| | | <div class="item">æ¶é´</div> |
| | | </div> |
| | | </div> |
| | | <div class="current"> |
| | | <div class="tip_wrap"> |
| | | <img src="@/assets/images/call/ic_left@2x.png" class="icon icon_l" alt=""> |
| | | <img src="@/assets/images/call/ic_right@2x.png" class="icon icon_r" alt=""> |
| | | <div class="empty"> |
| | | <div class="title">温馨æç¤º</div> |
| | | <div class="line">1ãè¯·å¸æºæ ¹æ®å«å·å±æç¤ºå
¥å</div> |
| | | <div class="line">2ãæªå«å·è½¦è¾è¯·èå¿çå¾
</div> |
| | | <div class="line">3ã请æåºæéå
¥å</div> |
| | | <div class="line">4ãè£
å¸è´§ç»æç¦æ¢å¨ååºéç</div> |
| | | <div class="line">5ã请éµå®ååºå®å
¨è§ç« å¶åº¦</div> |
| | | </div> |
| | | </div> |
| | | <div class="qrcode_wrap"> |
| | | <div class="qrcode"> |
| | | <canvas id="qrcode" width="254" height="254"></canvas> |
| | | </div> |
| | | <div class="title">请æ«ç ç¾å°</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main_footer"> |
| | | <img src="@/assets/images/call/ic_news@2x.png" class="icon" alt=""> |
| | | <div class="title">è¯·æ ¹æ®éåæç¤ºä¿¡æ¯ï¼ä¾æ¬¡çåè¿åº</div> |
| | | <div class="icon"></div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style lang="scss" scoped> |
| | | .main_app { |
| | | color: #fff; |
| | | width: 100%; |
| | | height: 100vh; |
| | | background-color: #092030; |
| | | position: relative; |
| | | z-index: -2; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .main_header { |
| | | width: 100%; |
| | | height: 112px; |
| | | position: relative; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 0 50px; |
| | | .title { |
| | | font-weight: 800; |
| | | font-size: 48px; |
| | | } |
| | | |
| | | .time_wrap { |
| | | display: flex; |
| | | align-items: center; |
| | | .date { |
| | | font-weight: 500; |
| | | font-size: 20px; |
| | | text-align: right; |
| | | } |
| | | .week { |
| | | font-weight: 500; |
| | | font-size: 20px; |
| | | text-align: right; |
| | | } |
| | | .time { |
| | | font-weight: 500; |
| | | font-size: 50px; |
| | | margin-left: 15px; |
| | | } |
| | | } |
| | | .bg { |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: cover; |
| | | z-index: -1; |
| | | } |
| | | } |
| | | .main_content{ |
| | | flex: 1; |
| | | display: flex; |
| | | padding: 30px 20px; |
| | | position: relative; |
| | | .list{ |
| | | flex: 5; |
| | | margin-right: 20px; |
| | | .line{ |
| | | display: flex; |
| | | align-items: center; |
| | | height: 100px; |
| | | &:nth-of-type(2n){ |
| | | background: rgba(255,255,255,0); |
| | | } |
| | | &:nth-of-type(2n + 1){ |
| | | background: rgba(0,237,255,0.13); |
| | | } |
| | | .item{ |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | font-weight: 500; |
| | | font-size: 36px; |
| | | flex: 10; |
| | | .status{ |
| | | width: 174px; |
| | | height: 76px; |
| | | border-radius: 8px; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | .underway{ |
| | | background-color: #51b2ce; |
| | | } |
| | | .call_ed{ |
| | | background-color: #f2a43a; |
| | | } |
| | | .padding{ |
| | | background-color: #1c485a; |
| | | } |
| | | } |
| | | .no{ |
| | | flex: 5; |
| | | } |
| | | |
| | | } |
| | | .header{ |
| | | font-size: bold; |
| | | font-size: 40px; |
| | | background: linear-gradient( 180deg, #00B5D1 0%, #003C57 100%) !important; |
| | | } |
| | | } |
| | | .current{ |
| | | /* height: calc( 100vh - 192px ); */ |
| | | flex: 2; |
| | | display: flex; |
| | | flex-direction: column; |
| | | .tip_wrap{ |
| | | margin-bottom: 20px; |
| | | width: 100%; |
| | | position: relative; |
| | | flex-shrink: 0; |
| | | flex: 1; |
| | | .empty{ |
| | | padding: 30px 40px; |
| | | font-weight: 500; |
| | | font-size: 30px; |
| | | .title{ |
| | | text-align: center; |
| | | font-weight: bold; |
| | | font-size: 36px; |
| | | margin-bottom: 20px; |
| | | } |
| | | .line{ |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | .icon{ |
| | | position: absolute; |
| | | width: 52px; |
| | | height: 52px; |
| | | } |
| | | .icon_l{ |
| | | left: 0; |
| | | top: 0; |
| | | } |
| | | .icon_r{ |
| | | right: 0; |
| | | bottom: 0; |
| | | } |
| | | } |
| | | .qrcode_wrap{ |
| | | width: 100%; |
| | | flex: 1; |
| | | flex-shrink: 0; |
| | | background-color: #51b2ce; |
| | | padding: 36px 0; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | .qrcode{ |
| | | padding: 12px; |
| | | background-color: #fff; |
| | | } |
| | | .title{ |
| | | margin-top: 20px; |
| | | font-weight: bold; |
| | | font-size: 38px; |
| | | color: #111111; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .main_footer{ |
| | | background-color: #1D8D9E; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 0 50px; |
| | | .icon{ |
| | | width: 52px; |
| | | height: 52px; |
| | | } |
| | | .title{ |
| | | flex: 1; |
| | | text-align: center; |
| | | font-weight: 500; |
| | | font-size: 37px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | </style> |