|
@@ -4,14 +4,23 @@
|
|
|
<div class="main-title">{{ Title }}</div>
|
|
|
<!-- menu区域 -->
|
|
|
<div class="nav-menu">
|
|
|
- <div :class="activeIndex == index ? 'nav-menu-active' : 'nav-menu-unactive'" v-for="(item, index) in menuList"
|
|
|
- :key="index" @click="menuClick(index, item)">
|
|
|
+ <div
|
|
|
+ :class="activeIndex == index ? 'nav-menu-active' : 'nav-menu-unactive'"
|
|
|
+ v-for="(item, index) in menuList"
|
|
|
+ :key="index"
|
|
|
+ @click="menuClick(index, item)"
|
|
|
+ >
|
|
|
<div>{{ item.name }}</div>
|
|
|
<!-- menu-item -->
|
|
|
<div v-if="activeIndex == index && isShowMenuItem && item.MenuItemList.length != 0" class="nav-menu-item">
|
|
|
<div class="nav-menu-content">
|
|
|
- <div :class="menuItemActive == ind ? 'menu-item-active' : 'menu-item-unactive'"
|
|
|
- v-for="(ite, ind) in item.MenuItemList" :key="ind" @click.stop="menuItemClick(ind)">{{ ite.name }}</div>
|
|
|
+ <div
|
|
|
+ :class="menuItemActive == ind ? 'menu-item-active' : 'menu-item-unactive'"
|
|
|
+ v-for="(ite, ind) in item.MenuItemList"
|
|
|
+ :key="ind"
|
|
|
+ @click.stop="menuItemClick(ind)"
|
|
|
+ >{{ ite.name }}</div
|
|
|
+ >
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -19,173 +28,170 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
|
-import { onMounted, onUnmounted, ref, watch, computed } from 'vue';
|
|
|
-let props = defineProps({
|
|
|
- Title: {
|
|
|
- type: String,
|
|
|
- default: ''
|
|
|
- },
|
|
|
- activeIndex:{
|
|
|
- type:Number,
|
|
|
- default:0
|
|
|
+ import { onMounted, onUnmounted, ref, watch, computed } from 'vue';
|
|
|
+ let props = defineProps({
|
|
|
+ Title: {
|
|
|
+ type: String,
|
|
|
+ default: '',
|
|
|
+ },
|
|
|
+ activeIndex: {
|
|
|
+ type: Number,
|
|
|
+ default: 0,
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ let menuList = ref<any[]>([
|
|
|
+ {
|
|
|
+ name: '灾害预警',
|
|
|
+ MenuItemList: [
|
|
|
+ // { name: '光纤测温监测' },
|
|
|
+ // { name: '束管监测' },
|
|
|
+ // { name: '智能注氮系统' },
|
|
|
+ // { name: '智能注浆系统' },
|
|
|
+ // { name: '火灾监测预警' },
|
|
|
+ // { name: '色谱仪报表分析' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ { name: '智能通风', MenuItemList: [] },
|
|
|
+ { name: '火灾监控', MenuItemList: [] },
|
|
|
+ { name: '粉尘监控', MenuItemList: [] },
|
|
|
+ { name: '瓦斯监控', MenuItemList: [] },
|
|
|
+ // { name: '综合管控', MenuItemList: [] },
|
|
|
+ ]); //一级菜单列表
|
|
|
+
|
|
|
+ let isShowMenuItem = ref(false); //是否显示menuItem下拉选项菜单
|
|
|
+ let menuItemActive = ref(0); //menuItem当前激活选项
|
|
|
+ let $emit = defineEmits(['menuToggle']);
|
|
|
+
|
|
|
+ //menu选项切换
|
|
|
+ function menuClick(index, item) {
|
|
|
+ isShowMenuItem.value = !isShowMenuItem.value;
|
|
|
+ //menu切换,界面跳转
|
|
|
+ $emit('menuToggle', item, index);
|
|
|
+ }
|
|
|
+
|
|
|
+ //menuItem选项切换
|
|
|
+ function menuItemClick(ind) {
|
|
|
+ menuItemActive.value = ind;
|
|
|
+ isShowMenuItem.value = false;
|
|
|
}
|
|
|
-})
|
|
|
-
|
|
|
-let menuList = ref<any[]>([
|
|
|
- {
|
|
|
- name: '灾害预警', MenuItemList: [
|
|
|
- // { name: '光纤测温监测' },
|
|
|
- // { name: '束管监测' },
|
|
|
- // { name: '智能注氮系统' },
|
|
|
- // { name: '智能注浆系统' },
|
|
|
- // { name: '火灾监测预警' },
|
|
|
- // { name: '色谱仪报表分析' },
|
|
|
- ]
|
|
|
- },
|
|
|
- { name: '火灾监控', MenuItemList: [] },
|
|
|
- { name: '粉尘监控', MenuItemList: [] },
|
|
|
- { name: '智能通风', MenuItemList: [] },
|
|
|
- { name: '瓦斯监控', MenuItemList: [] },
|
|
|
- { name: '综合管控', MenuItemList: [] },
|
|
|
-])//一级菜单列表
|
|
|
-
|
|
|
-
|
|
|
-let isShowMenuItem = ref(false)//是否显示menuItem下拉选项菜单
|
|
|
-let menuItemActive = ref(0)//menuItem当前激活选项
|
|
|
-let $emit = defineEmits(['menuToggle'])
|
|
|
-
|
|
|
-
|
|
|
-//menu选项切换
|
|
|
-function menuClick(index, item) {
|
|
|
- isShowMenuItem.value = !isShowMenuItem.value
|
|
|
- //menu切换,界面跳转
|
|
|
- $emit('menuToggle',item,index)
|
|
|
-}
|
|
|
-
|
|
|
-//menuItem选项切换
|
|
|
-function menuItemClick(ind) {
|
|
|
- menuItemActive.value = ind
|
|
|
- isShowMenuItem.value = false
|
|
|
-}
|
|
|
</script>
|
|
|
<style lang="less" scoped>
|
|
|
-@import '/@/design/theme.less';
|
|
|
-
|
|
|
-@font-face {
|
|
|
- font-family: 'douyuFont';
|
|
|
- src: url('/@/assets/font/douyuFont.otf');
|
|
|
-}
|
|
|
-
|
|
|
-.green-nav {
|
|
|
- position: relative;
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- background: url('../../../../../assets/images/home-green/green-nav-bg.png') no-repeat;
|
|
|
- background-size: 100% 100%;
|
|
|
-
|
|
|
- .main-title {
|
|
|
- width: 518px;
|
|
|
- height: 100%;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- padding-left: 70px;
|
|
|
- font-family: 'douyuFont';
|
|
|
- font-size: 20px;
|
|
|
- letter-spacing: 2px;
|
|
|
+ @import '/@/design/theme.less';
|
|
|
|
|
|
+ @font-face {
|
|
|
+ font-family: 'douyuFont';
|
|
|
+ src: url('/@/assets/font/douyuFont.otf');
|
|
|
}
|
|
|
|
|
|
- .nav-menu {
|
|
|
- position: absolute;
|
|
|
- top: 0;
|
|
|
- left: 675px;
|
|
|
- width: 880px;
|
|
|
+ .green-nav {
|
|
|
+ position: relative;
|
|
|
+ width: 100%;
|
|
|
height: 100%;
|
|
|
- display: flex;
|
|
|
- justify-content: flex-start;
|
|
|
-
|
|
|
- .nav-menu-active {
|
|
|
- position: relative;
|
|
|
- width: 120px;
|
|
|
- height: 60px;
|
|
|
- line-height: 60px;
|
|
|
- text-align: center;
|
|
|
- margin: 0px 20px;
|
|
|
- font-size: 18px;
|
|
|
- letter-spacing: 2px;
|
|
|
- background: url('../../../../../assets/images/home-green/green-menu-bg.png') no-repeat;
|
|
|
- background-size: 100% 100%;
|
|
|
- }
|
|
|
+ background: url('../../../../../assets/images/home-green/green-nav-bg.png') no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
|
- .nav-menu-unactive {
|
|
|
- position: relative;
|
|
|
- width: 120px;
|
|
|
- height: 60px;
|
|
|
- line-height: 60px;
|
|
|
- text-align: center;
|
|
|
- margin: 0px 10px;
|
|
|
- font-size: 16px;
|
|
|
+ .main-title {
|
|
|
+ width: 518px;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding-left: 70px;
|
|
|
+ font-family: 'douyuFont';
|
|
|
+ font-size: 20px;
|
|
|
letter-spacing: 2px;
|
|
|
- background-size: 100% 100%;
|
|
|
- cursor: pointer;
|
|
|
}
|
|
|
|
|
|
- .nav-menu-item {
|
|
|
+ .nav-menu {
|
|
|
position: absolute;
|
|
|
- left: -34px;
|
|
|
- top: 56px;
|
|
|
- width: 186px;
|
|
|
- height: 273px;
|
|
|
- padding: 28px 12px 12px 12px;
|
|
|
- background: url(/src/assets/images/home-green/green-menu-item.png) no-repeat;
|
|
|
+ top: 0;
|
|
|
+ left: 675px;
|
|
|
+ width: 880px;
|
|
|
+ height: 100%;
|
|
|
display: flex;
|
|
|
- flex-direction: column;
|
|
|
- align-items: center;
|
|
|
- box-sizing: border-box;
|
|
|
-
|
|
|
-
|
|
|
- .nav-menu-content {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- overflow-y: auto;
|
|
|
+ justify-content: flex-start;
|
|
|
+
|
|
|
+ .nav-menu-active {
|
|
|
+ position: relative;
|
|
|
+ width: 120px;
|
|
|
+ height: 60px;
|
|
|
+ line-height: 60px;
|
|
|
+ text-align: center;
|
|
|
+ margin: 0px 20px;
|
|
|
+ font-size: 18px;
|
|
|
+ letter-spacing: 2px;
|
|
|
+ background: url('../../../../../assets/images/home-green/green-menu-bg.png') no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ }
|
|
|
|
|
|
- .menu-item-active {
|
|
|
- width: 100%;
|
|
|
- height: 36px;
|
|
|
- line-height: 36px;
|
|
|
- font-size: 14px;
|
|
|
- background: linear-gradient(to right, transparent, rgba(47, 132, 111), transparent);
|
|
|
- }
|
|
|
+ .nav-menu-unactive {
|
|
|
+ position: relative;
|
|
|
+ width: 120px;
|
|
|
+ height: 60px;
|
|
|
+ line-height: 60px;
|
|
|
+ text-align: center;
|
|
|
+ margin: 0px 10px;
|
|
|
+ font-size: 16px;
|
|
|
+ letter-spacing: 2px;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
|
|
|
- .menu-item-unactive {
|
|
|
+ .nav-menu-item {
|
|
|
+ position: absolute;
|
|
|
+ left: -34px;
|
|
|
+ top: 56px;
|
|
|
+ width: 186px;
|
|
|
+ height: 273px;
|
|
|
+ padding: 28px 12px 12px 12px;
|
|
|
+ background: url(/src/assets/images/home-green/green-menu-item.png) no-repeat;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ .nav-menu-content {
|
|
|
width: 100%;
|
|
|
- height: 40px;
|
|
|
- line-height: 40px;
|
|
|
- font-size: 14px;
|
|
|
+ height: 100%;
|
|
|
+ overflow-y: auto;
|
|
|
+
|
|
|
+ .menu-item-active {
|
|
|
+ width: 100%;
|
|
|
+ height: 36px;
|
|
|
+ line-height: 36px;
|
|
|
+ font-size: 14px;
|
|
|
+ background: linear-gradient(to right, transparent, rgba(47, 132, 111), transparent);
|
|
|
+ }
|
|
|
+
|
|
|
+ .menu-item-unactive {
|
|
|
+ width: 100%;
|
|
|
+ height: 40px;
|
|
|
+ line-height: 40px;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // @keyframes fadeIn {
|
|
|
- // from {
|
|
|
- // opacity: 0;
|
|
|
- // }
|
|
|
-
|
|
|
- // to {
|
|
|
- // opacity: 1;
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- // /* 定义淡出动画 */
|
|
|
- // @keyframes fadeOut {
|
|
|
- // from {
|
|
|
- // opacity: 1;
|
|
|
- // }
|
|
|
-
|
|
|
- // to {
|
|
|
- // opacity: 0;
|
|
|
- // }
|
|
|
- // }
|
|
|
+ // @keyframes fadeIn {
|
|
|
+ // from {
|
|
|
+ // opacity: 0;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // to {
|
|
|
+ // opacity: 1;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // /* 定义淡出动画 */
|
|
|
+ // @keyframes fadeOut {
|
|
|
+ // from {
|
|
|
+ // opacity: 1;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // to {
|
|
|
+ // opacity: 0;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ }
|
|
|
}
|
|
|
-}
|
|
|
</style>
|