From a1e663eeb588f419b1622ca07b23fb9d44292ee9 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 26 八月 2024 18:14:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/components/business/operaVisitsWindow.vue             |    3 
 admin/src/components/business/OperaCarEventHkWindow.vue         |    3 
 admin/src/views/business/deviceBroadcast.vue                    |    2 
 admin/src/assets/icons/home_func4.png                           |    0 
 admin/src/assets/style/style.scss                               |   13 
 h5/pages/staffLogin/forgetPsd.vue                               |    9 
 admin/package-lock.json                                         |  166 ++--
 admin/src/components/business/OperaMemberRoleWindow.vue         |   97 +-
 admin/src/components/business/OperaHiddenDangerParamWindow.vue  |    2 
 admin/src/assets/icons/system/log-opera.svg                     |    2 
 admin/src/assets/icons/home_func2.png                           |    0 
 admin/src/assets/icons/system/permission.svg                    |    2 
 admin/src/components/business/OperaDeviceRoleWindow.vue         |    4 
 admin/src/components/business/OperaVisitsHkWindow.vue           |    3 
 admin/src/components/common/CommonHeader.vue                    |   13 
 admin/src/views/meeting/bookings.vue                            |    2 
 admin/src/components/operation/HiddenDangerParam.vue            |    1 
 admin/src/views/meeting/components/OperaRoomsWindow.vue         |    4 
 h5/pages.json                                                   |   20 
 admin/src/assets/style/variables.scss                           |    2 
 admin/src/assets/icons/home_func1.png                           |    0 
 admin/src/components/common/DepartmentSelect.vue                |    2 
 h5/pages/login/login.vue                                        |   14 
 admin/src/utils/config.js                                       |    1 
 admin/src/components/common/ImportWindow.vue                    |    2 
 admin/src/views/meeting/rooms.vue                               |    2 
 admin/package.json                                              |    1 
 admin/src/assets/icons/system/log.svg                           |    2 
 admin/src/views/index.vue                                       | 1110 +++++++++++++++++++++--------
 h5/pages/driver/taskDetail.vue                                  |   11 
 admin/src/assets/icons/system/listener.svg                      |    2 
 admin/src/assets/icons/system/role.svg                          |    2 
 h5/pages/driver/login.vue                                       |  220 ++++++
 admin/src/assets/icons/system/dictionary.svg                    |    2 
 admin/src/views/meeting/userStatistics.vue                      |    4 
 admin/src/views/operation/serviceCar/apprRecord.vue             |    1 
 admin/src/components/base/BaseOpera.vue                         |    1 
 admin/src/components/common/Menu.vue                            |   62 
 admin/src/assets/icons/home_icon4.png                           |    0 
 h5/.gitignore                                                   |   27 
 admin/src/views/meeting/roomStatistics.vue                      |    4 
 h5/pages/staff/task/visitorApprove.vue                          |    4 
 admin/src/assets/icons/system/log-login.svg                     |    2 
 admin/src/assets/icons/system/position.svg                      |    2 
 admin/src/components/common/MenuItems.vue                       |    2 
 admin/src/components/business/OperaCarUseBookWindow.vue         |    9 
 admin/src/components/business/OperaProblemsWindow.vue           |    4 
 h5/pages/driver/register.vue                                    |  227 ++++++
 admin/src/layouts/AppLayout.vue                                 |    5 
 admin/src/assets/icons/system/department.svg                    |    2 
 admin/src/layouts/TableLayout.vue                               |    1 
 h5/static/driver/position.png                                   |    0 
 admin/src/assets/icons/home_icon2.png                           |    0 
 admin/src/assets/icons/home_icon1.png                           |    0 
 admin/src/views/platform/platform.vue                           |    4 
 admin/src/components/business/OperaInternalCompanyWindow.vue    |    4 
 admin/src/components/system/department/DepartmentUserWindow.vue |    2 
 admin/src/components/common/companySelect.vue                   |    2 
 admin/src/assets/icons/home_icon3.png                           |    0 
 admin/src/assets/icons/home_func3.png                           |    0 
 admin/src/components/business/OperaHiddenDangerWindow.vue       |    2 
 admin/src/components/business/operaVisitsReportWindow.vue       |    5 
 admin/src/views/meeting/components/OperaBookingsWindow.vue      |    4 
 admin/src/components/business/OperaCarsWindow.vue               |    2 
 admin/src/views/operation/danger/record.vue                     |    1 
 65 files changed, 1,542 insertions(+), 560 deletions(-)

diff --git a/admin/package-lock.json b/admin/package-lock.json
index 387d70a..ff48650 100644
--- a/admin/package-lock.json
+++ b/admin/package-lock.json
@@ -1876,63 +1876,6 @@
           "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
           "dev": true
         },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true,
-          "optional": true
-        },
-        "loader-utils": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
-          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        },
         "ssri": {
           "version": "8.0.1",
           "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
@@ -1940,28 +1883,6 @@
           "dev": true,
           "requires": {
             "minipass": "^3.1.1"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "vue-loader-v16": {
-          "version": "npm:vue-loader@16.8.3",
-          "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
-          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chalk": "^4.1.0",
-            "hash-sum": "^2.0.0",
-            "loader-utils": "^2.0.0"
           }
         }
       }
@@ -4606,9 +4527,9 @@
       "dev": true
     },
     "dayjs": {
-      "version": "1.11.11",
-      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz",
-      "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg=="
+      "version": "1.11.13",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
     },
     "de-indent": {
       "version": "1.0.2",
@@ -13986,6 +13907,87 @@
         }
       }
     },
