Răsfoiți Sursa

侧边栏折叠;页面适应调整;

chuwuya 2 ani în urmă
părinte
comite
8838b9944e
36 a modificat fișierele cu 522 adăugiri și 746 ștergeri
  1. 1 0
      public/index.html
  2. 0 36
      src/api/data/basicInfo.js
  3. 21 32
      src/api/data/template.js
  4. 3 3
      src/components/Identify/index.vue
  5. 19 7
      src/components/home/MainFrame.vue
  6. 52 32
      src/layout/Navbar.vue
  7. 40 34
      src/layout/Sidebar.vue
  8. 0 32
      src/layout/sidebar/Sidebar.vue
  9. 27 2
      src/router/index.js
  10. 39 43
      src/store/modules/user.js
  11. 11 15
      src/utils/request.js
  12. 0 1
      src/views/HomeView.vue
  13. 0 5
      src/views/LoginView.vue
  14. 2 5
      src/views/dataManagement/basicInfo/index.vue
  15. 1 1
      src/views/dataManagement/index.vue
  16. 28 64
      src/views/dataManagement/reportConfig.vue
  17. 28 62
      src/views/dataManagement/statementConfig.vue
  18. 1 1
      src/views/deviceManagement/messageDailog/addDevice.vue
  19. 1 1
      src/views/deviceManagement/messageDailog/dataImport.vue
  20. 42 27
      src/views/login/index.vue
  21. 2 6
      src/views/permissionManagement/roleOverview.vue
  22. 1 1
      src/views/securityManagement/index.vue
  23. 2 5
      src/views/securityManagement/logMonitor.vue
  24. 2 5
      src/views/securityManagement/systemMonitor/index.vue
  25. 144 238
      src/views/servicesManagement/allServices.vue
  26. 1 1
      src/views/servicesManagement/index.vue
  27. 1 3
      src/views/systemManagement/index.vue
  28. 5 8
      src/views/systemManagement/indexConfiguration/index.vue
  29. 1 5
      src/views/systemManagement/indexConfiguration/smartBoard.vue
  30. 2 5
      src/views/systemManagement/infoConfiguration/index.vue
  31. 2 5
      src/views/systemManagement/messageConfiguration/commonMessage.vue
  32. 2 5
      src/views/systemManagement/strategyConfiguration/index.vue
  33. 26 28
      src/views/systemManagement/strategyConfiguration/smartMeeting.vue
  34. 12 18
      src/views/userManagement/groupManagement/index.vue
  35. 1 4
      src/views/userManagement/index.vue
  36. 2 6
      src/views/userManagement/personManagement/index.vue

+ 1 - 0
public/index.html

@@ -6,6 +6,7 @@
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <title><%= htmlWebpackPlugin.options.title %></title>
+    <!-- <script type="module" src="/src/plugins/gverify.js"></script> -->
   </head>
   <body>
     <noscript>

+ 0 - 36
src/api/data/basicInfo.js

@@ -1,36 +0,0 @@
-import { get, post, put } from "@/utils/requestMethod";
-
-/**
- * 获取楼宇列表
- * @param {*} page
- * @param {*} page_size
- * @param {*} template_type
- * @param {*} templat_name
- * @param {*} template_format
- * @returns
- */
-const getBuildingList = () => {
-  return get(`/data/building_list`);
-};
-
-
-/**
- * 获取底层系统
- * @param {*} page
- * @param {*} page_size
- * @returns
- */
-const getUnderlyingSystem = () => {
-    return get(`/data/underlying_system`);
-  };
-
-  /**
- * 添加底层系统
- * @param {*} picture
- * @returns
- */
-const addUnderlyingSystem = (picture) => {
-    let params = new FormData();
-    return post(`/data/underlying_system`,params);
-  };
-  

+ 21 - 32
src/api/data/template.js

@@ -16,41 +16,35 @@ const getTableTemplateList = (
   templat_name = "",
   template_format = ""
 ) => {
-  return get(
-    `/data/template_list?page=${page}&page_size=${page_size}&template_type=${template_type}&templat_name=${templat_name}&template_format=${template_format}`
-  );
+  return get(`/data/template_list?page=${page}&page_size=${page_size}&template_type=${template_type}&templat_name=${templat_name}&template_format=${template_format}`);
 };
 
 /**
  * 添加报表模板
- * @param {*} options
+ * @param {*} options 
  */
-const addTableTemplate = (options) => {
-  let params = new FormData();
-  params.append("template_type", 0);
-  options.templatName !== "" &&
-    params.append("template_name", options.templatName);
-  options.templateFormat !== "" &&
-    params.append("template_format", options.templateFormat);
-  options.intro !== "" && params.append("introduction", options.intro);
-  return post("/data/template", params);
-};
+const addTableTemplate = (options) =>{
+  let params = new FormData()
+  params.append("template_type",0)
+  options.templatName!=="" && params.append("template_name",options.templatName)
+  options.templateFormat!=="" && params.append("template_format",options.templateFormat)
+  options.intro!=="" && params.append("introduction",options.intro)
+  return post("/data/template",params)
+}
 
 /**
  * 添加报告模板
- * @param {*} options
+ * @param {*} options 
  */
