root 1 год назад
Родитель
Сommit
c0e173f292
99 измененных файлов с 5148 добавлено и 139 удалено
  1. 1 1
      .env
  2. 1 0
      .gitignore
  3. 31 22
      index.html
  4. 24 0
      mock/index.ts
  5. 4 0
      package.json
  6. BIN
      plane.zip
  7. 1247 0
      public/css/base.css
  8. BIN
      public/img/background.png
  9. BIN
      public/img/down1.png
  10. BIN
      public/img/find.png
  11. BIN
      public/img/find01.png
  12. BIN
      public/img/info_1.png
  13. BIN
      public/img/info_2.png
  14. BIN
      public/img/info_4.png
  15. BIN
      public/img/info_5.png
  16. BIN
      public/img/info_6.png
  17. BIN
      public/img/info_7.png
  18. BIN
      public/img/logoBg.png
  19. BIN
      public/img/map_photo.png
  20. BIN
      public/img/nav_1.png
  21. BIN
      public/img/nav_2.png
  22. BIN
      public/img/nav_3.png
  23. BIN
      public/img/nav_4.png
  24. BIN
      public/img/nav_5.png
  25. BIN
      public/img/nav_6.png
  26. BIN
      public/img/nav_7.png
  27. BIN
      public/img/nav_9.png
  28. BIN
      public/img/page.png
  29. BIN
      public/img/title_1.png
  30. BIN
      public/img/title_2.png
  31. BIN
      public/img/title_3.png
  32. BIN
      public/img/title_4.png
  33. BIN
      public/img/title_5.png
  34. BIN
      public/img/zTreeStandard.png
  35. 67 0
      public/js/map.js
  36. 12 0
      src/App.vue
  37. BIN
      src/assets/bigScreen/close.png
  38. BIN
      src/assets/bigScreen/close_bottom.png
  39. BIN
      src/assets/bigScreen/down1.png
  40. BIN
      src/assets/bigScreen/expand.png
  41. BIN
      src/assets/bigScreen/expand_bottom.png
  42. BIN
      src/assets/bigScreen/find.png
  43. BIN
      src/assets/bigScreen/find01.png
  44. BIN
      src/assets/bigScreen/info_1.png
  45. BIN
      src/assets/bigScreen/info_2.png
  46. BIN
      src/assets/bigScreen/info_4.png
  47. BIN
      src/assets/bigScreen/info_5.png
  48. BIN
      src/assets/bigScreen/info_6.png
  49. BIN
      src/assets/bigScreen/info_7.png
  50. BIN
      src/assets/bigScreen/logoBg.png
  51. BIN
      src/assets/bigScreen/map_photo.png
  52. BIN
      src/assets/bigScreen/nav_1.png
  53. BIN
      src/assets/bigScreen/nav_2.png
  54. BIN
      src/assets/bigScreen/nav_3.png
  55. BIN
      src/assets/bigScreen/nav_4.png
  56. BIN
      src/assets/bigScreen/nav_5.png
  57. BIN
      src/assets/bigScreen/nav_6.png
  58. BIN
      src/assets/bigScreen/nav_7.png
  59. BIN
      src/assets/bigScreen/nav_9.png
  60. BIN
      src/assets/bigScreen/page.png
  61. BIN
      src/assets/bigScreen/title_1.png
  62. BIN
      src/assets/bigScreen/title_2.png
  63. BIN
      src/assets/bigScreen/title_3.png
  64. BIN
      src/assets/bigScreen/title_4.png
  65. BIN
      src/assets/bigScreen/title_5.png
  66. BIN
      src/assets/bigScreen/zTreeStandard.png
  67. BIN
      src/assets/plant_icon4.png
  68. BIN
      src/assets/plant_icon5.png
  69. BIN
      src/assets/plant_icon6.png
  70. BIN
      src/assets/taishi.png
  71. 95 0
      src/components/bgAnimation/index.vue
  72. 12 11
      src/layouts/components/Header.vue
  73. 4 2
      src/layouts/components/SideNav.vue
  74. 3 1
      src/main.jsx
  75. 1 1
      src/pages/admin/filingsManage/flyer.vue
  76. 1 1
      src/pages/admin/filingsManage/plant.vue
  77. 61 20
      src/pages/admin/planManage/index.vue
  78. 1 1
      src/pages/admin/planManage/viewPlan/index.vue
  79. 1 1
      src/pages/admin/userManage/company.vue
  80. 1 1
      src/pages/admin/userManage/personal.vue
  81. 60 0
      src/pages/admin/warnManage/dealSuccess.vue
  82. 104 0
      src/pages/admin/warnManage/dealWarn.vue
  83. 105 0
      src/pages/admin/warnManage/index.less
  84. 303 0
      src/pages/admin/warnManage/index.vue
  85. 2726 0
      src/pages/bigScreen/index.vue
  86. 1 1
      src/pages/general/base/index.vue
  87. 1 1
      src/pages/general/flyerManage/index.vue
  88. 1 1
      src/pages/general/history/index.vue
  89. 62 23
      src/pages/general/plantManage/add.vue
  90. 1 1
      src/pages/general/plantManage/index.vue
  91. 1 1
      src/pages/login/components/components-login.vue
  92. 75 2
      src/pages/login/index.less
  93. 15 6
      src/pages/login/index.vue
  94. 1 1
      src/router/index.js
  95. 46 13
      src/router/modules/admin.ts
  96. 26 26
      src/store/modules/notification.ts
  97. 1 1
      src/style/layout.less
  98. 51 0
      src/utils/devicePixelRatio.js
  99. 1 0
      vite.config.js

+ 1 - 1
.env

@@ -1,3 +1,3 @@
 VITE_SOME_KEY=123
 # 打包路径 根据项目不同按需配置
-VITE_BASE_URL = ./
+VITE_BASE_URL = /plane/

+ 1 - 0
.gitignore

@@ -1,6 +1,7 @@
 node_modules
 .DS_Store
 dist
+plane
 dist-ssr
 *.local
 .vscode

+ 31 - 22
index.html

@@ -1,26 +1,35 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <link rel="icon" href="/favicon.ico" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <script src="https://cdn-go.cn/aegis/aegis-sdk/latest/aegis.min.18.js"></script>
-    <title>无人机低空监管平台</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <script type="module" src="/src/main.jsx"></script>
-    <script language="javascript">
-      if (window.location.host === 'tdesign.tencent.com') {
-        const aegis = new Aegis({
-          id: 'rDISNMyXgqWDFPyHMB', // 项目ID,即上报key
-          reportAssetSpeed: true, // 静态资源测速
-        });
-      }
-    </script>
-  </body>
 
-  <script>
-    window.global = window;
+<head>
+  <meta charset="UTF-8" />
+  <link rel="icon" href="/favicon.ico" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <script src="https://cdn-go.cn/aegis/aegis-sdk/latest/aegis.min.18.js"></script>
+  <!-- <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=5ieMMexWmzB9jivTq6oCRX9j&callback"></script> -->
+  <script src="http://api.map.baidu.com/api?v=1.0&type=webgl&ak=5ieMMexWmzB9jivTq6oCRX9j&callback"></script>
+  <script src="//mapv.baidu.com/build/mapv.min.js"></script>
+  <script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.188/dist/mapvgl.min.js"></script>
+    <script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.188/dist/mapvgl.threelayers.min.js"></script>
+  <link rel="stylesheet" href="./public/css/base.css">
+  <title>无人机低空监管平台</title>
+</head>
+
+<body>
+  <div id="app"></div>
+  <script type="module" src="/src/main.jsx"></script>
+  <script language="javascript">
+    if (window.location.host === 'tdesign.tencent.com') {
+      const aegis = new Aegis({
+        id: 'rDISNMyXgqWDFPyHMB', // 项目ID,即上报key
+        reportAssetSpeed: true, // 静态资源测速
+      });
+    }
   </script>
-</html>
+</body>
+
+<script>
+  window.global = window;
+</script>
+
+</html>

+ 24 - 0
mock/index.ts

@@ -196,6 +196,30 @@ export default [
       },
     }),
   },
