Browse Source

头部代码提交

sunzehao 4 months ago
parent
commit
fa5196ee3f
1 changed files with 353 additions and 0 deletions
  1. 353 0
      src/views/layout/tabHeader.vue

+ 353 - 0
src/views/layout/tabHeader.vue

@@ -0,0 +1,353 @@
+<template>
+    <div class="header-menu">
+        <ul class="header-menu-list">
+            <li class="header-menu-item" v-for="(menu, index) of currMenu" :key="menu" @click="click(index, menu)"
+                :class="{ active: activeIndex == index }">
+                {{ menu.text }}
+            </li>
+        </ul>
+    </div>
+</template>
+<script>
+    import $ from "jquery";
+    import {
+        getCookie
+    } from "@/utills/auth";
+    import tools from "../../tools/encryption.js";
+    import {
+        logout
+    } from "@/api/common.js";
+    import {
+        encrypt,
+        decrypt
+    } from "@/utills/jsencrypt.js";
+    import SvgIcon from "@/components/coms/icon/svg-icon.vue";
+    export default {
+        data() {
+            return {
+                themeName: false,
+                menus: [{
+                        id: "home",
+                        text: "首页",
+                        path: "/home",
+                        isActive: true,
+                    },
+                    {
+                        id: "stateMonitor",
+                        text: "监视中心",
+                        path: "/stateMonitor",
+                        isActive: true,
+                    },
+                    {
+                        id: "integratedAlarm",
+                        text: "综合报警",
+                        path: "/integratedAlarm",
+                        isActive: true,
+                    },
+                    {
+                        id: "economicsOperation",
+                        text: "经济运行",
+                        path: "/economicsOperation",
+                        isActive: false,
+                    },
+                    {
+                        id: "health",
+                        text: "智慧检修",
+                        // path: '/sandtable',
+                        path: "/health",
+                        isActive: false,
+                    },
+                    {
+                        id: "powerGenerating",
+                        text: "发电能力分析",
+                        // path: '/sandtable',
+                        path: "/powerGenerating",
+                        isActive: false,
+                    },
+                    {
+                        id: "report",
+                        text: "智能报表",
+                        path: "/nxreport",
+                        isActive: false,
+                    },
+                ],
+                activeIndex: 0,
+                // menusDropdown: [
+                //   {
+                //     text: "子菜单1",
+                //     code: "submenu1",
+                //   },
+                //   {
+                //     text: "子菜单2",
+                //     code: "submenu2",
+                //   },
+                //   {
+                //     text: "子菜单3",
+                //     code: "submenu3",
+                //   },
+                // ],
+                // dropdown: false,
+                firsttime: 0,
+            };
+        },
+        components: {
+            SvgIcon
+        },
+        mounted() {
+            // let that = this;
+            // $(document).keydown((event) => {
+            //   if (event.keyCode == 192) {
+            //     // c
+            //     // let firstDate = new Date();
+            //     // if (that.firsttime == 0) {
+            //     //   that.firsttime = firstDate.getTime();
+            //     // } else {
+            //     //   var lastDate = new Date();
+            //     //   var lastTime = lastDate.getTime();
+            //     //   if (lastTime - that.firsttime < 1000) {
+            //     //     that.changeTheme();
+            //     //     that.firsttime = 0;
+            //     //   }
+            //     // }
+            //     that.changeTheme();
+            //   }
+            // });
+        },
+        computed: {
+            userName() {
+                return getCookie("username") || this.$store.state.user.username;
+            },
+            // activeClass(data) {
+            //   return data.isActive ? "active" : "";
+            // },
+            currMenu() {
+                let stateRoutes = this.$store.state.routes.routes;
+                let currMenu = [];
+                if (stateRoutes.length) {
+                    stateRoutes.forEach((route) => {
+                        if (route.path !== "/login" && route.path !== "/") {
+                            currMenu.push({
+                                id: route.name,
+                                text: route.meta.title,
+                                path: route.path,
+                                isActive: false,
+                            });
+                        }
+                    });
+                    // currMenu.splice(2, 0, {
+                    //   id: "zhbj",
+                    //   text: "综合报警",
+                    //   path: "",
+                    // });
+                    // currMenu.splice(5, 0, {
+                    //   id: "fdfx",
+                    //   text: "发电能力分析",
+                    //   path: "",
+                    // });
+                    // currMenu.push();
+                    return currMenu;
+                } else {
+                    return [];
+                }
+            },
+        },
+        methods: {
+            click(index, data) {
+                if (data.id === "zhbj") {
+                    let jiami = encrypt(getCookie("jiami")).replace(/\+/g, " ");
+
+                    // let url = `http://192.168.1.117:3002/#/check?username=${getCookie(
+                    //   "username"
+                    // )}&jiami=${jiami}`;
+                    let url = `http://10.81.3.154:8083/#/check?username=${getCookie(
+          "username"
+        )}&jiami=${jiami}`;
+                    window.open(url);
+                    return;
+                } else if (data.id === "fdfx") {
+                    let jiami = encrypt(getCookie("jiami")).replace(/\+/g, " ");
+
+                    // let url = `http://192.168.1.117:3002/#/check?username=${getCookie(
+                    //   "username"
+                    // )}&jiami=${jiami}`;
+                    let url = `http://10.81.3.155:8083/dlfx/#/check?username=${getCookie(
+          "username"
+        )}&jiami=${jiami}`;
+                    window.open(url);
+                    return;
+                }
+                this.activeIndex = index;
+                this.$router.push(data.path);
+                const ActiveModule = this.currMenu.find((ele) => {
+                    return ele.path === data.path;
+                });
+                if (ActiveModule) {
+                    this.$store.dispatch("changeModuleName", ActiveModule.text);
+                }
+            },
+            clickSubMenu(index, code) {},
+            clickMenu() {
+                this.dropdown = !this.dropdown;
+            },
+            changeTheme() {
+                $("#appBody").toggleClass("dark light");
+                this.$store.dispatch("changeTheme", $("#appBody").attr("class"));
+                this.$store.state.themeName === "dark" ?
+                    (this.themeName = false) :
+                    (this.themeName = true);
+                localStorage.setItem("themeName", this.$store.state.themeName);
+            },
+            handleCommand(command) {
+                if (command == "logout") {
+                    logout({
+                        token: getCookie("authToken"),
+                        userId: getCookie("userId"),
+                    }).then((res) => {
+                        this.$store.commit("user/REMOVE_TOKEN");
+                        this.$store.commit("changeStationAll", []);
+                        this.$router.push("/login");
+                    });
+                }
+            },
+            // 跳转到管理系统
+            goToAdmin() {
+                let jiami = encrypt(getCookie("jiami")).replace(/\+/g, " ");
+
+                // let url = `http://192.168.1.104:80/#/check?username=${getCookie(
+                let url = `http://10.81.3.127:8083/#/check?username=${getCookie(
+        "username"
+      )}&jiami=${jiami}`;
+                window.open(url);
+            },
+        },
+
+        watch: {
+            $route: {
+                handler: function (val, oldVal) {
+                    if (this.currMenu.length) {
+                        this.currMenu.some((t, index) => {
+                            if (val.path.includes(t.id)) {
+                                this.activeIndex = index;
+                                const ActiveModule = this.currMenu.find((ele) => {
+                                    return ele.path === t.path;
+                                });
+                                if (ActiveModule) {
+                                    this.$store.dispatch("changeModuleName", ActiveModule.text);
+                                }
+                            }
+                        });
+                    }
+                },
+                //深度观察监听
+                deep: true,
+            },
+        },
+    };
+</script>
+<style>
+    .admin-set-tooltip {
+        font-size: 14px !important;
+    }
+</style>
+<style lang="less" scoped>
+    .header-menu {
+        display: flex;
+        width: 100%;
+        height: 100%;
+        font-size: @fontsize;
+        justify-content: flex-start;
+        padding-left: 20px;
+
+        .header-menu-list {
+            margin: 0;
+            padding: 0;
+            list-style: none;
+            display: flex;
+            height: 100%;
+
+            .header-menu-item {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                padding: 0 15px;
+                //   width: 9.259vh;
+                height: 100%;
+                color: @font-color;
+                cursor: pointer;
+                transition: color 0.2s ease-in-out;
+
+                &.active {
+                    color: @green;
+                    position: relative;
+                    background: @greenLinearTop;
+                    transition: color 0.2s ease-in-out;
+
+                    &::after {
+                        content: "";
+                        position: absolute;
+                        width: 100%;
+                        height: 3px;
+                        border: 1px solid @green;
+                        border-top: 0;
+                        left: 0;
+                        bottom: 0;
+                        box-sizing: border-box;
+                    }
+                }
+            }
+        }
+
+        .header-menu-user {
+            width: 10%;
+            height: 100%;
+            margin: 0;
+            padding: 0;
+            list-style: none;
+            display: flex;
+            align-items: center;
+
+            .header-menu-user-title {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                width: 100%;
+                height: 100%;
+                color: @gray;
+                cursor: pointer;
+
+                i {
+                    margin: 0 5px;
+
+                    font-size: 16px;
+                }
+
+                .el-dropdown-link {
+                    color: #05bb4c;
+                    font-size: 16px;
+                }
+            }
+        }
+    }
+
+    .warning {
+        display: flex;
+        align-items: center;
+        color: #7a8385;
+    }
+
+    .dropdown {
+        .el-dropdown-menu {
+            background: #111d1c;
+            border-radius: 3px;
+
+            .el-dropdown-menu__item {
+                color: #dfeef1;
+                font-size: 14px !important;
+
+                &:hover {
+                    color: #05bb4c;
+                }
+            }
+        }
+    }
+</style>