wangtao il y a 2 ans
Parent
commit
dd32bb288f
9 fichiers modifiés avec 967 ajouts et 952 suppressions
  1. 9 8
      .env.development
  2. 11 10
      .env.production
  3. 11 10
      .env.staging
  4. 211 209
      index.html
  5. 44 44
      package.json
  6. 4 3
      src/components/business/seHeader/index.vue
  7. 81 80
      src/layout/components/Sidebar/Logo.vue
  8. 131 123
      src/router/index.js
  9. 465 465
      src/views/index.vue

+ 9 - 8
.env.development

@@ -1,8 +1,9 @@
-# 页面标题
-VITE_APP_TITLE = "派米雷·佘山智地智慧园区"
-
-# 开发环境配置
-VITE_APP_ENV = 'development'
-
-# 管理系统/开发环境
-VITE_APP_BASE_API = '/dev-api'
+# 页面标题
+# VITE_APP_TITLE = "派米雷·佘山智地智慧园区"
+VITE_APP_TITLE = "智慧楼宇综合平台"
+
+# 开发环境配置
+VITE_APP_ENV = 'development'
+
+# 管理系统/开发环境
+VITE_APP_BASE_API = '/dev-api'

+ 11 - 10
.env.production

@@ -1,11 +1,12 @@
-# 页面标题
-VITE_APP_TITLE = "派米雷·佘山智地智慧园区"
-
-# 生产环境配置
-VITE_APP_ENV = 'production'
-
-# 管理系统/生产环境
-VITE_APP_BASE_API = '/prod-api'
-
-# 是否在打包时开启压缩,支持 gzip 和 brotli
+# 页面标题
+# VITE_APP_TITLE = "派米雷·佘山智地智慧园区"
+VITE_APP_TITLE = "智慧楼宇综合平台"
+
+# 生产环境配置
+VITE_APP_ENV = 'production'
+
+# 管理系统/生产环境
+VITE_APP_BASE_API = '/prod-api'
+
+# 是否在打包时开启压缩,支持 gzip 和 brotli
 VITE_BUILD_COMPRESS = gzip

+ 11 - 10
.env.staging

@@ -1,11 +1,12 @@
-# 页面标题
-VITE_APP_TITLE = 派米雷智慧楼宇
-
-# 生产环境配置
-VITE_APP_ENV = 'staging'
-
-# 管理系统/生产环境
-VITE_APP_BASE_API = '/stage-api'
-
-# 是否在打包时开启压缩,支持 gzip 和 brotli
+# 页面标题
+# VITE_APP_TITLE = 派米雷智慧楼宇
+VITE_APP_TITLE = 智慧楼宇综合平台
+
+# 生产环境配置
+VITE_APP_ENV = 'staging'
+
+# 管理系统/生产环境
+VITE_APP_BASE_API = '/stage-api'
+
+# 是否在打包时开启压缩,支持 gzip 和 brotli
 VITE_BUILD_COMPRESS = gzip

+ 211 - 209
index.html

