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.hqwc.cn/news/702828.html

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

相关文章

AMC8和AMC10竞赛备考,吃透2000-2024年1850道真题和解析

多做真题&#xff0c;吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一&#xff0c;通过做真题&#xff0c;可以帮助孩子找到真实竞赛的感觉&#xff0c;而且更加贴近比赛的内容&#xff0c;可以通过真题查漏补缺&#xff0c;更有针对性的补齐知识的短板。 今天我们继续…

针对实拍场景的虚拟试衣模型IDM-VTON:高保真和细节保留的虚拟试穿算法,真实环境效果领先

前言 虚拟试衣是一种将人物图像与服装图像合成&#xff0c;生成人物穿戴目标服装的图像技术。相比传统的GAN方法&#xff0c;基于扩散模型的虚拟试衣方法能够生成更加自然逼真的图像。然而&#xff0c;现有的扩散模型在保留服装细节方面仍存在局限性。 为了解决这一问题&…

idea配置MySQL提示

点击sql语句&#xff0c;然后再选择show context actions 然后再选择Inject language or reference 然后再选择MySQL 然后我们会发现sql语句变颜色了 如果表是红色 那么需要我们连接mysql的对于的数据库

linux 环境下 分布式文件搭建fastDFS

1.软件信息 地址&#xff1a;happyfish100 (YuQing) GitHub 1.fastdfs-master.zip 2.fastdfs-nginx-module-master.zip 3.libfastcommon-master.zip 4.libserverframe-master.zip yum install make cmake gcc gcc-c perl 2.安装libfastcommon unzip libfastcommon-mast…

图搜索算法-最小生成树问题-克鲁斯卡尔算法(kruskal)

相关文章&#xff1a; 数据结构–图的概念 图搜索算法 - 深度优先搜索法&#xff08;DFS&#xff09; 图搜索算法 - 广度优先搜索法&#xff08;BFS&#xff09; 图搜索算法 - 拓扑排序 图搜索算法-最短路径算法-戴克斯特拉算法 图搜索算法-最短路径算法-贝尔曼-福特算法 最小生…

初识C++ · string的使用(2)

目录 1 Modifiers部分 1.1 assign的使用 1.2 insert的使用 1.3 erase的使用 1.4 replace的使用 2 capacity部分 2.1 max_size的使用 2.2 capacity的使用 2.3 reserve的使用 2.4 shrink_to_fit简介 2.5 resize的使用 2.6 clear的使用 3 String operations部分 3.1 …

【js刷题:数据结构链表之设计链表】

设计链表 一、题目二、题解 一、题目 二、题解 // 定义节点类&#xff0c;每个节点都有一个值和一个指向下一个节点的引用 class LinkNode{constructor(val,next){ // 构造函数&#xff0c;接收节点值和下一个节点的引用this.valval // 节点的值this.nextnext // 指…

视频号视频怎么下载?推荐视频号下载助手机器人工具

本文今天要讲视频号视频怎么下载相关内容&#xff0c;文章中使用了视频号下载助手机器人&#xff0c;建议了解一下。 什么是视频号下载助手机器人? 视频号本身不具备视频下载功能&#xff0c;在微信平台随者软件不断的更新迭代微信视频号早已不在有复制视频号链接功能。 故…

1060 爱丁顿数(测试点5)

solution1&#xff08;测试点5不通过&#xff09; 所谓“E天骑行超过E公里”&#xff0c;注意没有要求是第E天 对于直接判断变成了第E天骑行距离超过E公里&#xff0c;曲解了题意 例如对于 3 1 2 3输出为1 第1天骑行3公里&#xff0c;满足条件&#xff1b;第2天骑行2公里&…

【CTF MISC】XCTF GFSJ0513 pdf Writeup(PDF隐写)

pdf 菜猫给了菜狗一张图&#xff0c;说图下面什么都没有 解法 打开 pdf&#xff0c;只看见一张图片。 用浏览器搜索 flag&#xff0c;发现图片中间藏了一行字。 复制出来&#xff0c;得到 flag。 Flag flag{security_through_obscurity}声明 本博客上发布的所有关于网络攻…

用HAL库改写江科大的stm32入门例子4-1 OLED

大体 步骤&#xff1a; step1&#xff1a;使用STM32CubeMX初始化I2C1&#xff0c;生成初始化代码 step2&#xff1a;将任意一个库导入到工程&#xff0c;配置好编译路径 step3&#xff1a;调用函数即可 IIC原理图&#xff1a; 接线图&#xff1a; 先设置clock&#xff1a; 开…

MHD、MQA、GQA注意力机制详解

MHD、MQA、GQA注意力机制详解 注意力机制详解及代码前言&#xff1a;MHAMQAGQA 注意力机制详解及代码 前言&#xff1a; 自回归解码器推理是 Transformer 模型的 一个严重瓶颈&#xff0c;因为在每个解码步骤中加 载解码器权重以及所有注意键和值会产生 内存带宽开销 下图为三…