+    "vue-loader-v16": {
+      "version": "npm:vue-loader@16.8.3",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
+      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "hash-sum": "^2.0.0",
+        "loader-utils": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "vue-property-decorator": {
       "version": "8.5.1",
       "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz",
diff --git a/admin/package.json b/admin/package.json
index b4331b6..0d777f2 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -17,6 +17,7 @@
     "@wangeditor/editor-for-vue": "^1.0.2",
     "axios": "^0.21.1",
     "core-js": "^3.6.5",
+    "dayjs": "^1.11.13",
     "echarts": "^5.4.3",
     "el-tree-transfer": "^2.4.7",
     "element-tiptap": "^1.27.1",
diff --git a/admin/src/assets/icons/home_func1.png b/admin/src/assets/icons/home_func1.png
new file mode 100644
index 0000000..73219bd
--- /dev/null
+++ b/admin/src/assets/icons/home_func1.png
Binary files differ
diff --git a/admin/src/assets/icons/home_func2.png b/admin/src/assets/icons/home_func2.png
new file mode 100644
index 0000000..7600ec1
--- /dev/null
+++ b/admin/src/assets/icons/home_func2.png
Binary files differ
diff --git a/admin/src/assets/icons/home_func3.png b/admin/src/assets/icons/home_func3.png
new file mode 100644
index 0000000..0d1993c
--- /dev/null
+++ b/admin/src/assets/icons/home_func3.png
Binary files differ
diff --git a/admin/src/assets/icons/home_func4.png b/admin/src/assets/icons/home_func4.png
new file mode 100644
index 0000000..1e9bc18
--- /dev/null
+++ b/admin/src/assets/icons/home_func4.png
Binary files differ
diff --git a/admin/src/assets/icons/home_icon1.png b/admin/src/assets/icons/home_icon1.png
new file mode 100644
index 0000000..ada2901
--- /dev/null
+++ b/admin/src/assets/icons/home_icon1.png
Binary files differ
diff --git a/admin/src/assets/icons/home_icon2.png b/admin/src/assets/icons/home_icon2.png
new file mode 100644
index 0000000..8170726
--- /dev/null
+++ b/admin/src/assets/icons/home_icon2.png
Binary files differ
diff --git a/admin/src/assets/icons/home_icon3.png b/admin/src/assets/icons/home_icon3.png
new file mode 100644
index 0000000..7b576ee
--- /dev/null
+++ b/admin/src/assets/icons/home_icon3.png
Binary files differ
diff --git a/admin/src/assets/icons/home_icon4.png b/admin/src/assets/icons/home_icon4.png
new file mode 100644
index 0000000..57625a9
--- /dev/null
+++ b/admin/src/assets/icons/home_icon4.png
Binary files differ
diff --git a/admin/src/assets/icons/system/department.svg b/admin/src/assets/icons/system/department.svg
index 08d05cd..61b1c67 100644
--- a/admin/src/assets/icons/system/department.svg
+++ b/admin/src/assets/icons/system/department.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621750709361" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7590" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M890.96986 479.671711 545.11094 479.671711 545.11094 271.38592 684.78875 271.38592 684.78875 64.500013 343.028339 64.500013 343.028339 271.38592 480.338121 271.38592 480.338121 479.671711 133.397522 479.671711 133.397522 532.849864 133.397522 548.629245 133.397522 755.515153 64.284683 755.515153 64.284683 959.499987 270.160836 959.499987 270.160836 755.515153 202.498081 755.515153 202.498081 548.629245 480.338121 548.629245 480.338121 755.515153 409.786454 755.515153 409.786454 959.499987 615.662607 959.499987 615.662607 755.515153 545.11094 755.515153 545.11094 548.629245 822.225426 548.629245 822.225426 755.515153 753.863725 755.515153 753.863725 959.499987 959.714294 959.499987 959.714294 755.515153 890.96986 755.515153Z" p-id="7591" fill="#f7f7f7"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621750709361" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7590" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M890.96986 479.671711 545.11094 479.671711 545.11094 271.38592 684.78875 271.38592 684.78875 64.500013 343.028339 64.500013 343.028339 271.38592 480.338121 271.38592 480.338121 479.671711 133.397522 479.671711 133.397522 532.849864 133.397522 548.629245 133.397522 755.515153 64.284683 755.515153 64.284683 959.499987 270.160836 959.499987 270.160836 755.515153 202.498081 755.515153 202.498081 548.629245 480.338121 548.629245 480.338121 755.515153 409.786454 755.515153 409.786454 959.499987 615.662607 959.499987 615.662607 755.515153 545.11094 755.515153 545.11094 548.629245 822.225426 548.629245 822.225426 755.515153 753.863725 755.515153 753.863725 959.499987 959.714294 959.499987 959.714294 755.515153 890.96986 755.515153Z" p-id="7591" fill="#333333"></path></svg>
diff --git a/admin/src/assets/icons/system/dictionary.svg b/admin/src/assets/icons/system/dictionary.svg
index 7ed0110..dc4e0c0 100644
--- a/admin/src/assets/icons/system/dictionary.svg
+++ b/admin/src/assets/icons/system/dictionary.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621751616853" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12750" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M225.5 596.7h63.8V652h-63.8v-55.3z m0-165.8h63.8v55.3h-63.8v-55.3z m0-165.7h63.8v55.3h-63.8v-55.3z m127.6 331.5h446.3V652H353.1v-55.3z m0-165.8h446.3v55.3H353.1v-55.3z m0-165.7h446.3v55.3H353.1v-55.3zM98 156.3v694.3c0 46.6 45 77.7 96.4 77.7h732.5v-46.6H194.4c-19.3 0-32.2-10.4-32.2-25.9 0-15.5 12.8-25.9 32.2-25.9h732.5V99.4H168.7c-32.1 5.1-64.3 31.1-70.7 56.9z" fill="#f7f7f7" p-id="12751"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621751616853" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12750" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M225.5 596.7h63.8V652h-63.8v-55.3z m0-165.8h63.8v55.3h-63.8v-55.3z m0-165.7h63.8v55.3h-63.8v-55.3z m127.6 331.5h446.3V652H353.1v-55.3z m0-165.8h446.3v55.3H353.1v-55.3z m0-165.7h446.3v55.3H353.1v-55.3zM98 156.3v694.3c0 46.6 45 77.7 96.4 77.7h732.5v-46.6H194.4c-19.3 0-32.2-10.4-32.2-25.9 0-15.5 12.8-25.9 32.2-25.9h732.5V99.4H168.7c-32.1 5.1-64.3 31.1-70.7 56.9z" fill="#333333" p-id="12751"></path></svg>
diff --git a/admin/src/assets/icons/system/listener.svg b/admin/src/assets/icons/system/listener.svg
index 1d2ca18..a9a3fea 100644
--- a/admin/src/assets/icons/system/listener.svg
+++ b/admin/src/assets/icons/system/listener.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621751666911" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13701" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M64.28 671v80.3c0 34.76 26.84 62.94 60 62.94h297.47v94.15H285.53c-24.17 0-48.38-0.49-72.54 0h-1.06c-12.54 0-24.55 11.58-24 25.18s10.53 25.17 24 25.17h525.88c24.16 0 48.37 0.49 72.53 0h1.06c12.54 0 24.56-11.58 24-25.17s-10.54-25.18-24-25.18H601.59v-94.11H899.1c33.11 0 59.95-28.18 59.95-62.94V671zM899.77 65H124.9A60 60 0 0 0 65 125v499.3h894.72V125a60 60 0 0 0-59.95-60zM757.46 296.75l-6.89 7.53-77 84.15-36.78 40.22c0.08 1.2 0.14 2.41 0.14 3.63a51.09 51.09 0 1 1-100.6-12.67l-55.74-65.31-38.46-45a51 51 0 0 1-21.7 0.18l-6 5.78-71.92 69.71-30.85 29.9a45.45 45.45 0 1 1-36.1-35.1l2.85-2.76 71.92-69.72 32.2-31.21A51.09 51.09 0 1 1 482 259.44a51.66 51.66 0 0 1-1.28 11.34l10.62 12.44L561.13 365l14.72 17.23a51.85 51.85 0 0 1 10-1 50.84 50.84 0 0 1 22.14 5l76.82-84q15.3-16.73 30.59-33.44a45.42 45.42 0 1 1 42 28z" p-id="13702" fill="#f7f7f7"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621751666911" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13701" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M64.28 671v80.3c0 34.76 26.84 62.94 60 62.94h297.47v94.15H285.53c-24.17 0-48.38-0.49-72.54 0h-1.06c-12.54 0-24.55 11.58-24 25.18s10.53 25.17 24 25.17h525.88c24.16 0 48.37 0.49 72.53 0h1.06c12.54 0 24.56-11.58 24-25.17s-10.54-25.18-24-25.18H601.59v-94.11H899.1c33.11 0 59.95-28.18 59.95-62.94V671zM899.77 65H124.9A60 60 0 0 0 65 125v499.3h894.72V125a60 60 0 0 0-59.95-60zM757.46 296.75l-6.89 7.53-77 84.15-36.78 40.22c0.08 1.2 0.14 2.41 0.14 3.63a51.09 51.09 0 1 1-100.6-12.67l-55.74-65.31-38.46-45a51 51 0 0 1-21.7 0.18l-6 5.78-71.92 69.71-30.85 29.9a45.45 45.45 0 1 1-36.1-35.1l2.85-2.76 71.92-69.72 32.2-31.21A51.09 51.09 0 1 1 482 259.44a51.66 51.66 0 0 1-1.28 11.34l10.62 12.44L561.13 365l14.72 17.23a51.85 51.85 0 0 1 10-1 50.84 50.84 0 0 1 22.14 5l76.82-84q15.3-16.73 30.59-33.44a45.42 45.42 0 1 1 42 28z" p-id="13702" fill="#333333"></path></svg>
diff --git a/admin/src/assets/icons/system/log-login.svg b/admin/src/assets/icons/system/log-login.svg
index a030e67..b0e1916 100644
--- a/admin/src/assets/icons/system/log-login.svg
+++ b/admin/src/assets/icons/system/log-login.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1622347607410" class="icon" viewBox="0 0 1038 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3794" width="64.875" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M76.778433 76.778433h776.41112v328.249368h77.209773v-345.071609A59.956192 59.956192 0 0 0 872.599832 0H59.956192A59.956192 59.956192 0 0 0 0 59.956192v898.048863a59.956192 59.956192 0 0 0 59.956192 59.956192H474.473463v-75.915754H76.778433z" p-id="3795" fill="#f7f7f7"></path><path d="M209.631003 256.647009h513.294018v81.091828H209.631003zM209.631003 472.748104h389.068239v81.091829H209.631003zM209.631003 684.535805h278.213984v81.091828H209.631003zM914.871104 774.685762a163.046335 163.046335 0 1 0-227.747262 0 180.731255 180.731255 0 0 0-122.069082 180.731256c0 68.582982 102.227464 68.582982 243.706824 68.582982h86.267902c59.956192 0 101.364785-3.450716 125.088458-27.605729a57.799495 57.799495 0 0 0 17.68492-43.133951 172.535805 172.535805 0 0 0-122.93176-178.574558zM733.277169 590.503791a94.894693 94.894693 0 0 1 67.288964-28.037068 92.306655 92.306655 0 1 1-67.288964 26.74305z m122.500422 364.913227h-46.584668a862.679023 862.679023 0 0 1-172.535804-10.352149c5.607414-99.639427 92.737995-121.206403 166.065712-121.206402 144.498736 0 164.771693 70.73968 166.497051 125.951137a480.943555 480.943555 0 0 1-113.442291 5.607414z" p-id="3796" fill="#f7f7f7"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1622347607410" class="icon" viewBox="0 0 1038 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3794" width="64.875" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M76.778433 76.778433h776.41112v328.249368h77.209773v-345.071609A59.956192 59.956192 0 0 0 872.599832 0H59.956192A59.956192 59.956192 0 0 0 0 59.956192v898.048863a59.956192 59.956192 0 0 0 59.956192 59.956192H474.473463v-75.915754H76.778433z" p-id="3795" fill="#333333"></path><path d="M209.631003 256.647009h513.294018v81.091828H209.631003zM209.631003 472.748104h389.068239v81.091829H209.631003zM209.631003 684.535805h278.213984v81.091828H209.631003zM914.871104 774.685762a163.046335 163.046335 0 1 0-227.747262 0 180.731255 180.731255 0 0 0-122.069082 180.731256c0 68.582982 102.227464 68.582982 243.706824 68.582982h86.267902c59.956192 0 101.364785-3.450716 125.088458-27.605729a57.799495 57.799495 0 0 0 17.68492-43.133951 172.535805 172.535805 0 0 0-122.93176-178.574558zM733.277169 590.503791a94.894693 94.894693 0 0 1 67.288964-28.037068 92.306655 92.306655 0 1 1-67.288964 26.74305z m122.500422 364.913227h-46.584668a862.679023 862.679023 0 0 1-172.535804-10.352149c5.607414-99.639427 92.737995-121.206403 166.065712-121.206402 144.498736 0 164.771693 70.73968 166.497051 125.951137a480.943555 480.943555 0 0 1-113.442291 5.607414z" p-id="3796" fill="#333333"></path></svg>
diff --git a/admin/src/assets/icons/system/log-opera.svg b/admin/src/assets/icons/system/log-opera.svg
index 051fd63..93f6160 100644
--- a/admin/src/assets/icons/system/log-opera.svg
+++ b/admin/src/assets/icons/system/log-opera.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1622347629380" class="icon" viewBox="0 0 1025 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4602" width="64.0625" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M548.075474 961.502824H37.281249a39.060735 39.060735 0 0 1-37.257932-40.262603V103.368526a39.060735 39.060735 0 0 1 37.257932-40.262604h717.515653a39.060735 39.060735 0 0 1 37.257931 40.262604V513.205775h-60.093438V128.006836H61.919559v773.40255H487.982036l60.093438 63.699045z" fill="#f7f7f7" p-id="4603"></path><path d="M733.764198 513.205775a223.54759 223.54759 0 1 1-225.350393 223.54759 227.153197 227.153197 0 0 1 225.350393-223.54759m0-63.699045A287.246635 287.246635 0 1 0 1022.813636 736.753365a287.246635 287.246635 0 0 0-289.049438-287.246635zM210.951285 0.007812h18.028032a22.835507 22.835507 0 0 1 22.835506 22.835507v145.42612a23.436441 23.436441 0 0 1-22.835506 23.436441h-18.028032a23.436441 23.436441 0 0 1-23.436441-23.436441V25.247056a22.835507 22.835507 0 0 1 22.835507-25.239244z m385.19894 0h18.028031a22.835507 22.835507 0 0 1 23.436441 22.835507v145.42612a23.436441 23.436441 0 0 1-23.436441 23.436441h-18.028031a23.436441 23.436441 0 0 1-22.835507-23.436441V25.247056a22.835507 22.835507 0 0 1 22.835507-25.239244zM157.468125 321.507707h514.399832a31.849522 31.849522 0 0 1 31.849522 31.849522 31.849522 31.849522 0 0 1-31.849522 31.849522H157.468125a31.849522 31.849522 0 0 1-31.849522-31.849522 31.849522 31.849522 0 0 1 31.849522-31.849522z m0 191.698068h257.199916a31.849522 31.849522 0 0 1 31.849522 31.849522 31.849522 31.849522 0 0 1-31.849522 31.849522H157.468125a31.849522 31.849522 0 0 1-31.849522-31.849522 31.849522 31.849522 0 0 1 31.849522-31.849522z m0 191.698068h192.899937a31.248588 31.248588 0 0 1 31.849522 31.849522 31.849522 31.849522 0 0 1-31.849522 31.849522H157.468125a31.849522 31.849522 0 0 1-31.849522-31.849522 31.849522 31.849522 0 0 1 31.849522-31.849522z" fill="#f7f7f7" p-id="4604"></path><path d="M870.777237 829.29726h-152.637333v-212.730771a30.647654 30.647654 0 0 1 30.647654-30.647654 30.647654 30.647654 0 0 1 30.647653 30.647654v152.036398h91.342026a30.046719 30.046719 0 0 1 30.04672 30.647654 30.046719 30.046719 0 0 1-30.04672 30.046719z" fill="#f7f7f7" p-id="4605"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1622347629380" class="icon" viewBox="0 0 1025 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4602" width="64.0625" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M548.075474 961.502824H37.281249a39.060735 39.060735 0 0 1-37.257932-40.262603V103.368526a39.060735 39.060735 0 0 1 37.257932-40.262604h717.515653a39.060735 39.060735 0 0 1 37.257931 40.262604V513.205775h-60.093438V128.006836H61.919559v773.40255H487.982036l60.093438 63.699045z" fill="#333333" p-id="4603"></path><path d="M733.764198 513.205775a223.54759 223.54759 0 1 1-225.350393 223.54759 227.153197 227.153197 0 0 1 225.350393-223.54759m0-63.699045A287.246635 287.246635 0 1 0 1022.813636 736.753365a287.246635 287.246635 0 0 0-289.049438-287.246635zM210.951285 0.007812h18.028032a22.835507 22.835507 0 0 1 22.835506 22.835507v145.42612a23.436441 23.436441 0 0 1-22.835506 23.436441h-18.028032a23.436441 23.436441 0 0 1-23.436441-23.436441V25.247056a22.835507 22.835507 0 0 1 22.835507-25.239244z m385.19894 0h18.028031a22.835507 22.835507 0 0 1 23.436441 22.835507v145.42612a23.436441 23.436441 0 0 1-23.436441 23.436441h-18.028031a23.436441 23.436441 0 0 1-22.835507-23.436441V25.247056a22.835507 22.835507 0 0 1 22.835507-25.239244zM157.468125 321.507707h514.399832a31.849522 31.849522 0 0 1 31.849522 31.849522 31.849522 31.849522 0 0 1-31.849522 31.849522H157.468125a31.849522 31.849522 0 0 1-31.849522-31.849522 31.849522 31.849522 0 0 1 31.849522-31.849522z m0 191.698068h257.199916a31.849522 31.849522 0 0 1 31.849522 31.849522 31.849522 31.849522 0 0 1-31.849522 31.849522H157.468125a31.849522 31.849522 0 0 1-31.849522-31.849522 31.849522 31.849522 0 0 1 31.849522-31.849522z m0 191.698068h192.899937a31.248588 31.248588 0 0 1 31.849522 31.849522 31.849522 31.849522 0 0 1-31.849522 31.849522H157.468125a31.849522 31.849522 0 0 1-31.849522-31.849522 31.849522 31.849522 0 0 1 31.849522-31.849522z" fill="#333333" p-id="4604"></path><path d="M870.777237 829.29726h-152.637333v-212.730771a30.647654 30.647654 0 0 1 30.647654-30.647654 30.647654 30.647654 0 0 1 30.647653 30.647654v152.036398h91.342026a30.046719 30.046719 0 0 1 30.04672 30.647654 30.046719 30.046719 0 0 1-30.04672 30.046719z" fill="#333333" p-id="4605"></path></svg>
diff --git a/admin/src/assets/icons/system/log.svg b/admin/src/assets/icons/system/log.svg
index 0fe054b..65d0f1f 100644
--- a/admin/src/assets/icons/system/log.svg
+++ b/admin/src/assets/icons/system/log.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1622347409604" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2382" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M299.1872 255.5904a42.496 42.496 0 0 0 42.5728-42.5472V42.752a42.5728 42.5728 0 0 0-85.1712 0v170.24c0 23.552 19.0464 42.5984 42.5984 42.5984zM512.1536 255.5904a42.496 42.496 0 0 0 42.5984-42.5472V42.752a42.5728 42.5728 0 1 0-85.1712 0v170.24c0 23.552 19.0976 42.5984 42.5728 42.5984zM384.4096 81.792h42.5984v85.0688h-42.5984zM597.4784 81.792h42.5728v85.0688H597.504z" fill="#f7f7f7" p-id="2383"></path><path d="M1023.3088 896.1024v-691.2c0.1536-70.6048-57.2416-127.6928-127.744-127.6928h-85.1712v85.0688h85.1712c23.4752 0 42.7264 19.072 42.7264 42.5216v691.3024c0 23.4496-19.2512 42.5984-42.752 42.5984H128.768a42.7264 42.7264 0 0 1-42.5728-42.5984H85.504l0.6656-691.2c0-23.4752 19.0976-42.5472 42.5728-42.5472h85.1712V77.2096H128.768A127.6928 127.6928 0 0 0 1.024 204.8768v691.2a127.616 127.616 0 0 0 127.744 127.6928h766.7968a127.3344 127.3344 0 0 0 127.232-121.344c0.0768-0.3584 0.512-0.7936 0.512-1.152v-3.7888c0-0.512 0.1536-0.9472 0.1536-1.4592h-0.1536v0.0768z" fill="#f7f7f7" p-id="2384"></path><path d="M725.248 255.5904c23.4496 0 42.5728-19.0208 42.5728-42.5472V42.752a42.5728 42.5728 0 0 0-85.1712 0v170.24c0 23.552 18.8672 42.5984 42.5728 42.5984zM255.872 426.4448h511.2064c23.3472 0 42.5728-19.072 42.5728-42.5216 0-23.552-19.2256-42.5472-42.5728-42.5472H255.8464a42.496 42.496 0 1 0 0 85.0688zM767.0784 551.3728H255.8464a42.5728 42.5728 0 1 0 0 85.0688h511.232c23.3216 0 42.5728-19.0976 42.5728-42.5472 0-23.4496-19.2512-42.5216-42.5728-42.5216zM767.0784 769.5872H255.8464a42.5216 42.5216 0 1 0 0 85.0688h511.232c23.3216 0 42.5728-19.1488 42.5728-42.6752 0-23.3984-19.2512-42.3936-42.5728-42.3936z" fill="#f7f7f7" p-id="2385"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1622347409604" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2382" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M299.1872 255.5904a42.496 42.496 0 0 0 42.5728-42.5472V42.752a42.5728 42.5728 0 0 0-85.1712 0v170.24c0 23.552 19.0464 42.5984 42.5984 42.5984zM512.1536 255.5904a42.496 42.496 0 0 0 42.5984-42.5472V42.752a42.5728 42.5728 0 1 0-85.1712 0v170.24c0 23.552 19.0976 42.5984 42.5728 42.5984zM384.4096 81.792h42.5984v85.0688h-42.5984zM597.4784 81.792h42.5728v85.0688H597.504z" fill="#333333" p-id="2383"></path><path d="M1023.3088 896.1024v-691.2c0.1536-70.6048-57.2416-127.6928-127.744-127.6928h-85.1712v85.0688h85.1712c23.4752 0 42.7264 19.072 42.7264 42.5216v691.3024c0 23.4496-19.2512 42.5984-42.752 42.5984H128.768a42.7264 42.7264 0 0 1-42.5728-42.5984H85.504l0.6656-691.2c0-23.4752 19.0976-42.5472 42.5728-42.5472h85.1712V77.2096H128.768A127.6928 127.6928 0 0 0 1.024 204.8768v691.2a127.616 127.616 0 0 0 127.744 127.6928h766.7968a127.3344 127.3344 0 0 0 127.232-121.344c0.0768-0.3584 0.512-0.7936 0.512-1.152v-3.7888c0-0.512 0.1536-0.9472 0.1536-1.4592h-0.1536v0.0768z" fill="#333333" p-id="2384"></path><path d="M725.248 255.5904c23.4496 0 42.5728-19.0208 42.5728-42.5472V42.752a42.5728 42.5728 0 0 0-85.1712 0v170.24c0 23.552 18.8672 42.5984 42.5728 42.5984zM255.872 426.4448h511.2064c23.3472 0 42.5728-19.072 42.5728-42.5216 0-23.552-19.2256-42.5472-42.5728-42.5472H255.8464a42.496 42.496 0 1 0 0 85.0688zM767.0784 551.3728H255.8464a42.5728 42.5728 0 1 0 0 85.0688h511.232c23.3216 0 42.5728-19.0976 42.5728-42.5472 0-23.4496-19.2512-42.5216-42.5728-42.5216zM767.0784 769.5872H255.8464a42.5216 42.5216 0 1 0 0 85.0688h511.232c23.3216 0 42.5728-19.1488 42.5728-42.6752 0-23.3984-19.2512-42.3936-42.5728-42.3936z" fill="#333333" p-id="2385"></path></svg>
diff --git a/admin/src/assets/icons/system/permission.svg b/admin/src/assets/icons/system/permission.svg
index 7499def..2d0ccb1 100644
--- a/admin/src/assets/icons/system/permission.svg
+++ b/admin/src/assets/icons/system/permission.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621746809427" class="icon" viewBox="0 0 1025 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4923" width="64.0625" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M928.612599 95.57028a325.17778 325.17778 0 0 0-523.501496 370.143341l-383.852354 383.852354a72.018013 72.018013 0 0 0 0 102.177841L73.352997 1002.741343a72.018013 72.018013 0 0 0 102.177841 0L329.254566 847.920893l19.192618 19.192618a73.114734 73.114734 0 0 0 102.177841 0l51.180314-51.180314a73.114734 73.114734 0 0 0 0-102.177841L482.978295 694.928312l75.490963-75.490963A325.17778 325.17778 0 0 0 928.612599 95.57028zM777.447886 402.469376a109.672101 109.672101 0 1 1-2.741802-155.186023 109.672101 109.672101 0 0 1 2.741802 155.186023z" p-id="4924" fill="#f7f7f7"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621746809427" class="icon" viewBox="0 0 1025 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4923" width="64.0625" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M928.612599 95.57028a325.17778 325.17778 0 0 0-523.501496 370.143341l-383.852354 383.852354a72.018013 72.018013 0 0 0 0 102.177841L73.352997 1002.741343a72.018013 72.018013 0 0 0 102.177841 0L329.254566 847.920893l19.192618 19.192618a73.114734 73.114734 0 0 0 102.177841 0l51.180314-51.180314a73.114734 73.114734 0 0 0 0-102.177841L482.978295 694.928312l75.490963-75.490963A325.17778 325.17778 0 0 0 928.612599 95.57028zM777.447886 402.469376a109.672101 109.672101 0 1 1-2.741802-155.186023 109.672101 109.672101 0 0 1 2.741802 155.186023z" p-id="4924" fill="#333333"></path></svg>
diff --git a/admin/src/assets/icons/system/position.svg b/admin/src/assets/icons/system/position.svg
index 6172da5..0bcf61d 100644
--- a/admin/src/assets/icons/system/position.svg
+++ b/admin/src/assets/icons/system/position.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621751435396" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11906" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M870 96H154c-49.5 0-90 40.6-90 90.2v651.6c0 49.6 40.5 90.2 90 90.2h716c49.5 0 90-40.6 90-90.2V186.2c0-49.6-40.5-90.2-90-90.2zM177.5 314.4h167.3v59.9H177.5v-59.9z m0 223.5h167.3v59.9H177.5v-59.9z m646.4 229.9v-0.2H362.8v0.2h-59.7c0-20.1 2.3-39.9 6.9-59.1v-1.2h0.3c3.8-15.7 9.1-31 16-46 14.8-32.3 35.9-61.3 62.7-86.1 36.8-34 81.6-57.7 130.5-69.7-39.8-24.8-66.3-69-66.3-119.4 0-77.6 62.7-140.6 140.2-140.6 77.5 0 140.2 63 140.2 140.6 0 50.4-26.5 94.6-66.3 119.4 48.9 11.9 93.7 35.6 130.5 69.7 26.8 24.8 47.9 53.8 62.7 86.1 15.4 33.7 23.2 69.4 23.2 106.3h-59.8z" fill="#f7f7f7" p-id="11907"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621751435396" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11906" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M870 96H154c-49.5 0-90 40.6-90 90.2v651.6c0 49.6 40.5 90.2 90 90.2h716c49.5 0 90-40.6 90-90.2V186.2c0-49.6-40.5-90.2-90-90.2zM177.5 314.4h167.3v59.9H177.5v-59.9z m0 223.5h167.3v59.9H177.5v-59.9z m646.4 229.9v-0.2H362.8v0.2h-59.7c0-20.1 2.3-39.9 6.9-59.1v-1.2h0.3c3.8-15.7 9.1-31 16-46 14.8-32.3 35.9-61.3 62.7-86.1 36.8-34 81.6-57.7 130.5-69.7-39.8-24.8-66.3-69-66.3-119.4 0-77.6 62.7-140.6 140.2-140.6 77.5 0 140.2 63 140.2 140.6 0 50.4-26.5 94.6-66.3 119.4 48.9 11.9 93.7 35.6 130.5 69.7 26.8 24.8 47.9 53.8 62.7 86.1 15.4 33.7 23.2 69.4 23.2 106.3h-59.8z" fill="#333333" p-id="11907"></path></svg>
diff --git a/admin/src/assets/icons/system/role.svg b/admin/src/assets/icons/system/role.svg
index df41c8d..e6fb85b 100644
--- a/admin/src/assets/icons/system/role.svg
+++ b/admin/src/assets/icons/system/role.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621750614796" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6622" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M782.215429 604.888761l-18.436207-15.623905-4.609052-3.749737c-3.827857-3.2029-7.811952-6.249562-11.48357-9.296223l-5.234008-3.905976-1.093673-0.859315-6.56204-4.765291c-3.359139-2.421705-6.796398-4.765291-10.233658-7.030757l-2.343585-1.56239a382.082586 382.082586 0 0 0-109.367332-49.293419 264.668943 264.668943 0 1 0-204.438791 0 385.129247 385.129247 0 0 0-108.0393 48.98094l-2.265466 1.562391c-3.515379 2.265466-6.952638 4.609052-10.233658 7.030757l-6.640159 4.84341-0.937434 0.624957-5.312128 4.062215c-3.905976 2.968542-7.811952 6.093323-11.952287 9.608701l-4.062215 3.437259-18.592446 15.623905 0.937434 0.546836A397.159653 397.159653 0 0 0 122.183582 889.321943V914.085832a109.757929 109.757929 0 0 0 109.757929 109.367331h559.257663a109.757929 109.757929 0 0 0 109.367332-109.367331v-24.998248a396.847175 396.847175 0 0 0-119.288511-283.730106z" fill="#f7f7f7" p-id="6623"></path><path d="M232.253989 576.297015c3.984096-3.359139 7.811952-6.327681 11.327331-9.139984l5.858964-4.452813 0.859315-0.624956 6.952637-5.077769 10.936734-7.811952 2.421705-1.562391a403.409215 403.409215 0 0 1 74.526024-38.512924 286.698648 286.698648 0 0 1-138.115316-244.748465c0-6.405801 0-12.733482 0.703076-18.983044a171.081755 171.081755 0 0 0 24.52953 330.914298zM225.926308 581.609143a252.951015 252.951015 0 0 0-102.805292 39.059761l-1.562391 1.015554c-2.265466 1.56239-4.530932 3.046661-6.718278 4.687171l-4.374694 3.202901c-1.406151 1.015554-2.812303 2.031108-4.140334 3.124781-2.577944 1.952988-5.155888 3.984096-7.811953 6.093322l-0.859314 0.781196-2.187347 1.718629A262.950313 262.950313 0 0 0 5.004298 839.872285v17.342534a63.979889 63.979889 0 0 0 63.979889 63.979889h12.186645v-21.482869a421.220466 421.220466 0 0 1 107.648703-281.230281zM678.863301 509.426704a406.221518 406.221518 0 0 1 74.526024 38.512925l2.343586 1.56239 11.014853 7.811952 6.874518 5.077769 0.937434 0.624956 5.858964 4.452813c3.593498 2.812303 7.343235 5.780845 11.327331 9.139984a171.081755 171.081755 0 0 0 24.52953-330.914298c0.390598 6.249562 0.703076 12.577243 0.703076 18.983044A286.698648 286.698648 0 0 1 678.863301 509.426704zM928.220817 641.136219l-2.109227-1.718629-0.937434-0.781196c-2.499825-2.109227-4.999649-4.140335-7.811953-6.093322l-4.140334-3.124781-4.374694-3.202901c-2.187347-1.64051-4.452813-3.124781-6.796398-4.687171l-1.484271-1.015554a253.341612 253.341612 0 0 0-102.805292-39.059761l37.106773 36.716175a421.142347 421.142347 0 0 1 107.570583 281.230282v21.482869h12.186646a64.058009 64.058009 0 0 0 64.058008-63.979889v-17.030056a262.715955 262.715955 0 0 0-90.462407-198.736066z" fill="#f7f7f7" p-id="6624"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1621750614796" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6622" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M782.215429 604.888761l-18.436207-15.623905-4.609052-3.749737c-3.827857-3.2029-7.811952-6.249562-11.48357-9.296223l-5.234008-3.905976-1.093673-0.859315-6.56204-4.765291c-3.359139-2.421705-6.796398-4.765291-10.233658-7.030757l-2.343585-1.56239a382.082586 382.082586 0 0 0-109.367332-49.293419 264.668943 264.668943 0 1 0-204.438791 0 385.129247 385.129247 0 0 0-108.0393 48.98094l-2.265466 1.562391c-3.515379 2.265466-6.952638 4.609052-10.233658 7.030757l-6.640159 4.84341-0.937434 0.624957-5.312128 4.062215c-3.905976 2.968542-7.811952 6.093323-11.952287 9.608701l-4.062215 3.437259-18.592446 15.623905 0.937434 0.546836A397.159653 397.159653 0 0 0 122.183582 889.321943V914.085832a109.757929 109.757929 0 0 0 109.757929 109.367331h559.257663a109.757929 109.757929 0 0 0 109.367332-109.367331v-24.998248a396.847175 396.847175 0 0 0-119.288511-283.730106z" fill="#333333" p-id="6623"></path><path d="M232.253989 576.297015c3.984096-3.359139 7.811952-6.327681 11.327331-9.139984l5.858964-4.452813 0.859315-0.624956 6.952637-5.077769 10.936734-7.811952 2.421705-1.562391a403.409215 403.409215 0 0 1 74.526024-38.512924 286.698648 286.698648 0 0 1-138.115316-244.748465c0-6.405801 0-12.733482 0.703076-18.983044a171.081755 171.081755 0 0 0 24.52953 330.914298zM225.926308 581.609143a252.951015 252.951015 0 0 0-102.805292 39.059761l-1.562391 1.015554c-2.265466 1.56239-4.530932 3.046661-6.718278 4.687171l-4.374694 3.202901c-1.406151 1.015554-2.812303 2.031108-4.140334 3.124781-2.577944 1.952988-5.155888 3.984096-7.811953 6.093322l-0.859314 0.781196-2.187347 1.718629A262.950313 262.950313 0 0 0 5.004298 839.872285v17.342534a63.979889 63.979889 0 0 0 63.979889 63.979889h12.186645v-21.482869a421.220466 421.220466 0 0 1 107.648703-281.230281zM678.863301 509.426704a406.221518 406.221518 0 0 1 74.526024 38.512925l2.343586 1.56239 11.014853 7.811952 6.874518 5.077769 0.937434 0.624956 5.858964 4.452813c3.593498 2.812303 7.343235 5.780845 11.327331 9.139984a171.081755 171.081755 0 0 0 24.52953-330.914298c0.390598 6.249562 0.703076 12.577243 0.703076 18.983044A286.698648 286.698648 0 0 1 678.863301 509.426704zM928.220817 641.136219l-2.109227-1.718629-0.937434-0.781196c-2.499825-2.109227-4.999649-4.140335-7.811953-6.093322l-4.140334-3.124781-4.374694-3.202901c-2.187347-1.64051-4.452813-3.124781-6.796398-4.687171l-1.484271-1.015554a253.341612 253.341612 0 0 0-102.805292-39.059761l37.106773 36.716175a421.142347 421.142347 0 0 1 107.570583 281.230282v21.482869h12.186646a64.058009 64.058009 0 0 0 64.058008-63.979889v-17.030056a262.715955 262.715955 0 0 0-90.462407-198.736066z" fill="#333333" p-id="6624"></path></svg>
diff --git a/admin/src/assets/style/style.scss b/admin/src/assets/style/style.scss
index 52c0841..754466b 100644
--- a/admin/src/assets/style/style.scss
+++ b/admin/src/assets/style/style.scss
@@ -62,7 +62,6 @@
     font-size: 14px;
   }
 }
