| | |
| | | <template> |
| | | <div class="container"> |
| | | <div class="big-title" @click="goBack()">国泰新华智能巡检系统</div> |
| | | <div style="height: 20px; font-size: 14px; line-height: 20px; color: #00ffff; margin-top: 4px">{{ present }}</div> |
| | | <div style="height: 20px;font-size: 14px;line-height: 20px; color: #00ffff; margin-top: 4px">{{ present }}</div> |
| | | <div class="btns"> |
| | | <div class="fullbtn" @click="onScreenfullClick"> |
| | | <div class="toFull"> |
| | |
| | | <div>全屏</div> |
| | | </div> |
| | | <div class="backBtn" @click="goBack()"> |
| | | <img src="../../../assets/loginPage/back-icon.png" /> |
| | | <img src="../../../assets/loginPage/back-icon.png"/> |
| | | <div>退出</div> |
| | | </div> |
| | | </div> |
| | | <div class="blocks"> |
| | | <div> |
| | | <div class="star-pic"> |
| | | <div class="star-bg"><img src="../../../assets/loginPage/star-bg.png" /></div> |
| | | <div class="star"><img src="../../../assets/loginPage/device-pic.png" /></div> |
| | | </div> |
| | | <div class="line-map" v-if="dataList && dataList.length > 0"> |
| | | <div class="line-item" v-for="(item, index) in dataList" :key="index"> |
| | | <div class="picbox"> |
| | | <img src="../../../assets/loginPage/equipment.jpg" /> |
| | | <p> |
| | | RFID: <span>{{ item.rfid }}</span> |
| | | </p> |
| | | <p> |
| | | 位置: <span>{{ item.region.toString() }}</span> |
| | | </p> |
| | | <div class="star-pic"> |
| | | <div class="star-bg"><img src="../../../assets/loginPage/star-bg.png" /></div> |
| | | <div class="star"><img src="../../../assets/loginPage/device-pic.png" /></div> |
| | | </div> |
| | | <div class="line-map" v-if="dataList && dataList.length > 0"> |
| | | <div class="line-item" v-for="(item, index) in dataList" :key="index"> |
| | | <div class="picbox"> |
| | | <div class="imgbox"> |
| | | <img :src="item.rfidImage==null?defaultImg:item.rfidImage"/> |
| | | </div> |
| | | <div class="area-head"> |
| | | <div class="indicator" :class="item.points.some((e) => e.reportResult == 1) ? 'somewarning' : item.points.some((e) => e.reportResult == null) ? 'someUndone' : ''"> |
| | | <div class="indi-dot"></div> |
| | | <!-- <div class="indi-pulse"></div>--> |
| | | <!-- <div class="indi-pulse1"></div>--> |
| | | </div> |
| | | <div class="arrow" v-if="item.points.some((e) => e.reportResult != null)"></div> |
| | | <div class="top-line" :class="item.points.some((e) => e.reportResult !== null) ? '' : 'fadeLine'"></div> |
| | | <p> |
| | | RFID: <span>{{ item.rfid }}</span> |
| | | </p> |
| | | <p> |
| | | 位置: <span>{{ item.region.toString() }}</span> |
| | | </p> |
| | | </div> |
| | | <div class="area-head"> |
| | | <div class="indicator" :class="item.points.some((e) => e.reportResult == 1) ? 'somewarning' : (item.points.some((e) => e.reportResult == null) ? 'someUndone' : '')"> |
| | | <div class="indi-dot"></div> |
| | | <!-- <div class="indi-pulse"></div>--> |
| | | <!-- <div class="indi-pulse1"></div>--> |
| | | </div> |
| | | <div class="more-info"> |
| | | <div class="item" v-for="(t, i) in item.points" :key="i" :class="t.reportResult == null ? 'undone' : t.reportResult == 1 ? 'warning' : ''"> |
| | | <section> |
| | | <div class="dot"></div> |
| | | <div class="pulse"></div> |
| | | <div class="pulse1"></div> |
| | | </section> |
| | | <div :class="t.reportResult == null ? 'noBorder' : t.reportResult == 1 ? 'redBorder' : ''"> |
| | | <div> |
| | | <span>巡检点:</span><span>{{ t.point }}</span> |
| | | </div> |
| | | <div> |
| | | <span>巡检状态:</span><span>{{ t.pointCheckStatus == 1 ? '未完成' : '已完成' }}</span> |
| | | </div> |
| | | <div v-if="t.reportResult != null"> |
| | | <span>巡检指标:</span><span>{{ t.quotaContent }}</span> |
| | | </div> |
| | | <div v-if="(t.dataReportType == 2 || t.dataReportType == 3) && t.secondReferenceResult"> |
| | | <span>参数:</span><span class="target">{{ t.secondReferenceResult + t.quotaUnit }}</span> |
| | | </div> |
| | | <div> |
| | | <span>巡检结果:</span><span class="target">{{ t.reportResult == null ? '--' : t.reportResult == 0 ? '正常' : '异常' }}</span> |
| | | </div> |
| | | <div class="arrow" v-if="item.points.some((e) => e.reportResult != null)"></div> |
| | | <div class="top-line" :class="item.points.some((e) => e.reportResult !== null) ? '' : 'fadeLine'"></div> |
| | | </div> |
| | | <div class="more-info"> |
| | | <div class="item" v-for="(t, i) in item.points" :key="i" :class="t.reportResult == null ? 'undone' : t.reportResult == 1 ? 'warning' : ''"> |
| | | <section> |
| | | <div class="dot"></div> |
| | | <div class="pulse"></div> |
| | | <div class="pulse1"></div> |
| | | </section> |
| | | <div :class="t.reportResult == null ? 'noBorder' : t.reportResult == 1 ? 'redBorder' : ''"> |
| | | <div> |
| | | <span>巡检点:</span><span>{{ t.point }}</span> |
| | | </div> |
| | | <div> |
| | | <span>巡检状态:</span><span>{{ t.pointCheckStatus == 1 ? '未完成' : '已完成' }}</span> |
| | | </div> |
| | | <div v-if="t.reportResult != null"> |
| | | <span>巡检指标:</span><span>{{ t.quotaContent }}</span> |
| | | </div> |
| | | <div v-if="(t.dataReportType == 2 || t.dataReportType == 3) && t.secondReferenceResult"> |
| | | <span>参数:</span><span class="target">{{ t.secondReferenceResult + t.quotaUnit }}</span> |
| | | </div> |
| | | <div> |
| | | <span>巡检结果:</span><span class="target">{{ t.reportResult == null ? '--' : t.reportResult == 0 ? '正常' : '异常' }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="line-item finish"> |
| | | <div class="picbox"></div> |
| | | <div class="area-head"> |
| | | <div class="finish-point"> |
| | | <div>完成巡检</div> |
| | | </div> |
| | | </div> |
| | | <div class="line-item finish"> |
| | | <div class="picbox"></div> |
| | | <div class="area-head"> |
| | | <div class="finish-point"> |
| | | <div>完成巡检</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="tip" v-else>抱歉,暂时查询不到巡检路线...</div> |
| | | </div> |
| | | <div class="tip" v-else>抱歉,暂时查询不到巡检路线...</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <script lang="ts"> |
| | | import screenfull from 'screenfull'; |
| | | import { lineApi } from '/@/api/intelligentLine'; |
| | | import { toRefs, reactive, ref, onMounted, onUnmounted, computed, nextTick } from 'vue'; |
| | | import { useRoute } from 'vue-router'; |
| | | import {toRefs, reactive, ref, onMounted, onUnmounted, computed, nextTick} from 'vue'; |
| | | import {useRoute} from 'vue-router'; |
| | | import { storeToRefs } from 'pinia'; |
| | | import { initBackEndControlRoutes } from '/@/router/backEnd'; |
| | | import { Session } from '/@/utils/storage'; |
| | |
| | | import { ElTable } from 'element-plus'; |
| | | import { FormInstance, FormRules, ElMessage } from 'element-plus'; |
| | | import { useUserInfo } from '/@/stores/userInfo'; |
| | | import Cookies from 'js-cookie'; |
| | | |
| | | // 定义接口来定义对象的类型 |
| | | interface stateType { |
| | |
| | | socket: any; |
| | | socketData: string; |
| | | data: Array<any>; |
| | | id: string; |
| | | id: string |
| | | } |
| | | export default { |
| | | name: 'intelligentLine', |
| | |
| | | setInterval(() => { |
| | | state.present = new Date().toLocaleString(); |
| | | }, 1000); |
| | | let curId = route.query.id; |
| | | state.id = curId.toString(); |
| | | getLine(state.id); |
| | | getUrl(state.id); |
| | | let curId = route.query.id |
| | | state.id = curId.toString() |
| | | getLine(state.id) |
| | | getUrl(state.id) |
| | | }); |
| | | |
| | | const dataList = computed(() => { |
| | |
| | | |
| | | // 获取url |
| | | |
| | | const getUrl = async (id: string) => { |
| | | const getUrl =async (id:string)=>{ |
| | | const res = await lineApi().getUrl(); |
| | | if (res.data.code === '200') { |
| | | state.path = 'http://' + res.data.data.ip + ':' + res.data.data.port + '/ws/test/'; |
| | | state.path = 'http://' + res.data.data.ip + ':' + res.data.data.port + '/ws/test/' |
| | | if (typeof WebSocket === 'undefined') { |
| | | alert('您的浏览器不支持socket'); |
| | | } else { |
| | | // 实例化socket |
| | | // debugger |
| | | let uid = userInfos.value.uid.toString(); |
| | | var url = state.path + Cookies.get('uid') + '*' + id; |
| | | console.log(url, 'url', uid, 'uid'); |
| | | let uid = userInfos.value.uid.toString() |
| | | var url = state.path + uid + '*' + id; |
| | | console.log(url,'url',uid,'uid') |
| | | url = url.replace('https', 'ws').replace('http', 'ws'); |
| | | console.log(url, '获取地址'); |
| | | state.socket = new WebSocket(url); |
| | |
| | | // 监听socket消息 |
| | | state.socket.onmessage = (msg) => { |
| | | if (msg.data === '连接成功') return; |
| | | console.log(msg.data, 'data'); |
| | | console.log(msg.data,'data') |
| | | userInfos.value.dataList = JSON.parse(msg.data); |
| | | }; |
| | | } |
| | |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | // const send = () => { |
| | | // state.socket.send(params); |
| | | // }; |
| | | |
| | | // 接口获取数据 |
| | | const getLine = async (id: string) => { |
| | | const getLine = async (id:string) => { |
| | | let res = await lineApi().getLine({ id: id }); |
| | | if (res.data.code === '200') { |
| | | userInfos.value.dataList = res.data.data; |
| | |
| | | // 页面关闭处理 |
| | | onUnmounted(() => { |
| | | // 销毁监听 |
| | | nextTick(() => { |
| | | nextTick(()=>{ |
| | | state.socket.onclose = () => { |
| | | console.log('socket已经关闭'); |
| | | }; |
| | | }); |
| | | }) |
| | | }); |
| | | return { |
| | | dataList, |
| | |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style scoped lang="scss"> |
| | | @media screen and (min-width: 1366px) { |
| | | .big-title { |
| | | font-size: 28px; |
| | | margin: 10px 0 20px; |
| | | } |
| | | .btns { |
| | | position: absolute; |
| | | z-index: 99999; |
| | | right: 60px; |
| | | top: 40px; |
| | | div { |
| | | font-size: 16px; |
| | | color: #00ffff; |
| | | @media screen and (min-width: 1366px) { |
| | | .big-title { |
| | | font-size: 28px; |
| | | margin: 10px 0 20px; |
| | | } |
| | | } |
| | | .line-item { |
| | | width: calc((100vw - 40px) / 6); |
| | | padding-left: 20px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | margin-right: 20px; |
| | | flex-wrap: nowrap; |
| | | |
| | | .picbox { |
| | | width: 100%; |
| | | height: 180px; |
| | | padding: 10px; |
| | | margin-bottom: 40px; |
| | | box-sizing: border-box; |
| | | |
| | | img { |
| | | display: block; |
| | | width: 100%; |
| | | height: 100px; |
| | | margin-bottom: 8px; |
| | | border-radius: 4px; |
| | | } |
| | | p { |
| | | font-size: 14px; |
| | | white-space: nowrap; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | margin-top: 10px; |
| | | span { |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .item { |
| | | width: calc((100vw - 40px) / 6); |
| | | height: calc((100vh - 130px) / 5); |
| | | padding: 0 20px 20px 50px; |
| | | position: relative; |
| | | box-sizing: border-box; |
| | | border-left: 1px solid #36fcfc; |
| | | |
| | | &:last-of-type { |
| | | border: none; |
| | | } |
| | | |
| | | section { |
| | | width: 24px; |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | .btns { |
| | | position: absolute; |
| | | border: 1px solid rgba(0, 225, 255, 0.6); |
| | | top: -12px; |
| | | left: 10px; |
| | | |
| | | .dot { |
| | | position: absolute; |
| | | width: 12px; |
| | | height: 12px; |
| | | left: 5px; |
| | | top: 5px; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border: 1px solid #0072ff; |
| | | border-radius: 50%; |
| | | background-color: #00e1ff; |
| | | z-index: 2; |
| | | } |
| | | .pulse { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn 2s ease-out; |
| | | -moz-animation: warn 2s ease-out; |
| | | animation: warn 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | .pulse1 { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn1 2s ease-out; |
| | | -moz-animation: warn1 2s ease-out; |
| | | animation: warn1 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | z-index: 99999; |
| | | right: 60px; |
| | | top: 40px; |
| | | div { |
| | | font-size: 16px; |
| | | color: #00ffff; |
| | | } |
| | | } |
| | | & > div { |
| | | padding: 10px 0; |
| | | transform: translateY(-14px); |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(8, 109, 209, 0.4), rgba(11, 255, 255, 0.2)); |
| | | border: 1px solid rgba(54, 252, 252, 1); |
| | | .line-item { |
| | | width: calc((100vw - 40px) / 6); |
| | | padding-left: 20px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: flex-start; |
| | | margin-right: 20px; |
| | | flex-wrap: nowrap; |
| | | |
| | | div { |
| | | margin-bottom: 5px; |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | .picbox { |
| | | width: 100%; |
| | | height: 180px; |
| | | padding: 10px; |
| | | margin-bottom: 40px; |
| | | box-sizing: border-box; |
| | | |
| | | img { |
| | | display: block; |
| | | width: 100%; |
| | | height: 100px; |
| | | margin-bottom: 8px; |
| | | border-radius: 4px; |
| | | } |
| | | span { |
| | | display: inline-block; |
| | | p { |
| | | font-size: 14px; |
| | | white-space: nowrap; |
| | | width: 50%; |
| | | font-size: 13px; |
| | | color: #fff; |
| | | text-align: left; |
| | | |
| | | &:first-of-type { |
| | | text-align: right; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | color: rgba(255, 255, 255, 0.8); |
| | | margin-top: 10px; |
| | | span { |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .noBorder { |
| | | border: 1px solid rgba(54, 252, 252, 0.1); |
| | | .item { |
| | | width: calc((100vw - 40px) / 6); |
| | | height: calc((100vh - 130px) / 5); |
| | | padding: 0 20px 20px 50px; |
| | | position: relative; |
| | | box-sizing: border-box; |
| | | border-left: 1px solid #36fcfc; |
| | | |
| | | &:last-of-type { |
| | | border: none; |
| | | } |
| | | |
| | | section { |
| | | width: 24px; |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | border: 1px solid rgba(0, 225, 255, 0.6); |
| | | top: -12px; |
| | | left: 10px; |
| | | |
| | | .dot { |
| | | position: absolute; |
| | | width: 12px; |
| | | height: 12px; |
| | | left: 5px; |
| | | top: 5px; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border: 1px solid #0072ff; |
| | | border-radius: 50%; |
| | | background-color: #00e1ff; |
| | | z-index: 2; |
| | | } |
| | | .pulse { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn 2s ease-out; |
| | | -moz-animation: warn 2s ease-out; |
| | | animation: warn 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | .pulse1 { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn1 2s ease-out; |
| | | -moz-animation: warn1 2s ease-out; |
| | | animation: warn1 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | } |
| | | & > div { |
| | | padding: 10px 0; |
| | | transform: translateY(-14px); |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(8, 109, 209, 0.4), rgba(11, 255, 255, 0.2)); |
| | | border: 1px solid rgba(54, 252, 252, 1); |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | |
| | | div { |
| | | margin-bottom: 5px; |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | } |
| | | span { |
| | | display: inline-block; |
| | | white-space: nowrap; |
| | | width: 50%; |
| | | font-size: 13px; |
| | | color: #fff; |
| | | text-align: left; |
| | | |
| | | &:first-of-type { |
| | | text-align: right; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .noBorder{ |
| | | border: 1px solid rgba(54, 252, 252, 0.1); |
| | | } |
| | | .redBorder{ |
| | | border: 1px solid #ff0000; |
| | | } |
| | | p { |
| | | width: 140px; |
| | | height: 50px; |
| | | font-size: 18px; |
| | | line-height: 48px; |
| | | text-align: center; |
| | | color: #fff; |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(11, 255, 255, 0.2), rgba(8, 109, 209, 0.4)); |
| | | border: 1px solid rgba(54, 252, 252, 0.6); |
| | | } |
| | | } |
| | | .redBorder { |
| | | border: 1px solid #ff0000; |
| | | } |
| | | p { |
| | | width: 140px; |
| | | height: 50px; |
| | | font-size: 18px; |
| | | line-height: 48px; |
| | | text-align: center; |
| | | color: #fff; |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(11, 255, 255, 0.2), rgba(8, 109, 209, 0.4)); |
| | | border: 1px solid rgba(54, 252, 252, 0.6); |
| | | .finish-point { |
| | | position: absolute; |
| | | width: 90px; |
| | | height: 90px; |
| | | border: 2px solid #0072ff; |
| | | left: -30px; |
| | | top: -45px; |
| | | border-radius: 50%; |
| | | |
| | | & > div { |
| | | width: 80px; |
| | | height: 80px; |
| | | position: absolute; |
| | | left: 3px; |
| | | top: 3px; |
| | | background: #0072ff; |
| | | border-radius: 50%; |
| | | color: #fff; |
| | | font-size: 16px; |
| | | line-height: 80px; |
| | | text-align: center; |
| | | font-weight: bolder; |
| | | } |
| | | } |
| | | } |
| | | .finish-point { |
| | | position: absolute; |
| | | width: 90px; |
| | | height: 90px; |
| | | border: 2px solid #0072ff; |
| | | left: -30px; |
| | | top: -45px; |
| | | border-radius: 50%; |
| | | |
| | | & > div { |
| | | @media screen and (min-width: 1200px) and (max-width: 1366px){ |
| | | .big-title { |
| | | font-size: 28px; |
| | | margin: 10px 0 20px; |
| | | } |
| | | .btns { |
| | | position: absolute; |
| | | z-index: 99999; |
| | | right: 40px; |
| | | top: 40px; |
| | | div { |
| | | font-size: 14px; |
| | | color: #00ffff; |
| | | } |
| | | } |
| | | .line-item { |
| | | width: calc((100vw - 40px) / 5); |
| | | padding-left: 20px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | margin-right: 20px; |
| | | flex-wrap: nowrap; |
| | | .picbox { |
| | | width: 100%; |
| | | height: 180px; |
| | | padding: 10px; |
| | | margin-bottom: 40px; |
| | | box-sizing: border-box; |
| | | |
| | | img { |
| | | display: block; |
| | | width: 100%; |
| | | height: 100px; |
| | | margin-bottom: 6px; |
| | | border-radius: 4px; |
| | | } |
| | | p { |
| | | font-size: 14px; |
| | | white-space: nowrap; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | margin-top: 10px; |
| | | span { |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .item { |
| | | width: calc((100vw - 40px) / 5); |
| | | height: calc((100vh - 130px) / 5); |
| | | padding: 0 20px 20px 40px; |
| | | position: relative; |
| | | box-sizing: border-box; |
| | | border-left: 1px solid #36fcfc; |
| | | |
| | | &:last-of-type { |
| | | border: none; |
| | | } |
| | | |
| | | section { |
| | | width: 24px; |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | border: 1px solid rgba(0, 225, 255, 0.6); |
| | | top: -12px; |
| | | left: 10px; |
| | | |
| | | .dot { |
| | | position: absolute; |
| | | width: 12px; |
| | | height: 12px; |
| | | left: 5px; |
| | | top: 5px; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border: 1px solid #0072ff; |
| | | border-radius: 50%; |
| | | background-color: #00e1ff; |
| | | z-index: 2; |
| | | } |
| | | .pulse { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn 2s ease-out; |
| | | -moz-animation: warn 2s ease-out; |
| | | animation: warn 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | .pulse1 { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn1 2s ease-out; |
| | | -moz-animation: warn1 2s ease-out; |
| | | animation: warn1 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | } |
| | | & > div { |
| | | width: 90%; |
| | | padding: 10px 0; |
| | | transform: translateY(-14px); |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(8, 109, 209, 0.4), rgba(11, 255, 255, 0.2)); |
| | | border: 1px solid rgba(54, 252, 252, 1); |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | |
| | | div { |
| | | width: 100%; |
| | | margin-bottom: 5px; |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | } |
| | | span { |
| | | display: inline-block; |
| | | white-space: nowrap; |
| | | width: 50%; |
| | | font-size: 13px; |
| | | color: #fff; |
| | | text-align: left; |
| | | |
| | | &:first-of-type { |
| | | text-align: right; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .noBorder{ |
| | | border: 1px solid rgba(54, 252, 252, 0.1); |
| | | } |
| | | .redBorder{ |
| | | border: 1px solid #ff0000; |
| | | } |
| | | p { |
| | | width: 140px; |
| | | height: 50px; |
| | | font-size: 18px; |
| | | line-height: 48px; |
| | | text-align: center; |
| | | color: #fff; |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(11, 255, 255, 0.2), rgba(8, 109, 209, 0.4)); |
| | | border: 1px solid rgba(54, 252, 252, 0.6); |
| | | } |
| | | } |
| | | .finish-point { |
| | | position: absolute; |
| | | width: 80px; |
| | | height: 80px; |
| | | position: absolute; |
| | | left: 3px; |
| | | top: 3px; |
| | | background: #0072ff; |
| | | border: 1px solid #0072ff; |
| | | left: -20px; |
| | | top: -40px; |
| | | border-radius: 50%; |
| | | color: #fff; |
| | | font-size: 16px; |
| | | line-height: 80px; |
| | | text-align: center; |
| | | font-weight: bolder; |
| | | } |
| | | } |
| | | } |
| | | |
| | | @media screen and (min-width: 1200px) and (max-width: 1366px) { |
| | | .big-title { |
| | | font-size: 28px; |
| | | margin: 10px 0 20px; |
| | | } |
| | | .btns { |
| | | position: absolute; |
| | | z-index: 99999; |
| | | right: 40px; |
| | | top: 40px; |
| | | div { |
| | | font-size: 14px; |
| | | color: #00ffff; |
| | | } |
| | | } |
| | | .line-item { |
| | | width: calc((100vw - 40px) / 5); |
| | | padding-left: 20px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | margin-right: 20px; |
| | | flex-wrap: nowrap; |
| | | .picbox { |
| | | width: 100%; |
| | | height: 180px; |
| | | padding: 10px; |
| | | margin-bottom: 40px; |
| | | box-sizing: border-box; |
| | | |
| | | img { |
| | | display: block; |
| | | width: 100%; |
| | | height: 100px; |
| | | margin-bottom: 6px; |
| | | border-radius: 4px; |
| | | } |
| | | p { |
| | | & > div { |
| | | width: 70px; |
| | | height: 70px; |
| | | position: absolute; |
| | | left: 4px; |
| | | top: 4px; |
| | | background: #0072ff; |
| | | border-radius: 50%; |
| | | color: #fff; |
| | | font-size: 14px; |
| | | white-space: nowrap; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | margin-top: 10px; |
| | | span { |
| | | color: #fff; |
| | | } |
| | | line-height: 70px; |
| | | text-align: center; |
| | | font-weight: bolder; |
| | | } |
| | | } |
| | | } |
| | | .item { |
| | | width: calc((100vw - 40px) / 5); |
| | | height: calc((100vh - 130px) / 5); |
| | | padding: 0 20px 20px 40px; |
| | | position: relative; |
| | | box-sizing: border-box; |
| | | border-left: 1px solid #36fcfc; |
| | | |
| | | &:last-of-type { |
| | | border: none; |
| | | @media screen and (max-width: 1200px){ |
| | | .big-title { |
| | | font-size: 20px; |
| | | margin: 5px 0 10px; |
| | | } |
| | | |
| | | section { |
| | | width: 24px; |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | .btns { |
| | | position: absolute; |
| | | border: 1px solid rgba(0, 225, 255, 0.6); |
| | | top: -12px; |
| | | left: 10px; |
| | | |
| | | .dot { |
| | | position: absolute; |
| | | width: 12px; |
| | | height: 12px; |
| | | left: 5px; |
| | | top: 5px; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border: 1px solid #0072ff; |
| | | border-radius: 50%; |
| | | background-color: #00e1ff; |
| | | z-index: 2; |
| | | } |
| | | .pulse { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn 2s ease-out; |
| | | -moz-animation: warn 2s ease-out; |
| | | animation: warn 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | .pulse1 { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn1 2s ease-out; |
| | | -moz-animation: warn1 2s ease-out; |
| | | animation: warn1 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | z-index: 99999; |
| | | right: 20px; |
| | | top: 40px; |
| | | div { |
| | | font-size: 12px; |
| | | color: #00ffff; |
| | | } |
| | | } |
| | | & > div { |
| | | width: 90%; |
| | | padding: 10px 0; |
| | | transform: translateY(-14px); |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(8, 109, 209, 0.4), rgba(11, 255, 255, 0.2)); |
| | | border: 1px solid rgba(54, 252, 252, 1); |
| | | .line-item { |
| | | width: 20vw; |
| | | padding-left: 10px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | |
| | | div { |
| | | align-items: flex-start; |
| | | margin-right: 20px; |
| | | flex-wrap: nowrap; |
| | | .picbox { |
| | | width: 100%; |
| | | margin-bottom: 5px; |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | } |
| | | span { |
| | | display: inline-block; |
| | | white-space: nowrap; |
| | | width: 50%; |
| | | font-size: 13px; |
| | | color: #fff; |
| | | text-align: left; |
| | | height: 160px; |
| | | padding: 10px; |
| | | margin-bottom: 30px; |
| | | box-sizing: border-box; |
| | | |
| | | &:first-of-type { |
| | | text-align: right; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | img { |
| | | display: block; |
| | | width: 100%; |
| | | height: 80px; |
| | | margin-bottom: 10px; |
| | | border-radius: 4px; |
| | | } |
| | | p { |
| | | font-size: 12px; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | margin-top: 6px; |
| | | span { |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .noBorder { |
| | | border: 1px solid rgba(54, 252, 252, 0.1); |
| | | } |
| | | .redBorder { |
| | | border: 1px solid #ff0000; |
| | | } |
| | | p { |
| | | width: 140px; |
| | | height: 50px; |
| | | font-size: 18px; |
| | | line-height: 48px; |
| | | text-align: center; |
| | | color: #fff; |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(11, 255, 255, 0.2), rgba(8, 109, 209, 0.4)); |
| | | border: 1px solid rgba(54, 252, 252, 0.6); |
| | | } |
| | | } |
| | | .finish-point { |
| | | position: absolute; |
| | | width: 80px; |
| | | height: 80px; |
| | | border: 1px solid #0072ff; |
| | | left: -20px; |
| | | top: -40px; |
| | | border-radius: 50%; |
| | | .item { |
| | | width: 20vw; |
| | | height: calc((100vh - 130px) / 5); |
| | | padding: 0 0 20px 30px; |
| | | position: relative; |
| | | box-sizing: border-box; |
| | | border-left: 1px solid #36fcfc; |
| | | |
| | | & > div { |
| | | &:last-of-type { |
| | | border: none; |
| | | } |
| | | |
| | | section { |
| | | width: 24px; |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | border: 1px solid rgba(0, 225, 255, 0.6); |
| | | top: -12px; |
| | | left: 2px; |
| | | |
| | | .dot { |
| | | position: absolute; |
| | | width: 12px; |
| | | height: 12px; |
| | | left: 5px; |
| | | top: 5px; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border: 1px solid #0072ff; |
| | | border-radius: 50%; |
| | | background-color: #00e1ff; |
| | | z-index: 2; |
| | | } |
| | | .pulse { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn 2s ease-out; |
| | | -moz-animation: warn 2s ease-out; |
| | | animation: warn 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | .pulse1 { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn1 2s ease-out; |
| | | -moz-animation: warn1 2s ease-out; |
| | | animation: warn1 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | } |
| | | & > div { |
| | | width: 80%; |
| | | padding: 4px 0; |
| | | transform: translateY(-14px); |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(8, 109, 209, 0.4), rgba(11, 255, 255, 0.2)); |
| | | border: 1px solid rgba(54, 252, 252, 1); |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | |
| | | div { |
| | | width: 100%; |
| | | margin-bottom: 2px; |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | } |
| | | span { |
| | | width: 50%; |
| | | display: inline-block; |
| | | white-space: nowrap; |
| | | font-size: 12px; |
| | | color: #fff; |
| | | text-align: left; |
| | | |
| | | &:first-of-type { |
| | | text-align: right; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .noBorder{ |
| | | border: 1px solid rgba(54, 252, 252, 0.1); |
| | | } |
| | | .redBorder{ |
| | | border: 1px solid #ff0000; |
| | | } |
| | | p { |
| | | width: 140px; |
| | | height: 50px; |
| | | font-size: 18px; |
| | | line-height: 48px; |
| | | text-align: center; |
| | | color: #fff; |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(11, 255, 255, 0.2), rgba(8, 109, 209, 0.4)); |
| | | border: 1px solid rgba(54, 252, 252, 0.6); |
| | | } |
| | | } |
| | | .finish-point { |
| | | position: absolute; |
| | | width: 70px; |
| | | height: 70px; |
| | | position: absolute; |
| | | left: 4px; |
| | | top: 4px; |
| | | background: #0072ff; |
| | | border: 1px solid #0072ff; |
| | | left: -10px; |
| | | top: -35px; |
| | | border-radius: 50%; |
| | | color: #fff; |
| | | font-size: 14px; |
| | | line-height: 70px; |
| | | text-align: center; |
| | | font-weight: bolder; |
| | | } |
| | | } |
| | | } |
| | | |
| | | @media screen and (max-width: 1200px) { |
| | | .big-title { |
| | | font-size: 20px; |
| | | margin: 5px 0 10px; |
| | | } |
| | | .btns { |
| | | position: absolute; |
| | | z-index: 99999; |
| | | right: 20px; |
| | | top: 40px; |
| | | div { |
| | | font-size: 12px; |
| | | color: #00ffff; |
| | | } |
| | | } |
| | | .line-item { |
| | | width: 20vw; |
| | | padding-left: 10px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | margin-right: 20px; |
| | | flex-wrap: nowrap; |
| | | .picbox { |
| | | width: 100%; |
| | | height: 160px; |
| | | padding: 10px; |
| | | margin-bottom: 30px; |
| | | box-sizing: border-box; |
| | | |
| | | img { |
| | | display: block; |
| | | width: 100%; |
| | | height: 80px; |
| | | margin-bottom: 10px; |
| | | border-radius: 4px; |
| | | } |
| | | p { |
| | | & > div { |
| | | width: 60px; |
| | | height: 60px; |
| | | position: absolute; |
| | | left: 4px; |
| | | top: 4px; |
| | | background: #0072ff; |
| | | border-radius: 50%; |
| | | color: #fff; |
| | | font-size: 12px; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | margin-top: 6px; |
| | | span { |
| | | color: #fff; |
| | | } |
| | | line-height: 60px; |
| | | text-align: center; |
| | | font-weight: bolder; |
| | | } |
| | | } |
| | | } |
| | | .item { |
| | | width: 20vw; |
| | | height: calc((100vh - 130px) / 5); |
| | | padding: 0 0 20px 30px; |
| | | position: relative; |
| | | box-sizing: border-box; |
| | | border-left: 1px solid #36fcfc; |
| | | |
| | | &:last-of-type { |
| | | border: none; |
| | | } |
| | | |
| | | section { |
| | | width: 24px; |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | border: 1px solid rgba(0, 225, 255, 0.6); |
| | | top: -12px; |
| | | left: 2px; |
| | | |
| | | .dot { |
| | | position: absolute; |
| | | width: 12px; |
| | | height: 12px; |
| | | left: 5px; |
| | | top: 5px; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border: 1px solid #0072ff; |
| | | border-radius: 50%; |
| | | background-color: #00e1ff; |
| | | z-index: 2; |
| | | } |
| | | .pulse { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn 2s ease-out; |
| | | -moz-animation: warn 2s ease-out; |
| | | animation: warn 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | .pulse1 { |
| | | position: absolute; |
| | | width: 48px; |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | z-index: 1; |
| | | opacity: 0; |
| | | -webkit-animation: warn1 2s ease-out; |
| | | -moz-animation: warn1 2s ease-out; |
| | | animation: warn1 2s ease-out; |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | } |
| | | } |
| | | & > div { |
| | | width: 80%; |
| | | padding: 4px 0; |
| | | transform: translateY(-14px); |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(8, 109, 209, 0.4), rgba(11, 255, 255, 0.2)); |
| | | border: 1px solid rgba(54, 252, 252, 1); |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | |
| | | div { |
| | | width: 100%; |
| | | margin-bottom: 2px; |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | } |
| | | span { |
| | | width: 50%; |
| | | display: inline-block; |
| | | white-space: nowrap; |
| | | font-size: 12px; |
| | | color: #fff; |
| | | text-align: left; |
| | | |
| | | &:first-of-type { |
| | | text-align: right; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .noBorder { |
| | | border: 1px solid rgba(54, 252, 252, 0.1); |
| | | } |
| | | .redBorder { |
| | | border: 1px solid #ff0000; |
| | | } |
| | | p { |
| | | width: 140px; |
| | | height: 50px; |
| | | font-size: 18px; |
| | | line-height: 48px; |
| | | text-align: center; |
| | | color: #fff; |
| | | border-radius: 8px; |
| | | background-image: linear-gradient(to right, rgba(11, 255, 255, 0.2), rgba(8, 109, 209, 0.4)); |
| | | border: 1px solid rgba(54, 252, 252, 0.6); |
| | | } |
| | | } |
| | | .finish-point { |
| | | position: absolute; |
| | | width: 70px; |
| | | height: 70px; |
| | | border: 1px solid #0072ff; |
| | | left: -10px; |
| | | top: -35px; |
| | | border-radius: 50%; |
| | | |
| | | & > div { |
| | | width: 60px; |
| | | height: 60px; |
| | | position: absolute; |
| | | left: 4px; |
| | | top: 4px; |
| | | background: #0072ff; |
| | | border-radius: 50%; |
| | | color: #fff; |
| | | font-size: 12px; |
| | | line-height: 60px; |
| | | text-align: center; |
| | | font-weight: bolder; |
| | | } |
| | | } |
| | | } |
| | | |
| | | @keyframes warn { |
| | | 0% { |
| | |
| | | padding: 10px 40px 35px; |
| | | box-sizing: border-box; |
| | | |
| | | & > div { |
| | | &>div{ |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | |
| | | align-items: flex-start; |
| | | |
| | | .line-item { |
| | | |
| | | .area-head { |
| | | position: relative; |
| | | width: 100%; |
| | |
| | | } |
| | | .fadeLine { |
| | | width: 100%; |
| | | border-top: 1px solid rgba(54, 252, 252, 0.6); |
| | | border-top: 1px solid rgba(54,252,252,.6); |
| | | } |
| | | } |
| | | .fadeBorder { |