+  {
+    url: '/api/get-warnlist',
+    method: 'get',
+    response: () => ({
+      code: 0,
+      data: {
+        ...Mock.mock({
+          'list|1-100': [
+            {
+              'index|+1': 1,
+              'company|1': [/河豚公司[0-9]/, /河豚个人[0-9]/],
+              model: /DJ-23[0-9][0-9][0-9]/,
+              flyer: /超级飞手[0-9][0-9]/,
+              flyModel: '视距内',
+              contralModel: '遥控飞行',
+              taskNature: '偏离空域',
+              flyTime: `2023-07-25`,
+              'applyStatu|1': '@natural(0, 4)',
+            },
+          ],
+        }),
+      },
+    }),
+  },
   {
     url: '/api/get-personal-list',
     method: 'get',

+ 4 - 0
package.json

@@ -22,8 +22,10 @@
     "axios": "^1.1.3",
     "dayjs": "^1.10.8",
     "echarts": "~5.1.2",
+    "mapvgl": "^1.0.0-beta.188",
     "nprogress": "^0.2.0",
     "qrcode.vue": "^1.7.0",
+    "require.js": "^1.0.0",
     "tdesign-icons-vue": "^0.1.6",
     "tdesign-vue": "^1.0.1",
     "tvision-color": "~1.5.0",
@@ -52,6 +54,7 @@
     "lint-staged": "^13.0.3",
     "mockjs": "^1.1.0",
     "prettier": "^2.6.0",
+    "sass": "^1.69.4",
     "stylelint": "~13.13.1",
     "stylelint-config-prettier": "~9.0.3",
     "stylelint-less": "1.0.5",
@@ -61,6 +64,7 @@
     "vite-plugin-theme": "^0.8.1",
     "vite-plugin-vue2": "^2.0.1",
     "vite-plugin-vue2-svg": "~0.3.0",
+    "vue-particles": "^1.0.9",
     "vue-template-compiler": "~2.6.14"
   },
   "config": {


+ 1247 - 0
public/css/base.css

@@ -0,0 +1,1247 @@
+* {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+    text-decoration: none;
+}
+
+/* CSS Document */
+::-webkit-scrollbar-track {
+    border-radius: 10px;
+    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0);
+}
+
+/*滚动条的滑轨背景颜色*/
+::-webkit-scrollbar-thumb {
+    background-color: rgba(0, 0, 0, 0.05);
+    border-radius: 10px;
+    -webkit-box-shadow: inset 1px 1px 0 rgba(75, 75, 75, 0.58);
+}
+
+/*滑块颜色*/
+::-webkit-scrollbar-thumb {
+    background-color: rgba(0, 0, 0, 0.2);
+    border-radius: 10px;
+    -webkit-box-shadow: inset 1px 1px 0 rgba(48, 48, 48, 0.92);
+}
+
+::-webkit-scrollbar {
+    width: 16px;
+    height: 16px;
+}
+
+/* 滑块整体设置*/
+::-webkit-scrollbar-track,
+::-webkit-scrollbar-thumb {
+    border-radius: 999px;
+    border: 5px solid transparent;
+}
+
+::-webkit-scrollbar-track {
+    box-shadow: 1px 1px 5px rgba(0, 0, 0, .2) inset;
+}
+
+::-webkit-scrollbar-thumb {
+    min-height: 20px;
+    background-clip: content-box;
+    box-shadow: 0 0 0 5px rgba(0, 0, 0, .2) inset;
+}
+
+::-webkit-scrollbar-corner {
+    background: transparent;
+}
+
+/* 横向滚动条和纵向滚动条相交处尖角的颜色 */
+
+html,body {
+    font-size: 100%;
+    height: 100%;
+}
+
+a:hover {
+    text-decoration: none;
+}
+
+.left {
+    /* float: left; */
+    left: 0;
+    transition: all 600ms ease-in
+}
+
+.right {
+    /* float: right; */
+    right: 0;
+    transition: all 600ms ease-in
+}
+
+.clear {
+    clear: both;
+}
+
+.text_right {
+    text-align: right;
+}
+
+.light {
+    position: relative;
+    overflow: hidden;
+    height: 100%;
+}
+
+.header {
+    width: 100%;
+    height: 80px;
+    background-color: #030829;
+    position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 2;
+    display: flex;
+}
+
+.header_center {
+    width: 30%;
+    margin: 0px auto;
+    color: #FFFFff;
+    text-align: center;
+    height: 80px;
+    background-image: url("../img/logoBg.png");
+    background-size: 100% 100%;
+    font-family: "微软雅黑" !important;
+
+
+}
+
+.header_center h2 {
+    margin-top: 10px !important;
+    margin-bottom: 10px !important;
+    font-size: 24px !important;
+
+}
+
+.color_font {
+    color: #e8f7fe !important;
+    font-size: 12px !important;
+}
+
+.header_logo {
+    margin-left: 1%;
+    margin-top: 12px;
+
+}
+
+.header_logo img {
+    height: 56px;
+}
+
+.nav {
+
+    width: 35%;
+}
+
+.nav>ul {}
+
+.nav>ul>li {
+    display: inline-block;
+    width: 120px;
+    text-align: center;
+    height: 50px;
+    position: relative;
+    line-height: 50px;
+    margin-top: 15px;
+    box-sizing: border-box;
+    /*box-shadow: -5px 0px 5px #034c6a inset, !*左边阴影*!*/
+    /*0px -5px 15px #034c6a inset, !*上边阴影*!*/
+    /*5px 0px 15px #034c6a inset, !*右边阴影*!*/
+    /*0px 5px 15px #034c6a inset;*/
+
+
+    border-radius: 5px;
+
+}
+
+.nav>ul>li:hover {
+    box-shadow: -10px 0px 15px #034c6a inset,
+        /*左边阴影*/
+        0px-10px 15px #034c6a inset,
+        /*上边阴影*/
+        10px 0px 15px #034c6a inset,
+        /*右边阴影*/
+        0px 10px 15px #034c6a inset;
+
+    box-sizing: border-box;
+}
+
+.nav>ul>li i {
+    width: 16px;
+    height: 16px;
+    display: inline-block;
+    position: relative;
+    top: 3px;
+    margin-right: 5px;
+}
+
+.nav>ul>li>a {
+    color: #ffffff;
+    /*display: inline-block;*/
+    /*padding: 0 15px 0 5px;*/
+    font-size: 14px;
+}
+
+/*.nav>ul>li:hover .li_ul{*/
+/*display: block;*/
+/*}*/
+
+.li_ul {
+    position: absolute;
+    background-color: #030829;
+    width: 100%;
+    /*border-top:4px solid #4b8df8;*/
+    display: none;
+    z-index: 999;
+
+}
+
+.li_ul li {
+    line-height: 40px !important;
+}
+
+.li_ul li:hover {
+    background-color: #4b8df8;
+}
+
+.li_ul li a {
+    color: #ffffff;
+    font-size: 13px;
+}
+
+.nav_1 {
+    background-image: url("../img/nav_1.png");
+}
+
+.nav_2 {
+    background-image: url("../img/nav_2.png");
+}
+
+.nav_3 {
+    background-image: url("../img/nav_3.png");
+}
+
+.nav_4 {
+    background-image: url("../img/nav_4.png");
+}
+
+.nav_5 {
+    background-image: url("../img/nav_5.png");
+}
+
+.nav_6 {
+    background-image: url("../img/nav_6.png");
+}
+
+.nav_7 {
+    background-image: url("../img/nav_7.png");
+}
+
+.nav_8 {
+    background-image: url("../img/nav_9.png");
+}
+
+.nav_active {
+    border-bottom: 4px solid #4b8df8;
+    box-shadow: -10px 0px 15px #034c6a inset,
+        /*左边阴影*/
+        0px-10px 15px #034c6a inset,
+        /*上边阴影*/
+        10px 0px 15px #034c6a inset,
+        /*右边阴影*/
+        0px 10px 15px #034c6a inset;
+
+    box-sizing: border-box;
+}
+
+.con {
+    box-sizing: border-box;
+    width: 100%;
+    height: 100%;
+    /* background-color: #081832; */
+    padding-top: 20px;
+    padding-bottom: 20px;
+    position: relative;
+    background: url(../img/background.png) no-repeat center;
+    background-size: cover;
+}
+
+.con1 {
+    width: 100%;
+    background-color: #081832cc;
+    /*padding-bottom: 4px;*/
+    box-sizing: border-box;
+    overflow: auto;
+
+    ;
+}
+
+.find_expend {
+    display: none;
+}
+
+.con1::before {
+    content: "";
+    display: block;
+    clear: both;
+    visibility: hidden;
+    height: 0;
+}
+
+.select_time {
+    width: 140px;
+    height: 36px;
+
+    margin-bottom: 25px;
+    margin-left: 1%;
+    padding-left: 20px;
+    ;
+
+}
+
+.select_time img {
+    height: 18px;
+    margin-top: 9px;
+}
+
+.select_time input {
+    border: none;
+    background-color: transparent;
+    width: 80px;
+    height: 20px;
+    top: -5px;
+    margin-left: 10px;
+    position: relative;
+    text-indent: 1em;
+    outline: none;
+}
+
+.con_div {
+    height: 110px;
+    width: 98%;
+    top: 14vh;
+    left: 1%;
+    margin-bottom: 25px;
+    position: absolute;
+    z-index: 2;
+    display: flex;
+    justify-content: space-between;
+}
+
+.con_div_text {
+    height: 100%;
+    /* background-color: #034c6a; */
+    width: 32%;
+    display: flex;
+    opacity: 0.6;
+}
+
+.con_div_text01 {
+    width: 50%;
+    height: 100%;
+    display: flex;
+    justify-content: center;
+}
+
+.text01_img {
+    width: 40px;
+    height: 40px;
+    margin-left: 5%;
+    margin-top: 35px;
+}
+
+.text01_div {
+    margin-top: 15px;
+    margin-left: 5%;
+    text-align: center;
+    cursor: pointer;
+}
+
+.text01_div p {
+    line-height: 35px;
+}
+
+.text01_div p:nth-child(1) {
+    font-size: 13px;
+    color: #ffffff;
+}
+
+.text01_div p:nth-child(2) {
+    font-size: 28px;
+    color: #ffff43;
+    font-weight: 600;
+
+}
+
+.red {
+    color: red !important;
+}
+
+.sky {
+    color: #25f3e6 !important;
+}
+
+.org {
+    color: #ff4e4e !important;
+}
+
+.div_any {
+    width: 98%;
+    margin-left: 1%;
+    margin-bottom: 25px;
+    height: 610px;
+    position: relative;
+}
+
+.div_any01 {
+    width: 18%;
+    background-color: #081832;
+    opacity: 0.8;
+    position: absolute;
+    z-index: 2;
+    top: 22.2vh;
+}
+
+.div_any02 {
+    width: 48%;
+    margin-right: 2%;
+    position: absolute;
+}
+
+.div_any03 {
+    width: 98%;
+    margin: 15px auto;
+
+}
+
+.div_any_child {
+    width: 100%;
+    height: 280px;
+    box-shadow: -10px 0px 15px #034c6a inset,
+        /*左边阴影*/
+        0px -10px 15px #034c6a inset,
+        /*上边阴影*/
+        10px 0px 15px #034c6a inset,
+        /*右边阴影*/
+        0px 10px 15px #034c6a inset;
+    border: 1px solid #034c6a;
+    box-sizing: border-box;
+    position: relative;
+    margin-top: 25px;
+}
+
+.div_any_child01 {
+    width: 48%;
+
+    box-shadow: -10px 0px 15px #034c6a inset,
+        /*左边阴影*/
+        0px-10px 15px #034c6a inset,
+        /*上边阴影*/
+        10px 0px 15px #034c6a inset,
+        /*右边阴影*/
+        0px 10px 15px #034c6a inset;
+    border: 1px solid #034c6a;
+    box-sizing: border-box;
+    position: relative;
+    margin-right: 2%;
+
+}
+
+.div_any_child01_wh {
+    width: 98% !important;
+}
+
+.div_height01 {
+    height: auto !important;
+    padding: 5px;
+}
+
+.char_table {
+    height: 200px;
+}
+
+.p_chart {
+    height: 250px;
+
+    padding: 5px 10px;
+
+    margin-top: 15px;
+
+}
+
+#map_div {
+    width: 96%;
+    height: 94%;
+
+
+    margin: 4% auto;
+
+}
+
+.div_height {
+    height: 586px !important;
+}
+
+.div_any_title {
+    background-color: #034c6a;
+    border-radius: 18px;
+    position: absolute;
+    height: 35px;
+    width: 60%;
+    top: -15px;
+    color: #ffffff;
+    font-weight: bold;
+    font-size: 16px;
+    left: 20%;
+    line-height: 35px;
+    text-align: center;
+}
+
+.div_any_title img {
+    width: 18px;
+    height: 18px;
+    position: relative;
+    top: 2px;
+    margin-right: 5px;
+}
+
+.any_title_width {
+    width: 30% !important;
+    left: 35% !important;
+}
+
+.div_table {
+    width: 50%;
+    margin-bottom: 25px;
+    height: 280px;
+    position: absolute;
+    bottom: 4vh;
+    left: 50%;
+    transform: translateX(-50%);
+    z-index: 2;
+    transition: all 600ms ease-in;
+}
+
+.div_table_box {
+    width: 100%;
+    /* margin-right: 2%; */
+}
+
+.table_p {
+    height: 93%;
+    margin-top: 3%;
+    position: relative;
+}
+
+.table_p01 {
+    height: auto !important;
+    margin-top: 0 !important;
+    position: relative;
+
+
+}
+
+.table_p01 table td {
+    padding: 6px 0;
+}
+
+.table_p table {
+    width: 100%;
+    height: 100%;
+    border-collapse: collapse;
+
+    position: absolute;
+    text-align: center;
+}
+
+.table_p table thead th {
+    color: #61d2f7;
+    font-size: 14px;
+    font-weight: 600;
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+.table_p table tbody {
+    color: #ffffff;
+    font-size: 13px;
+}
+
+.table_p table tbody tr:nth-child(2n + 1) {
+    background-color: #072951;
+    box-shadow: -10px 0px 15px #034c6a inset,
+        10px 0px 15px #034c6a inset;
+}
+
+.car_left {
+    width: 18%;
+    height: 100%;
+    background-color: #081832;
+}
+
+.car_center {
+
+    height: 100%;
+    background-color: #081832;
+    width: 50.5%;
+    margin-left: 0.5%;
+}
+
+.car_center video {
+    width: 49.5%;
+    height: 49%;
+
+
+    box-sizing: border-box;
+    box-shadow: -10px 0px 15px #034c6a inset,
+        10px 0px 15px #034c6a inset;
+    float: left;
+}
+
+.magin_top {
+    margin-top: 1%;
+}
+
+.magin_left {
+    margin-left: 1%;
+}
+
+.car_right {
+    width: 31%;
+    height: 100%;
+}
+
+.text_center {
+    text-align: center;
+}
+
+.carNo_input {
+    width: 75%;
+    height: 25px;
+    margin-top: 5px;
+    margin-bottom: 5px;
+    text-indent: 2em;
+    margin-left: 5%;
+
+    border: 1px solid #072951;
+    border-radius: 3px;
+}
+
+.find_but {
+    height: 25px;
+    background-image: url("../img/find.png");
+    width: 25px;
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    position: relative;
+    top: 8px;
+    border: none;
+    background-color: transparent;
+}
+
+.find_but1 {
+    height: 25px;
+    background-image: url("../img/find.png");
+    width: 25px;
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    position: relative;
+    top: 8px;
+    border: 1px solid #4b8df8;
+    background-color: transparent;
+}
+
+.set_list {
+    padding: 10px 5%;
+    color: #eee;
+    font-size: 14px;
+}
+
+.list_i {
+    width: 16px;
+    height: 16px;
+    display: inline-block;
+
+    background-image: url("../img/nav_1.png");
+    top: 3px;
+    position: relative;
+}
+
+.left_up {
+
+    height: 58%;
+
+}
+
+.left_table {
+
+    height: 98%;
+
+    border-radius: 5px;
+    width: 18% !important;
+    background-color: #081832;
+
+
+}
+
+.right_table {
+    height: 98%;
+
+    border-radius: 5px;
+    width: 81.5% !important;
+    background-color: #081832;
+    margin-left: 0.5%;
+}
+
+.center_table {
+    height: 100%;
+    border-radius: 5px;
+    width: 100%;
+    background-color: #081832;
+    margin: 0 auto;
+}
+
+.bow_shadow {
+    box-shadow: -8px 0px 10px #034c6a inset,
+        8px 0px 10px #034c6a inset;
+    width: 100%;
+    box-sizing: border-box;
+}
+
+.ztree li a {
+    color: #FFFFff !important;
+}
+
+.left_down {
+    height: 40%;
+    margin-top: 2%;
+}
+
+.tab_a {
+    width: 45%;
+    height: 30px;
+    line-height: 30px;
+    color: #FFFFff;
+    background-color: #667fa7;
+    display: inline-block;
+    margin-right: 1%;
+    margin-top: 5px;
+    font-size: 14px;
+}
+
+.tab_aActive {
+    background-color: #034c6a !important;
+    font-weight: 600;
+}
+
+.car_content {
+    margin-left: 5%;
+
+    font-size: 13px;
+    color: #eeeeee;
+}
+
+.car_content p {
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+.table2_find {
+    background-color: #072951;
+    box-shadow: -10px 0px 15px #034c6a inset, 10px 0px 15px #034c6a inset;
+    width: 100%;
+    padding: 5px 0;
+    color: #FFFFff;
+}
+
+
+.table2_find input[type=text] {
+    background-color: transparent;
+    width: 16%;
+    height: 24px;
+    border-radius: 3px;
+    text-indent: 1em;
+    border: 1px solid #7EC4CC;
+
+}
+
+
+.table_find {
+    width: 100%;
+    padding: 8px 0;
+    border-bottom: 2px solid #a5c5f83b;
+    font-size: 13px;
+}
+
+.more_find {
+
+    cursor: pointer;
+    position: relative;
+    top: 5px;
+}
+
+.table_find.glyphicon {
+    margin-right: 5px;
+}
+
+.table_find button {
+    padding: 4px 10px;
+}
+
+.table_find p {
+    margin-top: 8px;
+}
+
+.table_find label {
+
+    color: #eeeeee;
+
+    width: 8%;
+    display: inline-block;
+    text-align: right;
+
+}
+
+.table_find input[type=text],
+.table_find input[type=date] {
+    width: 16%;
+    height: 24px;
+    border-radius: 3px;
+    text-indent: 1em;
+    border: 1px solid#4b8df8;
+    background-color: #cccccc4f;
+}
+
+.table_find select {
+    width: 12%;
+    height: 24px;
+    border-radius: 3px;
+    text-indent: 1em;
+    border: 1px solid #4b8df8;
+    background-color: #cccccc4f;
+}
+
+.table_find input[type=checkbox] {
+    width: 14px;
+    height: 14px;
+    position: relative;
+    top: 3px;
+    margin-right: 5px;
+}
+
+.table_find span {
+    color: #b2cbf3;
+
+    margin-right: 2%;
+}
+
+.find_button {
+    width: 5%;
+    height: 26px;
+    border: none;
+    border-radius: 2px;
+    background-color: #4b8df8;
+    color: #FFFFff;
+    font-size: 14px;
+
+}
+
+.table2_style {
+    color: #FFFFff;
+    border: none !important;
+    font-size: 13px;
+}
+
+.table2_style a {
+    margin-right: 10px;
+}
+
+.table2_style tbody tr:nth-child(2n + 1) {
+    background-color: #072951;
+    border-left: 4px solid #4b8df8;
+    ;
+}
+
+.table2_style thead tr {
+    color: #FFFFff;
+    background-color: #4b8df8;
+}
+
+.table2_style td {
+    border: none !important;
+}
+
+.table2_style thead th {
+    border-bottom: none !important;
+}
+
+.table2_style tbody tr:nth-child(2n):hover {
+    /*color: #072951;*/
+    background-color: rgba(75, 141, 248, 0.65);
+
+}
+
+.table_style {
+    color: #FFFFff;
+    box-shadow: -8px 0px 10px #034c6a inset,
+        8px 0px 10px #034c6a inset;
+    border: none !important;
+    font-size: 13px;
+}
+
+.table_style a {
+    margin-right: 10px;
+}
+
+.table_style td {
+    border: none !important;
+}
+
+.table_style tbody tr:nth-child(2n + 1) {
+    background-color: #072951;
+    box-shadow: -10px 0px 15px #034c6a inset,
+        10px 0px 15px #034c6a inset;
+}
+
+.table_style thead tr {
+    color: #4b8df8;
+}
+
+.table_style thead th {
+    border-bottom: none !important;
+}
+
+.table_style tbody tr:nth-child(2n):hover {
+    /*color: #072951;*/
+    background-color: rgba(75, 141, 248, 0.12);
+}
+
+.table_div {
+    margin-top: 10px;
+    color: #FFFFff;
+}
+
+.table_but {
+    text-align: right;
+    font-size: 13px;
+    padding-bottom: 5px;
+    padding-top: 10px;
+
+}
+
+.table_but a {
+    margin-right: 15px;
+    color: #FFFFff;
+}
+
+.table_but a i {
+    margin-right: 5px;
+}
+
+.table_del {
+    color: orangered;
+}
+
+.table_edit {
+    color: #0D8BBD;
+}
+
+.span_left {
+    padding: 5px;
+}
+
+/*地图界面样式*/
+.map_con {
+    width: 100%;
+    padding: 0;
+    background-color: #081832cc;
+}
+
+.map_left {
+    width: 79%;
+    height: 100%;
+
+
+}
+
+.map_right {
+    width: 20.5%;
+    height: 100%;
+    background-color: #081832;
+}
+
+.map_box {
+    width: 100%;
+    height: 100%;
+
+}
+
+.map_top {
+    position: absolute;
+    top: 80px;
+    left: 0;
+    height: 35px;
+    width: 79%;
+    border-bottom: 1px solid #4b8df8;
+    background-color: rgba(255, 255, 255, 0.84);
+    z-index: 99;
+}
+
+.map_top>ul {
+    list-style: none;
+    font-size: 14px;
+    float: right;
+}
+
+.map_top>ul>li {
+    display: inline-block;
+    line-height: 35px;
+    padding: 0 10px;
+}
+
+.map_top>ul>li i {
+    margin-right: 5px;
+}
+
+.map_top>ul>li a {
+    color: #2E2D3C;
+}
+
+.map_top>ul.active,
+.map_top>ul>li.active {
+    color: #0D8BBD;
+}
+
+.map_select {
+    position: fixed;
+    top: 160px;
+    right: 21.5%;
+    box-shadow: -10px 0px 15px #034c6a inset,
+        /*左边阴影*/
+        0px-10px 15px #034c6a inset,
+        /*上边阴影*/
+        10px 0px 15px #034c6a inset,
+        /*右边阴影*/
+        0px 10px 15px #034c6a inset;
+    border: 1px solid #034c6a;
+    width: 120px;
+    height: 180px;
+    border-radius: 5px;
+    background-color: #081832e3;
+}
+
+.map_select p {
+    padding: 8px 15px;
+    color: #FFFFff;
+    font-size: 14px;
+}
+
+.map_select p input[type=checkbox] {
+    width: 15px;
+    height: 15px;
+    position: relative;
+    top: 3px;
+    margin-right: 10px;
+}
+
+.map_right_top {
+    width: 100%;
+    height: 35px;
+
+    background-color: #034c6a;
+}
+
+.map_right_top>ul>li {
+    list-style: none;
+    display: inline-block;
+    line-height: 35px;
+    font-size: 14px;
+    text-align: center;
+    width: 32%;
+    color: #FFFFff;
+    cursor: pointer;
+}
+
+.map_right_top>ul>li.li_active {
+    background-color: #0D8BBD;
+}
+
+.map_chart {
+    width: 100%;
+    height: 250px;
+
+
+
+    box-sizing: border-box;
+    position: relative;
+    margin-top: 25px;
+}
+
+.map_con {
+    width: 100%;
+}
+
+.map_con_div {
+    display: none;
+}
+
+.map_work {
+    margin-top: 5px;
+    border-top: 1px solid #0D8BBD;
+    ;
+}
+
+.map_work>ul>li {
+    list-style: none;
+    display: inline-block;
+    width: 32%;
+    text-align: center;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    cursor: pointer;
+    padding: 10px 0;
+
+}
+
+.map_work>ul>li:hover {
+    box-shadow: -10px 0px 15px #034c6a inset,
+        /*左边阴影*/
+        0px-10px 15px #034c6a inset,
+        /*上边阴影*/
+        10px 0px 15px #034c6a inset,
+        /*右边阴影*/
+        0px 10px 15px #034c6a inset;
+}
+
+.map_work>ul>li.img_div {
+    width: 28px;
+    height: 24px;
+    margin: 0 auto;
+
+}
+
+.img_div01 {
+
+    background: url(../img/map_photo.png) no-repeat;
+    background-position: -126px-73px;
+}
+
+.img_div02 {
+    background: url(../img/map_photo.png) no-repeat;
+    background-position: -98px-122px;
+
+}
+
+.img_div_text {
+    color: #FFFFff;
+    margin-top: 8px;
+    font-size: 13px;
+}
+
+.back_i {
+    position: relative;
+    top: 2px;
+    margin-right: 5px;
+}
+
+.map_resList {
+    width: 96%;
+    margin: 0 auto;
+    font-size: 13px;
+    display: none;
+}
+
+.map_resList>ul>li {
+    list-style: none;
+    margin-top: 8px;
+}
+
+.map_resList>ul>li p {
+    padding: 5px 0;
+    color: #eeeeee;
+}
+
+.map_resList>ul>li a {
+    margin-right: 6px;
+}
+
+.map_resList>ul>li a img {
+    width: 16px;
+
+}
+
+.map_resList>ul>li:nth-child(2n + 1) {
+    background-color: #0d8bbd36;
+}
+
+/*统计分析界面样式*/
+.static_top {
+    width: 140px;
+    height: 36px;
+    line-height: 36px;
+    background-color: #04425f;
+    margin-bottom: 25px;
+    margin-left: 1%;
+    padding-left: 20px;
+    border-radius: 1px;
+    box-shadow: 0px 3px 3px #61d2f7;
+
+}
+
+.static_top i {
+    width: 16px;
+    height: 16px;
+    display: inline-block;
+    position: relative;
+    background-image: url("../img/nav_7.png");
+    background-repeat: no-repeat;
+    margin-right: 6px;
+    top: 1px;
+}
+
+.static_top span {
+    color: #25f3e6;
+}
+
+.stiatic_top_con {
+    background-color: #034c6a;
+    width: 96%;
+    margin-left: 1%;
+    margin-bottom: 25px;
+    padding: 10px 1%;
+    border-radius: 5px;
+}
+
+.stiatic_top_con table {
+    width: 100%;
+    border-collapse: collapse;
+}
+
+.stiatic_top_con table td {
+    color: #FFFFff;
+    padding: 5px;
+    font-size: 13px;
+    border: 1px solid #485f849c;
+}
+
+.stiatic_top_con table.labe_td {
+    color: #61d2f7;
+    font-size: 14px;
+    width: 120px;
+    text-align: right;
+}
+
+.layui-layer-title {
+    /*box-shadow: -8px 0px 10px #034c6a inset,*/
+    /*8px 0px 10px #034c6a inset;*/
+    background-color: #081832d4 !important;
+    color: #FFFFff !important;
+    border-bottom: 3px solid #4b8df8 !important;
+    box-sizing: border-box;
+}

BIN
public/img/background.png


BIN
public/img/down1.png


BIN
public/img/find.png


BIN
public/img/find01.png


BIN
public/img/info_1.png


BIN
public/img/info_2.png


BIN
public/img/info_4.png


BIN
public/img/info_5.png


BIN
public/img/info_6.png


BIN
public/img/info_7.png


BIN
public/img/logoBg.png


BIN
public/img/map_photo.png


BIN
public/img/nav_1.png


BIN
public/img/nav_2.png


BIN
public/img/nav_3.png


BIN
public/img/nav_4.png


BIN
public/img/nav_5.png


BIN
public/img/nav_6.png


BIN
public/img/nav_7.png


BIN
public/img/nav_9.png


BIN
public/img/page.png


BIN
public/img/title_1.png


BIN
public/img/title_2.png


BIN
public/img/title_3.png


BIN
public/img/title_4.png


BIN
public/img/title_5.png


BIN
public/img/zTreeStandard.png


+ 67 - 0
public/js/map.js

@@ -0,0 +1,67 @@
+
+$(function(){
+
+
+    initMap();
+
+
+
+
+
+})
+//地图界面高度设置
+
+
+
+//加载地图
+function initMap(){
+// 百度地图API功能
+    var map = new BMap.Map("map_div");    // 创建Map实例
+    map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);  // 初始化地图,设置中心点坐标和地图级别
+    //添加地图类型控件
+    var size1 = new BMap.Size(10, 50);
+    map.addControl(new BMap.MapTypeControl({
+        offset: size1,
+        mapTypes:[
+            BMAP_NORMAL_MAP,
+            BMAP_HYBRID_MAP,
+
+        ]}));
+    // 编写自定义函数,创建标注
+    function addMarker(point){
+        var marker = new BMap.Marker(point);
+        map.addOverlay(marker);
+    }
+    // 随机向地图添加25个标注
+    var bounds = map.getBounds();
+    var sw = bounds.getSouthWest();
+    var ne = bounds.getNorthEast();
+    var lngSpan = Math.abs(sw.lng - ne.lng);
+    var latSpan = Math.abs(ne.lat - sw.lat);
+    for (var i = 0; i < 25; i ++) {
+        var point = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7));
+        addMarker(point);
+    };
+
+    map.setCurrentCity("北京");          // 设置地图显示的城市 此项是必须设置的
+    map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
+    //设备地图颜色
+    var mapStyle={
+        style:"midnight"
+    };
+    map.setMapStyle(mapStyle);
+
+
+
+
+
+//加载城市控件
+    var size = new BMap.Size(10, 50);
+    map.addControl(new BMap.CityListControl({
+        anchor: BMAP_ANCHOR_TOP_LEFT,
+        offset: size,
+
+
+    }));
+}
+

