From 2475c65a3c091cee4fe48f49e0f53697403750df Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期三, 17 八月 2022 19:55:34 +0800 Subject: [PATCH] 冲突 --- src/views/intellectInspect/intelligentLine/index.vue | 1045 +++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 681 insertions(+), 364 deletions(-) diff --git a/src/views/intellectInspect/intelligentLine/index.vue b/src/views/intellectInspect/intelligentLine/index.vue index 256dd69..0c02976 100644 --- a/src/views/intellectInspect/intelligentLine/index.vue +++ b/src/views/intellectInspect/intelligentLine/index.vue @@ -1,7 +1,7 @@ <template> <div class="container"> <div class="big-title" @click="goBack()">国泰新华智能巡检系统</div> - <div style="font-size: 14px; 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"> @@ -10,11 +10,12 @@ <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> @@ -22,7 +23,9 @@ <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" /> + <div class="imgbox"> + <img :src="item.rfidImage==null?defaultImg:item.rfidImage"/> + </div> <p> RFID: <span>{{ item.rfid }}</span> </p> @@ -30,14 +33,14 @@ 位置: <span>{{ item.region.toString() }}</span> </p> </div> - <div class="area-head" :class="item.points.some((e) => e.reportResult == null) ? 'fadeBorder' : ''"> - <div class="indicator" :class="item.points.some((e) => e.reportResult == null) ? 'someUndone' : item.points.some((e) => e.reportResult == 1) ? 'somewarning' : ''"> + <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> + <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' : ''"> @@ -46,7 +49,7 @@ <div class="pulse"></div> <div class="pulse1"></div> </section> - <div> + <div :class="t.reportResult == null ? 'noBorder' : t.reportResult == 1 ? 'redBorder' : ''"> <div> <span>巡检点:</span><span>{{ t.point }}</span> </div> @@ -76,6 +79,7 @@ </div> </div> <div class="tip" v-else>抱歉,暂时查询不到巡检路线...</div> + </div> </div> </div> </template> @@ -83,8 +87,8 @@ <script lang="ts"> import screenfull from 'screenfull'; import { lineApi } from '/@/api/intelligentLine'; -import { toRefs, reactive, ref, onMounted, onUnmounted, computed } from 'vue'; - +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'; @@ -101,6 +105,7 @@ socket: any; socketData: string; data: Array<any>; + id: string } export default { name: 'intelligentLine', @@ -108,75 +113,80 @@ setup() { const userInfo = useUserInfo(); const { userInfos } = storeToRefs(userInfo); + const route = useRoute(); const state = reactive<stateType>({ present: '', isScreenfull: false, - path: 'http://192.168.0.29:8008/ws/test/', + path: '', socketData: '', socket: null, - data: [] + data: [], + id: '' }); onMounted(() => { setInterval(() => { state.present = new Date().toLocaleString(); }, 1000); - init(); - // getLine() + let curId = route.query.id + state.id = curId.toString() + getLine(state.id) + getUrl(state.id) }); const dataList = computed(() => { return userInfos.value.dataList; }); - // socket获取数据 - const init = () => { - if (typeof window.WebSocket === 'undefined') { - alert('您的浏览器不支持socket'); - } else { - // 实例化socket - var url = state.path + '80938081556545536'; - url = url.replace('https', 'ws').replace('http', 'ws'); - console.log(url, '获取地址'); - state.socket = new window.WebSocket(url); - // 监听socket连接 - state.socket.onopen = () => { - console.log('socket连接成功'); - }; - // 监听socket错误信息 - state.socket.onerror = () => { - console.log('socket连接错误'); - }; - // 监听socket消息 - state.socket.onmessage = (msg) => { - // console.log(msg, 'msg'); - // console.log(typeof msg.data, 'type'); - if (msg.data === '连接成功') return; - // state.socketData = msg.data; - // console.log(JSON.parse(state.socketData), '------------------'); - // if (typeof JSON.parse(state.socketData) == Array) { - // debugger; - debugger; - userInfos.value.dataList = JSON.parse(msg.data); - console.log(state.data); - // } - // console.log(msg,'msg') - // console.log(this.data,'data-------') - }; - } - }; + // 获取url - const send = () => { - state.socket.send(params); - }; + 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/' + if (typeof WebSocket === 'undefined') { + alert('您的浏览器不支持socket'); + } else { + // 实例化socket + // debugger + 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.onopen = () => { + console.log('socket连接成功'); + }; + // 监听socket错误信息 + state.socket.onerror = () => { + console.log('socket连接错误'); + }; + // 监听socket消息 + state.socket.onmessage = (msg) => { + if (msg.data === '连接成功') return; + console.log(msg.data,'data') + userInfos.value.dataList = JSON.parse(msg.data); + }; + } + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + } + + // const send = () => { + // state.socket.send(params); + // }; // 接口获取数据 - const getLine = async () => { - let res = await lineApi().getLine({ id: '80647416891768832' }); + const getLine = async (id:string) => { + let res = await lineApi().getLine({ id: id }); if (res.data.code === '200') { - console.log(res.data.data, '获取巡检点'); - state.data = res.data.data; - console.log(state.data, '---'); + userInfos.value.dataList = res.data.data; } else { ElMessage({ type: 'warning', @@ -209,9 +219,11 @@ // 页面关闭处理 onUnmounted(() => { // 销毁监听 - state.socket.onclose = () => { - console.log('socket已经关闭'); - }; + nextTick(()=>{ + state.socket.onclose = () => { + console.log('socket已经关闭'); + }; + }) }); return { dataList, @@ -221,120 +233,605 @@ }; } }; -// export default { -// name: 'NewForm', -// props: { -// -// }, -// data(){ -// return{ -// present: '', -// isScreenfull: false, -// path: "http://192.168.0.29:8008/ws/test/", -// socket: null, -// socketData: '', -// data: [] -// } -// }, -// created() { -// setInterval(() => { -// this.present = new Date().toLocaleString() -// }, 1000) -// }, -// mounted () { -// // 初始化 -// this.init() -// // this.getLine() -// }, -// methods:{ -// goBack(){ -// window.history.go(-1) -// }, -// -// async getLine (){ -// let res = await lineApi().getLine({ id: '80647416891768832' }); -// if (res.data.code === '200') { -// console.log(res.data.data,'获取巡检点') -// this.data = res.data.data -// console.log(this.data,'---') -// } else { -// ElMessage({ -// type: 'warning', -// message: res.data.msg -// }); -// } -// }, -// -// // 全屏点击时 -// onScreenfullClick(){ -// const t = this -// if (!screenfull.isEnabled) { -// ElMessage.warning('暂不不支持全屏'); -// return false; -// } -// screenfull.toggle(); -// screenfull.on('change', () => { -// if (screenfull.isFullscreen) { -// t.isScreenfull = true -// } -// else{ -// t.isScreenfull = false -// } -// }); -// }, -// -// // socket获取数据 -// init: function () { -// if(typeof(window.WebSocket) === "undefined"){ -// alert("您的浏览器不支持socket") -// }else{ -// // 实例化socket -// var url = this.path + '80938081556545536' -// url = url.replace("https","ws").replace("http","ws"); -// console.log(url,'获取地址') -// this.socket = new window.WebSocket(url) -// // 监听socket连接 -// this.socket.onopen = this.open -// // 监听socket错误信息 -// this.socket.onerror = this.error -// // 监听socket消息 -// this.socket.onmessage = this.getMessage -// } -// }, -// open: function () { -// console.log("socket连接成功") -// }, -// error: function () { -// console.log("连接错误") -// }, -// getMessage: function (msg) { -// console.log(typeof msg.data,'type') -// if(msg.data =='连接成功') return -// this.socketData = msg.data -// console.log(JSON.parse(this.socketData),'------------------',) -// if(typeof JSON.parse(this.socketData) == Array){ -// this.data = JSON.parse(this.socketData) -// console.log(this.data) -// } -// // console.log(msg,'msg') -// // console.log(this.data,'data-------') -// }, -// send: function () { -// this.socket.send(params) -// }, -// close: function () { -// console.log("socket已经关闭") -// } -// }, -// destroyed () { -// // 销毁监听 -// this.socket.onclose = this.close -// } -// } </script> <!-- 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; + } + } + .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%; + 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); + } + } + .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; + } + } + } + + @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; + border: 1px solid #0072ff; + left: -20px; + top: -40px; + border-radius: 50%; + + & > div { + width: 70px; + height: 70px; + position: absolute; + left: 4px; + top: 4px; + background: #0072ff; + 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 { + font-size: 12px; + color: rgba(255, 255, 255, 0.8); + margin-top: 6px; + span { + color: #fff; + } + } + } + } + .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% { transform: scale(0.3); @@ -426,9 +923,7 @@ .big-title { height: 40px; line-height: 40px; - font-size: 28px; font-weight: bold; - margin: 10px 0 20px; text-align: center; color: #fff; display: flex; @@ -436,10 +931,6 @@ justify-content: center; } .btns { - position: absolute; - z-index: 99999; - right: 60px; - top: 40px; display: flex; align-items: center; .fullbtn { @@ -452,10 +943,6 @@ color: #00ffff; margin-right: 10px; } - div { - font-size: 16px; - color: #00ffff; - } } .backBtn { @@ -467,22 +954,24 @@ height: 14px; margin-right: 10px; } - div { - font-size: 16px; - color: #00ffff; - } } } .blocks { width: 100%; height: calc(100% - 90px); - padding: 20px 40px 30px; + padding: 10px 40px 35px; box-sizing: border-box; - display: flex; - align-items: flex-start; - overflow: hidden; - overflow-x: scroll; - overflow-y: scroll; + + &>div{ + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: flex-start; + overflow: hidden; + overflow-x: auto; + overflow-y: auto; + } .line-map { display: flex; @@ -490,37 +979,7 @@ align-items: flex-start; .line-item { - width: calc((100vw - 180px) / 6); - padding-left: 20px; - display: flex; - flex-direction: column; - align-items: flex-start; - margin-right: 20px; - flex-wrap: nowrap; - .picbox { - width: 100%; - height: calc((100vh - 130px) / 5); - padding: 10px; - margin-bottom: 40px; - box-sizing: border-box; - - img { - display: block; - width: 100%; - height: 100px; - margin-bottom: 10px; - border-radius: 4px; - } - p { - font-size: 14px; - color: rgba(255, 255, 255, 0.8); - margin-top: 10px; - span { - color: #fff; - } - } - } .area-head { position: relative; width: 100%; @@ -652,132 +1111,15 @@ } .fadeLine { width: 100%; - border-top: 1px solid #ccc; + border-top: 1px solid rgba(54,252,252,.6); } } .fadeBorder { - border-left: 1px solid rgba(54, 252, 252, 0.4); + border-left: 1px solid #ccc; } .more-info { width: 100%; - .item { - width: calc((100vw - 120px) / 6); - height: calc((100vh - 130px) / 5); - padding: 0 50px 20px; - 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, 0.6); - display: flex; - flex-direction: column; - justify-content: center; - - div { - margin-bottom: 5px; - &:last-of-type { - margin-bottom: none; - } - span { - display: inline-block; - width: 50%; - font-size: 13px; - color: #fff; - text-align: left; - - &:first-of-type { - text-align: right; - color: rgba(255, 255, 255, 0.8); - } - } - } - } - - 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); - } - } .warning { & > section { border: 1px solid #ff0000; @@ -806,7 +1148,6 @@ } } .undone { - border-left: 1px solid rgba(54, 252, 252, 0.4); & > section { border: 1px solid #ccc; @@ -830,30 +1171,6 @@ width: 100%; height: 80px; border-left: none; - .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; - } - } } } .pic-tit { -- Gitblit v1.9.2