-const addReportTemplate = (options) => {
-  let params = new FormData();
-  params.append("template_type", 0);
-  options.templatName !== "" &&
-    params.append("template_name", options.templatName);
-  options.templateFormat !== "" &&
-    params.append("template_format", options.templateFormat);
-  options.reportType !== "" && params.append("report_type", options.reportType);
-  options.intro !== "" && params.append("introduction", options.intro);
-  return post("/data/template", params);
-};
+const addReportTemplate = (options) =>{
+  let params = new FormData()
+  params.append("template_type",0)
+  options.templatName!=="" && params.append("template_name",options.templatName)
+  options.templateFormat!=="" && params.append("template_format",options.templateFormat)
+  options.reportType !=="" && params.append("report_type",options.reportType)
+  options.intro!=="" && params.append("introduction",options.intro)
+  return post("/data/template",params)
+}
 
 /**
  * 获取报告列表
@@ -74,9 +68,4 @@ const getReportTemplateList = (
   );
 };
 
-export {
-  addTableTemplate,
-  addReportTemplate,
-  getTableTemplateList,
-  getReportTemplateList,
-};
+export { getTableTemplateList, getReportTemplateList };

+ 3 - 3
src/components/Identify/index.vue

@@ -23,7 +23,7 @@ export default {
         },
         backgroundColorMin: {
             type: Number,
-            default: 255
+            default: 200
         },
         backgroundColorMax: {
             type: Number,
@@ -58,7 +58,7 @@ export default {
         },
         contentHeight: {
             type: Number,
-            default: 31
+            default: 38
         }
     },
     methods: {
@@ -113,7 +113,7 @@ export default {
         },
         drawDot(ctx) {
             // 绘制干扰点
-            for (let i = 0; i < 80; i++) {
+            for (let i = 0; i < 10; i++) {
                 ctx.fillStyle = this.randomColor(0, 255)
                 ctx.beginPath()
                 ctx.arc(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight), 1, 0, 2 * Math.PI)

+ 19 - 7
src/components/home/MainFrame.vue

@@ -2,15 +2,15 @@
   <div class="mainFrame">
     <el-container>
       <el-header>
-        <navbar></navbar>
+        <navbar @collapseControl="Collapse"></navbar>
       </el-header>
       <el-container>
-        <el-aside>
-          <sidebar></sidebar>
+        <el-aside :width="isCollapse ? '64px' : '200px'">
+          <sidebar :isCollapse="isCollapse"></sidebar>
         </el-aside>
         <el-container>
           <el-main>
-           <router-view></router-view>
+            <router-view/>
           </el-main>
         </el-container>
       </el-container>
@@ -20,12 +20,19 @@
 
 <script>
 import navbar from '@/layout/Navbar'
-import sidebar from '@/layout/sidebar/Sidebar'
+import sidebar from '@/layout/Sidebar'
 export default {
   components: { navbar, sidebar },
   data() {
-    return {}
+    return {
+      isCollapse: '',
+    }
   },
+  methods: {
+    Collapse(val) {
+      this.isCollapse = val;
+    }
+  }
 }
 </script>
 
@@ -39,6 +46,7 @@ export default {
   height: 100%;
   overflow: hidden;
 }
+
 .el-header {
   left: 0px;
   top: 0px;
@@ -54,17 +62,21 @@ export default {
   top: 64px;
   color: rgba(16, 16, 16, 1);
   line-height: 20px;
-  width: 200px !important;
   background-color: #266999;
   color: rgba(16, 16, 16, 1);
   font-size: 14px;
   text-align: center;
   overflow-x: hidden;
+  transition: width 0.25s;
+  -webkit-transition: width 0.25s;
+  -moz-transition: width 0.25s;
+  -o-transition: width 0.25s;
 }
 
 .el-main {
   background-color: #E9EEF3;
   color: #333;
   height: 100%;
+  width: 100%;
 }
 </style>

+ 52 - 32
src/layout/Navbar.vue

@@ -1,9 +1,8 @@
 <template>
   <div>
-    <div class="left-menu">
-      <hamburger class="hamburger-container" :is-active="opened" @toggleClick="toggleSideBar" />
+    <div v-show="isLogin" class="left-menu">
+        <hamburger class="hamburger-container" :is-active="opened" @toggleClick="toggleSideBar" />
       <div>
-        <!-- <el-image class="img" :src="src" alt=""></el-image> -->
       </div>
       <div class="title">
         <p style="margin-top:15px">智慧运营管理中心</p>
@@ -13,15 +12,20 @@
         </el-option>
       </el-select>
     </div>
-    <div class="right-menu">
+    <div v-show="isLogin" class="right-menu">
       <el-image class="labtap" :src="require('@/assets/images/diannao@3x.png')"></el-image>
       <el-image class="phone" :src="require('@/assets/images/shouji-4@3x.png')"></el-image>
       <el-image class="help" :src="require('@/assets/images/help@3x.png')"></el-image>
       <el-image class="notification" :src="require('@/assets/images/tongzhi@3x.png')"></el-image>
-      <div class="avatar"><el-avatar :size="50" :src="circleUrl"></el-avatar></div>
-      <div class="info">
-        <i class="el-icon-user"></i>
-        {{ name }}
+      <div class="userinfo">
+        <el-avatar :size="35" :src="circleUrl"></el-avatar>
+        <el-dropdown>
+          <el-button class="usernameBtn" style="color: white;font-size: 18px">
+            <el-icon class="el-icon-user"></el-icon>
+            <span style="display: inline-block;margin-left: 8px"></span>
+          </el-button>
+
+        </el-dropdown>
       </div>
     </div>
   </div>
@@ -31,23 +35,30 @@
 import hamburger from '@/components/Hamburger/index'
 export default {
   components: { hamburger },
-  name: "Navbar",
+  props: {
+    leftVisible: Boolean,
+    //isLogin: Boolean,
+  },
   data() {
     return {
       value: '主语国际3号楼',
       options: {
 
       },
+      isLogin: true,
       opened: false,
       name: "test",
       circleUrl: "https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
-      isCollapse: true
+      isCollapse: false
     }
   },
-
+  mounted(){
+    this.$emit('collapseControl', this.isCollapse);
+  },
   methods: {
     toggleSideBar() {
-
+      this.isCollapse = !this.isCollapse;
+      this.$emit('collapseControl', this.isCollapse);
     }
   }
 }
@@ -68,29 +79,15 @@ export default {
     float: left;
     cursor: pointer;
     transition: background .3s;
-    background-color: #266999;
+    background-color: #368FCD;
     ;
     -webkit-tap-highlight-color: transparent;
 
     &:hover {
-      background: rgba(0, 0, 0, .025)
-    }
-
-
-
-    &:hover {
-      background: rgba(247, 243, 243, 0.966)
+      background: #266999;
     }
   }
 
-  .img {
-    display: flex;
-    position: absolute;
-    left: 64px;
-    width: 64px;
-    height: 64px;
-  }
-
   .title {
     position: absolute;
     left: 130px;
@@ -132,6 +129,14 @@ export default {
     outline: none;
   }
 
+  .el-image {
+    &:hover {
+      background-color: #186399;
+      height: 25px;
+      width: 25px;
+    }
+  }
+
   .labtap {
     position: absolute;
     float: right;
@@ -168,16 +173,16 @@ export default {
     height: 20px;
   }
 
-  .avatar {
+  .el-avatar {
     position: absolute;
     float: right;
-    right: 166px;
+    right: 100px;
     top: 6px;
     width: 50px;
     height: 50px;
   }
 
-  .info {
+  .userinfo {
     position: absolute;
     float: right;
     right: 86px;
@@ -187,7 +192,22 @@ export default {
     bottom: 7px;
     color: rgba(255, 255, 255, 1);
 
+    .usernameBtn {
+      width: 120px;
+      margin: 5px 0 0 15px;
+      border: 0;
+      border-radius: 10px;
+      background-color: #48BBE4;
+      height: 40px;
+
+      &:hover {
+        background-color: #3c9cd3;
+      }
+
+      .el-icon-user {
+        margin-right: 100px;
+      }
+    }
   }
-
 }
 </style>

+ 40 - 34
src/layout/sidebar/sidebarItem.vue → src/layout/Sidebar.vue

@@ -1,6 +1,14 @@
 <template>
   <div>
-    <div v-for="(menu, index) in menus" :key="index">
+    <el-menu style="border: 0;" 
+    v-for="(menu, index) in menus" 
+    :key="index" background-color="#266999"
+    text-color="rgba(255, 255, 255, 1)" 
+    active-text-color="#ffd04b" 
+    :collapse="isCollapse" 
+    :collapse-transition="false"
+    router mode="vertical" 
+    :unique-opened="true">
       <el-submenu :index="String(index)" v-if="menu.submenus != null">
         <template slot="title">
           <el-image :src="menu.url"></el-image>
@@ -8,7 +16,7 @@
         </template>
         <el-menu-item-group v-for="(submenu, index2) in menu.submenus" :key="index2">
           <el-menu-item :index="submenu.path">
-            <span class="subMenu">{{ submenu.name }}</span>
+            <span class="subMenu" style="margin-left:40px">{{ submenu.name }}</span>
           </el-menu-item>
         </el-menu-item-group>
       </el-submenu>
@@ -18,11 +26,15 @@
           {{ menu.name }}
         </span>
       </el-menu-item>
-    </div>
+    </el-menu>
   </div>
 </template>
+  
 <script>
 export default {
+  props: {
+    isCollapse: Boolean
+  },
   data() {
     return {
       menus: [
@@ -45,11 +57,6 @@ export default {
           name: '角色管理',
           path: '/home/role',
         },
-        {
-          url: require('@/assets/images/permissionManagement@3x.png'),
-          name: '权限管理',
-          path: '/home/permission',
-        },
         {
           url: require('@/assets/images/systemConfiguration@3x.png'),
           name: '系统配置',
@@ -142,41 +149,28 @@ export default {
           ]
         }
       ],
-    };
+    }
   },
-  methods: {
-    selectMenu(menu) {
-      console.log(menu, "当前选中的菜单");
-    },
-  },
-};
+}
 </script>
-
+  
 <style lang="less" scoped>
-.subMenu {
-  margin-left: 70px;
+/deep/.el-submenu__icon-arrow {
+  display: none;
 }
 
 .el-image {
-  position: absolute;
-  display: flex;
-  overflow: hidden;
-  top: 13px;
-
-  /deep/.el-image__inner {
-    vertical-align: middle;
-  }
+  position: relative;
+  overflow: auto;
+  float: left;
 }
 
-.el-menu-item {
-  padding: 0 0 0 15px !important;
-  font-size: 18px;
+/deep/.el-image__inner {
+  vertical-align: middle;
+  width: 30px;
+  height: 30px;
 }
 
-/deep/.el-submenu__title {
-  padding: 0 0 0 15px !important;
-  font-size: 18px;
-}
 
 /deep/.el-menu-item-group__title {
   padding: 0;
@@ -188,6 +182,18 @@ export default {
 
 /deep/.el-menu--inline> {
   border: none;
-  text-align: left;
+  text-align: -webkit-right;
+}
+
+.el-menu-item {
+  font-size: 18px;
+  padding: 0 40px;
+  cursor: pointer;
+}
+
+/deep/.el-submenu__title {
+  font-size: 18px;
+  padding: 0 40px;
 }
 </style>
+  

+ 0 - 32
src/layout/sidebar/Sidebar.vue

@@ -1,32 +0,0 @@
-<template>
-  <div>
-    <el-menu style="border: 0;" background-color="#266999" text-color="rgba(255, 255, 255, 1)" active-text-color="#ffd04b" :collapse="isCollapse"
-      :collapse-transition="false" router mode="vertical" :unique-opened="true">
-      <sidebarItem></sidebarItem>
-    </el-menu>
-  </div>
-</template>
-  
-<script>
-import sidebarItem from './sidebarItem'
-export default {
-  components: {
-    sidebarItem
-  },
-  name: "sidebar",
-  data() {
-    return {
-      isCollapse: false,
-    }
-  },
-
-}
-</script>
-  
-<style lang="less" scoped>
-
-/deep/.el-submenu__icon-arrow {
-  display: none;
-}
-</style>
-  

+ 27 - 2
src/router/index.js

@@ -11,28 +11,32 @@ const routes = [
   {
     path: '/login',
     name: 'login',
-
     component: () => import('../views/login/index.vue')
   },
   {
     path: '/home',
     name: 'home',
+    meta: { requrieAuth: true },
     redirect: '/home/user/person',
     component: () => import('../views/HomeView.vue'),
     children: [
       {
         path: 'user',
         name: 'user',
-        component: () => import('../views/userManagement/index.vue'),
+        meta: { requrieAuth: true },
+        redirect:'/home/user/person',
+        component:() => import('../views/userManagement/index.vue'),
         children: [
           {
             path: 'person',
             name: 'person',
+            meta: { requrieAuth: true },
             component: () => import('../views/userManagement/personManagement/index.vue'),
           },
           {
             path: 'group',
             name: 'group',
+            meta: { requrieAuth: true },
             component: () => import('../views/userManagement/groupManagement/index.vue'),
           },
         ]
@@ -40,31 +44,38 @@ const routes = [
       {
         path: 'role',
         name: 'role',
+        meta: { requrieAuth: true },
         component: () => import('../views/permissionManagement/roleOverview.vue')
       },
       {
         path: 'system',
         name: 'system',
+        meta: { requrieAuth: true },
+        redirect:'home/system/strategy',
         component: () => import('../views/systemManagement/index.vue'),
         children: [
           {
             path: 'strategy',
             name: 'strategy',
+            meta: { requrieAuth: true },
             component: () => import('../views/systemManagement/strategyConfiguration/index.vue')
           },
           {
             path: 'message',
             name: 'message',
+            meta: { requrieAuth: true },
             component: () => import('../views/systemManagement/messageConfiguration/commonMessage.vue')
           },
           {
             path: 'info',
             name: 'info',
+            meta: { requrieAuth: true },
             component: () => import('../views/systemManagement/infoConfiguration/index.vue')
           },
           {
             path: 'index',
             name: 'index',
+            meta: { requrieAuth: true },
             component: () => import('../views/systemManagement/indexConfiguration/index.vue')
           },
         ]
@@ -72,16 +83,19 @@ const routes = [
       {
         path: 'device',
         name: 'device',
+        meta: { requrieAuth: true },
         component: () => import('../views/deviceManagement/index.vue'),
         children: [
           {
             path: 'config',
             name: 'config',
+            meta: { requrieAuth: true },
             component: () => import('../views/deviceManagement/deviceConfig.vue'),
           },
           {
             path: 'warning',
             name: 'warning',
+            meta: { requrieAuth: true },
             component: () => import('../views/deviceManagement/deviceWarning.vue'),
           }
         ]
@@ -89,21 +103,25 @@ const routes = [
       {
         path: 'data',
         name: 'data',
+        meta: { requrieAuth: true },
         component: () => import('../views/dataManagement/index.vue'),
         children: [
           {
             path: 'statement',
             name: 'statement',
+            meta: { requrieAuth: true },
             component: () => import('../views/dataManagement/statementConfig.vue'),
           },
           {
             path: 'report',
             name: 'report',
+            meta: { requrieAuth: true },
             component: () => import('../views/dataManagement/reportConfig.vue'),
           },
           {
             path: 'basicInfo',
             name: 'basicInfo',
+            meta: { requrieAuth: true },
             component: () => import('../views/dataManagement/basicInfo/index.vue'),
           }
         ]
@@ -111,21 +129,25 @@ const routes = [
       {
         path: 'service',
         name: 'service',
+        meta: { requrieAuth: true },
         component: () => import('../views/servicesManagement/index.vue'),
         children: [
           {
             path: 'all',
             name: 'allServices',
+            meta: { requrieAuth: true },
             component: () => import('../views/servicesManagement/allServices.vue'),
           },
           {
             path: 'installed',
             name: 'installed',
+            meta: { requrieAuth: true },
             component: () => import('../views/servicesManagement/allServices.vue'),
           },
           {
             path: 'uninstall',
             name: 'uninstall',
+            meta: { requrieAuth: true },
             component: () => import('../views/servicesManagement/allServices.vue'),
           }
         ]
@@ -133,17 +155,20 @@ const routes = [
       {
         path: 'security',
         name: 'security',
+        meta: { requrieAuth: true },
         redirect: '/home/security/logMonitor',
         component: () => import('../views/securityManagement/index.vue'),
         children: [
           {
             path: 'logMonitor',
             name: 'logMonitor',
+            meta: { requrieAuth: true },
             component: () => import('../views/securityManagement/logMonitor.vue'),
           },
           {
             path: 'systemMonitor',
             name: 'systemMonitor',
+            meta: { requrieAuth: true },
             component: () => import('../views/securityManagement/systemMonitor/index.vue'),
           },
         ]

+ 39 - 43
src/store/modules/user.js

@@ -1,47 +1,43 @@
-import { login } from "@/api/login";
-import { getToken } from "@/utils/auth";
+import { login } from '@/api/login'
+import { getToken } from '@/utils/auth'
 const user = {
-  namespaced: true,
-  state: {
-    token: getToken(),
-    name: "",
-    avatar: "",
-    role: [],
-  },
-  mutations: {
-    SET_TOKEN: (state, token) => {
-      state.token = token;
+    namespaced: true,
+    state: {
+        token: getToken(),
+        name: '',
+        avatar: '',
+        role: []
     },
-    SET_NAME: (state, name) => {
-      state.name = name;
+    mutations: {
+        SET_TOKEN: (state, token) => {
+            state.token = token;
+        },
+        SET_NAME: (state, name) => {
+            state.name = name;
+        },
+        SET_AVATAR: (state, avatar) => {
+            state.avatar = avatar;
+        },
+        SET_ROLES: (state, roles) => {
+            state.roles = roles;
+        }
     },
-    SET_AVATAR: (state, avatar) => {
-      state.avatar = avatar;
+    actions: {
+        //登陆
+        login({ commit }, userInfo) {
+            const { username, password } = userInfo;
+            return new Promise((resolve, reject) => {
+                login({ username: username.trim(), password: password }).then(res => {
+                    const { data } = res;
+                    commit('SET_TOKEN', data.data);
+                    localStorage.setItem('Authorization',data.data);
+                    resolve(data);
+                }).catch(error => {
+                    console.log('登陆失败');
+                    reject(error);
+                })
+            })
+        },
     },
-    SET_ROLES: (state, roles) => {
-      state.roles = roles;
-    },
-  },
-  actions: {
-    //登陆
-    login({ commit }, userInfo) {
-      const { username, password } = userInfo;
-      return new Promise((resolve, reject) => {
-        login({ username: username.trim(), password: password })
-          .then((res) => {
-            debugger;
-            const { data } = res;
-            console.log(data);
-            commit("SET_TOKEN", data.data);
-            localStorage.setItem("Authorization", data.data);
-            resolve(data);
-          })
-          .catch((error) => {
-            console.log("登陆失败");
-            reject(error);
-          });
-      });
-    },
-  },
-};
-export default user;
+}
+export default user

+ 11 - 15
src/utils/request.js

@@ -12,26 +12,22 @@ const service = axios.create({
 // request interceptor
 service.interceptors.request.use(
   config => {
-    // do something before request is sent
-
-    // if (store.getters.token) {
-      // let each request carry token
-      // ['X-Token'] is a custom headers key
-      // please modify it according to the actual situation
-      // config.headers['X-Token'] = getToken()
-    // }
-    return config
+    const token = localStorage.getItem('Authorization');
+    if (token) {
+        //
+    }
+    return config;
   },
-  // error => {
-  //   // do something with request error
-  //   console.log(error) // for debug
-  //   return Promise.reject(error)
-  // }
+  error => {
+    console.log(error);
+    return Promise.reject(error);
+  }
 )
 
 // response interceptor
 service.interceptors.response.use((response) => {
-  return response
+  //
+  return response;
 })
 
 // service.interceptors.response.use(

+ 0 - 1
src/views/HomeView.vue

@@ -20,6 +20,5 @@ export default {
   width: 100%;
   height: 100%;
   overflow: hidden;
-
 }
 </style>

+ 0 - 5
src/views/LoginView.vue

@@ -1,5 +0,0 @@
-<template>
-  <div class="about">
-    <h1>This is an about page</h1>
-  </div>
-</template>

+ 2 - 5
src/views/dataManagement/basicInfo/index.vue

@@ -45,11 +45,8 @@ export default {
 </script>
 <style lang="less" scoped>
 .container {
-  position: absolute;
-  left: 218px;
-  top: 77px;
-  right: 16px;
-  bottom: 20px;
+  position: relative;
+  height: 100%;
   line-height: 20px;
   background-color: rgba(255, 255, 255, 1);
   color: rgba(16, 16, 16, 1);

+ 1 - 1
src/views/dataManagement/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <div>
+    <div style="height: 100%;">
        <router-view></router-view>
     </div>
 </template>

+ 28 - 64
src/views/dataManagement/reportConfig.vue

@@ -59,7 +59,6 @@
         </el-table-column>
         <el-table-column prop="templateFormat" label="模板格式">
         </el-table-column>
-        <el-table-column prop="reportType" label="报告类型"> </el-table-column>
         <el-table-column prop="createUser" label="创建用户"> </el-table-column>
         <el-table-column prop="createTime" label="创建时间"> </el-table-column>
         <el-table-column prop="alterTime" label="修改时间"> </el-table-column>
@@ -70,7 +69,7 @@
               size="mini"
               type="text"
               style="color: #2ea8e6"
-              >点击下载</el-button
+              >查看</el-button
             >
             <el-button
               v-show="scope.row.templateName == null ? false : true"
@@ -99,8 +98,6 @@
 <script>
 import checkbox from "@/components/Checkbox/index";
 import page from "@/components/pagination/index";
-import { addReportTemplate, getReportTemplateList } from "@/api/data/template";
-
 export default {
   components: { checkbox, page },
   data() {
@@ -149,31 +146,29 @@ export default {
           label: "月度报告",
         },
       ],
-      tableData: [],
-
-      // tableData: [
-      //   {
-      //     templateName: "模板1",
-      //     templateFormat: "txt",
-      //     createUser: "test",
-      //     createTime: "2023-01-01 00:00",
-      //     alterTime: "2023-01-01 00:00",
-      //   },
-      //   {
-      //     templateName: "模板1",
-      //     templateFormat: "txt",
-      //     createUser: "test",
-      //     createTime: "2023-01-01 00:00",
-      //     alterTime: "2023-01-01 00:00",
-      //   },
-      //   {
-      //     templateName: "模板1",
-      //     templateFormat: "txt",
-      //     createUser: "test",
-      //     createTime: "2023-01-01 00:00",
-      //     alterTime: "2023-01-01 00:00",
-      //   },
-      // ],
+      tableData: [
+        {
+          templateName: "模板1",
+          templateFormat: "txt",
+          createUser: "test",
+          createTime: "2023-01-01 00:00",
+          alterTime: "2023-01-01 00:00",
+        },
+        {
+          templateName: "模板1",
+          templateFormat: "txt",
+          createUser: "test",
+          createTime: "2023-01-01 00:00",
+          alterTime: "2023-01-01 00:00",
+        },
+        {
+          templateName: "模板1",
+          templateFormat: "txt",
+          createUser: "test",
+          createTime: "2023-01-01 00:00",
+          alterTime: "2023-01-01 00:00",
+        },
+      ],
       defaultProps: {
         children: "children",
         label: "label",
@@ -212,36 +207,8 @@ export default {
       if (!value) return true;
       return data.label.indexOf(value) !== -1;
     },
-    getTableData(val) {
-      this.tableData = [];
-      getReportTemplateList(
-        val,
-        this.currentPageSize,
-        1,
-        this.form.templateName,
-        this.form.templateFormat,
-        this.form.reportType
-      ).then((res) => {
-        if (res.data.code === 0 && res.data.data.length > 0) {
-          this.tableData = res.data.data.map((v) => {
-            return {
-              id: v.id,
-              templateName: v.name,
-              templateFormat: v.format,
-              reportType: v.report_type || "--",
-              createUser: v.creator,
-              createTime: v.create_time,
-              alterTime: v.update_time,
-              templateUrl: v.template_url,
-            };
-          });
-        }
-      });
-    },
-    handleSizeChange(val) {
-      this.currentPageSize = val;
-      this.getTableData(this.currentPage);
-    },
+    getTableData(val) {},
+    handleSizeChange(val) {},
     handleSelectionChange(val) {
       this.multipleSelection = val;
     },
@@ -251,11 +218,8 @@ export default {
 
 <style lang="less" scoped>
 .container {
-  position: absolute;
-  left: 218px;
-  top: 80px;
-  right: 16px;
-  bottom: 20px;
+  position: relative;
+  height: 100%;
   line-height: 20px;
   background-color: rgba(255, 255, 255, 1);
   color: rgba(16, 16, 16, 1);

+ 28 - 62
src/views/dataManagement/statementConfig.vue

@@ -59,7 +59,7 @@
               size="mini"
               type="text"
               style="color: #2ea8e6"
-              >点击下载</el-button
+              >查看</el-button
             >
             <el-button
               v-show="scope.row.templateName == null ? false : true"
@@ -88,7 +88,6 @@
 <script>
 import checkbox from "@/components/Checkbox/index";
 import page from "@/components/pagination/index";
-import { addTableTemplate, getTableTemplateList } from "@/api/data/template";
 export default {
   components: { checkbox, page },
   data() {
@@ -100,30 +99,29 @@ export default {
         templateName: "",
         templateForm: "",
       },
-      tableData: [],
-      // tableData: [
-      //   {
-      //     templateName: "模板1",
-      //     templateForm: "txt",
-      //     createUser: "test",
-      //     createTime: "2023-01-01 00:00",
-      //     alterTime: "2023-01-01 00:00",
-      //   },
-      //   {
-      //     templateName: "模板1",
-      //     templateForm: "txt",
-      //     createUser: "test",
-      //     createTime: "2023-01-01 00:00",
-      //     alterTime: "2023-01-01 00:00",
-      //   },
-      //   {
-      //     templateName: "模板1",
-      //     templateForm: "txt",
-      //     createUser: "test",
-      //     createTime: "2023-01-01 00:00",
-      //     alterTime: "2023-01-01 00:00",
-      //   },
-      // ],
+      tableData: [
+        {
+          templateName: "模板1",
+          templateForm: "txt",
+          createUser: "test",
+          createTime: "2023-01-01 00:00",
+          alterTime: "2023-01-01 00:00",
+        },
+        {
+          templateName: "模板1",
+          templateForm: "txt",
+          createUser: "test",
+          createTime: "2023-01-01 00:00",
+          alterTime: "2023-01-01 00:00",
+        },
+        {
+          templateName: "模板1",
+          templateForm: "txt",
+          createUser: "test",
+          createTime: "2023-01-01 00:00",
+          alterTime: "2023-01-01 00:00",
+        },
+      ],
       temFormatOptions: [
         {
           value: "",
@@ -170,41 +168,12 @@ export default {
       this.$refs.search.filter(val);
     },
   },
-  mounted() {
-    this.initData();
-  },
   methods: {
     initData() {
       this.getTableData(1);
     },
-    getTableData(val) {
-      this.tableData = [];
-      getTableTemplateList(
-        val,
-        this.currentPageSize,
-        0,
-        this.form.templateName,
-        this.form.templateForm
-      ).then((res) => {
-        if (res.data.code === 0 && res.data.data.length > 0) {
-          this.tableData = res.data.data.map((v) => {
-            return {
-              id: v.id,
-              templateName: v.name,
-              templateForm: v.format,
-              createUser: v.creator,
-              createTime: v.create_time,
-              alterTime: v.update_time,
-              templateUrl: v.template_url,
-            };
-          });
-        }
-      });
-    },
-    handleSizeChange(val) {
-      this.currentPageSize = val
-      this.getTableData(this.currentPage)
-    },
+    getTableData(val) {},
+    handleSizeChange(val) {},
     handleSelectionChange(val) {
       this.multipleSelection = val;
     },
@@ -218,11 +187,8 @@ export default {
 
 <style lang="less" scoped>
 .container {
-  position: absolute;
-  left: 218px;
-  top: 80px;
-  right: 16px;
-  bottom: 20px;
+  position: relative;
+  height: 100%;
   line-height: 20px;
   background-color: rgba(255, 255, 255, 1);
   color: rgba(16, 16, 16, 1);

+ 1 - 1
src/views/deviceManagement/messageDailog/addDevice.vue

@@ -5,7 +5,7 @@
       class="dialog"
       title="添加设备"
       :visible.sync="dialogVisible"
-      width="500px"
+      width="25%"
       center
     >
       <el-divider></el-divider>

+ 1 - 1
src/views/deviceManagement/messageDailog/dataImport.vue

@@ -5,7 +5,7 @@
       class="dialog"
       title="批量导入数据"
       :visible.sync="dialogVisible"
-      width="500px"
+      width="25%"
       center
     >
       <el-divider></el-divider>

+ 42 - 27
src/views/login/index.vue

@@ -6,8 +6,7 @@
         <div class="content">
             <el-tabs :stretch="true">
                 <el-tab-pane label="账户登录">
-                    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" autocomplete="on"
-                        label-position="left">
+                    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" autocomplete="on" label-position="left">
                         <el-form-item prop="username">
                             <el-input class="username" ref="username" type="text" placeholder="账户/邮件账户" clearable
                                 v-model="loginForm.username"></el-input>
@@ -33,14 +32,18 @@
                     </el-form>
                 </el-tab-pane>
                 <el-tab-pane label="手机登陆">
-                    <el-form ref="loginForm2" :model="loginForm2" :rules="loginRules2" class="login-form" autocomplete="on">
+                    <el-form ref="phoneForm" :model="phoneForm" :rules="phoneFormRules" autocomplete="on">
                         <el-form-item prop="phone">
-                            <el-input class="phone" placeholder="请输入手机号码" clearable v-model="loginForm2.phone"></el-input>
+                            <el-input class="phone" placeholder="请输入手机号码" clearable v-model="phoneForm.phone"></el-input>
                         </el-form-item>
                         <el-form-item class="vertification">
                             <el-input style="width: 160px;display: flex;" placeholder="请输入验证码"
-                                v-model="loginForm2.vertification"></el-input>
-                            <el-button class="phone_vertification" type="primary" @click="getVetifiedCode">获取验证码</el-button>
+                                v-model="phoneForm.vertification"></el-input>
+                            <el-button class="phone_vertification" type="primary" @click="getVetifiedCode"
+                                :disabled="sendCodeLoading">
+                                <span v-if="!sendCodeLoading">发送验证码</span>
+                                <span v-if="sendCodeLoading">{{ countdown }}s 后重新发送</span>
+                            </el-button>
                         </el-form-item>
                         <el-form-item style="margin-top:60px">
                             <el-button :loading="loading" type="primary" @click.native.prevent="phoneHandleLogin">登
@@ -75,7 +78,7 @@ export default {
         const validatePhone = (rule, value, callback) => {
             if (value === '') {
                 callback(new Error('手机号不能为空!'));
-            } else if (!/^1\d{10}$/.test(value)) {
+            } else if (!/^1[3456789]\d{9}$/.test(value)) {
                 callback(new Error('手机号格式错误!'));
             } else {
                 callback();
@@ -86,38 +89,29 @@ export default {
             loginForm: {
                 username: 'user001',
                 password: '123456',
-                remeber:''
+                remeber: ''
             },
             vertification: '',
-            loginForm2: {
+            phoneForm: {
                 phone: '',
                 vertification: ''
             },
+            countdown: 0,
+            countdownInterval: null,
             loginRules: {
                 username: [{ required: true, trigger: 'blur', validator: validateUsername }],
                 password: [{ required: true, trigger: 'blur', validator: validatePassword }]
             },
-            loginRules2: {
+            phoneFormRules: {
                 phone: [{ required: true, trigger: 'blur', validator: validatePhone }],
 
             },
             loading: false,
+            sendCodeLoading: false,
             identifyCodes: '1234567890abcdefjhijklinopqrsduvwxyz',//随机串内容
             identifyCode: '',
-            //redirect: undefined
         }
     },
-    // watch: {
-    //     $route: {
-    //         handler: function (route) {
-    //             const query = route.query;
-    //             if (query) {
-    //                 this.redirect = query.redirect;
-    //             }
-    //         },
-    //         immediate: true
-    //     }
-    // },
     methods: {
         //登录验证
         handleLogin() {
@@ -130,7 +124,7 @@ export default {
                         this.loading = true;
                         this.$store.dispatch('user/login', this.loginForm).then((res) => {
                             if (res.code === 0) {
-                                this.$message.success(res.message);
+                                //this.$message.success(res.message);
                                 this.$router.push({ path: '/home' });
                                 this.loading = false;
                             } else {
@@ -159,8 +153,28 @@ export default {
         randomNum(min, max) {
             return Math.floor(Math.random() * (max - min) + min);
         },
-        getVetifiedCode() {
+        phoneHandleLogin() {
             //
+        },
+        getVetifiedCode() {
+            clearInterval(this.countdownInterval);
+            this.$refs.phoneForm.validateField('phone', valid => {
+                if (!valid) {
+                    this.$message.success('发送成功');
+                    this.sendCodeLoading = true;
+                    this.countdown = 30;
+
+                    this.countdownInterval = setInterval(() => {
+                        if (this.countdown > 0 && this.countdown <= 30) {
+                            this.countdown--;
+                        } else {
+                            this.sendCodeLoading = false;
+                            clearInterval(this.countdownInterval);
+                            this.countdownInterval = null;
+                        }
+                    }, 1000);
+                }
+            })
         }
     },
     mounted() {
@@ -169,6 +183,7 @@ export default {
         } else if (this.loginForm.password === '') {
             this.$refs.password.focus();
         };
+        clearInterval(this.countdownInterval);
 
         //初始化验证码
         this.identifyCode = '';
@@ -208,9 +223,9 @@ export default {
     height: 400px;
     right: 300px;
     width: 400px;
+    border: 2px solid #deebf3;
+    border-radius: 4px;
     background-color: #ffffff;
-    border-radius: 5px;
-    box-shadow: 2px 2px lightgrey;
 
     .el-form-item {
         width: 300px;
@@ -254,7 +269,7 @@ export default {
 
 .phone_vertification {
     width: 130px !important;
-    font-size: 18px;
+    font-size: 14px !important;
     height: 40px;
     margin-left: 10px;
     padding: 5px;

+ 2 - 6
src/views/permissionManagement/roleOverview.vue

@@ -112,12 +112,8 @@ export default {
 </script>
 <style lang="less" scoped>
 .container {
-    position: fixed;
-    left: 218px;
-    top: 77px;
-    right: 16px;
-    height: -webkit-fill-available;
-    margin-bottom: 20px;
+    position: relative;
+    height: 100%;
     line-height: 20px;
     background-color: rgba(255, 255, 255, 1);
     color: rgba(16, 16, 16, 1);

+ 1 - 1
src/views/securityManagement/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div style="height: 100%;">
     <!-- <div class="el-tab">
       <el-tabs v-model="activeName">
         <el-tab-pane label="日志监控" name="logMonitor"> </el-tab-pane>

+ 2 - 5
src/views/securityManagement/logMonitor.vue

@@ -309,11 +309,8 @@ export default {
 
 <style lang="less" scoped>
 .container {
-  position: absolute;
-  left: 218px;
-  top: 80px;
-  right: 16px;
-  bottom: 20px;
+  position: relative;
+  height: 100%;
   line-height: 20px;
   background-color: rgba(255, 255, 255, 1);
   color: rgba(16, 16, 16, 1);

+ 2 - 5
src/views/securityManagement/systemMonitor/index.vue

@@ -34,11 +34,8 @@ export default {
 </script>
 <style lang="less" scoped>
 .container {
-  position: absolute;
-  left: 218px;
-  top: 80px;
-  right: 16px;
-  bottom: 20px;
+  position: relative;
+  height: 100%;
   line-height: 20px;
   background-color: rgba(255, 255, 255, 1);
   color: rgba(16, 16, 16, 1);

+ 144 - 238
src/views/servicesManagement/allServices.vue

@@ -1,80 +1,49 @@
 <template>
-  <div class="content">
-    <el-input
-      class="search"
-      v-model="input"
-      placeholder="请输入"
-      suffix-icon="el-icon-search"
-    ></el-input>
-    <el-table
-      ref="multipleTable"
-      :data="tableData"
-      tooltip-effect="dark"
-      :header-cell-style="{ textAlign: 'center' }"
-      :cell-style="{ textAlign: 'center' }"
-      style="width: 95%"
-      @selection-change="handleSelectionChange"
-    >
-      <el-table-column type="selection" width="50"> </el-table-column>
-      <el-table-column prop="photo">
-        <template slot-scope="scope">
-          <el-image
-            :src="scope.row.photo"
-            style="width: 40px; height: 40px"
-            :preview-src-list="[scope.row.photo]"
-          ></el-image>
-        </template>
-      </el-table-column>
-      <el-table-column prop="introduction">
-        <template slot-scope="scope">
-          <el-descriptions :title="scope.row.name">
-            <el-descriptions-item label="功能简介">{{
-              scope.row.introduction
-            }}</el-descriptions-item>
-          </el-descriptions>
-        </template>
-      </el-table-column>
-      <el-table-column prop="updatetime">
-        <template slot-scope="scope">
-          <el-form label-position="right" label-width="110px">
-            <el-form-item label="版本号:">
-              <el-select v-model="form.version">
-                <el-option value="v1.0"></el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item label="更新时间:">
-              <span style="margin-right: 110px">{{
-                scope.row.updatetime
-              }}</span>
-            </el-form-item>
-          </el-form>
-        </template>
-      </el-table-column>
-      <el-table-column prop="operation">
-        <template slot-scope="scope">
-          <el-button
-            style="width: 80px; height: 40px"
-            :type="
-              scope.row.status == '1'
-                ? 'primary'
-                : scope.row.status == '2'
-                ? 'info'
-                : 'danger'
-            "
-          >
-            {{
-              scope.row.status == "1"
-                ? "安装"
-                : scope.row.status == "2"
-                ? "未配置"
-                : "卸载"
-            }}
-          </el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <div class="bottom">
-      <!-- <div>
+    <div class="content">
+        <el-input class="search" v-model="input" placeholder="请输入" suffix-icon="el-icon-search"></el-input>
+        <el-table ref="multipleTable" border :data="tableData" tooltip-effect="dark" :show-header="false"
+            :header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }" style="width: 95%"
+            @selection-change="handleSelectionChange">
+            <el-table-column type="selection" width="50">
+            </el-table-column>
+            <el-table-column prop="photo">
+                <template slot-scope="scope">
+                    <el-image :src="scope.row.photo" style="width: 40px; height: 40px;"
+                        :preview-src-list="[scope.row.photo]"></el-image>
+                </template>
+            </el-table-column>
+            <el-table-column prop="introduction">
+                <template slot-scope="scope">
+                    <el-descriptions :title="scope.row.name">
+                        <el-descriptions-item label="功能简介">{{ scope.row.introduction }}</el-descriptions-item>
+                    </el-descriptions>
+                </template>
+            </el-table-column>
+            <el-table-column prop="updatetime">
+                <template slot-scope="scope">
+                    <el-form label-position="right" label-width="100px" v-model="form">
+                        <el-form-item label="版本号:">
+                            <el-select v-model="form.version">
+                                <el-option value="v1.0"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="更新时间:">
+                            <span style="margin-right: 110px;">{{ scope.row.updatetime }}</span>
+                        </el-form-item>
+                    </el-form>
+                </template>
+            </el-table-column>
+            <el-table-column prop="operation">
+                <template slot-scope="scope">
+                    <el-button style="width: 80px; height: 40px;"
+                        :type="scope.row.status == '1' ? 'primary' : scope.row.status == '2' ? 'info' : 'danger'">
+                        {{ scope.row.status == '1' ? '安装' : scope.row.status == '2' ? '未配置' : '卸载' }}
+                    </el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="bottom">
+            <div>
                 <checkbox class="checkbox" :total="total"></checkbox>
                 <el-button class="check-cancel" size="mini" type="text" @click="cancleChecked">取消</el-button>
             </div>
@@ -84,200 +53,137 @@
                 <el-button class="disabled" type="text">批量激活</el-button>
                 <el-divider direction="vertical"></el-divider>
                 <el-button class="export" type="text">导出数据</el-button>
-            </div> -->
-      <page :paginationData="paginationData"></page>
+            </div>
+            <page></page>
+        </div>
     </div>
-  </div>
 </template>
 
-<script>
-import checkbox from "@/components/Checkbox/index";
-import page from "@/components/pagination/index";
+<script >
+import checkbox from '@/components/Checkbox/index'
+import page from '@/components/pagination/index'
 export default {
-  components: { checkbox, page },
-  data() {
-    return {
-      input: "",
-      show: true,
-      total: 0,
-      form: {},
-      tableData: [
-        {
-          photo:
-            "https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
-          updatetime: "2023-01-01 00:00",
-          name: "海康威视软件包",
-          introduction: "xxxxxxxxxxxxx",
-          status: "1",
-        },
-        {
-          photo:
-            "https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
-          updatetime: "2023-01-01 00:00",
-          name: "海康威视软件包",
-          introduction: "xxxxxxxxxxxxx",
-          status: "2",
-        },
-        {
-          photo:
-            "https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
-          updatetime: "2023-01-01 00:00",
-          name: "海康威视软件包",
-          introduction: "xxxxxxxxxxxxx",
-          status: "3",
-        },
-      ],
-      paginationData: {
-        pageSize: 10,
-        pagerCount: 5,
-        currentPage: 1,
-        pageSizes: [5, 10, 20, 30],
-        total: 30,
-        currentChange: (val) => {
-          this.getTableData(val);
-        },
-        handleSizeChange: (val) => {
-          this.handleSizeChange(val);
-        },
-      },
-    };
-  },
-  methods: {
-    handleSelectionChange() {
-      //
+    components: { checkbox, page },
+    data() {
+        return {
+            input: '',
+            show: true,
+            total: 0,
+            form: {},
+            tableData: [
+                {
+                    photo: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
+                    updatetime: '2023-01-01 00:00',
+                    name: '海康威视软件包',
+                    introduction: 'xxxxxxxxxxxxx',
+                    status: '1'
+                },
+                {
+                    photo: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
+                    updatetime: '2023-01-01 00:00',
+                    name: '海康威视软件包',
+                    introduction: 'xxxxxxxxxxxxx',
+                    status: '2'
+                },
+                {
+                    photo: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
+                    updatetime: '2023-01-01 00:00',
+                    name: '海康威视软件包',
+                    introduction: 'xxxxxxxxxxxxx',
+                    status: '3'
+                },
+            ]
+        }
     },
-    getTableData(val) {},
-    handleSizeChange(val) {},
-  },
+    methods: {
+        handleSelectionChange() {
+            //
+        },
+        cancleChecked() {
+            //
+        }
+    }
 };
 </script>
 <style lang="less" scoped>
 .content {
-  top: 77px;
-  position: absolute;
-  left: 218px;
-  right: 16px;
-  height: -webkit-fill-available;
-  margin-bottom: 20px;
-  background-color: #ffffff;
+    position: relative;
+    height: 100%;
+    background-color: #ffffff;
 }
 
 .el-table {
-  top: 100px;
-  margin-left: 2.5%;
-  border: 1px solid #f0f2f2;
-  font-size: 0.95rem;
-  font-family: PingFang SC;
-  font-weight: 500;
-  color: #b2b2b2;
-  background: rgba(255, 255, 255, 0.8);
-  /deep/th {
-    background: #f7fbff;
-  }
-  /deep/.el-checkbox {
-    color: #b2b2b2;
-    .el-checkbox__input.is-checked + .el-checkbox__label {
-      color: #2ea8e6;
-    }
-
-    .el-checkbox__input.is-checked .el-checkbox__inner::after {
-      width: 70%;
-      height: 70%;
-      background: #2ea8e6;
-      border-radius: 0;
-      transform: rotate(0deg) scaleY(1);
-      position: static;
-      // border: 1px solid #8DD9FF;
-    }
-
-    .el-checkbox__inner {
-      border: 1px solid #8dd9ff;
-      background: rgba(0, 170, 255, 0);
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      position: static;
-      &::after {
-        transition: 0ms;
-      }
-    }
-
-    .el-checkbox__label {
-      padding-left: 0;
-      font-size: 15px;
-      position: absolute;
-      top: 1px;
-      left: 25px;
-    }
-  }
+    top: 100px;
+    margin-left: 2.5%;
 }
 
 .el-form-item {
-  margin-bottom: 0 !important;
+    margin-bottom: 0 !important;
 }
 
 /deep/.el-form-item__label {
-  padding: 0;
+    padding: 0;
 }
 
 /deep/.el-form-item__content {
-  margin-right: 8px;
+    margin-right: 8px;
 }
 
 .bottom {
-  position: absolute;
-  left: 20px;
-  right: 16px;
-  bottom: 20px;
-  height: 50px;
-  line-height: 20px;
-  background-color: rgba(255, 255, 255, 1);
-  text-align: center;
-
-  .checkbox {
     position: absolute;
-    left: 29px;
-    top: 15px;
-    font-size: 14px;
-  }
-
-  .check-cancel {
-    position: absolute;
-    // line-height: 20px;
-    font-size: 14px;
+    left: 20px;
+    right: 16px;
+    bottom: 20px;
+    height: 50px;
+    line-height: 20px;
+    background-color: rgba(255, 255, 255, 1);
     text-align: center;
-    left: 140px;
-    top: 10px;
-  }
-
-  .bottom_button {
-    position: absolute;
-    left: 200px;
-    margin-top: 15px;
 
-    .delete {
-      font-size: 14px;
-      text-align: center;
-      padding: 1px;
+    .checkbox {
+        position: absolute;
+        left: 29px;
+        top: 15px;
+        font-size: 14px;
     }
 
-    .disabled {
-      font-size: 14px;
-      text-align: center;
-      padding: 1px;
+    .check-cancel {
+        position: absolute;
+        // line-height: 20px;
+        font-size: 14px;
+        text-align: center;
+        left: 140px;
+        top: 10px;
     }
 
-    .export {
-      font-size: 14px;
-      text-align: center;
-      padding: 1px;
+    .bottom_button {
+        position: absolute;
+        left: 200px;
+        margin-top: 15px;
+
+        .delete {
+            font-size: 14px;
+            text-align: center;
+            padding: 1px;
+        }
+
+        .disabled {
+            font-size: 14px;
+            text-align: center;
+            padding: 1px;
+        }
+
+        .export {
+            font-size: 14px;
+            text-align: center;
+            padding: 1px;
+        }
     }
-  }
 }
+
 .search {
-  position: absolute;
-  width: 300px;
-  top: 20px;
-  right: 2.5%;
+    position: absolute;
+    width: 300px;
+    top: 20px;
+    right: 2.5%;
 }
-</style>
+</style>

+ 1 - 1
src/views/servicesManagement/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <div>
+    <div style="height: 100%;">
         <router-view></router-view>
     </div>
 </template>

+ 1 - 3
src/views/systemManagement/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <div>
+    <div style="height: 100%;">
         <router-view></router-view>
     </div>
 </template>
@@ -10,8 +10,6 @@ export default {
         return {
         }
     },
-    methods: {
-    }
 };
 </script>
 <style lang="less" scoped>

+ 5 - 8
src/views/systemManagement/indexConfiguration/index.vue

@@ -14,24 +14,21 @@
 <script>
 import SmartBoard from './smartBoard'
 export default {
-    components:{SmartBoard},
+    components: { SmartBoard },
     data() {
         return {}
     }
 }
 </script>
 <style lang="less" scoped>
-.container{
-    position: absolute;
-    left: 218px;
-    right: 16px;
-    top: 77px;
-    height: 800px;
-    line-height: 20px;
+.container {
+    position: relative;
+    height: 100%;
     background-color: rgba(255, 255, 255, 1);
     text-align: center;
     box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.15);
 }
+
 .header {
     text-align: left;
     padding: 15px;

+ 1 - 5
src/views/systemManagement/indexConfiguration/smartBoard.vue

@@ -121,11 +121,7 @@ export default {
 
 <style lang="less" scoped>
 .sub-container {
-    position: fixed;
-    left: 218px;
-    top: 150px;
-    right: 16px;
-    bottom: 20px;
+    position: relative;
     line-height: 20px;
     background-color: rgba(255, 255, 255, 1);
     color: rgba(16, 16, 16, 1);

+ 2 - 5
src/views/systemManagement/infoConfiguration/index.vue

@@ -60,11 +60,8 @@ export default {
 
 <style lang="less" scoped>
 .container {
-    position: fixed;
-    left: 218px;
-    top: 77px;
-    right: 16px;
-    bottom:20px;
+    position: relative;
+    height: 100%;
     line-height: 20px;
     background-color: rgba(255, 255, 255, 1);
     color: rgba(16, 16, 16, 1);

+ 2 - 5
src/views/systemManagement/messageConfiguration/commonMessage.vue

@@ -139,11 +139,8 @@ export default {
 
 <style lang="less" scoped>
 .container {
-    position: fixed;
-    left: 218px;
-    top: 77px;
-    right: 16px;
-    bottom: 20px;
+    position: relative;
+    height: 100%;
     line-height: 20px;
     background-color: rgba(255, 255, 255, 1);
     color: rgba(16, 16, 16, 1);

+ 2 - 5
src/views/systemManagement/strategyConfiguration/index.vue

@@ -20,11 +20,8 @@ export default {
 </script>
 <style lang="less" scoped>
 .container{
-    position: absolute;
-    left: 218px;
-    right: 16px;
-    top: 77px;
-    height: 800px;
+    position: relative;
+    height: 100%;
     line-height: 20px;
     background-color: rgba(255, 255, 255, 1);
     text-align: center;

+ 26 - 28
src/views/systemManagement/strategyConfiguration/smartMeeting.vue

@@ -12,13 +12,16 @@
             </div>
             <div style="display: flex; margin-left: 20px;">
                 <div>
-                    <el-tree :data="data1" :default-checked-keys="[1]" :props="defaultProps" show-checkbox node-key="id" @node-click="handleNodeClick">
+                    <el-tree :data="data1" :default-checked-keys="[1]" :props="defaultProps" show-checkbox node-key="id"
+                        @node-click="handleNodeClick">
                     </el-tree>
-                    <el-tree :data="data2" :default-checked-keys="[1]" :props="defaultProps" show-checkbox node-key="id" @node-click="handleNodeClick">
+                    <el-tree :data="data2" :default-checked-keys="[1]" :props="defaultProps" show-checkbox node-key="id"
+                        @node-click="handleNodeClick">
                     </el-tree>
                 </div>
                 <div style="margin-left: 200px">
-                    <el-tree :data="data3" :default-checked-keys="[1]" :props="defaultProps" show-checkbox node-key="id" @node-click="handleNodeClick">
+                    <el-tree :data="data3" :default-checked-keys="[1]" :props="defaultProps" show-checkbox node-key="id"
+                        @node-click="handleNodeClick">
                     </el-tree>
                     <el-tree :data="data4" :props="defaultProps" show-checkbox node-key="id" @node-click="handleNodeClick">
                     </el-tree>
@@ -56,31 +59,31 @@ export default {
                     }]
                 }
             ],
-            data1:[{
-                id:1,
-                label:'闸机系统-人脸门禁设备',
-                children:[{
+            data1: [{
+                id: 1,
+                label: '闸机系统-人脸门禁设备',
+                children: [{
 
                 }]
             }],
-            data2:[{
-                id:1,
-                label:'能源系统-灯光控制设备',
-                children:[{
-                    
+            data2: [{
+                id: 1,
+                label: '能源系统-灯光控制设备',
+                children: [{
+
                 }]
             }],
-            data3:[{
-                id:1,
-                label:'能源系统-空调控制设备',
-                children:[{
-                    
+            data3: [{
+                id: 1,
+                label: '能源系统-空调控制设备',
+                children: [{
+
                 }]
             }],
-            data4:[{
-                label:'能源系统-灯光控制设备',
-                children:[{
-                    
+            data4: [{
+                label: '能源系统-灯光控制设备',
+                children: [{
+
                 }]
             }],
             defaultProps: {
@@ -105,11 +108,7 @@ export default {
 
 <style lang="less" scoped>
 .sub-container {
-    position: fixed;
-    left: 218px;
-    top: 150px;
-    right: 16px;
-    bottom: 20px;
+    position: relative;
     line-height: 20px;
     background-color: rgba(255, 255, 255, 1);
     color: rgba(16, 16, 16, 1);
@@ -141,5 +140,4 @@ export default {
             font-size: 25px;
         }
     }
-}
-</style>
+}</style>

+ 12 - 18
src/views/userManagement/groupManagement/index.vue

@@ -1,16 +1,14 @@
 <template>
-    <div>
-        <div class="container">
-            <div class="left-pane">
-                <el-input placeholder="请输入关键字" suffix-icon="el-icon-search" v-model="filterText"></el-input>
-                <el-tree ref="tree" :data="data" :props="defaultProps" node-key="id" default-expand-all
-                    :filter-node-method="filterNode" @node-click="handleNodeClick">
-                </el-tree>
-                <el-button><i class="el-icon-s-order"></i>添加公司</el-button>
-            </div>
-            <div class="right-pane">
-                <DepartmentdetailEdit></DepartmentdetailEdit>
-            </div>
+    <div class="container">
+        <div class="left-pane">
+            <el-input placeholder="请输入关键字" suffix-icon="el-icon-search" v-model="filterText"></el-input>
+            <el-tree ref="tree" :data="data" :props="defaultProps" node-key="id" default-expand-all
+                :filter-node-method="filterNode" @node-click="handleNodeClick">
+            </el-tree>
+            <el-button><i class="el-icon-s-order"></i>添加公司</el-button>
+        </div>
+        <div class="right-pane">
+            <DepartmentdetailEdit></DepartmentdetailEdit>
         </div>
     </div>
 </template>
@@ -59,12 +57,8 @@ export default {
 
 <style lang="less" scoped>
 .container {
-    position: fixed;
-    left: 218px;
-    top: 77px;
-    right: 16px;
-    height: -webkit-fill-available;
-    margin-bottom: 20px;
+    position: relative;
+    height: 100%;
     line-height: 20px;
     background-color: rgba(255, 255, 255, 1);
     color: rgba(16, 16, 16, 1);

+ 1 - 4
src/views/userManagement/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <div>
+    <div style="height: 100%;">
         <router-view></router-view>
     </div>
 </template>
@@ -10,9 +10,6 @@ export default {
         return {
         }
     },
-    methods: {
-
-    }
 };
 </script>
 <style lang="less" scoped>

+ 2 - 6
src/views/userManagement/personManagement/index.vue

@@ -57,12 +57,8 @@ export default {
 
 <style lang="less" scoped>
 .container {
-    position: fixed;
-    left: 218px;
-    top: 77px;
-    right: 16px;
-    height: -webkit-fill-available;
-    margin-bottom: 20px;
+    position: relative;
+    height:100%;
     line-height: 20px;
     background-color: rgba(255, 255, 255, 1);
     color: rgba(16, 16, 16, 1);