+ 12 - 0
src/App.vue

@@ -5,6 +5,7 @@
 <script>
 import Vue from 'vue';
 import config from '@/config/style';
+import DevicePixelRatio from '@/utils/DevicePixelRatio.js';
 
 export default Vue.extend({
   computed: {
@@ -13,7 +14,18 @@ export default Vue.extend({
     },
   },
   mounted() {
+    new DevicePixelRatio().init();
+    const bodyScale = () => {
+      var devicewidth = document.documentElement.clientWidth; //获取当前分辨率下的可是区域宽度
+      var scale = devicewidth / 1920; // 分母——设计稿的尺寸
+      document.body.style.zoom = scale; //放大缩小相应倍数
+    };
+    bodyScale();
     this.$store.dispatch('setting/changeTheme', { ...config });
   },
 });
 </script>
+
+
+<style>
+</style>

BIN
src/assets/bigScreen/close.png


BIN
src/assets/bigScreen/close_bottom.png


BIN
src/assets/bigScreen/down1.png


BIN
src/assets/bigScreen/expand.png


BIN
src/assets/bigScreen/expand_bottom.png


BIN
src/assets/bigScreen/find.png


BIN
src/assets/bigScreen/find01.png


BIN
src/assets/bigScreen/info_1.png


BIN
src/assets/bigScreen/info_2.png


BIN
src/assets/bigScreen/info_4.png


BIN
src/assets/bigScreen/info_5.png


BIN
src/assets/bigScreen/info_6.png


BIN
src/assets/bigScreen/info_7.png


BIN
src/assets/bigScreen/logoBg.png


BIN
src/assets/bigScreen/map_photo.png


BIN
src/assets/bigScreen/nav_1.png


BIN
src/assets/bigScreen/nav_2.png


BIN
src/assets/bigScreen/nav_3.png


BIN
src/assets/bigScreen/nav_4.png


BIN
src/assets/bigScreen/nav_5.png


BIN
src/assets/bigScreen/nav_6.png


BIN
src/assets/bigScreen/nav_7.png


BIN
src/assets/bigScreen/nav_9.png


BIN
src/assets/bigScreen/page.png


BIN
src/assets/bigScreen/title_1.png


BIN
src/assets/bigScreen/title_2.png


BIN
src/assets/bigScreen/title_3.png


BIN
src/assets/bigScreen/title_4.png


BIN
src/assets/bigScreen/title_5.png


BIN
src/assets/bigScreen/zTreeStandard.png


BIN
src/assets/plant_icon4.png


BIN
src/assets/plant_icon5.png


BIN
src/assets/plant_icon6.png


BIN
src/assets/taishi.png


+ 95 - 0
src/components/bgAnimation/index.vue

@@ -0,0 +1,95 @@
+<!--
+ 描述: 登录界面背景图动画
+ 作者: 柯基与佩奇
+ 日期: 2020-04-18
+-->
+
+<template>
+  <ul class="slide-box">
+    <li></li>
+    <!-- <li></li>
+    <li></li>
+    <li></li> -->
+  </ul>
+</template>
+
+<script>
+export default {
+  name: "bgAnimation",
+};
+</script>
+
+<style lang="scss">
+.slide-box {
+  position: fixed;
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0;
+  z-index: 0;
+  li {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    top: 0px;
+    left: 0px;
+    color: transparent;
+    background: url(../../assets/img/245479ac3d1ec7344537879c85c3dd43.jpg)
+      no-repeat center;
+    background-size: auto 100%;
+    opacity: 0.6;
+    z-index: 0;
+    -webkit-backface-visibility: hidden;
+    -webkit-animation: imgAnimation 6s ease-in-out;
+    -moz-animation: imgAnimation 6s ease-in-out;
+    -o-animation: imgAnimation 6s ease-in-out;
+    -ms-animation: imgAnimation 6s ease-in-out;
+    animation: imgAnimation 6s ease-in-out;
+    animation-fill-mode: forwards;
+  }
+}
+@-webkit-keyframes imgAnimation {
+  0% {
+    opacity: 0.6;
+    transform: scale(1.3);
+  }
+  8% {
+    opacity: 0.7;
+    transform: scale(1.25);
+  }
+  17% {
+    opacity: 0.8;
+    transform: scale(1.2);
+  }
+  25% {
+    opacity: 0.9;
+    transform: scale(1.1);
+  }
+  100% {
+    opacity: 1;
+    transform: scale(1);
+  }
+}
+@keyframes imgAnimation {
+  0% {
+    opacity: 0.6;
+    transform: scale(1.3);
+  }
+  8% {
+    opacity: 0.7;
+    transform: scale(1.25);
+  }
+  17% {
+    opacity: 0.8;
+    transform: scale(1.2);
+  }
+  25% {
+    opacity: 0.9;
+    transform: scale(1.15);
+  }
+  100% {
+    opacity: 1;
+    transform: scale(1);
+  }
+}
+</style>

+ 12 - 11
src/layouts/components/Header.vue

@@ -17,26 +17,24 @@
         <div class="operations-container">
           <!-- 搜索框 -->
           <search v-if="layout !== 'side'" :layout="layout" />
-
-          <!-- 全局通知 -->
-          <notice />
-
           <!-- <t-tooltip placement="bottom" content="代码仓库">
             <t-button theme="default" shape="square" variant="text" @click="navToGitHub">
               <logo-github-icon />
             </t-button>
-          </t-tooltip>
-          <t-tooltip placement="bottom" content="帮助文档">
+          </t-tooltip> -->
+          <t-tooltip placement="bottom" content="总体态势">
             <t-button theme="default" shape="square" variant="text" @click="navToHelper">
-              <help-circle-icon />
+              <DashboardIcon size="20" />
             </t-button>
-          </t-tooltip> -->
+          </t-tooltip> 
+          <!-- 全局通知 -->
+          <notice />
           <t-dropdown :min-column-width="125" trigger="click">
             <template #dropdown>
               <t-dropdown-menu>
-                <t-dropdown-item class="operations-dropdown-container-item" @click="handleNav('/account/index')">
+                <!-- <t-dropdown-item class="operations-dropdown-container-item" @click="handleNav('/account/index')">
                   <user-circle-icon />个人中心
-                </t-dropdown-item>
+                </t-dropdown-item> -->
                 <t-dropdown-item class="operations-dropdown-container-item" @click="handleLogout">
                   <poweroff-icon />退出登录
                 </t-dropdown-item>
@@ -80,6 +78,8 @@ import LogoFull from '@/assets/assets-logo-full.svg';
 import Notice from './Notice.vue';
 import Search from './Search.vue';
 import MenuContent from './MenuContent.vue';
+import { DashboardIcon } from 'tdesign-icons-vue';
+
 
 export default Vue.extend({
   components: {
@@ -94,6 +94,7 @@ export default Vue.extend({
     PoweroffIcon,
     SettingIcon,
     ChevronDownIcon,
+    DashboardIcon
   },
   props: {
     theme: String,
@@ -173,7 +174,7 @@ export default Vue.extend({
       window.open('https://github.com/Tencent/tdesign-vue-starter');
     },
     navToHelper() {
-      window.open('http://tdesign.tencent.com/starter/docs/get-started');
+     this.$router.push('/bigScreen')
     },
   },
 });

+ 4 - 2
src/layouts/components/SideNav.vue

@@ -10,9 +10,11 @@
       expandMutex
     >
       <template #logo>
-        <span v-if="showLogo" :class="`${prefix}-side-nav-logo-wrapper`" @click="() => handleNav('/dashboard/base')">
+        <span v-if="showLogo" :class="`${prefix}-side-nav-logo-wrapper`" @click="() => handleNav('/bigScreen')" style="align-items: center;">
           <!-- <component :is="getLogo" :class="`${prefix}-side-nav-logo-${collapsed ? 't' : 'tdesign'}-logo`" /> -->
-          <img style="width: 180px;" src="../../assets/assets-plane-logo.png" alt="">
+          <img style="width: 140px" src="../../assets/assets-plane-logo.png" alt="" />
+          <span style="font-size: 20px;color: #222222;margin: 0 15px 0 10px;">|</span>
+          <img style="width: 30px; margin-right: 10px" src="../../assets/taishi.png" title="当前态势" alt="" />
         </span>
       </template>
       <menu-content :navData="menu" />

+ 3 - 1
src/main.jsx

@@ -8,6 +8,7 @@ import App from './App.vue';
 import router from './router';
 import zhConfig from 'tdesign-vue/es/locale/zh_CN';
 // import enConfig from 'tdesign-vue/es/locale/en_US'; // 英文多语言配置
+import vueParticles from 'vue-particles'
 
 import 'tdesign-vue/es/style/index.css';
 import '@/style/index.less';
@@ -19,6 +20,7 @@ import store from './store';
 Vue.use(VueRouter);
 Vue.use(TDesign);
 Vue.use(VueClipboard);
+Vue.use(vueParticles)
 
 Vue.component('t-page-header');
 
@@ -41,7 +43,7 @@ new Vue({
   store,
   // eslint-disable-next-line @typescript-eslint/no-unused-vars
   render: (h) => (
-    <div>
+    <div style="height: 100%">
       {/* 可以通过config-provider提供全局(多语言、全局属性)配置,如 
       <t-config-provider globalConfig={enConfig}> */}
       <t-config-provider globalConfig={zhConfig}>

+ 1 - 1
src/pages/admin/filingsManage/flyer.vue

@@ -46,7 +46,7 @@
         </t-row>
       </t-form>
       <div class="table-container">
-        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
+        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover" :height="600"
           :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
           @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
           :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">

+ 1 - 1
src/pages/admin/filingsManage/plant.vue

@@ -33,7 +33,7 @@
         </t-row>
       </t-form>
       <div class="table-container">
-        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
+        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover" :height="600"
           :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
           @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
           :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">

+ 61 - 20
src/pages/admin/planManage/index.vue

@@ -13,27 +13,46 @@
           </template>
         </t-input>
       </t-row> -->
-      <t-form style="margin: 20px 0;" ref="form" :data="formData" :label-width="80" colon @reset="onReset"
-        @submit="onSubmit">
+      <t-form
+        style="margin: 20px 0"
+        ref="form"
+        :data="formData"
+        :label-width="80"
+        colon
+        @reset="onReset"
+        @submit="onSubmit"
+      >
         <t-row>
           <t-col :span="10">
             <t-row :gutter="[16, 24]">
               <t-col :flex="1">
                 <t-form-item label="无人机型号" name="name">
-                  <t-select v-model="formData.status" class="form-item-content`" :options="CONTRACT_STATUS_OPTIONS"
-                    placeholder="请选择无人机型号" />
+                  <t-select
+                    v-model="formData.status"
+                    class="form-item-content`"
+                    :options="CONTRACT_STATUS_OPTIONS"
+                    placeholder="请选择无人机型号"
+                  />
                 </t-form-item>
               </t-col>
               <t-col :flex="1">
                 <t-form-item label="任务性质" name="status">
-                  <t-select v-model="formData.status" class="form-item-content`" :options="CONTRACT_STATUS_OPTIONS"
-                    placeholder="请选择任务性质" />
+                  <t-select
+                    v-model="formData.status"
+                    class="form-item-content`"
+                    :options="CONTRACT_STATUS_OPTIONS"
+                    placeholder="请选择任务性质"
+                  />
                 </t-form-item>
               </t-col>
               <t-col :flex="1">
                 <t-form-item label="关键词" name="no">
-                  <t-input v-model="formData.no" class="form-item-content" placeholder="请输入关键词"
-                    :style="{ minWidth: '134px' }" />
+                  <t-input
+                    v-model="formData.no"
+                    class="form-item-content"
+                    placeholder="请输入关键词"
+                    :style="{ minWidth: '134px' }"
+                  />
                 </t-form-item>
               </t-col>
             </t-row>
@@ -47,10 +66,22 @@
         </t-row>
       </t-form>
       <div class="table-container">
-        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
-          :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
-          @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
-          :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">
+        <t-table
+          :columns="columns"
+          :data="data"
+          :rowKey="rowKey"
+          :verticalAlign="verticalAlign"
+          :hover="hover"
+          :pagination="pagination"
+          :selected-row-keys="selectedRowKeys"
+          :loading="dataLoading"
+          @page-change="rehandlePageChange"
+          @change="rehandleChange"
+          @select-change="rehandleSelectChange"
+          :headerAffixedTop="true"
+          :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }"
+          :height="600"
+        >
           <template #applyStatu="{ row }">
             <t-tag v-if="row.applyStatu === APPLY_STATUS.UNCOMMIT" theme="warning" variant="light">未提交</t-tag>
             <t-tag v-if="row.applyStatu === APPLY_STATUS.COMMIT" theme="warning" variant="light">已提交</t-tag>
@@ -66,8 +97,13 @@
         </t-table>
       </div>
     </t-card>
-    <t-dialog header="确认删除当前所选申请?" :body="confirmBody" :visible.sync="confirmVisible" @confirm="onConfirmDelete"
-      :onCancel="onCancel">
+    <t-dialog
+      header="确认删除当前所选申请?"
+      :body="confirmBody"
+      :visible.sync="confirmVisible"
+      @confirm="onConfirmDelete"
+      :onCancel="onCancel"
+    >
     </t-dialog>
     <t-dialog theme="warning" header="驳回原因" :visible.sync="visible3" @confirm="closeHandle" :onClose="closeHandle">
       <t-textarea name="" id="" cols="30" rows="5" placeholder="请输入驳回原因"></t-textarea>
@@ -80,7 +116,7 @@ import { SearchIcon } from 'tdesign-icons-vue';
 import Trend from '@/components/trend/index.vue';
 import { prefix } from '@/config/global';
 import { Icon } from 'tdesign-icons-vue';
-import { APPLY_STATUS, APPLY_STATUS_OPTIONS, CONTRACT_TYPES, CONTRACT_PAYMENT_TYPES } from '@/constants';
+import { APPLY_STATUS, APPLY_STATUS_OPTIONS, CONTRACT_TYPES, CONTRACT_PAYMENT_TYPES, CONTRACT_STATUS_OPTIONS } from '@/constants/index';
 
 export default Vue.extend({
   name: 'ListBase',
@@ -94,6 +130,7 @@ export default Vue.extend({
       APPLY_STATUS_OPTIONS,
       CONTRACT_TYPES,
       CONTRACT_PAYMENT_TYPES,
+      CONTRACT_STATUS_OPTIONS,
       prefix,
       dataLoading: false,
       data: [],
@@ -182,10 +219,8 @@ export default Vue.extend({
       searchValue: '',
       confirmVisible: false,
       deleteIdx: -1,
-      formData: {
-
-      },
-      visible3: false
+      formData: {},
+      visible3: false,
     };
   },
   computed: {
@@ -270,6 +305,12 @@ export default Vue.extend({
     resetIdx() {
       this.deleteIdx = -1;
     },
+    onReset() {
+
+    },
+    onSubmit() {
+
+    }
   },
 });
 </script>
@@ -302,7 +343,7 @@ export default Vue.extend({
   width: 360px;
 }
 
-.t-button+.t-button {
+.t-button + .t-button {
   margin-left: var(--td-comp-margin-s);
 }
 

+ 1 - 1
src/pages/admin/planManage/viewPlan/index.vue

@@ -46,7 +46,7 @@
         </t-row>
       </t-form>
       <div class="table-container">
-        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
+        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover" :height="600"
           :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
           @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
           :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">

+ 1 - 1
src/pages/admin/userManage/company.vue

@@ -30,7 +30,7 @@
         </t-row>
       </t-form>
       <div class="table-container">
-        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
+        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover" :height="600"
           :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
           @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
           :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">

+ 1 - 1
src/pages/admin/userManage/personal.vue

@@ -30,7 +30,7 @@
         </t-row>
       </t-form>
       <div class="table-container">
-        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
+        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover" :height="600"
           :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
           @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
           :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">

+ 60 - 0
src/pages/admin/warnManage/dealSuccess.vue

@@ -0,0 +1,60 @@
+<template>
+    <div class="result-success">
+      <check-circle-icon class="result-success-icon" />
+      <div class="result-success-title">提交成功</div>
+      <div class="result-success-describe">2023-12-27</div>
+      <div>
+        <t-button @click="() => this.$router.push('/warnManage/index')">返回首页</t-button>
+        <t-button @click="() => this.$router.push('/warnManage/index')" theme="default">查看详情</t-button>
+      </div>
+    </div>
+  </template>
+  
+  <script>
+  import { CheckCircleIcon } from 'tdesign-icons-vue';
+  
+  export default {
+    name: 'ResultSuccess',
+    components: {
+      CheckCircleIcon,
+    },
+  };
+  </script>
+  
+  <style lang="less" scoped>
+  @import '@/style/variables.less';
+  
+  .result-success {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    height: 75vh;
+  
+    &-icon {
+      font-size: 72px;
+      color: var(--td-success-color);
+    }
+  
+    &-title {
+      margin-top: 28px;
+      font-size: 20px;
+      color: var(--td-text-color-primary);
+      text-align: center;
+      line-height: 28px;
+      font-weight: 500;
+    }
+  
+    &-describe {
+      margin: 8px 0 32px;
+      font-size: 14px;
+      color: var(--td-text-color-secondary);
+      line-height: 22px;
+    }
+  }
+  
+  .t-button + .t-button {
+    margin-left: var(--td-comp-margin-s);
+  }
+  </style>
+  

+ 104 - 0
src/pages/admin/warnManage/dealWarn.vue

@@ -0,0 +1,104 @@
+<template>
+  <div class="detail-base">
+    <t-card title="告警信息">
+      <div class="info-block">
+        <!-- <div v-for="(item, index) in baseInfoData" :key="index" class="info-item">
+            <h1>{{ item.name }}</h1>
+            <span
+              :class="{
+                ['inProgress']: item.type && item.type.value === 'inProgress',
+                ['pdf']: item.type && item.type.value === 'pdf',
+              }"
+            >
+              <i v-if="item.type && item.type.key === 'contractStatus'" />
+              {{ item.value }}
+            </span>
+          </div> -->
+        <div class="info-item">
+          <h1>告警类型</h1>
+          <span>偏离空域</span>
+        </div>
+        <div class="info-item">
+          <h1>单位名称</h1>
+          <span>郑州远见科技有限公司</span>
+        </div>
+        <div class="info-item">
+          <h1>型号</h1>
+          <span>DJ-2089</span>
+        </div>
+        <div class="info-item">
+          <h1>飞手</h1>
+          <span>李逍遥</span>
+        </div>
+        <div class="info-item">
+          <h1>空域顶高(m)</h1>
+          <span>280</span>
+        </div>
+        <div class="info-item">
+          <h1>空域底高(m)</h1>
+          <span>28</span>
+        </div>
+        <div class="info-item">
+          <h1>飞行模式</h1>
+          <span>超视距</span>
+        </div>
+        <div class="info-item">
+          <h1>操控模式</h1>
+          <span>遥控飞行</span>
+        </div>
+        <div class="info-item">
+          <h1>联系方式</h1>
+          <span>15555555555</span>
+        </div>
+      </div>
+    </t-card>
+
+    <t-card title="告警处理" class="container-base-margin-top">
+      <t-form label-align="right" label-width="160px" style="width: 70%" @submit="onSubmit">
+        <t-form-item label="操作员" name="name" initialData="TDesign">
+          <t-input placeholder="请输入操作员姓名" />
+        </t-form-item>
+        <t-form-item label="请选择处理方式" name="course" initialData="['1']">
+          <t-checkbox-group>
+            <t-checkbox value="1">电话通知</t-checkbox>
+            <t-checkbox value="2">停飞</t-checkbox>
+            <t-checkbox value="3">禁飞</t-checkbox>
+            <t-checkbox value="4">扣分</t-checkbox>
+          </t-checkbox-group>
+        </t-form-item>
+        <t-form-item label="备注" name="tel" initialData="123456">
+          <t-textarea placeholder="请输入内容" />
+        </t-form-item>
+        <t-form-item label=" " name="" initialData="123456">
+          <t-space size="10px">
+            <t-button theme="primary" type="submit">提交</t-button>
+            <t-button theme="default" variant="base" type="reset">重置</t-button>
+          </t-space>
+        </t-form-item>
+      </t-form>
+    </t-card>
+  </div>
+</template>
+  <script>
+import { prefix } from '@/config/global';
+import model from '@/service/service-detail-base';
+
+export default {
+  name: 'DetailBase',
+  data() {
+    return {
+      prefix,
+      baseInfoData: model.getBaseInfoData(),
+    };
+  },
+  methods: {
+    onSubmit() {
+      this.$router.push('/warnManage/dealSuccess');
+    },
+  },
+};
+</script>
+  <style lang="less" scoped>
+@import './index';
+</style>
+  

+ 105 - 0
src/pages/admin/warnManage/index.less

@@ -0,0 +1,105 @@
+@import '@/style/variables.less';
+
+.detail-base {
+  /deep/ .t-card {
+    padding: 8px;
+  }
+
+  /deep/ .t-card__title {
+    font-size: 20px;
+    font-weight: 500;
+  }
+
+  &-info-steps {
+    padding-top: 12px;
+  }
+}
+
+.info-block {
+  column-count: 2;
+
+  .info-item {
+    padding: 12px 0;
+    display: flex;
+    color: var(--td-text-color-primary);
+
+    h1 {
+      width: 200px;
+      font: var(--td-font-body-medium);
+      color: var(--td-text-color-secondary);
+      font-weight: normal;
+      text-align: left;
+
+      @media (max-width: @screen-sm-max) {
+        width: 100px;
+      }
+
+      @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
+        width: 120px;
+      }
+    }
+
+    span {
+      overflow: hidden;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      margin-left: 24px;
+    }
+
+    i {
+      display: inline-block;
+      width: 8px;
+      height: 8px;
+      border-radius: var(--td-radius-circle);
+      background: var(--td-success-color-5);
+    }
+
+    .inProgress {
+      color: var(--td-success-color-5);
+    }
+
+    .pdf {
+      color: var(--td-brand-color);
+
+      &:hover {
+        cursor: pointer;
+      }
+    }
+  }
+}
+
+.dialog-info-block {
+  .info-item {
+    padding: 12px 0;
+    display: flex;
+
+    h1 {
+      width: 84px;
+      font-family: PingFangSC-Regular;
+      font-size: 14px;
+      color: var(--td-text-color-secondary);
+      text-align: left;
+      line-height: 22px;
+    }
+
+    span {
+      margin-left: 24px;
+    }
+
+    i {
+      display: inline-block;
+      width: 8px;
+      height: 8px;
+      border-radius: var(--td-radius-circle);
+      background: var(--td-success-color-5);
+    }
+
+    .green {
+      color: var(--td-success-color-5);
+    }
+
+    .blue {
+      color: var(--td-brand-color);
+    }
+  }
+}

+ 303 - 0
src/pages/admin/warnManage/index.vue

@@ -0,0 +1,303 @@
+<template>
+    <div>
+      <t-card class="list-card-container">
+        <t-form
+          style="margin: 20px 0"
+          ref="form"
+          :data="formData"
+          :label-width="80"
+          colon
+          @reset="onReset"
+          @submit="onSubmit"
+        >
+          <t-row>
+            <t-col :span="10">
+              <t-row :gutter="[16, 24]">
+                <t-col :flex="1">
+                  <t-form-item label="无人机型号" name="name">
+                    <t-select
+                      v-model="formData.status"
+                      class="form-item-content`"
+                      :options="CONTRACT_STATUS_OPTIONS"
+                      placeholder="请选择无人机型号"
+                    />
+                  </t-form-item>
+                </t-col>
+                <t-col :flex="1">
+                  <t-form-item label="违规类型" name="status">
+                    <t-select
+                      v-model="formData.status"
+                      class="form-item-content`"
+                      :options="CONTRACT_STATUS_OPTIONS"
+                      placeholder="请选择任务性质"
+                    />
+                  </t-form-item>
+                </t-col>
+                <t-col :flex="1">
+                </t-col>
+              </t-row>
+            </t-col>
+  
+            <t-col :span="2" class="operation-container">
+              <t-button theme="primary" type="submit" :style="{ marginLeft: '8px' }"> 查询 </t-button>
+              <t-button type="reset" variant="base" theme="default"> 重置 </t-button>
+            </t-col>
+          </t-row>
+        </t-form>
+        <div class="table-container">
+          <t-table
+            :columns="columns"
+            :data="data"
+            :rowKey="rowKey"
+            :verticalAlign="verticalAlign"
+            :hover="hover"
+            :pagination="pagination"
+            :selected-row-keys="selectedRowKeys"
+            :loading="dataLoading"
+            @page-change="rehandlePageChange"
+            @change="rehandleChange"
+            @select-change="rehandleSelectChange"
+            :headerAffixedTop="true"
+            :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }"
+            :height="600"
+          >
+            <template #op="slotProps">
+              <a class="t-button-link" @click="handleClickDetail()">查看详情</a>
+            </template>
+          </t-table>
+        </div>
+      </t-card>
+      <t-dialog
+        header="确认删除当前所选申请?"
+        :body="confirmBody"
+        :visible.sync="confirmVisible"
+        @confirm="onConfirmDelete"
+        :onCancel="onCancel"
+      >
+      </t-dialog>
+      <t-dialog theme="warning" header="驳回原因" :visible.sync="visible3" @confirm="closeHandle" :onClose="closeHandle">
+        <t-textarea name="" id="" cols="30" rows="5" placeholder="请输入驳回原因"></t-textarea>
+      </t-dialog>
+    </div>
+  </template>
+  <script lang="ts">
+  import Vue from 'vue';
+  import { SearchIcon } from 'tdesign-icons-vue';
+  import Trend from '@/components/trend/index.vue';
+  import { prefix } from '@/config/global';
+  import { Icon } from 'tdesign-icons-vue';
+  import { APPLY_STATUS, APPLY_STATUS_OPTIONS, CONTRACT_TYPES, CONTRACT_PAYMENT_TYPES, CONTRACT_STATUS_OPTIONS } from '@/constants/index';
+  
+  export default Vue.extend({
+    name: 'ListBase',
+    components: {
+      SearchIcon,
+      Trend,
+    },
+    data() {
+      return {
+        APPLY_STATUS,
+        APPLY_STATUS_OPTIONS,
+        CONTRACT_TYPES,
+        CONTRACT_PAYMENT_TYPES,
+        CONTRACT_STATUS_OPTIONS,
+        prefix,
+        dataLoading: false,
+        data: [],
+        selectedRowKeys: [1, 2],
+        value: 'first',
+        columns: [
+          { colKey: 'row-select', type: 'multiple', width: 64, fixed: 'left' },
+          {
+            title: '申请单位',
+            align: 'left',
+            width: 250,
+            ellipsis: true,
+            colKey: 'company',
+            fixed: 'left',
+          },
+          {
+            title: '无人机型号',
+            align: 'left',
+            width: 250,
+            ellipsis: true,
+            colKey: 'model',
+            fixed: 'left',
+          },
+          { title: '飞手', colKey: 'flyer', width: 200, cell: { col: 'status' } },
+          {
+            title: '飞行模式',
+            width: 200,
+            ellipsis: true,
+            colKey: 'flyModel',
+          },
+          {
+            title: '操控模式',
+            width: 200,
+            ellipsis: true,
+            colKey: 'contralModel',
+          },
+          {
+            title: '违规类型',
+            width: 200,
+            ellipsis: true,
+            colKey: 'taskNature',
+          },
+          {
+            align: 'left',
+            fixed: 'right',
+            width: 240,
+            colKey: 'op',
+            title: '操作',
+          },
+        ],
+        rowKey: 'index',
+        tableLayout: 'auto',
+        verticalAlign: 'top',
+        hover: true,
+        rowClassName: (rowKey: string) => `${rowKey}-class`,
+        // 与pagination对齐
+        pagination: {
+          defaultPageSize: 20,
+          total: 0,
+          defaultCurrent: 1,
+        },
+        searchValue: '',
+        confirmVisible: false,
+        deleteIdx: -1,
+        formData: {},
+        visible3: false,
+      };
+    },
+    computed: {
+      confirmBody() {
+        if (this.deleteIdx > -1) {
+          const { name } = this.data?.[this.deleteIdx];
+          return `该操作将引起数据变化,确认该操作吗?`;
+        }
+        return '';
+      },
+      offsetTop() {
+        return this.$store.state.setting.isUseTabsRouter ? 48 : 0;
+      },
+    },
+    mounted() {
+      this.dataLoading = true;
+      this.data = [{"index":1,"company":"河豚公司7","model":"DJ-23941","flyer":"超级飞手29","flyModel":"视距内","contralModel":"遥控飞行","taskNature":"偏离空域","flyTime":"2023-07-25","applyStatu":0},{"index":2,"company":"河豚公司3","model":"DJ-23410","flyer":"超级飞手97","flyModel":"视距内","contralModel":"遥控飞行","taskNature":"偏离空域","flyTime":"2023-07-25","applyStatu":4},{"index":3,"company":"河豚个人7","model":"DJ-23960","flyer":"超级飞手93","flyModel":"视距内","contralModel":"遥控飞行","taskNature":"偏离空域","flyTime":"2023-07-25","applyStatu":1}]
+      this.dataLoading = false;
+    //   this.$request
+    //     .get('/api/get-warnlist')
+    //     .then((res) => {
+    //       if (res.code === 0) {
+    //         const { list = [] } = res.data;
+    //         console.log(JSON.stringify(list));
+    //         this.data = list;
+    //         this.pagination = {
+    //           ...this.pagination,
+    //           total: list.length,
+    //         };
+    //       }
+    //     })
+    //     .catch((e: Error) => {
+    //       console.log(e);
+    //     })
+    //     .finally(() => {
+    //       this.dataLoading = false;
+    //     });
+    },
+  
+    methods: {
+      getContainer() {
+        return document.querySelector('.tdesign-starter-layout');
+      },
+      rehandlePageChange(curr, pageInfo) {
+        console.log('分页变化', curr, pageInfo);
+      },
+      rehandleSelectChange(selectedRowKeys: number[]) {
+        this.selectedRowKeys = selectedRowKeys;
+      },
+      rehandleChange(changeParams, triggerAndData) {
+        console.log('统一Change', changeParams, triggerAndData);
+      },
+      handleClickDetail() {
+        this.$router.push('/warnManage/dealWarn');
+      },
+      handleSetupContract() {
+        this.$router.push('/general/addApply');
+      },
+      handleClickDelete(row: { rowIndex: any }) {
+        console.log(row);
+        this.deleteIdx = row.rowIndex;
+        this.confirmVisible = true;
+      },
+      onConfirmDelete() {
+        // 真实业务请发起请求
+        this.data.splice(this.deleteIdx, 1);
+        this.pagination.total = this.data.length;
+        const selectedIdx = this.selectedRowKeys.indexOf(this.deleteIdx);
+        if (selectedIdx > -1) {
+          this.selectedRowKeys.splice(selectedIdx, 1);
+        }
+        this.confirmVisible = false;
+        this.$message.success('删除成功');
+        this.resetIdx();
+      },
+      rejectReason() {
+        this.visible3 = true;
+      },
+      closeHandle() {
+        this.visible3 = false;
+      },
+      onCancel() {
+        this.resetIdx();
+      },
+      resetIdx() {
+        this.deleteIdx = -1;
+      },
+      onReset() {
+  
+      },
+      onSubmit() {
+  
+      }
+    },
+  });
+  </script>
+  
+  <style lang="less" scoped>
+  @import '@/style/variables';
+  
+  .payment-col {
+    display: flex;
+  
+    .trend-container {
+      display: flex;
+      align-items: center;
+      margin-left: 8px;
+    }
+  }
+  
+  .left-operation-container {
+    padding: 0 0 6px 0;
+    margin-bottom: 16px;
+  
+    .selected-count {
+      display: inline-block;
+      margin-left: var(--td-comp-margin-s);
+      color: var(--td-text-color-secondary);
+    }
+  }
+  
+  .search-input {
+    width: 360px;
+  }
+  
+  .t-button + .t-button {
+    margin-left: var(--td-comp-margin-s);
+  }
+  
+  ::v-deep .t-table__header th {
+    background: rgba(242, 246, 252, 1);
+  }
+  </style>
+  

+ 2726 - 0
src/pages/bigScreen/index.vue

@@ -0,0 +1,2726 @@
+<template>
+  <div style="height: 100%;">
+    <!--顶部-->
+    <header class="header">
+      <div class="left nav">
+        <ul>
+          <li class="nav_active"><i class="nav_3"></i><router-link to="/bigScreen">当前态势</router-link></li>
+          <!-- <li @click="warnHandle"><i class="nav_2"></i><a href="javascritp:;">航线规划</a></li> -->
+          <li><i class="nav_1"></i><router-link to="/admin/index">数据管理</router-link></li>
+        </ul>
+      </div>
+      <div class="header_center">
+        <h2><strong>无人机低空监管平台</strong></h2>
+        <p class="color_font"><small>Drone Low Altitude Supervision Platform</small></p>
+      </div>
+      <div class="nav text_right">
+        <ul>
+          <li><i class="nav_7"></i><router-link to="/planManage/index">飞行计划管理</router-link></li>
+          <li><i class="nav_8"></i><router-link to="/userManage/personal">用户管理</router-link></li>
+          <li><i class="nav_4"></i><router-link to="/filingsManage/plant">备案管理</router-link></li>
+        </ul>
+      </div>
+      <!--<nav class="left nav">-->
+      <!--<ul>-->
+      <!--<li class="nav_active"><i class="nav_1"></i><a href="index.html">数据概览</a> </li>-->
+      <!--<li><i class="nav_2"></i><a href="carContrl.html">车辆监控</a> </li>-->
+      <!--<li><i class="nav_3"></i><a href="map.html">地图界面</a> </li>-->
+      <!--<li><i class="nav_4"></i><a href="javascript:void(0)">表格界面</a><ul class="li_ul">-->
+      <!--<li><a href="table1.html">表格一</a> </li>-->
+      <!--<li><a href="table2.html">表格二</a> </li>-->
+
+      <!--</ul> </li>-->
+      <!--&lt;!&ndash;<li><i class="nav_5"></i><a href="#">车载视频</a> </li>&ndash;&gt;-->
+      <!--&lt;!&ndash;<li><i class="nav_6"></i><a href="#">视频监控</a> </li>&ndash;&gt;-->
+      <!--<li><i class="nav_7"></i><a href="static.html">查询统计</a> </li>-->
+      <!--<li><i class="nav_8"></i><a href="message.html">信息录入</a> </li>-->
+      <!--</ul>-->
+      <!--</nav>-->
+    </header>
+    <!--内容部分-->
+    <div class="con left">
+      <!--选择时间-->
+      <div class="select_time">
+        <div class="static_top left"><i></i><span>实时总览</span></div>
+      </div>
+      <!--数据总概-->
+      <div class="con_div">
+        <div class="con_div_text left">
+          <div class="con_div_text01 left">
+            <img src="../../assets/bigScreen/info_1.png" class="left text01_img" />
+            <div class="left text01_div" @click="goPlan">
+              <p>今日飞行计划</p>
+              <p>12356</p>
+            </div>
+          </div>
+          <div class="con_div_text01 right" @click="goPlan">
+            <img src="../../assets/bigScreen/info_2.png" class="left text01_img" />
+            <div class="left text01_div">
+              <p>已完成计划</p>
+              <p>12356</p>
+            </div>
+          </div>
+        </div>
+        <div class="con_div_text left" @click="goTask">
+          <div class="con_div_text01 left">
+            <img src="../../assets/bigScreen/info_4.png" class="left text01_img" />
+            <div class="left text01_div">
+              <p>正在执行任务</p>
+              <p class="sky">38</p>
+            </div>
+          </div>
+          <div class="con_div_text01 right" @click="goTask">
+            <img src="../../assets/bigScreen/info_5.png" class="left text01_img" />
+            <div class="left text01_div">
+              <p>待执行任务</p>
+              <p class="sky">102</p>
+            </div>
+          </div>
+        </div>
+        <div class="con_div_text left">
+          <div class="con_div_text01 left">
+            <img src="../../assets/bigScreen/info_6.png" class="left text01_img" />
+            <div class="left text01_div">
+              <p>违规飞行</p>
+              <p class="org">67</p>
+            </div>
+          </div>
+          <div class="con_div_text01 right">
+            <img src="../../assets/bigScreen/info_7.png" class="left text01_img" />
+            <div class="left text01_div">
+              <p>黑飞</p>
+              <p class="org">5</p>
+            </div>
+          </div>
+        </div>
+      </div>
+      <!--统计分析图-->
+      <div class="div_any">
+        <div class="left div_any01" :style="{ left: oLeft }" @click="toggleSide(0)">
+          <div class="arrow_left" :class="{ close: showSideArr[0] }"></div>
+          <div class="div_any_child">
+            <div class="div_any_title"><img src="../../assets/bigScreen/title_1.png" />违规类型</div>
+            <p id="char1" class="p_chart"></p>
+          </div>
+          <div class="div_any_child">
+            <div class="div_any_title"><img src="../../assets/bigScreen/title_5.png" />违规趋势</div>
+            <!-- <p id="char4" class="p_chart"></p> -->
+            <p id="char3" class="p_chart"></p>
+          </div>
+        </div>
+        <!-- <div class="div_any02 left">
+          <div class="div_any_child div_height">
+            <div class="div_any_title any_title_width">
+              <img src="../../assets/bigScreen/title_3.png" />无人机飞行地图
+            </div>
+            <div id="map_div"></div>
+          </div>
+        </div> -->
+        <div class="right div_any01" :style="{ right: oRight }" @click="toggleSide(1)">
+          <div class="arrow_right" :class="{ close: !showSideArr[1] }"></div>
+          <div class="div_any_child">
+            <div class="div_any_title"><img src="../../assets/bigScreen/title_4.png" />违规分布</div>
+            <p id="char2" class="p_chart"></p>
+            <!-- <div class="table_p">
+              <table>
+                <thead>
+                  <tr>
+                    <th>任务类型</th>
+                    <th>无人机型号</th>
+                    <th>飞行状态</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr>
+                    <td>电力巡检</td>
+                    <td>DJ-23304</td>
+                    <td>正在飞行</td>
+                  </tr>
+                  <tr>
+                    <td>违规飞行</td>
+                    <td>DJ-23304</td>
+                    <td>正在飞行</td>
+                  </tr>
+                  <tr>
+                    <td>河道巡检</td>
+                    <td>DJ-23304</td>
+                    <td>正在飞行</td>
+                  </tr>
+                  <tr>
+                    <td>环保执法</td>
+                    <td>DJ-23304</td>
+                    <td>正在飞行</td>
+                  </tr>
+                </tbody>
+              </table>
+            </div> -->
+          </div>
+          <div class="div_any_child">
+            <div class="div_any_title"><img src="../../assets/bigScreen/title_2.png" />在飞任务</div>
+            <!-- <p id="char4" class="p_chart"></p> -->
+            <div class="table_p" style="margin-top: 7%">
+              <table>
+                <thead>
+                  <tr>
+                    <th>无人机型号</th>
+                    <th>飞手</th>
+                    <th>开始时间</th>
+                    <th>飞行状态</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr>
+                    <td>DJ-23054</td>
+                    <td>超级飞手74</td>
+                    <td>12-05 08:30</td>
+                    <th>正常</th>
+                  </tr>
+                  <tr>
+                    <td>DJ-23054</td>
+                    <td>超级飞手74</td>
+                    <td>12-05 08:30</td>
+                    <th>正常</th>
+                  </tr>
+                  <tr>
+                    <td>DJ-23054</td>
+                    <td>超级飞手74</td>
+                    <td>12-05 08:30</td>
+                    <td>偏离空域</td>
+                  </tr>
+                  <tr>
+                    <td>DJ-23054</td>
+                    <td>超级飞手74</td>
+                    <td>12-05 08:30</td>
+                    <td>偏离空域</td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </div>
+        </div>
+      </div>
+      <!--分析表格-->
+      <div class="div_table" :style="{ bottom: oBottom }" @click="toggleSide(2)">
+        <div class="arrow_bottom" :class="{ close_bottom: showSideArr[2] }"></div>
+        <div class="left div_table_box">
+          <div class="div_any_child">
+            <div class="div_any_title"><img src="../../assets/bigScreen/title_4.png" />实时告警信息</div>
+            <div class="table_p">
+              <table>
+                <thead>
+                  <tr>
+                    <th></th>
+                    <th>无人机型号</th>
+                    <th>飞手</th>
+                    <th>空域顶高</th>
+                    <th>空域底高</th>
+                    <th>告警类型</th>
+                    <th>状态</th>
+                    <th>操作</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr>
+                    <td>
+                      <span
+                        style="
+                          display: inline-block;
+                          width: 20px;
+                          line-height: 20px;
+                          text-align: center;
+                          font-size: 16px;
+                          color: #222222;
+                          background: rgb(254, 140, 113);
+                        "
+                        >1</span
+                      >
+                    </td>
+                    <td>DJ-23054</td>
+                    <td>超级飞手74</td>
+                    <td>258</td>
+                    <td>27</td>
+                    <th>正常</th>
+                    <td>未处理</td>
+                    <th><a @click.stop="dealHandle" href="javascript:;">去处理</a></th>
+                  </tr>
+                  <tr>
+                    <td>
+                      <span
+                        style="
+                          display: inline-block;
+                          width: 20px;
+                          line-height: 20px;
+                          text-align: center;
+                          font-size: 16px;
+                          color: #ffffff;
+                          background: red;
+                        "
+                        >2</span
+                      >
+                    </td>
+                    <td>DJ-23054</td>
+                    <td>超级飞手74</td>
+                    <td>258</td>
+                    <td>27</td>
+                    <td>偏离空域</td>
+                    <td>未处理</td>
+                    <th><a @click.stop="dealHandle" href="javascript:;">去处理</a></th>
+                  </tr>
+                  <tr>
+                    <td>
+                      <span
+                        style="
+                          display: inline-block;
+                          width: 20px;
+                          line-height: 20px;
+                          text-align: center;
+                          font-size: 16px;
+                          color: #ffffff;
+                          background: red;
+                        "
+                        >3</span
+                      >
+                    </td>
+                    <td>DJ-23054</td>
+                    <td>超级飞手74</td>
+                    <td>258</td>
+                    <td>26</td>
+                    <td>正常</td>
+                  </tr>
+                  <tr>
+                    <td></td>
+                    <td>DJ-23054</td>
+                    <td>超级飞手74</td>
+                    <td>258</td>
+                    <td>27</td>
+                    <td>偏离高度</td>
+                    <td>未处理</td>
+                    <th><a @click.stop="dealHandle" href="javascript:;">去处理</a></th>
+                  </tr>
+                  <tr>
+                    <td></td>
+                    <td>DJ-23054</td>
+                    <td>超级飞手74</td>
+                    <td>258</td>
+                    <td>27</td>
+                    <td>进入禁区</td>
+                    <td>未处理</td>
+                    <th><a @click.stop="dealHandle" href="javascript:;">去处理</a></th>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </div>
+        </div>
+        <!-- <div class="left div_table_box">
+          <div class="div_any_child">
+            <div class="div_any_title"><img src="../../assets/bigScreen/title_4.png" />飞手排行前5位</div>
+            <div class="table_p">
+              <table>
+                <thead>
+                  <tr>
+                    <th>姓名</th>
+                    <th>性别</th>
+                    <th>执照编号</th>
+                    <th>分类等级</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr>
+                    <td>飞手5</td>
+                    <td>男</td>
+                    <td>CN-23345</td>
+                    <td>二级</td>
+                  </tr>
+                  <tr>
+                    <td>飞手5</td>
+                    <td>男</td>
+                    <td>CN-23345</td>
+                    <td>二级</td>
+                  </tr>
+                  <tr>
+                    <td>飞手5</td>
+                    <td>男</td>
+                    <td>CN-23345</td>
+                    <td>二级</td>
+                  </tr>
+                  <tr>
+                    <td>飞手5</td>
+                    <td>男</td>
+                    <td>CN-23345</td>
+                    <td>二级</td>
+                  </tr>
+                  <tr>
+                    <td>飞手5</td>
+                    <td>男</td>
+                    <td>CN-23345</td>
+                    <td>二级</td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </div>
+        </div>
+        <div class="left div_table_box">
+          <div class="div_any_child">
+            <div class="div_any_title"><img src="../../assets/bigScreen/title_4.png" />企业排行前5位</div>
+            <div class="table_p">
+              <table>
+                <thead>
+                  <tr>
+                    <th>编号</th>
+                    <th>企业名称</th>
+                    <th>注册日期</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr>
+                    <td>HN882</td>
+                    <td>河豚公司923</td>
+                    <td>2017-12-30</td>
+                  </tr>
+                  <tr>
+                    <td>HN882</td>
+                    <td>河豚公司923</td>
+                    <td>2017-12-30</td>
+                  </tr>
+                  <tr>
+                    <td>HN882</td>
+                    <td>河豚公司923</td>
+                    <td>2017-12-30</td>
+                  </tr>
+                  <tr>
+                    <td>HN882</td>
+                    <td>河豚公司923</td>
+                    <td>2017-12-30</td>
+                  </tr>
+                  <tr>
+                    <td>HN882</td>
+                    <td>河豚公司923</td>
+                    <td>2017-12-30</td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </div>
+        </div>
+        <div class="left div_table_box">
+          <div class="div_any_child">
+            <div class="div_any_title"><img src="../../assets/bigScreen/title_4.png" />告警通知信息</div>
+            <div class="table_p">
+              <table>
+                <thead>
+                  <tr>
+                    <th>计划编号</th>
+                    <th>告警类型</th>
+                    <th>时间</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr>
+                    <td>WN20231022657</td>
+                    <td>偏离空域</td>
+                    <td>2023-09-16 18:23</td>
+                  </tr>
+                  <tr>
+                    <td>WN20231022657</td>
+                    <td>偏离空域</td>
+                    <td>2023-09-16 18:23</td>
+                  </tr>
+                  <tr>
+                    <td>WN20231022657</td>
+                    <td>偏离空域</td>
+                    <td>2023-09-16 18:23</td>
+                  </tr>
+                  <tr>
+                    <td>WN20231022657</td>
+                    <td>偏离空域</td>
+                    <td>2023-09-16 18:23</td>
+                  </tr>
+                  <tr>
+                    <td>WN20231022657</td>
+                    <td>偏离空域</td>
+                    <td>2023-09-16 18:23</td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </div>
+        </div> -->
+      </div>
+    </div>
+    <div id="map_bg"></div>
+    <t-dialog :visible.sync="visible">
+      <div class="table_p" style="height: 160px">
+        <table>
+          <tr>
+            <th>单位名称</th>
+            <td>{{ currentCompany.company }}</td>
+          </tr>
+          <tr>
+            <th>型号</th>
+            <td>{{ currentCompany.model }}</td>
+          </tr>
+          <tr>
+            <th>飞手</th>
+            <td>{{ currentCompany.driver }}</td>
+          </tr>
+          <tr>
+            <th>联系电话</th>
+            <td>{{ currentCompany.tel }}</td>
+          </tr>
+        </table>
+      </div>
+    </t-dialog>
+  </div>
+</template>
+
+<script>
+import * as echarts from 'echarts';
+import coverImg1 from '@/assets/plant_icon4.png';
+import coverImg2 from '@/assets/plant_icon5.png';
+import coverImg3 from '@/assets/plant_icon6.png';
+import style from '@/config/style';
+console.log(mapvgl);
+const imgList = [coverImg1, coverImg2, coverImg3];
+
+export default {
+  data() {
+    return {
+      visible: false,
+      currentCompany: {},
+      showSideArr: [true, true, true],
+      showLeft: true,
+      showRight: true,
+      oLeft: 0,
+      oRight: 0,
+      oBottom: '4vh',
+      currentIndex: 0,
+      planeList: [
+        {
+          company: '郑州远见安全装备股份有限公司',
+          model: 'DJ-2089',
+          local: '梧桐街21',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥',
+          tel: '18236547333',
+        },
+        {
+          company: '郑州瑞普生物工程有限公司',
+          model: 'DJ-2089',
+          local: '长椿路1',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥1',
+          tel: '18236547333',
+        },
+        {
+          company: '郑州林业调查规划设计有限公司',
+          model: 'DJ-2089',
+          local: '国槐街',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥2',
+          tel: '18236547333',
+        },
+        {
+          company: '郑州市林业局',
+          model: 'DJ-2089',
+          local: '瑞达路',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥3',
+          tel: '18236547333',
+        },
+        {
+          company: '郑州市林业执法大队',
+          model: 'DJ-2089',
+          local: '河南省郑州市中原区郑密路50号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥4',
+          tel: '18236547333',
+        },
+        {
+          company: '郑州市森林防火中心',
+          model: 'DJ-2089',
+          local: '河南省郑州市金水区花园北路79号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥5',
+          tel: '18236547333',
+        },
+        {
+          company: '河南文化影视集团有限公司',
+          model: 'DJ-2089',
+          local: '郑州市金水路83号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥6',
+          tel: '18236547333',
+        },
+        {
+          company: '百盟(郑州)影视文化传媒有限公司',
+          model: 'DJ-2089',
+          local: '河南省郑州市金水区国基路60号国家知识产权创意产业试点园区A座6楼0605-18室',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥7',
+          tel: '18236547333',
+        },
+        {
+          company: '国网河南省电力公司',
+          model: 'DJ-2089',
+          local: '郑州市嵩山南路87号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥8',
+          tel: '18236547333',
+        },
+        {
+          company: '河南电力物资有限公司',
+          model: 'DJ-2089',
+          local: '郑州市嵩山南路87号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥9',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省林业局',
+          model: 'DJ-2089',
+          local: '河南省郑州市金水区纬五路40号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省林业科学研究院',
+          model: 'DJ-2089',
+          local: '河南省郑州市金水区政七街北段',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥1',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省地理学会',
+          model: 'DJ-2089',
+          local: '河南省开封市明伦街75号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥2',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省地理信息院',
+          model: 'DJ-2089',
+          local: '郑州市金水区黄河路8号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥3',
+          tel: '18236547333',
+        },
+        {
+          company: '河南励图地理信息科技有限公司',
+          model: 'DJ-2089',
+          local: '郑州市金水区杨金路199号新科技市场9号楼9层901号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥4',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省农业综合开发有限公司',
+          model: 'DJ-2089',
+          local: '郑州市金水区经三路25号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥5',
+          tel: '18236547333',
+        },
+        {
+          company: '河南农投乡村振兴投资有限公司',
+          model: 'DJ-2089',
+          local: '郑州市金水区经三路25号河南省财政厅办公楼14楼AD17室',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥6',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省郑州市郑东新区龙子湖高校园区15号',
+          model: 'DJ-2089',
+          local: '河南省郑州市郑东新区龙子湖高校园区15号-18室',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥7',
+          tel: '18236547333',
+        },
+        {
+          company: '河南水建集团有限公司',
+          model: 'DJ-2089',
+          local: '郑州市政六街27号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥8',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省水利第一工程局集团有限公司',
+          model: 'DJ-2089',
+          local: '河南省郑州市安平路77号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥9',
+          tel: '18236547333',
+        },
+        {
+          company: '河南电力物资有限公司',
+          model: 'DJ-2089',
+          local: '郑州市嵩山南路87号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥9',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省林业局',
+          model: 'DJ-2089',
+          local: '河南省郑州市金水区纬五路40号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省林业科学研究院',
+          model: 'DJ-2089',
+          local: '河南省郑州市金水区政七街北段',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥1',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省地理学会',
+          model: 'DJ-2089',
+          local: '河南省开封市明伦街75号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥2',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省地理信息院',
+          model: 'DJ-2089',
+          local: '郑州市金水区黄河路8号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥3',
+          tel: '18236547333',
+        },
+        {
+          company: '河南励图地理信息科技有限公司',
+          model: 'DJ-2089',
+          local: '郑州市金水区杨金路199号新科技市场9号楼9层901号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥4',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省农业综合开发有限公司',
+          model: 'DJ-2089',
+          local: '郑州市金水区经三路25号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥5',
+          tel: '18236547333',
+        },
+        {
+          company: '河南电力物资有限公司',
+          model: 'DJ-2089',
+          local: '郑州市嵩山南路87号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥9',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省林业局',
+          model: 'DJ-2089',
+          local: '河南省郑州市金水区纬五路40号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省林业科学研究院',
+          model: 'DJ-2089',
+          local: '河南省郑州市金水区政七街北段',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥1',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省地理学会',
+          model: 'DJ-2089',
+          local: '河南省开封市明伦街75号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥2',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省地理信息院',
+          model: 'DJ-2089',
+          local: '郑州市金水区黄河路8号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥3',
+          tel: '18236547333',
+        },
+        {
+          company: '河南励图地理信息科技有限公司',
+          model: 'DJ-2089',
+          local: '郑州市金水区杨金路199号新科技市场9号楼9层901号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥4',
+          tel: '18236547333',
+        },
+        {
+          company: '河南省农业综合开发有限公司',
+          model: 'DJ-2089',
+          local: '郑州市金水区经三路25号',
+          time: '2023-08-06 08:08',
+          driver: '李逍遥5',
+          tel: '18236547333',
+        },
+      ],
+    };
+  },
+  created() {},
+  mounted() {
+    this.initMap();
+    this.initChart();
+  },
+  methods: {
+    initMap() {
+      let vm = this;
+      // 百度地图API功能
+      // var bmapgl = new BMap.Map('map_div'); // 创建Map实例
+      // bmapgl.centerAndZoom(new BMap.Point(113.625, 34.746), 11); // 初始化地图,设置中心点坐标和地图级别
+      // console.log(mapvgl);
+      //添加地图类型控件
+      // var size1 = new BMap.Size(10, 50);
+      // map.addControl(
+      //   new BMap.MapTypeControl({
+      //     offset: size1,
+      //     mapTypes: [BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP],
+      //   }),
+      // );
+      // // 编写自定义函数,创建标注
+      // function addMarker(point, i) {
+      //   var marker = new BMap.Marker(point, {
+      //     icon: myIcon,
+      //   });
+      //   marker.addEventListener('click', function () {
+      //     vm.currentIndex = i;
+      //   });
+      //   map.addOverlay(marker);
+      // }
+
+      // // 随机向地图添加25个标注
+      // var bounds = map.getBounds();
+      // var sw = bounds.getSouthWest();
+      // var ne = bounds.getNorthEast();
+      // var lngSpan = Math.abs(sw.lng - ne.lng);
+      // var latSpan = Math.abs(ne.lat - sw.lat);
+      // for (var i = 0; i < 25; i++) {
+      //   // 创建小车图标
+      //   let index = parseInt(Math.random() * 3);
+      //   var coverImg = imgList[index];
+      //   var myIcon = new BMap.Icon(coverImg, new BMap.Size(25, 25));
+      //   var point = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7));
+      //   addMarker(point, i);
+      // }
+
+      // map.setCurrentCity('郑州'); // 设置地图显示的城市 此项是必须设置的
+      // map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
+      // //设备地图颜色
+      // var mapStyle = {
+      //   style: 'midnight',
+      // };
+      // map.setMapStyle(mapStyle);
+
+      // //加载城市控件
+      // var size = new BMap.Size(10, 50);
+      // map.addControl(
+      //   new BMap.CityListControl({
+      //     anchor: BMAP_ANCHOR_TOP_LEFT,
+      //     offset: size,
+      //   }),
+      // );
+      // 1. 创建地图实例
+      var map = new BMapGL.Map('map_bg', {
+        restrictCenter: false,
+        // showVectorStreetLayer: true, // 设置是否加载POI
+        // showVectorLine: true, //设置是否加载路网数据,注意:路网数据的加载依赖必需加载POI。
+      });
+      map.centerAndZoom(new BMapGL.Point(113.625, 34.746), 12);
+      map.enableScrollWheelZoom();
+      // map.setHeading(64.5);
+      map.setTilt(73);
+      // map.setMapType(BMAP_SATELLITE_MAP);
+      map.setDisplayOptions({
+        skyColors: ['rgba(186, 0, 255, 0)', 'rgba(186, 0, 255, 0.2)'],
+      });
+
+      var bd = new BMapGL.Boundary();
+      bd.get('郑州市', function (rs) {
+        var hole = new BMapGL.Polygon(rs.boundaries, {
+          fillColor: '#034c6a',
+          fillOpacity: 0.2,
+        });
+        map.addOverlay(hole);
+      });
+
+      var styleJson = [
+        {
+          featureType: 'land',
+          elementType: 'geometry',
+          stylers: {
+            color: '#242f3eff',
+          },
+        },
+        {
+          featureType: 'manmade',
+          elementType: 'geometry',
+          stylers: {
+            color: '#242f3eff',
+          },
+        },
+        {
+          featureType: 'water',
+          elementType: 'geometry',
+          stylers: {
+            color: '#17263cff',
+          },
+        },
+        {
+          featureType: 'road',
+          elementType: 'geometry.fill',
+          stylers: {
+            color: '#9e7d60ff',
+          },
+        },
+        {
+          featureType: 'road',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#554631ff',
+          },
+        },
+        {
+          featureType: 'districtlabel',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#d69563ff',
+          },
+        },
+        {
+          featureType: 'districtlabel',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#17263cff',
+            weight: 3,
+          },
+        },
+        {
+          featureType: 'poilabel',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#d69563ff',
+          },
+        },
+        {
+          featureType: 'poilabel',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#17263cff',
+            weight: 3,
+          },
+        },
+        {
+          featureType: 'subway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'railway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'poilabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'subwaylabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'subwaylabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'tertiarywaysign',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'tertiarywaysign',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'provincialwaysign',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'provincialwaysign',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'nationalwaysign',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'nationalwaysign',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'highwaysign',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'highwaysign',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'green',
+          elementType: 'geometry',
+          stylers: {
+            color: '#263b3eff',
+          },
+        },
+        {
+          featureType: 'nationalwaysign',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#d0021bff',
+          },
+        },
+        {
+          featureType: 'nationalwaysign',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#ffffffff',
+          },
+        },
+        {
+          featureType: 'city',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'on',
+          },
+        },
+        {
+          featureType: 'city',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'city',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#d69563ff',
+          },
+        },
+        {
+          featureType: 'city',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#17263cff',
+          },
+        },
+        {
+          featureType: 'water',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#d69563ff',
+          },
+        },
+        {
+          featureType: 'water',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#242f3eff',
+          },
+        },
+        {
+          featureType: 'local',
+          elementType: 'geometry.fill',
+          stylers: {
+            color: '#38414eff',
+          },
+        },
+        {
+          featureType: 'local',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#ffffff00',
+          },
+        },
+        {
+          featureType: 'fourlevelway',
+          elementType: 'geometry.fill',
+          stylers: {
+            color: '#38414eff',
+          },
+        },
+        {
+          featureType: 'fourlevelway',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#ffffff00',
+          },
+        },
+        {
+          featureType: 'tertiaryway',
+          elementType: 'geometry.fill',
+          stylers: {
+            color: '#38414eff',
+          },
+        },
+        {
+          featureType: 'tertiaryway',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#ffffff00',
+          },
+        },
+        {
+          featureType: 'tertiaryway',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#759879ff',
+          },
+        },
+        {
+          featureType: 'fourlevelway',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#759879ff',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#759879ff',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'geometry.fill',
+          stylers: {
+            color: '#9e7d60ff',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#554631ff',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          elementType: 'geometry.fill',
+          stylers: {
+            color: '#9e7d60ff',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#554631ff',
+          },
+        },
+        {
+          featureType: 'tertiaryway',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#1a2e1cff',
+          },
+        },
+        {
+          featureType: 'fourlevelway',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#1a2e1cff',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#1a2e1cff',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#1a2e1cff',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#759879ff',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'geometry.fill',
+          stylers: {
+            color: '#9e7d60ff',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#554631ff',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'geometry.fill',
+          stylers: {
+            color: '#9e7d60ff',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#554631ff',
+          },
+        },
+        {
+          featureType: 'arterial',
+          elementType: 'geometry.fill',
+          stylers: {
+            color: '#9e7d60ff',
+          },
+        },
+        {
+          featureType: 'arterial',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#554631fa',
+          },
+        },
+        {
+          featureType: 'medicallabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'medicallabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'entertainmentlabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'entertainmentlabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'estatelabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'estatelabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'businesstowerlabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'businesstowerlabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'companylabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'companylabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'governmentlabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'governmentlabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'restaurantlabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'restaurantlabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'hotellabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'hotellabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'shoppinglabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'shoppinglabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'lifeservicelabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'lifeservicelabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'carservicelabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'carservicelabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'financelabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'financelabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'otherlabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'otherlabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'airportlabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'on',
+          },
+        },
+        {
+          featureType: 'airportlabel',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#d69563ff',
+          },
+        },
+        {
+          featureType: 'airportlabel',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#17263cff',
+          },
+        },
+        {
+          featureType: 'airportlabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'highway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '6',
+          },
+        },
+        {
+          featureType: 'highway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '7',
+          },
+        },
+        {
+          featureType: 'highway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'highway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'highway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '6',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '7',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '6',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '7',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '6',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '7',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '6',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '7',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'nationalway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '6',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '7',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'highway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '8,9',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '8,9',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '8,9',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '8,9',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '8,9',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '8,9',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '6',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '7',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '6',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '7',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '6',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '7',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '8',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '6,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'arterial',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '9,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'arterial',
+          stylers: {
+            curZoomRegionId: '0',
+            curZoomRegion: '9,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'arterial',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '9,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'arterial',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '9,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'arterial',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '9,10',
+            level: '9',
+          },
+        },
+        {
+          featureType: 'arterial',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+            curZoomRegionId: '0',
+            curZoomRegion: '9,10',
+            level: '10',
+          },
+        },
+        {
+          featureType: 'building',
+          elementType: 'geometry.topfill',
+          stylers: {
+            color: '#2a3341ff',
+          },
+        },
+        {
+          featureType: 'building',
+          elementType: 'geometry.sidefill',
+          stylers: {
+            color: '#313b4cff',
+          },
+        },
+        {
+          featureType: 'building',
+          elementType: 'geometry.stroke',
+          stylers: {
+            color: '#1a212eff',
+          },
+        },
+        {
+          featureType: 'road',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#759879ff',
+          },
+        },
+        {
+          featureType: 'road',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#1a2e1cff',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#759879ff',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#759879ff',
+          },
+        },
+        {
+          featureType: 'arterial',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#759879ff',
+          },
+        },
+        {
+          featureType: 'provincialway',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#1a2e1cff',
+          },
+        },
+        {
+          featureType: 'cityhighway',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#1a2e1cff',
+          },
+        },
+        {
+          featureType: 'arterial',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#1a2e1cff',
+          },
+        },
+        {
+          featureType: 'local',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'manmade',
+          elementType: 'labels.text.fill',
+          stylers: {
+            color: '#d69563ff',
+          },
+        },
+        {
+          featureType: 'manmade',
+          elementType: 'labels.text.stroke',
+          stylers: {
+            color: '#17263cff',
+          },
+        },
+        {
+          featureType: 'subwaystation',
+          elementType: 'geometry',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'transportationlabel',
+          elementType: 'labels.icon',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'transportationlabel',
+          elementType: 'labels',
+          stylers: {
+            visibility: 'off',
+          },
+        },
+        {
+          featureType: 'estate',
+          elementType: 'geometry',
+          stylers: {
+            color: '#2a3341ff',
+          },
+        },
+      ];
+      map.setMapStyleV2({ styleJson: styleJson });
+
+      // 2. 创建MapVGL图层管理器
+      var view = new mapvgl.View({
+        map: map,
+      });
+
+      var data = [
+        {
+          geometry: {
+            type: 'Point',
+            coordinates: [113.625, 34.746],
+          },
+          properties: {
+            count: 100,
+          },
+        },
+      ];
+
+      var fanLayer = new mapvgl.FanLayer({
+        color: '#009900',
+        data: data,
+        size: function (data) {
+          return data.properties.count * 200;
+        },
+      });
+      view.addLayer(fanLayer);
+
+      // var citys = [
+      //   '北京',
+      //   '天津',
+      //   '上海',
+      //   '重庆',
+      //   '石家庄',
+      //   '太原',
+      //   '呼和浩特',
+      //   '哈尔滨',
+      //   '长春',
+      //   '沈阳',
+      //   '济南',
+      //   '南京',
+      //   '合肥',
+      //   '杭州',
+      //   '南昌',
+      //   '福州',
+      //   '郑州',
+      //   '武汉',
+      //   '长沙',
+      //   '广州',
+      //   '南宁',
+      //   '西安',
+      //   '银川',
+      //   '兰州',
+      //   '西宁',
+      //   '乌鲁木齐',
+      //   '成都',
+      //   '贵阳',
+      //   '昆明',
+      //   '拉萨',
+      //   '海口',
+      // ];
+
+      // var citys = [
+      //   '荥阳市',
+      //   '中原区',
+      //   '金水区',
+      //   '二七区'
+      // ];
+
+      var randomCount = 20;
+      // 构造数据
+      while (randomCount--) {
+        // var cityCenter = mapv.utilCityCenter.getCenterByCityName(citys[parseInt(Math.random() * citys.length, 10)]);
+        data.push({
+          geometry: {
+            type: 'Point',
+            coordinates: [113.625 - 1 + Math.random() * 1.2, 34.746 - 1 + Math.random() * 1.2],
+          },
+        });
+      }
+
+      data.push({
+        geometry: {
+          type: 'Point',
+          coordinates: [113.41, 34.46],
+        },
+      });
+
+      var rippleLayer = new mapvgl.RippleLayer({
+        size: 50,
+        unit: 'm',
+        color: 'rgb(255, 51, 0)',
+        enablePicked: true,
+        onClick: (e) => {
+          // 点击事件
+          if (e.dataIndex >= 0) {
+            console.log(e);
+            vm.visible = true;
+            vm.currentCompany = vm.planeList[e.dataIndex];
+          }
+        },
+      });
+      view.addLayer(rippleLayer);
+      rippleLayer.setData(data);
+
+      setTimeout(() => {
+        rippleLayer.setOptions({
+          size: 50,
+          duration: 2,
+          unit: 'px',
+          color: 'rgb(255, 51, 0)',
+        });
+      }, 2000);
+    },
+
+    initChart() {
+      //统计分析图
+      function char1() {
+        var chart1 = document.getElementById('char1');
+        var myChart = echarts.init(chart1);
+
+        var option = {
+          tooltip: {
+            trigger: 'item',
+            formatter: '{a} <br/>{b} : {c} ({d}%)',
+          },
+          legend: {
+            orient: 'vertical',
+            x: 'right',
+            textStyle: {
+              color: '#ffffff',
+            },
+            data: ['偏离空域', '偏离高度', '进入禁区', '黑飞'],
+          },
+
+          calculable: false,
+          series: [
+            {
+              name: '违规类型',
+              type: 'pie',
+              radius: ['40%', '70%'],
+              itemStyle: {
+                normal: {
+                  label: {
+                    show: false,
+                  },
+                  labelLine: {
+                    show: false,
+                  },
+                },
+                emphasis: {
+                  label: {
+                    show: true,
+                    position: 'center',
+                    textStyle: {
+                      fontSize: '20',
+                      fontWeight: 'bold',
+                    },
+                  },
+                },
+              },
+              data: [
+                { value: 335, name: '偏离空域' },
+                { value: 310, name: '偏离高度' },
+                { value: 234, name: '进入禁区' },
+                { value: 135, name: '黑飞' },
+              ],
+            },
+          ],
+        };
+
+        myChart.setOption(option);
+        window.addEventListener('resize', function () {
+          myChart.resize();
+        });
+      }
+      function char2() {
+        var char2 = document.getElementById('char2');
+        var myChart = echarts.init(char2);
+
+        // prettier-ignore
+        let dataAxis = ['二七区', '金水区', '中原区', '高新区', '郑东新区','管城区', '荥阳', '上街'];
+        // prettier-ignore
+        let data = [10, 4, 8, 9, 10, 1, 7, 12, 18, 5, 8, 11, 12];
+        let yMax = 50;
+        let dataShadow = [];
+        for (let i = 0; i < data.length; i++) {
+          dataShadow.push(yMax);
+        }
+        var option = {
+          // title: {
+          //   text: '特性示例:渐变色 阴影 点击缩放',
+          //   subtext: 'Feature Sample: Gradient Color, Shadow, Click Zoom',
+          // },
+          xAxis: {
+            data: dataAxis,
+            axisLabel: {
+              inside: true,
+              color: '#fff',
+            },
+            axisTick: {
+              show: false,
+            },
+            axisLine: {
+              show: false,
+            },
+            z: 10,
+          },
+          yAxis: {
+            axisLine: {
+              show: false,
+            },
+            axisTick: {
+              show: false,
+            },
+            axisLabel: {
+              color: '#999',
+            },
+          },
+          dataZoom: [
+            {
+              type: 'inside',
+            },
+          ],
+          series: [
+            {
+              type: 'bar',
+              showBackground: true,
+              itemStyle: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                  { offset: 0, color: '#83bff6' },
+                  { offset: 0.5, color: '#188df0' },
+                  { offset: 1, color: '#188df0' },
+                ]),
+              },
+              emphasis: {
+                itemStyle: {
+                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                    { offset: 0, color: '#2378f7' },
+                    { offset: 0.7, color: '#2378f7' },
+                    { offset: 1, color: '#83bff6' },
+                  ]),
+                },
+              },
+              data: data,
+            },
+          ],
+        };
+        // Enable data zoom when user click bar.
+        const zoomSize = 6;
+        myChart.on('click', function (params) {
+          console.log(dataAxis[Math.max(params.dataIndex - zoomSize / 2, 0)]);
+          myChart.dispatchAction({
+            type: 'dataZoom',
+            startValue: dataAxis[Math.max(params.dataIndex - zoomSize / 2, 0)],
+            endValue: dataAxis[Math.min(params.dataIndex + zoomSize / 2, data.length - 1)],
+          });
+        });
+
+        myChart.setOption(option);
+        window.addEventListener('resize', function () {
+          myChart.resize();
+        });
+      }
+      function char3() {
+        var char3 = document.getElementById('char3');
+        var myChart = echarts.init(char3);
+
+        // var option = {
+        //   legend: {
+        //     data: ['车辆行驶数量'],
+        //     textStyle: {
+        //       color: '#ffffff',
+        //     },
+        //   },
+        //   grid: { show: 'true', borderWidth: '0' },
+
+        //   calculable: false,
+        //   tooltip: {
+        //     trigger: 'axis',
+        //     formatter: 'Temperature : <br/>{b}km : {c}°C',
+        //   },
+        //   xAxis: [
+        //     {
+        //       type: 'value',
+        //       axisLabel: {
+        //         formatter: '{value}',
+        //         textStyle: {
+        //           color: '#fff',
+        //         },
+        //       },
+
+        //       splitLine: {
+        //         lineStyle: {
+        //           width: 0,
+        //           type: 'solid',
+        //         },
+        //       },
+        //     },
+        //   ],
+        //   yAxis: [
+        //     {
+        //       type: 'category',
+        //       axisLine: { onZero: false },
+        //       axisLabel: {
+        //         formatter: '{value} km',
+        //         textStyle: {
+        //           color: '#fff',
+        //         },
+        //       },
+        //       splitLine: {
+        //         lineStyle: {
+        //           width: 0,
+        //           type: 'solid',
+        //         },
+        //       },
+        //       boundaryGap: false,
+        //       data: ['0', '10', '20', '30', '40', '50', '60', '70', '80'],
+        //     },
+        //   ],
+        //   series: [
+        //     {
+        //       name: '车辆行驶数量',
+        //       type: 'line',
+        //       smooth: true,
+        //       itemStyle: {
+        //         normal: {
+        //           lineStyle: {
+        //             shadowColor: 'rgba(0,0,0,0.4)',
+        //           },
+        //         },
+        //       },
+        //       data: [15, 0, 20, 45, 22.1, 25, 70, 55, 76],
+        //     },
+        //   ],
+        // };
+
+        var option = {
+          tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+              type: 'cross',
+              crossStyle: {
+                color: '#999',
+              },
+            },
+          },
+          // toolbox: {
+          //   feature: {
+          //     dataView: { show: true, readOnly: false },
+          //     magicType: { show: true, type: ['line', 'bar'] },
+          //     restore: { show: true },
+          //     saveAsImage: { show: true },
+          //   },
+          // },
+          legend: {
+            data: ['数量', 'Precipitation', 'Temperature'],
+          },
+          xAxis: [
+            {
+              type: 'category',
+              name: '日期',
+              data: ['12-4', '12-5', '12-6', '12-7', '12-6', '12-7', '12-8'],
+              axisPointer: {
+                type: 'shadow',
+              },
+            },
+          ],
+          yAxis: [
+            {
+              type: 'value',
+              name: '数量',
+              min: 0,
+              max: 100,
+              interval: 20,
+            },
+            // {
+            //   type: 'value',
+            //   name: 'Temperature',
+            //   min: 0,
+            //   max: 25,
+            //   interval: 5,
+            //   axisLabel: {
+            //     formatter: '{value} °C',
+            //   },
+            // },
+          ],
+          series: [
+            {
+              name: '数量',
+              type: 'bar',
+              data: [20, 18, 32, 27, 57, 43, 27, 66],
+            },
+            // {
+            //   name: 'Precipitation',
+            //   type: 'bar',
+            //   tooltip: {
+            //     valueFormatter: function (value) {
+            //       return value + ' ml';
+            //     },
+            //   },
+            //   data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
+            // },
+            {
+              name: '数量',
+              type: 'line',
+              data: [20, 18, 32, 27, 57, 43, 27, 66],
+            },
+          ],
+        };
+
+        myChart.setOption(option);
+        window.addEventListener('resize', function () {
+          myChart.resize();
+        });
+      }
+
+      function char4() {
+        var char4 = document.getElementById('char4');
+        var myChart = echarts.init(char4);
+
+        var option = {
+          grid: { show: 'true', borderWidth: '0' },
+          tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+              // 坐标轴指示器,坐标轴触发有效
+              type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'
+            },
+
+            formatter: function (params) {
+              var tar = params[0];
+              return tar.name + '<br/>' + tar.seriesName + ' : ' + tar.value;
+            },
+          },
+
+          xAxis: [
+            {
+              type: 'category',
+              splitLine: { show: false },
+              data: ['偏离空域', '驶入禁飞区', '黑飞', '其他'],
+              axisLabel: {
+                show: true,
+                textStyle: {
+                  color: '#fff',
+                },
+              },
+            },
+          ],
+          yAxis: [
+            {
+              type: 'value',
+              splitLine: { show: false },
+              axisLabel: {
+                show: true,
+                textStyle: {
+                  color: '#fff',
+                },
+              },
+            },
+          ],
+          series: [
+            {
+              name: '报警数量',
+              type: 'bar',
+              stack: '总量',
+              itemStyle: { normal: { label: { show: true, position: 'inside' } } },
+              data: [20, 16, 8, 10],
+            },
+          ],
+        };
+
+        myChart.setOption(option);
+        window.addEventListener('resize', function () {
+          myChart.resize();
+        });
+      }
+
+      char1();
+      char2();
+      char3();
+      // char4();
+    },
+
+    getName(str) {
+      return str.length < 15 ? str : `${str.substr(0, 15)}...`;
+    },
+
+    toggleSide(i) {
+      this.showSideArr[i] = !this.showSideArr[i];
+      if (i == 0) {
+        this.oLeft = this.showSideArr[i] ? 0 : '-18%';
+      } else if (i == 1) {
+        this.oRight = this.showSideArr[i] ? 0 : '-18%';
+      } else {
+        this.oBottom = this.showSideArr[i] ? '4vh' : '-280px';
+      }
+    },
+
+    goPlan() {
+      this.$router.push('/planManage/index');
+    },
+    goTask() {
+      this.$router.push('/planManage/index');
+    },
+    dealHandle() {
+      this.$router.push('/warnManage/dealWarn');
+    },
+  },
+};
+</script>
+
+<style scope>
+.fly_info {
+  width: 80%;
+  margin: 4vh 0 0 8%;
+  color: #ffffff;
+  font-size: 16px;
+  line-height: 2;
+}
+
+#map_bg {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1;
+  width: 100%;
+  height: 100%;
+}
+
+.arrow_left {
+  width: 20px;
+  height: 50px;
+  text-align: center;
+  line-height: 50px;
+  font-size: 20px;
+  position: absolute;
+  top: 50%;
+  right: -20px;
+  transform: translateY(-50%);
+  background: #034c6a url(../../assets/bigScreen/expand.png) no-repeat center;
+  color: #ffffff;
+  background-size: 100% auto;
+  cursor: pointer;
+  transition: all 200ms linear;
+}
+
+.arrow_right {
+  width: 20px;
+  height: 50px;
+  text-align: center;
+  line-height: 50px;
+  font-size: 20px;
+  position: absolute;
+  top: 50%;
+  left: -20px;
+  transform: translateY(-50%);
+  background: #034c6a url(../../assets/bigScreen/expand.png) no-repeat center;
+  color: #ffffff;
+  background-size: 100% auto;
+  cursor: pointer;
+  transition: all 200ms linear;
+}
+
+.arrow_bottom {
+  width: 50px;
+  height: 20px;
+  text-align: center;
+  position: absolute;
+  top: -9px;
+  left: 50%;
+  margin-left: -25px;
+  background: #034c6a url(../../assets/bigScreen/expand_bottom.png) no-repeat center;
+  color: #ffffff;
+  background-size: auto 100%;
+  cursor: pointer;
+  transition: all 200ms linear;
+}
+
+.close {
+  width: 20px;
+  height: 50px;
+  font-size: 20px;
+  color: #ffffff;
+  text-align: center;
+  line-height: 50px;
+  position: absolute;
+  top: 50%;
+  right: -20px;
+  transform: translateY(-50%);
+  background: #034c6a url(../../assets/bigScreen/close.png) no-repeat center;
+  background-size: 100% auto;
+  cursor: pointer;
+}
+
+.close_bottom {
+  width: 50px;
+  height: 20px;
+  color: #ffffff;
+  text-align: center;
+  position: absolute;
+  top: -9px;
+  left: 50%;
+  margin-left: -25px;
+  background: #034c6a url(../../assets/bigScreen/close_bottom.png) no-repeat center;
+  background-size: auto 100%;
+  cursor: pointer;
+}
+</style>