@@ -1,210 +1,212 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="renderer" content="webkit">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
-    <link rel="icon" href="/favicon.ico">
-    <title>派米雷·佘山智地智慧园区</title>
-    <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
-    <style>
-        html,
-        body,
-        #app {
-            height: 100%;
-            margin: 0px;
-            padding: 0px;
-        }
-        
-        .chromeframe {
-            margin: 0.2em 0;
-            background: #ccc;
-            color: #000;
-            padding: 0.2em 0;
-        }
-        
-        #loader-wrapper {
-            position: fixed;
-            top: 0;
-            left: 0;
-            width: 100%;
-            height: 100%;
-            z-index: 999999;
-        }
-        
-        #loader {
-            display: block;
-            position: relative;
-            left: 50%;
-            top: 50%;
-            width: 150px;
-            height: 150px;
-            margin: -75px 0 0 -75px;
-            border-radius: 50%;
-            border: 3px solid transparent;
-            border-top-color: #FFF;
-            -webkit-animation: spin 2s linear infinite;
-            -ms-animation: spin 2s linear infinite;
-            -moz-animation: spin 2s linear infinite;
-            -o-animation: spin 2s linear infinite;
-            animation: spin 2s linear infinite;
-            z-index: 1001;
-        }
-        
-        #loader:before {
-            content: "";
-            position: absolute;
-            top: 5px;
-            left: 5px;
-            right: 5px;
-            bottom: 5px;
-            border-radius: 50%;
-            border: 3px solid transparent;
-            border-top-color: #FFF;
-            -webkit-animation: spin 3s linear infinite;
-            -moz-animation: spin 3s linear infinite;
-            -o-animation: spin 3s linear infinite;
-            -ms-animation: spin 3s linear infinite;
-            animation: spin 3s linear infinite;
-        }
-        
-        #loader:after {
-            content: "";
-            position: absolute;
-            top: 15px;
-            left: 15px;
-            right: 15px;
-            bottom: 15px;
-            border-radius: 50%;
-            border: 3px solid transparent;
-            border-top-color: #FFF;
-            -moz-animation: spin 1.5s linear infinite;
-            -o-animation: spin 1.5s linear infinite;
-            -ms-animation: spin 1.5s linear infinite;
-            -webkit-animation: spin 1.5s linear infinite;
-            animation: spin 1.5s linear infinite;
-        }
-        
-        @-webkit-keyframes spin {
-            0% {
-                -webkit-transform: rotate(0deg);
-                -ms-transform: rotate(0deg);
-                transform: rotate(0deg);
-            }
-            100% {
-                -webkit-transform: rotate(360deg);
-                -ms-transform: rotate(360deg);
-                transform: rotate(360deg);
-            }
-        }
-        
-        @keyframes spin {
-            0% {
-                -webkit-transform: rotate(0deg);
-                -ms-transform: rotate(0deg);
-                transform: rotate(0deg);
-            }
-            100% {
-                -webkit-transform: rotate(360deg);
-                -ms-transform: rotate(360deg);
-                transform: rotate(360deg);
-            }
-        }
-        
-        #loader-wrapper .loader-section {
-            position: fixed;
-            top: 0;
-            width: 51%;
-            height: 100%;
-            background: #000;
-            z-index: 1000;
-            -webkit-transform: translateX(0);
-            -ms-transform: translateX(0);
-            transform: translateX(0);
-        }
-        
-        #loader-wrapper .loader-section.section-left {
-            left: 0;
-        }
-        
-        #loader-wrapper .loader-section.section-right {
-            right: 0;
-        }
-        
-        .loaded #loader-wrapper .loader-section.section-left {
-            -webkit-transform: translateX(-100%);
-            -ms-transform: translateX(-100%);
-            transform: translateX(-100%);
-            -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-            transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-        }
-        
-        .loaded #loader-wrapper .loader-section.section-right {
-            -webkit-transform: translateX(100%);
-            -ms-transform: translateX(100%);
-            transform: translateX(100%);
-            -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-            transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-        }
-        
-        .loaded #loader {
-            opacity: 0;
-            -webkit-transition: all 0.3s ease-out;
-            transition: all 0.3s ease-out;
-        }
-        
-        .loaded #loader-wrapper {
-            visibility: hidden;
-            -webkit-transform: translateY(-100%);
-            -ms-transform: translateY(-100%);
-            transform: translateY(-100%);
-            -webkit-transition: all 0.3s 1s ease-out;
-            transition: all 0.3s 1s ease-out;
-        }
-        
-        .no-js #loader-wrapper {
-            display: none;
-        }
-        
-        .no-js h1 {
-            color: #222222;
-        }
-        
-        #loader-wrapper .load_title {
-            font-family: 'Open Sans';
-            color: #FFF;
-            font-size: 19px;
-            width: 100%;
-            text-align: center;
-            z-index: 9999999999999;
-            position: absolute;
-            top: 60%;
-            opacity: 1;
-            line-height: 30px;
-        }
-        
-        #loader-wrapper .load_title span {
-            font-weight: normal;
-            font-style: italic;
-            font-size: 13px;
-            color: #FFF;
-            opacity: 0.5;
-        }
-    </style>
-</head>
-
-<body>
-    <div id="app">
-        <!-- <div id="loader-wrapper">
-            <div id="loader"></div>
-            <div class="loader-section section-left"></div>
-            <div class="loader-section section-right"></div>
-            <div class="load_title">正在加载系统资源,请耐心等待</div>
-        </div> -->
-    </div>
-    <script type="module" src="/src/main.js"></script>
-</body>
-
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="renderer" content="webkit">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+    <!-- <link rel="icon" href="/favicon.ico"> -->
+    <!-- <title>派米雷·佘山智地智慧园区</title> -->
+    <title>智慧楼宇综合平台</title>
+
+    <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
+    <style>
+        html,
+        body,
+        #app {
+            height: 100%;
+            margin: 0px;
+            padding: 0px;
+        }
+        
+        .chromeframe {
+            margin: 0.2em 0;
+            background: #ccc;
+            color: #000;
+            padding: 0.2em 0;
+        }
+        
+        #loader-wrapper {
+            position: fixed;
+            top: 0;
+            left: 0;
+            width: 100%;
+            height: 100%;
+            z-index: 999999;
+        }
+        
+        #loader {
+            display: block;
+            position: relative;
+            left: 50%;
+            top: 50%;
+            width: 150px;
+            height: 150px;
+            margin: -75px 0 0 -75px;
+            border-radius: 50%;
+            border: 3px solid transparent;
+            border-top-color: #FFF;
+            -webkit-animation: spin 2s linear infinite;
+            -ms-animation: spin 2s linear infinite;
+            -moz-animation: spin 2s linear infinite;
+            -o-animation: spin 2s linear infinite;
+            animation: spin 2s linear infinite;
+            z-index: 1001;
+        }
+        
+        #loader:before {
+            content: "";
+            position: absolute;
+            top: 5px;
+            left: 5px;
+            right: 5px;
+            bottom: 5px;
+            border-radius: 50%;
+            border: 3px solid transparent;
+            border-top-color: #FFF;
+            -webkit-animation: spin 3s linear infinite;
+            -moz-animation: spin 3s linear infinite;
+            -o-animation: spin 3s linear infinite;
+            -ms-animation: spin 3s linear infinite;
+            animation: spin 3s linear infinite;
+        }
+        
+        #loader:after {
+            content: "";
+            position: absolute;
+            top: 15px;
+            left: 15px;
+            right: 15px;
+            bottom: 15px;
+            border-radius: 50%;
+            border: 3px solid transparent;
+            border-top-color: #FFF;
+            -moz-animation: spin 1.5s linear infinite;
+            -o-animation: spin 1.5s linear infinite;
+            -ms-animation: spin 1.5s linear infinite;
+            -webkit-animation: spin 1.5s linear infinite;
+            animation: spin 1.5s linear infinite;
+        }
+        
+        @-webkit-keyframes spin {
+            0% {
+                -webkit-transform: rotate(0deg);
+                -ms-transform: rotate(0deg);
+                transform: rotate(0deg);
+            }
+            100% {
+                -webkit-transform: rotate(360deg);
+                -ms-transform: rotate(360deg);
+                transform: rotate(360deg);
+            }
+        }
+        
+        @keyframes spin {
+            0% {
+                -webkit-transform: rotate(0deg);
+                -ms-transform: rotate(0deg);
+                transform: rotate(0deg);
+            }
+            100% {
+                -webkit-transform: rotate(360deg);
+                -ms-transform: rotate(360deg);
+                transform: rotate(360deg);
+            }
+        }
+        
+        #loader-wrapper .loader-section {
+            position: fixed;
+            top: 0;
+            width: 51%;
+            height: 100%;
+            background: #000;
+            z-index: 1000;
+            -webkit-transform: translateX(0);
+            -ms-transform: translateX(0);
+            transform: translateX(0);
+        }
+        
+        #loader-wrapper .loader-section.section-left {
+            left: 0;
+        }
+        
+        #loader-wrapper .loader-section.section-right {
+            right: 0;
+        }
+        
+        .loaded #loader-wrapper .loader-section.section-left {
+            -webkit-transform: translateX(-100%);
+            -ms-transform: translateX(-100%);
+            transform: translateX(-100%);
+            -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+            transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+        }
+        
+        .loaded #loader-wrapper .loader-section.section-right {
+            -webkit-transform: translateX(100%);
+            -ms-transform: translateX(100%);
+            transform: translateX(100%);
+            -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+            transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+        }
+        
+        .loaded #loader {
+            opacity: 0;
+            -webkit-transition: all 0.3s ease-out;
+            transition: all 0.3s ease-out;
+        }
+        
+        .loaded #loader-wrapper {
+            visibility: hidden;
+            -webkit-transform: translateY(-100%);
+            -ms-transform: translateY(-100%);
+            transform: translateY(-100%);
+            -webkit-transition: all 0.3s 1s ease-out;
+            transition: all 0.3s 1s ease-out;
+        }
+        
+        .no-js #loader-wrapper {
+            display: none;
+        }
+        
+        .no-js h1 {
+            color: #222222;
+        }
+        
+        #loader-wrapper .load_title {
+            font-family: 'Open Sans';
+            color: #FFF;
+            font-size: 19px;
+            width: 100%;
+            text-align: center;
+            z-index: 9999999999999;
+            position: absolute;
+            top: 60%;
+            opacity: 1;
+            line-height: 30px;
+        }
+        
+        #loader-wrapper .load_title span {
+            font-weight: normal;
+            font-style: italic;
+            font-size: 13px;
+            color: #FFF;
+            opacity: 0.5;
+        }
+    </style>
+</head>
+
+<body>
+    <div id="app">
+        <!-- <div id="loader-wrapper">
+            <div id="loader"></div>
+            <div class="loader-section section-left"></div>
+            <div class="loader-section section-right"></div>
+            <div class="load_title">正在加载系统资源,请耐心等待</div>
+        </div> -->
+    </div>
+    <script type="module" src="/src/main.js"></script>
+</body>
+
 </html>