-
 .doumee-element-table {
   border-color: #DFE2E8;
   tr, th, td {
@@ -142,6 +141,18 @@
   padding: 30px;
   margin: 0 16px;
 }
+.fs12{
+  font-size: 12px;
+}
+.fs13{
+  font-size: 13px;
+}
+.fs15{
+  font-size: 15px;
+}
+.fs17{
+  font-size: 17px;
+}
 .query_btns{
   border-bottom: 1px solid #eee;
   padding-bottom: 10px;
diff --git a/admin/src/assets/style/variables.scss b/admin/src/assets/style/variables.scss
index a123481..b517459 100644
--- a/admin/src/assets/style/variables.scss
+++ b/admin/src/assets/style/variables.scss
@@ -17,7 +17,7 @@
 // 澶撮儴楂樺害
 $header-height: 60px;
 // 鑿滃崟瀹藉害
-$menu-width: 250px;
+$menu-width: 220px;
 // 椤甸潰鏈�灏忓搴�
 $page-min-width: 1000px;
 
diff --git a/admin/src/components/base/BaseOpera.vue b/admin/src/components/base/BaseOpera.vue
index 2052fd7..697e7f5 100644
--- a/admin/src/components/base/BaseOpera.vue
+++ b/admin/src/components/base/BaseOpera.vue
@@ -1,6 +1,5 @@
 <script>
 export default {
-  name: 'BaseOpera',
   data () {
     return {
       title: '',
diff --git a/admin/src/components/business/OperaCarEventHkWindow.vue b/admin/src/components/business/OperaCarEventHkWindow.vue
index d42bf43..f60e4e6 100644
--- a/admin/src/components/business/OperaCarEventHkWindow.vue
+++ b/admin/src/components/business/OperaCarEventHkWindow.vue
@@ -24,7 +24,6 @@
 import GlobalWindow from '@/components/common/GlobalWindow'
 import { syncByDate } from '@/api/business/carEvent'
 export default {
-  name: 'OperaVisitsHkWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
   data () {
@@ -60,7 +59,7 @@
             this.$emit('success')
           })
           .catch(e => {
-            this.$tip.apiFailed(e)
+            // this.$tip.apiFailed(e)
           })
           .finally(() => {
             this.isWorking = false
diff --git a/admin/src/components/business/OperaCarUseBookWindow.vue b/admin/src/components/business/OperaCarUseBookWindow.vue
index 6af1e03..8321ae4 100644
--- a/admin/src/components/business/OperaCarUseBookWindow.vue
+++ b/admin/src/components/business/OperaCarUseBookWindow.vue
@@ -244,16 +244,12 @@
     },
     agreeOpen () {
       this.isShowProblem = true
-      this.dealForm = {
-        driveId: null,
-        checkInfo: null
-      }
+      this.$set(this.dealForm, 'checkInfo', '')
       this.loadMemberList()
     },
     jectOpen () {
       this.isBackProblem = true
-      this.dealForm = {
-        driveId: null,
+      this.backForm = {
         checkInfo: null
       }
     },
@@ -375,6 +371,7 @@
           }
 
           .value {
+            flex: 1;
             color: #111111;
           }
         }
diff --git a/admin/src/components/business/OperaCarsWindow.vue b/admin/src/components/business/OperaCarsWindow.vue
index 7441094..966e8f2 100644
--- a/admin/src/components/business/OperaCarsWindow.vue
+++ b/admin/src/components/business/OperaCarsWindow.vue
@@ -95,7 +95,7 @@
           this.memberList = res
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+          // this.$tip.apiFailed(e)
         })
         .finally(() => {
           this.isWorking = false
diff --git a/admin/src/components/business/OperaDeviceRoleWindow.vue b/admin/src/components/business/OperaDeviceRoleWindow.vue
index 211f896..f8a5257 100644
--- a/admin/src/components/business/OperaDeviceRoleWindow.vue
+++ b/admin/src/components/business/OperaDeviceRoleWindow.vue
@@ -119,7 +119,7 @@
               this.$emit('success')
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+              // this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking = false
@@ -148,7 +148,7 @@
               this.$emit('success')
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+              // this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking = false
diff --git a/admin/src/components/business/OperaHiddenDangerParamWindow.vue b/admin/src/components/business/OperaHiddenDangerParamWindow.vue
index 3e2b4df..12155f9 100644
--- a/admin/src/components/business/OperaHiddenDangerParamWindow.vue
+++ b/admin/src/components/business/OperaHiddenDangerParamWindow.vue
@@ -99,7 +99,7 @@
           this.memberList = res
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+          // this.$tip.apiFailed(e)
         })
         .finally(() => {
           this.isWorking = false
diff --git a/admin/src/components/business/OperaHiddenDangerWindow.vue b/admin/src/components/business/OperaHiddenDangerWindow.vue
index 4d7486e..6937591 100644
--- a/admin/src/components/business/OperaHiddenDangerWindow.vue
+++ b/admin/src/components/business/OperaHiddenDangerWindow.vue
@@ -43,7 +43,6 @@
                   <video
                       v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
                       ref="videoRef"
-                      autoplay
                       controls
                       preload="auto"
                       style="width: 80px;height: 80px;object-fit: contain;"
@@ -616,6 +615,7 @@
 
           .value {
             color: #111111;
+            flex: 1;
           }
         }
       }
diff --git a/admin/src/components/business/OperaInternalCompanyWindow.vue b/admin/src/components/business/OperaInternalCompanyWindow.vue
index 89d1a18..ad001b2 100644
--- a/admin/src/components/business/OperaInternalCompanyWindow.vue
+++ b/admin/src/components/business/OperaInternalCompanyWindow.vue
@@ -126,7 +126,7 @@
               this.$emit('success')
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+             //  this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking = false
@@ -144,7 +144,7 @@
               this.$emit('success')
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+              // this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking = false
diff --git a/admin/src/components/business/OperaMemberRoleWindow.vue b/admin/src/components/business/OperaMemberRoleWindow.vue
index 5ed9027..930d160 100644
--- a/admin/src/components/business/OperaMemberRoleWindow.vue
+++ b/admin/src/components/business/OperaMemberRoleWindow.vue
@@ -50,42 +50,42 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
-import {getDeviceRoleList} from '@/api/business/device'
+import { getDeviceRoleList } from '@/api/business/device'
 export default {
   name: 'OperaDeviceRoleWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
   data () {
     var validateTime = (rule, value, callback) => {
-      if(this.form.timeType == null  ){
+      if (this.form.timeType == null) {
         callback(new Error('璇峰~鍐欐纭殑闂ㄧ鏈夋晥鏈熸椂闂�'))
         return
       }
-      if(this.form.timeType === 1 && (this.form.startTime ==null || this.form.endTime == null)){
-          callback(new Error('璇峰~鍐欐纭殑闂ㄧ鏈夋晥鏈熸椂闂�'))
-          return
+      if (this.form.timeType === 1 && (this.form.startTime == null || this.form.endTime == null)) {
+        callback(new Error('璇峰~鍐欐纭殑闂ㄧ鏈夋晥鏈熸椂闂�'))
+        return
       }
       callback()
-    };
+    }
     return {
       // 琛ㄥ崟鏁版嵁
-     time:null,
-      companyType:1,
+      time: null,
+      companyType: 1,
       form: {
         ids: [],
         names: [],
         timeType: 0,
         roleIds: [],
         status: 1,
-        startTime:null,
-        endTime:null,
+        startTime: null,
+        endTime: null,
         radio: 0
       },
-      roles:[],
+      roles: [],
       rules: {
       // 楠岃瘉瑙勫垯
         timeType: [
-          { required: true, validator: validateTime,message: '璇烽�変腑闂ㄧ鏈夋晥鏈�' }
+          { required: true, validator: validateTime, message: '璇烽�変腑闂ㄧ鏈夋晥鏈�' }
         ],
         startTime: [
           { validator: validateTime, trigger: 'blur' }
@@ -103,15 +103,15 @@
     })
   },
   methods: {
-    filterMethod(query, item) {
-      if (!query) return item;
-      return item.label.indexOf(query) > -1 ;
+    filterMethod (query, item) {
+      if (!query) return item
+      return item.label.indexOf(query) > -1
     },
     seleTime (e) {
-      if(e && e.length >= 2){
+      if (e && e.length >= 2) {
         this.form.startTime = e[0]
         this.form.endTime = e[1]
-      }else{
+      } else {
         this.form.startTime = null
         this.form.endTime = null
       }
@@ -123,41 +123,40 @@
         }
         if (this.form.roleIds == null || this.form.roleIds.length == 0) {
           this.$dialog.actionConfirm('鏉冮檺涓虹┖锛屾彁浜ゅ悗鍗虫竻闄ゆ墍閫変汉鍛樺凡鍒嗛厤鏉冮檺锛佽璋ㄦ厧鎿嶄綔', '鎮ㄧ‘璁よ繘琛岃鎿嶄綔鍚楋紵')
-              .then(() => {
-                this.confirmDo();
-              })
-              .catch(() => {})
-
+            .then(() => {
+              this.confirmDo()
+            })
+            .catch(() => {})
         } else {
-          this.confirmDo();
+          this.confirmDo()
         }
       })
     },
-    confirmDo(){
-        // 璋冪敤鏂板缓鎺ュ彛
-        this.isWorking = true
-        this.api.batchRoleAuth({
-          ids: this.form.ids,
-          timeType: this.form.timeType,
-          startTime: this.form.startTime,
-          endTime: this.form.endTime,
-          roleIds: this.form.roleIds
+    confirmDo () {
+      // 璋冪敤鏂板缓鎺ュ彛
+      this.isWorking = true
+      this.api.batchRoleAuth({
+        ids: this.form.ids,
+        timeType: this.form.timeType,
+        startTime: this.form.startTime,
+        endTime: this.form.endTime,
+        roleIds: this.form.roleIds
+      })
+        .then(() => {
+          this.visible = false
+          this.$tip.apiSuccess('鎺堟潈鎴愬姛锛屽彲鍓嶅線銆愪汉鍛樻巿鏉冭褰曘�戞煡鐪嬩笅鍙戣繘搴�')
+          this.$emit('success')
         })
-            .then(() => {
-              this.visible = false
-              this.$tip.apiSuccess('鎺堟潈鎴愬姛锛屽彲鍓嶅線銆愪汉鍛樻巿鏉冭褰曘�戞煡鐪嬩笅鍙戣繘搴�')
-              this.$emit('success')
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.isWorking = false
-            })
-      },
+        .catch(e => {
+          //  this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking = false
+        })
+    },
     // 鑾峰彇璁惧
-    getLists (){
-      getDeviceRoleList({type:2})
+    getLists () {
+      getDeviceRoleList({ type: 2 })
         .then(res => {
           this.roles = res.map(item => {
             return {
@@ -168,7 +167,7 @@
           })
         })
     },
-    open (title, ids,names,companyType) {
+    open (title, ids, names, companyType) {
       this.roles = []
       this.getLists()
       this.title = title
@@ -178,8 +177,8 @@
       this.$nextTick(() => {
         this.$refs.form.resetFields()
         this.form[this.configData['field.id']] = null
-        this.form.ids = ids;
-        this.form.names =names;
+        this.form.ids = ids
+        this.form.names = names
 
         console.log(names)
       })
diff --git a/admin/src/components/business/OperaProblemsWindow.vue b/admin/src/components/business/OperaProblemsWindow.vue
index f1469dc..f64e85e 100644
--- a/admin/src/components/business/OperaProblemsWindow.vue
+++ b/admin/src/components/business/OperaProblemsWindow.vue
@@ -159,7 +159,7 @@
               this.$emit('success')
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+              // this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking = false
@@ -182,7 +182,7 @@
               this.$emit('success')
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+             //  this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking = false
diff --git a/admin/src/components/business/OperaVisitsHkWindow.vue b/admin/src/components/business/OperaVisitsHkWindow.vue
index 2b931b1..819bfdf 100644
--- a/admin/src/components/business/OperaVisitsHkWindow.vue
+++ b/admin/src/components/business/OperaVisitsHkWindow.vue
@@ -24,7 +24,6 @@
 import GlobalWindow from '@/components/common/GlobalWindow'
 import { syncByDate } from '@/api/business/visits'
 export default {
-  name: 'OperaVisitsHkWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
   data () {
@@ -60,7 +59,7 @@
             this.$emit('success')
           })
           .catch(e => {
-            this.$tip.apiFailed(e)
+           //  this.$tip.apiFailed(e)
           })
           .finally(() => {
             this.isWorking = false
diff --git a/admin/src/components/business/operaVisitsReportWindow.vue b/admin/src/components/business/operaVisitsReportWindow.vue
index 1884a39..d45b176 100644
--- a/admin/src/components/business/operaVisitsReportWindow.vue
+++ b/admin/src/components/business/operaVisitsReportWindow.vue
@@ -10,7 +10,7 @@
     <el-form :model="param" ref="paramRef" :rules="rules">
       <div class="title_tip">璁垮棰勭害</div>
       <el-form-item label="琚浜�" prop="startTime">
-        {{ userInfo.realname }} {{ userInfo.company.companyNamePath }}
+        {{ userInfo.realname }} <template v-if="userInfo.company && userInfo.company.companyNamePath">{{ userInfo.company.companyNamePath }}</template>
       </el-form-item>
       <el-form-item label="鍏ュ洯鏃堕棿" prop="starttime">
         <el-date-picker
@@ -85,7 +85,6 @@
 import dayjs from 'dayjs'
 import { createVisit, getVisitedVisitReason } from '@/api/business/visits'
 export default {
-  name: 'OperaVisitsHkWindow',
   extends: BaseOpera,
   components: {
     GlobalWindow,
@@ -220,7 +219,7 @@
             this.$emit('close')
           })
           .catch(e => {
-            this.$tip.apiFailed(e)
+            
           })
           .finally(() => {
             this.isWorking = false
diff --git a/admin/src/components/business/operaVisitsWindow.vue b/admin/src/components/business/operaVisitsWindow.vue
index 784cdcd..05fcc48 100644
--- a/admin/src/components/business/operaVisitsWindow.vue
+++ b/admin/src/components/business/operaVisitsWindow.vue
@@ -61,7 +61,7 @@
 
       <div class="title_tip" style="margintop: 60px">璁垮棰勭害</div>
       <el-form-item label="琚浜�" prop="receptMemberId">
-        <el-select v-model="param.receptMemberId" placeholder="璇烽�夋嫨">
+        <el-select v-model="param.receptMemberId" disabled placeholder="璇烽�夋嫨">
           <el-option
             v-for="item in memberList"
             :key="item.id"
@@ -130,7 +130,6 @@
 import dayjs from 'dayjs'
 import { createFk, getVisitedVisitReason, getVisitedMember } from '@/api/business/visits'
 export default {
-  name: 'OperaVisitsHkWindow',
   extends: BaseOpera,
   components: {
     GlobalWindow,
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index fcf9f75..5afc768 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -3,6 +3,13 @@
     <div class="header">
       <div class="logo">
         <div>{{ title }}</div>
+        <div class="list">
+          <div class="item">鏈嶅姟涓績</div>
+          <div class="item">瀹夐槻涓績</div>
+          <div class="item">娑堥槻涓績</div>
+          <div class="item">鑳界涓績</div>
+          <div class="item">椹鹃┒鑸�</div>
+        </div>
         <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
       </div>
       <div class="user">
@@ -168,7 +175,7 @@
             this.visible.changePwd = false
           })
           .catch(e => {
-            this.$tip.apiFailed(e)
+           //  this.$tip.apiFailed(e)
           })
           .finally(() => {
             this.isWorking.changePwd = false
@@ -185,7 +192,7 @@
           window.location.reload()
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+          // this.$tip.apiFailed(e)
         })
     }
   }
@@ -215,6 +222,8 @@
     font-size: 22px;
     font-weight: 600;
     color: #fff;
+    display: flex;
+    align-items: center;
     // display: inline;
     .title-en {
       font-size: 11px;
diff --git a/admin/src/components/common/DepartmentSelect.vue b/admin/src/components/common/DepartmentSelect.vue
index 77d0b67..130665c 100644
--- a/admin/src/components/common/DepartmentSelect.vue
+++ b/admin/src/components/common/DepartmentSelect.vue
@@ -59,7 +59,7 @@
           this.__fillData(this.data, records)
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+         //  this.$tip.apiFailed(e)
         })
     },
     // 濉厖閮ㄩ棬鏍�
diff --git a/admin/src/components/common/ImportWindow.vue b/admin/src/components/common/ImportWindow.vue
index 8e05ddb..dda83c8 100644
--- a/admin/src/components/common/ImportWindow.vue
+++ b/admin/src/components/common/ImportWindow.vue
@@ -119,7 +119,7 @@
           this.$emit('success')
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+         //  this.$tip.apiFailed(e)
         })
         .finally(() => {
           this.isWorking = false
diff --git a/admin/src/components/common/Menu.vue b/admin/src/components/common/Menu.vue
index 15f7c56..0b0df39 100644
--- a/admin/src/components/common/Menu.vue
+++ b/admin/src/components/common/Menu.vue
@@ -1,18 +1,23 @@
 <template>
-  <div class="menu" :class="{collapse: menuData.collapse}">
+  <div class="menu" :class="{ collapse: menuData.collapse }">
     <scrollbar>
       <el-menu
         ref="menu"
         :default-active="activeIndex"
-        text-color="#fff"
-        active-text-color="#fff"
+        text-color="#333333"
+        active-text-color="#207FF7"
         :collapse="menuData.collapse"
         :default-openeds="defaultOpeneds"
         :collapse-transition="false"
         unique-opened
         @select="handleSelect"
       >
-        <MenuItems v-for="menu in menuData.list" :key="menu.index" :menu="menu" :is-root-menu="true"/>
+        <MenuItems
+          v-for="menu in menuData.list"
+          :key="menu.index"
+          :menu="menu"
+          :is-root-menu="true"
+        />
       </el-menu>
     </scrollbar>
   </div>
@@ -28,7 +33,7 @@
   computed: {
     ...mapState(['menuData']),
     // 閫変腑鐨勮彍鍗昳ndex
-    activeIndex () {
+    activeIndex() {
       let path = this.$route.path
       if (path.endsWith('/')) {
         path = path.substring(0, path.length - 1)
@@ -43,7 +48,7 @@
       return menuConfig.index
     },
     // 榛樿灞曞紑鐨勮彍鍗昳ndex
-    defaultOpeneds () {
+    defaultOpeneds() {
       // return this.menuData.list.map(menu => menu.index)
 
       return [this.menuData.list[0].index]
@@ -51,31 +56,31 @@
   },
   methods: {
     // 澶勭悊鑿滃崟閫変腑
-    handleSelect (menuIndex) {
+    handleSelect(menuIndex) {
       const menuConfig = this.__getMenuConfig(menuIndex, 'index', this.menuData.list)
       // 鎵句笉鍒伴〉闈�
       try {
-          require('@/views' + menuConfig.url)
+        require('@/views' + menuConfig.url)
       } catch (e) {
         this.$tip.error('鏈壘鍒伴〉闈㈡枃浠禓/views' + menuConfig.url + '.vue锛岃妫�鏌ヨ彍鍗曡矾寰勬槸鍚︽纭�')
         return
       }
       // 鐐瑰嚮褰撳墠鑿滃崟涓嶅仛澶勭悊
-      if (menuConfig.url === this.$route.path && (menuConfig.params ==null || menuConfig.params==undefined || menuConfig.params=='' ||  menuConfig.params === this.$route.query.param)) {
+      if (menuConfig.url === this.$route.path && (menuConfig.params == null || menuConfig.params == undefined || menuConfig.params == '' || menuConfig.params === this.$route.query.param)) {
         return
       }
       if (menuConfig.url == null || menuConfig.url.trim().length === 0) {
         return
       }
-      if(menuConfig.params!=null && menuConfig.params!=''){
-        this.$router.push({path:menuConfig.url,query:{index:menuConfig.index,param:menuConfig.params}})
-      }else{
+      if (menuConfig.params != null && menuConfig.params != '') {
+        this.$router.push({ path: menuConfig.url, query: { index: menuConfig.index, param: menuConfig.params } })
+      } else {
         this.$router.push(menuConfig.url)
       }
       this.$store.commit('pushtags', menuConfig)
     },
     // 鑾峰彇鑿滃崟閰嶇疆
-    __getMenuConfig (value, key, menus) {
+    __getMenuConfig(value, key, menus) {
       for (const menu of menus) {
         if (menu[key] === value) {
           return menu
@@ -107,46 +112,49 @@
 .el-menu {
   border-right: 0 !important;
   user-select: none;
-  background: $primary-color !important;
+  background: #fff !important;
   .el-menu-item {
-    background: $primary-color;
+    background: #fff;
+    height: 48px;
+    line-height: 48px;
     // 閫変腑鐘舵��
     &.is-active {
-      background: $primary-color-sel !important;
+      background: #eff5fe !important;
     }
     // 鎮诞
     &:hover {
-      background-color: $primary-color-hover;
+      background-color: #eff5fe;
     }
     &:focus {
-      background: $primary-color;
+      background: #eff5fe;
     }
   }
   // 瀛愯彍鍗�
   .el-submenu {
-    .el-submenu__title{
-      background-color: $primary-color;
+    .el-submenu__title {
+      background-color: #fff;
     }
     &.is-active {
-      .el-submenu__title{
-        background-color: $icon-background-color;
+      .el-submenu__title {
+        background-color: #fff;
       }
-      .el-menu .el-menu-item{
-        background-color: $icon-background-color;
+      .el-menu .el-menu-item {
+        background-color: #fff;
         // 鎮诞
         &:hover {
-          background-color: $icon-background-color;
+          background-color: #eff5fe;
         }
       }
     }
     // 鑿滃崟涓婁笅绠ご
     .el-submenu__title i {
-      color: #f7f7f7;
+      color: #979797;
+      font-size: 14px;
     }
   }
   // 鑿滃崟鍥炬爣
   i:not(.el-submenu__icon-arrow) {
-    color: #f7f7f7 !important;
+    color: #333333 !important;
     position: relative;
     top: -1px;
     // 鑷畾涔夊浘鏍�
diff --git a/admin/src/components/common/MenuItems.vue b/admin/src/components/common/MenuItems.vue
index 3c2276e..1863acb 100644
--- a/admin/src/components/common/MenuItems.vue
+++ b/admin/src/components/common/MenuItems.vue
@@ -5,7 +5,7 @@
   </el-menu-item>
   <el-submenu v-else :index="menu.index">
     <template slot="title">
-      <i :class="menu.icon"></i>
+      <i :class="menu.icon" style="color: #333333 !important"></i>
       <span slot="title">{{menu.label}}</span>
     </template>
     <MenuItems v-for="child in menu.children" :menu="child" :key="child.index"/>
diff --git a/admin/src/components/common/companySelect.vue b/admin/src/components/common/companySelect.vue
index 8910570..07e716f 100644
--- a/admin/src/components/common/companySelect.vue
+++ b/admin/src/components/common/companySelect.vue
@@ -53,7 +53,7 @@
           this.__fillData(this.data, records)
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+         //  this.$tip.apiFailed(e)
         })
     },
     // 濉厖鑿滃崟鏍�
diff --git a/admin/src/components/operation/HiddenDangerParam.vue b/admin/src/components/operation/HiddenDangerParam.vue
index 947776d..0205647 100644
--- a/admin/src/components/operation/HiddenDangerParam.vue
+++ b/admin/src/components/operation/HiddenDangerParam.vue
@@ -105,7 +105,6 @@
 import { allList, memberList } from '@/api/business/hiddenDangerParam'
 import { create } from '@/api/business/hiddenDanger'
 export default {
-  name: 'OperaVisitsHkWindow',
   extends: BaseOpera,
   components: {
     GlobalWindow
diff --git a/admin/src/components/system/department/DepartmentUserWindow.vue b/admin/src/components/system/department/DepartmentUserWindow.vue
index 516b96a..d122e09 100644
--- a/admin/src/components/system/department/DepartmentUserWindow.vue
+++ b/admin/src/components/system/department/DepartmentUserWindow.vue
@@ -134,7 +134,7 @@
           this.tableData.pagination.total = data.total
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+         //  this.$tip.apiFailed(e)
         })
         .finally(() => {
           this.isWorking.search = false
diff --git a/admin/src/layouts/AppLayout.vue b/admin/src/layouts/AppLayout.vue
index 0072133..837c9bb 100644
--- a/admin/src/layouts/AppLayout.vue
+++ b/admin/src/layouts/AppLayout.vue
@@ -10,7 +10,6 @@
         <header>
           <AppHeader/>
         </header>
-        <div style="height:10px;"></div>
         <main ref="containerS">
           <transition name="fade">
 <!--            <keep-alive>-->
@@ -69,8 +68,8 @@
     height: calc(100vh - 80px);
     overflow-y: scroll;
     overflow-x: hidden;
-    background: $primary-color;
-    color: #fff;
+    background: #fff;
+    color: #333333;
     transition: width ease .3s;
     scrollbar-width: none; /* firefox */
     -ms-overflow-style: none; /* IE 10+ */
diff --git a/admin/src/layouts/TableLayout.vue b/admin/src/layouts/TableLayout.vue
index 8b12acb..28ab4c7 100644
--- a/admin/src/layouts/TableLayout.vue
+++ b/admin/src/layouts/TableLayout.vue
@@ -6,6 +6,7 @@
         <el-breadcrumb-item v-for="path in paths" :key="path">{{path}}</el-breadcrumb-item>
       </el-breadcrumb>
     </div>-->
+    <div style="height:10px;"></div>
     <Profile :roles="roles" :permissions="permissions">
       <!-- 鎼滅储琛ㄥ崟閮ㄥ垎 -->
       <div class="table-search-form">
diff --git a/admin/src/utils/config.js b/admin/src/utils/config.js
new file mode 100644
index 0000000..67d3878
--- /dev/null
+++ b/admin/src/utils/config.js
@@ -0,0 +1 @@
+export const weeks = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�']
diff --git a/admin/src/views/business/deviceBroadcast.vue b/admin/src/views/business/deviceBroadcast.vue
index d0e5c49..d40fbe1 100644
--- a/admin/src/views/business/deviceBroadcast.vue
+++ b/admin/src/views/business/deviceBroadcast.vue
@@ -89,7 +89,7 @@
               this.search()
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+             //  this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking.delete = false
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 72f3b49..38b95a9 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -1,387 +1,853 @@
 <template>
-  <div class="home">
-    <div class="home_total">
-      <div class="home_total_head">鍦ㄥ洯浜哄憳鎬昏</div>
-      <div class="home_total_list">
-        <div class="home_total_list_item a">
-          <span>{{ head && head.workerCount ? head.workerCount : 0 }}</span>
-          <span>鍐呴儴鍛樺伐</span>
-        </div>
-        <div class="home_total_list_item b">
-          <span>{{ head && head.visitorCount ? head.visitorCount : 0 }}</span>
-          <span>璁垮</span>
-        </div>
-        <div class="home_total_list_item c">
-          <span>{{ head && head.lwCount ? head.lwCount : 0 }}</span>
-          <span>鍔冲姟浜哄憳</span>
-        </div>
-        <div class="home_total_list_item d">
-          <span>{{
-            head && head.presenceCarCount ? head.presenceCarCount : 0
-          }}</span>
-          <span>鍦ㄥ満杞﹁締</span>
-        </div>
-        <div class="home_total_list_item e">
-          <span>{{ head && head.longCarCount ? head.longCarCount : 0 }}</span>
-          <span>闀挎湡杞﹁締</span>
-        </div>
-        <div class="home_total_list_item f">
-          <span>{{
-            head && head.visitorCarCount ? head.visitorCarCount : 0
-          }}</span>
-          <span>棰勭害杞﹁締</span>
-        </div>
-        <div class="home_total_list_item g">
-          <span>{{ head && head.supplierCount ? head.supplierCount : 0 }}</span>
-          <span>渚涘簲鍟�</span>
-        </div>
+  <div class="main_home">
+    <div class="home_header">
+      <div class="mb10 fs17">涓嬪崍濂斤紝绯荤粺绠$悊鍛�</div>
+      <div class="fs13">
+        浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庡洖鍒版櫤鎱х墿娴佸洯鍖哄畨娑堜竴浣撳寲绯荤粺
       </div>
     </div>
-    <div class="home_charts">
-      <div class="home_charts_item">
-        <div class="home_charts_item_label">鍦ㄥ洯浜哄憳鍗犳瘮</div>
-        <div class="home_charts_item_charts" id="chart1"></div>
+    <div class="main">
+      <div class="app_content">
+        <div class="static_card">
+          <div class="card">
+            <div class="header">
+              <div class="left">
+                <div class="fs15">浠婃棩鍦ㄥ洯浜烘暟(浜�)</div>
+                <div class="num">300</div>
+              </div>
+              <img src="@/assets/icons/home_icon1.png" alt="" />
+            </div>
+            <div class="content">
+              <div>鍏ュ洯浜烘(浜�)锛�600</div>
+              <div>鍑哄洯浜烘(浜�)锛�300</div>
+            </div>
+          </div>
+          <div class="card">
+            <div class="header">
+              <div class="left">
+                <div class="fs15">鍦ㄥ洯璁垮鏁�(浜�)</div>
+                <div class="num">300</div>
+              </div>
+              <img src="@/assets/icons/home_icon2.png" alt="" />
+            </div>
+            <div class="content">
+              <div>璁垮浜烘(浜�)锛�200</div>
+              <div>绛剧浜烘(浜�)锛�300</div>
+            </div>
+          </div>
+          <div class="card">
+            <div class="header">
+              <div class="left">
+                <div class="fs15">鍦ㄥ洯闀挎湡鐩稿叧鏂规暟(浜�)</div>
+                <div class="num">300</div>
+              </div>
+              <img src="@/assets/icons/home_icon3.png" alt="" />
+            </div>
+            <div class="content">
+              <div>鍏ュ洯浜烘(浜�)锛�600</div>
+              <div>鍑哄洯浜烘(浜�)锛�300</div>
+            </div>
+          </div>
+          <div class="card">
+            <div class="header">
+              <div class="left">
+                <div class="fs15">鍦ㄥ洯闀挎湡鐩稿叧鏂规暟(浜�)</div>
+                <div class="num">300</div>
+              </div>
+              <img src="@/assets/icons/home_icon4.png" alt="" />
+            </div>
+            <div class="content">
+              <div>鍏ュ洯杞︽(杈�)锛�600</div>
+              <div>鍑哄洯杞︽(杈�)锛�300</div>
+            </div>
+          </div>
+        </div>
+        <div class="funcs">
+          <div class="home_title">甯哥敤鍔熻兘</div>
+          <div class="list">
+            <div v-for="item in funcList" :key="item.name" class="item">
+              <img class="mb10" :src="item.url" alt="" />
+              <div>{{ item.name }}</div>
+            </div>
+          </div>
+        </div>
+        <div class="static_wrap">
+          <div class="df mb10">
+            <div class="wrap static1">
+              <div class="header">
+                <div class="home_title">鍦ㄥ満浜哄憳鍗犳瘮</div>
+                <div class="df_ac more">
+                  鏇村<i class="el-icon-arrow-right"></i>
+                </div>
+              </div>
+              <div class="content">
+                <div class="echart_wrap">
+                  <div class="pie_text">
+                    <div class="fs13">鎬绘暟</div>
+                    <div class="fs15"><strong>300</strong></div>
+                  </div>
+                  <div class="echart" id="echart1"></div>
+                </div>
+                <div class="list">
+                  <div class="item">
+                    <div class="icon"></div>
+                    <div class="text">璁垮</div>
+                    <div class="num">100</div>
+                  </div>
+                  <div class="item">
+                    <div :style="{ background: colors[0] }" class="icon"></div>
+                    <div class="text">璁垮</div>
+                    <div class="num">100</div>
+                  </div>
+                  <div class="item">
+                    <div :style="{ background: colors[1] }" class="icon"></div>
+                    <div class="text">璁垮</div>
+                    <div class="num">100</div>
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div class="wrap static2">
+              <div class="header">
+                <div class="home_title">闀挎湡鐩稿叧鏂瑰垎甯�</div>
+                <div class="df_ac more">
+                  鏇村<i class="el-icon-arrow-right"></i>
+                </div>
+              </div>
+              <div class="echart" id="echart2"></div>
+            </div>
+          </div>
+          <div class="df">
+            <div class="wrap static3">
+              <div class="header">
+                <div class="home_title">7鏃ヨ瀹㈢粺璁�</div>
+                <div class="df_ac more">
+                  鏇村<i class="el-icon-arrow-right"></i>
+                </div>
+              </div>
+              <div class="echart" id="echart3"></div>
+            </div>
+            <div class="wrap static4">
+              <div class="header">
+                <div class="home_title">7鏃ヨ溅杈嗙粺璁�</div>
+                <div class="df_ac more">
+                  鏇村<i class="el-icon-arrow-right"></i>
+                </div>
+              </div>
+              <div class="echart" id="echart4"></div>
+            </div>
+          </div>
+        </div>
       </div>
-      <div class="home_charts_item">
-        <div class="home_charts_item_label">鍔冲姟浜哄憳鍒嗗竷鎬昏</div>
-        <div class="home_charts_item_charts" id="chart2"></div>
-      </div>
-    </div>
-    <div class="home_table">
-      <div class="home_table_head">瓒呮椂棰勮浜哄憳({{ total }})</div>
-      <div class="home_table_box">
-        <el-table
-          :data="list"
-          :header-cell-style="{
-            background: '#dcdde2',
-            color: 'rgb(51, 51, 51)',
-          }"
-          border
-          style="width: 100%"
-        >
-          <el-table-column prop="name" label="璁垮濮撳悕"> </el-table-column>
-          <el-table-column prop="phone" label="璁垮鐢佃瘽"> </el-table-column>
-          <el-table-column prop="companyName" label="璁垮缁勭粐">
-          </el-table-column>
-          <el-table-column label="浜哄憳绫诲瀷">
-            <template slot-scope="{ row }">
-              <span v-if="row.type === 0">鍔冲姟璁垮</span>
-              <span v-if="row.type === 1">鏅�氳瀹�</span>
-              <span v-if="row.type === 2">鍐呴儴浜哄憳</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="outDate" label="鎺堟潈鍒版湡鏃堕棿">
-          </el-table-column>
-          <el-table-column label="鐘舵��">
-            <template slot-scope="{ row }">
-              <span v-if="row.outStatus === 0">鏈秴鏃�</span>
-              <span style="color: red" v-if="row.outStatus === 1">宸茶秴鏃�</span>
-              <span v-if="row.outStatus === 2">鍗冲皢瓒呮椂</span>
-            </template>
-          </el-table-column>
-          <el-table-column prop="address" label="澶勭悊" width="80">
-            <template slot-scope="scope">
-              <el-button
-                type="text"
-                @click="departure(scope.row.id)"
-                v-if="scope.row.outStatus === 1"
-                >绂诲巶</el-button
-              >
-            </template>
-          </el-table-column>
-        </el-table>
-        <el-pagination
-          style="margin-top: 20px"
-          @current-change="handleCurrentChange"
-          :current-page="page"
-          :page-size="10"
-          layout="total, prev, pager, next, jumper"
-          :total="total"
-        >
-        </el-pagination>
+      <div class="app_side">
+        <div class="task">
+          <div class="header df_sb">
+            <div class="home_title df">
+              <span>寰呭姙浜嬮」</span>
+              <span class="num">10</span>
+            </div>
+            <div class="df_ac more">
+              鏇村<i class="el-icon-arrow-right"></i>
+            </div>
+          </div>
+          <div class="list">
+            <div class="item">
+              <div class="content">
+                <div class="title">鐐圭偣婊存淮</div>
+                <div class="time">time</div>
+              </div>
+              <div class="btn">澶勭悊</div>
+            </div>
+            <div class="item">
+              <div class="content">
+                <div class="title">鐐圭偣婊存淮</div>
+                <div class="time">time</div>
+              </div>
+              <div class="btn">澶勭悊</div>
+            </div>
+          </div>
+        </div>
+        <div class="warnning">
+          <div class="header df_sb">
+            <div class="home_title df">
+              <span>瓒呮椂棰勮</span>
+              <span class="num">10</span>
+            </div>
+            <div class="df_ac more">
+              鏇村<i class="el-icon-arrow-right"></i>
+            </div>
+          </div>
+          <div class="list">
+            <div class="item">
+              <div class="name_wrap df_sb">
+                <div class="name">琚侀殕骞�</div>
+                <div class="identity">鏅�氳瀹�</div>
+              </div>
+              <div class="line">鑱旂郴鐢佃瘽锛�1888</div>
+              <div class="line">璁垮鍏徃锛氬畨寰借眴绫�</div>
+              <div class="auth df_sb">
+                <div class="time">鎺堟潈鏈熼檺锛�</div>
+                <div class="btn">绂诲満</div>
+              </div>
+            </div>
+            <div class="item">
+              <div class="name_wrap df_sb">
+                <div class="name">琚侀殕骞�</div>
+                <div class="identity">鏅�氳瀹�</div>
+              </div>
+              <div class="line">鑱旂郴鐢佃瘽锛�1888</div>
+              <div class="line">璁垮鍏徃锛氬畨寰借眴绫�</div>
+              <div class="auth df_sb">
+                <div class="time">鎺堟潈鏈熼檺锛�</div>
+                <div class="btn">绂诲満</div>
+              </div>
+            </div>
+            <div class="item">
+              <div class="name_wrap df_sb">
+                <div class="name">琚侀殕骞�</div>
+                <div class="identity">鏅�氳瀹�</div>
+              </div>
+              <div class="line">鑱旂郴鐢佃瘽锛�1888</div>
+              <div class="line">璁垮鍏徃锛氬畨寰借眴绫�</div>
+              <div class="auth df_sb">
+                <div class="time">鎺堟潈鏈熼檺锛�</div>
+                <div class="btn">绂诲満</div>
+              </div>
+            </div>
+          </div>
+        </div>
       </div>
     </div>
   </div>
 </template>
 
 <script>
+import dayjs from 'dayjs'
 import * as echarts from 'echarts'
-import { body, head, timeoutPage, level } from '@/api/business/staging'
+import { weeks } from '@/utils/config'
+const colors = ['#52a4f7', '#7678f7', '#5fc6d5']
 export default {
-  name: 'Index',
-  data() {
+  data () {
     return {
-      head: null,
-      list: [],
-      total: 0,
-      data1: [],
-      data2: [[], []],
-      page: 1
+      colors,
+      nowDate: '',
+      nowWeek: '',
+      funcList: [
+        { name: '璁垮鎶ュ', path: '', url: require('@/assets/icons/home_func1.png') },
+        { name: '闅愭偅闅忔墜鎷�', path: '', url: require('@/assets/icons/home_func2.png') },
+        { name: '棰勭害浼氳瀹�', path: '', url: require('@/assets/icons/home_func3.png') },
+        { name: '鑰冨嫟宸ヤ綔鍙�', path: '', url: require('@/assets/icons/home_func4.png') }
+      ]
     }
   },
-  created() {
-    this.getHeader()
-    this.getData()
+  created () {
+    this.updateDate()
+    setInterval(() => {
+      this.updateDate()
+    }, 1000 * 60 * 60)
   },
-  mounted() {
-    // this.getcharts2()
+  mounted () {
+    this.initData()
   },
   methods: {
-    departure(id) {
-      this.$confirm('纭畾绂诲満鍚�, 鏄惁缁х画?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        level(id)
-          .then(res => {
-            this.page = 1
-            this.getData()
-          })
-      }).catch(() => {
-
-      })
+    updateDate () {
+      this.nowDate = dayjs().format('YYYY骞碝鏈圖鏃�')
+      this.nowWeek = weeks[new Date().getDay()]
     },
-    getData() {
-      timeoutPage({
-        capacity: 10,
-        page: this.page,
-        model: {}
-      }).then(res => {
-        this.list = res.records
-        this.total = res.total
-      })
+    initData () {
+      this.initEchart1()
+      this.initEchart2()
+      this.initEchart3()
+      this.initEchart4()
     },
-    getHeader() {
-      head().then(res => {
-        this.head = res
-      })
-      body().then(res => {
-        this.data1 = res.retentionUsers.map(item => {
-          let name = ''
-          if (item.memberType === 0) {
-            name = '鍔冲姟璁垮'
-          } else if (item.memberType === 1) {
-            name = '鏅�氳瀹�'
-          } else if (item.memberType === 2) {
-            name = '鍐呴儴鍛樺伐'
-          }
-          return {
-            value: item.memberCount,
-            name
-          }
-        })
-        let arr1 = res.companyUsers.map(item => item.companyName)
-        let arr2 = res.companyUsers.map(item => item.memberCount)
-        if (arr1.length > 0) {
-          this.data2 = [arr1, arr2]
-          this.getcharts2()
-        }
-        this.getcharts1()
-      })
-    },
-    handleCurrentChange(page) {
-      this.page = page
-      this.getData()
-    },
-    getcharts1() {
-      const myChart = echarts.init(document.getElementById('chart1'))
-      // 缁樺埗鍥捐〃
-      myChart.setOption({
-        tooltip: {
-          trigger: 'item'
-        },
-        grid: {
-          bottom: '5%',
-          top: '5%'
-        },
-        legend: {
-          bottom: '0%',
-          left: 'center',
-          icon: 'circle'
-        },
+    initEchart1 () {
+      const myChart = echarts.init(document.getElementById('echart1'))
+      const option = {
         series: [
           {
             type: 'pie',
-            radius: ['40%', '70%'],
+            radius: ['42%', '90%'],
             label: {
-              formatter: '{b} {d}%'
+              show: false,
+              position: 'center'
             },
-            data: this.data1,
+            color: colors,
+            labelLine: {
+              show: false
+            },
+            data: [
+              { value: 1048, name: 'Search Engine' },
+              { value: 735, name: 'Direct' },
+              { value: 580, name: 'Email' }
+            ]
+          }
+        ]
+      }
+      myChart.setOption(option)
+      window.addEventListener('resize', function () { // 鎵ц
+        myChart.resize()
+      })
+    },
+    initEchart2 () {
+      const myChart = echarts.init(document.getElementById('echart2'))
+      myChart.setOption({
+        grid: {
+          top: '4%',
+          left: '2%',
+          right: '6%',
+          bottom: '2%',
+          containLabel: true
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'line'
+          }
+        },
+        xAxis: {
+          type: 'value',
+          position: 'bottom',
+          splitLine: {
+            show: true,
+            lineStyle: {
+              // 杩欓噷杈撳叆绾挎潯鐨勬牱寮�
+              color: 'rgba(255,255,255,0.14)'
+            }
+          }
+        },
+        yAxis: {
+          type: 'category',
+          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+        },
+        series: [
+          {
+            data: [120, 200, 150, 80, 70, 110, 130],
+            type: 'bar',
+            barWidth: 10,
             itemStyle: {
               normal: {
-                color: function (colors) {
-                  var colorList = [
-                    '#fc8251',
-                    '#5470c6',
-                    '#91cd77'
+                color: new echarts.graphic.LinearGradient(
+                  1, 0, 0, 0,
+                  [
+                    { offset: 0, color: '#56abf8' },
+                    { offset: 1, color: '#407ff0' }
                   ]
-                  return colorList[colors.dataIndex]
-                }
-              }
-            },
-            emphasis: {
-              itemStyle: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: 'rgba(0, 0, 0, 0.5)'
+                ),
+                barBorderRadius: [0, 10, 10, 0]
               }
             }
           }
         ]
       })
+      window.addEventListener('resize', function () { // 鎵ц
+        myChart.resize()
+      })
     },
-    getcharts2() {
-      const myChart = echarts.init(document.getElementById('chart2'))
+    initEchart3 () {
+      const myChart = echarts.init(document.getElementById('echart3'))
       myChart.setOption({
         tooltip: {
-          trigger: 'item'
-        },
-        grid: {
-          bottom: '5%',
-          top: '5%'
+          trigger: 'axis',
+          axisPointer: {
+            type: 'line'
+          },
+          formatter: function (params) {
+            return `
+          <div style="background-color: #15323f;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;">
+            <div>${params[0].name}鏃ュ娴�</div>
+            <div style="display: flex;align-items: center;">
+              <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #6feef0;"></div>
+              <span style="margin-left: 6px;">${params[0].value}</span>
+              <div>浜�</div>
+            </div>
+          </div>
+        `
+          }
         },
         xAxis: {
-          max: 'dataMax'
+          type: 'category',
+          boundaryGap: false,
+          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
         },
         yAxis: {
-          type: 'category',
-          data: this.data2[0]
+          type: 'value',
+          name: '浜烘暟',
+          nameTextStyle: {
+            padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
+          },
+          splitLine: {
+            show: true,
+            lineStyle: {
+              // 杩欓噷杈撳叆绾挎潯鐨勬牱寮�
+              color: 'rgba(255,255,255,0.14)'
+            }
+          }
+        },
+        grid: {
+          top: '16%',
+          left: '2%',
+          right: '2%',
+          bottom: '4%',
+          containLabel: true
         },
         series: [
           {
-            realtimeSort: true,
-            type: 'bar',
-            data: this.data2[1],
+            data: [150, 230, 224, 218, 135, 147, 260],
+            type: 'line',
+            areaStyle: {
+              normal: {
+                color: {
+                  x: 0,
+                  y: 0,
+                  x2: 0,
+                  y2: 1,
+                  colorStops: [{
+                    offset: 0,
+                    color: '#207FF7' // 0% 澶勭殑棰滆壊
+                  }, {
+                    offset: 1,
+                    color: 'rgba(255,255,255,.2)' // 100% 澶勭殑棰滆壊
+                  }],
+                  globalCoord: false // 缂虹渷涓� false
+                }
+              }
+            },
+            lineStyle: { // 绾挎潯鏍峰紡
+              color: {
+                type: 'linear',
+                x: 0,
+                y: 0,
+                x2: 0,
+                y2: 1,
+                colorStops: [{
+                  offset: 0, color: '#207FF7' // 0% 澶勭殑棰滆壊
+                }, {
+                  offset: 1, color: '#207FF7' // 100% 澶勭殑棰滆壊
+                }]
+              },
+              width: 2 // 绾挎潯绮楃粏
+            },
+            symbol: 'circle',
+            symbolSize: 10,
             itemStyle: {
               normal: {
-                color: '#fc8251'
+                color: '#207FF7' // 鎶樼嚎鐐圭殑棰滆壊
               }
-            }
+            },
+            smooth: false
           }
         ]
+      })
+      window.addEventListener('resize', function () { // 鎵ц
+        myChart.resize()
+      })
+    },
+    initEchart4 () {
+      const myChart = echarts.init(document.getElementById('echart4'))
+      myChart.setOption({
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'line'
+          },
+          formatter: function (params) {
+            return `
+          <div style="background-color: #15323f;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;">
+            <div>${params[0].name}鏃ュ娴�</div>
+            <div style="display: flex;align-items: center;">
+              <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #6feef0;"></div>
+              <span style="margin-left: 6px;">${params[0].value}</span>
+              <div>浜�</div>
+            </div>
+          </div>
+        `
+          }
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+        },
+        yAxis: {
+          type: 'value',
+          name: '杞﹁締鏁�',
+          nameTextStyle: {
+            padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
+          },
+          splitLine: {
+            show: true,
+            lineStyle: {
+              // 杩欓噷杈撳叆绾挎潯鐨勬牱寮�
+              color: 'rgba(255,255,255,0.14)'
+            }
+          }
+        },
+        grid: {
+          top: '16%',
+          left: '2%',
+          right: '2%',
+          bottom: '4%',
+          containLabel: true
+        },
+        series: [
+          {
+            data: [150, 230, 224, 218, 135, 147, 260],
+            type: 'line',
+            areaStyle: {
+              normal: {
+                color: {
+                  x: 0,
+                  y: 0,
+                  x2: 0,
+                  y2: 1,
+                  colorStops: [{
+                    offset: 0,
+                    color: '#42D49D' // 0% 澶勭殑棰滆壊
+                  }, {
+                    offset: 1,
+                    color: 'rgba(255,255,255,.5)' // 100% 澶勭殑棰滆壊
+                  }],
+                  globalCoord: false // 缂虹渷涓� false
+                }
+              }
+            },
+            lineStyle: { // 绾挎潯鏍峰紡
+              color: {
+                type: 'linear',
+                x: 0,
+                y: 0,
+                x2: 0,
+                y2: 1,
+                colorStops: [{
+                  offset: 0, color: '#42D49D' // 0% 澶勭殑棰滆壊
+                }, {
+                  offset: 1, color: '#42D49D' // 100% 澶勭殑棰滆壊
+                }]
+              },
+              width: 2 // 绾挎潯绮楃粏
+            },
+            symbol: 'circle',
+            symbolSize: 10,
+            itemStyle: {
+              normal: {
+                color: '#42D49D' // 鎶樼嚎鐐圭殑棰滆壊
+              }
+            },
+            smooth: false
+          }
+        ]
+      })
+      window.addEventListener('resize', function () { // 鎵ц
+        myChart.resize()
       })
     }
   }
 }
 </script>
 
-<style scoped lang="scss">
-@import "@/assets/style/variables.scss";
-.home {
-  width: 100%;
-  .home_table {
-    width: 100%;
-    padding: 20px;
-    box-sizing: border-box;
-    background: #ffffff;
-    margin-top: 20px;
-    .home_table_head {
-      font-size: 16px;
-      font-weight: 600;
-      color: black;
-    }
-    .home_table_box {
-      width: 100%;
-      margin-top: 15px;
-    }
-  }
-  .home_charts {
-    width: 100%;
-    margin-top: 20px;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    .home_charts_item {
-      padding: 20px;
-      box-sizing: border-box;
-      flex: 1;
+<style lang="scss" scoped>
+div {
+  box-sizing: border-box;
+}
+.home_title {
+  font-weight: 600;
+  font-size: 16px;
+  color: #222222;
+  line-height: 22px;
+}
+.main {
+  display: flex;
+  position: relative;
+  z-index: 99;
+  .app_content {
+    flex: 1;
+    .static_card {
+      height: 187px;
+      color: #fff;
       display: flex;
-      flex-direction: column;
-      margin-right: 20px;
-      background: #ffffff;
-      .home_charts_item_label {
-        font-size: 16px;
-        font-weight: 600;
-        color: black;
-      }
-      .home_charts_item_charts {
-        width: 100%;
-        height: 300px;
-      }
-      &:last-child {
-        margin: 0 !important;
-      }
-    }
-  }
-  .home_total {
-    width: 100%;
-    background: #ffffff;
-    margin-top: 20px;
-    .home_total_head {
-      width: 100%;
-      font-size: 16px;
-      font-weight: 600;
-      color: black;
-      padding: 10px 20px;
-      box-sizing: border-box;
-      border-bottom: 1px solid #ececec;
-    }
-    .home_total_list {
-      width: 100%;
-      padding: 20px;
-      box-sizing: border-box;
-      display: flex;
-      align-items: center;
-      .a {
-        border-left: 5px solid rgba(129, 211, 248, 1) !important;
-      }
-      .b {
-        border-left: 5px solid rgba(236, 128, 141, 1) !important;
-      }
-      .c {
-        border-left: 5px solid rgba(250, 205, 145, 1) !important;
-      }
-      .d {
-        border-left: 5px solid rgba(245, 154, 35, 1) !important;
-      }
-      .e {
-        border-left: 5px solid rgba(128, 128, 255, 1) !important;
-      }
-      .f {
-        border-left: 5px solid rgba(202, 249, 130, 1) !important;
-      }
-      .g {
-        border-left: 5px solid rgba(194, 128, 255, 1) !important;
-      }
-      .home_total_list_item {
+      justify-content: space-between;
+      .card {
         flex: 1;
-        display: flex;
-        align-items: center;
-        flex-direction: column;
-        justify-content: center;
-        height: 80px;
-        border-radius: 5px;
-        border: 1px solid #ececec;
-        margin-right: 15px;
-        &:last-child {
-          margin: 0 !important;
+        height: 187px;
+        background: linear-gradient(270deg, #29aeff 0%, #207ff7 100%);
+        box-shadow: 0px 2px 10px 0px rgba(32, 127, 247, 0.4);
+        border-radius: 8px;
+        margin-right: 14px;
+        &:nth-of-type(2) {
+          background: linear-gradient(270deg, #8383ff 0%, #6b6eff 100%);
         }
-        span {
-          &:first-child {
-            font-weight: 500;
-            font-size: 24px;
-            color: black;
+        &:nth-of-type(3) {
+          background: linear-gradient(270deg, #42d49d 0%, #12bb8b 100%);
+        }
+        &:nth-of-type(4) {
+          margin-right: 0;
+          background: linear-gradient(270deg, #30d3de 0%, #04b7cd 100%);
+        }
+        .header {
+          height: 103px;
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          padding: 20px 20px 12px;
+          border-bottom: 1px solid rgba(255, 255, 255, 0.2);
+          img {
+            width: 40px;
+            height: 40px;
           }
-          &:last-child {
-            font-weight: 400;
-            font-size: 14px;
-            color: #666666;
-            margin-top: 2px;
+          .num {
+            font-weight: 600;
+            font-size: 30px;
+            margin-top: 12px;
+          }
+        }
+        .content {
+          height: 82px;
+          display: flex;
+          flex-direction: column;
+          justify-content: space-between;
+          font-size: 13px;
+          padding: 15px 20px 20px;
+        }
+      }
+    }
+    .funcs {
+      height: 149px;
+      padding: 20px;
+      background: #fff;
+      margin: 10px 0;
+      .list {
+        display: flex;
+        padding-top: 20px;
+        .item {
+          display: flex;
+          flex-direction: column;
+          align-items: center;
+          justify-content: center;
+          margin-right: 24px;
+          img {
+            width: 44px;
+            height: 44px;
           }
         }
       }
     }
   }
+  .app_side {
+    width: 408px;
+    margin-left: 10px;
+    .task {
+      background: #fff;
+      border-radius: 2px;
+      border: 1px solid #eeeeee;
+      padding: 20px;
+      height: 346px;
+      margin-bottom: 10px;
+      .header {
+        .num {
+          position: relative;
+          top: 3px;
+          height: 16px;
+          line-height: 16px;
+          font-size: 12px;
+          color: #ffffff;
+          padding: 0 6px;
+          font-weight: 400;
+          background: red;
+          border-radius: 8px;
+          margin-left: 13px;
+        }
+        .more {
+          font-size: 13px;
+          color: #999999;
+        }
+      }
+      .list {
+        .item {
+          display: flex;
+          align-items: center;
+          margin-top: 15px;
+          .content {
+            flex: 1;
+            .title {
+              color: #222222;
+              margin-bottom: 5px;
+            }
+            .time {
+              color: #999999;
+              font-size: 12px;
+            }
+          }
+          .btn {
+            margin-left: 10px;
+            width: 58px;
+            text-align: center;
+            height: 30px;
+            line-height: 30px;
+            background: #ffffff;
+            border-radius: 2px;
+            border: 1px solid #207ff7;
+            font-size: 13px;
+            color: #207ff7;
+          }
+        }
+      }
+    }
+    .warnning {
+      background: #fff;
+      border-radius: 2px;
+      border: 1px solid #eeeeee;
+      padding: 20px;
+      height: 508px;
+      .header {
+        .num {
+          position: relative;
+          top: 3px;
+          height: 16px;
+          line-height: 16px;
+          font-size: 12px;
+          color: #ffffff;
+          padding: 0 6px;
+          font-weight: 400;
+          background: red;
+          border-radius: 8px;
+          margin-left: 13px;
+        }
+        .more {
+          font-size: 13px;
+          color: #999999;
+        }
+      }
+      .list {
+        padding-top: 6px;
+        .item {
+          margin-top: 10px;
+          padding: 15px;
+          width: 100%;
+          height: 140px;
+          background: rgba(32, 127, 247, 0.05);
+          border-radius: 4px;
+          .name_wrap {
+            margin-bottom: 10px;
+            .name {
+              font-weight: 600;
+              color: #222222;
+            }
+            .identity {
+              font-size: 13px;
+              color: #207ff7;
+            }
+          }
+          .line {
+            color: #666666;
+            margin-bottom: 8px;
+            font-size: 13px;
+          }
+          .auth {
+            .time {
+              font-weight: 600;
+              font-size: 13px;
+              color: #ee3821;
+            }
+            .btn{
+              margin-left: 10px;
+              width: 58px;
+              text-align: center;
+              height: 30px;
+              line-height: 30px;
+              background: #ffffff;
+              border-radius: 2px;
+              border: 1px solid #207ff7;
+              font-size: 13px;
+              color: #207ff7;
+            }
+          }
+        }
+      }
+    }
+  }
+  .static_wrap {
+    .wrap {
+      background: #fff;
+      padding: 20px 20px 10px;
+      border-radius: 2px;
+      border: 1px solid #eeeeee;
+      height: 250px;
+      flex: 1;
+      &:nth-of-type(2n) {
+        margin-left: 10px;
+      }
+      .echart {
+        width: 100%;
+        height: 190px;
+      }
+      .header {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        .more {
+          font-size: 13px;
+          color: #999999;
+        }
+      }
+    }
+    .static1 {
+      .content {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        .echart_wrap {
+          position: relative;
+          .pie_text {
+            position: absolute;
+            left: 50%;
+            top: 50%;
+            transform: translate(-50%, -50%);
+            z-index: 999;
+          }
+        }
+        .echart {
+          width: 150px;
+          height: 150px;
+        }
+        .list {
+          margin-left: 36px;
+          .item {
+            display: flex;
+            align-items: center;
+            margin: 8px 0;
+            .icon {
+              width: 16px;
+              height: 16px;
+              border-radius: 50%;
+              margin-right: 6px;
+              background: linear-gradient(270deg, #29aeff 0%, #207ff7 100%);
+            }
+            .text {
+              margin-right: 6px;
+            }
+          }
+        }
+      }
+    }
+  }
+}
+.main_home {
+  background: #f4f7fc;
+  position: relative;
+  width: 100%;
+  height: 100%;
+  overflow: auto;
+  padding: 20px;
+  padding-top: 92px;
+  .home_header {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 200px;
+    padding: 20px;
+    color: #fff;
+    background: linear-gradient(180deg, #207ff7 0%, rgba(32, 127, 247, 0) 100%);
+  }
 }
 </style>
diff --git a/admin/src/views/meeting/bookings.vue b/admin/src/views/meeting/bookings.vue
index 83a83f6..f6e4b81 100644
--- a/admin/src/views/meeting/bookings.vue
+++ b/admin/src/views/meeting/bookings.vue
@@ -420,7 +420,7 @@
           this.tableData.pagination.total = data.total
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+          // this.$tip.apiFailed(e)
         })
         .finally(() => {
           this.isWorking.search = false
diff --git a/admin/src/views/meeting/components/OperaBookingsWindow.vue b/admin/src/views/meeting/components/OperaBookingsWindow.vue
index 2975fec..a98b285 100644
--- a/admin/src/views/meeting/components/OperaBookingsWindow.vue
+++ b/admin/src/views/meeting/components/OperaBookingsWindow.vue
@@ -390,7 +390,7 @@
             this.$emit('success')
           })
           .catch(e => {
-            this.$tip.apiFailed(e)
+            // this.$tip.apiFailed(e)
           })
           .finally(() => {
             this.isWorking = false
@@ -436,7 +436,7 @@
             this.$emit('success')
           })
           .catch(e => {
-            this.$tip.apiFailed(e)
+            // this.$tip.apiFailed(e)
           })
           .finally(() => {
             this.isWorking = false
diff --git a/admin/src/views/meeting/components/OperaRoomsWindow.vue b/admin/src/views/meeting/components/OperaRoomsWindow.vue
index a3aa091..22561e6 100644
--- a/admin/src/views/meeting/components/OperaRoomsWindow.vue
+++ b/admin/src/views/meeting/components/OperaRoomsWindow.vue
@@ -224,7 +224,7 @@
             this.$emit('success')
           })
           .catch(e => {
-            this.$tip.apiFailed(e)
+            // this.$tip.apiFailed(e)
           })
           .finally(() => {
             this.isWorking = false
@@ -260,7 +260,7 @@
             this.$emit('success')
           })
           .catch(e => {
-            this.$tip.apiFailed(e)
+            // this.$tip.apiFailed(e)
           })
           .finally(() => {
             this.isWorking = false
diff --git a/admin/src/views/meeting/roomStatistics.vue b/admin/src/views/meeting/roomStatistics.vue
index 908efdf..b32fe08 100644
--- a/admin/src/views/meeting/roomStatistics.vue
+++ b/admin/src/views/meeting/roomStatistics.vue
@@ -183,7 +183,7 @@
               this.download(response)
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+             //  this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking.export = false
@@ -200,7 +200,7 @@
           // this.tableData.pagination.total = data.total
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+         //  this.$tip.apiFailed(e)
         })
         .finally(() => {
           this.isWorking.search = false
diff --git a/admin/src/views/meeting/rooms.vue b/admin/src/views/meeting/rooms.vue
index c2f1e3c..1779fdf 100644
--- a/admin/src/views/meeting/rooms.vue
+++ b/admin/src/views/meeting/rooms.vue
@@ -200,7 +200,7 @@
           this.tableData.pagination.total = data.total
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+          // this.$tip.apiFailed(e)
         })
         .finally(() => {
           this.isWorking.search = false
diff --git a/admin/src/views/meeting/userStatistics.vue b/admin/src/views/meeting/userStatistics.vue
index 27a2fb0..8c7b246 100644
--- a/admin/src/views/meeting/userStatistics.vue
+++ b/admin/src/views/meeting/userStatistics.vue
@@ -192,7 +192,7 @@
               this.download(response)
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+              // this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking.export = false
@@ -215,7 +215,7 @@
           this.tableData.pagination.total = data.total
         })
         .catch(e => {
-          this.$tip.apiFailed(e)
+          // this.$tip.apiFailed(e)
         })
         .finally(() => {
           this.isWorking.search = false
diff --git a/admin/src/views/operation/danger/record.vue b/admin/src/views/operation/danger/record.vue
index d59d296..d51731a 100644
--- a/admin/src/views/operation/danger/record.vue
+++ b/admin/src/views/operation/danger/record.vue
@@ -162,7 +162,6 @@
               this.download(response)
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.exLoading = false
diff --git a/admin/src/views/operation/serviceCar/apprRecord.vue b/admin/src/views/operation/serviceCar/apprRecord.vue
index 08e9f8a..f8099c4 100644
--- a/admin/src/views/operation/serviceCar/apprRecord.vue
+++ b/admin/src/views/operation/serviceCar/apprRecord.vue
@@ -312,7 +312,6 @@
               this.download(response)
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.exLoading = false
diff --git a/admin/src/views/platform/platform.vue b/admin/src/views/platform/platform.vue
index 44eb641..a21ad90 100644
--- a/admin/src/views/platform/platform.vue
+++ b/admin/src/views/platform/platform.vue
@@ -149,7 +149,7 @@
               this.search()
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+              // this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking.working = false
@@ -167,7 +167,7 @@
               this.search()
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+              // this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking.working = false
diff --git a/h5/.gitignore b/h5/.gitignore
new file mode 100644
index 0000000..dc260c4
--- /dev/null
+++ b/h5/.gitignore
@@ -0,0 +1,27 @@
+.DS_Store
+coderd.json
+node_modules
+.env.development
+uview-ui
+
+/dist
+
+
+# local env files
+.env.local
+.env.*.local
+unpackage
+admin
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/h5/pages.json b/h5/pages.json
index 31a0fd0..a7a6648 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -405,7 +405,25 @@
 				"enablePullDownRefresh": false
 			}
 		}
-	],
+	    ,{
+            "path" : "pages/driver/login",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "鐧诲綍",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/driver/register",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "娉ㄥ唽",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+    ],
 	"subPackages": [
 		{
 			"root": "n_pages",
diff --git a/h5/pages/driver/login.vue b/h5/pages/driver/login.vue
new file mode 100644
index 0000000..cc0ff66
--- /dev/null
+++ b/h5/pages/driver/login.vue
@@ -0,0 +1,220 @@
+<template>
+  <view class="login">
+    <image class="login_bg" src="@/static/login_bg@2x.png" />
+    <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" />
+    <view class="login_title">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
+    <view class="login_title">鐗╂祦杞﹀徃鏈虹櫥褰�</view>
+    <view class="login_list">
+      <view class="login_list_item">
+        <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
+        <input v-model="form.phone" maxlength="18" placeholder="鎵嬫満鍙�" />
+      </view>
+      <view class="login_list_item">
+        <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
+        <input
+          v-model="form.password"
+          type="password"
+          placeholder="瀵嗙爜"
+        />
+      </view>
+    </view>
+    <view class="login_btn">
+      <view class="login_btn_n" @click="onLogin">绔嬪嵆鐧诲綍</view>
+    </view>
+    <!--  -->
+		<view class="btns">
+			<view class="btn" @click="handleRegister">绔嬪嵆娉ㄥ唽</view>
+			<view class="btn separate"> | </view>
+			<view class="btn">蹇樿瀵嗙爜</view>
+		</view>
+  </view>
+</template>
+
+<script>
+import { resetPassword, sendSms } from '@/api'
+export default {
+  data() {
+    return {
+      form: {
+      },
+      isShowProtocol: false,
+      countDown: 0
+    }
+  },
+
+  onLoad() {
+  },
+
+  methods: {
+		handleRegister() {
+			uni.navigateTo({
+				url: "/pages/driver/register"
+			})
+		},
+    dealChange(e) {
+      console.log(e)
+    },
+    initCaptcha() {
+      if (!this.form.phone) return uni.showToast({
+        title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+        icon: 'none'
+      })
+      sendSms({ phone: this.form.phone }).then(res => {
+        this.countDown = 60
+        setInterval(() => {
+          if (this.countDown == 0) return
+          this.countDown--
+        }, 1000)
+      })
+    },
+
+    onLogin() {
+      const { form } = this
+      if (!form.phone) return uni.showToast({
+        title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+        icon: 'none'
+      })
+      if (!form.password) return uni.showToast({
+        title: '瀵嗙爜涓嶈兘涓虹┖',
+        icon: 'none'
+      })
+      resetPassword({
+        ...form
+      }).then(res => {
+        if (res && res.code == 200) {
+          setTimeout(() => {
+            uni.showToast({
+              title: '瀵嗙爜淇敼鎴愬姛,璇烽噸鏂扮櫥褰�',
+              icon: 'success',
+              duration: 2000
+            })
+          })
+          uni.redirectTo({
+            url: "/pages/staffLogin/login"
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.login {
+  width: 100%;
+  display: flex;
+  padding-top: 100rpx;
+  box-sizing: border-box;
+  align-items: center;
+  flex-direction: column;
+  background: linear-gradient(
+    180deg,
+    rgba(39, 155, 170, 0.2) 0%,
+    rgba(39, 155, 170, 0) 100%
+  );
+  .login_logo {
+    width: 180rpx;
+    height: 180rpx;
+		margin-bottom: 40rpx;
+  }
+  .login_bg {
+    position: absolute;
+    top: 0;
+    width: 750rpx;
+  }
+  .login_title {
+    font-size: 44rpx;
+    font-weight: 600;
+    color: #333333;
+  }
+  .login_list {
+		margin-top: 60rpx;
+    width: 100%;
+    padding: 0 60rpx;
+    box-sizing: border-box;
+    .login_list_item {
+      width: 100%;
+      border-radius: 50rpx;
+      height: 98rpx;
+      padding: 0 40rpx;
+      box-sizing: border-box;
+      background: #ffffff;
+      margin-bottom: 40rpx;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      &:last-child {
+        margin-bottom: 0 !important;
+      }
+      image {
+        flex-shrink: 0;
+        width: 40rpx;
+        height: 40rpx;
+      }
+      .captcha {
+        color: $uni-color-primary;
+      }
+      input {
+        flex: 1;
+        height: 100%;
+        color: #666666;
+        margin-left: 24rpx;
+        border: none;
+      }
+    }
+  }
+  .login_btn {
+    width: 100%;
+    padding: 0 60rpx;
+    box-sizing: border-box;
+    margin-top: 80rpx;
+    .for_psd {
+      color: $uni-color-primary;
+      margin-top: 40rpx;
+      width: 140rpx;
+      text-align: center;
+      margin: 40rpx auto;
+    }
+    .login_btn_n {
+      width: 100%;
+      height: 98rpx;
+      background: $uni-color-primary;
+      box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2);
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      font-weight: 600;
+      font-size: 32rpx;
+      color: #ffffff;
+      border-radius: 50rpx;
+    }
+  }
+  .deal_wrap {
+    position: absolute;
+    width: 100%;
+    left: 0;
+    text-align: center;
+    bottom: 108rpx;
+    .deal {
+      color: $uni-color-primary;
+    }
+  }
+	.btns{
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		position: fixed;
+		bottom: 60rpx;
+		left: 0;
+		width: 100%;
+		.btn{
+			font-size: 30rpx;
+			color: $uni-color-primary;
+		}
+		.separate{ margin: 0 8rpx; }
+	}
+}
+.modal {
+  padding: 32rpx;
+}
+</style>
diff --git a/h5/pages/driver/register.vue b/h5/pages/driver/register.vue
new file mode 100644
index 0000000..ae1b1a5
--- /dev/null
+++ b/h5/pages/driver/register.vue
@@ -0,0 +1,227 @@
+<template>
+  <view class="login">
+    <image class="login_bg" src="@/static/login_bg@2x.png" />
+    <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" />
+    <view class="login_title">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
+    <view class="login_title">鐗╂祦杞﹀徃鏈虹櫥褰�</view>
+    <view class="login_list">
+      <view class="login_list_item">
+        <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
+        <input v-model="form.name" maxlength="18" placeholder="璇疯緭鍏ュ鍚�" />
+      </view>
+			<view class="login_list_item">
+			  <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
+			  <input v-model="form.phone" maxlength="18" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
+			</view>
+      <view class="login_list_item">
+        <image src="@/static/ic_captcha.png" mode="widthFix"></image>
+        <input
+          v-model="form.validCode"
+          placeholder="璇疯緭鍏ラ獙璇佺爜"
+          type="text"
+        />
+        <text class="captcha" v-if="countDown == 0" @click="initCaptcha"
+          >鑾峰彇楠岃瘉鐮�</text
+        >
+        <text class="placeholder9" v-else>{{ countDown }}</text>
+      </view>
+      <view class="login_list_item">
+        <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
+        <input
+          v-model="form.password"
+          type="password"
+          placeholder="璇疯緭鍏ュ瘑鐮�"
+        />
+      </view>
+    </view>
+    <view class="login_btn">
+      <view class="login_btn_n" @click="onLogin">绔嬪嵆娉ㄥ唽</view>
+    </view>
+    <!--  -->
+    <u-popup
+      :show="isShowProtocol"
+      @close="isShowProtocol = false"
+      mode="center"
+    >
+      <view class="modal">111</view>
+    </u-popup>
+  </view>
+</template>
+
+<script>
+import { resetPassword, sendSms } from '@/api'
+export default {
+  data() {
+    return {
+      form: {
+      },
+      isShowProtocol: false,
+      countDown: 0
+    }
+  },
+
+  onLoad() {
+  },
+
+  methods: {
+    dealChange(e) {
+      console.log(e)
+    },
+    initCaptcha() {
+      if (!this.form.phone) return uni.showToast({
+        title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+        icon: 'none'
+      })
+      sendSms({ phone: this.form.phone }).then(res => {
+        this.countDown = 60
+        setInterval(() => {
+          if (this.countDown == 0) return
+          this.countDown--
+        }, 1000)
+      })
+    },
+
+    onLogin() {
+      const { form } = this
+			if (!form.name) return uni.showToast({
+			  title: '鎵嬫満鍙峰鍚�',
+			  icon: 'none'
+			})
+      if (!form.phone) return uni.showToast({
+        title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+        icon: 'none'
+      })
+      if (!form.validCode) return uni.showToast({
+        title: '楠岃瘉鐮佷笉鑳戒负绌�',
+        icon: 'none'
+      })
+      if (!form.password) return uni.showToast({
+        title: '瀵嗙爜涓嶈兘涓虹┖',
+        icon: 'none'
+      })
+      resetPassword({
+        ...form
+      }).then(res => {
+        if (res && res.code == 200) {
+          setTimeout(() => {
+            uni.showToast({
+              title: '娉ㄥ唽鎴愬姛,璇峰墠寰�鐧诲綍',
+              icon: 'success',
+              duration: 2000
+            })
+          })
+          uni.redirectTo({
+            url: "/pages/driver/login"
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.login {
+  width: 100%;
+  display: flex;
+  padding-top: 100rpx;
+  box-sizing: border-box;
+  align-items: center;
+  flex-direction: column;
+  background: linear-gradient(
+    180deg,
+    rgba(39, 155, 170, 0.2) 0%,
+    rgba(39, 155, 170, 0) 100%
+  );
+  .login_logo {
+    width: 180rpx;
+    height: 180rpx;
+		margin-bottom: 40rpx;
+  }
+  .login_bg {
+    position: absolute;
+    top: 0;
+    width: 750rpx;
+  }
+  .login_title {
+    font-size: 44rpx;
+    font-weight: 600;
+    color: #333333;
+  }
+  .login_list {
+		margin-top: 60rpx;
+    width: 100%;
+    padding: 0 60rpx;
+    box-sizing: border-box;
+    .login_list_item {
+      width: 100%;
+      border-radius: 50rpx;
+      height: 98rpx;
+      padding: 0 40rpx;
+      box-sizing: border-box;
+      background: #ffffff;
+      margin-bottom: 40rpx;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      &:last-child {
+        margin-bottom: 0 !important;
+      }
+      image {
+        flex-shrink: 0;
+        width: 40rpx;
+        height: 40rpx;
+      }
+      .captcha {
+        color: $uni-color-primary;
+      }
+      input {
+        flex: 1;
+        height: 100%;
+        color: #666666;
+        margin-left: 24rpx;
+        border: none;
+      }
+    }
+  }
+  .login_btn {
+    width: 100%;
+    padding: 0 60rpx;
+    box-sizing: border-box;
+    margin-top: 80rpx;
+    .for_psd {
+      color: $uni-color-primary;
+      margin-top: 40rpx;
+      width: 140rpx;
+      text-align: center;
+      margin: 40rpx auto;
+    }
+    .login_btn_n {
+      width: 100%;
+      height: 98rpx;
+      background: $uni-color-primary;
+      box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2);
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      font-weight: 600;
+      font-size: 32rpx;
+      color: #ffffff;
+      border-radius: 50rpx;
+    }
+  }
+  .deal_wrap {
+    position: absolute;
+    width: 100%;
+    left: 0;
+    text-align: center;
+    bottom: 108rpx;
+    .deal {
+      color: $uni-color-primary;
+    }
+  }
+}
+.modal {
+  padding: 32rpx;
+}
+</style>
diff --git a/h5/pages/driver/taskDetail.vue b/h5/pages/driver/taskDetail.vue
index 7d8e014..8734397 100644
--- a/h5/pages/driver/taskDetail.vue
+++ b/h5/pages/driver/taskDetail.vue
@@ -41,11 +41,7 @@
         <view class="value">
           <view class="">0 鍏噷</view>
           <view class="btn" @click="getLocation">
-            <u-icon
-              name="map"
-              :color="$store.state.primaryColor"
-              class="mr6"
-            ></u-icon>
+						<image class="icon mr6" src="../../static/driver/position.png"></image>
             閲嶆柊瀹氫綅
           </view>
         </view>
@@ -209,6 +205,11 @@
           font-size: 28rpx;
           color: $uni-color-primary;
           display: flex;
+					align-items: center;
+					.icon{
+						width: 30rpx;
+						height: 30rpx;
+					}
         }
       }
     }
diff --git a/h5/pages/login/login.vue b/h5/pages/login/login.vue
index c459474..b209bab 100644
--- a/h5/pages/login/login.vue
+++ b/h5/pages/login/login.vue
@@ -19,7 +19,7 @@
       </view>
       <u-icon name="arrow-right" size="24" color="#979797" />
     </view>
-    <view class="item">
+    <view class="item" @click="driverLogin">
       <image class="avatar" src="@/static/ic_driver@2x.png" />
       <view class="content">
         <view class="name">鎴戞槸鐗╂祦杞﹀徃鏈�</view>
@@ -39,6 +39,18 @@
         url
       })
     },
+		driverLogin() {
+			const driverInfo = uni.getStorageSync('driverInfo') || {}
+			if (driverInfo && driverInfo.memberId) {
+			  uni.navigateTo({
+			    url: '/pages/driver/index'
+			  })
+			}else{
+			  uni.navigateTo({
+			    url: '/pages/driver/login'
+			  })
+			}
+		},
     staffLogin() {
       const userInfo = uni.getStorageSync('userInfo') || {}
       if (userInfo && userInfo.memberId) {
diff --git a/h5/pages/staff/task/visitorApprove.vue b/h5/pages/staff/task/visitorApprove.vue
index ad1a40f..82883a4 100644
--- a/h5/pages/staff/task/visitorApprove.vue
+++ b/h5/pages/staff/task/visitorApprove.vue
@@ -199,8 +199,8 @@
       statusMap: {
         0: '寰呭鎵�',
         1: '瀹℃壒涓�',
-        2: '瀹℃壒閫氳繃',
-        3: '瀹℃壒鏈�氳繃',
+        2: '宸查�氳繃',
+        3: '宸叉嫆缁�',
         4: '宸插彇娑�',
         5: '浠栦汉鎴栫',
         6: '浠栦汉鎷掔粷',
diff --git a/h5/pages/staffLogin/forgetPsd.vue b/h5/pages/staffLogin/forgetPsd.vue
index d51d593..d7d6fd8 100644
--- a/h5/pages/staffLogin/forgetPsd.vue
+++ b/h5/pages/staffLogin/forgetPsd.vue
@@ -40,14 +40,6 @@
     <view class="login_btn">
       <view class="login_btn_n" @click="onLogin">纭淇敼</view>
     </view>
-    <!--  -->
-    <u-popup
-      :show="isShowProtocol"
-      @close="isShowProtocol = false"
-      mode="center"
-    >
-      <view class="modal">111</view>
-    </u-popup>
   </view>
 </template>
 
@@ -58,7 +50,6 @@
     return {
       form: {
       },
-      isShowProtocol: false,
       countDown: 0
     }
   },
diff --git a/h5/static/driver/position.png b/h5/static/driver/position.png
new file mode 100644
index 0000000..5b2e7f2
--- /dev/null
+++ b/h5/static/driver/position.png
Binary files differ

--
Gitblit v1.9.3