+ 1 - 1
src/pages/general/base/index.vue

@@ -52,7 +52,7 @@
         </t-row>
       </t-form>
       <div class="table-container">
-        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
+        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover" :height="600"
           :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
           @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
           :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">

+ 1 - 1
src/pages/general/flyerManage/index.vue

@@ -46,7 +46,7 @@
         </t-row>
       </t-form>
       <div class="table-container">
-        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
+        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover" :height="600"
           :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
           @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
           :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">

+ 1 - 1
src/pages/general/history/index.vue

@@ -41,7 +41,7 @@
           </t-row>
         </t-form>
         <div class="table-container">
-          <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
+          <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover" :height="600"
             :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
             @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
             :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">

+ 62 - 23
src/pages/general/plantManage/add.vue

@@ -10,7 +10,21 @@
           <t-row class="row-gap" :gutter="[16, 24]">
             <t-col :span="6">
               <t-form-item label="无人机厂家" name="type">
-                <t-input v-model="formData.tel" placeholder="请输入无人机厂家" />
+                <t-select v-model="formData.nature" placeholder="请选择无人家厂家" class="demo-select-base" clearable>
+                  <t-option value="1" label="大疆"></t-option>
+                  <t-option value="2" label="纵横"></t-option>
+                  <t-option value="3" label="一电"></t-option>
+                  <t-option value="3" label="华飞"></t-option>
+                  <t-option value="3" label="亿航"></t-option>
+                  <t-option value="3" label="北方天途"></t-option>
+                  <t-option value="3" label="中科灵动"></t-option>
+                  <t-option value="3" label="大工"></t-option>
+                  <t-option value="3" label="佰才邦"></t-option>
+                  <t-option value="3" label="华科尔"></t-option>
+                  <t-option value="3" label="紫燕"></t-option>
+                  <t-option value="3" label="时代星光"></t-option>
+                  <t-option value="3" label="复亚智能"></t-option>
+                </t-select>
               </t-form-item>
             </t-col>
             <t-col :span="6">
