From 525dae0dec6ba6afbe6bf81b82eb99d69aeb05b5 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 21 八月 2023 15:57:27 +0800 Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmMes --- screen_standard/src/views/index.vue | 300 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 292 insertions(+), 8 deletions(-) diff --git a/screen_standard/src/views/index.vue b/screen_standard/src/views/index.vue index e660a85..b8c1ff6 100644 --- a/screen_standard/src/views/index.vue +++ b/screen_standard/src/views/index.vue @@ -1,34 +1,318 @@ <template> - <div class="content"> - <div class="content_left">1</div> + <div class="content1"> + <div class="content_left"> + <div class="content_left_item1"> + <div class="content_left_item1_head"> + <span>褰撴棩鍛樺伐浜ч噺TOP10</span> + </div> + <div class="content_left_item1_content"> + <div class="content_left_item1_content_row" v-for="(item, index) in 10" :key="index"> + <div class="content_left_item1_content_row_name"> + <div :class="index > 2 ? 'num bg1' : 'num bg2'">{{ index + 1 }}</div> + <span>璧电珛{{ index }}</span> + </div> + <div class="content_left_item1_content_row_line"> + <el-progress + :show-text="false" + :percentage="50"> + </el-progress> + </div> + <div class="content_left_item1_content_row_num">342</div> + </div> + </div> + </div> + <div class="content_left_item2"> + <div class="content_left_item2_head"> + <span>浠撳簱瀹炴椂浣欓噺缁熻</span> + </div> + <div class="content_left_item2_content"> + <div class="item2_content_head"> + <div class="item2_content_head_item">鐗╂枡鍚嶇О / 宸ュ簭</div> + <div class="item2_content_head_item">浠撳簱</div> + <div class="item2_content_head_item">璐ф灦</div> + <div class="item2_content_head_item">鏁伴噺</div> + </div> + <div @mouseenter="handleMouseEnter" @mouseleave="handleMouseLeave" class="main_container"> + <div ref="scrollContainer" class="scroll_container"> + <div v-for="(item, index) in listData" :key="item.id" :class="index % 2 == 0 ? 'scroll_item scroll_item_bg1' : 'scroll_item scroll_item_bg2'"> + <span>{{ item.name }}</span> + <div class="scroll_item_row"></div> + <div class="scroll_item_row"></div> + <div class="scroll_item_row"></div> + <div class="scroll_item_row"></div> + </div> + </div> + </div> + </div> + </div> + </div> <div class="content_center">2</div> <div class="content_right">3</div> </div> </template> - <script setup> + import {reactive, ref, onMounted, onBeforeUnmount, onUnmounted, nextTick} from 'vue' + let timer = ref(null) + let scrollContainer = ref(null) + let listData = reactive([ + {name: 'dom绗竴涓�'}, + {name: 'dom绗簩涓�'}, + {name: 'dom绗笁涓�'}, + {name: 'dom绗洓涓�'}, + {name: 'dom绗簲涓�'}, + {name: 'dom绗叚涓�'}, + {name: 'dom绗竷涓�'}, + {name: 'dom绗叓涓�'}, + {name: 'dom绗節涓�'}, + {name: 'dom绗崄涓�'}, + ]) + start() + // 娉細绀轰緥涓殑 listData 鍐欑殑鏄潤鎬佹暟鎹紝鍙互鐩存帴璋冪敤 start() + // 濡傛灉鏄帴鍙h幏鍙� listData 鍒楄〃鏃讹紝闇�瑕佸湪 nextTick 涓皟鐢� start() + // 鍚﹀垯锛岃繘鍏ラ〉闈笉浼氭粴鍔ㄣ�傚繀椤婚紶鏍囩Щ鍏ョЩ鍑烘墠浼氭粴鍔� + // 鐢� nextTick 鐨勫師鍥犳槸闇�瑕佺瓑 dom 鍏冪礌鍔犺浇瀹屾瘯鍚庡啀鎵ц鏂规硶 + + // let chartData = reactive({ + // data: [] + // }) + // function getSensorData() { + // GetSensorData().then(res=> { + // chartData.data = res.data.data + // nextTick(()=>{ + // start() + // }) + // }) + // } + + // onMounted(()=> { + // getSensorData() + // }) + + onBeforeUnmount(()=>{ + clearTimeout(timer.value) + }) + onUnmounted(()=>{ + clearTimeout(timer.value) + }) + + function handleMouseEnter() { + clearTimeout(timer.value) + } + function handleMouseLeave() { + start() + } + // 寮�鍚畾鏃跺櫒 + function start() { + clearTimeout(timer.value) + // 瀹氭椂鍣ㄨЕ鍙戝懆鏈� + let speed = ref(25) + timer.value = setInterval(ListScroll, speed.value) + } + function ListScroll() { + let scrollDom = scrollContainer.value + // 鍒よ缁勪欢鏄惁娓叉煋瀹屾垚 + if(scrollDom.offsetHeight == 0) { + scrollDom = scrollContainer.value + }else { + // 濡傛灉鍒楄〃鏁伴噺杩囧皯涓嶈繘琛屾粴鍔� + if(scrollDom.children.length < 4) { + clearTimeout(timer.value) + return + } + // 缁勪欢杩涜婊氬姩 + scrollDom.scrollTop += 1 + // 鍒ゆ柇鏄惁婊氬姩鍒板簳閮� + if(scrollDom.scrollTop == (scrollDom.scrollHeight - scrollDom.clientHeight)) { + // 鑾峰彇缁勪欢绗竴涓妭鐐� + let first = scrollDom.children[0] + // 鍒犻櫎鑺傜偣 + scrollDom.removeChild(first) + // 灏嗚鑺傜偣鎷兼帴鍒扮粍浠舵渶鍚� + scrollDom.append(first) + } + } + } </script> <style lang="scss" scoped> - .content { + .content1 { width: 100%; height: auto; display: flex; align-items: center; justify-content: space-between; .content_left { - width: 920px; - background-color: aquamarine; + flex: 1; + .content_left_item1 { + width: 100%; + margin-bottom: 20px; + .content_left_item1_head { + background: url('@/assets/img/home_title_short@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + width: 100%; + height: 38px; + line-height: 38px; + padding-left: 34px; + box-sizing: border-box; + span { + font-size: 16px; + font-family: SourceHanSansSC-Bold, SourceHanSansSC; + font-weight: bold; + color: #FFFFFF; + line-height: 24px; + text-shadow: 0px 0px 10px rgba(0,24,72,0.75); + } + } + .content_left_item1_content { + width: 100%; + height: 360px; + padding: 20px; + box-sizing: border-box; + background: linear-gradient(180deg, rgba(52,88,159,0) 0%, rgba(0,86,255,0.4) 100%); + .content_left_item1_content_row { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 13px; + &:last-child { + margin: 0; + } + .content_left_item1_content_row_name { + flex-shrink: 0; + display: flex; + align-items: center; + span { + font-size: 13px; + font-family: SourceHanSansSC-Regular, SourceHanSansSC; + font-weight: 400; + color: #D2E0FF; + margin-left: 9px; + } + .num { + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + font-size: 12px; + font-family: SourceHanSansSC-Medium, SourceHanSansSC; + font-weight: 500; + color: #FFFFFF; + } + .bg1 { + background: url('@/assets/img/rank_blue@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + } + .bg2 { + background: url('@/assets/img/rank_yellow@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + } + } + .content_left_item1_content_row_line { + flex: 1; + margin: 0 15px; + &::v-deep(.el-progress-bar__outer) { + border-radius: 0%; + background: rgba(255,255,255,0.13); + } + &::v-deep(.el-progress-bar__inner) { + border-radius: 0%; + background: linear-gradient(270deg, #00B0FF 0%, #345BA3 100%); + } + } + .content_left_item1_content_row_num { + font-size: 13px; + font-family: SourceHanSansSC-Regular, SourceHanSansSC; + font-weight: 400; + color: #D2E0FF; + } + } + } + } + .content_left_item2 { + width: 100%; + .content_left_item2_head { + background: url('@/assets/img/home_title_short@2x.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + width: 100%; + height: 38px; + line-height: 38px; + padding-left: 34px; + box-sizing: border-box; + span { + font-size: 16px; + font-family: SourceHanSansSC-Bold, SourceHanSansSC; + font-weight: bold; + color: #FFFFFF; + line-height: 24px; + text-shadow: 0px 0px 10px rgba(0,24,72,0.75); + } + } + .content_left_item2_content { + width: 100%; + height: 361px; + padding: 20px; + box-sizing: border-box; + background: linear-gradient(180deg, rgba(52,88,159,0) 0%, rgba(0,86,255,0.4) 100%); + .item2_content_head { + width: 100%; + height: 36px; + display: flex; + align-items: center; + background: rgba(52,88,159,0.5); + .item2_content_head_item { + flex: 1; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font-size: 13px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #01D9FE; + &:first-child { + flex: 1.5; + } + } + } + .main_container { + width: 100%; + height: calc(100% - 36px); + .scroll_container { + width: 100%; + height: 100%; + overflow: hidden; + .scroll_item_bg1 { + background: rgba(52,88,159,0.2); + } + .scroll_item_bg2 { + background: rgba(52,88,159,0.5); + } + .scroll_item { + width: 100%; + height: 36px; + display: flex; + align-items: center; + + } + } + } + } + } } .content_center { - flex: 1; + flex: 2; margin: 0 40px; background-color: aquamarine; } .content_right { - width: 920px; + flex: 1; background-color: aquamarine; } } -- Gitblit v1.9.3