| | |
| | | @font-color: #021a64; |
| | | @font-color-high-light: #00feff; |
| | | @font-color-primary: #4ba1fa; |
| | | @font-color-warning: #FFE329; |
| | | @border-color: #037fab; |
New file |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="card-box-wrapper"> |
| | | <div class="card-box-header"> |
| | | <slot name="header"></slot> |
| | | </div> |
| | | <div class="card-box-body"> |
| | | <slot></slot> |
| | | </div> |
| | | <div class="card-box-footer"> |
| | | <slot name="footer"></slot> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style lang="less" scoped> |
| | | .card-box-wrapper { |
| | | display: flex; |
| | | flex-direction: column; |
| | | border: 2px solid @border-color; |
| | | background-color: #0b388a; |
| | | color: @font-color-warning; |
| | | .card-box-body { |
| | | flex: 1; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | component: () => import("../views/userManagement/userManagement.vue"), |
| | | }, |
| | | { |
| | | path: "asset/accessControl", |
| | | name: "accessControlAsset", |
| | | component: ()=>import('../views/assetManagement/accessControlAsset.vue'), |
| | | }, |
| | | { |
| | | path: "asset/air", |
| | | name: "airAsset", |
| | | component: ()=>import('../views/assetManagement/airConditioningAsset.vue'), |
| | | }, |
| | | { |
| | | path: "asset/video", |
| | | name: "videoAsset", |
| | | component: ()=>import('../views/assetManagement/videoAsset.vue'), |
| | | }, |
| | | { |
| | | path: '/:pathMatch(.*)*', |
| | | name: "", |
| | | component: () => import('../views/404.vue') |
New file |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div>门禁资产管理</div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div>空调资产管理</div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div>123</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"; |
| | | import CardBox from "@/components/CardBox.vue"; |
| | | import {ref} from "vue"; |
| | | |
| | | const homeInfo = ref([]); |
| | | for(let i=1; i<10; i++) { |
| | | homeInfo.value.push({ |
| | | name: "#"+i+"室", |
| | | temp: 32, |
| | | hum: 7, |
| | | diffPre: 1 |
| | | }); |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <flex-layout> |
| | | <div class="home-content"> |
| | | <div class="card-box-list"> |
| | | <div |
| | | class="card-box-item" |
| | | v-for="(item, index) in homeInfo" :key="'key'+index"> |
| | | <card-box> |
| | | <div class="home-info-list"> |
| | | <div class="home-info-item"> |
| | | {{ item.name }}温度:{{ item.temp }} |
| | | </div> |
| | | <div class="home-info-item"> |
| | | {{ item.name }}湿度:{{ item.hum }} |
| | | </div> |
| | | <div class="home-info-item"> |
| | | {{ item.name }}压差:{{ item.diffPre }} |
| | | </div> |
| | | </div> |
| | | </card-box> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </flex-layout> |
| | |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .card-box-list { |
| | | text-align: center; |
| | | .card-box-item { |
| | | display: inline-block; |
| | | margin-left: 16px; |
| | | } |
| | | } |
| | | |
| | | .home-info-list { |
| | | padding: 8px; |
| | | } |
| | | </style> |
| | |
| | | import {computed, ref, watchEffect} from "vue"; |
| | | import usePageMenuStore from "@/store/usePageMenuStore"; |
| | | import FlexLayout from "@/components/FlexLayout.vue"; |
| | | import {useRoute} from "vue-router"; |
| | | const route = useRoute(); |
| | | |
| | | const pageMenuStore = usePageMenuStore(); |
| | | |
| | | const isCollapse = computed(()=>{ |
| | |
| | | }); |
| | | |
| | | const isOpen = ref(!isCollapse.value); |
| | | const menuActive = ref("/"); |
| | | const menuActive = ref(route.path); |
| | | const menuData = ref([]); |
| | | menuData.value = [ |
| | | { |
| | | title: "首页", |
| | | path: "/", |
| | | path: "/home", |
| | | icon: "HomeFilled" |
| | | }, |
| | | { |
| | |
| | | icon: "Checked", |
| | | }, |
| | | { |
| | | title: "视频监控", |
| | | path: "/video", |
| | | icon: "VideoCameraFilled", |
| | | }, |
| | | { |
| | | title: "空调", |
| | | path: "/airConditioning", |
| | | icon: "Postcard", |
| | | }, |
| | | { |
| | | title: "视频监控", |
| | | path: "/video", |
| | | icon: "VideoCameraFilled", |
| | | }, |
| | | { |
| | | title: "用户管理", |
| | | path: "/userManagement", |
| | | icon: "UserFilled" |
| | | }, |
| | | { |
| | | title: "资产管理", |
| | | path: "/asset", |
| | | icon: "School", |
| | | children: [ |
| | | { |
| | | title: "门禁资产管理", |
| | | path: "/asset/accessControl", |
| | | }, |
| | | { |
| | | title: "空调资产管理", |
| | | path: "/asset/air", |
| | | }, |
| | | { |
| | | title: "视频监控资产管理", |
| | | path: "/asset/video", |
| | | } |
| | | ] |
| | | }, |
| | | ]; |
| | | |
| | | const handleOpen = ()=>{ |
| | | isOpen.value = true; |
| | | |
| | | }; |
| | | |
| | | watchEffect(()=>{ |
| | | if(isCollapse.value) { |
| | | isOpen.value = false; |
| | | }else { |
| | | setTimeout(()=>{ |
| | | isOpen.value = true; |
| | | }, 300); |
| | | } |
| | | }); |
| | | </script> |
| | |
| | | min-height: 400px; |
| | | } |
| | | .sys-logo { |
| | | padding: 6px 0 6px 16px; |
| | | user-select: none; |
| | | padding: 16px 0 16px 16px; |
| | | .logo-img { |
| | | display: inline-block; |
| | | height: 28px; |
| | |
| | | vue(), |
| | | WindiCSS(), |
| | | ], |
| | | server: { |
| | | host: '0.0.0.0' |
| | | }, |
| | | resolve: { |
| | | alias: { |
| | | '@': fileURLToPath(new URL('./src', import.meta.url)) |