@@ -19,7 +33,7 @@
               </t-form-item>
             </t-col>
             <t-col :span="6">
-              <t-form-item label="备案编号"  name="type">
+              <t-form-item label="备案编号" name="type">
                 <t-input v-model="formData.tel" :disabled="true" placeholder="备案成功之前无备案编号" />
               </t-form-item>
             </t-col>
@@ -52,11 +66,19 @@
               </t-form-item>
             </t-col>
             <t-col :span="6">
-              <t-form-item label="无人机类型" name="type">
-                <t-select v-model="formData.nature" placeholder="请选择无人机类型" class="demo-select-base" clearable>
-                  <t-option value="1" label="四轴飞行"></t-option>
-                  <t-option value="2" label="旋翼"></t-option>
-                  <t-option value="3" label="多旋翼"></t-option>
+              <t-form-item label="无人机机型" name="type">
+                <t-select v-model="formData.nature" placeholder="请选择无人机机型" class="demo-select-base" clearable>
+                  <t-option value="1" label="御2"></t-option>
+                  <t-option value="2" label="御2行业版"></t-option>
+                  <t-option value="2" label="M210"></t-option>
+                  <t-option value="2" label="M300"></t-option>
+                  <t-option value="2" label="精灵4RTK"></t-option>
+                  <t-option value="3" label="CW全系列吊舱"></t-option>
+                  <t-option value="3" label="CMCC-007移动定制版复合翼"></t-option>
+                  <t-option value="3" label="MACH4系列四旋翼"></t-option>
+                  <t-option value="3" label="HF系列六旋翼"></t-option>
+                  <t-option value="3" label="DG-X系列高空系留多旋翼"></t-option>
+                  <t-option value="3" label="河豚系列无人机"></t-option>
                 </t-select>
               </t-form-item>
             </t-col>
