| | |
| | | <meta charset="UTF-8"> |
| | | <link rel="icon" href="/favicon.ico"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | | <title>Vite App</title> |
| | | <title>环境监控系统</title> |
| | | </head> |
| | | <body> |
| | | <div id="app" style="box-sizing: border-box; height: 100vh;"></div> |
| | |
| | | import "./assets/style/basic.css"; |
| | | import ElementPlus from "element-plus"; |
| | | import "element-plus/dist/index.css"; |
| | | import * as ElementPlusIconsVue from '@element-plus/icons-vue' |
| | | |
| | | import { createPinia } from 'pinia' |
| | | |
| | | const app = createApp(App); |
| | | |
| | | for (const [key, component] of Object.entries(ElementPlusIconsVue)) { |
| | | app.component(key, component) |
| | | } |
| | | |
| | | |
| | | const pinia = createPinia() |
| | |
| | | export default [ |
| | | { |
| | | path: "/login", |
| | | name: "login", |
| | | component: () => import('../views/login/index.vue') |
| | | }, |
| | | { |
| | | path: "/", |
| | | name: "mainLayout", |
| | | component: () => import('../views/mainLayout/index.vue'), |
| | | redirect: '/home', |
| | | children: [ |
| | | { |
| | | path: "customer", |
| | | name: 'customerMenu', |
| | | children: [ |
| | | { |
| | | path: "customer", |
| | | name: "customer", |
| | | component: () => import('../views/customer/customer.vue') |
| | | }, |
| | | ], |
| | | path: "home", |
| | | name: "home", |
| | | component: () => import("../views/home/index.vue"), |
| | | }, |
| | | { |
| | | path: "accessControl", |
| | | name: 'accessControl', |
| | | component: () => import("../views/accessControl/accessControl.vue"), |
| | | }, |
| | | { |
| | | path: "video", |
| | | name: 'video', |
| | | component: () => import("../views/video/video.vue"), |
| | | }, |
| | | { |
| | | path: "airConditioning", |
| | | name: 'airConditioning', |
| | | component: () => import("../views/airConditioning/airConditioning.vue"), |
| | | }, |
| | | { |
| | | path: "userManagement", |
| | | name: 'userManagement', |
| | | component: () => import("../views/userManagement/userManagement.vue"), |
| | | }, |
| | | { |
| | | path: '/:pathMatch(.*)*', |
| | |
| | | component: () => import('../views/404.vue') |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | | path: "/login", |
| | | name: "login", |
| | | component: () => import('../views/login/index.vue') |
| | | }, |
| | | { |
| | | path: '/:pathMatch(.*)*', |
New file |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div>门禁</div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div>空调</div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | <script setup> |
| | | |
| | | import FlexLayout from "@/components/FlexLayout.vue"; |
| | | </script> |
| | | |
| | | <template> |
| | | <flex-layout> |
| | | <div class="home-content"> |
| | | |
| | | </div> |
| | | </flex-layout> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | .home-content { |
| | | position: relative; |
| | | height: 100%; |
| | | background-image: url("./images/home.png"); |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | </style> |
| | |
| | | <span class="hdw-avatar-icon"> |
| | | <el-icon size="18"><Avatar /></el-icon> |
| | | </span> |
| | | <span class="hdw-avatar-text">霍东伟</span> |
| | | <span class="hdw-avatar-text">admin</span> |
| | | <el-icon size="16"> |
| | | <ArrowUp v-if="isVisible" /> |
| | | <ArrowDown v-else /> |
| | |
| | | <script setup> |
| | | import {computed, ref} from "vue"; |
| | | import usePageMenuStore from "@/store/usePageMenuStore"; |
| | | import { |
| | | Menu as IconMenu, |
| | | Setting, |
| | | } from '@element-plus/icons-vue' |
| | | const pageMenuStore = usePageMenuStore(); |
| | | |
| | | const isCollapse = computed(()=>{ |
| | |
| | | { |
| | | title: "首页", |
| | | path: "/", |
| | | icon: "HomeFilled" |
| | | }, |
| | | { |
| | | title: "客户管理", |
| | | path: "/customer", |
| | | children: [ |
| | | { |
| | | title: "客户档案", |
| | | path: "/customer/customer" |
| | | }, |
| | | { |
| | | title: "拜访记录", |
| | | path: "/customer/visit" |
| | | }, |
| | | ] |
| | | title: "门禁", |
| | | path: "/accessControl", |
| | | icon: "Checked", |
| | | }, |
| | | { |
| | | title: "修养预约", |
| | | path: "business", |
| | | children: [ |
| | | { |
| | | title: "预约信息", |
| | | path: "/business/appointment" |
| | | }, |
| | | { |
| | | title: "服务项", |
| | | path: "/business/service" |
| | | }, |
| | | { |
| | | title: "结算单", |
| | | path: "/business/statement" |
| | | }, |
| | | ] |
| | | title: "视频监控", |
| | | path: "/video", |
| | | icon: "VideoCameraFilled", |
| | | }, |
| | | { |
| | | title: "流程管理", |
| | | path: "/flow", |
| | | children: [ |
| | | { |
| | | title: "审核流程定义", |
| | | path: "/flow/definition" |
| | | }, |
| | | ], |
| | | } |
| | | title: "空调", |
| | | path: "/airConditioning", |
| | | icon: "Postcard", |
| | | }, |
| | | { |
| | | title: "用户管理", |
| | | path: "/userManagement", |
| | | icon: "UserFilled" |
| | | }, |
| | | ]; |
| | | |
| | | const handleOpen = ()=>{}; |
| | |
| | | <template v-for="menu in menuData" :key="menu.path"> |
| | | <el-sub-menu :index="menu.path" v-if="menu.children"> |
| | | <template #title> |
| | | <el-icon><icon-menu /></el-icon> |
| | | <el-icon> |
| | | <component :is="menu.icon"></component> |
| | | </el-icon> |
| | | <span>{{menu.title}}</span> |
| | | </template> |
| | | <el-menu-item |
| | |
| | | :index="children.path">{{children.title}}</el-menu-item> |
| | | </el-sub-menu> |
| | | <el-menu-item :index="menu.path" v-else> |
| | | <el-icon><icon-menu /></el-icon> |
| | | <el-icon> |
| | | <component :is="menu.icon"></component> |
| | | </el-icon> |
| | | <template #title>{{menu.title}}</template> |
| | | </el-menu-item> |
| | | </template> |
| | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | .page-content { |
| | | height: 100%; |
| | | } |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div>用户管理</div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div>视频监控</div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |