vue3+ts(<script setup lang=“ts“>)刷新页面后保持下拉框选中效果

效果图:

 

代码: 

<template><div class="app-layout"><div class="app-box"><div class="header"><div class="header-left"></div><div class="title">室外智能健身房数据中心</div><div class="header-right"><p class="p2"><i class="iconfont icon-home_icon_position"></i>{{ curInfo.siteName }}<div class="dropdown-box"><imgsrc="~@/assets/images/icon/drop_down.png"@click="isOpen = !isOpen"alt=""/><div class="dropdown-cont"><transition name="fade"><div v-if="isOpen" class="dropdown"><div class="dropdown-item" :class="{activeMenu:index === menuIdx}"  v-for="(item,index) in menuList" :key="index" @click="changeMenu(index,item.path)">{{ item.name }}</div></div></transition></div></div></p></div></div><div class="main-container"><router-view></router-view></div></div></div>
</template><script setup lang="ts">
import { reactive, onUnmounted,onMounted, ref } from "vue";
import * as dayjs from "dayjs";
import { getUrlKey } from "@/utils";
import axios from "axios";
import { useRouter,useRoute  } from "vue-router";
const router = useRouter();
const route = useRoute();
const menuList = [{ name: '首页', path: '/chartApp/home' },{ name: '查看运动记录', path: '/chartApp/sportsList' },{ name: '用户管理', path: '/chartApp/userList' },
]
const menuIdx = ref(0);
let curInfo = reactive({deviceNo: "",time: "2023-00-00 00:00:00",// 天气weather: "",temperature: "",// 空气质量aqi: "",category: "",weekday: "",siteName: "中国航发北京航空材料研究院",cityName: "",
});
const isOpen = ref(false);//下拉框
let curTimer = null;
const getCurTime = () => {curTimer = setTimeout(() => {curInfo.time = dayjs().format("YYYY-MM-DD HH:mm:ss");getCurTime();}, 1000);
};const wKEY = "ef38ffd9e9804ae77f5f9342ca2c3975";
let weatherTimer = null;
const getWeather = (adcode: string) => {axios.get(`https://restapi.amap.com/v3/weather/weatherInfo?key=${wKEY}&city=${adcode}`).then((res3) => {let resultTq = res3.data;if (resultTq.lives[0].weather) {curInfo.weather = resultTq.lives[0].weather;curInfo.temperature = resultTq.lives[0].temperature;}});weatherTimer = setTimeout(() => {getWeather(adcode);}, 1000 * 60 * 15);
};
// 获取天气
const getWeatherData = () => {axios.get(`https://restapi.amap.com/v3/config/district?keywords=${curInfo.cityName}&key=${wKEY}`).then((res) => {let result = res.data;if (result?.districts[0].adcode) {// 此处需轮询 每15分钟获取一次getWeather(result?.districts[0].adcode);}});
};
// 获取天气质量
const getCategoryData = () => {const KEY = "a815396d62d043a2bd19395d35997d49";axios.get(`https://geoapi.qweather.com/v2/city/lookup?location=${curInfo.cityName}&key=${KEY}&number=1`).then((res) => {let result = res.data;if (result?.location[0].id) {// 当天获取一次axios.get(`https://devapi.qweather.com/v7/air/now?key=${KEY}&location=${result?.location[0].id}`).then((res3) => {let resultObj = res3.data?.now;curInfo.aqi = resultObj.aqi;curInfo.category = resultObj.category;});}});
};
// 查看运动记录
const changeMenu = (index, path) => {menuIdx.value = index;router.push(path);isOpen.value = false;
}const initLayout = () => {// 优点取url 设备号if (getUrlKey("dNo")) {localStorage.setItem("DEVICE_NO",JSON.stringify({devNo: getUrlKey("dNo"),}));}curInfo.deviceNo = JSON.parse(localStorage.getItem("DEVICE_NO"))?.devNo;getCurTime();
};
initLayout();
onMounted(() => {// 刷新页面保持下拉框选择效果switch (route.name) {case "home":menuIdx.value = 0;break;case "userList":menuIdx.value = 2;break;case "sportsList":menuIdx.value = 1;break;default:menuIdx.value = 0;break;}
});
// 销毁
onUnmounted(() => {clearTimeout(curTimer);clearTimeout(weatherTimer);curTimer = null;weatherTimer = null;
});
</script>
<style lang="scss" scoped>
.app-layout {position: relative;padding: 30px;width: 100vw;min-height: 100vh;overflow: hidden;background: url("@/assets/images/back/them_bg.png") no-repeat;background-size: 100% 100%;color: #d3ffff;font-family: PingFang SC, PingFang SC-Medium;scrollbar-width: none; height: 0;overflow-y: scroll;
}
.app-layout::-webkit-scrollbar {/*滚动条整体样式*/width: 0 !important;}.app-layout::-webkit-scrollbar-thumb {/*滚动条里面小方块*/width: 0 !important;}
.app-box {width: 100%;height: auto;border: 1px solid #005989;border-radius: 30px;box-shadow: 0px 0px 8px 0px #004789 inset;
}
.header {display: flex;width: 100%;height: 86px;background: url("@/assets/images/back/heard.png") no-repeat;background-size: 100% 100%;.title {padding-bottom: 20px;display: flex;justify-content: center;align-items: center;width: 550px;height: 100%;font-family: PingFang SC, PingFang SC-Bold;font-size: 30px;font-weight: 700;text-align: CENTER;line-height: 42px;letter-spacing: 6px;}.header-left,.header-right {padding: 20px 0 10px 0;width: 655px;height: 100%;display: flex;align-items: center;justify-content: center;}.header-left {.p1 {margin-bottom: 6px;padding-left: 124px;font-size: 18px;}.p2 {text-align: right;padding-right: 30px;font-size: 20px;.tq-one {margin-right: 24px;}.iconfont {margin: 0 3px;font-size: 22px;}}}.score {display: inline-block;vertical-align: top;margin-top: 1px;margin-left: 8px;padding: 2px 4px;font-size: 15px;color: #ffffff;border-radius: 2px;}.bg-color1 {background: #29cd94;}.bg-color2 {background: #f7d631;}.bg-color3 {background: #ff9933;}.bg-color4 {background: #ff2626;}.bg-color5 {background: #b133ff;}.bg-color6 {background: #b21b1b;}.header-right {.p1 {margin-bottom: 6px;text-align: right;padding-right: 124px;font-size: 14px;span {padding: 2px 10px;background: rgba(112, 217, 250, 0.1);border: 1px solid rgba(77, 243, 243, 0.3);border-radius: 12px;box-shadow: 0px 0px 8px 0px #004789 inset;}}.p2 {display: flex;align-items: center;font-size: 18px;.dropdown-box{display: flex;flex-direction: column;align-items: flex-start;justify-content: flex-start;margin-left: 30px;position: relative;.dropdown-cont{position: absolute;left: 0;top: 0.14rem;z-index: 9999;}.dropdown{white-space: nowrap;background: rgba(18,60,92,0.60);border: 1px solid #005989;box-shadow: 0px 0px 8px 0px #004789 inset; padding: 0.08rem 0.1rem;font-size: 0.0938rem;.dropdown-item{cursor: pointer;}.dropdown-item:not(:last-child){margin-bottom: 0.06rem;}.activeMenu{color: rgb(53, 204, 151);font-weight: 700;}}}.iconfont {font-size: 20px;margin-right: 10px;}img {width: 20px;height: 20px;cursor: pointer;}}}
}
.main-container {position: relative;padding: 30px;width: 100%;box-sizing: border-box;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scratch列表排序 2024年3月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析

目录 scratch列表排序 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、p…

Python函数之旅专栏(导航)

Python内置函数(参考版本:3.11.8)AELRabs( )enumerate( )len( )range( )aiter( )eval( )list( )repr( )all( )exec( )locals( )reversed( )anext( )round( )any( ) ascii( )FM  filter( )map( )S float( )max( )set( )Bformat( )memoryview( )setattr( )bin( )frozenset( )…

ArcGI基本技巧-科研常用OLS, GWR, GTWR模型实现

ArcGI基本技巧-科研常用OLS, GWR, GTWR模型实现 OLS,GWR,GTWR回归模型均可以揭示解释变量对被解释变量的影响且可以进行预测。Ordinary Least Squares (OLS)是最小二乘法&#xff0c;Geographically Weighted Regression (GWR)是地理加权回归&#xff0c;Geographically and T…

Unity射击游戏开发教程:(18)添加弹药计数+补充弹药

添加简单的弹药计数 我将讨论如何向游戏中添加简单的弹药计数。这将包括在 HUD 中添加弹药计数器,当弹药达到 0 时,文本会将颜色更改为红色以提醒玩家。另外,当弹药数为0时,玩家将无法再射击。让我们深入了解吧! 在播放器脚本中我们需要添加一些变量。我们将创建两个公共整…

详细分析Python中的win32com(附Demo)

目录 前言1. 基本知识2. Excel3. Word 前言 对于自动化RPA比较火热&#xff0c;相应的库也比较多&#xff0c;此文分析win32com这个库&#xff0c;用于操作office 1. 基本知识 Win32com 是一个 Python 模块&#xff0c;是 pywin32 扩展的一部分&#xff0c;允许 Python 代码…

C语言如何删除表中指定位置的结点?

一、问题 如何删除链表中指定位置的结点&#xff1f; 二、解答 删除链表中指定的结点&#xff0c;就像是排好队的⼩朋友⼿牵着⼿&#xff0c;将其中⼀个⼩朋友从队伍中分出来&#xff0c;只需将这个⼩朋友的双⼿从两边松开。 删除结点有两种情况&#xff1a; &#xff08;1&am…

HTML静态网页成品作业(HTML+CSS)——我的家乡江永网页设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

Pencils Protocol Season 2 收官在即,Season 3 携系列重磅权益来袭

此前Scroll生态LaunchPad &聚合收益平台Pencils Protocol&#xff08;原Penpad&#xff09;&#xff0c;推出了首个资产即其生态代币PDD的Launch&#xff0c;Season 2活动主要是用户通过质押ETH代币、组件战队等方式&#xff0c;来获得Point奖励&#xff0c;并以该Point为依…

2024 Google I/O大会:全方位解读最新AI技术和产品

引言&#xff1a; 2024年的Google I/O大会如期举行&#xff0c;作为技术圈的年度盛事之一&#xff0c;谷歌展示了其在人工智能领域的最新进展。本次大会尤其引人注目&#xff0c;因为它紧随着OpenAI昨天发布GPT-4o的脚步。让我们详细解析Google此次公布的各项新技术和产品&…

svn如何远程访问?

svn&#xff08;Subversion&#xff09;是一种版本控制系统&#xff0c;广泛应用于软件开发领域。它能够追踪文件和目录的变化&#xff0c;记录每个版本的修改内容&#xff0c;并允许多人协同开发。svn的远程访问功能允许开发人员可以在不同的地点访问和管理代码&#xff0c;提…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.7讲 GPIO中断实验-编写按键中断驱动

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

EasyCVR智慧校园建设中的关键技术:视频汇聚智能管理系统应用

一、引言 随着信息技术的迅猛发展&#xff0c;智慧校园作为教育信息化建设的重要组成部分&#xff0c;对于提升校园安全、教学效率和管理水平具有重要意义。本文旨在介绍智慧校园视频管理系统的架构设计&#xff0c;为构建高效、智能的校园视频监控系统提供参考。 二、系统整…

Vitis HLS 学习笔记--资源绑定-使用URAM(1)

目录 1. 简介 2. 代码分析 2.1 存储器代码 2.2 Implementation报告 2.3 存储器类型指定 2.4 存储器初始化 3. 总结 1. 简介 在博文《Vitis HLS 学习笔记--资源绑定-使用URAM-CSDN博客》中&#xff0c;介绍了如何在Vitis HLS环境下设计一个简易的存储器模型。 通过以下…

gin自定义验证器+中文翻译

gin自定义验证器中文翻译 1、说明2、global.go3、validator.go4、eg&#xff1a;main.go5、调用接口测试 1、说明 gin官网自定义验证器给的例子相对比较简单&#xff0c;主要是语法级别&#xff0c;便于入门学习&#xff0c;并且没有给出翻译相关的处理&#xff0c;因此在这里记…

红黑树底层封装map、set C++

目录 一、框架思考 三个问题 问题1的解决 问题2的解决&#xff1a; 问题3的解决&#xff1a; 二、泛型编程 1、仿函数的泛型编程 2、迭代器的泛型编程 3、typename&#xff1a; 4、/--重载 三、原码 红黑树 map set 一、框架思考 map和set都是使用红黑树底层&…

新人学习笔记值(初始JavaScript)

一、Java Script是什么 1.Java Script是世界上最流行的语言之一&#xff0c;是一种运行在客户端的脚本语言&#xff08;script是脚本的意思&#xff09; 2.脚本语言&#xff1a;不需要编译&#xff0c;运行过程中由js解释器&#xff08;js引擎&#xff09;进行解释并运行 3.现在…

Vue原理学习:vdom 和 diff算法(基于snabbdom)

vdom 和 diff 背景 基于组件化&#xff0c;数据驱动视图。只需关心数据&#xff0c;无需关系 DOM &#xff0c;好事儿。 但是&#xff0c;JS 运行非常快&#xff0c;DOM 操作却非常慢&#xff0c;如何让“数据驱动视图”能快速响应&#xff1f; 引入 vdom 用 vnode 表示真实…

联合新能源汽车有限公司出席2024年7月8日杭州快递物流展

参展企业介绍 青岛联合新能源汽车有限公司&#xff08;简称&#xff1a;联合汽车&#xff09;&#xff0c;是一家专注于纯电动汽车领域创新的科技公司&#xff0c;在国内率先提出车电分离&#xff0c;电池标准化并共享的方案&#xff0c;研发了包含标准电池、电池仓、可换电纯电…

Bootstrap Studio for Mac:打造专业级网页设计软件

对于追求高效与品质的设计师和开发者来说&#xff0c;Bootstrap Studio for Mac无疑是最佳选择。它建立在广受欢迎的Bootstrap框架之上&#xff0c;输出干净、语义化的HTML代码。同时&#xff0c;强大的CSS和SASS编辑器&#xff0c;支持自动建议和规则验证&#xff0c;让您的设…

深度学习500问——Chapter08:目标检测(9)

文章目录 8.5 目标检测的技巧汇总 8.5.1 Data Augmentation 8.5.2 OHEM 8.5.3 NMS&#xff1a;Soft NMS/ Polygon NMS/ Inclined NMS/ ConvNMS/ Yes-Net NMS/ Softer NMS 8.5.4 Multi Scale Training/Testing 8.5.5 建立小物体与context的关系 8.5.6 参考relation network 8.5.…