@@ -84,9 +106,9 @@
             </t-col>
             <t-col :span="12">
               <t-form-item label="无人机尺寸" name="type">
-                <t-input style="margin-right: 10px;" v-model="formData.tel" placeholder="请输入尺寸" suffix="(长/mm)" />
-                <t-input style="margin-right: 10px;" v-model="formData.tel" placeholder="请输入尺寸" suffix="(宽/mm)" />
-                <t-input style="margin-right: 10px;" v-model="formData.tel" placeholder="请输入尺寸" suffix="(高/mm)" />
+                <t-input style="margin-right: 10px" v-model="formData.tel" placeholder="请输入尺寸" suffix="(长/mm)" />
+                <t-input style="margin-right: 10px" v-model="formData.tel" placeholder="请输入尺寸" suffix="(宽/mm)" />
+                <t-input style="margin-right: 10px" v-model="formData.tel" placeholder="请输入尺寸" suffix="(高/mm)" />
               </t-form-item>
             </t-col>
             <t-col :span="12">
@@ -96,10 +118,17 @@
             </t-col>
             <t-col :span="6">
               <t-form-item label="空域批文" name="name">
-                <t-upload ref="uploadRef1"
-                  action="https://service-bv448zsw-1257786608.gz.apigw.tencentcs.com/api/upload-demo" v-model="formData.areaApproval"
-                  :disabled="disabled" :autoUpload="autoUpload" @fail="handleFail" theme="image"
-                  tips="请选择单张图片文件上传" accept="image/*">
+                <t-upload
+                  ref="uploadRef1"
+                  action="https://service-bv448zsw-1257786608.gz.apigw.tencentcs.com/api/upload-demo"
+                  v-model="formData.areaApproval"
+                  :disabled="disabled"
+                  :autoUpload="autoUpload"
+                  @fail="handleFail"
+                  theme="image"
+                  tips="请选择单张图片文件上传"
+                  accept="image/*"
+                >
                 </t-upload>
               </t-form-item>
             </t-col>