+ 44 - 44
package.json

@@ -1,45 +1,45 @@
-{
-    "name": "pml",
-    "version": "3.5.0",
-    "description": "派米雷.佘山智地智慧园区",
-    "author": "",
-    "license": "MIT",
-    "scripts": {
-        "dev": "vite",
-        "build:prod": "vite build",
-        "build:stage": "vite build --mode staging",
-        "preview": "vite preview"
-    },
-    "repository": {
-        "type": "git",
-        "url": "https://gitee.com/y_project/RuoYi-Cloud.git"
-    },
-    "dependencies": {
-        "@element-plus/icons-vue": "1.1.4",
-        "@vueuse/core": "8.5.0",
-        "axios": "0.26.1",
-        "echarts": "5.3.2",
-        "element-plus": "2.1.8",
-        "file-saver": "2.0.5",
-        "fuse.js": "6.5.3",
-        "js-cookie": "3.0.1",
-        "jsencrypt": "3.2.1",
-        "nprogress": "0.2.0",
-        "pinia": "2.0.14",
-        "postcss-pxtorem": "^6.0.0",
-        "screen-scale": "^1.0.1",
-        "vue": "3.2.31",
-        "vue-cropper": "1.0.3",
-        "vue-router": "4.0.14"
-    },
-    "devDependencies": {
-        "@vitejs/plugin-vue": "2.3.3",
-        "@vue/compiler-sfc": "3.2.36",
-        "sass": "1.52.1",
-        "unplugin-auto-import": "0.8.5",
-        "vite": "^2.9.9",
-        "vite-plugin-compression": "0.5.1",
-        "vite-plugin-svg-icons": "2.0.1",
-        "vite-plugin-vue-setup-extend": "0.4.0"
-    }
+{
+    "name": "pml",
+    "version": "3.5.0",
+    "description": "智慧楼宇综合平台",
+    "author": "",
+    "license": "MIT",
+    "scripts": {
+        "dev": "vite",
+        "build:prod": "vite build",
+        "build:stage": "vite build --mode staging",
+        "preview": "vite preview"
+    },
+    "repository": {
+        "type": "git",
+        "url": "https://gitee.com/y_project/RuoYi-Cloud.git"
+    },
+    "dependencies": {
+        "@element-plus/icons-vue": "1.1.4",
+        "@vueuse/core": "8.5.0",
+        "axios": "0.26.1",
+        "echarts": "5.3.2",
+        "element-plus": "2.1.8",
+        "file-saver": "2.0.5",
+        "fuse.js": "6.5.3",
+        "js-cookie": "3.0.1",
+        "jsencrypt": "3.2.1",
+        "nprogress": "0.2.0",
+        "pinia": "2.0.14",
+        "postcss-pxtorem": "^6.0.0",
+        "screen-scale": "^1.0.1",
+        "vue": "3.2.31",
+        "vue-cropper": "1.0.3",
+        "vue-router": "4.0.14"
+    },
+    "devDependencies": {
+        "@vitejs/plugin-vue": "2.3.3",
+        "@vue/compiler-sfc": "3.2.36",
+        "sass": "1.52.1",
+        "unplugin-auto-import": "0.8.5",
+        "vite": "^2.9.9",
+        "vite-plugin-compression": "0.5.1",
+        "vite-plugin-svg-icons": "2.0.1",
+        "vite-plugin-vue-setup-extend": "0.4.0"
+    }
 }

+ 4 - 3
src/components/business/seHeader/index.vue

@@ -7,12 +7,13 @@
       <el-col :span="24" class="time">{{ date }}</el-col>
     </el-col>
     <el-col :span="12">
-      <el-col :span="24" class="title">派米雷·佘山智地智慧园区</el-col>
+      <!-- <el-col :span="24" class="title">派米雷·佘山智地智慧园区</el-col> -->
+      <el-col :span="24" class="title">智慧楼宇综合平台</el-col>
     </el-col>
     <el-col :span="6">
-      <el-col :span="24" class="logo">
+      <!-- <el-col :span="24" class="logo">
         <el-image :src="`/assets/logo/logo-b.png`" fit="scale-down"> </el-image>
-      </el-col>
+      </el-col> -->
       <el-col :span="24" class="weather" v-if="tq">
         <el-col :span="24" class="wd">
           {{ tq }} 

+ 81 - 80
src/layout/components/Sidebar/Logo.vue

@@ -1,81 +1,82 @@
-<template>
-  <div class="sidebar-logo-container" :class="{ 'collapse': collapse }" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
-    <transition name="sidebarLogoFade">
-      <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
-        <img v-if="logo" :src="logo" class="sidebar-logo" />
-        <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1>
-      </router-link>
-      <router-link v-else key="expand" class="sidebar-logo-link" to="/">
-        <img v-if="logo" :src="logo" class="sidebar-logo" />
-        <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1>
-      </router-link>
-    </transition>
-  </div>
-</template>
-
-<script setup>
-import variables from '@/assets/styles/variables.module.scss'
-import logo from '@/assets/logo/logo.png'
-import useSettingsStore from '@/store/modules/settings'
-
-defineProps({
-  collapse: {
-    type: Boolean,
-    required: true
-  }
-})
-
-const title = ref('派米雷智慧楼宇');
-const settingsStore = useSettingsStore();
-const sideTheme = computed(() => settingsStore.sideTheme);
-</script>
-
-<style lang="scss" scoped>
-.sidebarLogoFade-enter-active {
-  transition: opacity 1.5s;
-}
-
-.sidebarLogoFade-enter,
-.sidebarLogoFade-leave-to {
-  opacity: 0;
-}
-
-.sidebar-logo-container {
-  position: relative;
-  width: 100%;
-  height: 50px;
-  line-height: 50px;
-  background: #2b2f3a;
-  text-align: center;
-  overflow: hidden;
-
-  & .sidebar-logo-link {
-    height: 100%;
-    width: 100%;
-
-    & .sidebar-logo {
-      width: 32px;
-      height: 32px;
-      vertical-align: middle;
-      margin-right: 12px;
-    }
-
-    & .sidebar-title {
-      display: inline-block;
-      margin: 0;
-      color: #fff;
-      font-weight: 600;
-      line-height: 50px;
-      font-size: 14px;
-      font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
-      vertical-align: middle;
-    }
-  }
-
-  &.collapse {
-    .sidebar-logo {
-      margin-right: 0px;
-    }
-  }
-}
+<template>
+  <div class="sidebar-logo-container" :class="{ 'collapse': collapse }" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
+    <transition name="sidebarLogoFade">
+      <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
+        <img v-if="logo" :src="logo" class="sidebar-logo" />
+        <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1>
+      </router-link>
+      <router-link v-else key="expand" class="sidebar-logo-link" to="/">
+        <img v-if="logo" :src="logo" class="sidebar-logo" />
+        <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1>
+      </router-link>
+    </transition>
+  </div>
+</template>
+
+<script setup>
+import variables from '@/assets/styles/variables.module.scss'
+import logo from '@/assets/logo/logo.png'
+import useSettingsStore from '@/store/modules/settings'
+
+defineProps({
+  collapse: {
+    type: Boolean,
+    required: true
+  }
+})
+
+// const title = ref('派米雷智慧楼宇');
+const title = ref('智慧楼宇综合平台');
+const settingsStore = useSettingsStore();
+const sideTheme = computed(() => settingsStore.sideTheme);
+</script>
+
+<style lang="scss" scoped>
+.sidebarLogoFade-enter-active {
+  transition: opacity 1.5s;
+}
+
+.sidebarLogoFade-enter,
+.sidebarLogoFade-leave-to {
+  opacity: 0;
+}
+
+.sidebar-logo-container {
+  position: relative;
+  width: 100%;
+  height: 50px;
+  line-height: 50px;
+  background: #2b2f3a;
+  text-align: center;
+  overflow: hidden;
+
+  & .sidebar-logo-link {
+    height: 100%;
+    width: 100%;
+
+    & .sidebar-logo {
+      width: 32px;
+      height: 32px;
+      vertical-align: middle;
+      margin-right: 12px;
+    }
+
+    & .sidebar-title {
+      display: inline-block;
+      margin: 0;
+      color: #fff;
+      font-weight: 600;
+      line-height: 50px;
+      font-size: 14px;
+      font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
+      vertical-align: middle;
+    }
+  }
+
+  &.collapse {
+    .sidebar-logo {
+      margin-right: 0px;
+    }
+  }
+}
 </style>

+ 131 - 123
src/router/index.js

@@ -1,124 +1,132 @@
-import { createWebHistory, createRouter } from 'vue-router'
-/* Layout */
-import Layout from '@/layout'
-
-/**
- * Note: 路由配置项
- *
- * hidden: true                     // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
- * alwaysShow: true                 // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
- *                                  // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
- *                                  // 若你想不管路由下面的 children 声明的个数都显示你的根路由
- *                                  // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
- * redirect: noRedirect             // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
- * name:'router-name'               // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
- * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
- * roles: ['admin', 'common']       // 访问路由的角色权限
- * permissions: ['a:a:a', 'b:b:b']  // 访问路由的菜单权限
- * meta : {
-    noCache: true                   // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
-    title: 'title'                  // 设置该路由在侧边栏和面包屑中展示的名字
-    icon: 'svg-name'                // 设置该路由的图标,对应路径src/assets/icons/svg
-    breadcrumb: false               // 如果设置为false,则不会在breadcrumb面包屑中显示
-    activeMenu: '/system/user'      // 当路由设置了该属性,则会高亮相对应的侧边栏。
-  }
- */
-
-// 公共路由
-export const constantRoutes = [
-    // {
-    //     path: '/redirect',
-    //     component: Layout,
-    //     hidden: true,
-    //     children: [{
-    //         path: '/redirect/:path(.*)',
-    //         component: () =>
-    //             import ('@/views/redirect/index.vue')
-    //     }]
-    // },
-    // {
-    //   path: '/login',
-    //   component: () => import('@/views/login'),
-    //   hidden: true
-    // },
-    // {
-    //     path: '/register',
-    //     component: () =>
-    //         import ('@/views/register'),
-    //     hidden: true
-    // },
-    // {
-    //     path: "/:pathMatch(.*)*",
-    //     component: () =>
-    //         import ('@/views/error/404'),
-    //     hidden: true
-    // },
-    // {
-    //     path: '/401',
-    //     component: () =>
-    //         import ('@/views/error/401'),
-    //     hidden: true
-    // },
-    {
-        path: '',
-        component: () =>
-            import ('@/views/index'),
-        hidden: true
-    },
-    {
-        path: '/',
-        component: () =>
-            import ('@/views/index'),
-        hidden: true
-    },
-    // {
-    //     path: '/index',
-    //     component: () =>
-    //         import ('@/views/index'),
-    //     hidden: true
-    // },
-    // {
-    //     path: '',
-    //     component: Layout,
-    //     redirect: '/index',
-    //     children: [{
-    //         path: '/index',
-    //         component: () =>
-    //             import ('@/views/index'),
-    //         name: 'Index',
-    //         meta: { title: '派米雷.佘山智地智慧园区', icon: 'dashboard', affix: true }
-    //     }]
-    // },
-    // {
-    //     path: '/user',
-    //     component: Layout,
-    //     hidden: true,
-    //     redirect: 'noredirect',
-    //     children: [{
-    //         path: 'profile',
-    //         component: () =>
-    //             import ('@/views/system/user/profile/index'),
-    //         name: 'Profile',
-    //         meta: { title: '个人中心', icon: 'user' }
-    //     }]
-    // }
-]
-
-// 动态路由,基于用户权限动态去加载
-export const dynamicRoutes = [
-
-]
-
-const router = createRouter({
-    history: createWebHistory(),
-    routes: constantRoutes,
-    scrollBehavior(to, from, savedPosition) {
-        if (savedPosition) {
-            return savedPosition
-        } else {
-            return { top: 0 }
-        }
-    },
-});
-
+/*
+ * @Descripttion: 
+ * @version: 
+ * @Author: wt
+ * @Date: 2022-07-21 00:07:34
+ * @LastEditors: wt
+ * @LastEditTime: 2023-02-09 13:16:31
+ */
+import { createWebHistory, createRouter } from 'vue-router'
+/* Layout */
+import Layout from '@/layout'
+
+/**
+ * Note: 路由配置项
+ *
+ * hidden: true                     // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
+ * alwaysShow: true                 // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
+ *                                  // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
+ *                                  // 若你想不管路由下面的 children 声明的个数都显示你的根路由
+ *                                  // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
+ * redirect: noRedirect             // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
+ * name:'router-name'               // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
+ * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
+ * roles: ['admin', 'common']       // 访问路由的角色权限
+ * permissions: ['a:a:a', 'b:b:b']  // 访问路由的菜单权限
+ * meta : {
+    noCache: true                   // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
+    title: 'title'                  // 设置该路由在侧边栏和面包屑中展示的名字
+    icon: 'svg-name'                // 设置该路由的图标,对应路径src/assets/icons/svg
+    breadcrumb: false               // 如果设置为false,则不会在breadcrumb面包屑中显示
+    activeMenu: '/system/user'      // 当路由设置了该属性,则会高亮相对应的侧边栏。
+  }
+ */
+
+// 公共路由
+export const constantRoutes = [
+    // {
+    //     path: '/redirect',
+    //     component: Layout,
+    //     hidden: true,
+    //     children: [{
+    //         path: '/redirect/:path(.*)',
+    //         component: () =>
+    //             import ('@/views/redirect/index.vue')
+    //     }]
+    // },
+    // {
+    //   path: '/login',
+    //   component: () => import('@/views/login'),
+    //   hidden: true
+    // },
+    // {
+    //     path: '/register',
+    //     component: () =>
+    //         import ('@/views/register'),
+    //     hidden: true
+    // },
+    // {
+    //     path: "/:pathMatch(.*)*",
+    //     component: () =>
+    //         import ('@/views/error/404'),
+    //     hidden: true
+    // },
+    // {
+    //     path: '/401',
+    //     component: () =>
+    //         import ('@/views/error/401'),
+    //     hidden: true
+    // },
+    {
+        path: '',
+        component: () =>
+            import ('@/views/index'),
+        hidden: true
+    },
+    {
+        path: '/',
+        component: () =>
+            import ('@/views/index'),
+        hidden: true
+    },
+    // {
+    //     path: '/index',
+    //     component: () =>
+    //         import ('@/views/index'),
+    //     hidden: true
+    // },
+    // {
+    //     path: '',
+    //     component: Layout,
+    //     redirect: '/index',
+    //     children: [{
+    //         path: '/index',
+    //         component: () =>
+    //             import ('@/views/index'),
+    //         name: 'Index',
+    //         meta: { title: '派米雷.佘山智地智慧园区', icon: 'dashboard', affix: true }
+    //     }]
+    // },
+    // {
+    //     path: '/user',
+    //     component: Layout,
+    //     hidden: true,
+    //     redirect: 'noredirect',
+    //     children: [{
+    //         path: 'profile',
+    //         component: () =>
+    //             import ('@/views/system/user/profile/index'),
+    //         name: 'Profile',
+    //         meta: { title: '个人中心', icon: 'user' }
+    //     }]
+    // }
+]
+
+// 动态路由,基于用户权限动态去加载
+export const dynamicRoutes = [
+
+]
+
+const router = createRouter({
+    history: createWebHistory(),
+    routes: constantRoutes,
+    scrollBehavior(to, from, savedPosition) {
+        if (savedPosition) {
+            return savedPosition
+        } else {
+            return { top: 0 }
+        }
+    },
+});
+
 export default router;

+ 465 - 465
src/views/index.vue

@@ -1,465 +1,465 @@
-<template>
-  <div class="app-container home">
-    <div id="main">
-      <seHeader />
-      <el-row class="containWrap">
-        <el-col class="leftWrap">
-          <energy :resData="initList[0][0]" alt="能源与环境" />
-          <security :resData="initList[0][1]" alt="安防与消防" />
-          <keepWatch1 :resData="initList[0][2]" alt="巡更记录" />
-        </el-col>
-        <el-col id="middleWrap">
-          <iframe  style="width:100%;height:100%;border:none;" id="iframe" src='https://www.thingjs.com/s/bd3f8b27e1e50b1c9b963d43'></iframe>
-        </el-col>
-        <el-col class="rightWrap">
-          <people :resData="initList[0][4]" alt="人员通行" />
-          <car :resData="initList[0][5]" alt="车辆通行" />
-          <keepWatch :resData="initList[0][3]" alt="巡更数据" />
-        </el-col>
-        <div id="loader-wrapper2" v-if="sanwei">
-        <div id="loader2"></div>
-        <div class="loader-section section-left"></div>
-        <div class="loader-section section-right"></div>
-        <div class="load_title">三维模型加载中...</div>
-      </div>
-      </el-row>
-      
-    </div>
-  </div>
-</template>
-<script setup>
-import axios from "axios";
-import seHeader from "@/components/business/seHeader"; //头部
-import energy from "@/components/business/energy"; //能源与环境
-import security from "@/components/business/security"; //能源与环境
-import people from "@/components/business/access/people"; //人员通行
-import car from "@/components/business/access/car"; //车辆通行
-import keepWatch from "@/components/business/keepWatch"; //巡更数据
-import keepWatch1 from "@/components/business/keepWatch1"; //巡更数据
-const data = reactive({
-  initList: [
-    [
-      [
-        {
-          name1: "当月用电量",
-          num: "34825kW‧h",
-          name2: "日均用量较上月",
-          compare: 20,
-        },
-        {
-          name1: "当月用水量",
-          num: "1285m³",
-          name2: "日均用量较上月",
-          compare: 3.5,
-        },
-        {
-          name1: "当月制冷量",
-          num: "19774kW‧h",
-          name2: "日均用量较上月",
-          compare: 6.5,
-        },
-        {
-          name1: "当月发热量",
-          num: "0kW‧h",
-          name2: "日均用量较上月",
-          compare: 0,
-        },
-      ],
-      [
-        [
-          { name: "摄像头总数", num: 175 },
-          { name: "关键监控区域", num: 113 },
-          { name: "周界防护设备", num: 32 },
-        ],
-        [
-          { value: 28, name: "已处理" },
-          { value: 4, name: "未处理" },
-        ],
-      ],
-      [
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-17 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-18 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-19 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-20 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-21 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-22 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-23 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-24 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-25 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-26 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-27 21:00:00",
-          status: 1,
-        },
-        {
-          name: "点位巡查",
-          enforcer: "王茂",
-          time: "2022-07-28 21:00:00",
-          status: 1,
-        }, 
-      ],
-      [
-        [
-          { name: "巡更点位", num: 264 },
-          { name: "巡更任务", num: 12 },
-        ],
-        [
-          { value: 12, name: "按时完成" },
-          { value: 0, name: "延迟完成" },
-        ],
-      ],
-      [
-        [596, 593, 3],
-        [
-          {
-            name: "楼内人员",
-            type: "line",
-            stack: "Total",
-            smooth: true,
-            data: [0, 0, 0, 0, 0, 0, 0, 5, 582, 5, 1, 0, 0],
-          },
-          {
-            name: "外部访客",
-            type: "line",
-            stack: "Total",
-            smooth: true,
-            data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1],
-          },
-        ],
-        ["00", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11","12", "13"],
-      ],
-      [
-        [48, 42, 6],
-        [
-          {
-            name: "地面停车场",
-            type: "line",
-            stack: "Total",
-            smooth: true,
-            data: [0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0],
-          },
-          {
-            name: "地下停车场",
-            type: "line",
-            stack: "Total",
-            smooth: true,
-            data: [0, 0, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 0],
-          },
-        ],
-        ["00", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11","12", "13"],
-      ],
-    ],
-  ],
-});
-
-const { initList } = toRefs(data);
-const sanwei = ref(true)
-setTimeout(() => {
-  sanwei.value = false
-  document.getElementById("middleWrap").style.zIndex = "9";
-}, 5000);
-</script>
-<style lang="scss">
-@import "@/assets/styles/common.scss";
-#main {
-  width: 100%;
-  height: auto;
-  margin: auto;
-  overflow: hidden;
-  padding: 0 10px;
-  font-family: "MicrosoftYaHei";
-  color: #fff;
-  .containWrap {
-    clear: both;
-    width: 100%;
-    overflow: hidden;
-    padding: 0 !important;
-    height: 100vh;
-    margin-top: 50px;
-    .leftWrap {
-      display: inline-block;
-      width: 500px;
-      position: absolute;
-      z-index: 10;
-      left: 0;
-    }
-    .rightWrap {
-      position: absolute;
-      z-index: 10;
-      right: 0;
-      margin-left: 28px;
-      width: 500px;
-      display: inline-block;
-      overflow: hidden;
-    }
-  }
-  .mt16 {
-    margin-top: 16px;
-  }
-  .ml16 {
-    margin-left: 16px;
-  }
-}
-#middleWrap {
-  display: inline-block;
-  overflow: hidden;
-  width:100%;
-  height:100vh;
-  border: none;
-  position: fixed;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  z-index: -1;
-}
-.mask {
-  position: fixed;
-  width: 100%;
-  height: 100%;
-  background-color: rgba(0, 0, 0, 0.5);
-  top: 0;
-  left: 0;
-  z-index: 100;
-}
-//公共样式
-.modular {
-  background: rgba(0, 0, 0, 0.4);
-  // backdrop-filter: blur(1px);
-  color: $white;
-  position: relative;
-  padding: 10px 15px;
-  margin-top: 10px;
-  width: 500px !important;
-  border-radius: 2px;
-  .title {
-    font-size: 16px;
-    //font-family: "MicrosoftYaHei-Bold";
-    width: 100%;
-    margin-bottom: 20px;
-  }
-}
-
-
- #loader-wrapper2 {
-      position: fixed;
-      top: 0;
-      left: 0;
-      width: 200px;
-      margin:0 calc(50vw - 100px);
-      height: 100%;
-      z-index: 0;
-  }
-  
-  #loader2 {
-      display: block;
-      position: fixed;
-      left: 50%;
-      top: 50%;
-      width: 150px;
-      height: 150px;
-      margin: -75px 0 0 -75px;
-      border-radius: 50%;
-      border: 3px solid transparent;
-      border-top-color: #FFF;
-      -webkit-animation: spin 2s linear infinite;
-      -ms-animation: spin 2s linear infinite;
-      -moz-animation: spin 2s linear infinite;
-      -o-animation: spin 2s linear infinite;
-      animation: spin 2s linear infinite;
-      z-index: 1001;
-      
-  }
-  
-  #loader2:before {
-      content: "";
-      position: absolute;
-      top: 5px;
-      left: 5px;
-      right: 5px;
-      bottom: 5px;
-      border-radius: 50%;
-      border: 3px solid transparent;
-      border-top-color: #FFF;
-      -webkit-animation: spin 3s linear infinite;
-      -moz-animation: spin 3s linear infinite;
-      -o-animation: spin 3s linear infinite;
-      -ms-animation: spin 3s linear infinite;
-      animation: spin 3s linear infinite;
-  }
-  
-  #loader2:after {
-      content: "";
-      position: absolute;
-      top: 15px;
-      left: 15px;
-      right: 15px;
-      bottom: 15px;
-      border-radius: 50%;
-      border: 3px solid transparent;
-      border-top-color: #FFF;
-      -moz-animation: spin 1.5s linear infinite;
-      -o-animation: spin 1.5s linear infinite;
-      -ms-animation: spin 1.5s linear infinite;
-      -webkit-animation: spin 1.5s linear infinite;
-      animation: spin 1.5s linear infinite;
-  }
-  
-  @-webkit-keyframes spin {
-      0% {
-          -webkit-transform: rotate(0deg);
-          -ms-transform: rotate(0deg);
-          transform: rotate(0deg);
-      }
-      100% {
-          -webkit-transform: rotate(360deg);
-          -ms-transform: rotate(360deg);
-          transform: rotate(360deg);
-      }
-  }
-  
-  @keyframes spin {
-      0% {
-          -webkit-transform: rotate(0deg);
-          -ms-transform: rotate(0deg);
-          transform: rotate(0deg);
-      }
-      100% {
-          -webkit-transform: rotate(360deg);
-          -ms-transform: rotate(360deg);
-          transform: rotate(360deg);
-      }
-  }
-  
-  #loader-wrapper2 .loader-section {
-      position: fixed;
-      top: 0;
-      width: 51%;
-      height: 100%;
-      
-      z-index: 0;
-      -webkit-transform: translateX(0);
-      -ms-transform: translateX(0);
-      transform: translateX(0);
-  }
-  
-  #loader-wrapper2 .loader-section.section-left {
-      left: 0;
-  }
-  
-  #loader-wrapper2 .loader-section.section-right {
-      right: 0;
-  }
-  
-  .loaded #loader-wrapper2 .loader-section.section-left {
-      -webkit-transform: translateX(-100%);
-      -ms-transform: translateX(-100%);
-      transform: translateX(-100%);
-      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-  }
-  
-  .loaded #loader-wrapper2 .loader-section.section-right {
-      -webkit-transform: translateX(100%);
-      -ms-transform: translateX(100%);
-      transform: translateX(100%);
-      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
-  }
-  
-  .loaded #loader2 {
-      opacity: 0;
-      -webkit-transition: all 0.3s ease-out;
-      transition: all 0.3s ease-out;
-  }
-  
-  .loaded #loader-wrapper2 {
-      visibility: hidden;
-      -webkit-transform: translateY(-100%);
-      -ms-transform: translateY(-100%);
-      transform: translateY(-100%);
-      -webkit-transition: all 0.3s 1s ease-out;
-      transition: all 0.3s 1s ease-out;
-  }
-  
-  .no-js #loader-wrapper2 {
-      display: none;
-  }
-  
-  .no-js h1 {
-      color: #222222;
-  }
-  
-  #loader-wrapper2 .load_title {
-      font-family: 'Open Sans';
-      color: #FFF;
-      font-size: 19px;
-      width: 100%;
-      text-align: center;
-      z-index: 9999999999999;
-      position: absolute;
-      top: 60%;
-      opacity: 1;
-      line-height: 30px;
-  }
-  
-  #loader-wrapper2 .load_title span {
-      font-weight: normal;
-      font-style: italic;
-      font-size: 13px;
-      color: #FFF;
-      opacity: 0.5;
-  }
-</style>
+<template>
+  <div class="app-container home">
+    <div id="main">
+      <seHeader />
+      <el-row class="containWrap">
+        <el-col class="leftWrap">
+          <energy :resData="initList[0][0]" alt="能源与环境" />
+          <security :resData="initList[0][1]" alt="安防与消防" />
+          <keepWatch1 :resData="initList[0][2]" alt="巡更记录" />
+        </el-col>
+        <el-col id="middleWrap">
+          <iframe  style="width:100%;height:100%;border:none;" id="iframe" src='https://www.thingjs.com/s/bd3f8b27e1e50b1c9b963d43'></iframe>
+        </el-col>
+        <el-col class="rightWrap">
+          <people :resData="initList[0][4]" alt="人员通行" />
+          <car :resData="initList[0][5]" alt="车辆通行" />
+          <keepWatch :resData="initList[0][3]" alt="巡更数据" />
+        </el-col>
+        <div id="loader-wrapper2" v-if="sanwei">
+          <div id="loader2"></div>
+          <div class="loader-section section-left"></div>
+          <div class="loader-section section-right"></div>
+          <div class="load_title">三维模型加载中...</div>
+        </div>
+      </el-row>
+      
+    </div>
+  </div>
+</template>
+<script setup>
+import axios from "axios";
+import seHeader from "@/components/business/seHeader"; //头部
+import energy from "@/components/business/energy"; //能源与环境
+import security from "@/components/business/security"; //能源与环境
+import people from "@/components/business/access/people"; //人员通行
+import car from "@/components/business/access/car"; //车辆通行
+import keepWatch from "@/components/business/keepWatch"; //巡更数据
+import keepWatch1 from "@/components/business/keepWatch1"; //巡更数据
+const data = reactive({
+  initList: [
+    [
+      [
+        {
+          name1: "当月用电量",
+          num: "34825kW‧h",
+          name2: "日均用量较上月",
+          compare: 20,
+        },
+        {
+          name1: "当月用水量",
+          num: "1285m³",
+          name2: "日均用量较上月",
+          compare: 3.5,
+        },
+        {
+          name1: "当月制冷量",
+          num: "19774kW‧h",
+          name2: "日均用量较上月",
+          compare: 6.5,
+        },
+        {
+          name1: "当月发热量",
+          num: "0kW‧h",
+          name2: "日均用量较上月",
+          compare: 0,
+        },
+      ],
+      [
+        [
+          { name: "摄像头总数", num: 175 },
+          { name: "关键监控区域", num: 113 },
+          { name: "周界防护设备", num: 32 },
+        ],
+        [
+          { value: 28, name: "已处理" },
+          { value: 4, name: "未处理" },
+        ],
+      ],
+      [
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-17 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-18 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-19 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-20 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-21 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-22 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-23 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-24 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-25 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-26 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-27 21:00:00",
+          status: 1,
+        },
+        {
+          name: "点位巡查",
+          enforcer: "王茂",
+          time: "2022-07-28 21:00:00",
+          status: 1,
+        }, 
+      ],
+      [
+        [
+          { name: "巡更点位", num: 264 },
+          { name: "巡更任务", num: 12 },
+        ],
+        [
+          { value: 12, name: "按时完成" },
+          { value: 0, name: "延迟完成" },
+        ],
+      ],
+      [
+        [596, 593, 3],
+        [
+          {
+            name: "楼内人员",
+            type: "line",
+            stack: "Total",
+            smooth: true,
+            data: [0, 0, 0, 0, 0, 0, 0, 5, 582, 5, 1, 0, 0],
+          },
+          {
+            name: "外部访客",
+            type: "line",
+            stack: "Total",
+            smooth: true,
+            data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1],
+          },
+        ],
+        ["00", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11","12", "13"],
+      ],
+      [
+        [48, 42, 6],
+        [
+          {
+            name: "地面停车场",
+            type: "line",
+            stack: "Total",
+            smooth: true,
+            data: [0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0],
+          },
+          {
+            name: "地下停车场",
+            type: "line",
+            stack: "Total",
+            smooth: true,
+            data: [0, 0, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 0],
+          },
+        ],
+        ["00", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11","12", "13"],
+      ],
+    ],
+  ],
+});
+
+const { initList } = toRefs(data);
+const sanwei = ref(true)
+setTimeout(() => {
+  sanwei.value = false
+  document.getElementById("middleWrap").style.zIndex = "9";
+}, 5000);
+</script>
+<style lang="scss">
+@import "@/assets/styles/common.scss";
+#main {
+  width: 100%;
+  height: auto;
+  margin: auto;
+  overflow: hidden;
+  padding: 0 10px;
+  font-family: "MicrosoftYaHei";
+  color: #fff;
+  .containWrap {
+    clear: both;
+    width: 100%;
+    overflow: hidden;
+    padding: 0 !important;
+    height: 100vh;
+    margin-top: 50px;
+    .leftWrap {
+      display: inline-block;
+      width: 500px;
+      position: absolute;
+      z-index: 10;
+      left: 0;
+    }
+    .rightWrap {
+      position: absolute;
+      z-index: 10;
+      right: 0;
+      margin-left: 28px;
+      width: 500px;
+      display: inline-block;
+      overflow: hidden;
+    }
+  }
+  .mt16 {
+    margin-top: 16px;
+  }
+  .ml16 {
+    margin-left: 16px;
+  }
+}
+#middleWrap {
+  display: inline-block;
+  overflow: hidden;
+  width:100%;
+  height:100vh;
+  border: none;
+  position: fixed;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: -1;
+}
+.mask {
+  position: fixed;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  top: 0;
+  left: 0;
+  z-index: 100;
+}
+//公共样式
+.modular {
+  background: rgba(0, 0, 0, 0.4);
+  // backdrop-filter: blur(1px);
+  color: $white;
+  position: relative;
+  padding: 10px 15px;
+  margin-top: 10px;
+  width: 500px !important;
+  border-radius: 2px;
+  .title {
+    font-size: 16px;
+    //font-family: "MicrosoftYaHei-Bold";
+    width: 100%;
+    margin-bottom: 20px;
+  }
+}
+
+
+ #loader-wrapper2 {
+      position: fixed;
+      top: 0;
+      left: 0;
+      width: 200px;
+      margin:0 calc(50vw - 100px);
+      height: 100%;
+      z-index: 0;
+  }
+  
+  #loader2 {
+      display: block;
+      position: fixed;
+      left: 50%;
+      top: 50%;
+      width: 150px;
+      height: 150px;
+      margin: -75px 0 0 -75px;
+      border-radius: 50%;
+      border: 3px solid transparent;
+      border-top-color: #FFF;
+      -webkit-animation: spin 2s linear infinite;
+      -ms-animation: spin 2s linear infinite;
+      -moz-animation: spin 2s linear infinite;
+      -o-animation: spin 2s linear infinite;
+      animation: spin 2s linear infinite;
+      z-index: 1001;
+      
+  }
+  
+  #loader2:before {
+      content: "";
+      position: absolute;
+      top: 5px;
+      left: 5px;
+      right: 5px;
+      bottom: 5px;
+      border-radius: 50%;
+      border: 3px solid transparent;
+      border-top-color: #FFF;
+      -webkit-animation: spin 3s linear infinite;
+      -moz-animation: spin 3s linear infinite;
+      -o-animation: spin 3s linear infinite;
+      -ms-animation: spin 3s linear infinite;
+      animation: spin 3s linear infinite;
+  }
+  
+  #loader2:after {
+      content: "";
+      position: absolute;
+      top: 15px;
+      left: 15px;
+      right: 15px;
+      bottom: 15px;
+      border-radius: 50%;
+      border: 3px solid transparent;
+      border-top-color: #FFF;
+      -moz-animation: spin 1.5s linear infinite;
+      -o-animation: spin 1.5s linear infinite;
+      -ms-animation: spin 1.5s linear infinite;
+      -webkit-animation: spin 1.5s linear infinite;
+      animation: spin 1.5s linear infinite;
+  }
+  
+  @-webkit-keyframes spin {
+      0% {
+          -webkit-transform: rotate(0deg);
+          -ms-transform: rotate(0deg);
+          transform: rotate(0deg);
+      }
+      100% {
+          -webkit-transform: rotate(360deg);
+          -ms-transform: rotate(360deg);
+          transform: rotate(360deg);
+      }
+  }
+  
+  @keyframes spin {
+      0% {
+          -webkit-transform: rotate(0deg);
+          -ms-transform: rotate(0deg);
+          transform: rotate(0deg);
+      }
+      100% {
+          -webkit-transform: rotate(360deg);
+          -ms-transform: rotate(360deg);
+          transform: rotate(360deg);
+      }
+  }
+  
+  #loader-wrapper2 .loader-section {
+      position: fixed;
+      top: 0;
+      width: 51%;
+      height: 100%;
+      
+      z-index: 0;
+      -webkit-transform: translateX(0);
+      -ms-transform: translateX(0);
+      transform: translateX(0);
+  }
+  
+  #loader-wrapper2 .loader-section.section-left {
+      left: 0;
+  }
+  
+  #loader-wrapper2 .loader-section.section-right {
+      right: 0;
+  }
+  
+  .loaded #loader-wrapper2 .loader-section.section-left {
+      -webkit-transform: translateX(-100%);
+      -ms-transform: translateX(-100%);
+      transform: translateX(-100%);
+      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+  }
+  
+  .loaded #loader-wrapper2 .loader-section.section-right {
+      -webkit-transform: translateX(100%);
+      -ms-transform: translateX(100%);
+      transform: translateX(100%);
+      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+  }
+  
+  .loaded #loader2 {
+      opacity: 0;
+      -webkit-transition: all 0.3s ease-out;
+      transition: all 0.3s ease-out;
+  }
+  
+  .loaded #loader-wrapper2 {
+      visibility: hidden;
+      -webkit-transform: translateY(-100%);
+      -ms-transform: translateY(-100%);
+      transform: translateY(-100%);
+      -webkit-transition: all 0.3s 1s ease-out;
+      transition: all 0.3s 1s ease-out;
+  }
+  
+  .no-js #loader-wrapper2 {
+      display: none;
+  }
+  
+  .no-js h1 {
+      color: #222222;
+  }
+  
+  #loader-wrapper2 .load_title {
+      font-family: 'Open Sans';
+      color: #FFF;
+      font-size: 19px;
+      width: 100%;
+      text-align: center;
+      z-index: 9999999999999;
+      position: absolute;
+      top: 60%;
+      opacity: 1;
+      line-height: 30px;
+  }
+  
+  #loader-wrapper2 .load_title span {
+      font-weight: normal;
+      font-style: italic;
+      font-size: 13px;
+      color: #FFF;
+      opacity: 0.5;
+  }
+</style>