@@ -111,15 +140,25 @@
         <div class="form-submit-sub">
           <div class="form-submit-left">
             <t-space>
-              <t-button theme="primary" class="form-submit-confirm" type="submit" @click="onSubmit(1)"> 保存并提交 </t-button>
+              <t-button theme="primary" class="form-submit-confirm" type="submit" @click="onSubmit(1)">
+                保存并提交
+              </t-button>
             </t-space>
             <t-space>
-              <t-button theme="primary" class="form-submit-confirm" type="submit" variant="outline" @click="onSubmit(2)">
-                存草稿 </t-button>
+              <t-button
+                theme="primary"
+                class="form-submit-confirm"
+                type="submit"
+                variant="outline"
+                @click="onSubmit(2)"
+              >
+                存草稿
+              </t-button>
             </t-space>
             <t-space>
-              <t-button type="reset" class="form-submit-cancel" theme="default" variant="base"
-                @click="onSubmit(3)">返回</t-button>
+              <t-button type="reset" class="form-submit-cancel" theme="default" variant="base" @click="onSubmit(3)"
+                >返回</t-button
+              >
             </t-space>
           </div>
         </div>
@@ -145,7 +184,7 @@ const INITIAL_DATA = {
   insure: [],
   areaApproval: [],
   taskApproval: [],
-  tel: ''
+  tel: '',
 };
 const FORM_RULES = {
   name: [{ required: true, message: '请输入合同名称', type: 'error' }],
@@ -219,8 +258,8 @@ export default {
       this.$message.warning('取消新建');
     },
     onSubmit({ validateResult }) {
-      this.$message.success('添加成功')
-      this.$router.push('/generalplant/plantManage')
+      this.$message.success('添加成功');
+      this.$router.push('/generalplant/plantManage');
     },
   },
 };
@@ -267,7 +306,7 @@ export default {
     display: inline-block;
     width: 5px;
     height: 29px;
-    background: #2474FF;
+    background: #2474ff;
     margin-right: 9px;
   }
 }

+ 1 - 1
src/pages/general/plantManage/index.vue

@@ -27,7 +27,7 @@
         </t-row>
       </t-form>
       <div class="table-container">
-        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover"
+        <t-table :columns="columns" :data="data" :rowKey="rowKey" :verticalAlign="verticalAlign" :hover="hover" :height="600"
           :pagination="pagination" :selected-row-keys="selectedRowKeys" :loading="dataLoading"
           @page-change="rehandlePageChange" @change="rehandleChange" @select-change="rehandleSelectChange"
           :headerAffixedTop="true" :headerAffixProps="{ offsetTop: offsetTop, container: getContainer }">

+ 1 - 1
src/pages/login/components/components-login.vue

@@ -144,7 +144,7 @@ export default Vue.extend({
         this.$message.success('登录成功');
         sessionStorage.setItem('roleType', this.formData.userType)
         if (this.formData.userType === 1) {
-          this.$router.push('/admin/index');
+          this.$router.push('/bigScreen');
         } else {
           this.$router.push('/general/index');
         }

+ 75 - 2
src/pages/login/index.less

@@ -3,10 +3,29 @@
 .light {
   &.login-wrapper {
     background-color: white;
-    background-image: url('@/assets/assets-login-bg-main.png');
   }
 }
 
+.bg {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  top: 0px;
+  left: 0px;
+  color: transparent;
+  background-image: url('@/assets/assets-login-bg-main.png');
+  background-size: cover;
+  opacity: 0.6;
+  z-index: 0;
+  -webkit-backface-visibility: hidden;
+  -webkit-animation: imgAnimation 6s ease-in-out;
+  -moz-animation: imgAnimation 6s ease-in-out;
+  -o-animation: imgAnimation 6s ease-in-out;
+  -ms-animation: imgAnimation 6s ease-in-out;
+  animation: imgAnimation 6s ease-in-out;
+  animation-fill-mode: forwards;
+}
+
 .dark {
   &.login-wrapper {
     background-color: var(--td-bg-color-page);
@@ -15,7 +34,7 @@
 }
 
 .login-wrapper {
-  height: 100vh;
+  height: 100%;
   display: flex;
   flex-direction: column;
   background-size: cover;
@@ -205,3 +224,57 @@
     display: none;
   }
 }
+
+@-webkit-keyframes imgAnimation {
+  0% {
+    opacity: 0.6;
+    transform: scale(1.3);
+  }
+
+  8% {
+    opacity: 0.7;
+    transform: scale(1.25);
+  }
+
+  17% {
+    opacity: 0.8;
+    transform: scale(1.2);
+  }
+
+  25% {
+    opacity: 0.9;
+    transform: scale(1.1);
+  }
+
+  100% {
+    opacity: 1;
+    transform: scale(1);
+  }
+}
+
+@keyframes imgAnimation {
+  0% {
+    opacity: 0.6;
+    transform: scale(1.3);
+  }
+
+  8% {
+    opacity: 0.7;
+    transform: scale(1.25);
+  }
+
+  17% {
+    opacity: 0.8;
+    transform: scale(1.2);
+  }
+
+  25% {
+    opacity: 0.9;
+    transform: scale(1.15);
+  }
+
+  100% {
+    opacity: 1;
+    transform: scale(1);
+  }
+}

+ 15 - 6
src/pages/login/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="login-wrapper">
     <!-- <login-header /> -->
-
+    <div class="bg"></div>
     <div class="login-container">
       <div class="title-container">
         <h1 class="title">登录</h1>
@@ -16,10 +16,19 @@
       <login v-if="type === 'login'" />
       <register v-else @register-success="switchType('login')" />
       <tdesign-setting />
-  
     </div>
-      <p align="center" style="color:aliceblue;margin:auto;bottom:100px;position: fixed;left:0;right:0;font-size:20px">研发单位:河南省无人机协会</p>
-      <p align="center" style="color:aliceblue;margin:auto;bottom:75px;position: fixed;left:0;right:0;font-size: 20px;">技术支持:国家超级计算郑州中心</p>
+    <p
+      align="center"
+      style="color: aliceblue; margin: auto; bottom: 100px; position: fixed; left: 0; right: 0; font-size: 20px"
+    >
+      研发单位:河南省无人机协会
+    </p>
+    <p
+      align="center"
+      style="color: aliceblue; margin: auto; bottom: 75px; position: fixed; left: 0; right: 0; font-size: 20px"
+    >
+      技术支持:国家超级计算郑州中心
+    </p>
     <!-- <footer class="copyright">Copyright @ 2021-2022 Tencent. All Rights Reserved</footer> -->
   </div>
 </template>
@@ -58,11 +67,11 @@ export default {
     font-size: 31px;
     font-family: PingFang SC-Regular, PingFang SC;
     font-weight: 400;
-    color: #FFFFFF;
+    color: #ffffff;
     text-align: center;
     margin: 30px auto 0;
     padding: 17px 0;
-    border-bottom: 1px solid #FFFFFF;
+    border-bottom: 1px solid #ffffff;
   }
 }
 </style>

+ 1 - 1
src/router/index.js

@@ -34,7 +34,7 @@ const defaultRouterList = [
 const createRouter = () =>
   new VueRouter({
     mode: 'history',
-    base: env === 'site' ? '/starter/vue/' : null,
+    base: env === 'site' ? '/starter/vue/' : '/plane/',
     routes: defaultRouterList,
     scrollBehavior() {
       return { x: 0, y: 0 };

+ 46 - 13
src/router/modules/admin.ts

@@ -3,20 +3,26 @@ import { DashboardIcon } from 'tdesign-icons-vue';
 
 export default [
   {
-    path: '/admin',
-    name: 'Admin',
-    component: Layout,
-    redirect: '/admin/index',
-    meta: { title: '当前态势', hidden: false, icon: DashboardIcon },
-    children: [
-      {
-        path: 'index',
-        name: 'AccountIndex',
-        component: () => import('@/pages/admin/index.vue'),
-        meta: { title: '当前态势', hidden: true },
-      },
-    ],
+    path: '/bigScreen',
+    name: 'bigScreen',
+    component: () => import('@/pages/bigScreen/index.vue'),
+    meta: { title: '当前态势', hidden: true },
   },
+  // {
+  //   path: '/admin',
+  //   name: 'Admin',
+  //   component: Layout,
+  //   redirect: '/admin/index',
+  //   meta: { title: '当前态势', hidden: false, icon: DashboardIcon },
+  //   children: [
+  //     {
+  //       path: 'index',
+  //       name: 'AccountIndex',
+  //       component: () => import('@/pages/admin/index.vue'),
+  //       meta: { title: '当前态势', hidden: true },
+  //     },
+  //   ],
+  // },
   {
     path: '/planManage',
     name: 'Admin',
@@ -80,4 +86,31 @@ export default [
       },
     ],
   },
+  {
+    path: '/warnManage',
+    name: 'WarnManage',
+    component: Layout,
+    redirect: '/warnManage',
+    meta: { title: '告警管理', hidden: false, icon: 'secured' },
+    children: [
+      {
+        path: 'index',
+        name: 'WarnIndex',
+        component: () => import('@/pages/admin/warnManage/index.vue'),
+        meta: { title: '告警列表', hidden: false },
+      },
+      {
+        path: 'dealWarn',
+        name: 'DealWarn',
+        component: () => import('@/pages/admin/warnManage/dealWarn.vue'),
+        meta: { title: '告警处理', hidden: true },
+      },
+      {
+        path: 'dealSuccess',
+        name: 'DealSuccess',
+        component: () => import('@/pages/admin/warnManage/dealSuccess.vue'),
+        meta: { title: '处理结果', hidden: true },
+      },
+    ],
+  },
 ];

+ 26 - 26
src/store/modules/notification.ts

@@ -12,8 +12,8 @@ const state: { msgData: Array<msgDataItem> } = {
   msgData: [
     {
       id: '123',
-      content: '腾讯大厦一楼改造施工项目 已通过审核!',
-      type: '合同动态',
+      content: '飞行计划已通过审核!',
+      type: '审核通知',
       status: true,
       collected: false,
       date: '2021-01-01 08:00',
@@ -21,8 +21,8 @@ const state: { msgData: Array<msgDataItem> } = {
     },
     {
       id: '124',
-      content: '三季度生产原材料采购项目 开票成功!',
-      type: '票务动态',
+      content: '飞行计划已通过审核!',
+      type: '审核通知',
       status: true,
       collected: false,
       date: '2021-01-01 08:00',
@@ -30,8 +30,8 @@ const state: { msgData: Array<msgDataItem> } = {
     },
     {
       id: '125',
-      content: '2021-01-01 10:00的【国家电网线下签约】会议即将开始,请提前10分钟前往 会议室1 进行签到!',
-      type: '会议通知',
+      content: '飞行计划已通过审核!',
+      type: '审核通知',
       status: true,
       collected: false,
       date: '2021-01-01 08:00',
@@ -39,31 +39,31 @@ const state: { msgData: Array<msgDataItem> } = {
     },
     {
       id: '126',
-      content: '一季度生产原材料采购项目 开票成功!',
-      type: '票务动态',
-      status: true,
-      collected: false,
-      date: '2021-01-01 08:00',
-      quality: 'low',
-    },
-    {
-      id: '127',
-      content: '二季度生产原材料采购项目 开票成功!',
-      type: '票务动态',
-      status: true,
-      collected: false,
-      date: '2021-01-01 08:00',
-      quality: 'low',
-    },
-    {
-      id: '128',
-      content: '三季度生产原材料采购项目 开票成功!',
-      type: '票务动态',
+      content: '飞行计划已通过审核!',
+      type: '审核通知',
       status: true,
       collected: false,
       date: '2021-01-01 08:00',
       quality: 'low',
     },
+    // {
+    //   id: '127',
+    //   content: '二季度生产原材料采购项目 开票成功!',
+    //   type: '票务动态',
+    //   status: true,
+    //   collected: false,
+    //   date: '2021-01-01 08:00',
+    //   quality: 'low',
+    // },
+    // {
+    //   id: '128',
+    //   content: '三季度生产原材料采购项目 开票成功!',
+    //   type: '票务动态',
+    //   status: true,
+    //   collected: false,
+    //   date: '2021-01-01 08:00',
+    //   quality: 'low',
+    // },
   ],
 };
 

+ 1 - 1
src/style/layout.less

@@ -70,7 +70,7 @@
   }
 
   &-layout {
-    height: calc(100vh - var(--td-comp-size-xxxl));
+    height: calc(100% - var(--td-comp-size-xxxl));
     overflow-y: scroll;
 
     &-tabs-nav {

+ 51 - 0
src/utils/devicePixelRatio.js

@@ -0,0 +1,51 @@
+/**
+ * @description 校正windows页面在系统进行缩放后导致页面被放大的问题,通常放大比例是125%、150%
+ * **/
+
+class DevicePixelRatio {
+	constructor() {
+	}
+	//获取系统类型
+	_getSystem() {
+		let flag = false;
+		var agent = navigator.userAgent.toLowerCase();
+		if(agent.indexOf("windows") >= 0) {
+			return true;
+		}
+	}
+	//获取页面缩放比例
+	_addHandler(element, type, handler) {
+		if(element.addEventListener) {
+			element.addEventListener(type, handler, false);
+		} else if(element.attachEvent) {
+			element.attachEvent("on" + type, handler);
+		} else {
+			element["on" + type] = handler;
+		}
+	}
+	//校正浏览器缩放比例
+	_correct() {
+		let t = this;
+		//页面devicePixelRatio(设备像素比例)变化后,计算页面body标签zoom修改其大小,来抵消devicePixelRatio带来的变化。
+		document.getElementsByTagName('body')[0].style.zoom = 1 / window.devicePixelRatio;
+	}
+	//监听页面缩放
+	_watch() {
+		let t = this;
+		t._addHandler(window, 'resize', function() { //注意这个方法是解决全局有两个window.resize
+			//重新校正
+			t._correct()
+		})
+	}
+	//初始化页面比例
+	init() {
+		let t = this;
+		if(t._getSystem()) { //判断设备,目前只在windows系统下校正浏览器缩放比例
+			//初始化页面校正浏览器缩放比例
+			t._correct();
+			//开启监听页面缩放
+			t._watch();
+		}
+	}
+}
+export default DevicePixelRatio;

+ 1 - 0
vite.config.js

@@ -39,6 +39,7 @@ export default ({ mode }) => {
     ],
 
     build: {
+      outDir: "plane",
       cssCodeSplit: false,
     },