From bf69ec41f78a05d45eab4aa7cc5d1c2fc13e5818 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 19 十一月 2024 18:14:52 +0800
Subject: [PATCH] ll

---
 admin/.env                                                          |    2 
 admin/src/views/workorder/workorderCate.vue                         |    0 
 admin/src/api/Inspection/ywPatrolScheme.js                          |   40 
 admin/src/api/workorder/ywWorkorder.js                              |   40 
 admin/src/api/project/ywRoom.js                                     |   40 
 admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue |  122 ++
 admin/src/views/stock/in.vue                                        |    0 
 admin/src/views/Inspection/task.vue                                 |  169 +++
 admin/src/api/Inspection/ywPatrolPoint.js                           |   40 
 admin/src/views/project/components/buildingDetail.vue               |    0 
 admin/package-lock.json                                             |  160 +-
 admin/src/views/Inspection/dot.vue                                  |  139 ++
 admin/src/views/project/projectList.vue                             |   95 +
 admin/src/views/client/staffList.vue                                |    0 
 admin/src/views/operation/category.vue                              |    0 
 admin/src/views/client/components/OperaYwCustomerWindow.vue         |  150 +++
 admin/src/api/Inspection/ywPatrolTask.js                            |   40 
 admin/src/views/workorder/workorderList.vue                         |  219 ++++
 admin/src/views/operation/device.vue                                |    0 
 admin/src/api/business/project.js                                   |    0 
 admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue  |   36 
 admin/src/views/login.vue                                           |    2 
 admin/src/views/project/components/OperaYwRoomWindow.vue            |  114 ++
 admin/src/api/project/ywBuilding.js                                 |   40 
 admin/src/api/project/ywProject.js                                  |   40 
 admin/src/views/client/clientList.vue                               |  219 ++++
 admin/src/views/operation/record.vue                                |    0 
 admin/src/views/contract/contractList.vue                           |    0 
 admin/src/views/Inspection/plan.vue                                 |  184 +++
 admin/src/views/project/components/OperaYwProjectWindow.vue         |   63 +
 admin/src/views/project/housingList.vue                             |  112 ++
 /dev/null                                                           |  101 --
 admin/src/views/index.vue                                           |   26 
 admin/src/api/client/ywCustomer.js                                  |   40 
 admin/src/api/Inspection/ywPatrolLine.js                            |   40 
 admin/src/views/Inspection/area.vue                                 |    0 
 admin/src/views/project/components/OperaYwBuildingWindow.vue        |  110 ++
 admin/src/views/stock/out.vue                                       |    0 
 admin/public/index.html                                             |    4 
 admin/src/views/project/buildingList.vue                            |  169 +++
 admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue   |   30 
 admin/src/views/Inspection/components/OperaYwPatrolTaskWindow.vue   |  110 ++
 admin/src/views/Inspection/path.vue                                 |  129 ++
 admin/src/views/stock/record.vue                                    |    0 
 admin/src/views/business/internalMember.vue                         |    5 
 admin/src/views/stock/query.vue                                     |    0 
 admin/src/views/workorder/components/OperaYwWorkorderWindow.vue     |  150 +++
 47 files changed, 2,737 insertions(+), 243 deletions(-)

diff --git a/admin/.env b/admin/.env
index 5d45627..2e37a67 100644
--- a/admin/.env
+++ b/admin/.env
@@ -10,4 +10,4 @@
 VUE_APP_API_PREFIX = '/gateway_interface'
 
 # 椤圭洰鍚嶇О
-VUE_APP_TITLE = '瀹夋嘲鏅烘収鐗╂祦鍥尯绯荤粺'
+VUE_APP_TITLE = '闃滃畞鏂囦綋涓績'
diff --git a/admin/package-lock.json b/admin/package-lock.json
index 88eda86..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"
           }
         }
       }
@@ -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/public/index.html b/admin/public/index.html
index cd3ecef..a0b0822 100644
--- a/admin/public/index.html
+++ b/admin/public/index.html
@@ -5,11 +5,11 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
-    <title>瀹夋嘲鏅烘収鐗╂祦鍥尯绯荤粺</title>
+    <title>闃滃畞鏂囦綋涓績</title>
   </head>
   <body>
     <noscript>
-      <strong>We're sorry but 瀹夋嘲鏅烘収鐗╂祦鍥尯绯荤粺 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+      <strong>We're sorry but 闃滃畞鏂囦綋涓績 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
     </noscript>
     <div id="app"></div>
     <!-- built files will be auto injected -->
diff --git a/admin/src/api/Inspection/ywPatrolLine.js b/admin/src/api/Inspection/ywPatrolLine.js
new file mode 100644
index 0000000..88ee422
--- /dev/null
+++ b/admin/src/api/Inspection/ywPatrolLine.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolLine/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolLine/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolLine/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolLine/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywPatrolLine/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/ywPatrolLine/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/api/Inspection/ywPatrolPoint.js b/admin/src/api/Inspection/ywPatrolPoint.js
new file mode 100644
index 0000000..933179d
--- /dev/null
+++ b/admin/src/api/Inspection/ywPatrolPoint.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolPoint/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolPoint/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolPoint/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolPoint/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywPatrolPoint/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/ywPatrolPoint/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/api/Inspection/ywPatrolScheme.js b/admin/src/api/Inspection/ywPatrolScheme.js
new file mode 100644
index 0000000..e644a9b
--- /dev/null
+++ b/admin/src/api/Inspection/ywPatrolScheme.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolScheme/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolScheme/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolScheme/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolScheme/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywPatrolScheme/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/ywPatrolScheme/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/api/Inspection/ywPatrolTask.js b/admin/src/api/Inspection/ywPatrolTask.js
new file mode 100644
index 0000000..d247bf3
--- /dev/null
+++ b/admin/src/api/Inspection/ywPatrolTask.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolTask/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolTask/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolTask/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywPatrolTask/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywPatrolTask/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/ywPatrolTask/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/api/business/project.js
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/api/business/project.js
diff --git a/admin/src/api/client/ywCustomer.js b/admin/src/api/client/ywCustomer.js
new file mode 100644
index 0000000..324a53e
--- /dev/null
+++ b/admin/src/api/client/ywCustomer.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywCustomer/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywCustomer/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywCustomer/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywCustomer/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywCustomer/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/ywCustomer/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/api/meeting/bookings.js b/admin/src/api/meeting/bookings.js
deleted file mode 100644
index d1ab7f7..0000000
--- a/admin/src/api/meeting/bookings.js
+++ /dev/null
@@ -1,103 +0,0 @@
-import request from '../../utils/request'
-// 鏌ヨ
-export function fetchList(data) {
-  return request.post('/meetingAdmin/cloudService/business/bookings/page', data, {
-    trim: true
-  })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel(data) {
-  return request.post('/meetingAdmin/cloudService/business/bookings/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-
-// 鍒涘缓
-export function create(data) {
-  return request.post('/meetingAdmin/cloudService/business/bookings/create', data)
-}
-
-// 淇敼
-export function updateById(data) {
-  return request.post('/meetingAdmin/cloudService/business/bookings/updateById', data)
-}
-// 鍙栨秷
-export function cancelById(data) {
-  return request.post('/meetingAdmin/cloudService/business/meeting/reservationCancel', data)
-}
-// 寮�濮�
-export function startById(data) {
-  return request.post('/meetingAdmin/cloudService/business/meeting/start', data)
-}
-// 缁撴潫
-export function meetingEndById(data) {
-  return request.post('/meetingAdmin/cloudService/business/meeting/reservationOver', data)
-}
-// 鎻愬墠寮�濮�
-export function startEarlyById(data) {
-  return request.post('/meetingAdmin/cloudService/business/meeting/startEarly', data)
-}
-// 
-export function overBookById(data) {
-  return request.post('/meetingAdmin/cloudService/business/meeting/reservationOver', data)
-}
-// 棰勫畾璇︽儏
-export function BookDetailById(params) {
-  return request.get('/meetingAdmin/cloudService/web/meeting/meetingDetail', {
-    params
-  })
-}
-
-// 鍒犻櫎
-export function deleteById(id) {
-  return request.get(`/meetingAdmin/cloudService/business/bookings/delete/${id}`)
-}
-
-// 鏍规嵁ID鏌ヨ
-export function bookingsDetail(id) {
-  return request.get(`/meetingAdmin/cloudService/business/bookings/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch(ids) {
-  return request.get('/meetingAdmin/cloudService/business/bookings/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
-
-// 浼氳瀹や娇鐢ㄦ椂闀跨粺璁�
-export function getRoomStatistics(yearNum, roomId) {
-  return request.get(`/meetingAdmin/cloudService/business/bookings/getRoomStatistics?yearNum=${yearNum}&roomId=${roomId}`)
-}
-// 浼氳瀹や娇鐢ㄦ椂闀跨粺璁″鍑篍xcel
-export function exportRoomStatistics(data) {
-  return request.post(`/meetingAdmin/cloudService/business/bookings/exportRoomStatistics`, data, {
-    trim: true,
-    download: true
-  })
-}
-
-// 浜哄憳鍙傚姞浼氳鏃跺父
-export function getUserStatistics(data) {
-  return request.post(`/meetingAdmin/cloudService/business/bookings/getUserStatistics`, data)
-}
-// 浜哄憳鍙備細鏃堕暱缁熻瀵煎嚭Excel
-export function exportUserStatistics(data) {
-  return request.post(`/meetingAdmin/cloudService/business/bookings/exportUserStatistics`, data, {
-    trim: true,
-    download: true
-  })
-}
-
-//
-export function reservationCancel(type) {
-  return request.get(`/meetingAdmin/cloudService/business/bookings/reservationCancel?type=${type}`)
-}
-//
-export function findMothBookingMeet({ roomId, dateMonth }) {
-  return request.post(`/meetingAdmin/cloudService/business/bookings/findMothBookingMeet?roomId=${roomId}&dateMonth=${dateMonth}`)
-}
diff --git a/admin/src/api/meeting/devices.js b/admin/src/api/meeting/devices.js
deleted file mode 100644
index 6709043..0000000
--- a/admin/src/api/meeting/devices.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import request from '../../utils/request'
-// 鏌ヨ
-export function fetchList (data) {
-  return request.post('/meetingAdmin/cloudService/business/devices/page', data, {
-    trim: true
-  })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-  return request.post('/meetingAdmin/cloudService/business/devices/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-
-// 鍒涘缓
-export function create (data) {
-  return request.post('/meetingAdmin/cloudService/business/devices/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
-  return request.post('/meetingAdmin/cloudService/business/devices/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
-  return request.get(`/meetingAdmin/cloudService/business/devices/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
-  return request.get('/meetingAdmin/cloudService/business/devices/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
diff --git a/admin/src/api/meeting/home.js b/admin/src/api/meeting/home.js
deleted file mode 100644
index f18b5cf..0000000
--- a/admin/src/api/meeting/home.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import request from '../../utils/request'
-// 鏌ヨ
-export function home (data) {
-  return request.post('/meetingAdmin/cloudService/business/home/home', data, {
-    trim: true
-  })
-}
diff --git a/admin/src/api/meeting/notice.js b/admin/src/api/meeting/notice.js
deleted file mode 100644
index 0c7b158..0000000
--- a/admin/src/api/meeting/notice.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import request from '../../utils/request'
-// 鏌ヨ
-export function fetchList (data) {
-  return request.post('/meetingAdmin/cloudService/business/notice/page', data, {
-    trim: true
-  })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-  return request.post('/meetingAdmin/cloudService/business/notice/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-
-// 鍒涘缓
-export function create (data) {
-  return request.post('/meetingAdmin/cloudService/business/notice/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
-  return request.post('/meetingAdmin/cloudService/business/notice/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
-  return request.get(`/meetingAdmin/cloudService/notice/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
-  return request.get('/meetingAdmin/cloudService/business/notice/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
diff --git a/admin/src/api/meeting/projects.js b/admin/src/api/meeting/projects.js
deleted file mode 100644
index 03d4b53..0000000
--- a/admin/src/api/meeting/projects.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import request from '../../utils/request'
-// 鏌ヨ
-export function fetchList (data) {
-  return request.post('/meetingAdmin/cloudService/business/projects/page', data, {
-    trim: true
-  })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-  return request.post('/meetingAdmin/cloudService/business/projects/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-
-// 鍒涘缓
-export function create (data) {
-  return request.post('/meetingAdmin/cloudService/business/projects/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
-  return request.post('/meetingAdmin/cloudService/business/projects/updateById', data)
-}
-// 浼氳鍏宠仈鐨勯」鐩�
-export function findListByObjId (data) {
-  return request.post('/meetingAdmin/cloudService/business/projects/findListByObjId', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
-  return request.get(`/meetingAdmin/cloudService/business/projects/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
-  return request.get('/meetingAdmin/cloudService/business/projects/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
diff --git a/admin/src/api/meeting/roomRecord.js b/admin/src/api/meeting/roomRecord.js
deleted file mode 100644
index d4cbb0d..0000000
--- a/admin/src/api/meeting/roomRecord.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import request from '../../utils/request'
-// 鏌ヨ
-export function fetchList (data) {
-  return request.post('/meetingAdmin/cloudService/business/roomRecord/page', data, {
-    trim: true
-  })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-  return request.post('/meetingAdmin/cloudService/business/roomRecord/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-
-// 鍒涘缓
-export function create (data) {
-  return request.post('/meetingAdmin/cloudService/business/roomRecord/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
-  return request.post('/meetingAdmin/cloudService/business/roomRecord/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
-  return request.get(`/meetingAdmin/cloudService/roomRecord/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
-  return request.get('/meetingAdmin/cloudService/business/roomRecord/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
diff --git a/admin/src/api/meeting/roomTime.js b/admin/src/api/meeting/roomTime.js
deleted file mode 100644
index 9d717e9..0000000
--- a/admin/src/api/meeting/roomTime.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import request from '../../utils/request'
-// 鏌ヨ
-export function findList (data) {
-  return request.post('/meetingAdmin/cloudService/business/roomTime/findList', data)
-}
diff --git a/admin/src/api/meeting/rooms.js b/admin/src/api/meeting/rooms.js
deleted file mode 100644
index 9735b54..0000000
--- a/admin/src/api/meeting/rooms.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import request from '../../utils/request'
-// 鏌ヨ
-export function fetchList (data) {
-  return request.post('/meetingAdmin/cloudService/business/rooms/page', data, {
-    trim: true
-  })
-}
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-  return request.post('/meetingAdmin/cloudService/business/rooms/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-// 鍒涘缓
-export function create (data) {
-  return request.post('/meetingAdmin/cloudService/business/rooms/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
-  return request.post('/meetingAdmin/cloudService/business/rooms/updateById', data)
-}
-// 淇敼鐘舵��
-export function updateStatusById (data) {
-  return request.post('/meetingAdmin/cloudService/business/rooms/updateStatusById', data)
-}
-
-//
-export function findList (data) {
-  return request.post('/meetingAdmin/cloudService/business/rooms/findList', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
-  return request.get(`/meetingAdmin/cloudService/business/rooms/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
-  return request.get('/meetingAdmin/cloudService/business/rooms/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
diff --git a/admin/src/api/platform/index.js b/admin/src/api/platform/index.js
deleted file mode 100644
index 4e85937..0000000
--- a/admin/src/api/platform/index.js
+++ /dev/null
@@ -1,130 +0,0 @@
-import request from '@/utils/request'
-
-// 鑾峰彇鏈堝彴缁勪俊鎭�
-export function getPlatformGroupList(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/getPlatformGroupList', data)
-}
-// 鍙彿鍒楄〃
-export function platformCallList(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/platformCallList', data)
-}
-//  鍏ュ洯鍙彿
-export function platformInPark(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/platformInPark', data)
-}
-// 鏈堝彴鍙彿
-export function platformCallNumber(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/platformCallNumber', data)
-}
-// 寮�濮嬩綔涓�
-export function platformBeginWork(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/beginWork', data)
-}
-// 瀹屾垚浣滀笟
-export function platformFinishWork(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/finishWork', data)
-}
-// 杩囧彿
-export function platformOverNumber(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/platformOverNumber', data)
-}
-// 寮傚父鎸傝捣
-export function platformErr(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/platformErr', data)
-}
-// 寮傚父鎸傝捣
-export function platformMove(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/platformMove', data)
-}
-// 鏈堝彴閰嶇疆
-export function updUserPlatformConfig(data) {
-  return request.get('/visitsAdmin/cloudService/business/platform/updUserPlatformConfig?ids=' + data)
-}
-
-// 鏍规嵁鏈堝彴缁勮幏鍙栨湀鍙板垪琛ㄤ俊鎭�
-export function listByGroupId(id) {
-  return request.get('/visitsAdmin/cloudService/business/platform/listByGroupId?groupId=' + id)
-}
-// 鏈堝彴鍒楄〃 缂栬緫
-export function PlatformEdit(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/updateById', data, {
-    trim: true
-  })
-}
-// 鏈堝彴鍒楄〃 鍒犻櫎
-export function PlatformDel(id) {
-  return request.get('/visitsAdmin/cloudService/business/platform/delete/' + id, {
-    trim: true
-  })
-}
-// 鏈堝彴璋冨害涓績 鍒楄〃
-export function getPlatformJob(data) {
-  return request.post('/visitsAdmin/cloudService/business/platformJob/page', data, {
-    trim: true
-  })
-}
-// 杞﹁締鎺掗槦鎯呭喌
-export function platformLineUpPage(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/platformLineUpPage', data, {
-    trim: true
-  })
-}
-
-// 鍏ュ洯鍘熷洜
-export function platformReasonList() {
-  return request.get('/visitsAdmin/cloudService/business/platformBooks/platformReasonList')
-}
-// 鐗╂祦杞﹂绾�
-export function platformBooksApply(data) {
-  return request.post('/visitsAdmin/cloudService/business/platformBooks/apply', data)
-}
-// 鑾峰彇鏈堝彴缁� 绛夊緟涓庡紓甯告寕璧锋暟鎹�
-export function getPlatformGroupWork(id) {
-  return request.get('/visitsAdmin/cloudService/business/platform/getPlatformGroupWork?platformGroupId=' + id)
-}
-// 鏈堝彴鍏ュ洯棰勭害 鍒嗛〉鍒楄〃
-export function platformBooksPage(data) {
-  return request.post('/visitsAdmin/cloudService/business/platformBooks/page', data)
-}
-// 鏈堝彴鍏ュ洯棰勭害 鍒楄〃瀵煎嚭
-export function platformBooksExport(data) {
-  return request.post('/visitsAdmin/cloudService/business/platformBooks/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-// 鏈堝彴璋冨害浣滀笟浠诲姟 鍒嗛〉鍒楄〃
-export function platformJobPage(data) {
-  return request.post('/visitsAdmin/cloudService/business/platformJob/page', data)
-}
-// 缁熻鏈堝彴浣滀笟浠诲姟 鍒嗛〉鍒楄〃
-export function platformLogPage(data) {
-  return request.post('/visitsAdmin/cloudService/business/platformLog/page', data)
-}
-// 鏈堝彴浣滀笟缁熻 鍒嗛〉鍒楄〃
-export function platformWorkReportPage(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/platformWorkReportPage', data)
-}
-// 鏈堝彴璋冨害浣滀笟浠诲姟 鍒犻櫎
-export function platformJobDel(id) {
-  return request.get('/visitsAdmin/cloudService/business/platformJob/delete?id=' + id)
-}
-// 鏈堝彴杩愬崟璇︽儏
-export function platformWmsJobDetail(id) {
-  return request.get('/visitsAdmin/cloudService/business/platformWmsJob/' + id)
-}
-// 鏈堝彴璋冨害浣滀笟浠诲姟 绛惧埌
-export function platformJobSign(data) {
-  return request.post('/visitsAdmin/cloudService/business/platformJob/signIn', data)
-}
-// 鏈堝彴璋冨害浣滀笟浠诲姟 绂诲洯鎺堟潈
-export function platformPowerLevel(data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/powerLevel', data)
-}
-// 鏈堝彴璋冨害浣滀笟浠诲姟 鍒楄〃瀵煎嚭
-export function platformJobExport(data) {
-  return request.post('/visitsAdmin/cloudService/business/platformJob/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
diff --git a/admin/src/api/platform/platform.js b/admin/src/api/platform/platform.js
deleted file mode 100644
index c258903..0000000
--- a/admin/src/api/platform/platform.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/page', data, {
-    trim: true
-  })
-}
-
-// 鍚屾
-export function syncPlatforms (data) {
-  return request.post('/visitsAdmin/cloudService/business/hksync/syncPlatforms', data)
-}
-// 鍚屾
-export function syncPlatformStatus (data) {
-  return request.post('/visitsAdmin/cloudService/business/hksync/syncPlatformStatus', data)
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-// 淇敼鐘舵��
-export function updateStatusById (data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/updateStatusById', data)
-}
-
-// 鍒涘缓
-export function create (data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
-  return request.post('/visitsAdmin/cloudService/business/platform/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
-  return request.get(`/visitsAdmin/cloudService/business/platform/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
-  return request.get('/visitsAdmin/cloudService/business/platform/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
-// 鏌ヨ鍙绾﹂噺
-export function checkSurplusNum (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformBooks/checkSurplusNum', data)
-}
\ No newline at end of file
diff --git a/admin/src/api/platform/platformGroup.js b/admin/src/api/platform/platformGroup.js
deleted file mode 100644
index 87cdd5a..0000000
--- a/admin/src/api/platform/platformGroup.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformGroup/page', data, {
-    trim: true
-  })
-}
-export function allList (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformGroup/list', data, {
-    trim: true
-  })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformGroup/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-
-// 鍒涘缓
-export function create (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformGroup/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformGroup/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
-  return request.get(`/visitsAdmin/cloudService/business/platformGroup/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
-  return request.get('/visitsAdmin/cloudService/business/platformGroup/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
diff --git a/admin/src/api/platform/platformReason.js b/admin/src/api/platform/platformReason.js
deleted file mode 100644
index 826270c..0000000
--- a/admin/src/api/platform/platformReason.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformReason/page', data, {
-    trim: true
-  })
-}
-export function allList (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformReason/list', data, {
-    trim: true
-  })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformReason/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-
-// 鍒涘缓
-export function create (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformReason/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformReason/updateById', data)
-}
-export function updateStatusById (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformReason/updateStatusById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
-  return request.get(`/visitsAdmin/cloudService/business/platformReason/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
-  return request.get('/visitsAdmin/cloudService/business/platformReason/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
diff --git a/admin/src/api/platform/platformWaterGas.js b/admin/src/api/platform/platformWaterGas.js
deleted file mode 100644
index d8026e1..0000000
--- a/admin/src/api/platform/platformWaterGas.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/page', data, {
-    trim: true
-  })
-}
-export function allList (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/list', data, {
-    trim: true
-  })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/exportExcel', data, {
-    trim: true,
-    download: true
-  })
-}
-
-// 鍒涘缓
-export function create (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/updateById', data)
-}
-export function updateStatusById (data) {
-  return request.post('/visitsAdmin/cloudService/business/platformWaterGas/updateStatusById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
-  return request.get(`/visitsAdmin/cloudService/business/platformWaterGas/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
-  return request.get('/visitsAdmin/cloudService/business/platformWaterGas/delete/batch', {
-    params: {
-      ids
-    }
-  })
-}
diff --git a/admin/src/api/project/ywBuilding.js b/admin/src/api/project/ywBuilding.js
new file mode 100644
index 0000000..dfcfefd
--- /dev/null
+++ b/admin/src/api/project/ywBuilding.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywBuilding/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywBuilding/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywBuilding/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywBuilding/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywBuilding/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/ywBuilding/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/api/project/ywProject.js b/admin/src/api/project/ywProject.js
new file mode 100644
index 0000000..b3d7325
--- /dev/null
+++ b/admin/src/api/project/ywProject.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywProject/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywProject/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywProject/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywProject/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywProject/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/ywProject/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/api/project/ywRoom.js b/admin/src/api/project/ywRoom.js
new file mode 100644
index 0000000..8a7dd61
--- /dev/null
+++ b/admin/src/api/project/ywRoom.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywRoom/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywRoom/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywRoom/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywRoom/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywRoom/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/ywRoom/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/api/workorder/ywWorkorder.js b/admin/src/api/workorder/ywWorkorder.js
new file mode 100644
index 0000000..5e14df5
--- /dev/null
+++ b/admin/src/api/workorder/ywWorkorder.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywWorkorder/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywWorkorder/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywWorkorder/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywWorkorder/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywWorkorder/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/ywWorkorder/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/Inspection/area.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/Inspection/area.vue
diff --git a/admin/src/views/meeting/components/OperaRoomRecordWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue
similarity index 66%
rename from admin/src/views/meeting/components/OperaRoomRecordWindow.vue
rename to admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue
index 964a835..abbc222 100644
--- a/admin/src/views/meeting/components/OperaRoomRecordWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolLineWindow.vue
@@ -21,20 +21,20 @@
       <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
         <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
       </el-form-item>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+      </el-form-item>
       <el-form-item label="澶囨敞" prop="remark">
         <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
       </el-form-item>
-      <el-form-item label="浜哄憳缂栫爜锛堝叧鑱攕ystem_user琛級" prop="userId">
-        <el-input v-model="form.userId" placeholder="璇疯緭鍏ヤ汉鍛樼紪鐮侊紙鍏宠仈system_user琛級" v-trim/>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
       </el-form-item>
-      <el-form-item label="鍏宠仈瀵硅薄缂栫爜锛堝叧鑱攔ooms鎴朾ooking琛級" prop="objId">
-        <el-input v-model="form.objId" placeholder="璇疯緭鍏ュ叧鑱斿璞$紪鐮侊紙鍏宠仈rooms鎴朾ooking琛級" v-trim/>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
-      <el-form-item label="鍏宠仈瀵硅薄绫诲瀷 0浼氳瀹ょ鐞嗗憳 1鍙備細浜哄憳" prop="objType">
-        <el-input v-model="form.objType" placeholder="璇疯緭鍏ュ叧鑱斿璞$被鍨� 0浼氳瀹ょ鐞嗗憳 1鍙備細浜哄憳" v-trim/>
-      </el-form-item>
-      <el-form-item label="浼氳瀹ょ紪鐮侊紙鍏宠仈rooms琛級" prop="roomId">
-        <el-input v-model="form.roomId" placeholder="璇疯緭鍏ヤ細璁缂栫爜锛堝叧鑱攔ooms琛級" v-trim/>
+      <el-form-item label="鍥炬爣" prop="imgurl">
+        <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -44,7 +44,7 @@
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
 export default {
-  name: 'OperaRoomRecordWindow',
+  name: 'OperaYwPatrolLineWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
   data () {
@@ -57,11 +57,11 @@
         editor: '',
         editDate: '',
         isdeleted: '',
+        name: '',
         remark: '',
-        userId: '',
-        objId: '',
-        objType: '',
-        roomId: ''
+        status: '',
+        sortnum: '',
+        imgurl: ''
       },
       // 楠岃瘉瑙勫垯
       rules: {
@@ -70,7 +70,7 @@
   },
   created () {
     this.config({
-      api: '/meeting/roomRecord',
+      api: '/Inspection/ywPatrolLine',
       'field.id': 'id'
     })
   }
diff --git a/admin/src/views/meeting/components/OperaRoomRecordWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
similarity index 64%
copy from admin/src/views/meeting/components/OperaRoomRecordWindow.vue
copy to admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
index 964a835..cc134ed 100644
--- a/admin/src/views/meeting/components/OperaRoomRecordWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
@@ -21,20 +21,26 @@
       <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
         <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
       </el-form-item>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+      </el-form-item>
       <el-form-item label="澶囨敞" prop="remark">
         <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
       </el-form-item>
-      <el-form-item label="浜哄憳缂栫爜锛堝叧鑱攕ystem_user琛級" prop="userId">
-        <el-input v-model="form.userId" placeholder="璇疯緭鍏ヤ汉鍛樼紪鐮侊紙鍏宠仈system_user琛級" v-trim/>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
       </el-form-item>
-      <el-form-item label="鍏宠仈瀵硅薄缂栫爜锛堝叧鑱攔ooms鎴朾ooking琛級" prop="objId">
-        <el-input v-model="form.objId" placeholder="璇疯緭鍏ュ叧鑱斿璞$紪鐮侊紙鍏宠仈rooms鎴朾ooking琛級" v-trim/>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
-      <el-form-item label="鍏宠仈瀵硅薄绫诲瀷 0浼氳瀹ょ鐞嗗憳 1鍙備細浜哄憳" prop="objType">
-        <el-input v-model="form.objType" placeholder="璇疯緭鍏ュ叧鑱斿璞$被鍨� 0浼氳瀹ょ鐞嗗憳 1鍙備細浜哄憳" v-trim/>
+      <el-form-item label="鍥炬爣" prop="imgurl">
+        <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" v-trim/>
       </el-form-item>
-      <el-form-item label="浼氳瀹ょ紪鐮侊紙鍏宠仈rooms琛級" prop="roomId">
-        <el-input v-model="form.roomId" placeholder="璇疯緭鍏ヤ細璁缂栫爜锛堝叧鑱攔ooms琛級" v-trim/>
+      <el-form-item label="鍖哄煙缂栫爜锛堝叧鑱攃ategory)" prop="areaId">
+        <el-input v-model="form.areaId" placeholder="璇疯緭鍏ュ尯鍩熺紪鐮侊紙鍏宠仈category)" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍦板潃" prop="addr">
+        <el-input v-model="form.addr" placeholder="璇疯緭鍏ュ湴鍧�" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -44,7 +50,7 @@
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
 export default {
-  name: 'OperaRoomRecordWindow',
+  name: 'OperaYwPatrolPointWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
   data () {
@@ -57,11 +63,13 @@
         editor: '',
         editDate: '',
         isdeleted: '',
+        name: '',
         remark: '',
-        userId: '',
-        objId: '',
-        objType: '',
-        roomId: ''
+        status: '',
+        sortnum: '',
+        imgurl: '',
+        areaId: '',
+        addr: ''
       },
       // 楠岃瘉瑙勫垯
       rules: {
@@ -70,7 +78,7 @@
   },
   created () {
     this.config({
-      api: '/meeting/roomRecord',
+      api: '/Inspection/ywPatrolPoint',
       'field.id': 'id'
     })
   }
diff --git a/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
new file mode 100644
index 0000000..d4e36c0
--- /dev/null
+++ b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
@@ -0,0 +1,122 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏍囬" prop="title">
+        <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="宸℃鐐圭紪鐮�(鍏宠仈yw_patrol_line)" prop="lineId">
+        <el-input v-model="form.lineId" placeholder="璇疯緭鍏ュ贰妫�鐐圭紪鐮�(鍏宠仈yw_patrol_line)" v-trim/>
+      </el-form-item>
+      <el-form-item label="宸℃璐熻矗浜虹紪鐮侀泦鍚堬紝澶氫釜浣跨敤鑻辨枃閫楀彿闅斿紑" prop="userIds">
+        <el-input v-model="form.userIds" placeholder="璇疯緭鍏ュ贰妫�璐熻矗浜虹紪鐮侀泦鍚堬紝澶氫釜浣跨敤鑻辨枃閫楀彿闅斿紑" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" prop="dealUserId">
+        <el-input v-model="form.dealUserId" placeholder="璇疯緭鍏ュ鐞嗕汉缂栫爜(鍏宠仈system_user)" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶勭悊鏃堕棿" prop="dealDate">
+        <el-date-picker v-model="form.dealDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ鐞嗘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="澶勭悊澶囨敞" prop="dealInfo">
+        <el-input v-model="form.dealInfo" placeholder="璇疯緭鍏ュ鐞嗗娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="寰幆鍛ㄦ湡  0姣忓ぉ 1姣忓懆 2姣忓ぉ" prop="circleType">
+        <el-input v-model="form.circleType" placeholder="璇疯緭鍏ュ惊鐜懆鏈�  0姣忓ぉ 1姣忓懆 2姣忓ぉ" v-trim/>
+      </el-form-item>
+      <el-form-item label="寰幆閲嶅瑙勫垯 1-31锛屽涓嫳鏂囬�楀彿闅斿紑" prop="circleDays">
+        <el-input v-model="form.circleDays" placeholder="璇疯緭鍏ュ惊鐜噸澶嶈鍒� 1-31锛屽涓嫳鏂囬�楀彿闅斿紑" v-trim/>
+      </el-form-item>
+      <el-form-item label="寮�濮嬫棩鏈�" prop="startDate">
+        <el-date-picker v-model="form.startDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫棩鏈�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="缁撴潫鏃ユ湡" prop="endDate">
+        <el-date-picker v-model="form.endDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ョ粨鏉熸棩鏈�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="寮�濮嬫椂闂寸偣" prop="startTime">
+        <el-input v-model="form.startTime" placeholder="璇疯緭鍏ュ紑濮嬫椂闂寸偣" v-trim/>
+      </el-form-item>
+      <el-form-item label="缁撴潫鏃堕棿鐐�" prop="endTime">
+        <el-input v-model="form.endTime" placeholder="璇疯緭鍏ョ粨鏉熸椂闂寸偣" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵ц杩涘害 0寰呭紑濮� 1杩涜涓� 2瓒呮湡 3宸插畬鎴�" prop="processStatus">
+        <el-input v-model="form.processStatus" placeholder="璇疯緭鍏ユ墽琛岃繘搴� 0寰呭紑濮� 1杩涜涓� 2瓒呮湡 3宸插畬鎴�" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaYwPatrolSchemeWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        title: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        lineId: '',
+        userIds: '',
+        dealUserId: '',
+        dealDate: '',
+        dealInfo: '',
+        circleType: '',
+        circleDays: '',
+        startDate: '',
+        endDate: '',
+        startTime: '',
+        endTime: '',
+        processStatus: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/Inspection/ywPatrolScheme',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/admin/src/views/Inspection/components/OperaYwPatrolTaskWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolTaskWindow.vue
new file mode 100644
index 0000000..e990066
--- /dev/null
+++ b/admin/src/views/Inspection/components/OperaYwPatrolTaskWindow.vue
@@ -0,0 +1,110 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏍囬" prop="title">
+        <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0寰呭紑濮� 1杩涜涓� 2宸茶秴鏈� 3宸插畬鎴� 4宸插彇娑�" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0寰呭紑濮� 1杩涜涓� 2宸茶秴鏈� 3宸插畬鎴� 4宸插彇娑�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="宸℃璁″垝缂栫爜(鍏宠仈yw_patrol_scheme)" prop="schemeId">
+        <el-input v-model="form.schemeId" placeholder="璇疯緭鍏ュ贰妫�璁″垝缂栫爜(鍏宠仈yw_patrol_scheme)" v-trim/>
+      </el-form-item>
+      <el-form-item label="宸℃鐐圭紪鐮�(鍏宠仈yw_patrol_point)" prop="pointId">
+        <el-input v-model="form.pointId" placeholder="璇疯緭鍏ュ贰妫�鐐圭紪鐮�(鍏宠仈yw_patrol_point)" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" prop="dealUserId">
+        <el-input v-model="form.dealUserId" placeholder="璇疯緭鍏ュ鐞嗕汉缂栫爜(鍏宠仈system_user)" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶勭悊鏃堕棿" prop="dealDate">
+        <el-date-picker v-model="form.dealDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ鐞嗘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="澶勭悊澶囨敞" prop="dealInfo">
+        <el-input v-model="form.dealInfo" placeholder="璇疯緭鍏ュ鐞嗗娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="寰幆鍛ㄦ湡  0姣忓ぉ 1姣忓懆 2姣忓ぉ" prop="circleType">
+        <el-input v-model="form.circleType" placeholder="璇疯緭鍏ュ惊鐜懆鏈�  0姣忓ぉ 1姣忓懆 2姣忓ぉ" v-trim/>
+      </el-form-item>
+      <el-form-item label="寮�濮嬫棩鏈�" prop="startDate">
+        <el-date-picker v-model="form.startDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫棩鏈�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="缁撴潫鏃ユ湡" prop="endDate">
+        <el-date-picker v-model="form.endDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ョ粨鏉熸棩鏈�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="宸℃缁撴灉  0姝e父 1寮傚父" prop="dealStatus">
+        <el-input v-model="form.dealStatus" placeholder="璇疯緭鍏ュ贰妫�缁撴灉  0姝e父 1寮傚父" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaYwPatrolTaskWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        title: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        schemeId: '',
+        pointId: '',
+        dealUserId: '',
+        dealDate: '',
+        dealInfo: '',
+        circleType: '',
+        startDate: '',
+        endDate: '',
+        dealStatus: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/Inspection/ywPatrolTask',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/admin/src/views/Inspection/dot.vue b/admin/src/views/Inspection/dot.vue
new file mode 100644
index 0000000..804b0a9
--- /dev/null
+++ b/admin/src/views/Inspection/dot.vue
@@ -0,0 +1,139 @@
+<template>
+  <TableLayout :permissions="['business:ywpatrolpoint:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="涓婚敭" prop="id">
+        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="searchForm.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍥炬爣" prop="imgurl">
+        <el-input v-model="searchForm.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍖哄煙缂栫爜锛堝叧鑱攃ategory)" prop="areaId">
+        <el-input v-model="searchForm.areaId" placeholder="璇疯緭鍏ュ尯鍩熺紪鐮侊紙鍏宠仈category)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍦板潃" prop="addr">
+        <el-input v-model="searchForm.addr" placeholder="璇疯緭鍏ュ湴鍧�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywpatrolpoint:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:ywpatrolpoint:create', 'business:ywpatrolpoint:delete']">
+        <li><el-button type="primary" @click="$refs.operaYwPatrolPointWindow.open('鏂板缓杩愮淮宸℃鐐逛俊鎭〃')" icon="el-icon-plus" v-permissions="['business:ywpatrolpoint:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywpatrolpoint:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
+        <el-table-column prop="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="imgurl" label="鍥炬爣" min-width="100px"></el-table-column>
+        <el-table-column prop="areaId" label="鍖哄煙缂栫爜锛堝叧鑱攃ategory)" min-width="100px"></el-table-column>
+        <el-table-column prop="addr" label="鍦板潃" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:ywpatrolpoint:update', 'business:ywpatrolpoint:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaYwPatrolPointWindow.open('缂栬緫杩愮淮宸℃鐐逛俊鎭〃', row)" icon="el-icon-edit" v-permissions="['business:ywpatrolpoint:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywpatrolpoint:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaYwPatrolPointWindow ref="operaYwPatrolPointWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaYwPatrolPointWindow from './components/OperaYwPatrolPointWindow'
+export default {
+  name: 'YwPatrolPoint',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaYwPatrolPointWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        imgurl: '',
+        areaId: '',
+        addr: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '杩愮淮宸℃鐐逛俊鎭〃',
+      api: '/Inspection/ywPatrolPoint',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/Inspection/path.vue b/admin/src/views/Inspection/path.vue
new file mode 100644
index 0000000..3cfe10a
--- /dev/null
+++ b/admin/src/views/Inspection/path.vue
@@ -0,0 +1,129 @@
+<template>
+  <TableLayout :permissions="['business:ywpatrolline:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="涓婚敭" prop="id">
+        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="searchForm.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍥炬爣" prop="imgurl">
+        <el-input v-model="searchForm.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywpatrolline:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:ywpatrolline:create', 'business:ywpatrolline:delete']">
+        <li><el-button type="primary" @click="$refs.operaYwPatrolLineWindow.open('鏂板缓杩愮淮宸℃璺嚎淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywpatrolline:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
+        <el-table-column prop="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="imgurl" label="鍥炬爣" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:ywpatrolline:update', 'business:ywpatrolline:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaYwPatrolLineWindow.open('缂栬緫杩愮淮宸℃璺嚎淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:ywpatrolline:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywpatrolline:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaYwPatrolLineWindow ref="operaYwPatrolLineWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaYwPatrolLineWindow from './components/OperaYwPatrolLineWindow'
+export default {
+  name: 'YwPatrolLine',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaYwPatrolLineWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        imgurl: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '杩愮淮宸℃璺嚎淇℃伅琛�',
+      api: '/Inspection/ywPatrolLine',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/Inspection/plan.vue b/admin/src/views/Inspection/plan.vue
new file mode 100644
index 0000000..0a92ff6
--- /dev/null
+++ b/admin/src/views/Inspection/plan.vue
@@ -0,0 +1,184 @@
+<template>
+  <TableLayout :permissions="['business:ywpatrolscheme:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="涓婚敭" prop="id">
+        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏍囬" prop="title">
+        <el-input v-model="searchForm.title" placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="searchForm.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="宸℃鐐圭紪鐮�(鍏宠仈yw_patrol_line)" prop="lineId">
+        <el-input v-model="searchForm.lineId" placeholder="璇疯緭鍏ュ贰妫�鐐圭紪鐮�(鍏宠仈yw_patrol_line)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="宸℃璐熻矗浜虹紪鐮侀泦鍚堬紝澶氫釜浣跨敤鑻辨枃閫楀彿闅斿紑" prop="userIds">
+        <el-input v-model="searchForm.userIds" placeholder="璇疯緭鍏ュ贰妫�璐熻矗浜虹紪鐮侀泦鍚堬紝澶氫釜浣跨敤鑻辨枃閫楀彿闅斿紑" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" prop="dealUserId">
+        <el-input v-model="searchForm.dealUserId" placeholder="璇疯緭鍏ュ鐞嗕汉缂栫爜(鍏宠仈system_user)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶勭悊鏃堕棿" prop="dealDate">
+        <el-date-picker v-model="searchForm.dealDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ鐞嗘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="澶勭悊澶囨敞" prop="dealInfo">
+        <el-input v-model="searchForm.dealInfo" placeholder="璇疯緭鍏ュ鐞嗗娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="寰幆鍛ㄦ湡  0姣忓ぉ 1姣忓懆 2姣忓ぉ" prop="circleType">
+        <el-input v-model="searchForm.circleType" placeholder="璇疯緭鍏ュ惊鐜懆鏈�  0姣忓ぉ 1姣忓懆 2姣忓ぉ" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="寰幆閲嶅瑙勫垯 1-31锛屽涓嫳鏂囬�楀彿闅斿紑" prop="circleDays">
+        <el-input v-model="searchForm.circleDays" placeholder="璇疯緭鍏ュ惊鐜噸澶嶈鍒� 1-31锛屽涓嫳鏂囬�楀彿闅斿紑" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="寮�濮嬫棩鏈�" prop="startDate">
+        <el-date-picker v-model="searchForm.startDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫棩鏈�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="缁撴潫鏃ユ湡" prop="endDate">
+        <el-date-picker v-model="searchForm.endDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ョ粨鏉熸棩鏈�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="寮�濮嬫椂闂寸偣" prop="startTime">
+        <el-input v-model="searchForm.startTime" placeholder="璇疯緭鍏ュ紑濮嬫椂闂寸偣" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="缁撴潫鏃堕棿鐐�" prop="endTime">
+        <el-input v-model="searchForm.endTime" placeholder="璇疯緭鍏ョ粨鏉熸椂闂寸偣" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎵ц杩涘害 0寰呭紑濮� 1杩涜涓� 2瓒呮湡 3宸插畬鎴�" prop="processStatus">
+        <el-input v-model="searchForm.processStatus" placeholder="璇疯緭鍏ユ墽琛岃繘搴� 0寰呭紑濮� 1杩涜涓� 2瓒呮湡 3宸插畬鎴�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywpatrolscheme:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:ywpatrolscheme:create', 'business:ywpatrolscheme:delete']">
+        <li><el-button type="primary" @click="$refs.operaYwPatrolSchemeWindow.open('鏂板缓杩愮淮宸℃璁″垝淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:ywpatrolscheme:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywpatrolscheme:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
+        <el-table-column prop="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="title" label="鏍囬" min-width="100px"></el-table-column>
+        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="lineId" label="宸℃鐐圭紪鐮�(鍏宠仈yw_patrol_line)" min-width="100px"></el-table-column>
+        <el-table-column prop="userIds" label="宸℃璐熻矗浜虹紪鐮侀泦鍚堬紝澶氫釜浣跨敤鑻辨枃閫楀彿闅斿紑" min-width="100px"></el-table-column>
+        <el-table-column prop="dealUserId" label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" min-width="100px"></el-table-column>
+        <el-table-column prop="dealDate" label="澶勭悊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="dealInfo" label="澶勭悊澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="circleType" label="寰幆鍛ㄦ湡  0姣忓ぉ 1姣忓懆 2姣忓ぉ" min-width="100px"></el-table-column>
+        <el-table-column prop="circleDays" label="寰幆閲嶅瑙勫垯 1-31锛屽涓嫳鏂囬�楀彿闅斿紑" min-width="100px"></el-table-column>
+        <el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="100px"></el-table-column>
+        <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="100px"></el-table-column>
+        <el-table-column prop="startTime" label="寮�濮嬫椂闂寸偣" min-width="100px"></el-table-column>
+        <el-table-column prop="endTime" label="缁撴潫鏃堕棿鐐�" min-width="100px"></el-table-column>
+        <el-table-column prop="processStatus" label="鎵ц杩涘害 0寰呭紑濮� 1杩涜涓� 2瓒呮湡 3宸插畬鎴�" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:ywpatrolscheme:update', 'business:ywpatrolscheme:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaYwPatrolSchemeWindow.open('缂栬緫杩愮淮宸℃璁″垝淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:ywpatrolscheme:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywpatrolscheme:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaYwPatrolSchemeWindow ref="operaYwPatrolSchemeWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaYwPatrolSchemeWindow from './components/OperaYwPatrolSchemeWindow'
+export default {
+  name: 'YwPatrolScheme',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaYwPatrolSchemeWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        title: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        lineId: '',
+        userIds: '',
+        dealUserId: '',
+        dealDate: '',
+        dealInfo: '',
+        circleType: '',
+        circleDays: '',
+        startDate: '',
+        endDate: '',
+        startTime: '',
+        endTime: '',
+        processStatus: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '杩愮淮宸℃璁″垝淇℃伅琛�',
+      api: '/Inspection/ywPatrolScheme',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/Inspection/task.vue b/admin/src/views/Inspection/task.vue
new file mode 100644
index 0000000..e2e9040
--- /dev/null
+++ b/admin/src/views/Inspection/task.vue
@@ -0,0 +1,169 @@
+<template>
+  <TableLayout :permissions="['business:ywpatroltask:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="涓婚敭" prop="id">
+        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏍囬" prop="title">
+        <el-input v-model="searchForm.title" placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0寰呭紑濮� 1杩涜涓� 2宸茶秴鏈� 3宸插畬鎴� 4宸插彇娑�" prop="status">
+        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0寰呭紑濮� 1杩涜涓� 2宸茶秴鏈� 3宸插畬鎴� 4宸插彇娑�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="searchForm.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="宸℃璁″垝缂栫爜(鍏宠仈yw_patrol_scheme)" prop="schemeId">
+        <el-input v-model="searchForm.schemeId" placeholder="璇疯緭鍏ュ贰妫�璁″垝缂栫爜(鍏宠仈yw_patrol_scheme)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="宸℃鐐圭紪鐮�(鍏宠仈yw_patrol_point)" prop="pointId">
+        <el-input v-model="searchForm.pointId" placeholder="璇疯緭鍏ュ贰妫�鐐圭紪鐮�(鍏宠仈yw_patrol_point)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" prop="dealUserId">
+        <el-input v-model="searchForm.dealUserId" placeholder="璇疯緭鍏ュ鐞嗕汉缂栫爜(鍏宠仈system_user)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶勭悊鏃堕棿" prop="dealDate">
+        <el-date-picker v-model="searchForm.dealDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ鐞嗘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="澶勭悊澶囨敞" prop="dealInfo">
+        <el-input v-model="searchForm.dealInfo" placeholder="璇疯緭鍏ュ鐞嗗娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="寰幆鍛ㄦ湡  0姣忓ぉ 1姣忓懆 2姣忓ぉ" prop="circleType">
+        <el-input v-model="searchForm.circleType" placeholder="璇疯緭鍏ュ惊鐜懆鏈�  0姣忓ぉ 1姣忓懆 2姣忓ぉ" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="寮�濮嬫棩鏈�" prop="startDate">
+        <el-date-picker v-model="searchForm.startDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫棩鏈�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="缁撴潫鏃ユ湡" prop="endDate">
+        <el-date-picker v-model="searchForm.endDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ョ粨鏉熸棩鏈�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="宸℃缁撴灉  0姝e父 1寮傚父" prop="dealStatus">
+        <el-input v-model="searchForm.dealStatus" placeholder="璇疯緭鍏ュ贰妫�缁撴灉  0姝e父 1寮傚父" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywpatroltask:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:ywpatroltask:create', 'business:ywpatroltask:delete']">
+        <li><el-button type="primary" @click="$refs.operaYwPatrolTaskWindow.open('鏂板缓杩愮淮宸℃浠诲姟淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:ywpatroltask:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywpatroltask:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
+        <el-table-column prop="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="title" label="鏍囬" min-width="100px"></el-table-column>
+        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵�� 0寰呭紑濮� 1杩涜涓� 2宸茶秴鏈� 3宸插畬鎴� 4宸插彇娑�" min-width="100px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="schemeId" label="宸℃璁″垝缂栫爜(鍏宠仈yw_patrol_scheme)" min-width="100px"></el-table-column>
+        <el-table-column prop="pointId" label="宸℃鐐圭紪鐮�(鍏宠仈yw_patrol_point)" min-width="100px"></el-table-column>
+        <el-table-column prop="dealUserId" label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" min-width="100px"></el-table-column>
+        <el-table-column prop="dealDate" label="澶勭悊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="dealInfo" label="澶勭悊澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="circleType" label="寰幆鍛ㄦ湡  0姣忓ぉ 1姣忓懆 2姣忓ぉ" min-width="100px"></el-table-column>
+        <el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="100px"></el-table-column>
+        <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="100px"></el-table-column>
+        <el-table-column prop="dealStatus" label="宸℃缁撴灉  0姝e父 1寮傚父" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:ywpatroltask:update', 'business:ywpatroltask:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaYwPatrolTaskWindow.open('缂栬緫杩愮淮宸℃浠诲姟淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:ywpatroltask:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywpatroltask:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaYwPatrolTaskWindow ref="operaYwPatrolTaskWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaYwPatrolTaskWindow from './components/OperaYwPatrolTaskWindow'
+export default {
+  name: 'YwPatrolTask',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaYwPatrolTaskWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        title: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        schemeId: '',
+        pointId: '',
+        dealUserId: '',
+        dealDate: '',
+        dealInfo: '',
+        circleType: '',
+        startDate: '',
+        endDate: '',
+        dealStatus: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '杩愮淮宸℃浠诲姟淇℃伅琛�',
+      api: '/Inspection/ywPatrolTask',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/business/approvalConfiguration.vue b/admin/src/views/business/approvalConfiguration.vue
deleted file mode 100644
index 56f5133..0000000
--- a/admin/src/views/business/approvalConfiguration.vue
+++ /dev/null
@@ -1,674 +0,0 @@
-<template>
-  <TableLayout>
-    <template v-slot:table-wrap>
-      <el-tabs v-model="activeType" @tab-click="handleClick">
-        <el-tab-pane label="鏅�氳瀹�" name="0"></el-tab-pane>
-        <el-tab-pane label="鏂藉伐璁垮" name="1"></el-tab-pane>
-      </el-tabs>
-      <div class="config">
-        <div class="config_list">
-          <div class="config_list_head">
-            <span>閰嶇疆娴佺▼</span>
-          </div>
-          <div class="config_content">
-            <div class="item">
-              <div class="head">鍙戣捣浜�</div>
-              <div class="content">璁垮</div>
-            </div>
-            <div class="arrows">
-              <div class="line"></div>
-              <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
-            </div>
-            <div v-for="(item, index) in apprList" :key="index">
-              <div class="item yellow" :class="{
-                active: activeIndex == index,
-                blue: item.type == '1',
-              }" @click="flowClick(index)">
-                <div class="head">{{ item.remark }}</div>
-                <div class="content">
-                  <!-- 瀹℃壒 -->
-                  <template v-if="item.type == 0">
-                    <template v-if="item.memberType == '0'">
-                      <div>琚浜�</div>
-                    </template>
-                    <template v-if="item.memberType == '2'">
-                      <div>閮ㄩ棬涓荤</div>
-                    </template>
-                    <template v-if="item.memberType == '1'">
-                      <div v-if="item.objIds && item.objIds.length === 1">
-                        <span>{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span>
-                        <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span>
-                        <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span>
-                      </div>
-                      <div v-else-if="item.objIds && item.objIds.length > 1">
-                        <span>{{ item.objIds[0].name }} 绛�</span>
-                        <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span>
-                        <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span>
-                      </div>
-                      <div v-else>璇烽�夋嫨</div>
-                      <i class="el-icon-arrow-right"></i>
-                    </template>
-                  </template>
-                  <!-- 鎶勯�� -->
-                  <template v-if="item.type == 1">
-                    <div v-if="item.objIds && item.objIds.length === 1">
-                      <span>{{ item.objIds[0].name }}
-                        {{ item.objIds[0].companyName }}</span>
-                    </div>
-                    <div v-else-if="item.objIds && item.objIds.length > 1">
-                      <span>{{ item.objIds[0].name }} 绛�</span>
-                    </div>
-                    <div v-else>璇烽�夋嫨</div>
-                    <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
-                  </template>
-                </div>
-              </div>
-              <div class="arrows">
-                <template v-if="apprList.length - 1 !== index">
-                  <div class="line"></div>
-                  <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
-                </template>
-                <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="config_data">
-          <div class="config_data_item">
-            <div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
-            <div class="df_ac mb10">
-              <div>瀹℃壒鑺傜偣鍚嶇О</div>
-              <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input>
-            </div>
-            <!-- 鎶勯�佷汉 -->
-            <template v-if="apprList[activeIndex].type == '1'">
-              <div class="config_data_item_reviewed_content">
-                <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
-                  class="config_data_item_reviewed_content_item">
-                  <span>{{ mem.name }}</span>
-                  <i @click="memDel(memIndex)" class="el-icon-close"></i>
-                </div>
-                <span class="add" @click="selStaff">+娣诲姞</span>
-              </div>
-            </template>
-            <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType">
-              <el-radio :label="0">琚浜�</el-radio>
-              <el-radio :label="1">鎸囧畾浜哄憳</el-radio>
-              <el-radio :label="2">閮ㄩ棬涓荤</el-radio>
-            </el-radio-group>
-            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1">
-              <div class="config_data_item_reviewed_label">
-                <span>鎸囧畾瀹℃牳浜�</span>
-                <span>涓嶈秴杩�20浜�</span>
-              </div>
-              <div class="config_data_item_reviewed_content">
-                <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
-                  class="config_data_item_reviewed_content_item">
-                  <span>{{ mem.name }}</span>
-                  <i class="el-icon-close" @click="memDel(memIndex)"></i>
-                </div>
-                <span class="add" @click="selStaff">+娣诲姞</span>
-              </div>
-            </div>
-            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2">
-              <div class="config_data_item_reviewed_label">
-                <span>閮ㄩ棬涓荤</span>
-              </div>
-              <div class="config_data_item_reviewed_r">
-                <span>琚浜虹殑</span>
-                <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
-                  <el-option label="鐩存帴涓荤" :value="0" />
-                  <el-option label="浜岀骇涓荤" :value="1" />
-                  <el-option label="涓夌骇涓荤" :value="2" />
-                  <el-option label="鍥涚骇涓荤" :value="4" />
-                </el-select>
-                <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1"
-                  :false-label="0">鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
-              </div>
-            </div>
-          </div>
-          <div class="config_data_item" v-if="
-            (apprList[activeIndex].memberType == 1 ||
-              apprList[activeIndex].memberType == 2) &&
-            apprList[activeIndex].type == '0'
-          ">
-            <div class="config_data_item_label">
-              瀹℃壒鏂瑰紡
-              <span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
-            </div>
-            <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
-              <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
-              <el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
-            </el-radio-group>
-          </div>
-          <div class="config_data_submit">
-            <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe"
-              type="primary">淇濆瓨閰嶇疆椤�</el-button>
-            <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain
-              @click="handleDel">鍒犻櫎鑺傜偣</el-button>
-          </div>
-        </div>
-      </div>
-    </template>
-    <!--  -->
-    <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
-      <div class="staff_modal">
-        <div class="left">
-          <div style="
-              width: 100%;
-              height: 50px;
-              background: rgba(242, 242, 242, 1);
-              line-height: 50px;
-              text-align: center;
-              font-size: 14px;
-            ">
-            浼佷笟缁勭粐鏋舵瀯
-          </div>
-          <div style="width: 100%; max-height: 560px; overflow-y: scroll">
-            <Tree :list="companyTree" :defaultProps="{
-              name: 'name',
-              status: 'fsStatus',
-              children: 'childList',
-              id: 'id',
-            }" @callback="callback" />
-          </div>
-        </div>
-        <el-transfer filterable :title="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
-          filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :right-default-checked="searchForm.objIdsT" :data="memberList" class="transfer">
-        </el-transfer>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
-      </span>
-    </el-dialog>
-  </TableLayout>
-</template>
-
-<script>
-import TableLayout from '@/layouts/TableLayout'
-// import treeTransfer from 'el-tree-transfer'
-import Tree from '@/components/common/Tree'
-import { approveTemplSave, approveTemplByType } from '@/api'
-import { fetchList } from '@/api/business/company'
-import { fetchList as memberListPost } from '@/api/business/member'
-import { getSystemDictData } from '@/api/other/other'
-
-export default {
-  name: 'config',
-  components: {
-    TableLayout,
-    Tree
-  },
-  data() {
-    return {
-      activeType: '0',
-      subLoading: false,
-      apprList: [
-        { remark: '瀹℃壒浜�', active: false, type: '0', objIds: [] },
-        { remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
-      ],
-      activeIndex: 0,
-
-      param: {
-        objIdsT: []
-      },
-      searchForm: {},
-      isShowTransfer: false,
-      memberList: [],
-      companyTree: []
-    }
-  },
-  created() {
-    this.getfindCompanyTreePage()
-    this.initDate()
-  },
-  methods: {
-    handleClick() {
-      this.apprList = []
-      const arr = [
-        { remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] },
-        { remark: '鎶勯�佷汉', active: false, type: 1, objIds: [] }
-      ]
-      this.apprList = [...arr]
-      this.initDate()
-    },
-    flowClick(i) {
-      this.activeIndex = i
-      this.apprList.forEach((item, index) => {
-        if (i === index) {
-          item.active = true
-          console.log("====================", item.objIds)
-          if (item.objIds && item.objIds.length > 0) {
-            const objIds = item.objIds.map(i => {
-              return `${i.id}-${i.name}${i.companyName ? '-' + i.companyName : ''}`
-            })
-            this.$set(this.searchForm, 'objIds', objIds)
-          } else {
-            this.$set(this.searchForm, 'objIds', [])
-          }
-        } else {
-          item.active = false
-        }
-      })
-    },
-    initDate() {
-      const { activeType } = this
-      approveTemplByType(activeType).then(res => {
-        if (res && res.paramList) {
-          const arr = res.paramList || []
-          arr.forEach(item => {
-            if (item.memberList && item.memberList.length > 0) {
-              item.objIds = item.memberList.map(i => {
-                return {
-                  id: i.id,
-                  name: i.name,
-                  companyName: i.companyName
-                }
-              })
-            } else {
-              item.objIds = []
-            }
-          })
-          this.apprList = arr
-          this.flowClick(0)
-          this.$forceUpdate()
-        }
-
-        // console.log(res);
-      })
-    },
-    onSubmit() {
-      const { apprList, activeType } = this
-      const temp = JSON.parse(JSON.stringify(apprList))
-      temp.forEach((item, index) => {
-        item.level = index + 1
-        if (item.objIds && item.objIds.length > 0) {
-          item.objIds = item.objIds.map(i => i.id).join(',')
-        } else {
-          item.objIds = ''
-        }
-      })
-      this.subLoading = true
-      approveTemplSave({
-        type: activeType,
-        paramList: temp
-      }).then(res => {
-        this.subLoading = false
-        this.$tip.success('淇濆瓨鎴愬姛')
-      }, () => {
-        this.subLoading = false
-      })
-    },
-    handleDel() {
-      const { activeIndex } = this
-      this.apprList.splice(activeIndex, 1)
-      this.activeIndex = 0
-    },
-    handleAddAppr() {
-      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, type: 0, objIds: [] })
-      // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
-    },
-
-    // 鑾峰彇缁勭粐鏍�
-    getfindCompanyTreePage() { 
-      fetchList(2)
-        .then(res => {
-          if (res && res.length > 0) {
-            res[0].fsStatus = 1
-            this.companyTree = res
-            // // this.searchForm.erpOrgId = res[0].erpId
-            // this.search()
-            // this.department = this.getDepartmentTree(res)
-          }
-        })
-    },
-    getMemberList() {
-      memberListPost({
-        model: {
-          companyId: this.searchForm.companyId || '',
-          canVisit: '',
-          companyType: 1,
-          erpOrgId: '',
-          hasFace: '',
-          hkStatus: '',
-          includeChild: true,
-          type: 2
-        },
-        page: 1,
-        capacity: 300
-      }).then(res => {
-        this.memberList = res.records || []
-        this.memberList.forEach(item => {
-          item.keyTemp = item.id + '-' + item.name + '-' + item.companyName || ''
-        })
-        // console.log('defaultProps', res)
-      })
-    },
-    callback(row) {
-      console.log(row)
-      this.$set(this.searchForm, 'companyId', row.id)
-      this.$set(this.searchForm, 'erpOrgId', row.erpId)
-      this.$set(this.searchForm, 'objIdsT', this.searchForm.objIds)
-      console.log('searchForm.objIds', this.searchForm.objIds);
-      
-      this.getMemberList()
-    },
-    TransferSub() {
-      const { activeIndex } = this
-      if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
-        if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
-        const arr = this.searchForm.objIds.map(ii => {
-          const obj = ii.split('-')
-          return {
-            id: Number(obj[0]),
-            name: obj[1],
-            companyName: obj[2] || ''
-          }
-        })
-        this.apprList.forEach((item, index) => {
-          if (activeIndex === index) {
-            item.objIds = arr
-          }
-        })
-      }
-      this.isShowTransfer = false
-      console.log(this.searchForm.objIds)
-    },
-    memDel(memIndex) {
-      const { activeIndex } = this
-      this.apprList.forEach((item, index) => {
-        if (activeIndex === index) {
-          item.objIds.splice(memIndex, 1)
-          const objIds = item.objIds.map(i => {
-            return i.id + '-' + i.name
-          })
-          this.$set(this.searchForm, 'objIds', objIds)
-        }
-      })
-    },
-    selStaff() {
-      this.isShowTransfer = true
-      this.getMemberList()
-    },
-    seleItem(i) {
-      this.list.forEach((item, index) => {
-        item.active = index === i
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.config {
-  width: 100%;
-  padding-bottom: 20px;
-  box-sizing: border-box;
-  height: calc(100vh - 140px);
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-
-  .config_list {
-    width: 543px;
-    height: 100%;
-    flex-shrink: 0;
-    border-radius: 2px;
-    padding: 20px;
-    box-sizing: border-box;
-    border: 1px solid #eeeeee;
-    background: #f7f7f7;
-
-    .config_list_head {
-      width: 100%;
-      height: 40px;
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-
-      span {
-        font-size: 18px;
-        font-weight: 500;
-        color: #222222;
-      }
-    }
-
-    .config_content {
-      width: 100%;
-      height: calc(100% - 40px);
-      padding-top: 45px;
-      box-sizing: border-box;
-      overflow-y: scroll;
-      display: flex;
-      align-items: center;
-      flex-direction: column;
-
-      &::-webkit-scrollbar {
-        width: 0;
-      }
-
-      .active {
-        border: 2px solid #4456ac !important;
-      }
-
-      .yellow {
-        background: #e89e42 !important;
-      }
-
-      .blue {
-        background: #5094f3 !important;
-      }
-
-      .arrows {
-        display: flex;
-        flex-direction: column;
-        align-items: center;
-        position: relative;
-
-        .line {
-          width: 1px;
-          height: 60px;
-          background-color: #ccc;
-        }
-
-        .add {
-          font-size: 40px;
-          color: #2080f7;
-          position: absolute;
-          cursor: pointer;
-          z-index: 999;
-          top: 10px;
-        }
-
-        img {
-          width: 12px;
-        }
-      }
-
-      .item {
-        width: 200px;
-        cursor: pointer;
-        border: 2px solid #f7f7f7;
-        height: 80px;
-        background: #4456ac;
-        border-radius: 2px;
-        position: relative;
-        display: flex;
-        flex-direction: column;
-
-        .head {
-          height: 32px;
-          line-height: 32px;
-          padding: 2px 12px;
-          color: #fff;
-        }
-
-        .content {
-          flex: 1;
-          background-color: #fff;
-          display: flex;
-          align-items: center;
-          padding: 0 12px;
-          justify-content: space-between;
-        }
-
-        &:last-child {
-          margin: 0 !important;
-        }
-      }
-    }
-  }
-
-  .config_data {
-    flex: 1;
-    height: 100%;
-    margin-left: 20px;
-
-    .config_data_submit {
-      margin-top: 50px;
-    }
-
-    .config_data_item {
-      width: 100%;
-      display: flex;
-      flex-direction: column;
-      margin-bottom: 30px;
-
-      &:last-child {
-        margin: 0 !important;
-      }
-
-      .config_data_item_label {
-        font-size: 16px;
-        font-weight: 500;
-        color: #222222;
-        margin-bottom: 20px;
-
-        span {
-          font-size: 12px;
-          font-weight: 400;
-          color: #999999;
-          margin-left: 10px;
-        }
-      }
-
-      .config_data_item_reviewed {
-        width: 100%;
-        margin-top: 20px;
-
-        .config_data_item_reviewed_r {
-          margin-top: 10px;
-          width: 100%;
-          display: flex;
-          align-items: center;
-
-          span {
-            flex-shrink: 0;
-            font-size: 14px;
-            font-weight: 400;
-            color: #666666;
-          }
-        }
-
-        .config_data_item_reviewed_label {
-          display: flex;
-          align-items: center;
-
-          span {
-            &:nth-child(1) {
-              font-size: 14px;
-              font-weight: 400;
-              color: #222222;
-            }
-
-            &:nth-child(2) {
-              font-size: 12px;
-              font-weight: 400;
-              color: #999999;
-              margin-left: 8px;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-.config_data_item_reviewed_content {
-  width: 400px;
-  margin-top: 10px;
-  height: 110px;
-  padding: 12px;
-  box-sizing: border-box;
-  border-radius: 2px;
-  border: 1px solid #dfe2e8;
-  display: flex;
-  align-items: flex-start;
-  flex-wrap: wrap;
-
-  .add {
-    font-size: 12px;
-    font-weight: 400;
-    color: #435ebe;
-    cursor: pointer;
-    margin-top: 3px;
-  }
-
-  .config_data_item_reviewed_content_item {
-    padding: 3px 5px;
-    background: #f4f7fc;
-    border-radius: 2px;
-    box-sizing: border-box;
-    margin-right: 10px;
-    margin-bottom: 10px;
-
-    span {
-      font-size: 12px;
-      font-weight: 400;
-      color: #333333;
-    }
-
-    i {
-      color: #949ba2;
-      margin-left: 10px;
-      cursor: pointer;
-    }
-  }
-}
-
-.staff_modal {
-  display: flex;
-
-  .left {
-    width: 300px;
-    margin-right: 20px;
-  }
-
-  .transfer {
-    height: 600px;
-    width: 100%;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-
-    ::v-deep .el-transfer-panel {
-      flex: 1;
-      height: 100%;
-    }
-
-    ::v-deep .el-transfer-panel__body {
-      height: 500px;
-    }
-
-    ::v-deep .el-transfer-panel__list.is-filterable {
-      height: 480px;
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/business/approvalReport.vue b/admin/src/views/business/approvalReport.vue
deleted file mode 100644
index d37953a..0000000
--- a/admin/src/views/business/approvalReport.vue
+++ /dev/null
@@ -1,653 +0,0 @@
-<template>
-  <TableLayout>
-    <template v-slot:table-wrap>
-      <div class="config">
-        <div class="config_list">
-          <div class="config_list_head">
-            <span>閰嶇疆娴佺▼</span>
-          </div>
-          <div class="config_content">
-            <div class="item">
-              <div class="head">鍙戣捣浜�</div>
-              <div class="content">琚浜�</div>
-            </div>
-            <div class="arrows">
-              <div class="line"></div>
-              <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
-            </div>
-            <div v-for="(item, index) in apprList" :key="index">
-              <div class="item yellow" :class="{
-                active: activeIndex == index,
-                blue: item.type == '1',
-              }" @click="flowClick(index)">
-                <div class="head">{{ item.remark }}</div>
-                <div class="content">
-                  <!-- 瀹℃壒 -->
-                  <template v-if="item.type == 0">
-                    <template v-if="item.memberType == '0'">
-                      <div>琚浜�</div>
-                    </template>
-                    <template v-if="item.memberType == '2'">
-                      <div>閮ㄩ棬涓荤</div>
-                    </template>
-                    <template v-if="item.memberType == '1'">
-                      <div v-if="item.objIds && item.objIds.length === 1">
-                        <span>{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span>
-                        <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span>
-                        <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span>
-                      </div>
-                      <div v-else-if="item.objIds && item.objIds.length > 1">
-                        <span>{{ item.objIds[0].name }} 绛�</span>
-                        <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span>
-                        <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span>
-                      </div>
-                      <div v-else>璇烽�夋嫨</div>
-                      <i class="el-icon-arrow-right"></i>
-                    </template>
-                  </template>
-                  <!-- 鎶勯�� -->
-                  <template v-if="item.type == 1">
-                    <div v-if="item.objIds && item.objIds.length === 1">
-                      <span>{{ item.objIds[0].name }}
-                        {{ item.objIds[0].companyName }}</span>
-                    </div>
-                    <div v-else-if="item.objIds && item.objIds.length > 1">
-                      <span>{{ item.objIds[0].name }} 绛�</span>
-                    </div>
-                    <div v-else>璇烽�夋嫨</div>
-                    <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
-                  </template>
-                </div>
-              </div>
-              <div class="arrows">
-                <template v-if="apprList.length - 1 !== index">
-                  <div class="line"></div>
-                  <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
-                </template>
-                <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="config_data">
-          <div class="config_data_item">
-            <div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
-            <div class="df_ac mb10">
-              <div>瀹℃壒鑺傜偣鍚嶇О</div>
-              <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input>
-            </div>
-            <!-- 鎶勯�佷汉 -->
-            <template v-if="apprList[activeIndex].type == '1'">
-              <div class="config_data_item_reviewed_content">
-                <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
-                  class="config_data_item_reviewed_content_item">
-                  <span>{{ mem.name }}</span>
-                  <i @click="memDel(memIndex)" class="el-icon-close"></i>
-                </div>
-                <span class="add" @click="selStaff">+娣诲姞</span>
-              </div>
-            </template>
-            <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType">
-              <el-radio :label="0">琚浜�</el-radio>
-              <el-radio :label="1">鎸囧畾浜哄憳</el-radio>
-              <el-radio :label="2">閮ㄩ棬涓荤</el-radio>
-            </el-radio-group>
-            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1">
-              <div class="config_data_item_reviewed_label">
-                <span>鎸囧畾瀹℃牳浜�</span>
-                <span>涓嶈秴杩�20浜�</span>
-              </div>
-              <div class="config_data_item_reviewed_content">
-                <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id"
-                  class="config_data_item_reviewed_content_item">
-                  <span>{{ mem.name }}</span>
-                  <i class="el-icon-close" @click="memDel(memIndex)"></i>
-                </div>
-                <span class="add" @click="selStaff">+娣诲姞</span>
-              </div>
-            </div>
-            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2">
-              <div class="config_data_item_reviewed_label">
-                <span>閮ㄩ棬涓荤</span>
-              </div>
-              <div class="config_data_item_reviewed_r">
-                <span>琚浜虹殑</span>
-                <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
-                  <el-option label="鐩存帴涓荤" :value="0" />
-                  <el-option label="浜岀骇涓荤" :value="1" />
-                  <el-option label="涓夌骇涓荤" :value="2" />
-                  <el-option label="鍥涚骇涓荤" :value="4" />
-                </el-select>
-                <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1"
-                  :false-label="0">鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
-              </div>
-            </div>
-          </div>
-          <div class="config_data_item" v-if="
-            (apprList[activeIndex].memberType == 1 ||
-              apprList[activeIndex].memberType == 2) &&
-            apprList[activeIndex].type == '0'
-          ">
-            <div class="config_data_item_label">
-              瀹℃壒鏂瑰紡
-              <span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
-            </div>
-            <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
-              <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
-              <el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
-            </el-radio-group>
-          </div>
-          <div class="config_data_submit">
-            <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe"
-              type="primary">淇濆瓨閰嶇疆椤�</el-button>
-            <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain
-              @click="handleDel">鍒犻櫎鑺傜偣</el-button>
-          </div>
-        </div>
-      </div>
-    </template>
-    <!--  -->
-    <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
-      <div class="staff_modal">
-        <div class="left">
-          <div style="
-              width: 100%;
-              height: 50px;
-              background: rgba(242, 242, 242, 1);
-              line-height: 50px;
-              text-align: center;
-              font-size: 14px;
-            ">
-            浼佷笟缁勭粐鏋舵瀯
-          </div>
-          <div style="width: 100%; max-height: 560px; overflow-y: scroll">
-            <Tree :list="companyTree" :defaultProps="{
-              name: 'name',
-              status: 'fsStatus',
-              children: 'childList',
-              id: 'id',
-            }" @callback="callback" />
-          </div>
-        </div>
-        <el-transfer filterable :title="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
-          filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :data="memberList" class="transfer">
-        </el-transfer>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
-      </span>
-    </el-dialog>
-  </TableLayout>
-</template>
-
-<script>
-import TableLayout from '@/layouts/TableLayout'
-// import treeTransfer from 'el-tree-transfer'
-import Tree from '@/components/common/Tree'
-import { approveTemplSave, approveTemplByType } from '@/api'
-import { fetchList } from '@/api/business/company'
-import { fetchList as memberListPost } from '@/api/business/member'
-export default {
-  name: 'config',
-  components: {
-    TableLayout,
-    Tree
-  },
-  data() {
-    return {
-      activeType: '2',
-      subLoading: false,
-      apprList: [
-        { remark: '瀹℃壒浜�', active: false, type: '0', objIds: [] },
-        { remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
-      ],
-      activeIndex: 0,
-
-      param: {},
-      searchForm: {},
-      isShowTransfer: false,
-      memberList: [],
-      companyTree: []
-    }
-  },
-  created() {
-    this.getfindCompanyTreePage()
-    this.initDate()
-  },
-  methods: {
-    flowClick(i) {
-      this.activeIndex = i
-      this.apprList.forEach((item, index) => {
-        if (i === index) {
-          item.active = true
-          if (item.objIds && item.objIds.length > 0) {
-            const objIds = item.objIds.map(i => {
-              return `${i.id}-${i.name}${i.companyName ? '-' + i.companyName : ''}`
-            })
-            this.$set(this.searchForm, 'objIds', objIds)
-          } else {
-            this.$set(this.searchForm, 'objIds', [])
-          }
-        } else {
-          item.active = false
-        }
-      })
-    },
-    initDate() {
-      const { activeType } = this
-      approveTemplByType(activeType).then(res => {
-        if (res && res.paramList) {
-          const arr = res.paramList || []
-          arr.forEach(item => {
-            if (item.memberList && item.memberList.length > 0) {
-              item.objIds = item.memberList.map(i => {
-                return {
-                  id: i.id,
-                  name: i.name,
-                  companyName: i.companyName
-                }
-              })
-            } else {
-              item.objIds = []
-            }
-          })
-          this.apprList = arr
-          this.flowClick(0)
-          this.$forceUpdate()
-        }
-
-        // console.log(res);
-      })
-    },
-    onSubmit() {
-      const { apprList, activeType } = this
-      const temp = JSON.parse(JSON.stringify(apprList))
-      temp.forEach((item, index) => {
-        item.level = index + 1
-        if (item.objIds && item.objIds.length > 0) {
-          item.objIds = item.objIds.map(i => i.id).join(',')
-        } else {
-          item.objIds = ''
-        }
-      })
-      this.subLoading = true
-      approveTemplSave({
-        type: activeType,
-        paramList: temp
-      }).then(res => {
-        this.subLoading = false
-        this.$tip.success('淇濆瓨鎴愬姛')
-      }, () => {
-        this.subLoading = false
-      })
-    },
-    handleDel() {
-      const { activeIndex } = this
-      this.apprList.splice(activeIndex, 1)
-      this.activeIndex = 0
-    },
-    handleAddAppr() {
-      this.apprList.splice(this.apprList.length - 2, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, type: 0, objIds: [] })
-      // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
-    },
-
-    // 鑾峰彇缁勭粐鏍�
-    getfindCompanyTreePage() {
-      fetchList()
-        .then(res => {
-          if (res && res.length > 0) {
-            res[0].fsStatus = 1
-            this.companyTree = res
-            // // this.searchForm.erpOrgId = res[0].erpId
-            // this.search()
-            // this.department = this.getDepartmentTree(res)
-          }
-        })
-    },
-    getMemberList() {
-      memberListPost({
-        model: {
-          companyId: this.searchForm.companyId || '',
-          canVisit: '',
-          companyType: 1,
-          erpOrgId: '',
-          hasFace: '',
-          hkStatus: '',
-          includeChild: true,
-          type: 2
-        },
-        page: 1,
-        capacity: 300
-      }).then(res => {
-        this.memberList = res.records || []
-        this.memberList.forEach(item => {
-          item.keyTemp = item.id + '-' + item.name + '-' + item.companyName || ''
-        })
-        // console.log('defaultProps', res)
-      })
-    },
-    callback(row) {
-      console.log(row)
-      this.$set(this.searchForm, 'companyId', row.id)
-      this.$set(this.searchForm, 'erpOrgId', row.erpId)
-      this.getMemberList()
-    },
-    TransferSub() {
-      const { activeIndex } = this
-      if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
-        if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
-        const arr = this.searchForm.objIds.map(ii => {
-          const obj = ii.split('-')
-          return {
-            id: Number(obj[0]),
-            name: obj[1],
-            companyName: obj[2] || ''
-          }
-        })
-        this.apprList.forEach((item, index) => {
-          if (activeIndex === index) {
-            item.objIds = arr
-          }
-        })
-      }
-      this.isShowTransfer = false
-      console.log(this.searchForm.objIds)
-    },
-    memDel(memIndex) {
-      const { activeIndex } = this
-      this.apprList.forEach((item, index) => {
-        if (activeIndex === index) {
-          item.objIds.splice(memIndex, 1)
-          const objIds = item.objIds.map(i => {
-            return i.id + '-' + i.name
-          })
-          this.$set(this.searchForm, 'objIds', objIds)
-        }
-      })
-    },
-    selStaff() {
-      this.isShowTransfer = true
-      this.getMemberList()
-    },
-    seleItem(i) {
-      this.list.forEach((item, index) => {
-        item.active = index === i
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.config {
-  width: 100%;
-  padding-bottom: 20px;
-  box-sizing: border-box;
-  height: calc(100vh - 140px);
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-
-  .config_list {
-    width: 543px;
-    height: 100%;
-    flex-shrink: 0;
-    border-radius: 2px;
-    padding: 20px;
-    box-sizing: border-box;
-    border: 1px solid #eeeeee;
-    background: #f7f7f7;
-
-    .config_list_head {
-      width: 100%;
-      height: 40px;
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-
-      span {
-        font-size: 18px;
-        font-weight: 500;
-        color: #222222;
-      }
-    }
-
-    .config_content {
-      width: 100%;
-      height: calc(100% - 40px);
-      padding-top: 45px;
-      box-sizing: border-box;
-      overflow-y: scroll;
-      display: flex;
-      align-items: center;
-      flex-direction: column;
-
-      &::-webkit-scrollbar {
-        width: 0;
-      }
-
-      .active {
-        border: 2px solid #4456ac !important;
-      }
-
-      .yellow {
-        background: #e89e42 !important;
-      }
-
-      .blue {
-        background: #5094f3 !important;
-      }
-
-      .arrows {
-        display: flex;
-        flex-direction: column;
-        align-items: center;
-        position: relative;
-
-        .line {
-          width: 1px;
-          height: 60px;
-          background-color: #ccc;
-        }
-
-        .add {
-          font-size: 40px;
-          color: #2080f7;
-          position: absolute;
-          cursor: pointer;
-          z-index: 999;
-          top: 10px;
-        }
-
-        img {
-          width: 12px;
-        }
-      }
-
-      .item {
-        width: 200px;
-        cursor: pointer;
-        border: 2px solid #f7f7f7;
-        height: 80px;
-        background: #4456ac;
-        border-radius: 2px;
-        position: relative;
-        display: flex;
-        flex-direction: column;
-
-        .head {
-          height: 32px;
-          line-height: 32px;
-          padding: 2px 12px;
-          color: #fff;
-        }
-
-        .content {
-          flex: 1;
-          background-color: #fff;
-          display: flex;
-          align-items: center;
-          padding: 0 12px;
-          justify-content: space-between;
-        }
-
-        &:last-child {
-          margin: 0 !important;
-        }
-      }
-    }
-  }
-
-  .config_data {
-    flex: 1;
-    height: 100%;
-    margin-left: 20px;
-
-    .config_data_submit {
-      margin-top: 50px;
-    }
-
-    .config_data_item {
-      width: 100%;
-      display: flex;
-      flex-direction: column;
-      margin-bottom: 30px;
-
-      &:last-child {
-        margin: 0 !important;
-      }
-
-      .config_data_item_label {
-        font-size: 16px;
-        font-weight: 500;
-        color: #222222;
-        margin-bottom: 20px;
-
-        span {
-          font-size: 12px;
-          font-weight: 400;
-          color: #999999;
-          margin-left: 10px;
-        }
-      }
-
-      .config_data_item_reviewed {
-        width: 100%;
-        margin-top: 20px;
-
-        .config_data_item_reviewed_r {
-          margin-top: 10px;
-          width: 100%;
-          display: flex;
-          align-items: center;
-
-          span {
-            flex-shrink: 0;
-            font-size: 14px;
-            font-weight: 400;
-            color: #666666;
-          }
-        }
-
-        .config_data_item_reviewed_label {
-          display: flex;
-          align-items: center;
-
-          span {
-            &:nth-child(1) {
-              font-size: 14px;
-              font-weight: 400;
-              color: #222222;
-            }
-
-            &:nth-child(2) {
-              font-size: 12px;
-              font-weight: 400;
-              color: #999999;
-              margin-left: 8px;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-.config_data_item_reviewed_content {
-  width: 400px;
-  margin-top: 10px;
-  height: 110px;
-  padding: 12px;
-  box-sizing: border-box;
-  border-radius: 2px;
-  border: 1px solid #dfe2e8;
-  display: flex;
-  align-items: flex-start;
-  flex-wrap: wrap;
-
-  .add {
-    font-size: 12px;
-    font-weight: 400;
-    color: #435ebe;
-    cursor: pointer;
-    margin-top: 3px;
-  }
-
-  .config_data_item_reviewed_content_item {
-    padding: 3px 5px;
-    background: #f4f7fc;
-    border-radius: 2px;
-    box-sizing: border-box;
-    margin-right: 10px;
-    margin-bottom: 10px;
-
-    span {
-      font-size: 12px;
-      font-weight: 400;
-      color: #333333;
-    }
-
-    i {
-      color: #949ba2;
-      margin-left: 10px;
-      cursor: pointer;
-    }
-  }
-}
-
-.staff_modal {
-  display: flex;
-
-  .left {
-    width: 300px;
-    margin-right: 20px;
-  }
-
-  .transfer {
-    height: 600px;
-    width: 100%;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-
-    ::v-deep .el-transfer-panel {
-      flex: 1;
-      height: 100%;
-    }
-
-    ::v-deep .el-transfer-panel__body {
-      height: 500px;
-    }
-
-    ::v-deep .el-transfer-panel__list.is-filterable {
-      height: 480px;
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/business/blackmailPersonnel.vue b/admin/src/views/business/blackmailPersonnel.vue
deleted file mode 100644
index 5093b78..0000000
--- a/admin/src/views/business/blackmailPersonnel.vue
+++ /dev/null
@@ -1,149 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:member:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="缁勭粐鍚嶇О" prop="companyName">
-                <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鎿嶄綔浜哄憳" prop="createrId">
-                <el-select v-model="searchForm.createrId" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in user"
-                        :key="item.id"
-                        :label="item.name"
-                        :value="item.id">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-<!--            <el-form-item label="浜哄憳绫诲瀷" prop="type">-->
-<!--                <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">-->
-<!--                    <el-option label="璁垮" value="1"></el-option>-->
-<!--                    <el-option label="鍔冲姟" value="0"></el-option>-->
-<!--                </el-select>-->
-<!--            </el-form-item>-->
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
-                <li><el-button type="primary" v-permissions="['business:member:create']" @click="thaws">绉诲嚭</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
-                <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="idcardDecode" label="韬唤璇佸彿鐮�" min-width="100px"></el-table-column>
-                <el-table-column label="浜哄憳绫诲瀷" min-width="100px">
-                    <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="visitCompanyName" label="缁勭粐" min-width="100px"></el-table-column>
-                <el-table-column prop="optRemark" label="鎿嶄綔淇℃伅" min-width="300px"></el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:member:update', 'business:member:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']" @click="thaw(row.id)">绉诲嚭</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import { findAllList } from '@/api/system/common'
-import { updateRemoveBlackById } from '@/api/business/block'
-export default {
-  name: 'blackmailPersonnel',
-  extends: BaseTable,
-  components: { TableLayout, Pagination },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        companyName: '',
-        name: '',
-        createrId: '',
-        type: 1
-      },
-      user: []
-    }
-  },
-  created () {
-    this.config({
-      module: '浜哄憳淇℃伅琛�',
-      api: '/business/block',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.getUser()
-  },
-  methods: {
-    thaws () {
-      if (this.tableData.selectedRows.length === 0) return this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
-      const ids = this.tableData.selectedRows.map(item => {
-        return item.id
-      })
-      updateRemoveBlackById(ids.join(','))
-        .then(res => {
-          this.$message.success('鎿嶄綔鎴愬姛')
-          this.search()
-        })
-    },
-    thaw (ids) {
-      this.$confirm('纭畾绉诲嚭姝ょ敤鎴峰悧?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        updateRemoveBlackById(ids)
-          .then(res => {
-            this.$message.success('鎿嶄綔鎴愬姛')
-            this.search()
-          })
-      }).catch(() => {
-
-      })
-    },
-    getUser () {
-      findAllList({})
-        .then(res => {
-          this.user = res.map(item => {
-            return {
-              name: item.realname,
-              id: item.id
-            }
-          })
-        })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/business/company.vue b/admin/src/views/business/company.vue
deleted file mode 100644
index 0f40089..0000000
--- a/admin/src/views/business/company.vue
+++ /dev/null
@@ -1,114 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:company:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="缁勭粐鍚嶇О" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="缁勭粐绫诲瀷" prop="type" @keypress.enter.native="search">
-                <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
-                    <el-option label="鍔冲姟缁勭粐" value="0"></el-option>
-                    <el-option label="鍐呴儴缁勭粐" value="1"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鑱旂郴浜哄鍚�" prop="linkName">
-                <el-input v-model="searchForm.linkName" placeholder="璇疯緭鍏ヨ仈绯讳汉濮撳悕" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鑱旂郴鐢佃瘽" prop="linkPhone">
-                <el-input v-model="searchForm.linkPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:company:create', 'business:company:delete']">
-                <li><el-button type="primary" @click="$refs.operaCompanyWindow.open('鏂板')" icon="el-icon-plus" v-permissions="['business:company:create']">鏂板缓</el-button></li>
-<!--                <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:company:delete']">鍒犻櫎</el-button></li>-->
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="name" label="缁勭粐" min-width="100px"></el-table-column>
-                <el-table-column prop="type" label="缁勭粐绫诲瀷" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.type === 0">鍔冲姟缁勭粐</span>
-                        <span v-if="row.type === 1">鍐呴儴缁勭粐</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="code" label="缁勭粐缂栫爜" min-width="100px"></el-table-column>
-                <el-table-column prop="num" label="鍔冲姟浜烘暟" min-width="100px"></el-table-column>
-                <el-table-column prop="linkName" label="璐熻矗浜�" min-width="100px"></el-table-column>
-                <el-table-column prop="linkPhone" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column>
-                <el-table-column prop="status" label="鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <el-switch
-                            v-model="row.status"
-                            active-color="#13ce66"
-                            inactive-color="#ff4949">
-                        </el-switch>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-                <el-table-column prop="creator" label="鍒涘缓浜�" min-width="100px"></el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:company:update', 'business:company:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="$refs.operaCompanyWindow.open('缂栬緫', row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>
-                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:company:delete']">鍒犻櫎</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaCompanyWindow ref="operaCompanyWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCompanyWindow from '@/components/business/OperaCompanyWindow'
-export default {
-  name: 'Company',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCompanyWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        type: '',
-        linkName: '',
-        linkPhone: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '浼佷笟淇℃伅琛�',
-      api: '/business/company',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  }
-}
-</script>
diff --git a/admin/src/views/business/deletePersonnel.vue b/admin/src/views/business/deletePersonnel.vue
deleted file mode 100644
index 8a06251..0000000
--- a/admin/src/views/business/deletePersonnel.vue
+++ /dev/null
@@ -1,155 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:member:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyword">
-                <el-input v-model="searchForm.keyword" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="缁勭粐鍚嶇О" prop="companyName">
-                <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-          <el-form-item label="涓嬪彂鐘舵��" prop="sendStatus">
-            <el-select v-model="searchForm.hkStatus" placeholder="璇烽�夋嫨" clearable @change="search">
-              <el-option label="寰呬笅鍙�" value="0"></el-option>
-              <el-option label="宸插悓姝�" value="1"></el-option>
-              <el-option label="鍚屾澶辫触" value="2"></el-option>
-              <el-option label="涓嶇鍚堜笅鍙戞潯浠�" value="3"></el-option>
-              <el-option label="绛夊緟鍒犻櫎鏉冮檺" value="4"></el-option>
-            </el-select>
-          </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
-                <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="companyName" label="缁勭粐鍚嶇О" min-width="100px"></el-table-column>
-                <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px">
-                    <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 fixed="right" label="浜鸿劯淇℃伅" min-width="100px">
-                <template slot-scope="{row}">
-                  <el-image
-                      v-if="row.faceImg"
-                      style="width: 60px; height: 60px"
-                      :src="row.faceImg"
-                      :preview-src-list="[row.faceImg]">
-                  </el-image>
-                </template>
-              </el-table-column>
-                <el-table-column label="鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.hkStatus === 0">鏈悓姝�</span>
-                        <span v-else-if="row.hkStatus === 1">宸插悓姝�</span>
-                        <span v-else-if="row.hkStatus === 2">鍚屾澶辫触</span>
-                        <span v-else-if="row.hkStatus === 3">涓嶇鍚堜笅鍙戞潯浠�</span>
-                        <span v-else-if="row.hkStatus === 4">绛夊緟鍒犻櫎鏉冮檺</span>
-                    </template>
-                </el-table-column>
-                  <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>-
-                  <el-table-column
-                      v-if="containPermissions(['business:member:update'])"
-                      label="鎿嶄綔"
-                      min-width="120"
-                      fixed="right"
-                  >
-                    <template slot-scope="{row}">
-                      <el-button v-if="row.hkStatus === 2" type="text" @click="delHkForce(row.id)" v-permissions="['business:member:update']">閲嶆柊鍒犻櫎</el-button>
-                      <el-button v-if="row.hkStatus === 4  " type="text" @click="delHkForce(row.id)" v-permissions="['business:member:update']">绔嬪嵆鍒犻櫎</el-button>
-                    </template>
-                  </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-    </TableLayout>
-</template>
-
-<script>
-  import BaseTable from '@/components/base/BaseTable'
-  import TableLayout from '@/layouts/TableLayout'
-  import Pagination from '@/components/common/Pagination'
-  import { delHkForce } from '@/api/business/member'
-  export default {
-    name: 'deletePersonnel',
-    extends: BaseTable,
-    components: { TableLayout, Pagination },
-    data () {
-      return {
-        // 鎼滅储
-        searchForm: {
-          companyName: '',
-          keyword: '',
-          type: '2',
-          isdeleted: 1,
-          hkStatus: null
-        },
-        user: []
-      }
-    },
-    created () {
-      this.config({
-        module: '浜哄憳淇℃伅琛�',
-        api: '/business/member',
-        'field.id': 'id',
-        'field.main': 'id'
-      })
-      this.search()
-    },
-    methods: {
-      delHkForce(dataId) {
-        this.$confirm('纭畾寮哄埗鍒犻櫎瀹夐槻骞冲彴浜哄憳淇℃伅鍚楋紵姝ゆ搷浣滀笉鍙�嗭紝璇疯皑鎱庢搷浣滐紝鏄惁缁х画?', '鎻愮ず', {
-          confirmButtonText: '纭畾',
-          cancelButtonText: '鍙栨秷',
-          type: 'warning'
-        }).then(() => {
-          delHkForce({id:dataId})
-            .then(res => {
-              this.search()
-            })
-        }).catch(() => {
-
-        });
-      },
-      // thaws () {
-      //   if (this.tableData.selectedRows.length === 0) return this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
-      //   const ids = this.tableData.selectedRows.map(item => {
-      //     return { id: item.id }
-      //   })
-      //   this.thaw(ids)
-      // },
-      // thaw (ids) {
-      //   this.$confirm('纭畾绉婚櫎姝ょ敤鎴峰悧?', '鎻愮ず', {
-      //     confirmButtonText: '纭畾',
-      //     cancelButtonText: '鍙栨秷',
-      //     type: 'warning'
-      //   }).then(() => {
-      //     // updateRemoveStatusById(ids)
-      //     //   .then(res => {
-      //     //     this.$message.success('鎿嶄綔鎴愬姛')
-      //     //     this.search()
-      //     //   })
-      //   }).catch(() => {
-      //
-      //   })
-      // },
-    }
-  }
-</script>
diff --git a/admin/src/views/business/empower.vue b/admin/src/views/business/empower.vue
deleted file mode 100644
index 5be2ce0..0000000
--- a/admin/src/views/business/empower.vue
+++ /dev/null
@@ -1,182 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:empower:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="濮撳悕鎵嬫満鍙�" prop="memberName">
-                <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="涓嬪彂鐘舵��" prop="sendStatus">
-                <el-select v-model="searchForm.sendStatus" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="寰呬笅鍙�" value="0"></el-option>
-                    <el-option label="浠诲姟鎵ц" value="1"></el-option>
-                    <el-option label="涓嬪彂鎴愬姛" value="2"></el-option>
-                    <el-option label="宸插彇娑�" value="3"></el-option>
-                    <el-option label="涓嬪彂澶辫触" value="4"></el-option>
-                    <el-option label="浠诲姟涓嬭浇宸茬粨鏉�" value="5"></el-option>
-                    <el-option label="涓嶇鍚堜笅鍙戞潯浠�" value="6"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="缁勭粐" prop="companyName">
-                <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="璁惧鍚嶇О" prop="deviceName">
-                <el-input v-model="searchForm.deviceName" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="涓嬪彂璧峰鏃堕棿" prop="startTime">
-                <el-date-picker
-                    @change="seleTime"
-                    v-model="time"
-                    @keypress.enter.native="search"
-                    type="datetimerange"
-                    format="yyyy-MM-dd HH:mm:ss"
-                    value-format="yyyy-MM-dd HH:mm:ss"
-                    range-separator="鑷�"
-                    start-placeholder="寮�濮嬫棩鏈�"
-                    end-placeholder="缁撴潫鏃ユ湡">
-                </el-date-picker>
-            </el-form-item>
-            <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
-                <el-radio-button label="0">褰撳ぉ</el-radio-button>
-                <el-radio-button label="1">杩�7澶�</el-radio-button>
-                <el-radio-button label="2">杩�30澶�</el-radio-button>
-            </el-radio-group>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:empower:create', 'business:empower:delete']">
-                <li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
-<!--                <li><el-button type="primary" v-permissions="['business:empower:create']">绔嬪嵆涓嬪彂</el-button></li>-->
-<!--                <li><el-button type="primary" v-permissions="['business:empower:create']">鍙栨秷涓嬪彂</el-button></li>-->
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="memberName" label="濮撳悕" min-width="80px"></el-table-column>
-                <el-table-column prop="memberPhone" label="鎵嬫満鍙�" min-width="120px"></el-table-column>
-                <el-table-column prop="memberidCard" label="韬唤璇佸彿鐮�" min-width="130px"></el-table-column>
-                <el-table-column prop="companyName" label="鎵�灞炵粍缁�" min-width="150px"></el-table-column>
-                <el-table-column prop="deviceName" label="璁惧鍚嶇О" min-width="150px"></el-table-column>
-                <el-table-column label="闂ㄧ鏈夋晥鏈�" min-width="170px">
-                    <template slot-scope="{row}">
-                        <span v-if="!row.startTime || !row.endTime">闀挎湡</span>
-                        <div v-else>
-                            <span>璧凤細{{row.startTime}}</span><br />
-                            <span>姝細{{row.endTime}}</span>
-                        </div>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="150px"></el-table-column>
-                <el-table-column label="鏄惁鍒犻櫎" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span style="color: green;" v-if="row.isdeleted === 0">鍚�</span>
-                        <span style="color: red;" v-if="row.isdeleted === 1">鏄�</span>
-                    </template>
-                </el-table-column>
-<!--                <el-table-column prop="createrName" label="鎿嶄綔浜哄憳" min-width="100px"></el-table-column>-->
-                <el-table-column label="涓嬪彂鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.sendStatus === 0">寰呬笅鍙�</span>
-                        <span v-if="row.sendStatus === 1">浠诲姟鎵ц</span>
-                        <span v-if="row.sendStatus === 2">涓嬪彂鎴愬姛</span>
-                        <span v-if="row.sendStatus === 3">宸插彇娑�</span>
-                        <span v-if="row.sendStatus === 4">涓嬪彂澶辫触</span>
-                        <span v-if="row.sendStatus === 5">浠诲姟涓嬭浇宸茬粨鏉�</span>
-                        <span v-if="row.sendStatus === 6">涓嶇鍚堜笅鍙戞潯浠�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="sendType" label="涓嬪彂绫诲瀷" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.sendType === 0">瀹炴椂</span>
-                        <span v-if="row.sendType === 1">瀹氭椂</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="sendDate" label="涓嬪彂鏃堕棿" min-width="150px"></el-table-column>
-                <el-table-column prop="sendInfo" label="涓嬪彂澶囨敞" min-width="150px"></el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import { timeForMat } from '@/utils/util'
-export default {
-  name: 'Empower',
-  extends: BaseTable,
-  components: { TableLayout, Pagination },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        memberName: '',
-        companyName: '',
-        sendStartDate: '',
-        sendEndDate: '',
-        startTime: '',
-        endTime: '',
-        sendStatus: '',
-        radio: null,
-        deviceName: ''
-      },
-      time: []
-    }
-  },
-  created () {
-    this.config({
-      module: '浜哄憳鎺堟潈瀵煎叆璁板綍',
-      api: '/business/empower',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.changeRadio('0')
-    this.search()
-  },
-  methods: {
-    changeRadio (e) {
-      this.searchForm.radio = e
-      if (e === '0') {
-        this.searchForm.sendStartDate = timeForMat(0)[0]
-        this.searchForm.sendEndDate = timeForMat(0)[1]
-        this.time = timeForMat(0)
-      } else if (e === '1') {
-        this.searchForm.sendStartDate = timeForMat(6)[0]
-        this.searchForm.sendEndDate = timeForMat(6)[1]
-        this.time = timeForMat(6)
-      } else if (e === '2') {
-        this.searchForm.sendStartDate = timeForMat(29)[0]
-        this.searchForm.sendEndDate = timeForMat(29)[1]
-        this.time = timeForMat(29)
-      }
-      this.search()
-    },
-    seleTime (e) {
-      this.searchForm.sendStartDate = e[0]
-      this.searchForm.sendEndDate = e[1]
-      this.searchForm.radio = null
-      this.search()
-    },
-    reset () {
-      this.$refs.searchForm.resetFields()
-      this.searchForm.radio = '0'
-      this.changeRadio('0')
-      // this.search()
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/business/freezePersonnel.vue b/admin/src/views/business/freezePersonnel.vue
deleted file mode 100644
index aea6fe8..0000000
--- a/admin/src/views/business/freezePersonnel.vue
+++ /dev/null
@@ -1,133 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:member:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="濮撳悕" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ鍚�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="宸ュ彿" prop="code">
-                <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ュ伐鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="閮ㄩ棬" prop="companyId">
-                <el-cascader
-                    :options="options"
-                    v-model="searchForm.companyId"
-                    @change="changeCompanyId"
-                    :show-all-levels="false"
-                    @keypress.enter.native="search"
-                    :props="{ checkStrictly: true, value: 'id', label: 'name', children: 'companyDTOList' }"
-                    ></el-cascader>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
-                <li><el-button type="primary" v-permissions="['business:member:create']" @click="thaws()">瑙e喕</el-button></li>
-                <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:member:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
-                <el-table-column prop="companyName" label="閮ㄩ棬" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="宸ュ彿" min-width="100px"></el-table-column>
-                <el-table-column prop="visitsLastDate" label="鏈�鍚庝竴娆¢棬绂佹椂闂�" min-width="100px"></el-table-column>
-                <el-table-column prop="optRemark" label="鍐荤粨淇℃伅" min-width="100px"></el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:member:update', 'business:member:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="thaw(row.id)" icon="el-icon-edit" v-permissions="['business:member:update']">瑙e喕</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import { findCompanyTreePage } from '@/api/business/company'
-import { updateRemoveStatusById } from '@/api/business/block'
-export default {
-  name: 'freezePersonnel',
-  extends: BaseTable,
-  components: { TableLayout, Pagination },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        companyId: '',
-        name: '',
-        code: '',
-        type: 2
-      },
-      options: []
-    }
-  },
-  created () {
-    this.config({
-      module: '鍐荤粨浜哄憳',
-      api: '/business/block',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.getfindCompanyTreePage()
-  },
-  methods: {
-    thaws () {
-      if (this.tableData.selectedRows.length === 0) return this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
-      const ids = this.tableData.selectedRows.map(item => {
-        // return { id: item.id }
-        return item.id
-      })
-      this.thaw(ids.join(','))
-    },
-    thaw (ids) {
-      this.$confirm('纭畾瑙e喕姝ょ敤鎴峰悧?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        updateRemoveStatusById(ids)
-          .then(res => {
-            this.$message.success('鎿嶄綔鎴愬姛')
-            this.search()
-          })
-      }).catch(() => {
-
-      })
-    },
-    changeCompanyId (e) {
-      this.searchForm.companyId = e[e.length - 1]
-    },
-    // 鑾峰彇缁勭粐鏍�
-    getfindCompanyTreePage () {
-      findCompanyTreePage(1)
-        .then(res => {
-          this.options = res
-        })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/business/internalMember.vue b/admin/src/views/business/internalMember.vue
index a5fd7e7..956a89c 100644
--- a/admin/src/views/business/internalMember.vue
+++ b/admin/src/views/business/internalMember.vue
@@ -53,8 +53,7 @@
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:member:delete', 'business:member:create,business:empower:create']">
-        <li><el-button type="primary" v-permissions="['business:member:sync']" :loading="loading"
-            @click="synchronous()">鍚屾</el-button></li>
+ 
         <li><el-button type="primary"
             @click="$refs.OperaMemberWindow.open('鏂板缓鍛樺伐', null, department, searchForm.companyType)" icon="el-icon-plus"
             v-permissions="['business:member:create']">鏂板缓鍛樺伐</el-button></li>
@@ -62,8 +61,6 @@
             icon="el-icon-plus" v-permissions="['business:member:create']">浜哄憳瀵煎叆</el-button></li>
         <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
             v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>
-        <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()"
-            >涓嬪彂鎺堟潈</el-button></li>
         <li style="float: right">
           <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1"
             @change="search">鏄惁鍖呭惈涓嬬骇缁勭粐</el-checkbox>
diff --git a/admin/src/views/business/laborSource.vue b/admin/src/views/business/laborSource.vue
deleted file mode 100644
index f1320b0..0000000
--- a/admin/src/views/business/laborSource.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-<template>
-    <div class="box">
-        <el-form :model="form" ref="form" label-width="140px">
-            <el-form-item label="鏉ヨ棰勭害鏂瑰紡:" prop="reservationWay">
-                <el-radio-group v-model="form.reservationWay">
-                    <el-radio :label="0">棰勭害鍏嶇櫥璁�</el-radio>
-                    <el-radio :label="1">棰勭害鍚庣櫥璁�(闇�瑕侀厤澶囪瀹㈡満)</el-radio>
-                </el-radio-group>
-            </el-form-item>
-            <el-form-item label="琚浜烘牎楠屾柟寮�:" prop="checkVisit">
-                <el-radio-group v-model="form.checkVisit">
-                    <el-radio :label="0">浠呮墜鏈哄彿</el-radio>
-                    <el-radio :label="1">鎵嬫満鍙�&濮撳悕</el-radio>
-                </el-radio-group>
-            </el-form-item>
-            <el-form-item label="鍋ュ悍璇佹槸鍚﹀繀濉�:" prop="healthCard">
-                <el-radio-group v-model="form.healthCard">
-                    <el-radio :label="0">鍚�</el-radio>
-                    <el-radio :label="1">鏄�</el-radio>
-                </el-radio-group>
-            </el-form-item>
-            <el-form-item label="璁垮鏄惁绛旈:" prop="isAnswer">
-                <el-switch
-                    v-model="form.isAnswer"
-                    active-color="#13ce66"
-                    inactive-color="#ff4949"
-                    :active-value="1"
-                    :inactive-value="0">
-                </el-switch>
-            </el-form-item>
-            <el-form-item label="璁垮绛旈涓婚:" prop="theme">
-                <el-input style="width: 50%;" type="textarea" v-model="form.theme" placeholder="璇疯緭鍏ョ瓟棰樻爣棰�" v-trim/>
-            </el-form-item>
-            <el-form-item label="璁垮绛旈璇存槑:" prop="description">
-                <el-input style="width: 50%;" type="textarea" v-model="form.description" placeholder="璇疯緭鍏�" v-trim/>
-            </el-form-item>
-            <el-form-item>
-                <el-button type="primary" @click="submit">淇濆瓨閰嶇疆椤�</el-button>
-            </el-form-item>
-        </el-form>
-    </div>
-</template>
-
-<script>
-import { getLaborConfigDTO, updateLaborConfigDTO } from '@/api/system/common'
-export default {
-  name: 'visitorSources',
-
-  data () {
-    return {
-      form: {
-        id: null,
-        checkVisit: 0,
-        reservationWay: 0,
-        healthCard: 0,
-        isAnswer: 0,
-        theme: '',
-        description: ''
-      }
-    }
-  },
-
-  created () {
-    this.getData()
-  },
-
-  methods: {
-    getData () {
-      getLaborConfigDTO({})
-        .then(res => {
-          this.form.checkVisit = res.checkVisit
-          this.form.description = res.description
-          this.form.healthCard = res.healthCard
-          this.form.isAnswer = res.isAnswer
-          this.form.reservationWay = res.reservationWay
-          this.form.theme = res.theme
-        })
-    },
-    submit () {
-      updateLaborConfigDTO({
-        isAnswer: this.form.isAnswer,
-        healthCard: this.form.healthCard,
-        checkVisit: this.form.checkVisit,
-        reservationWay: this.form.reservationWay,
-        description: this.form.description,
-        theme: this.form.theme
-      }).then(res => {
-        this.$message.success('淇濆瓨鎴愬姛')
-        this.getData()
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-    .box {
-        width: 100%;
-        height: 100%;
-        padding: 30px;
-        box-sizing: border-box;
-        background: #ffffff;
-    }
-</style>
diff --git a/admin/src/views/business/memberCard.vue b/admin/src/views/business/memberCard.vue
deleted file mode 100644
index 9391141..0000000
--- a/admin/src/views/business/memberCard.vue
+++ /dev/null
@@ -1,170 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:membercard:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item title="鍗″彿" prop="code">
-                <el-input v-model="searchForm.code" placeholder="鍗″彿" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item title="濮撳悕/鎵嬫満鍙�" prop="keyword">
-                <el-input v-model="searchForm.keyword" placeholder="鍛樺伐濮撳悕/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item title="鐢ㄦ埛绫诲瀷" prop="memberType">
-                <el-select v-model="searchForm.memberType" placeholder="鐢ㄦ埛绫诲瀷">
-                    <el-option label="鍔冲姟浜哄憳" :value="0"></el-option>
-                    <el-option label="鍐呴儴鍛樺伐" :value="2"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item title="鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="鐘舵��">
-                    <el-option label="绂佺敤" :value="0"></el-option>
-                    <el-option label="鍚敤" :value="1"></el-option>
-                    <el-option label="閫�鍗�" :value="2"></el-option>
-                    <el-option label="鎸傚け" :value="3"></el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:membercard:create']">
-                <li><el-button type="primary" @click="$refs.operaMemberCardWindow.open('鏂板缓浜哄憳寮�鍗�')" icon="el-icon-plus" v-permissions="['business:membercard:create']">鏂板缓</el-button></li>
-                <li><el-button type="primary" @click="batchLossReporting">鎸傚け</el-button></li>
-                <li><el-button type="primary" @click="batchDecoupling">瑙f寕</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="code" label="鍗″彿" min-width="100px"></el-table-column>
-                <el-table-column prop="cardTypeName" label="鍗$被鍨�" min-width="100px"></el-table-column>
-                <el-table-column label="鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.status === 0">绂佺敤</span>
-                        <span v-if="row.status === 1">鍚敤</span>
-                        <span v-if="row.status === 2">閫�鍗�</span>
-                        <span v-if="row.status === 3">鎸傚け</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.memberType === 0">鍔冲姟璁垮</span>
-                        <span v-if="row.memberType === 2">鍐呴儴浜哄憳</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="memberName" label="鍛樺伐濮撳悕" min-width="100px"></el-table-column>
-                <el-table-column prop="memberPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="companyName" label="缁勭粐" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="寮�鍗℃椂闂�" min-width="140px"></el-table-column>
-                <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="140px"></el-table-column>
-                <el-table-column
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" v-if="row.status === 3" @click="jiegua(row.id)">瑙f寕</el-button>
-                        <el-button type="text" v-if="row.status !== 3 && row.status !== 2" @click="tui(row.id)">閫�鍗�</el-button>
-                        <el-button type="text" v-if="row.status !== 3 && row.status !== 2" @click="guashi(row.id)">鎸傚け</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaMemberCardWindow ref="operaMemberCardWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-  import BaseTable from '@/components/base/BaseTable'
-  import TableLayout from '@/layouts/TableLayout'
-  import Pagination from '@/components/common/Pagination'
-  import OperaMemberCardWindow from '@/components/business/OperaMemberCardWindow'
-  import { refundCard, batchLoss, batchUnLoss } from '@/api/business/memberCard'
-  export default {
-    name: 'MemberCard',
-    extends: BaseTable,
-    components: { TableLayout, Pagination, OperaMemberCardWindow },
-    data () {
-      return {
-        // 鎼滅储
-        searchForm: {
-          code: '',
-          keyword: '',
-          status: '',
-          memberType: ''
-        }
-      }
-    },
-    created () {
-      this.config({
-        module: '鐢ㄦ埛鍗$墖缁戝畾淇℃伅琛�',
-        api: '/business/memberCard',
-        'field.id': 'id',
-        'field.main': 'id'
-      })
-      this.search()
-    },
-    methods: {
-      // 鎵归噺瑙f寕
-      batchDecoupling () {
-        let arr = []
-        this.tableData.selectedRows.forEach(item => {
-          arr.push({ id: item.id, status: 1 })
-        })
-        batchUnLoss(arr)
-          .then(res => {
-            this.$message.success('鎿嶄綔鎴愬姛')
-            this.search()
-          })
-      },
-      // 鎵归噺鎸傚け
-      batchLossReporting() {
-        let arr = []
-        this.tableData.selectedRows.forEach(item => {
-          arr.push({ id: item.id, status: 3 })
-        })
-        batchLoss(arr)
-          .then(res => {
-            this.$message.success('鎿嶄綔鎴愬姛')
-            this.search()
-          })
-      },
-      // 閫�鍗�
-      tui(id) {
-        refundCard({ id, status: 2 })
-          .then(res => {
-            this.$message.success('鎿嶄綔鎴愬姛')
-            this.search()
-          })
-      },
-      // 鎸傚け
-      guashi(id) {
-        batchLoss([{ id, status: 3 }])
-          .then(res => {
-            this.$message.success('鎿嶄綔鎴愬姛')
-            this.search()
-          })
-      },
-      // 瑙f寕
-      jiegua(id) {
-        batchUnLoss([{ id, status: 1 }])
-          .then(res => {
-            this.$message.success('鎿嶄綔鎴愬姛')
-            this.search()
-          })
-      }
-    }
-  }
-</script>
diff --git a/admin/src/views/business/problemLog.vue b/admin/src/views/business/problemLog.vue
deleted file mode 100644
index 8466393..0000000
--- a/admin/src/views/business/problemLog.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:member:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="绛旈浜�" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="缁勭粐鍚嶇О" prop="companyName">
-                <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="浜哄憳绫诲瀷" prop="type">
-                <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
-                    <el-option label="鍔冲姟璁垮" value="0"></el-option>
-                    <el-option label="鏅�氳瀹�" value="1"></el-option>
-                    <el-option label="鍐呴儴浜哄憳" value="2"></el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar">
-                <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:member:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column prop="name" label="绛旈浜�" min-width="100px"></el-table-column>
-                <el-table-column prop="phone" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column>
-                <el-table-column prop="companyName" label="缁勭粐鍚嶇О" min-width="100px"></el-table-column>
-                <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px">
-                    <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="createDate" label="绛旈鏃堕棿" min-width="100px"></el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-export default {
-  name: 'ProblemLog',
-  extends: BaseTable,
-  components: { TableLayout, Pagination },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        companyName: '',
-        type: ''
-      },
-      options: []
-    }
-  },
-  created () {
-    this.config({
-      module: '璁垮绛旈璁板綍琛�',
-      api: '/business/problemLog',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  }
-}
-</script>
diff --git a/admin/src/views/business/problems.vue b/admin/src/views/business/problems.vue
deleted file mode 100644
index c47eee2..0000000
--- a/admin/src/views/business/problems.vue
+++ /dev/null
@@ -1,121 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:problems:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="棰樼洰鍚嶇О" prop="title">
-                <el-input v-model="searchForm.title" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <!-- <el-form-item label="浜哄憳绫诲瀷" prop="useType">
-                <el-select v-model="searchForm.useType" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="璁垮鍜屽姵鍔�" value="0"></el-option>
-                    <el-option label="浠呰瀹�" value="1"></el-option>
-                    <el-option label="浠呭姵鍔�" value="2"></el-option>
-                </el-select>
-            </el-form-item> -->
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:problems:create']">
-                <li><el-button type="primary" @click="$refs.operaProblemsWindow.open('鏂板缓璇曢淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:problems:create']">鏂板缓</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column prop="title" label="棰樼洰鍚嶇О" min-width="150px"></el-table-column>
-                <el-table-column prop="useType" label="閫傜敤浜哄憳绫诲瀷" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.useType === 0">璁垮鍜屽姵鍔�</span>
-                        <span v-if="row.useType === 1">浠呰瀹�</span>
-                        <span v-if="row.useType === 2">浠呭姵鍔�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="type" label="棰樼洰绫诲瀷" min-width="100px">
-                    <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="score" label="鍒嗗��" min-width="100px"></el-table-column>
-                <el-table-column prop="sortnu" label="棰樼洰椤哄簭(鍗囧簭)" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-                <el-table-column prop="creatorName" label="鍒涘缓浜�" min-width="100px"></el-table-column>
-                <el-table-column
-                    v-if="containPermissions(['business:company:update', 'business:company:delete'])"
-                    label="鎿嶄綔"
-                    min-width="120"
-                    fixed="right"
-                >
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="edit(row)" icon="el-icon-edit" v-permissions="['business:company:update']">缂栬緫</el-button>
-                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:company:delete']">鍒犻櫎</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaProblemsWindow ref="operaProblemsWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaProblemsWindow from '@/components/business/OperaProblemsWindow'
-export default {
-  name: 'Problems',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaProblemsWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        title: '',
-        useType: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '璇曢淇℃伅琛�',
-      api: '/business/problems',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-    edit (row) {
-      if (row.objectList && row.objectList.length > 0) {
-        row.objectList = row.objectList.map((item, index) => {
-          return {
-            code: item.code,
-            value: item.value,
-            sort: '閫夐」' + item.code,
-            id: index.toString()
-          }
-        })
-      } else {
-        row.objectList = []
-      }
-      if (row.type === 2) {
-        row.answer = row.answer.split(',')
-      }
-      this.$refs.operaProblemsWindow.open('缂栬緫璇曢淇℃伅', row)
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/business/relativeMember.vue b/admin/src/views/business/relativeMember.vue
deleted file mode 100644
index 92ed414..0000000
--- a/admin/src/views/business/relativeMember.vue
+++ /dev/null
@@ -1,443 +0,0 @@
-<template>
-  <TableLayout1 :permissions="['business:member:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="" prop="keyword">
-        <el-input v-model="searchForm.keyword" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�/宸ュ彿" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-
-      <el-form-item label="" prop="positionId" >
-        <el-select v-model="searchForm.positionId" clearable filterable placeholder="宀椾綅">
-          <el-option v-for="item in positionList" :key="item.id" :label="item.name" :value="item.id">
-          </el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="" prop="hasFace">
-        <el-select v-model="searchForm.hasFace" @keypress.enter.native="search" placeholder="鏄惁鏈変汉鑴�">
-          <el-option label="鏃�" value="0"></el-option>
-          <el-option label="鏈�" value="1"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="" prop="canVisit">
-        <el-select v-model="searchForm.canVisit" @keypress.enter.native="search" placeholder="鍙嫓璁�">
-          <el-option label="鏄�" value="1"></el-option>
-          <el-option label="鍚�" value="0"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="" prop="workStatus">
-        <el-select v-model="searchForm.workStatus" @keypress.enter.native="search" clearable placeholder="鍦ㄨ亴鐘舵��">
-          <el-option label="鍦ㄨ亴" value="0"></el-option>
-          <el-option label="绂昏亴" value="1"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="" prop="hkStatus">
-        <el-select v-model="searchForm.hkStatus" @keypress.enter.native="search" placeholder="娴峰悍鍚屾鐘舵��">
-          <el-option label="寰呭悓姝�" value="0"></el-option>
-          <el-option label="鍚屾鎴愬姛" value="1"></el-option>
-          <el-option label="鍚屾澶辫触" value="2"></el-option>
-        </el-select>
-      </el-form-item>
-<!--      <el-form-item label="">
-        <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1">鏄惁鍖呭惈涓嬬骇缁勭粐</el-checkbox>
-      </el-form-item>-->
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <template v-slot:menu>
-      <div
-        style="width: 100%; height: 50px; background: rgba(242, 242, 242, 1); line-height: 50px; text-align: center; font-size: 14px;">
-        浼佷笟缁勭粐鏋舵瀯</div>
-      <div style="width: 100%; height: calc(100vh - 170px); overflow-y: scroll;">
-        <Tree :list="companyTree" :defaultProps="{ name: 'name', status: 'fsStatus', children: 'childList', id: 'id' }"
-          @callback="callback" />
-      </div>
-    </template>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar"
-        v-permissions="['business:member:delete', 'business:member:create,business:empower:create', 'business:traintime:create']">
-        <!--
-                <li><el-button type="primary" v-permissions="['business:member:sync']" :loading="loading" @click="synchronous()">鍚屾</el-button></li>
--->
-        <li><el-button type="primary"
-            @click="$refs.OperaMemberWindow.open('鏂板缓鍛樺伐', null, department, searchForm.companyType)" icon="el-icon-plus"
-            v-permissions="['business:member:create']">鏂板缓鍛樺伐</el-button></li>
-        <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('浜哄憳瀵煎叆', searchForm.companyType)"
-            icon="el-icon-plus" v-permissions="['business:member:create']">浜哄憳瀵煎叆</el-button></li>
-        <li><el-button type="primary"
-            @click="$refs.OperaTrainTimeImportWindow.open('鍩硅鏈夋晥鏈熷鍏�', department, searchForm.companyType)"
-            icon="el-icon-plus" v-permissions="['business:traintime:create']">鍩硅鏈熷鍏�</el-button></li>
-        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
-            v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>
-        <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()">涓嬪彂鎺堟潈</el-button></li>
-        <li style="float: right">
-          <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1"
-                       @change="search">鏄惁鍖呭惈涓嬬骇缁勭粐</el-checkbox>
-        </li>
-
-        <li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
-
-      </ul>
-      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column fixed="left"  prop="name" label="濮撳悕" min-width="110px">
-          <template slot-scope="{row}">
-            <span>{{ row.name }}</span>
-            <span class="zhuguan" v-if="row.headStatus == 1">涓荤</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="浜鸿劯淇℃伅" min-width="100px">
-          <template slot-scope="{row}">
-            <el-image v-if="row.faceImgFull" style="width: 60px; height: 60px" :src="row.faceImgFull"
-                      :preview-src-list="[row.faceImgFull]">
-            </el-image>
-          </template>
-        </el-table-column>
-        <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="idcardDecode" label="韬唤璇佸彿" min-width="100px"></el-table-column>
-        <el-table-column label="鎬у埆" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.sex == 1">鐢�</span>
-            <span v-if="row.sex == 2">濂�</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="companyName" label="鎵�灞為儴闂�" min-width="100px"></el-table-column>
-        <el-table-column prop="positionName" label="宀椾綅" min-width="100px"></el-table-column>
-<!--        <el-table-column prop="isDangyuan" label="鏄惁鍏氬憳" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.isDangyuan ==1 " style="color: green">鍏氬憳</span>
-            <span v-if="row.isDangyuan ==0">闈炲厷鍛�</span>
-          </template>
-        </el-table-column>-->
-        <el-table-column prop="jobDate" label="鍏ヨ亴鏃ユ湡" min-width="100px">  </el-table-column>
-<!--        <el-table-column prop="status" label="鐘舵��" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.status == 0" style="color: green">姝e父</span>
-            <span v-if="row.status == 1" style="color: red">绂佺敤</span>
-            <span v-if="row.status == 2" style="color: red">鎷夐粦/鍐荤粨</span>
-          </template>
-        </el-table-column>-->
-        <el-table-column prop="trainEndTime" label="鍩硅鏈夋晥鏈�" min-width="100px">  </el-table-column>
-        <el-table-column label="閮ㄩ棬绫诲瀷" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.companyType == 0">鐩稿叧鏂圭粍缁�</span>
-            <span v-if="row.companyType == 1">鍐呴儴缁勭粐</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="鍦ㄨ亴鐘舵��">
-          <template slot-scope="{row}">
-            <el-switch @change="changeWorkStatus($event, row)" v-model="row.workStatus" active-color="#13ce66"
-              inactive-color="#ff4949" :active-value="0" :inactive-value="1">
-            </el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column label="鏄惁鍙嫓璁�">
-          <template slot-scope="{row}">
-            <el-switch @change="changeCanvisit($event, row)" v-model="row.canVisit" active-color="#13ce66"
-              inactive-color="#ff4949" :active-value="1" :inactive-value="0">
-            </el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column label="娴峰悍鍚屾鐘舵��" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.hkStatus == 0" style="color: #435EBE">寰呭悓姝�</span>
-            <span v-if="row.hkStatus == 1" style="color: green">鍚屾鎴愬姛</span>
-            <span v-if="row.hkStatus == 2" style="color: red">鍚屾澶辫触</span>
-            <span v-if="row.hkStatus == 3" style="color: red">涓嶇鍚堜笅鍙戞潯浠�</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="鏄惁鎺堟潈" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.authStatus == 1" style="color: green">鏄�</span>
-            <span v-if="row.authStatus == 0" style="color: red">鍚�</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="闂ㄧ瑙掕壊" min-width="100px">
-          <template slot-scope="{row}">
-            <span>{{ (row.roleNames && row.roleNames.length) ? row.roleNames.join(',') : '-' }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="闂ㄧ鏈夋晥鏈�" min-width="170px">
-          <template slot-scope="{row}">
-            <div v-if="row.roleId != null && row.roleId != ''">
-              <div v-if="!row.startTime || !row.endTime">闀挎湡鏈夋晥</div>
-              <div v-else>
-                <span>璧凤細{{ row.startTime }}</span><br />
-                <span>姝細{{ row.endTime }}</span>
-              </div>
-            </div>
-            <div v-else>-</div>
-          </template>
-        </el-table-column>
-        <el-table-column prop="code" label="宸ュ彿" min-width="100px"></el-table-column>
-        <el-table-column label="鍗$墖" min-width="80px">
-          <template slot-scope="{row}">
-            <el-button @click="$refs.cardOpeningRecord.open('寮�鍗¤褰�', row.id)" type="text">{{ row.memberCardCount ||
-              '0' }}</el-button>
-          </template>
-        </el-table-column>
-        <el-table-column prop="editorName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鏈�鍚庢搷浣滄椂闂�" min-width="150px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:member:update', 'business:member:delete', 'business:empower:create'])"
-          label="鎿嶄綔" min-width="280" fixed="right">
-          <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMemberWindow.open('缂栬緫鍛樺伐淇℃伅', row, department)"
-              v-permissions="['business:empower:update']">缂栬緫</el-button>
-            <el-button type="text" icon="el-icon-plus" @click="empower(row.id)"
-              v-permissions="['business:empower:create']">閲嶆柊鎺堟潈</el-button>
-            <el-button type="text" :loading="heading" style="color: red" icon="el-icon-delete"
-              @click="updateHead(row, 0)" v-if="row.headStatus == 1"
-              v-permissions="['business:member:head']">鍙栨秷涓荤</el-button>
-            <el-button type="text" :loading="heading" icon="el-icon-edit" @click="updateHead(row, 1)"
-              v-if="row.headStatus == 0" v-permissions="['business:member:head']">璁句负涓荤</el-button>
-            <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" style="color: red"
-                       v-permissions="['business:member:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
-      </pagination>
-      <!--    鏌ョ湅浜哄憳寮�鍗¤褰�    -->
-      <cardOpeningRecord ref="cardOpeningRecord" @success="handlePageChange" />
-      <OperaMemberWindow ref="OperaMemberWindow" @success="handlePageChange" />
-      <OperaMemberImportWindow ref="OperaMemberImportWindow" @success="handlePageChange" />
-      <OperaTrainTimeImportWindow ref="OperaTrainTimeImportWindow" @success="handlePageChange" />
-      <OperaMemberRoleWindow ref="OperaMemberRoleWindow" @success="handlePageChange" />
-    </template>
-  </TableLayout1>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout1 from '@/layouts/TableLayout1'
-import Pagination from '@/components/common/Pagination'
-import cardOpeningRecord from '@/components/business/cardOpeningRecord'
-import Tree from '@/components/common/Tree'
-import OperaMemberWindow from '@/components/business/OperaMemberWindow'
-import OperaMemberImportWindow from '@/components/business/OperaMemberImportWindow'
-import OperaTrainTimeImportWindow from '@/components/business/OperaTrainTimeImportWindow'
-import OperaMemberRoleWindow from '@/components/business/OperaMemberRoleWindow'
-import { fetchList } from '@/api/business/company'
-import { allList as positionList } from '@/api/business/position'
-import { memberSync, roleAuth, updateCanVisit, updateHead, updateWorkStatus } from '@/api/business/member'
-export default {
-  name: 'internalMember',
-  extends: BaseTable,
-  components: { TableLayout1, Pagination, Tree, cardOpeningRecord, OperaMemberWindow, OperaMemberRoleWindow, OperaMemberImportWindow, OperaTrainTimeImportWindow },
-  data () {
-    return {
-      TreeList: [],
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        status: '',
-        hkStatus: '',
-        includeChild: true,
-        canVisit: '',
-        keyword: '',
-        type: 2,
-        companyType: 0,
-        erpOrgId: '',
-        workStatus: '',
-        positionId: '',
-        companyId: '',
-        hasFace: ''
-      },
-      loading: false,
-      heading: false,
-      working: false,
-      canvisiting: false,
-      companyTree: [],
-      positionList: [],
-      department: []
-    }
-  },
-  created () {
-    this.config({
-      module: '浜哄憳淇℃伅琛�',
-      api: '/business/member',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    // this.search()
-    this.getfindCompanyTreePage()
-    this.getPositionList()
-  },
-  methods: {
-    startEmpowerBatch () {
-      if (this.tableData.selectedRows.length === 0) {
-        this.$tip.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�')
-        return
-      }
-      var ids = []
-      var names = []
-      this.tableData.selectedRows.forEach(item => {
-        ids.push(item.id)
-        names.push(item.name)
-      })
-      this.$refs.OperaMemberRoleWindow.open('鍐呴儴鍛樺伐涓嬪彂鏉冮檺', ids, names, this.searchForm.companyType)
-    },
-    getPositionList () {
-      positionList({})
-        .then(res => {
-          this.positionList = res
-        })
-    },
-    empower (id) {
-      var that = this
-      this.$confirm('纭畾閲嶆柊鎺堟潈鍚�?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        roleAuth(id)
-          .then(res => {
-            this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
-            that.search()
-          })
-      }).catch(() => {
-        this.$tip.apiSuccess('鎿嶄綔澶辫触')
-      })
-    },
-    // 鑾峰彇缁勭粐鏍�
-    getfindCompanyTreePage () {
-      fetchList()
-        .then(res => {
-          if (res && res.length > 0) {
-            res[0].fsStatus = 1
-            this.companyTree = res
-            // this.searchForm.erpOrgId = res[0].erpId
-            this.search()
-            this.department = this.getDepartmentTree(res)
-          }
-        })
-    },
-    getDepartmentTree (tree) {
-      if (tree == null) {
-        return []
-      }
-      return tree.map(item => {
-        const newItem = { ...item }
-        if (newItem) {
-          newItem.children = newItem.childList
-        }
-        if (item.children && item.children.length == 0) {
-          this.$delete(newItem, 'children')
-        } else {
-          newItem.children = this.getDepartmentTree(newItem.children)
-        }
-        if (newItem.type === this.searchForm.companyType) {
-          // newItem.disabled =false
-        } else {
-          newItem.disabled = true
-        }
-        return newItem
-      })
-    },
-    // 鍚屾淇℃伅
-    async synchronous () {
-      this.$dialog.actionConfirm('璇ユ搷浣滈檷瑙﹀彂鍏ㄥ憳淇℃伅鏇存柊鍜岄噸鏂颁笅鍙戯紒璇疯皑鎱庢搷浣�', '鎮ㄧ‘璁ゅ叏閲忓悓姝ュ唴閮ㄤ汉鍛樹俊鎭悧锛�')
-        .then(() => {
-          this.loading = true
-          memberSync({})
-            .then(res => {
-              this.$tip.apiSuccess(res || '鍚屾鎴愬姛')
-              this.search()
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.loading = false
-            })
-        })
-        .catch(() => { })
-    },
-    async updateHead (row, type) {
-      this.$dialog.actionConfirm('鎮ㄧ‘璁よ繘琛屽綋鍓嶆搷浣滃悧锛�', '閮ㄩ棬涓荤璁剧疆鎿嶄綔鎻愮ず')
-        .then(() => {
-          this.heading = true
-          updateHead({ id: row.id, headStatus: type })
-            .then(res => {
-              this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
-              this.search()
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.heading = false
-            })
-            .catch(() => { })
-        })
-    },
-    changeWorkStatus (e, row) {
-      this.working = true
-      updateWorkStatus({ id: row.id, workStatus: e })
-        .then(res => {
-          this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
-          this.search()
-        })
-        .catch(e => {
-          this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-          this.working = false
-        })
-        .catch(() => { })
-    },
-    changeCanvisit (e, row) {
-      this.canvisiting = true
-      updateCanVisit({ id: row.id, canVisit: e })
-        .then(res => {
-          this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
-          this.search()
-        })
-        .catch(e => {
-          this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-          this.canvisiting = false
-        })
-        .catch(() => { })
-    },
-    callback (row) {
-      this.searchForm.erpOrgId = row.erpId
-      this.searchForm.companyId = row.id
-      this.search()
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import '@/assets/style/variables.scss';
-
-.box {
-  width: 100%;
-  display: flex;
-  align-items: center;
-
-  .box_menu {
-    width: 100px;
-    height: 100%;
-    flex-shrink: 0;
-  }
-
-  .box_tab {
-    flex: 1;
-    height: 100%;
-  }
-}
-
-.zhuguan {
-  color: $primary-color;
-  border: 1px solid $primary-color;
-  padding: 0px 3px;
-  border-radius: 4px;
-  margin-left: 6px;
-}
-</style>
diff --git a/admin/src/views/business/reportRecord.vue b/admin/src/views/business/reportRecord.vue
deleted file mode 100644
index 0c1c06b..0000000
--- a/admin/src/views/business/reportRecord.vue
+++ /dev/null
@@ -1,222 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm
-      v-model="filters"
-      :query-form-config="queryFormConfig"
-      @handleQuery="getList(1)"
-      @clear="clear"
-    />
-    <div class="query_btns" style="margin: 16px 0 0" v-permissions="['business:visits:create', 'business:visits:exportExcel']">
-      <el-button type="primary" @click="handleEdit()" icon="el-icon-plus" v-permissions="['business:visits:create']">鏂板缓</el-button>
-      <el-button type="primary" :loading="exLoading" @click="exportExcel" v-permissions="['business:visits:exportExcel']">瀵煎嚭</el-button>
-    </div>
-    <el-table
-      v-loading="loading"
-      :data="dataList"
-      stripe
-      row-key="id"
-      default-expand-all
-    >
-      <el-table-column type="selection" width="55" align="center"></el-table-column>
-      <el-table-column
-        prop="carNos"
-        label="鍏ュ洯杞﹁締"
-        min-width="100px"
-      ></el-table-column>
-      <el-table-column
-        prop="companyName"
-        label="鍏徃鍚嶇О"
-        min-width="100px"
-      ></el-table-column>
-      <el-table-column
-        prop="name"
-        label="鑱旂郴浜轰俊鎭�"
-        min-width="100px"
-      ></el-table-column>
-      <el-table-column
-        prop="phone"
-        label="鎵嬫満鍙�"
-        min-width="100px"
-      ></el-table-column>
-      <el-table-column
-        prop="receptMemberName"
-        label="琚浜�"
-        min-width="100px"
-      ></el-table-column>
-      <el-table-column label="鎷滆鏃堕棿" min-width="160px">
-        <template slot-scope="{ row }">
-          <span>璧凤細{{ row.starttime }}</span
-          ><br />
-          <span>姝細{{ row.endtime }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="reason"
-        label="鎷滆浜嬬敱"
-        min-width="100"
-      ></el-table-column>
-      <el-table-column
-        prop="status"
-        fixed="right"
-        label="鐘舵��"
-        align="center"
-        min-width="100"
-      >
-        <template slot-scope="{ row }">
-          <span style="color: rgba(245, 154, 35, 0.996)" v-if="row.status === 0"
-            >寰呮彁浜ゅ鎵�</span
-          >
-          <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996)"
-            >澶勭悊涓�</span
-          >
-          <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996)"
-            >宸插悓鎰�</span
-          >
-          <span style="color: gray" v-if="row.status === 3">宸叉嫆缁�</span>
-          <span v-if="row.status === 4" style="color: gray">鍙栨秷</span>
-          <span v-if="row.status === 5" style="color: green">涓嬪彂鎴愬姛</span>
-          <span v-if="row.status === 6" style="color: gray">涓嬪彂澶辫触</span>
-          <span v-if="row.status === 7" style="color: green">鎷滆涓�</span>
-          <span v-if="row.status === 8" style="color: red">宸茬绂�</span>
-          <span v-if="row.status === 9" style="color: gray">宸插け鏁�</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="鎿嶄綔" align="center" width="100" fixed="right">
-        <template slot-scope="{ row }">
-          <el-button
-            type="text"
-            @click="handleDetail(row)"
-            v-permissions="['business:company:update']"
-            >鏌ョ湅璇︽儏</el-button
-          >
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      @size-change="handleSizeChange"
-      @current-change="getList"
-      :pagination="pagination"
-    />
-    <ReportDetail v-if="isShowReport" ref="VisReportDetailRef" />
-    <OperaVisitsReportWindow @close="isShowEdit = false" @success="getList"  v-if="isShowEdit" ref="operaVisitsWindowRef" />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-// import ReportDetail from './page-components/ReportDetail.vue'
-import ReportDetail from '@/views/task/visReportDetail.vue'
-import OperaVisitsReportWindow from '@/components/business/operaVisitsReportWindow.vue'
-import { fetchList, exportExcel } from '@/api/business/visits'
-export default {
-  components: {
-    ReportDetail,
-    QueryForm,
-    Pagination,
-    OperaVisitsReportWindow
-  },
-  data () {
-    return {
-      isShowEdit: false,
-      exLoading: false,
-
-      isShowReport: false,
-      activeTab: '0',
-      filters: {
-        type: 2
-      },
-      dataList: [],
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'carNos',
-            type: 'input',
-            label: '杞︾墝鍙�'
-          },
-          {
-            filed: 'companyName',
-            type: 'input',
-            label: '鍏徃鍚嶇О'
-          }
-        ],
-        online: true
-      },
-      loading: false,
-      sorting: false,
-      searchForm: {
-        // type: 1
-      },
-      pagination: {
-        capacity: 10,
-        page: 1
-      },
-      total: 0
-    }
-  },
-  created () {
-    this.getList()
-  },
-  methods: {
-    exportExcel () {
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.exLoading = true
-          exportExcel({
-            page: this.pagination.page,
-            capacity: 1000000,
-            model: this.filters
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.exLoading = false
-            })
-        })
-    },
-    handleEdit () {
-      this.isShowEdit = true
-      this.$nextTick(() => {
-        this.$refs.operaVisitsWindowRef.isShowModal = true
-      })
-    },
-    handleDetail (row) {
-      this.isShowReport = true
-      this.$nextTick(() => {
-        this.$nextTick(() => {
-          this.$refs.VisReportDetailRef.id = row.id
-          this.$refs.VisReportDetailRef.type = 1
-          this.$refs.VisReportDetailRef.getDetail()
-          this.$refs.VisReportDetailRef.isShowModal = true
-        })
-      })
-    },
-    getList (page) {
-      const { pagination, filters } = this
-      pagination.page = page || pagination.page
-      fetchList({
-        model: { ...filters },
-        ...pagination
-      }).then(res => {
-        this.dataList = res.records || []
-      })
-    },
-    clear () {
-      this.filters = {
-        type: 2
-      }
-      this.getList(0)
-    },
-    handleSizeChange (capacity) {
-      this.pagination.capacity = capacity
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-</style>
diff --git a/admin/src/views/business/strandedPersonnel.vue b/admin/src/views/business/strandedPersonnel.vue
deleted file mode 100644
index 89e0d2a..0000000
--- a/admin/src/views/business/strandedPersonnel.vue
+++ /dev/null
@@ -1,155 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:member:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="濮撳悕" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヨ瀹㈠悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="缁勭粐鍚嶇О" prop="companyName">
-        <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-<!--      <el-form-item label="鐢ㄦ埛绫诲瀷" prop="type">
-        <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨">
-          <el-option label="璁垮" value="1"></el-option>
-          <el-option label="鍔冲姟" value="0"></el-option>
-        </el-select>
-      </el-form-item>-->
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <!--            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">-->
-      <!--                <li><el-button type="primary" v-permissions="['business:member:create']" @click="thaws">绂诲満</el-button></li>-->
-      <!--            </ul>-->
-      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
-        <!--                <el-table-column type="selection" width="55"></el-table-column>-->
-        <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
-        <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="companyName" label="缁勭粐" min-width="100px"></el-table-column>
-        <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px">
-          <span>璁垮</span>
-          <!-- <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="inDate" label="鍦ㄥ洯鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="outDate" label="鎺堟潈鍒版湡鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column label="瓒呮椂鏃堕暱" min-width="100px">
-          <template slot-scope="{ row }">
-            <span v-if="row.outStatus === 1">{{ row.timeOut.toString().replace("-", "") }}鍒嗛挓</span>
-            <span v-else>-</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="鐘舵��" min-width="100px">
-          <template slot-scope="{ row }">
-            <span v-if="row.outStatus === 0">鏈秴鏃�</span>
-            <span style="color: red" v-else-if="row.outStatus === 1">宸茶秴鏃�</span>
-            <span v-else-if="row.outStatus === 2">鍗冲皢瓒呮椂</span>
-          </template>
-        </el-table-column>
-        <el-table-column v-if="
-          containPermissions([
-            'business:member:update',
-            'business:member:delete',
-          ])
-        " label="鎿嶄綔" min-width="120" fixed="right">
-          <template slot-scope="{ row }">
-            <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']"
-              @click="departure(row.id)">绂诲巶</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
-      </pagination>
-    </template>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import { findAllList } from '@/api/system/common'
-import { level } from '@/api/business/staging'
-export default {
-  name: 'strandedPersonnel',
-  extends: BaseTable,
-  components: { TableLayout, Pagination },
-  data() {
-    return {
-      // 鎼滅储
-      searchForm: {
-        companyName: '',
-        name: '',
-        status: 2
-        // type: '1'
-      },
-      user: []
-    }
-  },
-  created() {
-    this.config({
-      module: '浜哄憳淇℃伅琛�',
-      api: '/business/strandedPersonnel',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.getUser()
-  },
-  methods: {
-    departure(id) {
-      this.$confirm('纭畾绂诲巶鍚�, 鏄惁缁х画?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        level(id)
-          .then(res => {
-            this.search()
-          })
-      }).catch(() => {
-
-      })
-    },
-    // thaws () {
-    //   if (this.tableData.selectedRows.length === 0) return this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
-    //   const ids = this.tableData.selectedRows.map(item => {
-    //     return { id: item.id }
-    //   })
-    //   this.thaw(ids)
-    // },
-    // thaw (ids) {
-    //   this.$confirm('纭畾绉婚櫎姝ょ敤鎴峰悧?', '鎻愮ず', {
-    //     confirmButtonText: '纭畾',
-    //     cancelButtonText: '鍙栨秷',
-    //     type: 'warning'
-    //   }).then(() => {
-    //     // updateRemoveStatusById(ids)
-    //     //   .then(res => {
-    //     //     this.$message.success('鎿嶄綔鎴愬姛')
-    //     //     this.search()
-    //     //   })
-    //   }).catch(() => {
-    //
-    //   })
-    // },
-    getUser() {
-      findAllList({})
-        .then(res => {
-          this.user = res.map(item => {
-            return {
-              name: item.realname,
-              id: item.id
-            }
-          })
-        })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/business/trainTime.vue b/admin/src/views/business/trainTime.vue
deleted file mode 100644
index db6d4dc..0000000
--- a/admin/src/views/business/trainTime.vue
+++ /dev/null
@@ -1,133 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:deviceevent:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyWords">
-                <el-input v-model="searchForm.keyWords" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="缁勭粐" prop="companyName">
-                <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="璧峰鏃堕棿" prop="eventType">
-                <el-date-picker
-                    @change="seleTime"
-                    v-model="time"
-                    type="datetimerange"
-                    format="yyyy-MM-dd HH:mm:ss"
-                    value-format="yyyy-MM-dd HH:mm:ss"
-                    range-separator="鑷�"
-                    start-placeholder="寮�濮嬫棩鏈�"
-                    end-placeholder="缁撴潫鏃ユ湡">
-                </el-date-picker>
-            </el-form-item>
-            <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
-                <el-radio-button label="0">褰撳ぉ</el-radio-button>
-                <el-radio-button label="1">杩�7澶�</el-radio-button>
-                <el-radio-button label="2">杩�30澶�</el-radio-button>
-            </el-radio-group>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column prop="name" label="浜哄憳濮撳悕" min-width="100px"></el-table-column>
-                <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-              <el-table-column prop="idcardNo" label="璇佷欢鍙�" min-width="150px"></el-table-column>
-                <el-table-column prop="companyName" label="缁勭粐鍚嶇О" min-width="150px"></el-table-column>
-                <el-table-column prop="startTime" label="寮�濮嬫棩鏈�" min-width="150px"></el-table-column>
-                <el-table-column prop="endTime" label="缁撴潫鏃ユ湡" min-width="150px"></el-table-column>
-              <el-table-column label="浜鸿劯鐓х墖" min-width="80px">
-                <template slot-scope="{row}">
-                  <el-image
-                      v-if="row.faceImg"
-                      style="width: 80px; height: 80px"
-                      :src="row.faceImg"
-                      :preview-src-list="[row.faceImg]">
-                  </el-image>
-                </template>
-              </el-table-column>
-                <el-table-column prop="createName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
-              <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="150px"></el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import { timeForMat } from '@/utils/util'
-export default {
-  name: 'DeviceEvent',
-  extends: BaseTable,
-  components: { TableLayout, Pagination },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        keyWords: '',
-        companyName: '',
-        startTime: '',
-        endTime: '',
-        radio: 0
-      },
-      time: []
-    }
-  },
-  created () {
-    this.config({
-      module: '鍩硅鏈夋晥鏈熷垪琛�',
-      api: '/business/trainTime',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.changeRadio('0')
-    this.search()
-  },
-  methods: {
-    changeRadio (e) {
-      if (e === '0') {
-        this.searchForm.startTime = timeForMat(0)[0]
-        this.searchForm.endTime = timeForMat(0)[1]
-        this.time = timeForMat(0)
-      } else if (e === '1') {
-        this.searchForm.startTime = timeForMat(6)[0]
-        this.searchForm.endTime = timeForMat(6)[1]
-        this.time = timeForMat(6)
-      } else if (e === '2') {
-        this.searchForm.startTime = timeForMat(29)[0]
-        this.searchForm.endTime = timeForMat(29)[1]
-        this.time = timeForMat(29)
-      }
-      this.search()
-    },
-    seleTime (e) {
-      this.searchForm.startTime = e[0]
-      this.searchForm.endTime = e[1]
-      this.searchForm.radio = null
-      this.search()
-    },
-    reset () {
-      this.$refs.searchForm.resetFields()
-      this.time = []
-      this.searchForm.radio = '0'
-      this.changeRadio('0')
-      this.search()
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/business/visitOrigin.vue b/admin/src/views/business/visitOrigin.vue
deleted file mode 100644
index 6b709b6..0000000
--- a/admin/src/views/business/visitOrigin.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:member:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
-      <el-form-item label="鎷滆浜嬬敱" prop="name">
-        <el-input v-model="searchForm.title" clearable placeholder="璇疯緭鍏ユ嫓璁夸簨鐢�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:visitreason:create','business:visitreason:delete']">
-        <li><el-button type="primary" @click="$refs.OperaVisitreasonWindow.open('鏂板缓鎷滆浜嬬敱',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:visitreason:create']">鏂板缓</el-button></li>
-        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:visitreason:delete']">鎵归噺鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-          v-loading="isWorking.search"
-          :data="tableData.list"
-          stripe
-          @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="title" label="鎷滆浜嬬敱" min-width="200px"></el-table-column>
-        <el-table-column prop="sortnum" label="鎺掑簭鐮�"  min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="200px"></el-table-column>
-        <el-table-column
-            v-if="containPermissions(['business:visitreason:update', 'business:visitreason:delete' ])"
-            label="鎿嶄綔"
-            min-width="250"
-            fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaVisitreasonWindow.open('缂栬緫鎷滆浜嬬敱',row,searchForm.type)" v-permissions="['business:visitreason:update']">缂栬緫</el-button>
-            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:visitreason:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-          @size-change="handleSizeChange"
-          @current-change="handlePageChange"
-          :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaVisitreasonWindow ref="OperaVisitreasonWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaVisitreasonWindow from '@/components/business/OperaVisitreasonWindow'
-export default {
-  name: 'areaSet',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaVisitreasonWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        title: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鎷滆浜嬬敱閰嶇疆',
-      api: '/business/visitReason',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-  }
-}
-</script>
diff --git a/admin/src/views/business/visitorManagement.vue b/admin/src/views/business/visitorManagement.vue
deleted file mode 100644
index fe0cd12..0000000
--- a/admin/src/views/business/visitorManagement.vue
+++ /dev/null
@@ -1,123 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:member:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="濮撳悕" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ鍚�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鎵嬫満鍙�" prop="phone">
-                <el-input v-model="searchForm.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鍏徃鍚嶇О" prop="companyName">
-                <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="韬唤璇佸彿" prop="idcardNo">
-                <el-input v-model="searchForm.idcardNo" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
-                <li><el-button type="primary" v-permissions="['business:member:create']" @click="block">鎷夐粦</el-button></li>
-                <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">鍒犻櫎</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
-                <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="phone" label="鎬у埆" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.sex === 1">鐢�</span>
-                        <span v-if="row.sex === 2">濂�</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="status" label="鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="(row.status || 0) === 0" style="color: green">姝e父</span>
-                        <span v-else style="color: red">寮傚父</span>
-                    </template>
-                </el-table-column>
-                <el-table-column label="璇佷欢绫诲瀷" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.idcardType === 0">韬唤璇�</span>
-                        <span v-if="row.idcardType === 1">娓境璇佷欢</span>
-                        <span v-if="row.idcardType === 2">鎶ょ収</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="idcardDecode" label="韬唤璇佸彿" width="150px"></el-table-column>
-                <el-table-column prop="visitCompanyName" label="鍏徃" min-width="100px"></el-table-column>
-                <el-table-column prop="visitTimes" label="鎷滆娆℃暟" min-width="100px"></el-table-column>
-                <el-table-column prop="lastVisitDate" label="鏈�鍚庢嫓璁挎椂闂�" min-width="100px"></el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import { batchBlock } from '@/api/business/member'
-export default {
-  name: 'visitorManagement',
-  extends: BaseTable,
-  components: { TableLayout, Pagination },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        companyName: '',
-        name: '',
-        phone: '',
-        idcardNo: '',
-        type: 1
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '浜哄憳淇℃伅琛�',
-      api: '/business/member',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-    block () {
-      if (this.tableData.selectedRows.length === 0) {
-        this.$message.warning('璇烽�夋嫨浜哄憳')
-        return
-      }
-      this.$confirm('纭畾瑕佹媺榛戝悧?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        batchBlock(this.tableData.selectedRows.map(item => item.id).join(','))
-          .then(res => {
-            this.$message.success('鎷夐粦鎴愬姛')
-            this.search()
-          })
-      }).catch(() => {
-
-      })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/business/visitorSources.vue b/admin/src/views/business/visitorSources.vue
deleted file mode 100644
index 84bdd07..0000000
--- a/admin/src/views/business/visitorSources.vue
+++ /dev/null
@@ -1,252 +0,0 @@
-<template>
-  <div class="box">
-    <el-form :model="form" ref="form" label-width="140px">
-      <div>
-        <span style="font-size: 15px; font-weight: bold">浜哄憳鎺堟潈閰嶇疆锛�</span>
-      </div>
-      <el-form-item label="" prop="frezzDays" label-width="50px">
-        浜哄憳闂ㄧ鎺堟潈鍐荤粨锛氳繛缁�
-        <el-input
-          style="width: 50px"
-          type="text"
-          v-model="form.frezzDays"
-          placeholder=""
-          v-trim
-        />
-        澶╋紝鏃犻棬绂�/杞﹁締闂告満浜嬩欢
-      </el-form-item>
-      <div>
-        <span style="font-size: 15px; font-weight: bold">璁垮閰嶇疆锛�</span>
-      </div>
-      <el-form-item label="鏉ヨ棰勭害鏂瑰紡:" prop="reservationWay">
-        <el-radio-group v-model="form.reservationWay">
-          <el-radio :label="1">棰勭害鍏嶇櫥璁�</el-radio>
-          <el-radio :label="0">棰勭害鍚庣櫥璁�(闇�瑕侀厤澶囪瀹㈡満)</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="琚浜烘牎楠屾柟寮�:" prop="checkVisit">
-        <el-radio-group v-model="form.checkVisit">
-          <el-radio :label="0">浠呮墜鏈哄彿</el-radio>
-          <el-radio :label="1">鎵嬫満鍙�&濮撳悕</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="鍋ュ悍璇佹槸鍚﹀繀濉�:" prop="healthCard">
-        <el-radio-group v-model="form.healthCard">
-          <el-radio :label="0">鍚�</el-radio>
-          <el-radio :label="1">鏄�</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="鍏佽鑷�夐棬绂佺粍:" prop="doorsVisitRequired">
-        <el-switch
-          v-model="form.doorsVisitRequired"
-          active-color="#13ce66"
-          inactive-color="#ff4949"
-          :active-value="1"
-          :inactive-value="0"
-        >
-        </el-switch>
-      </el-form-item>
-      <el-form-item label="璁垮鏄惁绛旈:" prop="isAnswer">
-        <el-switch
-          v-model="form.isAnswer"
-          active-color="#13ce66"
-          inactive-color="#ff4949"
-          :active-value="1"
-          :inactive-value="0"
-        >
-        </el-switch>
-      </el-form-item>
-      <el-form-item label="璁垮绛旈涓婚:" prop="theme">
-        <el-input
-          style="width: 50%"
-          type="textarea"
-          v-model="form.theme"
-          placeholder="璇疯緭鍏ョ瓟棰樻爣棰�"
-          v-trim
-        />
-      </el-form-item>
-      <el-form-item label="璁垮绛旈璇存槑:" prop="description">
-        <el-input
-          style="width: 50%"
-          type="textarea"
-          v-model="form.description"
-          placeholder="璇疯緭鍏�"
-          v-trim
-        />
-      </el-form-item>
-      <el-form-item label="鍦ㄥ洯椤荤煡:" prop="visitNotice">
-        <!-- <el-tiptap
-          style="width: 50%"
-          v-model="form.visitNotice"
-          :extensions="extensions"
-        /> -->
-        <RichEditor style="width: 70%" :richData="form.visitNotice" :styleEditor="styleEditor" @getWangedditor="getWangedditor" :readonly="false"/>
-      </el-form-item>
-      <el-form-item label="璁垮棰勭害鎸囧崡:" prop="visitNotice">
-        <!-- <el-tiptap
-          style="width: 50%"
-          v-model="form.visitTips"
-          :extensions="extensions"
-        /> -->
-        <RichEditor style="width: 70%" :richData="form.visitTips" :styleEditor="styleEditor" @getWangedditor="getWangedditor1" :readonly="false"/>
-      </el-form-item>
-      <el-form-item label="璁垮鍏ュ洯瀵艰鍥�:" prop="visitNotice">
-        <!-- <el-tiptap
-          style="width: 50%"
-          v-model="form.visitMap"
-          :extensions="extensions"
-        /> -->
-        <RichEditor style="width: 70%" :richData="form.visitMap" :styleEditor="styleEditor" @getWangedditor="getWangedditor2" :readonly="false"/>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" @click="submit">淇濆瓨閰嶇疆椤�</el-button>
-      </el-form-item>
-    </el-form>
-  </div>
-</template>
-
-<script>
-import { getVisitConfigDTO, updateVisitConfig } from '@/api/system/common'
-import RichEditor from '@/components/common/RichEditor'
-import {
-  // necessary extensions
-  Doc,
-  Text,
-  Paragraph,
-  Heading,
-  Bold,
-  Underline,
-  Italic,
-  Strike,
-  ListItem,
-  BulletList,
-  OrderedList,
-  Image,
-  Blockquote,
-  TextAlign,
-  Indent,
-  Table,
-  TableHeader,
-  TableCell,
-  TableRow,
-  TextColor,
-  HorizontalRule
-} from 'element-tiptap'
-import { upload } from '@/api/system/common'
-export default {
-  name: 'visitorSources',
-  components: {
-    RichEditor
-  },
-  data() {
-    return {
-      form: {
-        id: null,
-        checkVisit: 0,
-        reservationWay: 0,
-        healthCard: 0,
-        isAnswer: 0,
-        doorsVisitRequired: '',
-        theme: '',
-        description: '',
-        visitNotice: '',
-        visitMap: '',
-        visitTips: '',
-        frezzDays: null
-      },
-      styleEditor:'border: 1px solid #ccc;display: inline-block;',
-      extensions: [
-        new Doc(),
-        new Text(),
-        new Paragraph(),
-        new Heading({ level: 5 }),
-        new Bold({ bubble: true }),
-        new Underline({ bubble: true, menubar: false }),
-        new Italic(),
-        new Strike(),
-        new ListItem(),
-        new BulletList(),
-        new OrderedList(),
-        new Image({
-          uploadRequest(file) {
-            const fd = new FormData()
-            fd.append('folder', 'visit/')
-            fd.append('file', file)
-            return upload(fd).then(res => {
-              return res.url
-            })
-          }
-        }),
-        new Blockquote(),
-        new TextAlign(),
-        new Indent(),
-        new Table(),
-        new TableHeader(),
-        new TableCell(),
-        new TableRow(),
-        new HorizontalRule(),
-        new TextColor()
-      ]
-    }
-  },
-
-  created() {
-    this.getData()
-  },
-
-  methods: {
-    getWangedditor(val){
-      this.form.visitNotice =val
-    },
-    getWangedditor1(val){
-      this.form.visitTips =val
-    },
-    getWangedditor2(val){
-      this.form.visitMap =val
-    },
-    getData() {
-      getVisitConfigDTO({})
-        .then(res => {
-          this.form.checkVisit = res.checkVisit
-          this.form.description = res.description
-          this.form.healthCard = res.healthCard
-          this.form.isAnswer = res.isAnswer
-          this.form.reservationWay = res.reservationWay
-          this.form.theme = res.theme
-          this.form.doorsVisitRequired = res.doorsVisitRequired
-          this.form.visitNotice = res.visitNotice
-          this.form.visitTips = res.visitTips
-          this.form.visitMap = res.visitMap
-          this.form.frezzDays = res.frezzDays
-        })
-    },
-    submit() {
-      updateVisitConfig({
-        isAnswer: this.form.isAnswer,
-        healthCard: this.form.healthCard,
-        checkVisit: this.form.checkVisit,
-        reservationWay: this.form.reservationWay,
-        description: this.form.description,
-        theme: this.form.theme,
-        visitNotice: this.form.visitNotice,
-        visitTips: this.form.visitTips,
-        frezzDays: this.form.frezzDays,
-        visitMap: this.form.visitMap,
-        doorsVisitRequired: this.form.doorsVisitRequired
-      }).then(res => {
-        this.$message.success('淇濆瓨鎴愬姛')
-        this.getData()
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.box {
-  width: 100%;
-  padding: 30px;
-  box-sizing: border-box;
-  background: #ffffff;
-}
-</style>
diff --git a/admin/src/views/business/visits.vue b/admin/src/views/business/visits.vue
deleted file mode 100644
index 6e28c5b..0000000
--- a/admin/src/views/business/visits.vue
+++ /dev/null
@@ -1,213 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:visits:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="韬唤璇佸彿" prop="idcardNo">
-        <el-input v-model="searchForm.idcardNo" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="璁垮鍗曚綅" prop="companyName">
-        <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ヨ瀹㈠崟浣�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="瀹℃壒鐘舵��" prop="status">
-        <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
-          <el-option label="寰呮彁浜ゅ鎵�" value="0"></el-option>
-          <el-option label="瀹℃壒涓�" value="1"></el-option>
-          <el-option label="瀹℃牳閫氳繃" value="2"></el-option>
-          <el-option label="瀹℃壒椹冲洖" value="3"></el-option>
-          <el-option label="鍙栨秷" value="4"></el-option>
-          <el-option label="涓嬪彂鎴愬姛" value="5"></el-option>
-          <el-option label="涓嬪彂澶辫触" value="6"></el-option>
-          <el-option label="鎷滆涓�" value="7"></el-option>
-          <el-option label="宸茬绂�" value="8"></el-option>
-          <el-option label="宸插け鏁�" value="9"></el-option>
-        </el-select>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <!--                <el-button type="primary" :loading="isWorking.export" v-permissions="['business:visits:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>-->
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:visits:create', 'business:visits:exportExcel']">
-        <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
-            v-permissions="['business:visits:create']">鏂板缓</el-button></li>
-        <li><el-button type="primary" :loading="isWorking.export" @click="exportExcel"
-            v-permissions="['business:visits:exportExcel']">瀵煎嚭</el-button></li>
-      </ul>
-      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="name" label="璁垮濮撳悕" min-width="100px"></el-table-column>
-        <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="companyName" label="璁垮鍗曚綅" min-width="100px"></el-table-column>
-        <el-table-column prop="receptMemberName" label="琚浜�" min-width="100px"></el-table-column>
-        <el-table-column prop="reason" label="鎷滆浜嬬敱" min-width="100px"></el-table-column>
-        <el-table-column label="棰勭害鏃堕棿" min-width="170px">
-          <template slot-scope="{row}">
-            <span>璧凤細{{ row.starttime }}</span><br />
-            <span>姝細{{ row.endtime }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="绛惧埌鏃堕棿" min-width="170px">
-          <template slot-scope="{row}">
-            <div v-if="row.inDate && row.outDate">
-              <span>璧凤細{{ row.inDate }}</span><br />
-              <span>姝細{{ row.outDate }}</span>
-            </div>
-            <span v-else>-</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="鏂藉伐浜哄憳" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.type == 0">鍚�</span>
-            <span v-if="row.type == 1">鏄�</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="闅忚杞﹁締" min-width="100px">
-          <template slot-scope="{row}">
-            <span>{{ row.carNos }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="status" fixed="right" label="鐘舵��" min-width="100px">
-          <template slot-scope="{row}">
-            <span style="color: rgba(245, 154, 35, 0.996);" v-if="row.status === 0">寰呮彁浜ゅ鎵�</span>
-            <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996);">瀹℃壒涓�</span>
-            <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996);">瀹℃牳閫氳繃</span>
-            <span style="color: gray;" v-if="row.status === 3">瀹℃壒椹冲洖</span>
-            <span v-if="row.status === 4" style="color: gray">鍙栨秷</span>
-            <span v-if="row.status === 5" style="color: green">涓嬪彂鎴愬姛</span>
-            <span v-if="row.status === 6" style="color: gray">涓嬪彂澶辫触</span>
-            <span v-if="row.status === 7" style="color: green">鎷滆涓�</span>
-            <span v-if="row.status === 8" style="color: red">宸茬绂�</span>
-            <span v-if="row.status === 9" style="color: gray">宸插け鏁�</span>
-          </template>
-        </el-table-column>
-        <el-table-column v-if="containPermissions(['business:visits:update', 'business:visits:delete'])" label="鎿嶄綔"
-          min-width="200" fixed="right">
-          <template slot-scope="{row}">
-            <el-button type="text" @click="departure(row.id)" icon="el-icon-delete" style="color: red" v-if="row.status == 7">绂诲巶</el-button>
-            <el-button type="text" @click="cancel(row.id)" v-permissions="['business:visits:cancel']"
-              icon="el-icon-delete" style="color: red" v-if="row.status == 5">鍙栨秷棰勭害</el-button>
-            <el-button type="text" @click="resend(row.id)" v-permissions="['business:visits:update']"
-              icon="el-icon-edit" v-if="row.status == 6">閲嶆柊涓嬪彂</el-button>
-            <!-- <el-button type="text" @click="$refs.OperaVisitsDesWindow.open('璇︽儏', row.id)" icon="el-icon-view">璇︽儏</el-button> -->
-            <el-button type="text" @click="handleDetail(row)" icon="el-icon-view">璇︽儏</el-button>
-            <!--                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:visits:delete']">鏌ヨ瀹℃壒缁撴灉</el-button>-->
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
-      </pagination>
-      <!--      璇︽儏      -->
-      <!-- <OperaVisitsDesWindow ref="OperaVisitsDesWindow" /> -->
-      <TaskDetail v-if="isShowDetail" ref="DetailRef" />
-      <!-- 鏂板缓 -->
-      <OperaVisitsWindow @close="isShowEdit = false" @success="search" v-if="isShowEdit" ref="operaVisitsWindowRef" />
-    </template>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow'
-import OperaVisitsWindow from '@/components/business/operaVisitsWindow'
-import TaskDetail from '@/views/task/visSubDetail.vue'
-
-export default {
-  name: 'Visits',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, TaskDetail, OperaVisitsWindow },
-  data() {
-    return {
-      isShowEdit: false,
-      isShowDetail: false,
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        companyName: '',
-        idcardNo: '',
-        status: '',
-        type: 0
-      }
-    }
-  },
-  created() {
-    this.config({
-      module: '璁垮鐢宠淇℃伅琛�',
-      api: '/business/visits',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-    handleDetail(row) {
-      this.isShowDetail = true
-      console.log('row', row)
-      this.$nextTick(() => {
-        this.$refs.DetailRef.id = row.id
-        this.$refs.DetailRef.type = 0
-        this.$refs.DetailRef.getDetail()
-        this.$refs.DetailRef.isShowModal = true
-      })
-    },
-    handleEdit() {
-      this.isShowEdit = true
-      this.$nextTick(() => {
-        this.$refs.operaVisitsWindowRef.isShowModal = true
-      })
-    },
-    departure(id) {
-      this.$confirm('纭畾绂诲巶鍚�, 鏄惁缁х画?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        level(id)
-          .then(res => {
-            this.page = 1
-            this.getData()
-          })
-      }).catch(() => {
-
-      })
-    },
-    cancel(id) {
-      this.$confirm('纭畾鍙栨秷棰勭害鍚�, 鏄惁缁х画?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        visitCancel(id)
-          .then(res => {
-            this.page = 1
-            this.getData()
-          })
-      }).catch(() => {
-
-      })
-    },
-    resend(id) {
-      this.$confirm('纭畾灏濊瘯閲嶆柊鍙戣捣棰勭害鍚�, 鏄惁缁х画?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        this.api.visitResend(id)
-          .then(res => {
-            this.page = 1
-            this.getData()
-          })
-      }).catch(() => {
-
-      })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/client/clientList.vue b/admin/src/views/client/clientList.vue
new file mode 100644
index 0000000..e5520ef
--- /dev/null
+++ b/admin/src/views/client/clientList.vue
@@ -0,0 +1,219 @@
+<template>
+  <TableLayout :permissions="['business:ywcustomer:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="涓婚敭" prop="id">
+        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎵�灞炶涓氱紪鐮侊紙鍏宠仈category)" prop="industryId">
+        <el-input v-model="searchForm.industryId" placeholder="璇疯緭鍏ユ墍灞炶涓氱紪鐮侊紙鍏宠仈category)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="绫诲瀷 0涓汉 1浼佷笟" prop="type">
+        <el-input v-model="searchForm.type" placeholder="璇疯緭鍏ョ被鍨� 0涓汉 1浼佷笟" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="瀹㈡埛" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ鎴�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎵嬫満鍙�" prop="phone">
+        <el-input v-model="searchForm.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="韬唤璇佸彿锛堝姞瀵嗭級" prop="idcardNo">
+        <el-input v-model="searchForm.idcardNo" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙凤紙鍔犲瘑锛�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="璇佷欢鏄剧ず淇℃伅" prop="idcardDecode">
+        <el-input v-model="searchForm.idcardDecode" placeholder="璇疯緭鍏ヨ瘉浠舵樉绀轰俊鎭�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="瀹㈡埛缂栫爜" prop="code">
+        <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ュ鎴风紪鐮�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0姝e父 1绂佺敤" prop="status">
+        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0姝e父 1绂佺敤" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="韬唤 0鑰佹澘 1瓒呯骇绠$悊鍛�" prop="highCheckor">
+        <el-input v-model="searchForm.highCheckor" placeholder="璇疯緭鍏ヨ韩浠� 0鑰佹澘 1瓒呯骇绠$悊鍛�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏈�杩戠櫥褰曟椂闂�" prop="lastLoginDate">
+        <el-date-picker v-model="searchForm.lastLoginDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶杩戠櫥褰曟椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鐧诲綍娆℃暟" prop="loginNum">
+        <el-input v-model="searchForm.loginNum" placeholder="璇疯緭鍏ョ櫥褰曟鏁�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="绯荤粺鐧诲綍鐢ㄦ埛缂栫爜(鍏宠仈system_user)" prop="userId">
+        <el-input v-model="searchForm.userId" placeholder="璇疯緭鍏ョ郴缁熺櫥褰曠敤鎴风紪鐮�(鍏宠仈system_user)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="璇佷欢绫诲瀷 0韬唤璇� 1娓境璇佷欢 2鎶ょ収" prop="idcardType">
+        <el-input v-model="searchForm.idcardType" placeholder="璇疯緭鍏ヨ瘉浠剁被鍨� 0韬唤璇� 1娓境璇佷欢 2鎶ょ収" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="寮�鎴烽摱琛�" prop="accountBank">
+        <el-input v-model="searchForm.accountBank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="璐﹀彿" prop="accountNo">
+        <el-input v-model="searchForm.accountNo" placeholder="璇疯緭鍏ヨ处鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="璐︽埛鐢佃瘽" prop="accountPhone">
+        <el-input v-model="searchForm.accountPhone" placeholder="璇疯緭鍏ヨ处鎴风數璇�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCard">
+        <el-input v-model="searchForm.creditCard" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="榛樿鍙戠エ绫诲瀷 0澧炲�肩◣鏅�氬彂绁� 1澧炲�肩◣涓撶敤鍙戠エ" prop="fpType">
+        <el-input v-model="searchForm.fpType" placeholder="璇疯緭鍏ラ粯璁ゅ彂绁ㄧ被鍨� 0澧炲�肩◣鏅�氬彂绁� 1澧炲�肩◣涓撶敤鍙戠エ" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="璐﹀彿娉ㄥ唽鍦板潃" prop="accountAddr">
+        <el-input v-model="searchForm.accountAddr" placeholder="璇疯緭鍏ヨ处鍙锋敞鍐屽湴鍧�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="韬唤绫诲瀷0鑰佹澘瓒呯骇绠$悊鍛�;1=浜轰簨绠$悊鍛�;2=鍛樺伐" prop="identityType">
+        <el-input v-model="searchForm.identityType" placeholder="璇疯緭鍏ヨ韩浠界被鍨�0鑰佹澘瓒呯骇绠$悊鍛�;1=浜轰簨绠$悊鍛�;2=鍛樺伐" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="閭" prop="email">
+        <el-input v-model="searchForm.email" placeholder="璇疯緭鍏ラ偖绠�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鑱旂郴浜虹紪鐮侊紙鍏宠仈member锛�" prop="memberId">
+        <el-input v-model="searchForm.memberId" placeholder="璇疯緭鍏ヨ仈绯讳汉缂栫爜锛堝叧鑱攎ember锛�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywcustomer:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:ywcustomer:create', 'business:ywcustomer:delete']">
+        <li><el-button type="primary" @click="$refs.operaYwCustomerWindow.open('鏂板缓杩愮淮瀹㈡埛淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:ywcustomer:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywcustomer:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
+        <el-table-column prop="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="industryId" label="鎵�灞炶涓氱紪鐮侊紙鍏宠仈category)" min-width="100px"></el-table-column>
+        <el-table-column prop="type" label="绫诲瀷 0涓汉 1浼佷笟" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="瀹㈡埛" min-width="100px"></el-table-column>
+        <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
+        <el-table-column prop="idcardNo" label="韬唤璇佸彿锛堝姞瀵嗭級" min-width="100px"></el-table-column>
+        <el-table-column prop="idcardDecode" label="璇佷欢鏄剧ず淇℃伅" min-width="100px"></el-table-column>
+        <el-table-column prop="code" label="瀹㈡埛缂栫爜" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵�� 0姝e父 1绂佺敤" min-width="100px"></el-table-column>
+        <el-table-column prop="highCheckor" label="韬唤 0鑰佹澘 1瓒呯骇绠$悊鍛�" min-width="100px"></el-table-column>
+        <el-table-column prop="lastLoginDate" label="鏈�杩戠櫥褰曟椂闂�" min-width="100px"></el-table-column>
+        <el-table-column prop="loginNum" label="鐧诲綍娆℃暟" min-width="100px"></el-table-column>
+        <el-table-column prop="userId" label="绯荤粺鐧诲綍鐢ㄦ埛缂栫爜(鍏宠仈system_user)" min-width="100px"></el-table-column>
+        <el-table-column prop="idcardType" label="璇佷欢绫诲瀷 0韬唤璇� 1娓境璇佷欢 2鎶ょ収" min-width="100px"></el-table-column>
+        <el-table-column prop="accountBank" label="寮�鎴烽摱琛�" min-width="100px"></el-table-column>
+        <el-table-column prop="accountNo" label="璐﹀彿" min-width="100px"></el-table-column>
+        <el-table-column prop="accountPhone" label="璐︽埛鐢佃瘽" min-width="100px"></el-table-column>
+        <el-table-column prop="creditCard" label="缁熶竴淇$敤浠g爜" min-width="100px"></el-table-column>
+        <el-table-column prop="fpType" label="榛樿鍙戠エ绫诲瀷 0澧炲�肩◣鏅�氬彂绁� 1澧炲�肩◣涓撶敤鍙戠エ" min-width="100px"></el-table-column>
+        <el-table-column prop="accountAddr" label="璐﹀彿娉ㄥ唽鍦板潃" min-width="100px"></el-table-column>
+        <el-table-column prop="identityType" label="韬唤绫诲瀷0鑰佹澘瓒呯骇绠$悊鍛�;1=浜轰簨绠$悊鍛�;2=鍛樺伐" min-width="100px"></el-table-column>
+        <el-table-column prop="email" label="閭" min-width="100px"></el-table-column>
+        <el-table-column prop="memberId" label="鑱旂郴浜虹紪鐮侊紙鍏宠仈member锛�" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:ywcustomer:update', 'business:ywcustomer:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaYwCustomerWindow.open('缂栬緫杩愮淮瀹㈡埛淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:ywcustomer:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywcustomer:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaYwCustomerWindow ref="operaYwCustomerWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaYwCustomerWindow from './components/OperaYwCustomerWindow'
+export default {
+  name: 'YwCustomer',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaYwCustomerWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        remark: '',
+        industryId: '',
+        type: '',
+        name: '',
+        phone: '',
+        idcardNo: '',
+        idcardDecode: '',
+        code: '',
+        status: '',
+        highCheckor: '',
+        lastLoginDate: '',
+        loginNum: '',
+        userId: '',
+        idcardType: '',
+        accountBank: '',
+        accountNo: '',
+        accountPhone: '',
+        creditCard: '',
+        fpType: '',
+        accountAddr: '',
+        identityType: '',
+        email: '',
+        memberId: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '杩愮淮瀹㈡埛淇℃伅琛�',
+      api: '/client/ywCustomer',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/client/components/OperaYwCustomerWindow.vue b/admin/src/views/client/components/OperaYwCustomerWindow.vue
new file mode 100644
index 0000000..a116521
--- /dev/null
+++ b/admin/src/views/client/components/OperaYwCustomerWindow.vue
@@ -0,0 +1,150 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵�灞炶涓氱紪鐮侊紙鍏宠仈category)" prop="industryId">
+        <el-input v-model="form.industryId" placeholder="璇疯緭鍏ユ墍灞炶涓氱紪鐮侊紙鍏宠仈category)" v-trim/>
+      </el-form-item>
+      <el-form-item label="绫诲瀷 0涓汉 1浼佷笟" prop="type">
+        <el-input v-model="form.type" placeholder="璇疯緭鍏ョ被鍨� 0涓汉 1浼佷笟" v-trim/>
+      </el-form-item>
+      <el-form-item label="瀹㈡埛" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵嬫満鍙�" prop="phone">
+        <el-input v-model="form.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" v-trim/>
+      </el-form-item>
+      <el-form-item label="韬唤璇佸彿锛堝姞瀵嗭級" prop="idcardNo">
+        <el-input v-model="form.idcardNo" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙凤紙鍔犲瘑锛�" v-trim/>
+      </el-form-item>
+      <el-form-item label="璇佷欢鏄剧ず淇℃伅" prop="idcardDecode">
+        <el-input v-model="form.idcardDecode" placeholder="璇疯緭鍏ヨ瘉浠舵樉绀轰俊鎭�" v-trim/>
+      </el-form-item>
+      <el-form-item label="瀹㈡埛缂栫爜" prop="code">
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ュ鎴风紪鐮�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0姝e父 1绂佺敤" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0姝e父 1绂佺敤" v-trim/>
+      </el-form-item>
+      <el-form-item label="韬唤 0鑰佹澘 1瓒呯骇绠$悊鍛�" prop="highCheckor">
+        <el-input v-model="form.highCheckor" placeholder="璇疯緭鍏ヨ韩浠� 0鑰佹澘 1瓒呯骇绠$悊鍛�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏈�杩戠櫥褰曟椂闂�" prop="lastLoginDate">
+        <el-date-picker v-model="form.lastLoginDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶杩戠櫥褰曟椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鐧诲綍娆℃暟" prop="loginNum">
+        <el-input v-model="form.loginNum" placeholder="璇疯緭鍏ョ櫥褰曟鏁�" v-trim/>
+      </el-form-item>
+      <el-form-item label="绯荤粺鐧诲綍鐢ㄦ埛缂栫爜(鍏宠仈system_user)" prop="userId">
+        <el-input v-model="form.userId" placeholder="璇疯緭鍏ョ郴缁熺櫥褰曠敤鎴风紪鐮�(鍏宠仈system_user)" v-trim/>
+      </el-form-item>
+      <el-form-item label="璇佷欢绫诲瀷 0韬唤璇� 1娓境璇佷欢 2鎶ょ収" prop="idcardType">
+        <el-input v-model="form.idcardType" placeholder="璇疯緭鍏ヨ瘉浠剁被鍨� 0韬唤璇� 1娓境璇佷欢 2鎶ょ収" v-trim/>
+      </el-form-item>
+      <el-form-item label="寮�鎴烽摱琛�" prop="accountBank">
+        <el-input v-model="form.accountBank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" v-trim/>
+      </el-form-item>
+      <el-form-item label="璐﹀彿" prop="accountNo">
+        <el-input v-model="form.accountNo" placeholder="璇疯緭鍏ヨ处鍙�" v-trim/>
+      </el-form-item>
+      <el-form-item label="璐︽埛鐢佃瘽" prop="accountPhone">
+        <el-input v-model="form.accountPhone" placeholder="璇疯緭鍏ヨ处鎴风數璇�" v-trim/>
+      </el-form-item>
+      <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCard">
+        <el-input v-model="form.creditCard" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="榛樿鍙戠エ绫诲瀷 0澧炲�肩◣鏅�氬彂绁� 1澧炲�肩◣涓撶敤鍙戠エ" prop="fpType">
+        <el-input v-model="form.fpType" placeholder="璇疯緭鍏ラ粯璁ゅ彂绁ㄧ被鍨� 0澧炲�肩◣鏅�氬彂绁� 1澧炲�肩◣涓撶敤鍙戠エ" v-trim/>
+      </el-form-item>
+      <el-form-item label="璐﹀彿娉ㄥ唽鍦板潃" prop="accountAddr">
+        <el-input v-model="form.accountAddr" placeholder="璇疯緭鍏ヨ处鍙锋敞鍐屽湴鍧�" v-trim/>
+      </el-form-item>
+      <el-form-item label="韬唤绫诲瀷0鑰佹澘瓒呯骇绠$悊鍛�;1=浜轰簨绠$悊鍛�;2=鍛樺伐" prop="identityType">
+        <el-input v-model="form.identityType" placeholder="璇疯緭鍏ヨ韩浠界被鍨�0鑰佹澘瓒呯骇绠$悊鍛�;1=浜轰簨绠$悊鍛�;2=鍛樺伐" v-trim/>
+      </el-form-item>
+      <el-form-item label="閭" prop="email">
+        <el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鑱旂郴浜虹紪鐮侊紙鍏宠仈member锛�" prop="memberId">
+        <el-input v-model="form.memberId" placeholder="璇疯緭鍏ヨ仈绯讳汉缂栫爜锛堝叧鑱攎ember锛�" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaYwCustomerWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        remark: '',
+        industryId: '',
+        type: '',
+        name: '',
+        phone: '',
+        idcardNo: '',
+        idcardDecode: '',
+        code: '',
+        status: '',
+        highCheckor: '',
+        lastLoginDate: '',
+        loginNum: '',
+        userId: '',
+        idcardType: '',
+        accountBank: '',
+        accountNo: '',
+        accountPhone: '',
+        creditCard: '',
+        fpType: '',
+        accountAddr: '',
+        identityType: '',
+        email: '',
+        memberId: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/client/ywCustomer',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/client/staffList.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/client/staffList.vue
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/contract/contractList.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/contract/contractList.vue
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index c50e64b..6fa6e1d 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -183,16 +183,6 @@
         </div>
       </div>
     </div>
-    <TaskDetail v-if="isShowDetail" ref="DetailRef" @success="SubSuccess('isShowDetail')" />
-    <VisReportDetail v-if="isShowReport" ref="VisReportDetailRef" @success="SubSuccess('isShowReport')" />
-    <DangetDetail v-if="isShowDanger" ref="DangetDetailRef" @success="SubSuccess('isShowDanger')" />
-    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" @success="SubSuccess('isShowDriver')" />
-    <!-- 鐢ㄨ溅鐢宠 -->
-    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="getTaskList" />
-    <!-- 闅愭偅 -->
-    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getTaskList" />
-    <!-- 棰勭害璇︽儏 -->
-    <OperaVisitsDesWindow ref="OperaVisitsDesWindow" />
   </div>
 </template>
 
@@ -205,24 +195,8 @@
   getAppHeaderNav
 } from '@/api'
 import { level } from '@/api/business/visits'
-import TaskDetail from '@/views/task/visSubDetail.vue'
-import VisReportDetail from '@/views/task/visReportDetail.vue'
-import DangetDetail from '@/views/task/dangetDetail.vue'
-import DriverDetail from '@/views/task/driverDetail.vue'
-import OperaCarUseBookWindow from '@/components/business/OperaCarUseBookWindow'
-import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow'
-import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow'
 const colors = ['#52a4f7', '#7678f7', '#5fc6d5']
 export default {
-  components: {
-    TaskDetail,
-    VisReportDetail,
-    DangetDetail,
-    DriverDetail,
-    OperaCarUseBookWindow,
-    OperaHiddenDangerWindow,
-    OperaVisitsDesWindow
-  },
   data() {
     return {
       colors,
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 6cdf919..0569816 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -3,7 +3,7 @@
     <img src="@/assets/images/bg@2x.png" class="main_bg" alt="">
     <div class="login_wrap">
       <div class="login_img">
-        <div class="h2">瀹夊窘瀹夋嘲鐗╂祦鏈夐檺璐d换鍏徃</div>
+        <div class="h2">闃滃畞鏂囦綋涓績</div>
         <div class="h3">鏅烘収鐗╂祦鍥尯瀹夋秷涓�浣撳寲绯荤粺</div>
       </div>
       <div class="form_wrap">
diff --git a/admin/src/views/meeting/bookings.vue b/admin/src/views/meeting/bookings.vue
deleted file mode 100644
index ffc3d68..0000000
--- a/admin/src/views/meeting/bookings.vue
+++ /dev/null
@@ -1,380 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:bookings:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="浼氳瀹�" prop="roomId">
-        <el-select v-model="searchForm.roomId" filterable clearable placeholder="璇烽�夋嫨浼氳瀹�">
-          <el-option v-for="item in rooms" :key="item.id" :value="item.id" :label="item.name" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="棰勭害閮ㄩ棬" prop="department">
-        <el-cascader v-model="searchForm.department" :options="department" :show-all-levels="false" clearable
-          :props="props"></el-cascader>
-        <!-- @change="handleChange" -->
-        <!-- <el-select
-          v-model="searchForm.departmentId"
-          filterable
-          clearable
-          placeholder="璇烽�夋嫨閮ㄩ棬"
-        >
-          <el-option v-for="item in department" :key="item.id" :value="item.id" :label="item.name" />
-        </el-select> -->
-      </el-form-item>
-      <el-form-item label="浼氳涓婚" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヤ細璁富棰�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="棰勭害浜�" prop="realName">
-        <el-input v-model="searchForm.realName" placeholder="璇疯緭鍏ラ绾︿汉" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="浼氳鐘舵��" prop="status">
-        <el-select v-model="searchForm.meetingStatus" filterable clearable placeholder="璇烽�夋嫨鐘舵��">
-          <el-option v-for="item in status" :key="item.id" :value="item.id" :label="item.name" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="璧锋鏃堕棿" prop="startTime">
-        <el-date-picker v-model="date" type="datetimerange" range-separator="鑷�" value-format="yyyy-MM-dd HH:mm:ss"
-          :default-time="['00:00:00', '23:59:59']" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿"
-          @change="selectDate"></el-date-picker>
-        <!-- <el-date-picker v-model="searchForm.startTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫椂闂�" @change="search"/> -->
-      </el-form-item>
-      <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
-        <el-radio-button label="0">褰撳ぉ</el-radio-button>
-        <el-radio-button label="1">杩�7澶�</el-radio-button>
-        <el-radio-button label="2">杩�30澶�</el-radio-button>
-      </el-radio-group>
-      <!-- <el-form-item label="缁撴潫鏃堕棿" prop="endTime">
-        <el-date-picker v-model="searchForm.endTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ョ粨鏉熸椂闂�" @change="search"/>
-      </el-form-item> -->
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="[
-        'business:bookings:create',
-        'business:bookings:exportExcel',
-      ]">
-        <li>
-          <el-button type="primary" @click="$refs.operaBookingsWindow.open('鏂板缓浼氳')"
-            v-permissions="['business:bookings:create']">鏂板缓</el-button>
-        </li>
-        <!-- <li><el-button @click="deleteByIdInBatch" v-permissions="['business:bookings:delete']">鍒犻櫎</el-button></li> -->
-        <li>
-          <el-button :loading="isWorking.export" v-permissions="['business:bookings:exportExcel']"
-            @click="exportExcel">瀵煎嚭</el-button>
-        </li>
-      </ul>
-      <el-table v-loading="isWorking.search" :data="tableData.list" stripe
-        @selection-change="handleSelectionChange">
-        <!-- <el-table-column type="selection" align="center" width="55"></el-table-column> -->
-        <el-table-column prop="name" label="浼氳涓婚" align="center" min-width="120px" show-overflow-tooltip>
-          <template slot-scope="{ row }">
-            <span class="long-title-style">{{ row.name }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="roomName" label="浼氳瀹�" align="center" min-width="120px" show-overflow-tooltip>
-          <template slot-scope="{ row }">
-            <span class="long-title-style">{{ row.roomName }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="meetingTime" label="浼氳鏃堕棿" align="center" min-width="120px"></el-table-column>
-        <el-table-column prop="managerInfo" label="棰勭害浜�" align="center" min-width="100px"></el-table-column>
-        <el-table-column label="浼氳鐘舵��" align="center" min-width="60px">
-          <template slot-scope="{ row }">
-            <span v-if="row.meetingStatus == 1">鏈紑濮�</span>
-            <span v-if="row.meetingStatus == 2">杩涜涓�</span>
-            <span v-if="row.meetingStatus == 3">宸茬粨鏉�</span>
-            <span v-if="row.meetingStatus == 4">鍗冲皢寮�濮�</span>
-            <span v-if="row.meetingStatus == 5">宸叉挙閿�</span>
-            <!-- {{ row.status==0 ? '姝e父' : '鍙栨秷' }} -->
-          </template>
-        </el-table-column>
-        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" align="center" min-width="150px"></el-table-column>
-        <!-- <el-table-column prop="content" label="浼氳鍐呭" min-width="100px"></el-table-column> -->
-        <el-table-column v-if="
-          containPermissions([
-            'business:bookings:update',
-            'business:bookings:delete',
-          ])
-        " label="鎿嶄綔" min-width="140" align="center" fixed="right">
-          <template slot-scope="{ row }">
-            <template>
-              <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('浼氳璇︽儏', row)">鏌ョ湅璇︽儏</el-button>
-              <el-button v-if="row.meetingStatus == '1'" type="text"
-                @click="$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', row)"
-                v-permissions="['business:bookings:update']">缂栬緫</el-button>
-              <el-button type="text" v-if="row.meetingStatus == '1'" @click="handleStart(row)">寮�濮�</el-button>
-              <el-button type="text" v-if="row.meetingStatus == '2'" @click="handleEnd(row)">缁撴潫</el-button>
-              <el-button v-if="row.meetingStatus == '1'" type="text" @click="cancelMeeting(row.id)"
-                v-permissions="['business:bookings:update']">鎾ゅ洖</el-button>
-            </template>
-            <!-- <el-button v-else type="text" @click="deleteById(row)" v-permissions="['business:bookings:delete']">鍒犻櫎</el-button> -->
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaBookingsWindow ref="operaBookingsWindow" @success="handlePageChange" />
-    <OperaBookingsDetailWindow @success="search" ref="operaBookingsDetailWindow" />
-
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaBookingsWindow from '@/views/meeting/components/OperaBookingsWindow'
-import OperaBookingsDetailWindow from '@/views/meeting/components/OperaBookingsDetailWindow'
-import { findList } from '@/api/meeting/rooms'
-import { getSystemDictData } from '@/api/system/dictData'
-import { fetchList } from '@/api/business/company'
-import { cancelById, bookingsDetail, startEarlyById, startById, meetingEndById } from '@/api/meeting/bookings'
-import { timeForMat } from '@/utils/util'
-export default {
-  name: 'Bookings',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaBookingsWindow, OperaBookingsDetailWindow },
-  data() {
-    return {
-      date: [],
-      // 鎼滅储
-      searchForm: {
-        roomId: '',
-        // departmentId: [],
-        department: [],
-        realName: '',
-        meetingStatus: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        remark: '',
-        name: '',
-        startTime: '',
-        endTime: '',
-        content: '',
-        radio: 0
-      },
-      props: {
-        label: 'name',
-        value: 'id',
-        checkStrictly: true
-      },
-      rooms: [
-        { name: '201浼氳瀹�', id: '0' }
-      ],
-      department: [
-        { name: '寮�鍙戦儴闂�', id: '0' }
-      ],
-      status: [
-        { name: '鏈紑濮�', id: 1 },
-        { name: '鍗冲皢寮�濮�', id: 4 },
-        { name: '杩涜涓�', id: 2 },
-        { name: '宸叉挙閿�', id: 5 },
-        { name: '宸茬粨鏉�', id: 3 }
-      ],
-      link: 'https://dmtest.ahapp.net/meeting_h5/' // H5_LINK_ADDR
-    }
-  },
-  provide() {
-    return {
-      rooms: () => this.rooms
-    }
-  },
-  created() {
-    this.config({
-      module: '浼氳瀹ら瀹氫俊鎭〃',
-      api: '/meeting/bookings',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    fetchList(1)
-      .then(res => {
-        this.department = this.newTree(res)
-      })
-    getSystemDictData('H5_LINK_ADDR')
-      .then(res => {
-        console.log(res)
-        this.link = res.code
-      })
-    findList({ status: 0 })
-      .then(res => {
-        this.rooms = res
-      })
-    this.changeRadio('0')
-  },
-  methods: {
-    changeRadio(e) {
-      if (e === '0') {
-        this.searchForm.startTime = timeForMat(0)[0]
-        this.searchForm.endTime = timeForMat(0)[1]
-        this.date = timeForMat(0)
-      } else if (e === '1') {
-        this.searchForm.startTime = timeForMat(6)[0]
-        this.searchForm.endTime = timeForMat(6)[1]
-        this.date = timeForMat(6)
-      } else if (e === '2') {
-        this.searchForm.startTime = timeForMat(29)[0]
-        this.searchForm.endTime = timeForMat(29)[1]
-        this.date = timeForMat(29)
-      }
-      this.search()
-    },
-    newTree(tree) {
-      if (tree == null) {
-        return []
-      }
-      return tree.map(item => {
-        const newItem = { ...item }
-        if (newItem) {
-          newItem.children = newItem.childList
-        }
-        if (item.children && item.children.length == 0) {
-          this.$delete(newItem, 'children')
-        } else {
-          newItem.children = this.newTree(newItem.children)
-        }
-        return newItem
-      })
-    },
-    selectDate(v) {
-      this.searchForm.endTime = v[1] + ' 23:59:59'
-      this.searchForm.startTime = v[0] + ' 00:00:00'
-      this.searchForm.radio = null
-    },
-    reset() {
-      this.$refs.searchForm.resetFields()
-      this.date = []
-      this.searchForm.radio = '0'
-      this.searchForm.startTime = ''
-      this.searchForm.endTime = ''
-      this.changeRadio('0')
-    },
-    copy(row) {
-      const text = `${row.realName} 閭�璇锋偍鍔犲叆浼氳\n浼氳涓婚锛�${row.name}\n浼氳瀹わ細${row.roomName}\n浼氳鏃堕棿锛�${row.meetingTime}\n鐐瑰嚮閾炬帴鐩存帴鍔犲叆浼氳锛歕n${this.link}?id=${row.id}`
-      this.$copyText(text)
-        .then(() => {
-          this.$message.success('浼氳淇℃伅澶嶅埗鎴愬姛锛屽幓鍒嗕韩缁欏悓浜嬪惂~')
-        })
-        .catch(e => {
-        })
-    },
-    handleStart(row) {
-      this.$dialog.messageWaring('寮�濮嬩細璁�', '鏄惁寮�濮嬪綋鍓嶄細璁紵')
-        .then(() => {
-          let fn = new Date(row.startTime).getTime() > new Date().getTime() ? startEarlyById : startById
-          fn({ id: row.id })
-            .then(() => {
-              this.$message.success('浼氳宸插紑濮�')
-              this.handlePageChange()
-            })
-            .catch(e => {
-            })
-        })
-    },
-    handleEnd(row) {
-      this.$dialog.messageWaring('缁撴潫浼氳', '鏄惁缁撴潫褰撳墠浼氳锛�')
-        .then(() => {
-          meetingEndById({ id: row.id })
-            .then(() => {
-              this.$message.success('浼氳宸茬粨鏉�')
-              this.handlePageChange()
-            })
-            .catch(e => {
-            })
-        })
-    },
-    cancelMeeting(id) {
-      this.$dialog.messageWaring('鍙栨秷浼氳', '鏄惁鍙栨秷褰撳墠浼氳锛�')
-        .then(() => {
-          cancelById({ id })
-            .then(() => {
-              this.$message.success('鍙栨秷鎴愬姛')
-              this.handlePageChange()
-            })
-            .catch(e => {
-            })
-        })
-    },
-    showDetail(id) {
-      bookingsDetail(id)
-        .then(res => {
-          this.$refs.operaBookingsDetailWindow.open('浼氳璇︽儏', res)
-        })
-        .catch(e => {
-        })
-    },
-    editBookings(id) {
-      bookingsDetail(id)
-        .then(res => {
-          this.$refs.operaBookingsWindow.open('缂栬緫浼氳棰勭害', res)
-        })
-        .catch(e => {
-        })
-    },
-    handlePageChange(pageIndex) {
-      this.__checkApi()
-      this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex
-      this.isWorking.search = true
-      const form = JSON.parse(JSON.stringify(this.searchForm))
-      if (form.department.length) {
-        form.departmentId = form.department[form.department.length - 1]
-      }
-      this.api.fetchList({
-        page: this.tableData.pagination.pageIndex,
-        capacity: this.tableData.pagination.pageSize,
-        model: form,
-        sorts: this.tableData.sorts
-      })
-        .then(data => {
-          this.tableData.list = data.records
-          this.tableData.pagination.total = data.total
-        })
-        .catch(e => {
-          // this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-          this.isWorking.search = false
-        })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.detail_modal {
-  padding: 20px 16px;
-
-  .title {
-    text-align: center;
-    font-weight: 600;
-    font-size: 16px;
-    margin-bottom: 20px;
-  }
-
-  .h1 {
-    font-weight: 600;
-    font-size: 16px;
-    margin-bottom: 15px;
-  }
-
-  .line {
-    display: flex;
-    margin-bottom: 10px;
-
-    .label {
-      width: 70px;
-      color: #888888;
-    }
-
-    .value {
-      color: #333333;
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue b/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue
deleted file mode 100644
index 2e7463d..0000000
--- a/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue
+++ /dev/null
@@ -1,212 +0,0 @@
-<template>
-  <GlobalAlertWindow
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-    width="600px"
-  >
-    <div class="title-style">
-      <div class="header-title">{{ form.name }}</div>
-      <div class="item-value">{{ `${form.roomName} ${form.meetingTime}` }}</div>
-    </div>
-    <div class="content-style">
-      <div class="item">
-        <div class="item-title">鍙備細浜哄憳</div>
-        <div>
-          {{ form.sysList.map((item) => `${item.realName}`).join("锛�") }}
-        </div>
-      </div>
-      <div class="item">
-        <div class="item-title">浼氳鍐呭</div>
-        <div class="item-value">{{ form.content || "鏃�" }}</div>
-      </div>
-      <div v-if="form.projectList.length" class="item">
-        <div class="">鏈嶅姟椤�</div>
-        <div class="item-value">
-          {{ form.projectList.map((item) => item.projectName).join(" | ") }}
-        </div>
-      </div>
-      <div class="item" v-if="form.fileList.length">
-        <div class="item-title">闄勪欢</div>
-        <div>
-          <FileLink
-            :links="form.fileList"
-            linkName="fileurlFull"
-            :isUpload="false"
-          />
-        </div>
-      </div>
-      <div class="item" v-if="!!form.remark">
-        <div class="item-title">澶囨敞</div>
-        <div class="item-value">{{ form.remark }}</div>
-      </div>
-    </div>
-    <div class="bottom-style">
-      <div class="item-title">棰勭害浜�</div>
-      <div class="item-value">{{ form.managerInfo }}</div>
-    </div>
-    <div slot="footer">
-      <el-button type="primary" v-if="form.meetingStatus == 1" @click="openCancel('0')">鎾ら攢</el-button>
-      <el-button v-if="form.meetingStatus == 2" type="primary" @click="openCancel('1')">缁撴潫</el-button>
-      <el-button @click="visible = false">鍙栨秷</el-button>
-    </div>
-    <!-- 鍙栨秷/缁撴潫 -->
-    <el-dialog
-      :title="cancelParam.falg == '1' ? '缁撴潫浼氳' : '鎾ら攢浼氳'"
-      :visible.sync="isShowCancel"
-      append-to-body
-      width="500px"
-    >
-      <el-form style="padding: 30px">
-        <el-form-item label="鎾ゅ洖璇存槑">
-          <el-input
-            type="textarea"
-            :rows="4"
-            placeholder="璇疯緭鍏ヨ鏄庛��"
-            v-model="cancelParam.businessRemark"
-          >
-          </el-input>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowCancel = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="onSubCancel()">纭畾</el-button>
-      </span>
-    </el-dialog>
-  </GlobalAlertWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-import FileLink from '@/views/meeting/components/common/FileLink'
-import { cancelById, overBookById } from '@/api/meeting/bookings'
-export default {
-  name: 'OperaBookingsDetailWindow',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow, FileLink },
-  data () {
-    return {
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        id: null,
-        name: '',
-        roomName: '',
-        meetingTime: '',
-        date: '',
-        editDate: '',
-        projectList: [],
-        remark: '',
-        roomId: '',
-        meetingStatus: '',
-        startTime: '',
-        endTime: '',
-        times: [],
-        content: '',
-        sysList: [],
-        fileList: [],
-        managerInfo: ''
-      },
-      // room: [],
-      sysList: [],
-      projectList: [],
-      timelist: [],
-
-      isShowCancel: false,
-      cancelParam: {
-        flag: '0'
-      },
-      // 楠岃瘉瑙勫垯
-      rules: {
-
-      }
-    }
-  },
-  created () {
-    this.config({
-      api: '/meeting/bookings',
-      'field.id': 'id'
-    })
-  },
-  methods: {
-    openCancel (flag) {
-      this.isShowCancel = true
-      this.cancelParam.flag = flag
-    },
-    onSubCancel () {
-      const { id } = this.form
-      const fn = this.cancelParam.flag === '0' ? cancelById : overBookById
-      fn({ id, businessRemark: this.cancelParam.businessRemark }).then(res => {
-        this.$tip.success('鎻愪氦鎴愬姛')
-        this.visible = false
-        this.isShowCancel = false
-        this.$emit('success')
-      })
-    }
-    /**
-     * 鎵撳紑绐楀彛
-     * @title 绐楀彛鏍囬
-     * @target 缂栬緫鐨勫璞�
-     */
-    //  open (title, target) {
-    //   this.title = title
-    //   this.visible = true
-    //   this.timelist = []
-    //   // 鏂板缓
-    //   if (target == null) {
-    //     this.$nextTick(() => {
-    //       this.$refs.form.resetFields()
-    //       this.form[this.configData['field.id']] = null
-    //     })
-    //     return
-    //   }
-    //   // 缂栬緫
-    //   this.$nextTick(() => {
-    //     for (const key in this.form) {
-    //       this.form[key] = target[key]
-    //     }
-    //     // this.form.projectList = target.projectList ? target.projectList.map(item => item.projectId) : []
-    //     // this.form.sysList = this.form.sysList ? this.form.sysList.map(item => item.userId) : []
-    //     // this.form.date = target.startTime.split(' ')[0]
-
-    //   })
-    // },
-
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-::v-deep .el-dialog__body {
-  padding: 0;
-}
-.title-style {
-  padding: 20px;
-  border-bottom: 10px #f7f7f7 solid;
-}
-.content-style {
-  padding: 20px;
-  border-bottom: 10px #f7f7f7 solid;
-}
-.item {
-  padding: 5px 0;
-}
-.header-title {
-  font-size: 16px;
-  font-weight: 600;
-  padding-bottom: 5px;
-}
-.item-title {
-  font-size: 16px;
-  color: #999;
-  padding-bottom: 5px;
-}
-.item-value {
-  font-size: 14px;
-  color: #111;
-}
-.bottom-style {
-  padding: 20px;
-}
-</style>
diff --git a/admin/src/views/meeting/components/OperaBookingsWindow.vue b/admin/src/views/meeting/components/OperaBookingsWindow.vue
deleted file mode 100644
index 133272d..0000000
--- a/admin/src/views/meeting/components/OperaBookingsWindow.vue
+++ /dev/null
@@ -1,489 +0,0 @@
-<template>
-  <GlobalAlertWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm"
-    width="840px">
-    <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�">
-      <el-form-item label="鍏宠仈浼氳瀹�" prop="roomId">
-        <el-select v-model="form.roomId" filterable clearable :disabled="isEdit" placeholder="璇烽�夋嫨鍏宠仈浼氳瀹�"
-          @change="selectRoom">
-          <el-option v-for="item in rooms()" :key="item.id" :value="item.id" :label="item.name" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="棰勫畾鏃ユ湡" prop="date">
-        <el-date-picker :disabled="isEdit" v-model="form.date" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨棰勫畾鏃ユ湡"
-          @change="selectDate"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="棰勫畾鏃堕棿" prop="times">
-        <div class="time-style">
-          <div class="time-item" v-for="(item, index) in timelist" :key="item.id" :class="{
-            'time-item-sel': form.times.indexOf(index) != -1,
-            'time-item-disable': item.isUse,
-            'disable': item.bookingTimeId
-          }" @click="selectTimes(index, item)">{{ `${item.startTime}-${item.endTime}` }}</div>
-        </div>
-      </el-form-item>
-      <el-form-item label="浼氳涓婚" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ヤ細璁富棰�" :maxlength="30" v-trim />
-      </el-form-item>
-
-      <div class="df_ac">
-        <el-form-item label="鍙備細浜哄憳">
-          <el-select v-model="form.sysList" filterable clearable multiple placeholder="閫夋嫨閮ㄩ棬鎴愬憳">
-            <el-option v-for="item in sysList" :key="item.id" :value="item.id"
-              :label="item.department ? `${item.department.name}-${item.realname}` : item.realname"></el-option>
-            <!-- <el-option :key="1" :value="1" label="绂佺敤" /> -->
-          </el-select>
-        </el-form-item>
-        <el-form-item class="ml10" label-width="140px" label="鏄惁閫氱煡鍙備細浜哄憳">
-          <el-radio v-model="form.joinNotice" :label="1">涓嶉�氱煡</el-radio>
-          <el-radio v-model="form.joinNotice" :label="0">閫氱煡</el-radio>
-        </el-form-item>
-      </div>
-      <el-form-item label="浼氳鍐呭" prop="content">
-        <el-input type="textarea" v-model="form.content" :maxlength="300" show-word-limit
-          :autosize="{ minRows: 4, maxRows: 12 }" placeholder="璇疯緭鍏ヤ細璁唴瀹�" v-trim />
-      </el-form-item>
-      <el-form-item v-if="projectList.length" label="閫夋嫨鏈嶅姟椤圭洰" prop="projectList">
-        <el-checkbox-group v-model="form.projectList">
-          <el-checkbox v-for="project in projectList" :label="project.id"
-            :key="project.id">{{ project.name }}</el-checkbox>
-        </el-checkbox-group>
-      </el-form-item>
-      <el-form-item label="浼氳闄勪欢" prop="fileList">
-        <div>
-          <el-button type="primary" icon="el-icon-upload" @click="$refs.upFile.click()">浼氳闄勪欢</el-button>
-        </div>
-        <div class="data-list">
-          <FileLink :links="form.fileList" linkName="fileFullUrl" />
-        </div>
-      </el-form-item>
-      <el-form-item label="浼氳澶囨敞" prop="remark">
-        <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ヤ細璁娉�" v-trim />
-      </el-form-item>
-      <input type="file" @change="upFiles" ref="upFile" style="display: none;" />
-    </el-form>
-
-    <el-dialog title="浼氳瀹ら绾︽儏鍐�" :visible.sync="isShowDetail" append-to-body width="600px">
-      <div class="detail_modal">
-        <div class="h1">{{ activeInfo.meetingName }}</div>
-        <div class="line">
-          <div class="label">浼氳鏃堕棿</div>
-          <div class="value" v-if="activeInfo.meetingDate">
-            {{ activeInfo.meetingDate.slice(5) }} {{ activeInfo.meetingTime }}
-          </div>
-        </div>
-        <div class="line">
-          <div class="label">浼氳瀹�</div>
-          <div class="value">{{ activeInfo.roomName }}</div>
-        </div>
-        <div class="line">
-          <div class="label">棰勭害浜�</div>
-          <div class="value">{{ activeInfo.bookingUserName }}</div>
-        </div>
-        <el-button @click="isShowDetail = false">鍏抽棴</el-button>
-      </div>
-    </el-dialog>
-  </GlobalAlertWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-import FileLink from '@/views/meeting/components/common/FileLink'
-import { upload } from '@/api/system/common'
-import { fetchList as userList } from '@/api/system/user'
-import { findListByObjId } from '@/api/meeting/projects'
-import { BookDetailById } from '@/api/meeting/bookings'
-import { findList } from '@/api/meeting/roomTime'
-import { numRule, arrayRule } from '@/utils/form'
-export default {
-  name: 'OperaBookingsWindow',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow, FileLink },
-  data() {
-    return {
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        id: null,
-        date: '',
-        editDate: '',
-        projectList: [],
-        remark: '',
-        name: '',
-        roomId: '',
-        startTime: '',
-        endTime: '',
-        times: [],
-        joinNotice: 1,
-        content: '',
-        sysList: [],
-        fileList: []
-      },
-      activeInfo: {},
-      isShowDetail: false,
-      isEdit: false,
-      // room: [],
-      sysList: [],
-      projectList: [],
-      timelist: [],
-      // 楠岃瘉瑙勫垯
-      rules: {
-        roomId: [
-          { required: true, validator: numRule, message: '璇烽�夋嫨鍏宠仈浼氳瀹�', tigger: 'change' }
-        ],
-        date: [
-          { required: true, message: '璇烽�夋嫨棰勫畾鏃ユ湡', tigger: 'change' }
-        ],
-        times: [
-          { required: true, validator: arrayRule, message: '璇烽�夋嫨棰勭害鏃堕棿', tigger: 'change' }
-        ],
-        sysList: [
-          { required: true, validator: arrayRule, message: '璇烽�夋嫨鍙備細浜哄憳', tigger: 'change' }
-        ],
-        name: [
-          { required: true, message: '璇烽�夋嫨杈撳叆浼氳涓婚', tigger: 'blur' }
-        ]
-        // content: [
-        //  { required: true, message: '璇疯緭鍏ヤ細璁唴瀹�', tigger: 'blur' }
-        // ],
-      }
-    }
-  },
-  inject: ['rooms'],
-  created() {
-    this.config({
-      api: '/meeting/bookings',
-      'field.id': 'id'
-    })
-    userList({
-      page: 1,
-      capacity: 9999,
-      model: { realname: this.filterText,querySpecial: 1, memberType: 2, companyType: 1 }
-    })
-      .then(res => {
-        console.log('userList', res)
-        this.sysList = res.records
-      })
-  },
-  methods: {
-    /**
-     * 鎵撳紑绐楀彛
-     * @title 绐楀彛鏍囬
-     * @target 缂栬緫鐨勫璞�
-     */
-    open(title, target) {
-      this.title = title
-      this.visible = true
-      this.timelist = []
-      this.isEdit = false
-      // 鏂板缓
-      if (target == null) {
-        this.$nextTick(() => {
-          this.$refs.form.resetFields()
-          this.form[this.configData['field.id']] = null
-        })
-        return
-      }
-      // 缂栬緫
-      this.$nextTick(() => {
-        for (const key in this.form) {
-          this.form[key] = target[key]
-        }
-        this.isEdit = true
-        this.form.projectList = target.projectList ? target.projectList.map(item => item.projectId) : []
-        this.form.sysList = this.form.sysList ? this.form.sysList.map(item => item.userId) : []
-        // console.log(target.startTime.split(' '));
-        // debugger
-        this.form.date = target.startTime.split(' ')[0]
-        this.getTimes(true)
-        this.selectRoom(this.form.roomId)
-      })
-    },
-    selectRoom(objId) {
-      this.getTimes()
-      findListByObjId({
-        objId: objId,
-        objType: 0
-      })
-        .then(res => {
-          this.projectList = res
-        })
-    },
-    selectDate(v) {
-      // console.log(v);
-      this.getTimes()
-    },
-    getTimes(isInit = false) {
-      this.form.times = []
-      this.timelist = []
-
-      if (this.form.date && this.form.roomId) {
-        findList({
-          yudingDate: this.form.date + ' 00:00:00',
-          roomId: this.form.roomId,
-          bookingId: this.form.id
-        })
-          .then(res => {
-            this.timelist = res
-            if (isInit) {
-              this.timelist.forEach((itme, index) => {
-                if (itme.isChoose) {
-                  itme.isUse = false
-                  this.form.times.push(index)
-                }
-              })
-              // let startTime = this.form.startTime.split(' ')[1]
-              // let endTime = this.form.endTime.split(' ')[1]
-              // let firstIndex = this.timelist.findIndex(item => item.startTime == startTime)
-              // let lastIndex = this.timelist.findIndex(item => item.endTime == endTime)
-              // let index = firstIndex
-              // while(index <= lastIndex) {
-              //   this.form.times.push(index)
-              //   index ++
-              // }
-              // console.log('startTime', startTime);
-              // console.log('endTime', endTime);
-              // console.log('firstIndex', firstIndex);
-              // console.log('lastIndex', lastIndex);
-              // console.log('this.form.times', this.form.times);
-            }
-          })
-      }
-    },
-    getDetail(id) {
-      BookDetailById({
-        id
-      }).then(res => {
-        this.activeInfo = res
-        this.isShowDetail = true
-      })
-    },
-    selectTimes(index, item) {
-      if (item.bookingTimeId) {
-        this.getDetail(item.bookingTimeId)
-        return
-      }
-      if (this.isEdit) {
-        return
-      }
-      const tempIndex = this.form.times.indexOf(index)
-      if (tempIndex != -1) {
-        if (tempIndex == 0) {
-          // console.log(this.form.times);
-          // debugger
-          this.form.times.splice(0, 1)
-        } else if (tempIndex == this.form.times.length - 1) {
-          this.form.times.splice(tempIndex, 1)
-        }
-      } else {
-        if (item.isUse) {
-          return
-        }
-        if (this.form.times.length && index + 1 !== this.form.times[0] && index - 1 !== this.form.times[this.form.times.length - 1]) {
-          this.$message.error('棰勭害鏃堕棿蹇呴』鏄浉閭荤殑锛�')
-          return
-        }
-        this.form.times.push(index)
-        this.form.times.sort((x, y) => x - y)
-      }
-      // console.log(this.form.times);
-    },
-    upFiles(file) {
-      const formdate = new FormData()
-      this.isUploading = true
-      formdate.append('file', file.target.files[0])
-      formdate.append('folder', 'projects')
-      upload(formdate)
-        .then(res => {
-          // console.log(this.form);
-          this.form.fileList.push({
-            name: res.originname,
-            url: res.url,
-            fileurl: res.imgaddr
-          })
-        })
-        .catch(err => {
-          console.log(err)
-        })
-        .finally(() => this.isUploading = false)
-      this.$refs.upFile.value = null
-    },
-    // 纭鏂板缓
-    __confirmCreate() {
-      this.$refs.form.validate((valid) => {
-        // debugger
-        if (!valid) {
-          return
-        }
-        // console.log(this.form);
-        // debugger
-        // 璋冪敤鏂板缓鎺ュ彛
-        this.isWorking = true
-        let sysList = [...this.form.sysList]
-        sysList = sysList.map(item => {
-          return { userId: item }
-        })
-        let projectList = [...this.form.projectList]
-        projectList = projectList.map(item => {
-          return { projectId: item }
-        })
-        const bookingTimeList = []
-        this.form.times.forEach(item => {
-          bookingTimeList.push({
-            timeId: this.timelist[item].id,
-            id: this.timelist[item].bookingTimeId
-          })
-        })
-        const startTime = this.form.date + ' ' + this.timelist[this.form.times[0]].startTime + ':00'
-        const endTime = this.form.date + ' ' + this.timelist[this.form.times[this.form.times.length - 1]].endTime + ':00'
-        this.api.create({
-          ...this.form,
-          sysList,
-          projectList,
-          startTime,
-          endTime,
-          bookingTimeList
-        })
-          .then(() => {
-            this.visible = false
-            this.$tip.apiSuccess('鏂板缓鎴愬姛')
-            this.$emit('success')
-          })
-          .catch(e => {
-            // this.$tip.apiFailed(e)
-          })
-          .finally(() => {
-            this.isWorking = false
-          })
-      })
-    },
-    // 纭淇敼
-    __confirmEdit() {
-      this.$refs.form.validate((valid) => {
-        if (!valid) {
-          return
-        }
-        // 璋冪敤鏂板缓鎺ュ彛
-        this.isWorking = true
-        let sysList = [...this.form.sysList]
-        sysList = sysList.map(item => {
-          return { userId: item }
-        })
-        let projectList = [...this.form.projectList]
-        projectList = projectList.map(item => {
-          return { projectId: item }
-        })
-        const bookingTimeList = []
-        this.form.times.forEach(item => {
-          bookingTimeList.push({
-            timeId: this.timelist[item].id,
-            id: this.timelist[item].bookingTimeId
-          })
-        })
-        const startTime = this.form.date + ' ' + this.timelist[this.form.times[0]].startTime + ':00'
-        const endTime = this.form.date + ' ' + this.timelist[this.form.times[this.form.times.length - 1]].endTime + ':00'
-        this.api.updateById({
-          ...this.form,
-          sysList,
-          projectList,
-          startTime,
-          endTime,
-          bookingTimeList
-        })
-          .then(() => {
-            this.visible = false
-            this.$tip.apiSuccess('淇敼鎴愬姛')
-            this.$emit('success')
-          })
-          .catch(e => {
-            // this.$tip.apiFailed(e)
-          })
-          .finally(() => {
-            this.isWorking = false
-          })
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/alertstyle.scss";
-@import "@/assets/style/variables.scss";
-
-::v-deep .el-input.is-disabled .el-input__inner {
-  background-color: #fff !important;
-  cursor: pointer;
-}
-
-.time-style {
-  display: flex;
-  flex-wrap: wrap;
-  cursor: pointer;
-
-  .time-item {
-    margin-right: 8px;
-    margin-bottom: 8px;
-    font-size: 14px;
-    font-weight: 400;
-    line-height: 14px;
-    width: 124px;
-    height: 36px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    border-radius: 5px;
-    color: #111;
-    border: #cccccc solid 1px;
-    cursor: pointer;
-  }
-
-  .time-item-sel {
-    border-color: $primary-color;
-    background-color: #f6f9fe;
-    color: $primary-color;
-  }
-
-  .time-item-disable {
-    color: #fff;
-    border-color: #cccccc;
-    background-color: #cccccc;
-  }
-
-  .disable {
-    border-color: #bed6f9;
-    background-color: #bed6f9;
-    color: #fff;
-  }
-}
-
-.detail_modal {
-  padding: 20px 16px;
-
-  .title {
-    text-align: center;
-    font-weight: 600;
-    font-size: 16px;
-    margin-bottom: 20px;
-  }
-
-  .h1 {
-    font-weight: 600;
-    font-size: 16px;
-    margin-bottom: 15px;
-  }
-
-  .line {
-    display: flex;
-    margin-bottom: 10px;
-
-    .label {
-      width: 70px;
-      color: #888888;
-    }
-
-    .value {
-      color: #333333;
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/meeting/components/OperaDevicesWindow.vue b/admin/src/views/meeting/components/OperaDevicesWindow.vue
deleted file mode 100644
index d6ac254..0000000
--- a/admin/src/views/meeting/components/OperaDevicesWindow.vue
+++ /dev/null
@@ -1,95 +0,0 @@
-<template>
-  <GlobalAlertWindow
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-  >
-    <el-form :model="form" ref="form" label-width="110px" label-suffix="锛�" :rules="rules">
-      <!-- <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-      </el-form-item> -->
-      <el-form-item label="闂ㄧID" prop="code">
-        <el-input v-model="form.code" placeholder="璇疯緭鍏ラ棬绂両D" v-trim/>
-      </el-form-item>
-      <el-form-item label="闂ㄧ鍚嶇О" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ラ棬绂佸悕绉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍏宠仈浼氳瀹�" prop="roomId">
-        <el-select
-          v-model="form.roomId"
-          filterable
-          clearable
-          placeholder="璇烽�夋嫨鍏宠仈浼氳瀹�"
-        >
-          <el-option v-for="item in room()" :key="item.id" :value="item.id" :label="item.name" />
-        </el-select>
-      </el-form-item>
-      <!-- <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
-        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
-      </el-form-item> -->
-    </el-form>
-  </GlobalAlertWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-import { numRule } from '@/utils/form'
-export default {
-  name: 'OperaDevicesWindow',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow },
-  data () {
-    return {
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        id: null,
-        name: '',
-        code: '',
-        roomId: '',
-      },
-      // 楠岃瘉瑙勫垯
-      rules: {
-        code: [
-         { required: true, message: '璇疯緭鍏ラ棬绂両D', tigger: 'blur' }
-        ],
-        name: [
-         { required: true, message: '璇疯緭鍏ラ棬绂佸悕绉�', tigger: 'blur' }
-        ],
-        roomId: [
-         { required: true, validator: numRule, message: '璇烽�夋嫨鍏宠仈浼氳瀹�', tigger: 'change' }
-        ],
-      }
-    }
-  },
-  inject: ['room'],
-  created () {
-    this.config({
-      api: '/meeting/devices',
-      'field.id': 'id'
-    })
-
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/alertstyle.scss";
-
-</style>
diff --git a/admin/src/views/meeting/components/OperaNoticeWindow.vue b/admin/src/views/meeting/components/OperaNoticeWindow.vue
deleted file mode 100644
index 47884d8..0000000
--- a/admin/src/views/meeting/components/OperaNoticeWindow.vue
+++ /dev/null
@@ -1,83 +0,0 @@
-<template>
-  <GlobalAlertWindow
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    width="70%"
-    @confirm="confirm"
-  >
-    <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鏍囬" prop="title">
-        <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰橈紝涓嶈秴杩�30涓瓧" maxlength="30" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍐呭" prop="content">
-        <!-- <el-input type="textarea" v-model="form.content" placeholder="璇疯緭鍏ュ唴瀹�" v-trim/> -->
-      </el-form-item>
-      <RichEditor :content="{ content: form.content }" @edit="form.content=$event"></RichEditor>
-
-      <!-- <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級" prop="memberId">
-        <el-input v-model="form.memberId" placeholder="璇疯緭鍏ョ敤鎴风紪鐮侊紙鍏宠仈member琛級" v-trim/>
-      </el-form-item>
-      <el-form-item label="瀵硅薄缂栫爜" prop="objId">
-        <el-input v-model="form.objId" placeholder="璇疯緭鍏ュ璞$紪鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="瀵硅薄绫诲瀷 " prop="objType">
-        <el-input v-model="form.objType" placeholder="璇疯緭鍏ュ璞$被鍨� " v-trim/>
-      </el-form-item>
-      <el-form-item label="娑堟伅绫诲瀷 0绯荤粺娑堟伅 1浼氳閫氱煡" prop="type">
-        <el-input v-model="form.type" placeholder="璇疯緭鍏ユ秷鎭被鍨� 0绯荤粺娑堟伅 1浼氳閫氱煡" v-trim/>
-      </el-form-item>
-      <el-form-item label="鐘舵�� 0鏈 1宸茶" prop="status">
-        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鏈 1宸茶" v-trim/>
-      </el-form-item> -->
-    </el-form>
-  </GlobalAlertWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-import RichEditor from '@/components/common/RichEditor.vue'
-export default {
-  name: 'OperaNoticeWindow',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow, RichEditor },
-  data () {
-    return {
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        id: null,
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        remark: '',
-        memberId: '',
-        title: '',
-        content: '',
-        objId: '',
-        objType: '',
-        type: '',
-        status: ''
-      },
-      // 楠岃瘉瑙勫垯
-      rules: {
-      }
-    }
-  },
-  created () {
-    this.config({
-      api: 'meeting/notice',
-      'field.id': 'id'
-    })
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/alertstyle.scss";
-</style>
diff --git a/admin/src/views/meeting/components/OperaProjectsWindow.vue b/admin/src/views/meeting/components/OperaProjectsWindow.vue
deleted file mode 100644
index 21c69d8..0000000
--- a/admin/src/views/meeting/components/OperaProjectsWindow.vue
+++ /dev/null
@@ -1,134 +0,0 @@
-<template>
-  <GlobalAlertWindow
-    v-loading="isUploading"
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-  >
-    <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�">
-      <el-form-item label="鍚嶇О" prop="name">
-        <el-input v-model="form.name" maxlength="6" placeholder="璇疯緭鍏ワ紝涓嶈秴杩�6涓瓧" v-trim/>
-      </el-form-item>
-      <el-form-item label="灞曠ず鍥�" prop="imgurlfull">
-        <!-- {{ form.imgurlfull }} -->
-        <UploadAvatarImage
-          :file="{ 'imgurlfull': form.imgurlfull, 'imgurl': form.imgurl }"
-          :uploadData="uploadData"
-          @uploadSuccess="uploadAvatarSuccess"
-          @uploadEnd="isUploading = false"
-          @uploadBegin="isUploading = true"
-        />
-      </el-form-item>
-      <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
-      </el-form-item>
-      <!-- <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
-      </el-form-item>
-
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍥炬爣" prop="imgurl">
-        <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
-        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
-      </el-form-item> -->
-    </el-form>
-  </GlobalAlertWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-import UploadAvatarImage from '@/components/common/UploadAvatarImage'
-export default {
-  name: 'OperaProjectsWindow',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow, UploadAvatarImage },
-  data () {
-    return {
-      isUploading: false,
-      uploadData: {
-        folder: 'projects'
-      },
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        id: null,
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        name: '',
-        remark: '',
-        imgurlfull: '',
-        imgurl: '',
-        status: '',
-        sortnum: ''
-      },
-      // 楠岃瘉瑙勫垯
-      rules: {
-      }
-    }
-  },
-  created () {
-    this.config({
-      api: '/meeting/projects',
-      'field.id': 'id'
-    })
-  },
-  methods: {
-    /**
-     * 鎵撳紑绐楀彛
-     * @title 绐楀彛鏍囬
-     * @target 缂栬緫鐨勫璞�
-     */
-     open (title, target) {
-      this.title = title
-      this.visible = true
-      this.form.imgurl = ''
-      this.form.imgurlfull = ''
-      debugger
-      // 鏂板缓
-      if (target == null) {
-        this.$nextTick(() => {
-          this.$refs.form.resetFields()
-          this.form[this.configData['field.id']] = null
-        })
-        return
-      }
-      // 缂栬緫
-      this.$nextTick(() => {
-        for (const key in this.form) {
-          this.form[key] = target[key]
-        }
-        console.log('this.form', this.form);
-      })
-    },
-    // 涓婁紶鍥剧墖
-    uploadAvatarSuccess(file) {
-      this.form.imgurl = file.imgurl;
-      this.form.imgurlfull = file.imgurlfull;
-    },
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/alertstyle.scss";
-</style>
diff --git a/admin/src/views/meeting/components/OperaRoomsWindow.vue b/admin/src/views/meeting/components/OperaRoomsWindow.vue
deleted file mode 100644
index ebe13ac..0000000
--- a/admin/src/views/meeting/components/OperaRoomsWindow.vue
+++ /dev/null
@@ -1,376 +0,0 @@
-<template>
-  <GlobalAlertWindow v-loading="isUploading" :title="title" :visible.sync="visible" :confirm-working="isWorking"
-    @confirm="confirm">
-    <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�">
-      <el-form-item label="浼氳瀹ゅ悕绉�" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ヤ細璁鍚嶇О" :maxlength="10" v-trim />
-      </el-form-item>
-      <el-form-item label="寮�鏀炬椂闂�" prop="timeRange">
-        <el-time-picker is-range value-format="HH:mm" format="HH:mm" v-model="timeRange" range-separator="鑷�"
-          start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" placeholder="閫夋嫨鏃堕棿鑼冨洿" @change="selectRange"></el-time-picker>
-      </el-form-item>
-      <el-form-item label="绮掑害鍒嗛挓" prop="intervalTime">
-        <el-input v-model="form.intervalTime" type="number" placeholder="璇疯緭鍏ユ椂闂寸矑搴︼紙鍒嗛挓锛�" v-trim />
-      </el-form-item>
-      <el-form-item label="瀹圭撼浜烘暟" prop="limitNum">
-        <el-input v-model="form.limitNum" type="number" placeholder="璇疯緭鍏ュ绾充汉鏁�" v-trim />
-      </el-form-item>
-      <el-form-item label="绠$悊鍛�" prop="sysList">
-        <el-select v-model="form.sysList" filterable multiple clearable placeholder="璇烽�夋嫨閮ㄩ棬">
-          <!-- :label="`${item.department.name}-${item.realname}`" -->
-          <el-option v-for="item in userList()" :key="item.id" :value="item.id"
-            :label="item.companyId ? `${item.companyName}-${item.companyName}` : item.realname" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鎻愪緵鏈嶅姟椤圭洰" prop="projectList">
-        <el-checkbox-group v-model="form.projectList">
-          <el-checkbox v-for="project in projectList" :label="project.id" :key="project.id">{{ project.name
-            }}</el-checkbox>
-        </el-checkbox-group>
-      </el-form-item>
-      <el-form-item label="绌洪棽灞曠ず鍐呭" prop="fileType">
-        <el-radio v-model="form.fileType" @change="changeFile" :label="2">鏃�</el-radio>
-        <el-radio v-model="form.fileType" @change="changeFile" :label="0">鍥剧墖</el-radio>
-        <el-radio v-model="form.fileType" @change="changeFile" :label="1">瑙嗛</el-radio>
-      </el-form-item>
-      <el-form-item v-if="form.fileType == 0" label="灞曠ず鍥剧墖" prop="imgurl">
-        <div class="upload_wrap">
-          <el-upload class="avatar-uploader" accept=".png,.jpg,.jpeg" :action="uploadImgUrl" :data="uploadData"
-            :show-file-list="false" :before-upload="beforeAvatarUpload" :on-error="uploadError"
-            :on-success="handleImgSuccess">
-            <div>
-              <i class="el-icon-plus avatar-uploader-icon"></i>
-            </div>
-          </el-upload>
-          <div v-for="item, i in form.multifileList" class="img_wrap">
-            <img :src="item.fileurlFull" class="img">
-            <i class="el-icon-error del" @click="imgDel(i)"></i>
-          </div>
-        </div>
-      </el-form-item>
-      <el-form-item v-if="form.fileType == 1" label="灞曠ず瑙嗛" prop="imgurl">
-        <UploadAvatarVideo :file="{ 'videourlfull': form.videoFullUrl, 'videourl': form.videourl }"
-          :uploadData="uploadData" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
-          @uploadBegin="isUploading = true" />
-      </el-form-item>
-      <el-form-item label="浣跨敤椤荤煡" prop="tips">
-        <el-input v-model="form.tips" type="textarea" placeholder="璇疯緭鍏ヤ娇鐢ㄩ』鐭�" v-trim />
-      </el-form-item>
-    </el-form>
-  </GlobalAlertWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-import UploadAvatarVideo from '@/components/common/UploadAvatarVideo'
-import { numRule } from '@/utils/form'
-import { fetchList } from '@/api/meeting/projects'
-import { Loading } from 'element-ui'
-export default {
-  name: 'OperaRoomsWindow',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow, UploadAvatarVideo },
-  data() {
-    let timeRangeRule = (rule, value, callBack) => {
-      if (!this.form.startTime) {
-        callBack(new Error('璇烽�夋嫨寮�濮嬫椂闂�'))
-        return
-      }
-      if (!this.form.endTime) {
-        callBack(new Error('璇烽�夋嫨缁撴潫鏃堕棿'))
-        return
-      }
-      callBack()
-    }
-    return {
-      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload',
-      isUploading: false,
-      uploadData: {
-        folder: 'projects'
-      },
-      timeRange: ['', ''],
-      loading: null,
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        id: null,
-        sysList: [],
-        multifileList: [],
-        projectList: [],
-        createDate: '',
-        editor: '',
-        editDate: null,
-        isdeleted: 0,
-        fileType: 2,
-        name: '',
-        remark: '',
-        startTime: '',
-        endTime: '',
-        limitNum: 0,
-        imgurl: '',
-        imgFullUrl: '',
-        tips: '',
-        status: 0,
-        intervalTime: 0
-      },
-      user: [],
-      projectList: [],
-      // 楠岃瘉瑙勫垯
-      rules: {
-        name: [
-          { required: true, message: '璇疯緭鍏ヤ細璁鍚嶇О', tigger: 'blur' }
-        ],
-        intervalTime: [
-          { required: true, validator: numRule, message: '璇疯緭鍏ユ椂闂寸矑搴�', tigger: 'blur' }
-        ],
-        timeRange: [
-          { required: true, validator: timeRangeRule, tigger: 'change' }
-        ]
-      }
-    }
-  },
-  inject: ['userList'],
-  created() {
-    this.config({
-      api: '/meeting/rooms',
-      'field.id': 'id'
-    })
-    // realname: this.filterText
-    fetchList({
-      page: 1,
-      capacity: 9999,
-      model: {},
-    })
-      .then(res => {
-        this.projectList = res.records
-      })
-  },
-  methods: {
-    /**
-     * 鎵撳紑绐楀彛
-     * @title 绐楀彛鏍囬
-     * @target 缂栬緫鐨勫璞�
-     */
-    open(title, target) {
-      this.title = title
-      this.visible = true
-      this.timeRange = ['', '']
-      // 鏂板缓
-      if (target == null) {
-        this.$nextTick(() => {
-          this.$refs.form.resetFields()
-          this.form[this.configData['field.id']] = null
-        })
-        return
-      }
-      // 缂栬緫
-      this.$nextTick(() => {
-        for (const key in this.form) {
-          this.form[key] = target[key]
-        }
-        if (target.fileType == 1 && target.multifileList && target.multifileList.length > 0) {
-          this.$set(this.form, 'videoFullUrl', target.multifileList[0].fileurlFull)
-          this.$set(this.form, 'videourl', target.multifileList[0].fileurl)
-        }
-        this.timeRange = [target.startTime, target.endTime]
-        this.form.projectList = this.form.projectList ? target.projectList.map(item => item.projectId) : []
-        this.form.sysList = this.form.sysList ? this.form.sysList.map(item => item.userId) : []
-        // console.log(this.form.imgFullUrl);
-      })
-    },
-    imgDel(i) {
-      this.form.multifileList.splice(i, 1)
-    },
-    handleImgSuccess(res) {
-      this.$nextTick(() => {
-        this.loading.close()
-      })
-      const list = [...this.form.multifileList]
-
-      if (res.code == 200) {
-        let { data } = res
-        list.push({
-          fileurl: data.imgaddr,
-          fileurlFull: data.url,
-          type: 0
-        })
-        this.$set(this.form, 'multifileList', list)
-
-      }
-    },
-    uploadError() {
-      // this.$message.error('涓婁紶澶辫触')
-      this.$nextTick(() => {
-        this.loading.close()
-      })
-    },
-    // // 鎷︽埅
-    beforeAvatarUpload(file) {
-      this.loading = Loading.service({
-        lock: true,
-        text: 'Loading',
-        spinner: 'el-icon-loading',
-        background: 'rgba(0, 0, 0, 0.7)'
-      })
-      return true
-    },
-    selectRange(v) {
-      // console.log(this.timeRange);
-      console.log(v)
-      this.form.startTime = v[0]
-      this.form.endTime = v[1]
-      console.log(this.form.startTime, this.form.endTime)
-    },
-    changeFile() {
-      this.$set(this.form, 'multifileList', [])
-    },
-    uploadAvatarSuccess(file) {
-      console.log('file', file)
-      let temp = []
-      temp.push({
-        fileurl: file.imgurl,
-        fileurlFull: file.imgurlfull,
-        type: 1
-      })
-      this.form.multifileList = temp
-      this.$set(this.form, 'videourl', file.imgurl)
-      this.$set(this.form, 'videoFullUrl', file.imgurlfull)
-    },
-    // 纭鏂板缓
-    __confirmCreate() {
-      this.$refs.form.validate((valid) => {
-        // debugger
-        if (!valid) {
-          return
-        }
-        // console.log(this.form);
-        // debugger
-        // 璋冪敤鏂板缓鎺ュ彛
-        this.isWorking = true
-        let sysList = [...this.form.sysList]
-        sysList = sysList.map(item => {
-          return { userId: item }
-        })
-        let projectList = [...this.form.projectList]
-        projectList = projectList.map(item => {
-          return { projectId: item }
-        })
-        this.api.create({
-          ...this.form,
-          sysList,
-          projectList
-        })
-          .then(() => {
-            this.visible = false
-            this.$tip.apiSuccess('鏂板缓鎴愬姛')
-            this.$emit('success')
-          })
-          .catch(e => {
-            // this.$tip.apiFailed(e)
-          })
-          .finally(() => {
-            this.isWorking = false
-          })
-      })
-    },
-    // 纭淇敼
-    __confirmEdit() {
-      this.$refs.form.validate((valid) => {
-        if (!valid) {
-          return
-        }
-        console.log(this.form)
-        debugger
-        // 璋冪敤鏂板缓鎺ュ彛
-        this.isWorking = true
-        let sysList = [...this.form.sysList]
-        sysList = sysList.map(item => {
-          return { userId: item }
-        })
-        let projectList = [...this.form.projectList]
-        projectList = projectList.map(item => {
-          return { projectId: item }
-        })
-        this.api.updateById({
-          ...this.form,
-          sysList,
-          projectList
-        })
-          .then(() => {
-            this.visible = false
-            this.$tip.apiSuccess('淇敼鎴愬姛')
-            this.$emit('success')
-          })
-          .catch(e => {
-            // this.$tip.apiFailed(e)
-          })
-          .finally(() => {
-            this.isWorking = false
-          })
-      })
-    }
-  },
-}
-</script>
-
-<style lang="scss" scoped>
-$image-width: 90px;
-
-.upload_wrap {
-  display: flex;
-
-  .img_wrap {
-    margin-left: 10px;
-    border: 1px dashed #d9d9d9;
-    width: $image-width;
-    height: $image-width;
-    border-radius: 6px;
-    position: relative;
-
-    .img {
-      width: $image-width;
-      height: $image-width;
-    }
-
-    .del {
-      position: absolute;
-      top: -6px;
-      right: -6px;
-      cursor: pointer;
-      color: red;
-    }
-  }
-}
-
-.avatar-uploader {
-  width: $image-width;
-  height: $image-width;
-}
-
-::v-deep .el-upload {
-  border: 1px dashed #d9d9d9;
-  border-radius: 6px;
-  cursor: pointer;
-  position: relative;
-  overflow: hidden;
-}
-
-.avatar-uploader .el-upload:hover {
-  border-color: #409EFF;
-}
-
-.avatar-uploader-icon {
-  line-height: 90px;
-  font-size: 28px;
-  color: #8c939d;
-  width: $image-width;
-  height: $image-width;
-  text-align: center;
-}
-
-.avatar {
-  width: 90px;
-  max-height: 90px;
-  display: block;
-}
-</style>
\ No newline at end of file
diff --git a/admin/src/views/meeting/components/common/FileLink.vue b/admin/src/views/meeting/components/common/FileLink.vue
deleted file mode 100644
index 08a1485..0000000
--- a/admin/src/views/meeting/components/common/FileLink.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-<template>
-  <div>
-    <FileLinkItem
-      v-for="(item, index) in links"
-      :key="index"
-      :link="item[linkName]"
-      :name="item.name"
-      :isUpload="isUpload"
-      @showFile="showFile"
-      @deleteAction="deleteFile(index)"
-    />
-    <PDFPreview ref="PDFPreview" />
-    <el-image-viewer
-      v-if="showViewer"
-      :on-close="close"
-      :initialIndex="tempIndex"
-      :url-list="srcList"
-      :zIndex="3000"
-    />
-  </div>
-</template>
-
-<script>
-// import { fileType } from '@/utils/util';
-import FileLinkItem from './FileLinkItem.vue';
-import PDFPreview from './PDFPreview'
-import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
-export default {
-  components: {
-    FileLinkItem,
-    PDFPreview,
-    ElImageViewer
-  },
-  props: {
-    links: {
-      type: Array,
-      required: true
-    },
-    isUpload: {
-      type: Boolean,
-      default: true
-    },
-    linkName: {
-      type: String,
-      required: true
-    }
-  },
-  data() {
-    return {
-      showViewer: false
-    }
-  },
-  computed: {
-    // 鍥剧墖鍦板潃
-    // srcList() {
-    //   return this.links.filter(item => {
-    //     let link = item[this.linkName]
-    //     return fileType(link) == 1
-    //   }).map(item => item[this.linkName])
-    // }
-  },
-  methods: {
-    deleteFile(index) {
-      this.links.splice(index, 1)
-    },
-    downloadFile(url) {
-      window.open(url, '_blank')
-    },
-    showFile(url) {
-      debugger
-      // let type = fileType(url)
-      // switch (type) {
-      //   case 1:
-      //     this.tempIndex = this.srcList.findIndex(item => item == url)
-      //     this.showViewer = true
-      //     break;
-      //   case 2:
-      //     this.$refs.PDFPreview.open('', { url })
-      //     break;
-      //   case 3:
-      //     window.open(url, '_blank')
-      //     break;
-      //   default:
-      //     break;
-      // }
-    },
-    close() {
-      this.showViewer = false
-    }
-  },
-}
-</script>
diff --git a/admin/src/views/meeting/components/common/FileLinkItem.vue b/admin/src/views/meeting/components/common/FileLinkItem.vue
deleted file mode 100644
index 237910d..0000000
--- a/admin/src/views/meeting/components/common/FileLinkItem.vue
+++ /dev/null
@@ -1,89 +0,0 @@
-<template>
-  <div class="file-link">
-    <div class="like-link" @click="showFile(link)">{{ name }}</div>
-    <i v-if="isUpload" class="el-icon-delete delete" @click="deleteFile()"></i>
-    <i v-else class="el-icon-download download" @click="downloadFile(link)"></i>
-  </div>
-</template>
-
-<script>
-
-export default {
-  props: {
-    link: {
-      type: String,
-      default: ''
-    },
-    name: {
-      type: String,
-      default: ''
-    },
-
-    isUpload: {
-      type: Boolean,
-      default: true
-    }
-  },
-  data() {
-    return {
-      showViewer: false
-    }
-  },
-  methods: {
-    deleteFile() {
-      this.$emit('deleteAction')
-    },
-    downloadFile(url) {
-      window.open(url, '_blank')
-    },
-    showFile(link) {
-      this.$emit('showFile',link)
-    }
-  },
-}
-</script>
-
-<style lang="scss" scoped>
-.file-link {
-  // height: 26px;
-  display: flex;
-  font-size: 14px;
-  line-height: 26px;
-
-  .like-link {
-    line-height: 26px;
-    color: #216EEE;
-    cursor: pointer;
-    text-decoration: underline;
-  }
-  .delete {
-    box-sizing: border-box;
-    line-height: 26px;
-    margin-left: 10px;
-    width: 16px;
-    height: 16px;
-    // background-color: #BFC3CB;
-    color: #216EEE;
-    border-radius: 50%;
-    padding: 1.5px;
-    cursor: pointer;
-    &:hover {
-      color: #ff0000;
-    }
-  }
-  .download {
-    line-height: 26px;
-    box-sizing: border-box;
-    margin-left: 10px;
-    width: 16px;
-    height: 16px;
-    color: #828D9E;
-    border-radius: 50%;
-    padding: 1.5px;
-    cursor: pointer;
-    &:hover {
-      color: #216EEE;
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/meeting/components/common/PDFPreview.vue b/admin/src/views/meeting/components/common/PDFPreview.vue
deleted file mode 100644
index 31c81fc..0000000
--- a/admin/src/views/meeting/components/common/PDFPreview.vue
+++ /dev/null
@@ -1,95 +0,0 @@
-<template>
-   <el-dialog
-    class="global-window"
-    :visible="visible"
-    :with-header="true"
-    :close-on-press-escape="false"
-    :wrapper-closable="false"
-    :append-to-body="true"
-    @close="visible=false"
-    width="70%"
-  >
-    <div class="pdf-container">
-      <iframe
-        :src="`${path}/pdfjs/web/viewer.html?file=${form.url}`"
-        frameborder="0"
-        style="width: 100%; height: 100%;"
-      ></iframe>
-    </div>
-  </el-dialog>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-export default {
-  name: 'OperaCompanyUserWindow',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow },
-  data () {
-    return {
-      path: process.env.VUE_APP_CONTEXT_PATH == '/' ? '' : process.env.VUE_APP_CONTEXT_PATH,
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        url: ''
-      }
-    }
-  },
-  created () {
-  }
-}
-
-</script>
-
-<style lang="scss" scoped>
-.address {
-  ::v-deep .el-form-item {
-    display: flex;
-  }
-  ::v-deep .el-form-item__content {
-    flex: 1;
-  }
-  ::v-deep .el-select {
-    width: 32%;
-    .el-input__inner {
-      width: 100%;
-    }
-  }
-}
-.pdf-container {
-  width: 100%;
-  height: calc(80vh - 100px);
-  overflow-y: scroll;
-}
-::v-deep .el-dialog__header {
-    padding: 0 !important;
-    height: 40px;
-    line-height: 40px;
-    text-align: center;
-    // background-color: rgba($color: #000000, $alpha: 0.3);
-    
-  }
-::v-deep .window__footer {
-  height: 1px;
-}
-// ::v-deep .el-dialog__body {
-  // background-color: rgba($color: #000000, $alpha: 0.3);
-// }
-.ins-pdf-button-box {
-  display: flex;
-  padding: 20px;
-  div {
-    width: 80px;
-    // background-color: #fff;
-    background-color: #f5f5f5;
-    margin-right: 10px;
-    text-align: center;
-    padding: 8px;
-  }
-  .last-style {
-    border: 1px solid #666;
-    
-  }
-}
-</style>
diff --git a/admin/src/views/meeting/components/selectMember.vue b/admin/src/views/meeting/components/selectMember.vue
deleted file mode 100644
index 5fae9db..0000000
--- a/admin/src/views/meeting/components/selectMember.vue
+++ /dev/null
@@ -1,267 +0,0 @@
-<template>
-  <GlobalAlertWindow
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-  >
-    <div class="select-container">
-      <div class="tree">
-        <div style="display: flex; margin-bottom: 5px;">
-          <el-input
-            placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
-            v-model="filterText"
-            clearable
-            @input="inputAction"
-            @keypress.enter.native="search"
-          ></el-input>
-          <el-button @click="search" style="margin-left: 5px;" type="primary">鎼滅储</el-button>
-        </div>
-        <el-tree
-          key="tree"
-          v-if="!filterList.length"
-          :data="data"
-          :load="loadNode"
-          lazy
-        >
-          <span class="custom-tree-node" slot-scope="{ node, data }">
-            <span>{{ node.data.name }}</span>
-            <el-checkbox @change="selectUser(node.data)" v-if="node.data.isUser" v-model="node.data.isSelect"></el-checkbox>
-          </span>
-        </el-tree>
-        <div v-else>
-          <div v-for="item in filterList" :key="item.id" class="custom-tree-node">
-            <span>{{ item.realname }}</span>
-            <el-checkbox @change="selectUser(item)" v-model="item.isSelect"></el-checkbox>
-          </div>
-        </div>
-      </div>
-      <div class="line"></div>
-      <div class="selected">
-        <div style="margin-bottom: 5px;">宸查�夛細{{ selectList.length }}</div>
-        <div v-for="item in selectList" :key="item.id" class="custom-tree-node">
-          <span>{{ item.name }}</span>
-          <i class="el-icon-delete delete" @click="deleteAction(item)"></i>
-        </div>
-      </div>
-    </div>
-  </GlobalAlertWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-// import { findTreeUser } from '@/api/system/department'
-import { fetchList as userList } from '@/api/system/user'
-export default {
-  name: 'selectMember',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow },
-  data () {
-    return {
-      props: {
-        label: 'name',
-        children: 'zones',
-        isLeaf: 'isUser'
-      },
-      data: [],
-      filterText: '',
-      filterList: [],
-      selectList: [],
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        id: null,
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        remark: '',
-        name: '',
-        roomId: '',
-        startTime: '',
-        endTime: '',
-        content: ''
-      },
-      rootNode: {},
-      // 楠岃瘉瑙勫垯
-      rules: {
-      }
-    }
-  },
-  created () {
-    this.config({
-      api: '/meeting/bookings',
-      'field.id': 'id'
-    })
-
-  },
-  methods: {
-    /**
-     * 鎵撳紑绐楀彛
-     * @title 绐楀彛鏍囬
-     * @target 缂栬緫鐨勫璞�
-     */
-    open (title, target) {
-      this.title = title
-      this.visible = true
-      this.filterList = []
-      // 鏂板缓
-      if (target == null) {
-        this.$nextTick(() => {
-          // this.$refs.form.resetFields()
-          this.form[this.configData['field.id']] = null
-        })
-        return
-      }
-      // 缂栬緫
-      this.$nextTick(() => {
-        for (const key in this.form) {
-          this.form[key] = target[key]
-        }
-      })
-    },
-    loadNode(node, resolve) {
-      this.rootNode = node
-      // console.log(node, resolve);
-      if (node.data.isUser) {
-        return resolve([])
-      }
-      let parentId = ''
-      if (node.level === 0) {
-        parentId = ''
-      } else {
-        parentId = node.data.id
-      }
-      // findTreeUser({parentId})
-      //   .then(res => {
-      //     // this.data = [res]
-      //     if (!parentId) {
-      //       resolve([res])
-      //     } else {
-      //       let resolveList = []
-      //       if (res.userList) {
-      //         res.userList.forEach(item => {
-      //           let index = this.selectList.findIndex(sel => sel.id == item.id)
-      //           resolveList.push({
-      //             ...item,
-      //             name: item.realname,
-      //             isUser: true,
-      //             isSelect: index !== -1
-      //           })
-      //         });
-      //       }
-      //       if (res.children) {
-      //         res.children.forEach(item => {
-      //           resolveList.push(item)
-      //         })
-      //       }
-
-      //       resolve(resolveList)
-      //     }
-
-      //   })
-    },
-    inputAction() {
-      if (!this.filterText) {
-        this.filterList = []
-      }
-    },
-    search() {
-      this.filterList = []
-      if (this.filterText) {
-        userList({
-          page: 1,
-          capacity: 9999,
-          model: { realname: this.filterText },
-        })
-          .then(res => {
-            // console.log(res);
-            // this.filterList = res.records
-            res.records.forEach(item => {
-              let index = this.selectList.findIndex(sel => sel.id == item.id)
-              this.filterList.push({
-                  ...item,
-                  isSelect: index !== -1
-                })
-            })
-          })
-      }
-    },
-    selectUser(item) {
-      let index = this.selectList.findIndex(sel => sel.id == item.id)
-      if (index !== -1) {
-        this.selectList.splice(index, 1)
-      } else {
-        this.selectList.push({
-          name: item.realname,
-          id: item.id
-        })
-      }
-    },
-    deleteAction(item) {
-      console.log(this.rootNode);
-      this.selectList.splice(this.selectList.findIndex(sel => sel.id == item.id), 1)
-      this.filterList.forEach(filter => {
-        if (filter.id == item.id) {
-          filter.isSelect = false
-        }
-      })
-    }
-  },
-}
-</script>
-
-<style lang="scss" scoped>
-.select-container {
-  display: flex;
-  height: 100%;
-  .tree {
-    padding: 0 10px 10px;
-    box-sizing: border-box;
-    width: calc(50% - 0.5px);
-    min-height: 200px;
-    // height: 100%;
-
-  }
-  .line {
-    width: 1px;
-    min-height: 200px;
-    // height: 100%;
-
-    background-color: #f7f7f7;
-  }
-  .selected {
-    padding: 0 10px 10px;
-    box-sizing: border-box;
-    // background-color: red;
-    // flex: 1;
-    width: calc(50% - 0.5px);
-    min-height: 200px;
-    // height: 100%;
-  }
-}
-.custom-tree-node {
-  flex: 1;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  font-size: 14px;
-  padding-right: 8px;
-}
-.delete {
-    box-sizing: border-box;
-    line-height: 26px;
-    margin-left: 10px;
-    width: 16px;
-    height: 16px;
-    // background-color: #BFC3CB;
-    color: #216EEE;
-    border-radius: 50%;
-    padding: 1.5px;
-    cursor: pointer;
-    &:hover {
-      color: #ff0000;
-    }
-  }
-</style>
diff --git a/admin/src/views/meeting/devices.vue b/admin/src/views/meeting/devices.vue
deleted file mode 100644
index ed02763..0000000
--- a/admin/src/views/meeting/devices.vue
+++ /dev/null
@@ -1,154 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:devices:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="浼氳瀹�" prop="roomId">
-        <el-select
-          v-model="searchForm.roomId"
-          filterable
-          clearable
-          placeholder="璇烽�夋嫨浼氳瀹�"
-        >
-          <el-option v-for="item in room" :key="item.id" :value="item.id" :label="item.name" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-select
-          v-model="searchForm.status"
-          filterable
-          clearable
-          placeholder="璇烽�夋嫨浼氳瀹�"
-        >
-          <el-option :key="0" :value="0" label="鍚敤" />
-          <el-option :key="1" :value="1" label="绂佺敤" />
-        </el-select>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:devices:exportExcel']" @click="exportExcel">瀵煎嚭</el-button> -->
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:devices:create']">
-        <li><el-button type="primary" @click="$refs.operaDevicesWindow.open('鏂板缓璁惧')" icon="el-icon-plus" v-permissions="['business:devices:create']">鏂板缓</el-button></li>
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="index" prop="index" label="搴忓彿" align="center" min-width="50px"></el-table-column>
-        <el-table-column prop="code" label="闂ㄧID" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="name" label="闂ㄧ鍚嶇О" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="roomName" label="鍏宠仈浼氳瀹�" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="鐘舵��" align="center" min-width="100px">
-          <template slot-scope="{row}">
-            <el-switch
-              v-model="row.status"
-              active-color="#13ce66"
-              inactive-color="#999"
-              :active-value="0"
-              :inactive-value="1"
-              @change="changeStatus(row)"
-            ></el-switch>
-          </template>
-        </el-table-column>
-
-        <!-- <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
-        <el-table-column prop="code" label="璁惧鍙凤紙涓嶅彲閲嶅锛�" min-width="100px"></el-table-column> -->
-
-        <el-table-column
-          v-if="containPermissions(['business:devices:update', 'business:devices:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-          align="center"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaDevicesWindow.open('缂栬緫璁惧', row)" icon="el-icon-edit" v-permissions="['business:devices:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:devices:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      ></pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaDevicesWindow ref="operaDevicesWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaDevicesWindow from '@/views/meeting/components/OperaDevicesWindow'
-import { findList } from '@/api/meeting/rooms'
-import { updateById } from '@/api/meeting/devices'
-export default {
-  name: 'Devices',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaDevicesWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        id: '',
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        remark: '',
-        name: '',
-        code: '',
-        roomId: '',
-        status: ''
-      },
-      room: []
-    }
-  },
-  provide() {
-    return {
-      room: () => this.room
-    }
-  },
-  created () {
-    this.config({
-      module: '璁惧绠$悊淇℃伅琛�',
-      api: '/meeting/devices',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    findList({status:0})
-      .then(res => {
-        this.room = res
-      })
-    this.search()
-  },
-  methods: {
-    changeStatus(item) {
-      updateById(item)
-        .then(() => {
-          this.$message.success('淇敼鎴愬姛')
-        })
-        .catch(e => {
-        })
-        .finally(() => {
-          this.handlePageChange()
-        })
-    }
-  },
-}
-
-</script>
diff --git a/admin/src/views/meeting/notice.vue b/admin/src/views/meeting/notice.vue
deleted file mode 100644
index b4bfeb7..0000000
--- a/admin/src/views/meeting/notice.vue
+++ /dev/null
@@ -1,109 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:notice:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="閫氱煡鏍囬" prop="title">
-        <el-input v-model="searchForm.title" placeholder="璇疯緭鍏ラ�氱煡鏍囬" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍙戝竷浜�" prop="creatorName">
-        <el-input v-model="searchForm.creatorName" placeholder="璇疯緭鍏ュ彂甯冧汉" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:notice:exportExcel']" @click="exportExcel">瀵煎嚭</el-button> -->
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:notice:create', 'business:notice:delete']">
-        <li><el-button type="primary" @click="$refs.operaNoticeWindow.open('鏂板缓娑堟伅閫氱煡')" icon="el-icon-plus" v-permissions="['business:notice:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:notice:delete']">鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="title" label="鏍囬" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="createDate" label="鍙戝竷鏃堕棿" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="creatorName" label="鍙戝竷浜�" align="center" min-width="100px"></el-table-column>
-        <!-- <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
-        <el-table-column prop="memberId" label="鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級" min-width="100px"></el-table-column>
-        <el-table-column prop="content" label="鍐呭" min-width="100px"></el-table-column>
-        <el-table-column prop="objId" label="瀵硅薄缂栫爜" min-width="100px"></el-table-column>
-        <el-table-column prop="objType" label="瀵硅薄绫诲瀷 " min-width="100px"></el-table-column>
-        <el-table-column prop="type" label="娑堟伅绫诲瀷 0绯荤粺娑堟伅 1浼氳閫氱煡" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="鐘舵�� 0鏈 1宸茶" min-width="100px"></el-table-column> -->
-        <el-table-column
-          v-if="containPermissions(['business:notice:update', 'business:notice:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-          align="center"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaNoticeWindow.open('缂栬緫娑堟伅閫氱煡', row)" icon="el-icon-edit" v-permissions="['business:notice:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:notice:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaNoticeWindow ref="operaNoticeWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaNoticeWindow from '@/views/meeting/components/OperaNoticeWindow'
-export default {
-  name: 'Notice',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaNoticeWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        id: '',
-        creatorName: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        remark: '',
-        memberId: '',
-        title: '',
-        content: '',
-        objId: '',
-        objType: '',
-        type: '',
-        status: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '娑堟伅閫氱煡淇℃伅琛�',
-      api: '@/views/meeting/api/notice',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  }
-}
-</script>
diff --git a/admin/src/views/meeting/projects.vue b/admin/src/views/meeting/projects.vue
deleted file mode 100644
index b0d02c6..0000000
--- a/admin/src/views/meeting/projects.vue
+++ /dev/null
@@ -1,131 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:projects:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <!-- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="涓婚敭" prop="id">
-        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍚嶇О锛堜笉鍙噸澶嶏級" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉帮紙涓嶅彲閲嶅锛�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍥炬爣" prop="imgurl">
-        <el-input v-model="searchForm.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
-        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鎺掑簭鐮佸崌搴�" prop="sortnum">
-        <el-input v-model="searchForm.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜鍗囧簭" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:projects:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form> -->
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:projects:create', 'business:projects:delete']">
-        <li><el-button type="primary" @click="$refs.operaProjectsWindow.open('鏂板缓鏈嶅姟椤圭洰')" icon="el-icon-plus" v-permissions="['business:projects:create']">鏂板缓</el-button></li>
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column label="鍥炬爣" align="center" min-width="100px">
-          <template slot-scope="{row}">
-            <!-- {{ row.imgurlfull }} -->
-            <el-image
-              v-if="!!row.imgurlfull"
-              style="width: 40px; height: 40px;"
-              :src="row.imgurlfull"
-              :preview-src-list="[row.imgurlfull]"
-            ></el-image>
-          </template>
-        </el-table-column>
-        <el-table-column prop="name" label="鍚嶇О" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="sortnum" label="鎺掑簭鐮�(鍗囧簭)" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" align="center" min-width="100px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:projects:update', 'business:projects:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          align="center"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaProjectsWindow.open('缂栬緫鏈嶅姟椤圭洰', row)" icon="el-icon-edit" v-permissions="['business:projects:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:projects:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaProjectsWindow ref="operaProjectsWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaProjectsWindow from '@/views/meeting/components/OperaProjectsWindow'
-export default {
-  name: 'Projects',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaProjectsWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        id: '',
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        name: '',
-        remark: '',
-        imgurl: '',
-        status: '',
-        sortnum: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鏈嶅姟椤圭洰淇℃伅琛�',
-      api: '/meeting/projects',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  }
-}
-</script>
diff --git a/admin/src/views/meeting/roomRecord.vue b/admin/src/views/meeting/roomRecord.vue
deleted file mode 100644
index f2020b1..0000000
--- a/admin/src/views/meeting/roomRecord.vue
+++ /dev/null
@@ -1,154 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:roomrecord:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="浼氳瀹�" prop="roomId">
-        <el-select
-            v-model="searchForm.roomId"
-            filterable
-            clearable
-            placeholder="璇烽�夋嫨浼氳瀹�"
-        >
-          <el-option v-for="item in rooms" :key="item.id" :value="item.id" :label="item.name" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="浜哄憳濮撳悕" prop="name">
-        <el-input v-model="searchForm.userName" placeholder="璇疯緭鍏ヤ汉鍛樺鍚�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="浼氳涓婚" prop="name">
-        <el-input v-model="searchForm.meeting" placeholder="璇疯緭鍏ヤ細璁富棰�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="绫诲瀷" prop="status">
-        <el-select v-model= "searchForm.objType" placeholder="璇烽�夋嫨鐘舵��">
-          <el-option  key="0"  value="0" label="绠$悊鍛�" />
-          <el-option  key="1"  value="1" label="鍙備細浜哄憳" />
-          <el-option  key="2"  value="2" label="澶栭儴浜哄憳" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="寮�闂ㄦ椂闂�" prop="startTime">
-        <el-date-picker
-            v-model="date"
-            type="datetimerange"
-            range-separator="鑷�"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            start-placeholder="寮�濮嬫椂闂�"
-            end-placeholder="缁撴潫鏃堕棿"
-            @change="selectDate"
-        ></el-date-picker>
-        <!-- <el-date-picker v-model="searchForm.startTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ紑濮嬫椂闂�" @change="search"/> -->
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:roomrecord:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-<!--      <ul class="toolbar" v-permissions="['business:roomrecord:create', 'business:roomrecord:delete']">
-        <li><el-button type="primary" @click="$refs.operaRoomRecordWindow.open('鏂板缓浼氳瀹ゅ紑闂ㄨ褰曡〃')" icon="el-icon-plus" v-permissions="['business:roomrecord:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:roomrecord:delete']">鍒犻櫎</el-button></li>
-      </ul>-->
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column label="浜哄憳濮撳悕"  prop="userName" min-width="100px"></el-table-column>
-        <el-table-column label="浜哄憳绫诲瀷" prop="objType" min-width="100px">
-            <template  slot-scope="{row}">
-              <span v-if="row.objType==0" >绠$悊鍛�</span>
-              <span v-else-if="row.objType==1">鍙備細浜哄憳</span>
-              <span v-else >澶栭儴浜哄憳</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="浼氳涓婚" prop="meeting" min-width="100px"></el-table-column>
-        <el-table-column label="浼氳瀹�" prop="roomName" min-width="100px"></el-table-column>
-        <el-table-column prop="createDate" label="寮�闂ㄦ椂闂�" min-width="100px"></el-table-column>
-<!--        <el-table-column
-          v-if="containPermissions(['business:roomrecord:update', 'business:roomrecord:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaRoomRecordWindow.open('缂栬緫浼氳瀹ゅ紑闂ㄨ褰曡〃', row)" icon="el-icon-edit" v-permissions="['business:roomrecord:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:roomrecord:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>-->
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaRoomRecordWindow ref="operaRoomRecordWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaRoomRecordWindow from '@/views/meeting/components/OperaRoomRecordWindow'
-import { findList } from '@/api/meeting/rooms'
-export default {
-  name: 'RoomRecord',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaRoomRecordWindow },
-  data () {
-    return {
-      date:[],
-      // 鎼滅储
-      rooms: [
-        { name: '201浼氳瀹�', id: '0' }
-      ],
-      // 鎼滅储
-      searchForm: {
-        userName: '',
-        roomId: '',
-        meeting: '',
-        objType:null,
-        startDate: null,
-        endDate: null,
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '浼氳瀹ゅ紑闂ㄨ褰曡〃',
-      api: '/meeting/roomRecord',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    findList({})
-        .then(res => {
-          this.rooms = res
-        })
-    this.search()
-  },
-  methods: {
-    selectDate(v) {
-      this.searchForm.endDate = v[1]
-      this.searchForm.startDate = v[0]
-    },
-    reset () {
-      this.$refs.searchForm.resetFields()
-      this.date = []
-      this.searchForm =   {
-        userName: '',
-            roomId: '',
-            meeting: '',
-            objType:null,
-            startDate: null,
-            endDate: null,
-      }
-      this.search()
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/meeting/roomStatistics.vue b/admin/src/views/meeting/roomStatistics.vue
deleted file mode 100644
index 1ab4e4f..0000000
--- a/admin/src/views/meeting/roomStatistics.vue
+++ /dev/null
@@ -1,229 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:rooms:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
-      <!-- <el-form-item label="浼氳瀹ゅ悕绉�" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item> -->
-      <!-- <el-form-item label="浼氳瀹�" prop="roomId">
-        <el-select
-          v-model="searchForm.roomId"
-          filterable
-          clearable
-          placeholder="璇烽�夋嫨浼氳瀹�"
-        >
-          <el-option
-            v-for="item in rooms"
-            :key="item.id"
-            :value="item.id"
-            :label="item.name"
-          />
-        </el-select>
-      </el-form-item> -->
-      <el-form-item label="骞翠唤" prop="yearNum">
-        <!-- <div @click="selectMemberAction">
-          <el-input v-model="searchForm.id" disabled placeholder="閫夋嫨閮ㄩ棬鎴愬憳"></el-input>
-        </div> -->
-        <!-- {{ searchForm.sysList }} -->
-        <el-select
-          v-model="searchForm.yearNum"
-          clearable
-          placeholder="閫夋嫨閮ㄩ棬鎴愬憳"
-        >
-          <el-option
-            v-for="item in years"
-            :key="item"
-            :value="item"
-            :label="`${item}骞碻"
-          ></el-option>
-          <!-- <el-option :key="1" :value="1" label="绂佺敤" /> -->
-        </el-select>
-      </el-form-item>
-
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:rooms:create', 'business:rooms:delete']">
-        <li><el-button :loading="isWorking.export" v-permissions="['business:rooms:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
-        <!-- <li><el-button type="primary" @click="$refs.operaRoomsWindow.open('鏂板缓浼氳瀹�')" v-permissions="['business:rooms:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" v-permissions="['business:rooms:delete']">鍒犻櫎</el-button></li> -->
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column prop="roomName" label="浼氳瀹�" align="center" min-width="120px"></el-table-column>
-        <el-table-column prop="januaryCount" label="涓�鏈�" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.januaryCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="浜屾湀" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.februaryCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="涓夋湀" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.marchCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍥涙湀" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.aprilCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="浜旀湀" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.mayCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍏湀" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.juneCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="涓冩湀" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.julyCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍏湀" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.augustCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="涔濇湀" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.septemberCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍗佹湀" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.octoberCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍗佷竴鏈�" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.novemberCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍗佷簩鏈�" align="center" min-width="80px">
-          <template slot-scope="{row}">
-            {{ `${row.decemberCount}H` }}
-          </template>
-        </el-table-column>
-
-      </el-table>
-    </template>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import { getRoomStatistics, exportRoomStatistics } from '@/api/meeting/bookings'
-// import { findList } from '@/api/meeting/rooms'
-export default {
-  name: 'Rooms',
-  extends: BaseTable,
-  components: { TableLayout,  },
-  data () {
-    return {
-      years: [
-        '2021', '2022', '2023'
-      ],
-      rooms: [],
-      // 鎼滅储
-      searchForm: {
-        yearNum: '',
-        roomId: ''
-      }
-    }
-  },
-
-  created () {
-    this.config({
-      module: '浼氳瀹や俊鎭〃',
-      api: '/meeting/rooms',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    // findList({})
-    //   .then(res => {
-    //     this.rooms = res
-    //   })
-    let tempYear = new Date().getFullYear()
-    this.searchForm.yearNum = tempYear
-    this.years = [tempYear-2, tempYear-1, tempYear]
-    this.search()
-  },
-  methods: {
-    // 瀵煎嚭Excel
-    exportExcel () {
-      this.__checkApi()
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.isWorking.export = true
-          exportRoomStatistics({
-            page: this.tableData.pagination.pageIndex,
-            capacity: 1000000,
-            model: this.searchForm,
-            sorts: this.tableData.sorts
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-             //  this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.isWorking.export = false
-            })
-        })
-        .catch(() => {})
-    },
-    // 椤电爜鍙樻洿澶勭悊
-    handlePageChange () {
-      this.isWorking.search = true
-      getRoomStatistics(this.searchForm.yearNum, this.searchForm.roomId)
-        .then(data => {
-          this.tableData.list = data
-          // this.tableData.pagination.total = data.total
-        })
-        .catch(e => {
-         //  this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-          this.isWorking.search = false
-        })
-    },
-    // selectMemberAction() {
-    //   console.log('21212');
-    //   this.$refs.selectMember.open('閫夋嫨绠$悊鍛�')
-    // },
-    changeStatus(item) {
-      updateById({
-        id: item.id,
-        status: item.status
-      }).then(res => {
-        this.search()
-      })
-    }
-  },
-}
-</script>
-
-<style scoped>
-::v-deep .el-input.is-disabled .el-input__inner {
-  background-color: #fff !important;
-  cursor: pointer;
-}
-</style>
diff --git a/admin/src/views/meeting/rooms.vue b/admin/src/views/meeting/rooms.vue
deleted file mode 100644
index 5380f67..0000000
--- a/admin/src/views/meeting/rooms.vue
+++ /dev/null
@@ -1,240 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:rooms:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="浼氳瀹ゅ悕绉�" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="绠$悊鍛�" prop="sysList">
-        <el-select
-          v-model="searchForm.sysList"
-          filterable
-          clearable
-          multiple
-          style="width: 250px"
-          placeholder="閫夋嫨閮ㄩ棬鎴愬憳"
-        >
-          <el-option
-            v-for="item in userList"
-            :key="item.id"
-            :value="item.id"
-            :label="item.companyId?`${item.companyName}-${item.companyName}`:item.realname"
-            ></el-option>
-            <!-- :label="`${item.department.name}-${item.realname}`" -->
-          <!-- <el-option :key="1" :value="1" label="绂佺敤" /> -->
-        </el-select>
-      </el-form-item>
-
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:rooms:exportExcel']" @click="exportExcel">瀵煎嚭</el-button> -->
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:rooms:create']">
-        <li><el-button type="primary" @click="$refs.operaRoomsWindow.open('鏂板缓浼氳瀹�')" v-permissions="['business:rooms:create']">鏂板缓</el-button></li>
-        <!-- <li><el-button @click="deleteByIdInBatch" v-permissions="['business:rooms:delete']">鍒犻櫎</el-button></li> -->
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <!-- <el-table-column type="selection" width="55"></el-table-column> -->
-        <el-table-column prop="id" label="鍞竴鏍囪瘑" align="center" min-width="80px" show-overflow-tooltip>
-          <template slot-scope="{row}">
-            <span class="long-title-style">{{ row.id }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="name" label="浼氳瀹ゅ悕绉�" align="center" min-width="120px" show-overflow-tooltip>
-          <template slot-scope="{row}">
-            <span class="long-title-style">{{ row.name }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="startTime" label="寮�鏀炬椂闂�" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.startTime}-${row.endTime}` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="intervalTime" label="绮掑害锛堝垎閽燂級" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="limitNum" label="瀹圭撼浜烘暟" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="limitNum" label="绠$悊鍛�" min-width="140px" align="center" show-overflow-tooltip>
-          <template slot-scope="{row}">
-            <span class="long-title-style">{{ row.sysList.map(item => item.realName).join(',') }}</span>
-
-            <!-- <ul>
-              <li v-for="sys in row.sysList" :key="sys.id">{{sys.realName}}</li>
-            </ul> -->
-          </template>
-        </el-table-column>
-        <el-table-column prop="limitNum" label="鍙�夋湇鍔¢」" align="center" min-width="140px" show-overflow-tooltip>
-          <template slot-scope="{row}">
-            <div class="long-title-style">{{ row.projectList.map(item => item.projectName).join(' | ') }}</div>
-
-          </template>
-        </el-table-column>
-        <el-table-column prop="status" label="鐘舵��" align="center" min-width="100px">
-          <template slot-scope="{row}">
-            <el-switch
-              v-model="row.status"
-              active-color="#13ce66"
-              inactive-color="#999"
-              :active-value="0"
-              :inactive-value="1"
-              @change="changeStatus(row)"
-            ></el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿"  align="center" min-width="140px"></el-table-column>
-        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="140px"></el-table-column>
-        <!-- <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
-        <el-table-column prop="imgurl" label="浼氳瀹ゅ浘鐗�" min-width="100px"></el-table-column>
-        <el-table-column prop="tips" label="浣跨敤椤荤煡" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column> -->
-        <el-table-column
-          v-if="containPermissions(['business:rooms:update', 'business:rooms:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaRoomsWindow.open('缂栬緫浼氳瀹�', row)" v-permissions="['business:rooms:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" v-permissions="['business:rooms:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      ></pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaRoomsWindow ref="operaRoomsWindow" @success="handlePageChange"/>
-    <!-- <selectMember ref="selectMember" @done=""/> -->
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaRoomsWindow from '@/views/meeting/components/OperaRoomsWindow'
-import { fetchList as userList } from '@/api/system/user'
-// import selectMember from '@/components/meeting/selectMember'
-import { updateStatusById } from '@/api/meeting/rooms'
-export default {
-  name: 'Rooms',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaRoomsWindow },
-  data () {
-    return {
-      userList: [],
-      // 鎼滅储
-      searchForm: {
-        id: '',
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        name: '',
-        remark: '',
-        startTime: '',
-        endTime: '',
-        limitNum: '',
-        imgurl: '',
-        tips: '',
-        status: '',
-        intervalTime: '',
-        sysList: []
-      }
-    }
-  },
-  provide () {
-    return {
-      userList: () => this.userList
-    }
-  },
-  created () {
-    this.config({
-      module: '浼氳瀹や俊鎭〃',
-      api: '/meeting/rooms',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    userList({
-      page: 1,
-      capacity: 9999,
-      memberType: 2,
-      model: { realname: this.filterText }
-    })
-      .then(res => {
-        this.userList = res.records
-      })
-    this.search()
-  },
-  methods: {
-    // 椤电爜鍙樻洿澶勭悊
-    handlePageChange (pageIndex) {
-      this.__checkApi()
-      this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex
-      this.isWorking.search = true
-      let sysList = [...this.searchForm.sysList]
-      sysList = sysList.map(item => {
-        return { userId: item }
-      })
-      console.log(sysList)
-      this.api.fetchList({
-        page: this.tableData.pagination.pageIndex,
-        capacity: this.tableData.pagination.pageSize,
-        model: {
-          ...this.searchForm,
-          sysList
-        },
-        sorts: this.tableData.sorts
-      })
-        .then(data => {
-          this.tableData.list = data.records
-          this.tableData.pagination.total = data.total
-        })
-        .catch(e => {
-          // this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-          this.isWorking.search = false
-        })
-    },
-    // selectMemberAction() {
-    //   console.log('21212');
-    //   this.$refs.selectMember.open('閫夋嫨绠$悊鍛�')
-    // },
-    changeStatus (item) {
-      updateStatusById({
-        id: item.id,
-        status: item.status
-      })
-        .then(() => {
-          this.$message.success('淇敼鎴愬姛')
-        })
-        .catch(e => {
-        })
-        .finally(() => {
-          this.handlePageChange()
-        })
-    }
-  }
-}
-</script>
-
-<style scoped>
-::v-deep .el-input.is-disabled .el-input__inner {
-  background-color: #fff !important;
-  cursor: pointer;
-}
-</style>
diff --git a/admin/src/views/meeting/userStatistics.vue b/admin/src/views/meeting/userStatistics.vue
deleted file mode 100644
index 22722a3..0000000
--- a/admin/src/views/meeting/userStatistics.vue
+++ /dev/null
@@ -1,244 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:rooms:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="浜哄憳" prop="userId">
-        <el-select
-          v-model="searchForm.userId"
-          clearable
-          filterable
-          placeholder="閫夋嫨浜哄憳"
-        >
-          <el-option
-            v-for="item in sysList"
-            :key="item.id"
-            :value="item.id"
-            :label="item.department?`${item.department.name}-${item.realname}`:item.realname"
-            ></el-option>
-            <!-- :label="item.name" -->
-        </el-select>
-      </el-form-item>
-      <el-form-item label="骞翠唤" prop="yearNum">
-        <el-select
-          v-model="searchForm.yearNum"
-          clearable
-          placeholder="閫夋嫨骞翠唤"
-        >
-          <el-option
-            v-for="item in years"
-            :key="item"
-            :value="item"
-            :label="`${item}骞碻"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <!-- v-permissions="['business:rooms:create', 'business:rooms:delete']" -->
-      <ul class="toolbar" >
-        <!-- v-permissions="['business:rooms:exportExcel']" -->
-        <li><el-button :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button></li>
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <!-- <el-table-column prop="roomName" label="浼氳瀹�" align="center" min-width="100px"></el-table-column> -->
-        <el-table-column prop="realname" label="濮撳悕" align="center" min-width="100px"></el-table-column>
-        <el-table-column prop="januaryCount" label="涓�鏈�" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.januaryCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="浜屾湀" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.februaryCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="涓夋湀" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.marchCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍥涙湀" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.aprilCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="浜旀湀" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.mayCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍏湀" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.juneCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="涓冩湀" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.julyCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍏湀" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.augustCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="涔濇湀" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.septemberCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍗佹湀" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.octoberCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍗佷竴鏈�" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.novemberCount}H` }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="januaryCount" label="鍗佷簩鏈�" align="center" min-width="120px">
-          <template slot-scope="{row}">
-            {{ `${row.decemberCount}H` }}
-          </template>
-        </el-table-column>
-
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      ></pagination>
-    </template>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import { getUserStatistics, exportUserStatistics } from '@/api/meeting/bookings'
-import { fetchList as userList } from '@/api/system/user'
-
-export default {
-  name: 'Rooms',
-  extends: BaseTable,
-  components: { TableLayout, Pagination },
-  data () {
-    return {
-      years: [
-        '2021', '2022', '2023'
-      ],
-      sysList: [],
-      // 鎼滅储
-      searchForm: {
-        yearNum: '',
-        userId: ''
-      }
-    }
-  },
-
-  created () {
-    this.config({
-      module: '浼氳瀹や俊鎭〃',
-      api: '/meeting/rooms',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    let tempYear = new Date().getFullYear()
-    this.searchForm.yearNum = tempYear
-    this.years = [tempYear-2, tempYear-1, tempYear]
-
-    // findList({})
-    //   .then(res => {
-    //     this.rooms = res
-    //   })
-    userList({
-      page: 1,
-      capacity: 9999,
-      model: { realname: this.filterText, companyType: 1 },
-    })
-      .then(res => {
-        console.log('userList', res);
-        this.sysList = res.records
-      })
-    this.search()
-  },
-  methods: {
-    // 瀵煎嚭Excel
-    exportExcel () {
-      this.__checkApi()
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.isWorking.export = true
-          exportUserStatistics({
-            page: this.tableData.pagination.pageIndex,
-            capacity: 1000000,
-            model: this.searchForm,
-            sorts: this.tableData.sorts
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-              // this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.isWorking.export = false
-            })
-        })
-        .catch(() => {})
-    },
-    handlePageChange (pageIndex) {
-      this.__checkApi()
-      this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex
-      this.isWorking.search = true
-      getUserStatistics({
-        page: this.tableData.pagination.pageIndex,
-        capacity: this.tableData.pagination.pageSize,
-        model: this.searchForm,
-        sorts: this.tableData.sorts
-      })
-        .then(data => {
-          this.tableData.list = data.records
-          this.tableData.pagination.total = data.total
-        })
-        .catch(e => {
-          // this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-          this.isWorking.search = false
-        })
-    },
-    // selectMemberAction() {
-    //   console.log('21212');
-    //   this.$refs.selectMember.open('閫夋嫨绠$悊鍛�')
-    // },
-    changeStatus(item) {
-      updateById({
-        id: item.id,
-        status: item.status
-      }).then(res => {
-        this.search()
-      })
-    }
-  },
-}
-</script>
-
-<style scoped>
-::v-deep .el-input.is-disabled .el-input__inner {
-  background-color: #fff !important;
-  cursor: pointer;
-}
-</style>
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/operation/category.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/operation/category.vue
diff --git a/admin/src/views/operation/danger/areaSet.vue b/admin/src/views/operation/danger/areaSet.vue
deleted file mode 100644
index 6423fdc..0000000
--- a/admin/src/views/operation/danger/areaSet.vue
+++ /dev/null
@@ -1,88 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:member:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
-      <el-form-item label="闅愭偅鍖哄煙" prop="name">
-        <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ラ殣鎮e尯鍩�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="璐d换閮ㄩ棬" prop="companyName">
-        <el-input v-model="searchForm.companyName" clearable placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:hiddendangerparam:create','business:hiddendangerparam:delete']">
-        <li><el-button type="primary" @click="$refs.OperaHiddenDangerParamWindow.open('鏂板缓闅愭偅鍖哄煙',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:hiddendangerparam:create']">鏂板缓</el-button></li>
-        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:hiddendangerparam:delete']">鎵归噺鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-          v-loading="isWorking.search"
-          :data="tableData.list"
-          stripe
-          @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="name" label="闅愭偅鍖哄煙" min-width="120px"></el-table-column>
-        <el-table-column prop="companyName" label="璐d换閮ㄩ棬" min-width="120px"></el-table-column>
-        <el-table-column prop="sortnum" label="鎺掑簭鐮�"  min-width="70px"></el-table-column>
-        <el-table-column prop="memberNames" label="瀹夊叏鍛�" min-width="80px"></el-table-column>
-        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="160px"></el-table-column>
-        <el-table-column
-            v-if="containPermissions(['business:hiddendangerparam:update', 'business:hiddendangerparam:delete' ])"
-            label="鎿嶄綔"
-            min-width="140"
-            fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaHiddenDangerParamWindow.open('缂栬緫闅愭偅鍖哄煙',row,searchForm.type)" v-permissions="['business:hiddendangerparam:update']">缂栬緫</el-button>
-            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:hiddendangerparam:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-          @size-change="handleSizeChange"
-          @current-change="handlePageChange"
-          :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaHiddenDangerParamWindow ref="OperaHiddenDangerParamWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaHiddenDangerParamWindow from '@/components/business/OperaHiddenDangerParamWindow'
-export default {
-  name: 'areaSet',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaHiddenDangerParamWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        type:0
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '闅愭偅闅忔墜鎷嶉厤缃�',
-      api: '/business/hiddenDangerParam',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-  }
-}
-</script>
diff --git a/admin/src/views/operation/danger/record.vue b/admin/src/views/operation/danger/record.vue
deleted file mode 100644
index 5b60581..0000000
--- a/admin/src/views/operation/danger/record.vue
+++ /dev/null
@@ -1,234 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:empower:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="鎻愭姤浜�" prop="memberName">
-        <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏ュ鍚�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鎻愭姤浜虹粍缁�" prop="companyName">
-        <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏�" clearable @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="璐d换閮ㄩ棬" prop="dutyCompanyName">
-        <el-input v-model="searchForm.dutyCompanyName" placeholder="璇疯緭鍏ヨ矗浠婚儴闂�" clearable @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="闅愭偅鍖哄煙" prop="areaId">
-        <el-select v-model="searchForm.areaId" placeholder="璇烽�夋嫨闅愭偅鍖哄煙" clearable  @change="search">
-          <el-option
-              v-for="item in areaList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id">
-          </el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="闅愭偅绫诲瀷" prop="cateId">
-        <el-select v-model="searchForm.cateId" placeholder="璇烽�夋嫨闅愭偅绫诲瀷" clearable @change="search">
-          <el-option
-              v-for="item in cateList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id">
-          </el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-select v-model="searchForm.status"  @change="search" clearable placeholder="鐘舵��">
-          <el-option label="寰呭鐞�" value="0"></el-option>
-          <el-option label="宸插鐞�" value="1"></el-option>
-          <el-option label="宸查��鍥�" value="2"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鎻愭姤鏃堕棿" prop="startTime">
-        <el-date-picker
-            @change="seleTime"
-            v-model="time"
-            @keypress.enter.native="search"
-            type="datetimerange"
-            format="yyyy-MM-dd HH:mm:ss"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            :default-time="['00:00:00', '23:59:59']"
-            range-separator="鑷�"
-            start-placeholder="寮�濮嬫棩鏈�"
-            end-placeholder="缁撴潫鏃ユ湡">
-        </el-date-picker>
-      </el-form-item>
-      <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
-        <el-radio-button label="0">褰撳ぉ</el-radio-button>
-        <el-radio-button label="1">杩�7澶�</el-radio-button>
-        <el-radio-button label="2">杩�30澶�</el-radio-button>
-      </el-radio-group>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:hiddendanger:create', 'business:hiddendanger:exportExcel']">
-        <li><el-button type="primary" icon="el-icon-plus" v-permissions="['business:hiddendanger:create']" @click="handleEdit">鏂板缓</el-button></li>
-        <li><el-button type="primary" v-permissions="['business:hiddendanger:exportExcel']" @click="handleEx">瀵煎嚭</el-button></li>
-      </ul>
-      <el-table
-          v-loading="isWorking.search"
-          :data="tableData.list"
-          stripe
-          @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="dutyCompanyName" label="璐d换閮ㄩ棬" min-width="150px"></el-table-column>
-        <el-table-column prop="areaName" label="闅愭偅鍖哄煙" min-width="150px"></el-table-column>
-        <el-table-column prop="categoryName" label="闅愭偅绫诲瀷" min-width="150px"></el-table-column>
-        <el-table-column prop="memberName" label="鎻愭姤浜�" min-width="80px"></el-table-column>
-        <el-table-column prop="companyName" label="鎵�灞炵粍缁�" min-width="150px"></el-table-column>
-        <el-table-column prop="createDate" label="鎻愭姤鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column label="澶勭悊缁撴灉" min-width="100px">
-          <template slot-scope="{row}">
-            <span class="status-blue"  v-if="row.status === 0">寰呭鐞�</span>
-            <span class="status-green"   v-if="row.status === 1">宸插鐞�</span>
-            <span class="status-red"   v-if="row.status === 2">宸查��鍥�</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column
-            label="鎿嶄綔"
-            min-width="100"
-            fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaHiddenDangerWindow.open('闅愭偅闅忔墜鎷嶈鎯�',row)" >鏌ョ湅璇︽儏</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-          @size-change="handleSizeChange"
-          @current-change="handlePageChange"
-          :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="handlePageChange"/>
-    <!-- 鏂板缓 -->
-    <HiddenDangerParam @close="isShowEdit = false" @success="search"  v-if="isShowEdit" ref="HiddenDangerParamRef" />
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow'
-import HiddenDangerParam from '@/components/operation/HiddenDangerParam.vue'
-import { timeForMat } from '@/utils/util'
-import { allList, exportExcel } from '@/api/business/hiddenDangerParam'
-export default {
-  name: 'Empower',
-  extends: BaseTable,
-  components: { TableLayout, Pagination ,OperaHiddenDangerWindow, HiddenDangerParam},
-  data () {
-    return {
-      isShowEdit: false,
-      // 鎼滅储
-      searchForm: {
-        memberName: '',
-        companyName: '',
-        queryStartTime: '',
-        companyName: '',
-        queryEndTime: '',
-        areaId: null,
-        cateId: null,
-        status: null,
-        radio: 0
-      },
-      cateList: [],
-      areaList: [],
-      time: []
-    }
-  },
-  created () {
-    this.config({
-      module: '闅愭偅闅忔墜鎷嶇鐞�',
-      api: '/business/hiddenDanger',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    // this.search()
-    this.changeRadio('0')
-    this.loadParams()
-  },
-  methods: {
-    handleEx () {
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.exLoading = true
-          exportExcel({
-            model: this.searchForm
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-            })
-            .finally(() => {
-              this.exLoading = false
-            })
-        })
-    },
-    handleEdit () {
-      this.isShowEdit = true
-      this.$nextTick(() => {
-        this.$refs.HiddenDangerParamRef.isShowModal = true
-      })
-    },
-    changeRadio (e) {
-      this.searchForm.radio = e
-      if (e === '0') {
-        this.searchForm.queryStartTime = timeForMat(0)[0]
-        this.searchForm.queryEndTime = timeForMat(0)[1]
-        this.time = timeForMat(0)
-      } else if (e === '1') {
-        this.searchForm.queryStartTime = timeForMat(6)[0]
-        this.searchForm.queryEndTime = timeForMat(6)[1]
-        this.time = timeForMat(6)
-      } else if (e === '2') {
-        this.searchForm.queryStartTime = timeForMat(29)[0]
-        this.searchForm.queryEndTime = timeForMat(29)[1]
-        this.time = timeForMat(29)
-      }
-      this.search()
-    },
-    loadParams () {
-      allList({
-      })
-        .then(res => {
-          if (res != null && res.length) {
-            res.forEach(item => {
-              if (item && item.type != null && item.type === 0) {
-                this.areaList.push(item)
-              }
-              if (item && item.type != null && item.type === 1) {
-                this.cateList.push(item)
-              }
-            })
-          }
-        })
-        .catch(e => {
-          // this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-        })
-    },
-    seleTime (e) {
-      this.searchForm.queryStartTime = e[0]
-      this.searchForm.queryEndTime = e[1]
-      this.searchForm.radio = null
-      this.search()
-    },
-    reset () {
-      this.$refs.searchForm.resetFields()
-      this.searchForm.radio = '0'
-      this.changeRadio('0')
-      // this.search()
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/operation/danger/typeSet.vue b/admin/src/views/operation/danger/typeSet.vue
deleted file mode 100644
index 1d5bbb9..0000000
--- a/admin/src/views/operation/danger/typeSet.vue
+++ /dev/null
@@ -1,83 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:member:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
-      <el-form-item label="闅愭偅绫诲瀷" prop="name">
-        <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ラ殣鎮g被鍨�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:hiddendangerparam:create','business:hiddendangerparam:delete']">
-        <li><el-button type="primary" @click="$refs.OperaHiddenDangerParamWindow.open('鏂板缓闅愭偅绫诲瀷',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:hiddendangerparam:create']">鏂板缓</el-button></li>
-        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:hiddendangerparam:delete']">鎵归噺鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-          v-loading="isWorking.search"
-          :data="tableData.list"
-          stripe
-          @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="name" label="闅愭偅绫诲瀷" min-width="200px"></el-table-column>
-        <el-table-column prop="sortnum" label="鎺掑簭鐮�"  min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="200px"></el-table-column>
-        <el-table-column
-            v-if="containPermissions(['business:hiddendangerparam:update', 'business:hiddendangerparam:delete' ])"
-            label="鎿嶄綔"
-            min-width="250"
-            fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaHiddenDangerParamWindow.open('缂栬緫闅愭偅绫诲瀷',row,searchForm.type)" v-permissions="['business:hiddendangerparam:update']">缂栬緫</el-button>
-            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:hiddendangerparam:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-          @size-change="handleSizeChange"
-          @current-change="handlePageChange"
-          :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaHiddenDangerParamWindow ref="OperaHiddenDangerParamWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaHiddenDangerParamWindow from '@/components/business/OperaHiddenDangerParamWindow'
-export default {
-  name: 'areaSet',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaHiddenDangerParamWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        type:1
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '闅愭偅闅忔墜鎷嶉厤缃被鍨�',
-      api: '/business/hiddenDangerParam',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-  }
-}
-</script>
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/operation/device.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/operation/device.vue
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/operation/record.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/operation/record.vue
diff --git a/admin/src/views/operation/serviceCar/apprConfig.vue b/admin/src/views/operation/serviceCar/apprConfig.vue
deleted file mode 100644
index e42cad6..0000000
--- a/admin/src/views/operation/serviceCar/apprConfig.vue
+++ /dev/null
@@ -1,668 +0,0 @@
-<template>
-  <TableLayout>
-    <template v-slot:table-wrap>
-      <el-tabs v-model="activeType" @tab-click="handleClick">
-        <el-tab-pane label="甯傚唴鐢ㄨ溅" name="3"></el-tab-pane>
-        <el-tab-pane label="甯傚鐢ㄨ溅" name="4"></el-tab-pane>
-      </el-tabs>
-      <div class="config">
-        <div class="config_list">
-          <div class="config_list_head">
-            <span>閰嶇疆娴佺▼</span>
-          </div>
-          <div class="config_content">
-            <div class="item">
-              <div class="head">鍙戣捣浜�</div>
-              <div class="content">鍐呴儴鍛樺伐</div>
-            </div>
-            <div class="arrows">
-              <div class="line"></div>
-              <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
-            </div>
-            <div v-for="(item, index) in apprList" :key="index">
-              <div class="item yellow" :class="{
-                active: activeIndex == index,
-                blue: item.type == '1',
-              }" @click="flowClick(index)">
-                <div class="head">{{ item.remark }}</div>
-                <div class="content">
-                  <!-- 瀹℃壒 -->
-                  <template v-if="item.type == 0">
-                    <template v-if="item.memberType == '2'">
-                      <div>閮ㄩ棬涓荤</div>
-                    </template>
-                    <template v-if="item.memberType == '1'">
-                      <div v-if="item.objIds && item.objIds.length === 1">
-                        <span>{{ item.objIds[0].name }}
-                          {{ item.objIds[0].companyName }}</span>
-                        <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span>
-                        <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span>
-                      </div>
-                      <div v-else-if="item.objIds && item.objIds.length > 1">
-                        <span>{{ item.objIds[0].name }} 绛�</span>
-                        <span v-if="item.approveType == 0 && item.type == '0'">
-                          鎴栫</span>
-                        <span v-if="item.approveType == 1 && item.type == '0'">
-                          浼氱</span>
-                      </div>
-                      <div v-else>璇烽�夋嫨</div>
-                      <i class="el-icon-arrow-right"></i>
-                    </template>
-                  </template>
-                  <!-- 鎶勯�� -->
-                  <template v-if="item.type == 1">
-                    <div v-if="item.objIds && item.objIds.length === 1">
-                      <span>{{ item.objIds[0].name }}
-                        {{ item.objIds[0].companyName }}</span>
-                    </div>
-                    <div v-else-if="item.objIds && item.objIds.length > 1">
-                      <span>{{ item.objIds[0].name }} 绛�</span>
-                    </div>
-                    <div v-else>璇烽�夋嫨</div>
-                    <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i>
-                  </template>
-                </div>
-              </div>
-              <div class="arrows">
-                <template v-if="apprList.length - 1 !== index">
-                  <div class="line"></div>
-                  <img src="@/assets/images/peizhi_ar@2x.png" alt="" />
-                </template>
-                <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="config_data">
-          <div class="config_data_item">
-            <div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div>
-            <div class="df_ac mb10">
-              <div>瀹℃壒鑺傜偣鍚嶇О</div>
-              <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input>
-            </div>
-            <!-- 鎶勯�佷汉 -->
-            <template v-if="apprList[activeIndex].type == '1'">
-              <div class="config_data_item_reviewed_content">
-                <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id"
-                  class="config_data_item_reviewed_content_item">
-                  <span>{{ mem.name }}</span>
-                  <i @click="memDel(memIndex)" class="el-icon-close"></i>
-                </div>
-                <span class="add" @click="selStaff">+娣诲姞</span>
-              </div>
-            </template>
-            <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType">
-              <!-- <el-radio :label="0">琚浜�</el-radio> -->
-              <el-radio :label="1">鎸囧畾浜哄憳</el-radio>
-              <el-radio :label="2">閮ㄩ棬涓荤</el-radio>
-            </el-radio-group>
-            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1">
-              <div class="config_data_item_reviewed_label">
-                <span>鎸囧畾瀹℃牳浜�</span>
-                <span>涓嶈秴杩�20浜�</span>
-              </div>
-              <div class="config_data_item_reviewed_content">
-                <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id"
-                  class="config_data_item_reviewed_content_item">
-                  <span>{{ mem.name }}</span>
-                  <i class="el-icon-close" @click="memDel(memIndex)"></i>
-                </div>
-                <span class="add" @click="selStaff">+娣诲姞</span>
-              </div>
-            </div>
-            <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2">
-              <div class="config_data_item_reviewed_label">
-                <span>閮ㄩ棬涓荤</span>
-              </div>
-              <div class="config_data_item_reviewed_r">
-                <span>鐢宠浜虹殑</span>
-                <el-select v-model="apprList[activeIndex].objLevel" placeholder="璇烽�夋嫨" style="margin: 0 20px 0 10px">
-                  <el-option label="鐩存帴涓荤" :value="0" />
-                  <el-option label="浜岀骇涓荤" :value="1" />
-                  <el-option label="涓夌骇涓荤" :value="2" />
-                  <el-option label="鍥涚骇涓荤" :value="4" />
-                </el-select>
-                <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1"
-                  :false-label="0">鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox>
-              </div>
-            </div>
-          </div>
-          <div class="config_data_item" v-if="
-            (apprList[activeIndex].memberType == 1 ||
-              apprList[activeIndex].memberType == 2) &&
-            apprList[activeIndex].type == '0'
-          ">
-            <div class="config_data_item_label">
-              瀹℃壒鏂瑰紡
-              <span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span>
-            </div>
-            <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column">
-              <el-radio :label="0" style="margin-bottom: 20px">鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio>
-              <el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio>
-            </el-radio-group>
-          </div>
-          <div v-if="apprList[activeIndex].type == '0'" class="df_ac mb10">
-            <div>鍏佽淇敼"椹鹃┒鍛�"</div>
-            <el-switch class="ml10" :active-value="1" :inactive-value="0"
-              v-model="apprList[activeIndex].driverParam"></el-switch>
-          </div>
-          <div class="config_data_submit">
-            <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe"
-              type="primary">淇濆瓨閰嶇疆椤�</el-button>
-            <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain
-              @click="handleDel">鍒犻櫎鑺傜偣</el-button>
-          </div>3
-        </div>
-      </div>
-    </template>
-    <!--  -->
-    <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="1000px">
-      <div class="staff_modal">
-        <div class="left">
-          <div style="
-              width: 100%;
-              height: 50px;
-              background: rgba(242, 242, 242, 1);
-              line-height: 50px;
-              text-align: center;
-              font-size: 14px;
-            ">
-            浼佷笟缁勭粐鏋舵瀯
-          </div>
-          <div style="width: 100%; max-height: 560px; overflow-y: scroll">
-            <Tree :list="companyTree" :defaultProps="{
-              name: 'name',
-              status: 'fsStatus',
-              children: 'childList',
-              id: 'id',
-            }" @callback="callback" />
-          </div>
-        </div>
-        <el-transfer filterable :title="['鏈��', '宸查��']" openAll :props="{ label: 'name', key: 'keyTemp' }"
-          filter-placeholder="鎼滅储鍛樺伐" v-model="searchForm.objIds" :data="memberList" class="transfer">
-        </el-transfer>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowTransfer = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="TransferSub">纭� 瀹�</el-button>
-      </span>
-    </el-dialog>
-  </TableLayout>
-</template>
-
-<script>
-import TableLayout from '@/layouts/TableLayout'
-// import treeTransfer from 'el-tree-transfer'
-import Tree from '@/components/common/Tree'
-import { approveTemplSave, approveTemplByType } from '@/api'
-import { fetchList } from '@/api/business/company'
-import { fetchList as memberListPost } from '@/api/business/member'
-export default {
-  name: 'config',
-  components: {
-    TableLayout,
-    Tree
-  },
-  data() {
-    return {
-      activeType: '3',
-      subLoading: false,
-      apprList: [
-        { remark: '瀹℃壒浜�', active: false, type: '0', objIds: [] },
-        { remark: '鎶勯�佷汉', active: false, type: '1', objIds: [] }
-      ],
-      activeIndex: 0,
-
-      param: {},
-      searchForm: {},
-      isShowTransfer: false,
-      memberList: [],
-      companyTree: []
-    }
-  },
-  created() {
-    this.getfindCompanyTreePage()
-    this.initDate()
-  },
-  methods: {
-    handleClick() {
-      this.apprList = []
-      const arr = [
-        { remark: '瀹℃壒浜�', active: false, type: 0, objIds: [] },
-        { remark: '鎶勯�佷汉', active: false, type: 1, objIds: [] }
-      ]
-      this.apprList = [...arr]
-      this.initDate()
-    },
-    flowClick(i) {
-      this.activeIndex = i
-      this.apprList.forEach((item, index) => {
-        if (i === index) {
-          item.active = true
-          if (item.objIds && item.objIds.length > 0) {
-            const objIds = item.objIds.map(i => {
-              return `${i.id}-${i.name}${i.companyName ? '-' + i.companyName : ''}`
-            })
-            this.$set(this.searchForm, 'objIds', objIds)
-          } else {
-            this.$set(this.searchForm, 'objIds', [])
-          }
-        } else {
-          item.active = false
-        }
-      })
-    },
-    initDate() {
-      const { activeType } = this
-      approveTemplByType(activeType).then(res => {
-        if (res && res.paramList) {
-          const arr = res.paramList || []
-          arr.forEach(item => {
-            if (item.memberList && item.memberList.length > 0) {
-              item.objIds = item.memberList.map(i => {
-                return {
-                  id: i.id,
-                  name: i.name,
-                  companyName: i.companyName
-                }
-              })
-            } else {
-              item.objIds = []
-            }
-          })
-          this.apprList = arr
-          this.flowClick(0)
-          this.$forceUpdate()
-        }
-
-        // console.log(res);
-      })
-    },
-    onSubmit() {
-      const { apprList, activeType } = this
-      const temp = JSON.parse(JSON.stringify(apprList))
-      temp.forEach((item, index) => {
-        item.level = index + 1
-        if (item.objIds && item.objIds.length > 0) {
-          item.objIds = item.objIds.map(i => i.id).join(',')
-        } else {
-          item.objIds = ''
-        }
-      })
-      this.subLoading = true
-      approveTemplSave({
-        type: activeType,
-        paramList: temp
-      }).then(res => {
-        this.subLoading = false
-        this.$tip.success('淇濆瓨鎴愬姛')
-      }, () => {
-        this.subLoading = false
-      })
-    },
-    handleDel() {
-      const { activeIndex } = this
-      this.apprList.splice(activeIndex, 1)
-      this.activeIndex = 0
-    },
-    handleAddAppr() {
-      this.apprList.splice(this.apprList.length - 1, 0, { remark: '瀹℃壒浜�', approveType: 0, active: false, type: 0, objIds: [] })
-      // this.apprList.push({ remark: '瀹℃壒浜�', active: false, type: '0' })
-    },
-
-    // 鑾峰彇缁勭粐鏍�
-    getfindCompanyTreePage() {
-      fetchList()
-        .then(res => {
-          if (res && res.length > 0) {
-            res[0].fsStatus = 1
-            this.companyTree = res
-            // // this.searchForm.erpOrgId = res[0].erpId
-            // this.search()
-            // this.department = this.getDepartmentTree(res)
-          }
-        })
-    },
-    getMemberList() {
-      memberListPost({
-        model: {
-          companyId: this.searchForm.companyId || '',
-          canVisit: '',
-          companyType: 1,
-          erpOrgId: '',
-          hasFace: '',
-          hkStatus: '',
-          includeChild: true,
-          type: 2
-        },
-        page: 1,
-        capacity: 300
-      }).then(res => {
-        this.memberList = res.records || []
-        this.memberList.forEach(item => {
-          item.keyTemp = item.id + '-' + item.name + '-' + item.companyName || ''
-        })
-        // console.log('defaultProps', res)
-      })
-    },
-    callback(row) {
-      console.log(row)
-      this.$set(this.searchForm, 'companyId', row.id)
-      this.$set(this.searchForm, 'erpOrgId', row.erpId)
-      this.getMemberList()
-    },
-    TransferSub() {
-      const { activeIndex } = this
-      if (this.searchForm.objIds && this.searchForm.objIds.length > 0) {
-        if (this.searchForm.objIds.length > 20) return this.$message.warning('鏈�澶氶�夋嫨20浜�')
-        const arr = this.searchForm.objIds.map(ii => {
-          const obj = ii.split('-')
-          return {
-            id: Number(obj[0]),
-            name: obj[1],
-            companyName: obj[2] || ''
-          }
-        })
-        this.apprList.forEach((item, index) => {
-          if (activeIndex === index) {
-            item.objIds = arr
-          }
-        })
-      }
-      this.isShowTransfer = false
-      console.log(this.searchForm.objIds)
-    },
-    memDel(memIndex) {
-      const { activeIndex } = this
-      this.apprList.forEach((item, index) => {
-        if (activeIndex === index) {
-          item.objIds.splice(memIndex, 1)
-          const objIds = item.objIds.map(i => {
-            return i.id + '-' + i.name
-          })
-          this.$set(this.searchForm, 'objIds', objIds)
-        }
-      })
-    },
-    selStaff() {
-      this.isShowTransfer = true
-      this.getMemberList()
-    },
-    seleItem(i) {
-      this.list.forEach((item, index) => {
-        item.active = index === i
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.config {
-  width: 100%;
-  padding-bottom: 20px;
-  box-sizing: border-box;
-  height: calc(100vh - 140px);
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-
-  .config_list {
-    width: 543px;
-    height: 100%;
-    flex-shrink: 0;
-    border-radius: 2px;
-    padding: 20px;
-    box-sizing: border-box;
-    border: 1px solid #eeeeee;
-    background: #f7f7f7;
-
-    .config_list_head {
-      width: 100%;
-      height: 40px;
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-
-      span {
-        font-size: 18px;
-        font-weight: 500;
-        color: #222222;
-      }
-    }
-
-    .config_content {
-      width: 100%;
-      height: calc(100% - 40px);
-      padding-top: 45px;
-      box-sizing: border-box;
-      overflow-y: scroll;
-      display: flex;
-      align-items: center;
-      flex-direction: column;
-
-      &::-webkit-scrollbar {
-        width: 0;
-      }
-
-      .active {
-        border: 2px solid #4456ac !important;
-      }
-
-      .yellow {
-        background: #e89e42 !important;
-      }
-
-      .blue {
-        background: #5094f3 !important;
-      }
-
-      .arrows {
-        display: flex;
-        flex-direction: column;
-        align-items: center;
-        position: relative;
-
-        .line {
-          width: 1px;
-          height: 60px;
-          background-color: #ccc;
-        }
-
-        .add {
-          font-size: 40px;
-          color: #2080f7;
-          position: absolute;
-          cursor: pointer;
-          z-index: 999;
-          top: 10px;
-        }
-
-        img {
-          width: 12px;
-        }
-      }
-
-      .item {
-        width: 200px;
-        cursor: pointer;
-        border: 2px solid #f7f7f7;
-        height: 80px;
-        background: #4456ac;
-        border-radius: 2px;
-        position: relative;
-        display: flex;
-        flex-direction: column;
-
-        .head {
-          height: 32px;
-          line-height: 32px;
-          padding: 2px 12px;
-          color: #fff;
-        }
-
-        .content {
-          flex: 1;
-          background-color: #fff;
-          display: flex;
-          align-items: center;
-          padding: 0 12px;
-          justify-content: space-between;
-        }
-
-        &:last-child {
-          margin: 0 !important;
-        }
-      }
-    }
-  }
-
-  .config_data {
-    flex: 1;
-    height: 100%;
-    margin-left: 20px;
-
-    .config_data_submit {
-      margin-top: 50px;
-    }
-
-    .config_data_item {
-      width: 100%;
-      display: flex;
-      flex-direction: column;
-      margin-bottom: 30px;
-
-      &:last-child {
-        margin: 0 !important;
-      }
-
-      .config_data_item_label {
-        font-size: 16px;
-        font-weight: 500;
-        color: #222222;
-        margin-bottom: 20px;
-
-        span {
-          font-size: 12px;
-          font-weight: 400;
-          color: #999999;
-          margin-left: 10px;
-        }
-      }
-
-      .config_data_item_reviewed {
-        width: 100%;
-        margin-top: 20px;
-
-        .config_data_item_reviewed_r {
-          margin-top: 10px;
-          width: 100%;
-          display: flex;
-          align-items: center;
-
-          span {
-            flex-shrink: 0;
-            font-size: 14px;
-            font-weight: 400;
-            color: #666666;
-          }
-        }
-
-        .config_data_item_reviewed_label {
-          display: flex;
-          align-items: center;
-
-          span {
-            &:nth-child(1) {
-              font-size: 14px;
-              font-weight: 400;
-              color: #222222;
-            }
-
-            &:nth-child(2) {
-              font-size: 12px;
-              font-weight: 400;
-              color: #999999;
-              margin-left: 8px;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-.config_data_item_reviewed_content {
-  width: 400px;
-  margin-top: 10px;
-  height: 110px;
-  padding: 12px;
-  box-sizing: border-box;
-  border-radius: 2px;
-  border: 1px solid #dfe2e8;
-  display: flex;
-  align-items: flex-start;
-  flex-wrap: wrap;
-
-  .add {
-    font-size: 12px;
-    font-weight: 400;
-    color: #435ebe;
-    cursor: pointer;
-    margin-top: 3px;
-  }
-
-  .config_data_item_reviewed_content_item {
-    padding: 3px 5px;
-    background: #f4f7fc;
-    border-radius: 2px;
-    box-sizing: border-box;
-    margin-right: 10px;
-    margin-bottom: 10px;
-
-    span {
-      font-size: 12px;
-      font-weight: 400;
-      color: #333333;
-    }
-
-    i {
-      color: #949ba2;
-      margin-left: 10px;
-      cursor: pointer;
-    }
-  }
-}
-
-.staff_modal {
-  display: flex;
-
-  .left {
-    width: 300px;
-    margin-right: 20px;
-  }
-
-  .transfer {
-    height: 600px;
-    width: 100%;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-
-    ::v-deep .el-transfer-panel {
-      flex: 1;
-      height: 100%;
-    }
-
-    ::v-deep .el-transfer-panel__body {
-      height: 500px;
-    }
-
-    ::v-deep .el-transfer-panel__list.is-filterable {
-      height: 480px;
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/operation/serviceCar/apprRecord.vue b/admin/src/views/operation/serviceCar/apprRecord.vue
deleted file mode 100644
index 784b850..0000000
--- a/admin/src/views/operation/serviceCar/apprRecord.vue
+++ /dev/null
@@ -1,385 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:empower:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form
-      ref="searchForm"
-      slot="search-form"
-      :model="searchForm"
-      label-width="100px"
-      inline
-    >
-      <el-form-item label="鐢宠浜�" prop="memberName">
-        <el-input
-          v-model="searchForm.memberName"
-          placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�"
-          @keypress.enter.native="search"
-        ></el-input>
-      </el-form-item>
-      <el-form-item label="鐢宠浜虹粍缁�" prop="companyName">
-        <el-input
-          v-model="searchForm.companyName"
-          placeholder="璇疯緭鍏ョ敵璇蜂汉缁勭粐"
-          clearable
-          @keypress.enter.native="search"
-        ></el-input>
-      </el-form-item>
-      <el-form-item label="杞︾墝鍙�" prop="carCode">
-        <el-input
-          v-model="searchForm.carCode"
-          placeholder="璇疯緭鍏ヨ溅鐗屽彿"
-          clearable
-          @keypress.enter.native="search"
-        ></el-input>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-select
-          v-model="searchForm.status"
-          @change="search"
-          clearable
-          placeholder="鐘舵��"
-        >
-          <el-option label="鐢宠涓�" value="0"></el-option>
-          <el-option label="瀹℃牳涓�" value="1"></el-option>
-          <el-option label="瀹℃壒閫氳繃" value="2"></el-option>
-          <el-option label="瀹℃壒涓嶉�氳繃" value="3"></el-option>
-          <el-option label="宸叉挙閿�" value="4"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鐩殑鍦扮被鍨�" prop="type">
-        <el-select
-          v-model="searchForm.type"
-          @change="search"
-          clearable
-          placeholder="鐩殑鍦扮被鍨�"
-        >
-          <el-option label="甯傚唴鐢ㄨ溅" value="0"></el-option>
-          <el-option label="甯傚鐢ㄨ溅" value="1"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鍑哄彂鏃堕棿" prop="startTime">
-        <el-date-picker
-          @change="seleTime"
-          v-model="time"
-          @keypress.enter.native="search"
-          type="datetimerange"
-          format="yyyy-MM-dd HH:mm:ss"
-          value-format="yyyy-MM-dd HH:mm:ss"
-          :default-time="['00:00:00', '23:59:59']"
-          range-separator="鑷�"
-          start-placeholder="寮�濮嬫棩鏈�"
-          end-placeholder="缁撴潫鏃ユ湡"
-        >
-        </el-date-picker>
-      </el-form-item>
-      <el-radio-group
-        v-model="searchForm.radio"
-        size="small"
-        @input="changeRadio"
-      >
-        <el-radio-button label="0">褰撳ぉ</el-radio-button>
-        <el-radio-button label="1">杩�7澶�</el-radio-button>
-        <el-radio-button label="2">杩�30澶�</el-radio-button>
-      </el-radio-group>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul
-        class="toolbar"
-        v-permissions="[
-          'business:carusebook:create',
-          'business:carusebook:exportExcel',
-        ]"
-      >
-        <li>
-          <el-button
-            type="primary"
-            @click="handleEdit"
-            icon="el-icon-plus"
-            v-permissions="['business:carusebook:create']"
-            >鏂板缓</el-button
-          >
-        </li>
-        <li>
-          <el-button
-            type="primary"
-            @click="handleEx"
-            v-permissions="['business:carusebook:exportExcel']"
-            >瀵煎嚭</el-button
-          >
-        </li>
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column
-            prop="carCode"
-            label="杞︾墝鍙�"
-            min-width="100px"
-        ></el-table-column>
-        <el-table-column
-          prop="memberName"
-          label="鎻愭姤浜�"
-          min-width="80px"
-        ></el-table-column>
-        <el-table-column
-            prop="memberNames"
-            label="涔樿溅浜�"
-            min-width="180px"
-        ></el-table-column>
-        <el-table-column
-          prop="companyName"
-          label="鎵�灞炵粍缁�"
-          min-width="150px"
-        ></el-table-column>
-        <el-table-column label="鐢ㄨ溅鏃堕棿" min-width="170px">
-          <template slot-scope="{ row }">
-            <span v-if="row.startTime">璧�:{{ row.startTime.slice(0,16) }}</span
-            ><br />
-            <span v-if="row.endTime">姝�:{{ row.endTime.slice(0,16) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column
-          prop="planUseDate"
-          label="鍑哄彂鏃堕棿"
-          min-width="150px"
-        >
-        <template slot-scope="{ row }">
-          <span v-if="row.planUseDate">{{ row.planUseDate.slice(0,16) }}</span>
-        </template>
-      </el-table-column>
-        <el-table-column label="鐩殑鍦�" min-width="200px">
-          <template slot-scope="{ row }">
-            <span class="status-green" v-if="row.type === 0">銆愬競鍐呫��</span>
-            <span class="status-red" v-if="row.type === 1">銆愬競澶栥��</span>
-            <span>{{ row.addr }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="鐘舵��" min-width="100px">
-          <template slot-scope="{ row }">
-            <span class="status-blue" v-if="row.status === 0">鐢宠涓�</span>
-            <span class="status-blue" v-if="row.status === 1">瀹℃牳涓�</span>
-            <span class="status-green" v-if="row.status === 2">瀹℃壒閫氳繃</span>
-            <span class="status-red" v-if="row.status === 3">瀹℃壒涓嶉�氳繃</span>
-            <span class="status-red" v-if="row.status === 4">宸叉挙閿�</span>
-          </template>
-        </el-table-column>
-
-        <el-table-column
-          prop="createDate"
-          label="鐢宠鏃堕棿"
-          min-width="150px"
-        ></el-table-column>
-        <el-table-column
-          prop="editDate"
-          label="鎿嶄綔鏃堕棿"
-          min-width="150px"
-        ></el-table-column>
-        <el-table-column
-          label="鎿嶄綔"
-          min-width="160"
-          align="center"
-          fixed="right"
-        >
-          <template slot-scope="{ row }">
-            <el-button
-              type="text"
-              icon="el-icon-edit"
-              @click="$refs.OperaDetailsWindow.open('鍏姟杞︾敵璇疯鎯�', row)"
-              >鏌ョ湅璇︽儏</el-button
-            >
-            <!-- <el-button v-if="(row.status === 1 || row.status === 2) && new Date().getTime() < new Date(row.startTime).getTime()" type="text" icon="el-icon-delete" @click="rowRevokeClick(row)" >鎾ら攢</el-button> -->
-            <el-button
-              v-if="
-                (row.status === 0 || row.status === 1 || row.status === 2) &&
-                new Date().getTime() < new Date(row.startTime).getTime()
-              "
-              type="text"
-              icon="el-icon-delete"
-              @click="rowRevokeClick(row)"
-              >鎾ら攢</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!--  -->
-    <el-dialog title="鐢ㄨ溅鎾ら攢" :visible.sync="isShowBack" width="520px">
-      <el-form
-        :model="backParam"
-        :rules="rules"
-        ref="backForm"
-        label-width="100px"
-        class="demo-ruleForm"
-      >
-        <el-form-item label="璇存槑" prop="info">
-          <el-input
-            type="textarea"
-            :rows="4"
-            v-model="backParam.info"
-            placeholder="璇疯緭鍏ユ挙閿�璇存槑"
-          ></el-input>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowBack = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="backSubmit">纭畾</el-button>
-      </span>
-    </el-dialog>
-    <OperaCarUseBookWindow
-      ref="OperaDetailsWindow"
-      @success="handlePageChange"
-    />
-    <OperaCarUseBookParamWindow ref="OperaParamWindow" @success="search" />
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCarUseBookWindow from '@/components/business/OperaCarUseBookWindow'
-import OperaCarUseBookParamWindow from '@/components/operation/OperCarUseBookParamWindow.vue'
-import { timeForMat } from '@/utils/util'
-import { allList } from '@/api/business/hiddenDangerParam'
-import { carUseBookRecordEx, revokeById } from '@/api/business/carUseBook'
-export default {
-  name: 'Empower',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCarUseBookWindow, OperaCarUseBookParamWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        memberName: '',
-        companyName: '',
-        queryStartTime: '',
-        queryEndTime: '',
-        type: null,
-        status: null,
-        radio: 0
-      },
-      cateList: [],
-      areaList: [],
-      time: [],
-
-      isShowBack: false,
-      backParam: {},
-      rules: {
-        info: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鐢ㄨ溅鐢宠绠$悊',
-      api: '/business/carUseBook',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    // this.search()
-    this.changeRadio('0')
-    this.loadParams()
-  },
-  methods: {
-    rowRevokeClick (row) {
-      this.isShowBack = true
-      this.backParam = {}
-      this.$set(this.backParam, 'id', row.id)
-      this.$nextTick(() => {
-        this.$refs.backForm.clearValidate()
-      })
-    },
-    backSubmit () {
-      revokeById({ ...this.backParam }).then(res => {
-        this.$tip.success('鎾ら攢鎴愬姛')
-        this.isShowBack = false
-        this.search()
-      })
-    },
-    handleEx () {
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.exLoading = true
-          carUseBookRecordEx({
-            model: this.searchForm
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-            })
-            .finally(() => {
-              this.exLoading = false
-            })
-        })
-    },
-    changeRadio (e) {
-      this.searchForm.radio = e
-      if (e === '0') {
-        this.searchForm.queryStartTime = timeForMat(0)[0]
-        this.searchForm.queryEndTime = timeForMat(0)[1]
-        this.time = timeForMat(0)
-      } else if (e === '1') {
-        this.searchForm.queryStartTime = timeForMat(6)[0]
-        this.searchForm.queryEndTime = timeForMat(6)[1]
-        this.time = timeForMat(6)
-      } else if (e === '2') {
-        this.searchForm.queryStartTime = timeForMat(29)[0]
-        this.searchForm.queryEndTime = timeForMat(29)[1]
-        this.time = timeForMat(29)
-      }
-      this.search()
-    },
-    handleEdit () {
-      this.$refs.OperaParamWindow.open()
-    },
-    loadParams () {
-      allList({
-      })
-        .then(res => {
-          if (res != null && res.length) {
-            res.forEach(item => {
-              if (item && item.type != null && item.type === 0) {
-                this.areaList.push(item)
-              }
-              if (item && item.type != null && item.type === 1) {
-                this.cateList.push(item)
-              }
-            })
-          }
-        })
-        .catch(e => {
-          // this.$tip.apiFailed(e)
-        })
-        .finally(() => {
-        })
-    },
-    seleTime (e) {
-      this.searchForm.queryStartTime = e[0]
-      this.searchForm.queryEndTime = e[1]
-      this.searchForm.radio = null
-      this.search()
-    },
-    reset () {
-      this.$refs.searchForm.resetFields()
-      this.searchForm.radio = '0'
-      this.changeRadio('0')
-      // this.search()
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/operation/serviceCar/driverConfig.vue b/admin/src/views/operation/serviceCar/driverConfig.vue
deleted file mode 100644
index 3878456..0000000
--- a/admin/src/views/operation/serviceCar/driverConfig.vue
+++ /dev/null
@@ -1,90 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:member:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
-      <el-form-item label="鍙告満濮撳悕/鎵嬫満鍙�" prop="memberName">
-        <el-input v-model="searchForm.memberName" clearable placeholder="璇疯緭鍏ュ徃鏈哄鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:cardriver:create','business:cardriver:delete']">
-        <li><el-button type="primary" @click="$refs.OperaCarDriverWindow.open('鏂板缓鍙告満',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:cardriver:create']">鏂板缓</el-button></li>
-        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:cardriver:delete']">鎵归噺鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-          v-loading="isWorking.search"
-          :data="tableData.list"
-          stripe
-          @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="memberName" label="濮撳悕" min-width="150px"></el-table-column>
-        <el-table-column prop="memberPhone" label="鎵嬫満鍙�" min-width="200px"></el-table-column>
-        <el-table-column prop="memberSex" label="鎬у埆"  min-width="100px">
-          <template slot-scope="{row}">
-            <span  v-if="row.memberSex == 1">鐢�</span>
-            <span  v-if="row.memberSex == 2">濂�</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="companyName" label="缁勭粐"  min-width="260px"></el-table-column>
-        <el-table-column prop="carCode" label="杞︾墝鍙�"  min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column
-            v-if="containPermissions(['business:cardriver:update', 'business:cardriver:delete' ])"
-            label="鎿嶄綔"
-            min-width="250"
-            fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaCarDriverWindow.open('缂栬緫鍙告満',row,searchForm.type)" v-permissions="['business:cardriver:update']">缂栬緫</el-button>
-            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:cardriver:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-          @size-change="handleSizeChange"
-          @current-change="handlePageChange"
-          :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaCarDriverWindow ref="OperaCarDriverWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCarDriverWindow from '@/components/business/OperaCarDriverWindow'
-export default {
-  name: 'areaSet',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCarDriverWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        title: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鍙告満閰嶇疆',
-      api: '/business/carDriver',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-  }
-}
-</script>
diff --git a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue b/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
deleted file mode 100644
index ecc0fa4..0000000
--- a/admin/src/views/platform/LogisticsRecord/leaveAuth.vue
+++ /dev/null
@@ -1,251 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)"
-      @clear="clear">
-      <template #fastdate>
-        <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio">
-          <el-radio-button label="0">褰撳ぉ</el-radio-button>
-          <el-radio-button label="6">杩�7澶�</el-radio-button>
-          <el-radio-button label="29">杩�30澶�</el-radio-button>
-        </el-radio-group>
-      </template>
-    </QueryForm>
-    <div class="pt16">
-      <el-button :loading="exLoading" @click="handleEx"
-        v-permissions="['business:platformjob:exportExcel']">瀵煎嚭</el-button>
-    </div>
-    <el-table class="mb20" v-loading="loading" :data="list" stripe>
-      <el-table-column type="index" label="搴忓彿" width="70" show-overflow-tooltip />
-      <el-table-column prop="billCode" label="杩愬崟鍙�/鍚堝悓鍙�" min-width="100" show-overflow-tooltip>
-        <template v-slot="scope">
-          <span>{{ scope.row.billCode || scope.row.contractNum }}</span>
-        </template>
-      </el-table-column>
-      <!-- <el-table-column prop="totalNum" label="鎬讳綔涓氶噺(涓囨敮)" min-width="100" show-overflow-tooltip /> -->
-      <el-table-column prop="carCodeFront" label="杞︾墝鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeBack" label="鐢靛瓙閿佺姸鎬�" min-width="100" show-overflow-tooltip>
-        <template v-slot="scope">
-          <span class="red" v-if="scope.row.billCode && scope.row.lockStatus == 0">鏈笂閿�</span>
-          <span class="red" v-if="scope.row.billCode && scope.row.lockStatus == 1">閮ㄥ垎涓婇攣</span>
-          <span v-if="scope.row.billCode && scope.row.lockStatus == 2">鍏ㄩ儴涓婇攣</span>
-          <span v-if="!scope.row.billCode">-</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="carrierName" label="杩愯緭鍏徃" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="driverName" label="椹鹃┒鍛�" min-width="120" show-overflow-tooltip>
-        <template v-slot="scope">
-          <span>{{ scope.row.driverName }} {{ scope.row.drivierPhone }}</span>
-        </template>
-      </el-table-column>
-      <!-- <el-table-column prop="drivierPhone" label="鑱旂郴鏂瑰紡" min-width="100" show-overflow-tooltip /> -->
-
-      <el-table-column prop="doneDate" label="浣滀笟瀹屾垚鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="workTime" label="鎺堟潈鐘舵��" min-width="100" show-overflow-tooltip>
-        <template v-slot="scope">
-          <span v-if="scope.row.status == 9 || scope.row.status == 10">宸叉巿鏉�</span>
-          <span class="red" v-if="scope.row.status == 6">鏈巿鏉�</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="outUserName" label="鎿嶄綔鍛�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="outHkdate" label="鎿嶄綔鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="remark" label="澶囨敞" min-width="150" show-overflow-tooltip />
-      <el-table-column label="鎿嶄綔" align="center" fixed="right" min-width="100" show-overflow-tooltip>
-        <template v-slot="scope">
-          <el-button v-if="scope.row.status == 6" type="text" v-permissions="['business:platformbooks:detail']"
-            @click="handleAuth(scope.row)">绂诲洯鎺堟潈</el-button>
-          <span v-else>-</span>
-        </template>
-      </el-table-column>
-    </el-table>
-    <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
-    <!--  -->
-    <!--  -->
-    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import { platformJobPage, platformJobExport, platformPowerLevel } from '@/api'
-import { statusMap } from '../config'
-import DriverDetail from "@/views/task/driverDetail"
-import GlobalWindow from '@/components/common/GlobalWindow'
-import UploadFaceImg from '@/components/common/UploadFaceImg'
-import { Message } from 'element-ui'
-import dayjs from 'dayjs'
-export default {
-  components: {
-    Pagination,
-    QueryForm,
-    DriverDetail,
-    GlobalWindow,
-    UploadFaceImg
-  },
-  data() {
-    return {
-      statusMap,
-      isShowDriver: false,
-      exLoading: false,
-      loading: false,
-      pagination: {
-        pageSize: 10,
-        page: 1,
-        total: 0
-      },
-      filters: {
-        selDate: [],
-        fastdate: 0
-      },
-      list: [],
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'contractNum',
-            type: 'input',
-            label: '鍚堝悓鍙�'
-          },
-          {
-            filed: 'billCode',
-            type: 'input',
-            label: '杩愬崟鍙�'
-          },
-          {
-            filed: 'carCodeFront',
-            type: 'input',
-            label: '杞︾墝鍙�'
-          },
-          {
-            filed: 'driverName',
-            type: 'input',
-            label: '椹鹃┒鍛�'
-          },
-          {
-            filed: 'queryStatusForPower',
-            type: 'select',
-            label: '鎺堟潈鐘舵��',
-            options: [
-              { value: '9,10', label: '宸叉巿鏉�' },
-              { value: '6', label: '鏈巿鏉�' }
-            ]
-          },
-          {
-            filed: 'selDate',
-            type: 'datetimerange',
-            label: '浣滀笟瀹屾垚鏃堕棿鎼滅储',
-            pickerOptions: {}
-          },
-          {
-            type: 'slot',
-            filed: 'fastdate',
-            label: ''
-          }
-        ],
-        online: true
-      },
-    }
-  },
-  created() {
-    this.changeRadio('0')
-    this.getList()
-  },
-  methods: {
-    changeRadio(day) {
-      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
-      this.$set(this.filters, 'selDate', arr)
-      this.getList()
-    },
-    changeForm(str) {
-      if (str === 'selDate') {
-        this.$set(this.filters, 'fastdate', null)
-        this.getList()
-      }
-    },
-    getList(page) {
-      const { pagination, filters } = this
-      this.loading = true
-      platformJobPage({
-        model: {
-          ...filters,
-          queryStatus: '6,9,10,2,3,4',
-          beginDoneDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
-          beginDoneDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
-        },
-        sorts: [{ direction: 'DESC', property: 'DONE_DATE' }],
-        capacity: pagination.pageSize,
-        page: page || pagination.page,
-      }).then(res => {
-        this.loading = false
-        this.list = res.records || []
-        this.list.forEach(item => {
-          item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
-          item.taskOrigin = 'WMS鑾峰彇'
-        })
-        this.pagination.total = res.total || 0
-      }, () => {
-        this.loading = false
-      })
-    },
-    handleAuth(row) {
-      this.$prompt('澶囨敞', '绂诲洯鎺堟潈', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-      }).then(({ value }) => {
-        platformPowerLevel({ jobId: row.id, remark: value }).then(res => {
-          Message.success('绂诲洯鎺堟潈鎴愬姛')
-          this.getList()
-        })
-      })
-    },
-    handleEx() {
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.exLoading = true
-          platformJobExport({
-            page: this.pagination.page,
-            capacity: 1000000,
-            queryStatus: '6,9,10',
-            model: this.filters
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.exLoading = false
-            })
-        })
-    },
-    clear() {
-      this.pagination.page = 1
-      this.filters = {
-        selDate: [],
-        fastdate: 0
-      }
-      this.getList()
-    },
-    handleDetail(row) {
-      this.isShowDriver = true
-      this.$nextTick(() => {
-        this.$refs.DriverDetailRef.id = row.id
-        this.$refs.DriverDetailRef.type = 6
-        this.$refs.DriverDetailRef.getDetail()
-        this.$refs.DriverDetailRef.isShowModal = true
-      })
-    },
-    handleSizeChange(capacity) {
-      this.pagination.pageSize = capacity
-    }
-  }
-}
-</script>
-<style lang="scss" scoped>
-.param_title {
-  font-size: 18px;
-  font-weight: 600;
-  color: #000000;
-  margin-bottom: 15px;
-}
-</style>
\ No newline at end of file
diff --git a/admin/src/views/platform/LogisticsRecord/operation.vue b/admin/src/views/platform/LogisticsRecord/operation.vue
deleted file mode 100644
index 95dd8c5..0000000
--- a/admin/src/views/platform/LogisticsRecord/operation.vue
+++ /dev/null
@@ -1,217 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" @clear="clear">
-      <template #fastdate>
-        <el-radio-group
-          v-model="filters.fastdate"
-          size="small"
-          @input="changeRadio"
-        >
-          <el-radio-button label="0">褰撳ぉ</el-radio-button>
-          <el-radio-button label="6">杩�7澶�</el-radio-button>
-          <el-radio-button label="29">杩�30澶�</el-radio-button>
-        </el-radio-group>
-      </template>
-    </QueryForm>
-    <div class="pt16">
-      <el-button :loading="exLoading" @click="handleEx" v-permissions="['business:platformjob:exportExcel']">瀵煎嚭</el-button>
-    </div>
-    <el-table class="mb20" v-loading="loading" :data="list" stripe>
-      <el-table-column prop="billCode" label="杩愬崟鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="totalNum" label="鎬讳綔涓氶噺(涓囨敮)" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeFront" label="杞︾墝鍓嶇収鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeBack" label="杞︾墝鍚庣収鍙�" min-width="100" show-overflow-tooltip />
-      <!-- <el-table-column prop="taskOrigin" label="浠诲姟鏉ユ簮" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carrierName" label="杩愯緭鍏徃" min-width="100" show-overflow-tooltip /> -->
-      <el-table-column prop="driverName" label="椹鹃┒鍛�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="drivierPhone" label="鑱旂郴鏂瑰紡" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="confirmTaskDate" label="纭鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="signDate" label="绛惧埌鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="callDate" label="鍙彿鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="startDate" label="浣滀笟寮�濮嬫椂闂�" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="doneDate" label="浣滀笟瀹屾垚鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="workTime" label="浣滀笟鏃堕暱" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="platformNames" label="鍙彿鏈堝彴" min-width="100" show-overflow-tooltip />
-      <el-table-column label="浣滀笟鎯呭喌" fixed="right" min-width="100" show-overflow-tooltip>
-        <template v-slot="scope">
-          <span>{{ statusMap[scope.row.status] }}</span>
-        </template>
-      </el-table-column>
-    </el-table>
-    <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
-    <!--  -->
-    <!--  -->
-    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import { platformJobPage,  platformJobExport,platformJobDel } from '@/api'
-import { statusMap } from '../config'
-import DriverDetail from "@/views/task/driverDetail"
-import GlobalWindow from '@/components/common/GlobalWindow'
-import UploadFaceImg from '@/components/common/UploadFaceImg'
-import { Message } from 'element-ui'
-import dayjs from 'dayjs'
-import duration from 'dayjs/plugin/duration'
-dayjs.extend(duration);
-export default {
-  components: {
-    Pagination,
-    QueryForm,
-    DriverDetail,
-    GlobalWindow,
-    UploadFaceImg
-  },
-  data() {
-    return {
-      statusMap,
-      isShowDriver: false,
-      exLoading: false,
-      loading: false,
-      pagination: {
-        pageSize: 10,
-        page: 1,
-        total: 0
-      },
-      filters: {
-        selDate: [],
-        fastdate: 0
-      },
-      list: [],
-      queryFormConfig: {
-        formItems: [
-        {
-            filed: 'code',
-            type: 'input',
-            label: '杩愬崟鍙�'
-          },
-          {
-            filed: 'carCodeFront',
-            type: 'input',
-            label: '杞︾墝鍙�'
-          },
-          {
-            filed: 'driverName',
-            type: 'input',
-            label: '椹鹃┒鍛�'
-          },
-          {
-            filed: 'selDate',
-            type: 'datetimerange',
-            label: '',
-            pickerOptions: {}
-          },
-          {
-            type: 'slot',
-            filed: 'fastdate',
-            label: ''
-          }
-        ],
-        online: true
-      },
-    }
-  },
-  created() {
-    this.changeRadio('0')
-    this.getList()
-  },
-  methods: {
-    changeRadio (day) {
-      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
-      this.$set(this.filters, 'selDate', arr)
-      this.getList()
-    },
-    changeForm (str) {
-      if (str === 'selDate') {
-        this.$set(this.filters, 'fastdate', null)
-        this.getList()
-      }
-    },
-    getList(page) {
-      const { pagination, filters } = this
-      this.loading = true
-      platformJobPage({
-        model: {
-          ...filters,
-          jobType: '0',
-          beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
-          beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
-        },
-        capacity: pagination.pageSize,
-        page: page || pagination.page,
-      }).then(res => {
-        this.loading = false
-        this.list = res.records || []
-        this.list.forEach(item => {
-          item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
-          item.taskOrigin = 'WMS鑾峰彇'
-          item.workTime = dayjs.duration(item.workTime, 'seconds').format('H鏃秏鍒唖绉�');
-        })
-        this.pagination.total = res.total || 0
-      }, () => {
-        this.loading = false
-      })
-    },
-    handleDel(row) {
-      this.$dialog.exportConfirm('纭鍒犻櫎鍚楋紵').then(() => {
-        platformJobDel({ id: row.id }).then(res => {
-          Message.success('鍒犻櫎鎴愬姛')
-          this.getList()
-        })
-      })
-    },
-    handleEx() {
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.exLoading = true
-          platformJobExport({
-            page: this.pagination.page,
-            capacity: 1000000,
-            jobType: '0',
-            model: this.filters
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.exLoading = false
-            })
-        })
-    },
-    clear() {
-      this.pagination.page = 1
-      this.filters = {
-        selDate: [],
-        fastdate: 0
-      }
-      this.getList()
-    },
-    handleDetail(row) {
-      this.isShowDriver = true
-      this.$nextTick(() => {
-        this.$refs.DriverDetailRef.id = row.id
-        this.$refs.DriverDetailRef.type = 6
-        this.$refs.DriverDetailRef.getDetail()
-        this.$refs.DriverDetailRef.isShowModal = true
-      })
-    },
-    handleSizeChange(capacity) {
-      this.pagination.pageSize = capacity
-    }
-  }
-}
-</script>
-<style lang="scss" scoped>
-.param_title {
-  font-size: 18px;
-  font-weight: 600;
-  color: #000000;
-  margin-bottom: 15px;
-}
-</style>
\ No newline at end of file
diff --git a/admin/src/views/platform/LogisticsRecord/operationCity.vue b/admin/src/views/platform/LogisticsRecord/operationCity.vue
deleted file mode 100644
index 3dceb78..0000000
--- a/admin/src/views/platform/LogisticsRecord/operationCity.vue
+++ /dev/null
@@ -1,218 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" @clear="clear">
-      <template #fastdate>
-        <el-radio-group
-          v-model="filters.fastdate"
-          size="small"
-          @input="changeRadio"
-        >
-          <el-radio-button label="0">褰撳ぉ</el-radio-button>
-          <el-radio-button label="6">杩�7澶�</el-radio-button>
-          <el-radio-button label="29">杩�30澶�</el-radio-button>
-        </el-radio-group>
-      </template>
-    </QueryForm>
-    <div class="pt16">
-      <el-button :loading="exLoading" @click="handleEx" v-permissions="['business:platformjob:exportExcel']">瀵煎嚭</el-button>
-    </div>
-    <el-table class="mb20" v-loading="loading" :data="list" stripe>
-      <el-table-column prop="contractNum" label="鍚堝悓鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="reason" label="鍏ュ洯鍘熷洜" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="totalNum" label="鎬讳綔涓氶噺(涓囨敮)" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeFront" label="杞︾墝鍓嶇収鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeBack" label="杞︾墝鍚庣収鍙�" min-width="100" show-overflow-tooltip />
-      <!-- <el-table-column prop="taskOrigin" label="浠诲姟鏉ユ簮" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carrierName" label="杩愯緭鍏徃" min-width="100" show-overflow-tooltip /> -->
-      <el-table-column prop="driverName" label="椹鹃┒鍛�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="drivierPhone" label="鑱旂郴鏂瑰紡" min-width="100" show-overflow-tooltip />
-      <!-- <el-table-column prop="confirmTaskDate" label="纭鏃堕棿" min-width="150" show-overflow-tooltip /> -->
-      <el-table-column prop="signDate" label="绛惧埌鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="callDate" label="鍙彿鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="startDate" label="浣滀笟寮�濮嬫椂闂�" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="doneDate" label="浣滀笟瀹屾垚鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="workTime" label="浣滀笟鏃堕暱" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="platformName" label="鍙彿鏈堝彴" min-width="100" show-overflow-tooltip />
-      <el-table-column label="浣滀笟鎯呭喌" fixed="right" min-width="100" show-overflow-tooltip>
-        <template v-slot="scope">
-          <span>{{ statusMap[scope.row.status] }}</span>
-        </template>
-      </el-table-column>
-    </el-table>
-    <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
-    <!--  -->
-    <!--  -->
-    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import { platformJobPage,  platformJobExport,platformJobDel } from '@/api'
-import { statusMap } from '../config'
-import DriverDetail from "@/views/task/driverDetail"
-import GlobalWindow from '@/components/common/GlobalWindow'
-import UploadFaceImg from '@/components/common/UploadFaceImg'
-import { Message } from 'element-ui'
-import dayjs from 'dayjs'
-import duration from 'dayjs/plugin/duration'
-dayjs.extend(duration);
-export default {
-  components: {
-    Pagination,
-    QueryForm,
-    DriverDetail,
-    GlobalWindow,
-    UploadFaceImg
-  },
-  data() {
-    return {
-      statusMap,
-      isShowDriver: false,
-      exLoading: false,
-      loading: false,
-      pagination: {
-        pageSize: 10,
-        page: 1,
-        total: 0
-      },
-      filters: {
-        selDate: [],
-        fastdate: 0
-      },
-      list: [],
-      queryFormConfig: {
-        formItems: [
-        {
-            filed: 'contractNum',
-            type: 'input',
-            label: '鍚堝悓鍙�'
-          },
-          {
-            filed: 'carCodeFront',
-            type: 'input',
-            label: '杞︾墝鍙�'
-          },
-          {
-            filed: 'driverName',
-            type: 'input',
-            label: '椹鹃┒鍛�'
-          },
-          {
-            filed: 'selDate',
-            type: 'datetimerange',
-            label: '',
-            pickerOptions: {}
-          },
-          {
-            type: 'slot',
-            filed: 'fastdate',
-            label: ''
-          }
-        ],
-        online: true
-      },
-    }
-  },
-  created() {
-    this.changeRadio('0')
-    this.getList()
-  },
-  methods: {
-    changeRadio (day) {
-      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
-      this.$set(this.filters, 'selDate', arr)
-      this.getList()
-    },
-    changeForm (str) {
-      if (str === 'selDate') {
-        this.$set(this.filters, 'fastdate', null)
-        this.getList()
-      }
-    },
-    getList(page) {
-      const { pagination, filters } = this
-      this.loading = true
-      platformJobPage({
-        model: {
-          ...filters,
-          jobType: 1,
-          beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
-          beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
-        },
-        capacity: pagination.pageSize,
-        page: page || pagination.page,
-      }).then(res => {
-        this.loading = false
-        this.list = res.records || []
-        this.list.forEach(item => {
-          item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
-          item.taskOrigin = 'WMS鑾峰彇'
-          item.workTime = dayjs.duration(item.workTime, 'seconds').format('H鏃秏鍒唖绉�');
-        })
-        this.pagination.total = res.total || 0
-      }, () => {
-        this.loading = false
-      })
-    },
-    handleDel(row) {
-      this.$dialog.exportConfirm('纭鍒犻櫎鍚楋紵').then(() => {
-        platformJobDel({ id: row.id }).then(res => {
-          Message.success('鍒犻櫎鎴愬姛')
-          this.getList()
-        })
-      })
-    },
-    handleEx() {
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.exLoading = true
-          platformJobExport({
-            page: this.pagination.page,
-            capacity: 1000000,
-            jobType: 1,
-            model: this.filters
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.exLoading = false
-            })
-        })
-    },
-    clear() {
-      this.pagination.page = 1
-      this.filters = {
-        selDate: [],
-        fastdate: 0
-      }
-      this.getList()
-    },
-    handleDetail(row) {
-      this.isShowDriver = true
-      this.$nextTick(() => {
-        this.$refs.DriverDetailRef.id = row.id
-        this.$refs.DriverDetailRef.type = 6
-        this.$refs.DriverDetailRef.getDetail()
-        this.$refs.DriverDetailRef.isShowModal = true
-      })
-    },
-    handleSizeChange(capacity) {
-      this.pagination.pageSize = capacity
-    }
-  }
-}
-</script>
-<style lang="scss" scoped>
-.param_title {
-  font-size: 18px;
-  font-weight: 600;
-  color: #000000;
-  margin-bottom: 15px;
-}
-</style>
\ No newline at end of file
diff --git a/admin/src/views/platform/LogisticsRecord/subscribe.vue b/admin/src/views/platform/LogisticsRecord/subscribe.vue
deleted file mode 100644
index 3673592..0000000
--- a/admin/src/views/platform/LogisticsRecord/subscribe.vue
+++ /dev/null
@@ -1,350 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)" @clear="clear">
-      <template #fastdate>
-        <el-radio-group
-          v-model="filters.fastdate"
-          size="small"
-          @input="changeRadio"
-        >
-          <el-radio-button label="0">褰撳ぉ</el-radio-button>
-          <el-radio-button label="6">杩�7澶�</el-radio-button>
-          <el-radio-button label="29">杩�30澶�</el-radio-button>
-        </el-radio-group>
-      </template>
-    </QueryForm>
-    <div class="pt16">
-      <el-button type="primary" @click="handleEdit" icon="el-icon-plus"
-        v-permissions="['business:platformbooks:create']">鏂板缓</el-button>
-      <el-button :loading="exLoading" @click="handleEx" v-permissions="['business:platformbooks:exportExcel']">瀵煎嚭</el-button>
-    </div>
-    <el-table class="mb20" v-loading="loading" :data="list" stripe>
-      <el-table-column prop="contractNum" label="鍚堝悓鍗曞彿" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="inReason" label="鍏ュ洯鍘熷洜" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="totalNum" label="鎬讳綔涓氶噺(涓囨敮)" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeFront" label="杞︾墝鍓嶇収鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeBack" label="杞︾墝鍚庣収鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="driverName" label="椹鹃┒鍛�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="driverPhone" label="鑱旂郴鏂瑰紡" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="inTypeTemp" label="鍏ュ簱绫诲瀷" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="arriveDate" label="棰勭害鍒板満鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column label="瀹℃壒缁撴灉" min-width="100" show-overflow-tooltip>
-        <template v-slot="scope">
-          <span v-if="scope.row.status == '0'">寰呭鎵�</span>
-          <span v-if="scope.row.status == '1'">瀹℃壒涓�</span>
-          <span v-if="scope.row.status == '2'">瀹℃壒閫氳繃</span>
-          <span v-if="scope.row.status == '3'">瀹℃壒椹冲洖</span>
-          <span v-if="scope.row.status == '4'">宸插彇娑�</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="auditName" label="褰撳墠瀹℃壒浜�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="name" label="鎿嶄綔" min-width="120" align="center" fixed="right" show-overflow-tooltip>
-        <template v-slot="scope">
-          <el-button type="text" v-permissions="['business:platformbooks:detail']"
-            @click="handleDetail(scope.row)">棰勭害璇︽儏</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
-    <!--  -->
-    <GlobalWindow :title="param.id ? '缂栬緫鐗╂祦杞﹂绾�' : '鏂板鐗╂祦杞﹂绾�'" center :visible.sync="isShowEdit" width="600px"
-      :confirm-working="subLoading" @confirm="onSubmit">
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
-        <div class="param_title">杩愯緭淇℃伅</div>
-        <el-form-item label="鍏ュ洯鍘熷洜" prop="reasonId">
-          <el-select v-model="param.reasonId" @change="checkSurplus" class="w300" placeholder="璇烽�夋嫨">
-            <el-option v-for="item in reasonList" :key="item.id" :label="item.reason" :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="鍚堝悓鍙�" prop="contractNum">
-          <el-input v-model="param.contractNum" class="w300" placeholder="璇疯緭鍏ュ悎鍚屽彿"></el-input>
-        </el-form-item>
-        <el-form-item label="鍒板満鏃堕棿" prop="arriveDate">
-          <el-date-picker v-model="param.arriveDate" @change="checkSurplus" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" class="w300"
-            placeholder="璇烽�夋嫨">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="鍏ュ簱绫诲瀷" prop="inType">
-          <div>
-            <el-radio v-model="param.inType" :label="0">鏁翠欢鐩�</el-radio>
-            <el-radio v-model="param.inType" :label="1">浠剁儫</el-radio>
-          </div>
-        </el-form-item>
-        <el-form-item label="鎬昏繍杈撻噺" prop="totalNum">
-          <el-input @blur="checkSurplus" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 10)" v-model="param.totalNum" placeholder="璇疯緭鍏�" class="w300"></el-input>
-          <span class="ml10">涓囨敮</span>
-        </el-form-item>
-        <el-form-item label="鍑嗚繍璇佺収鐗�" prop="transportImg">
-          <UploadAvatarImage :file="{ 'imgurlfull': param.transportImgFull, 'imgurl': param.transportImg }"
-            :uploadData="{ folder: 'platform' }" @uploadSuccess="uploadSuccess" @uploadEnd="isUploading = false"
-            @uploadBegin="isUploading = true" />
-        </el-form-item>
-        <div class="param_title">鍙告満/杞﹁締淇℃伅</div>
-        <el-form-item label="鍙告満濮撳悕" prop="driverName">
-          <el-input v-model="param.driverName" placeholder="璇疯緭鍏�" class="w300"></el-input>
-        </el-form-item>
-        <el-form-item label="鍙告満鎵嬫満鍙�" prop="driverPhone">
-          <el-input oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 11)" v-model="param.driverPhone" placeholder="璇疯緭鍏�" class="w300"></el-input>
-        </el-form-item>
-        <el-form-item label="杞﹀墠鐗岀収鍙�" prop="carCodeFront">
-          <el-input v-model="param.carCodeFront" placeholder="璇疯緭鍏�" class="w300"></el-input>
-        </el-form-item>
-        <el-form-item label="杞﹀悗鐗岀収鍙�" prop="carCodeBack">
-          <el-input v-model="param.carCodeBack" placeholder="璇疯緭鍏�" class="w300"></el-input>
-        </el-form-item>
-      </el-form>
-    </GlobalWindow>
-    <!--  -->
-    <DriverDetail v-if="isShowDriver" @success="getList" @close="isShowDriver = false" ref="DriverDetailRef" />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import { platformBooksPage, platformReasonList, platformBooksApply, platformBooksExport } from '@/api'
-import { checkSurplusNum } from '@/api/platform/platform' 
-import DriverDetail from "@/views/task/driverDetail"
-import GlobalWindow from '@/components/common/GlobalWindow'
-import UploadAvatarImage from '@/components/common/UploadAvatarImage'
-import { Message } from 'element-ui'
-import dayjs from 'dayjs'
-export default {
-  components: {
-    Pagination,
-    QueryForm,
-    DriverDetail,
-    GlobalWindow,
-    UploadAvatarImage
-  },
-  data() {
-    return {
-      isShowDriver: false,
-      exLoading: false,
-      loading: false,
-      pagination: {
-        pageSize: 10,
-        page: 1,
-        total: 0
-      },
-      filters: {
-        selDate: [],
-        fastdate: 0
-      },
-      list: [],
-
-      isShowEdit: false,
-      subLoading: false,
-      param: {
-        inType: 0
-      },
-      reasonList: [],
-      rules: {
-        contractNum: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
-        totalNum: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
-        driverName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
-        driverPhone: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
-        carCodeFront: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
-        carCodeBack: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
-
-        transportImg: [{ required: true, message: '璇蜂笂浼�', trigger: 'blur' }],
-        reasonId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
-        arriveDate: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
-        inType: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
-        driverName: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
-      },
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'carCodeFront',
-            type: 'input',
-            label: '杞︾墝鍙�'
-          },
-          {
-            filed: 'driverName',
-            type: 'input',
-            label: '椹鹃┒鍛�'
-          },
-          {
-            filed: 'contractNum',
-            type: 'input',
-            label: '鍚堝悓鍗曞彿'
-          },
-          {
-            filed: 'status',
-            type: 'select',
-            label: '瀹℃壒缁撴灉',
-            options: [
-              { value: 0, label: '寰呭鎵�' },
-              { value: 1, label: '瀹℃壒涓�' },
-              { value: 2, label: '瀹℃壒閫氳繃' },
-              { value: 3, label: '瀹℃壒椹冲洖' },
-              { value: 4, label: '宸插彇娑�' },
-            ]
-          },
-          {
-            filed: 'selDate',
-            type: 'datetimerange',
-            label: '鎿嶄綔鏃堕棿',
-            pickerOptions: {}
-          },
-          {
-            type: 'slot',
-            filed: 'fastdate',
-            label: ''
-          }
-        ],
-        online: true
-      },
-    }
-  },
-  created() {
-    this.changeRadio('0')
-    this.getList()
-  },
-  methods: {
-    checkSurplus() {
-      const { arriveDate, reasonId, totalNum } = this.param
-      if(!arriveDate || !reasonId || !totalNum) return
-      checkSurplusNum({
-        arriveDate,
-        reasonId,
-        totalNum
-      }).then(res => {
-        console.log('res', res);
-        
-        if( res == 0 ||  res < Number(totalNum)){
-          Message.error(`褰撴棩鍓╀綑鍙绾︿綔涓氶噺${res}涓囨敮涓嶈冻璇烽�夋嫨鍏朵粬鍒板満鏃ユ湡`)
-        }
-      })
-    },
-    changeRadio (day) {
-      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
-      this.$set(this.filters, 'selDate', arr)
-      this.getList()
-    },
-    changeForm (str) {
-      if (str === 'selDate') {
-        this.$set(this.filters, 'fastdate', null)
-        this.getList()
-      }
-    },
-    getList(page) {
-      const { pagination, filters } = this
-      this.loading = true
-      platformBooksPage({
-        model: {
-          ...filters,
-          arriveDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
-          arriveDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
-        },
-        capacity: pagination.pageSize,
-        page: page || pagination.page,
-      }).then(res => {
-        this.loading = false
-        this.list = res.records || []
-        this.list.forEach(item => {
-          item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
-        })
-        this.pagination.total = res.total || 0
-      }, () => {
-        this.loading = false
-      })
-    },
-    handleEx() {
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.exLoading = true
-          platformBooksExport({
-            page: this.pagination.page,
-            capacity: 1000000,
-            model: this.filters
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.exLoading = false
-            })
-        })
-    },
-    onSubmit() {
-      this.$refs['ruleForm'].validate((valid) => {
-        const param = this.param
-        param.inReason = this.reasonList.find(item => param.reasonId == item.id).reason
-        if (valid) {
-          this.subLoading = true
-          platformBooksApply({ ...param }).then(res => {
-            this.getList()
-            this.subLoading = false
-            this.isShowEdit = false
-          }, () => {
-            this.subLoading = false
-          })
-        }
-      })
-    },
-    uploadSuccess(file) {
-      this.$set(this.param, 'transportImg', file.imgurl)
-      this.$set(this.param, 'transportImgFull', file.imgurlfull)
-    },
-    handleEdit(row) {
-      this.isShowEdit = true
-      this.param = {
-        inType: 0
-      }
-      this.$nextTick(() => {
-        this.$refs['ruleForm'].clearValidate()
-      })
-      this.$set(this.param, 'arriveDate', dayjs().format('YYYY-MM-DD HH:mm:ss'))
-      this.getplatformReason()
-    },
-    getplatformReason() {
-      platformReasonList().then(res => {
-        this.reasonList = res || []
-      })
-    },
-    handleSub() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          alert('submit!')
-        }
-      })
-    },
-    clear() {
-      this.pagination.page = 1
-      this.filters = {
-        selDate: [],
-        fastdate: 0,
-      }
-      this.changeRadio('0')
-    },
-    handleDetail(row) {
-      this.isShowDriver = true
-      this.$nextTick(() => {
-        this.$refs.DriverDetailRef.id = row.id
-        this.$refs.DriverDetailRef.type = 6
-        this.$refs.DriverDetailRef.getDetail()
-        this.$refs.DriverDetailRef.isShowModal = true
-      })
-    },
-    handleDel() { },
-    handleSizeChange(capacity) {
-      this.pagination.pageSize = capacity
-    }
-  }
-}
-</script>
-<style lang="scss" scoped>
-.param_title {
-  font-size: 18px;
-  font-weight: 600;
-  color: #000000;
-  margin-bottom: 15px;
-}
-</style>
\ No newline at end of file
diff --git a/admin/src/views/platform/LogisticsRecord/waybill.vue b/admin/src/views/platform/LogisticsRecord/waybill.vue
deleted file mode 100644
index c34af48..0000000
--- a/admin/src/views/platform/LogisticsRecord/waybill.vue
+++ /dev/null
@@ -1,240 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)"
-      @clear="clear">
-      <template #fastdate>
-        <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio">
-          <el-radio-button label="0">褰撳ぉ</el-radio-button>
-          <el-radio-button label="6">杩�7澶�</el-radio-button>
-          <el-radio-button label="29">杩�30澶�</el-radio-button>
-        </el-radio-group>
-      </template>
-    </QueryForm>
-    <div class="pt16">
-      <el-button :loading="exLoading" @click="handleEx"
-        v-permissions="['business:platformjob:exportExcel']">瀵煎嚭</el-button>
-    </div>
-    <el-table class="mb20" v-loading="loading" :data="list" stripe>
-      <el-table-column prop="billCode" label="杩愬崟鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeFront" label="杞︾墝鍓嶇収鍙�" min-width="100" show-overflow-tooltip />
-      <!-- <el-table-column prop="carCodeBack" label="杞︾墝鍚庣収鍙�" min-width="100" show-overflow-tooltip /> -->
-      <el-table-column prop="taskOrigin" label="浠诲姟鏉ユ簮" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carrierName" label="杩愯緭鍏徃" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="driverName" label="鍙告満" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="drivierPhone" label="鍙告満鐢佃瘽" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="inTypeTemp" label="浣滀笟绫诲瀷" min-width="100" show-overflow-tooltip>
-        <template v-slot="scope"> 
-          <span v-if="scope.row.type == '0'">鑷湁杞﹀嵏璐�</span>
-          <span v-if="scope.row.type == '1'">鑷湁杞﹁璐�</span>
-          <span v-if="scope.row.type == '2'">澶栧崗杞﹀嵏璐�</span>
-          <span v-if="scope.row.type == '3'">澶栧崗杞﹁璐�</span>
-          <span v-if="scope.row.type == '4'">甯傚叕鍙稿鍗忚溅鍗歌揣</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="ioCreatedate" label="鍒涘缓鏃堕棿" min-width="150" show-overflow-tooltip />
-      <el-table-column prop="name" label="浣滀笟鐘舵��" min-width="100" show-overflow-tooltip>
-        <template v-slot="scope">
-          <span>{{ statusMap[scope.row.status] }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="name" label="鎿嶄綔" min-width="120" align="center" fixed="right" show-overflow-tooltip>
-        <template v-slot="scope">
-          <el-button v-if="scope.row.status == '12'" type="text" class="red" v-permissions="['business:platformjob:delete']"
-            @click="handleDel(scope.row)">鍒犻櫎</el-button>
-          <el-button v-if="scope.row != 12" type="text" v-permissions="['business:platformjob:query']"
-            @click="handleDetail(scope.row)">杩愬崟璇︽儏</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
-    <!--  -->
-    <!--  -->
-    <WaybillDetailRef v-if="isShowDetail" ref="WaybillDetailRef" />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import { platformJobPage, platformJobExport, platformJobDel } from '@/api'
-import { statusMap } from '../config'
-import WaybillDetailRef from "../components/WaybillDetail.vue"
-import GlobalWindow from '@/components/common/GlobalWindow'
-import UploadFaceImg from '@/components/common/UploadFaceImg'
-import { Message } from 'element-ui'
-import dayjs from 'dayjs'
-export default {
-  components: {
-    Pagination,
-    QueryForm,
-    WaybillDetailRef,
-    GlobalWindow,
-    UploadFaceImg
-  },
-  data() {
-    return {
-      statusMap,
-      isShowDetail: false,
-      exLoading: false,
-      loading: false,
-      pagination: {
-        pageSize: 10,
-        page: 1,
-        total: 0
-      },
-      filters: {
-        selDate: [],
-        fastdate: 0
-      },
-      list: [],
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'billCode',
-            type: 'input',
-            label: '杩愬崟鍙�'
-          },
-          {
-            filed: 'driverName',
-            type: 'input',
-            label: '椹鹃┒鍛�'
-          },
-          {
-            filed: 'carCodeFront',
-            type: 'input',
-            label: '杞︾墝鍙�'
-          },
-          {
-            filed: 'status',
-            type: 'select',
-            label: '浣滀笟鐘舵��',
-            options: [
-              { value: 0, label: '寰呯‘璁�' },
-              { value: 1, label: '寰呯鍒�' },
-              { value: 2, label: '绛夊緟鍙彿' },
-              { value: 3, label: '鍏ュ洯绛夊緟' },
-              { value: 4, label: '鏈堝彴绛夊緟' },
-              { value: 5, label: '浣滀笟涓�' },
-              { value: 6, label: '浣滀笟瀹屾垚' },
-              { value: 7, label: '杞Щ涓�' },
-              { value: 8, label: '寮傚父鎸傝捣' },
-              { value: 9, label: '宸叉巿鏉冪鍥�' },
-              { value: 10, label: '宸茬鍥�' },
-              { value: 11, label: '宸茶繃鍙�' },
-              { value: 12, label: '宸插彇娑�' },
-            ]
-          },
-          {
-            filed: 'selDate',
-            type: 'datetimerange',
-            label: '鎿嶄綔鏃堕棿',
-            pickerOptions: {}
-          },
-          {
-            type: 'slot',
-            filed: 'fastdate',
-            label: ''
-          }
-        ],
-        online: true
-      },
-    }
-  },
-  created() {
-    this.changeRadio('0')
-  },
-  methods: {
-    changeRadio(day) {
-      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
-      this.$set(this.filters, 'selDate', arr)
-      this.getList()
-    },
-    changeForm(str) {
-      if (str === 'selDate') {
-        this.$set(this.filters, 'fastdate', null)
-        this.getList()
-      }
-    },
-    getList(page) {
-      const { pagination, filters } = this
-      this.loading = true
-      platformJobPage({
-        model: {
-          ...filters,
-          jobType: '0',
-          createDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
-          createDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
-        },
-        capacity: pagination.pageSize,
-        page: page || pagination.page,
-      }).then(res => {
-        this.loading = false
-        this.list = res.records || []
-        this.list.forEach(item => {
-          item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
-          item.taskOrigin = 'WMS鑾峰彇'
-        })
-        this.pagination.total = res.total || 0
-      }, () => {
-        this.loading = false
-      })
-    },
-    handleDel(row) {
-      this.$dialog.exportConfirm('纭鍒犻櫎鍚楋紵').then(() => {
-        platformJobDel(row.id).then(res => {
-          Message.success('鍒犻櫎鎴愬姛')
-          this.getList()
-        })
-      })
-    },
-    handleEx() {
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.exLoading = true
-          platformJobExport({
-            page: this.pagination.page,
-            capacity: 1000000,
-            jobType: '0',
-            model: this.filters
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.exLoading = false
-            })
-        })
-    },
-    clear() {
-      this.pagination.page = 1
-      this.filters = {
-        selDate: [],
-        fastdate: 0
-      }
-      this.changeRadio('0')
-    },
-    handleDetail(row) {
-      this.isShowDetail = true
-      this.$nextTick(() => {
-        this.$refs.WaybillDetailRef.isShowModal = true
-        this.$refs.WaybillDetailRef.id = row.id
-        this.$refs.WaybillDetailRef.getDetail()
-      })
-    },
-    handleSizeChange(capacity) {
-      this.pagination.pageSize = capacity
-    }
-  }
-}
-</script>
-<style lang="scss" scoped>
-.param_title {
-  font-size: 18px;
-  font-weight: 600;
-  color: #000000;
-  margin-bottom: 15px;
-}
-</style>
\ No newline at end of file
diff --git a/admin/src/views/platform/LogisticsRecord/waybillQuery.vue b/admin/src/views/platform/LogisticsRecord/waybillQuery.vue
deleted file mode 100644
index e9cb826..0000000
--- a/admin/src/views/platform/LogisticsRecord/waybillQuery.vue
+++ /dev/null
@@ -1,181 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @changeForm='changeForm' @handleQuery="getList(1)"
-      @clear="clear">
-    </QueryForm>
-    <div class="pt16">
-      <el-button :loading="exLoading" @click="handleEx"
-        v-permissions="['business:platformjob:exportExcel']">瀵煎嚭</el-button>
-    </div>
-    <el-table class="mb20" v-loading="loading" :data="list" stripe>
-      <el-table-column prop="billCode" label="濮撳悕" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeFront" label="鎵嬫満鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="taskOrigin" label="钀ラ攢鍖哄煙" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carrierName" label="澶囨敞" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="driverName" label="鏈�鍚庢洿鏂版椂闂�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="name" label="鎿嶄綔" min-width="120" align="center" fixed="right" show-overflow-tooltip>
-        <template v-slot="scope">
-          <el-button v-if="scope.row.status == '12'" type="text" class="red" v-permissions="['business:platformjob:delete']"
-            @click="handleDel(scope.row)">鍒犻櫎</el-button>
-          <el-button v-if="scope.row != 12" type="text" v-permissions="['business:platformjob:query']"
-            @click="handleDetail(scope.row)">缂栬緫</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
-    <!--  -->
-    <!--  -->
-    <WaybillDetailRef v-if="isShowDetail" ref="WaybillDetailRef" />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import { platformJobPage, platformJobExport, platformJobDel } from '@/api'
-import { statusMap } from '../config'
-import WaybillDetailRef from "../components/WaybillDetail.vue"
-import GlobalWindow from '@/components/common/GlobalWindow'
-import UploadFaceImg from '@/components/common/UploadFaceImg'
-import { Message } from 'element-ui'
-import dayjs from 'dayjs'
-export default {
-  components: {
-    Pagination,
-    QueryForm,
-    WaybillDetailRef,
-    GlobalWindow,
-    UploadFaceImg
-  },
-  data() {
-    return {
-      statusMap,
-      isShowDetail: false,
-      exLoading: false,
-      loading: false,
-      pagination: {
-        pageSize: 10,
-        page: 1,
-        total: 0
-      },
-      filters: {
-        selDate: [],
-        fastdate: 0
-      },
-      list: [],
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'name',
-            type: 'input',
-            label: '濮撳悕'
-          },
-          {
-            filed: 'phone',
-            type: 'input',
-            label: '鎵嬫満鍙�'
-          }
-        ],
-        online: true
-      },
-    }
-  },
-  created() {
-    this.changeRadio('0')
-    this.getList()
-  },
-  methods: {
-    changeRadio(day) {
-      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
-      this.$set(this.filters, 'selDate', arr)
-      this.getList()
-    },
-    changeForm(str) {
-      if (str === 'selDate') {
-        this.$set(this.filters, 'fastdate', null)
-        this.getList()
-      }
-    },
-    getList(page) {
-      const { pagination, filters } = this
-      this.loading = true
-      platformJobPage({
-        model: {
-          ...filters,
-          jobType: '0',
-          createDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
-          createDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
-        },
-        capacity: pagination.pageSize,
-        page: page || pagination.page,
-      }).then(res => {
-        this.loading = false
-        this.list = res.records || []
-        this.list.forEach(item => {
-          item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
-          item.taskOrigin = 'WMS鑾峰彇'
-        })
-        this.pagination.total = res.total || 0
-      }, () => {
-        this.loading = false
-      })
-    },
-    handleDel(row) {
-      this.$dialog.exportConfirm('纭鍒犻櫎鍚楋紵').then(() => {
-        platformJobDel(row.id).then(res => {
-          Message.success('鍒犻櫎鎴愬姛')
-          this.getList()
-        })
-      })
-    },
-    handleEx() {
-      this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
-        .then(() => {
-          this.exLoading = true
-          platformJobExport({
-            page: this.pagination.page,
-            capacity: 1000000,
-            jobType: '0',
-            model: this.filters
-          })
-            .then(response => {
-              this.download(response)
-            })
-            .catch(e => {
-              this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.exLoading = false
-            })
-        })
-    },
-    clear() {
-      this.pagination.page = 1
-      this.filters = {
-        selDate: [],
-        fastdate: 0
-      }
-      this.getList()
-    },
-    handleDetail(row) {
-      this.isShowDetail = true
-      this.$nextTick(() => {
-        this.$refs.WaybillDetailRef.isShowModal = true
-        this.$refs.WaybillDetailRef.id = row.id
-        this.$refs.WaybillDetailRef.getDetail()
-      })
-    },
-    handleSizeChange(capacity) {
-      this.pagination.pageSize = capacity
-    }
-  }
-}
-</script>
-<style lang="scss" scoped>
-.param_title {
-  font-size: 18px;
-  font-weight: 600;
-  color: #000000;
-  margin-bottom: 15px;
-}
-</style>
\ No newline at end of file
diff --git a/admin/src/views/platform/components/PlatformQueuing.vue b/admin/src/views/platform/components/PlatformQueuing.vue
deleted file mode 100644
index cbd48dc..0000000
--- a/admin/src/views/platform/components/PlatformQueuing.vue
+++ /dev/null
@@ -1,268 +0,0 @@
-<template>
-  <GlobalWindow :title="callType == 1 ? '鍙彿鍏ュ洯-' + title : '鏈堝彴鍙彿-' + title" :visible.sync="isShowModal"
-    :showConfirm="false" width="800px">
-    <div class="queuing_modal">
-      <div class="df_ac mb20">
-        <span>鎼滅储杞﹁締锛�</span>
-        <el-input class="flex1 mr20" v-model="carCodeFront" placeholder="璇疯緭鍏ヨ溅鐗屽彿"></el-input>
-        <el-button type="primary" @click="getList">鏌ユ壘</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </div>
-      <div class="list">
-        <div class="item" v-for="item in dataList" :key="item.id">
-          <div class="head df_sb">
-            <div v-if="item.carCodeFront" class="code">
-              <span>{{ item.carCodeFront.slice(0, 1) }}</span>
-              <span>{{ item.carCodeFront.slice(1, 2) }}</span>
-              <span>路</span>
-              <span>{{ item.carCodeFront.slice(2) }}</span>
-            </div>
-            <div class="status">{{ statusMap[item.status] }}</div>
-          </div>
-          <div class="info">
-            <div v-if="item.billCode" class="ite">
-              <span>杩愯緭鍗曞彿锛�</span>
-              <span>{{ item.billCode }}</span>
-            </div>
-            <div v-else class="ite">
-              <span>鍚堝悓鍗曞彿锛�</span>
-              <span>{{ item.contractNum }}</span>
-            </div>
-            <div class="ite">
-              <span>椹鹃┒鍛橈細</span>
-              <span>{{ item.driverName }}</span>
-            </div>
-            <div class="ite">
-              <span>鎵嬫満鍙凤細</span>
-              <span>{{ item.drivierPhone }}</span>
-            </div>
-            <div class="ite">
-              <span>鎬昏繍杈撻噺锛�</span>
-              <span>{{ item.totalNum || item.ioQty }}涓囨敮</span>
-            </div>
-            <div v-if="item.billCode" class="ite" style="width: 66%">
-              <span>杩愯緭鍏徃锛�</span>
-              <span>{{ item.carrierName }}</span>
-            </div>
-          </div>
-          <div class="footer df_sb">
-            <div v-if="item.billCode" @click="handleDetail(item)" class="detail">杩愬崟璇︽儏</div>
-            <div v-else class="detail"  @click="subDetail(item)">棰勭害璇︽儏</div>
-            <el-button v-preventReClick :loading="loadingCall" type="primary" @click="handleCall(item)">鍙彿</el-button>
-          </div>
-        </div>
-      </div>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination">
-      </pagination>
-    </div>
-    <!--  -->
-    <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" />
-    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
-  </GlobalWindow>
-</template>
-
-<script>
-import GlobalWindow from '@/components/common/GlobalWindow'
-import Pagination from '@/components/common/Pagination'
-import { platformCallList, platformCallNumber, platformInPark } from '@/api'
-import { statusMap } from '../config'
-import { Message } from 'element-ui'
-import WaybillDetail from './WaybillDetail.vue'
-import DriverDetail from "@/views/task/driverDetail.vue"
-export default {
-  components: {
-    GlobalWindow,
-    Pagination,
-    WaybillDetail,
-    DriverDetail
-  },
-  data() {
-    return {
-      statusMap,
-      isShowModal: false,
-      subLoading: false,
-      pagination: {
-        total: 0,
-        pageSize: 10,
-        page: 1
-      },
-      carCodeFront: '',
-      title: '',
-      callType: '1',
-      activePlat: {},
-      dataList: [],
-      isShowDetail: false, // 杩愬崟璇︽儏
-      isShowDriver: false, // 棰勭害璇︽儏
-      loadingCall: false
-
-    }
-  },
-  methods: {
-    handleCall(item) {
-      const { activePlat, callType } = this
-      this.loadingCall = true
-      if (callType == 1) { // 鍏ュ洯鍙彿
-        platformInPark({
-          jobId: item.id,
-          platformId: activePlat.id
-        }).then(() => {
-          this.loadingCall = false
-          Message.success('鍙彿鎴愬姛')
-          this.$emit('success')
-          this.getList()
-        },() => {this.loadingCall = false})
-      } else {
-        this.loadingCall = true
-        platformCallNumber({ platformId: activePlat.id, jobId: item.id }).then(res => {
-          this.loadingCall = false
-          Message.success('鍙彿鎴愬姛')
-          this.$emit('success')
-          this.getList()
-        },()=> {this.loadingCall = false})
-      }
-    },
-    subDetail(row) {
-      this.isShowDriver = true
-      this.$nextTick(() => {
-        this.$refs.DriverDetailRef.id = row.bookId
-        this.$refs.DriverDetailRef.type = row.objType
-        this.$refs.DriverDetailRef.getDetail()
-        this.$refs.DriverDetailRef.isShowModal = true
-      })
-    },
-    handleDetail(row) {
-      this.isShowDetail = true
-      this.$nextTick(() => {
-        this.$refs.WaybillDetailRef.isShowModal = true
-        this.$refs.WaybillDetailRef.id = row.id
-        this.$refs.WaybillDetailRef.getDetail()
-      })
-    },
-    getList() {
-      const { activePlat, pagination, carCodeFront, callType } = this
-      platformCallList({
-        model: { callType, platformId: activePlat.id, carCodeFront },
-        page: pagination.page,
-        capacity: pagination.pageSize
-      }).then(res => {
-        this.dataList = res.records
-        this.pagination.total = res.total
-      })
-    },
-    reset() {
-      this.carCodeFront = ''
-      this.pagination.page = 1
-      this.pagination.pageSize = 10
-      this.getList()
-    },
-    handleSizeChange(e) {
-      this.pagination.pageSize = e
-      this.getList()
-    },
-    handlePageChange(e) {
-      this.pagination.page = e
-      this.getList()
-    },
-    handleSub() {
-      const { param } = this
-      this.subLoading = true
-      PlatformEdit({
-        ...param
-      }).then(res => {
-        this.subLoading = false
-        this.isShowEdit = false
-        this.$tip.success('鎻愪氦鎴愬姛')
-        this.getList()
-      }, () => {
-        this.subLoading = false
-      })
-    }
-  }
-
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/variables.scss";
-
-.queuing_modal {
-  padding: 10px 30px;
-
-  .list {
-    .item {
-      background: #f4fafb;
-      border-radius: 2px;
-      border: 1px solid #dfe2e8;
-      margin-bottom: 10px;
-      padding: 16px;
-
-      .head {
-        margin-bottom: 15px;
-
-        .plate {
-          width: 90px;
-          text-align: center;
-          font-size: 15px;
-          color: #111111;
-          padding: 4px 5px;
-          font-weight: 700;
-          border: 1px solid #279baa;
-          background-color: #fff;
-        }
-
-        .status {
-          color: $primaryColor;
-        }
-
-        .code {
-          display: flex;
-          font-weight: 600;
-          height: 30px;
-          line-height: 30px;
-          font-size: 15px;
-          color: #111111;
-          background-color: #fff;
-          border-radius: 4px;
-          border: 1px solid $primaryColor;
-          padding-right: 4px;
-
-          span {
-            &:nth-of-type(1) {
-              background: $primaryColor;
-              padding: 0 8px;
-              color: #fff;
-            }
-
-            &:nth-of-type(2) {
-              padding-left: 4px;
-            }
-          }
-        }
-      }
-
-      .info {
-        display: flex;
-        flex-wrap: wrap;
-
-        .ite {
-          width: 33.3%;
-          margin-bottom: 8px;
-
-          span {
-            &:nth-child(1) {
-              color: #666666;
-            }
-          }
-        }
-      }
-
-      .footer {
-        .detail {
-          color: $primaryColor;
-          cursor: pointer;
-        }
-      }
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/platform/components/PlatformSign.vue b/admin/src/views/platform/components/PlatformSign.vue
deleted file mode 100644
index d24c2d4..0000000
--- a/admin/src/views/platform/components/PlatformSign.vue
+++ /dev/null
@@ -1,248 +0,0 @@
-<template>
-  <GlobalWindow title="杞﹁締绛惧埌" :visible.sync="isShowModal" :showConfirm="false" width="800px">
-    <div class="queuing_modal">
-      <div class="df_ac mb20">
-        <span>鎼滅储杞﹁締锛�</span>
-        <el-input class="flex1 mr20" v-model="carCodeFront" placeholder="璇疯緭鍏ヨ溅鐗屽彿"></el-input>
-        <el-button type="primary" @click="getList">鏌ユ壘</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </div>
-      <div class="list">
-        <div class="item" v-for="item in dataList" :key="item.id">
-          <div class="head df_sb">
-            <div v-if="item.carCodeFront" class="code">
-              <span>{{ item.carCodeFront.slice(0, 1) }}</span>
-              <span>{{ item.carCodeFront.slice(1, 2) }}</span>
-              <span>路</span>
-              <span>{{ item.carCodeFront.slice(2) }}</span>
-            </div>
-            <div class="status" :class="{ red: item.status == 0 }">{{ statusMap[item.status] }}</div>
-          </div>
-          <div class="info">
-            <div v-if="item.billCode" class="ite">
-              <span>杩愯緭鍗曞彿锛�</span>
-              <span>{{ item.billCode }}</span>
-            </div>
-            <div v-else class="ite">
-              <span>鍚堝悓鍗曞彿锛�</span>
-              <span>{{ item.contractNum }}</span>
-            </div>
-            <div class="ite">
-              <span>椹鹃┒鍛橈細</span>
-              <span>{{ item.driverName }}</span>
-            </div>
-            <div class="ite">
-              <span>鎵嬫満鍙凤細</span>
-              <span>{{ item.drivierPhone }}</span>
-            </div>
-            <div class="ite">
-              <span>鎬昏繍杈撻噺锛�</span>
-              <span>{{ item.totalNum || item.ioQty }}涓囨敮</span>
-            </div>
-            <div v-if="item.type != 4" class="ite" style="width: 66%">
-              <span>杩愯緭鍏徃锛�</span>
-              <span>{{ item.carrierName }}</span>
-            </div>
-          </div>
-          <div class="footer df_sb">
-            <div @click="handleDetail(item)" v-if="item.billCode" class="detail">杩愬崟璇︽儏</div>
-            <div @click="subDetail(item)" v-else class="detail">棰勭害璇︽儏</div>
-            <el-button type="primary" @click="handleCall(item)">绛惧埌</el-button>
-          </div>
-        </div>
-      </div>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination">
-      </pagination>
-    </div>
-    <WaybillDetailRef v-if="isShowDetail" ref="WaybillDetailRef" />
-    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
-  </GlobalWindow>
-</template>
-
-<script>
-import GlobalWindow from '@/components/common/GlobalWindow'
-import Pagination from '@/components/common/Pagination'
-import WaybillDetailRef from "./WaybillDetail.vue"
-import DriverDetail from "@/views/task/driverDetail.vue"
-import { platformJobPage, platformJobSign } from '@/api'
-import { statusMap } from '../config'
-import { Message } from 'element-ui'
-export default {
-  components: {
-    GlobalWindow,
-    Pagination,
-    WaybillDetailRef,
-    DriverDetail
-  },
-  data() {
-    return {
-      statusMap,
-      isShowModal: false,
-      isShowDetail: false,
-      isShowDriver: false,
-      subLoading: false,
-      pagination: {
-        total: 0,
-        pageSize: 10,
-        page: 1
-      },
-      carCodeFront: '',
-      // activePlat: {},
-      dataList: []
-
-    }
-  },
-  methods: {
-    handleCall(item) {
-      // const activePlatform = this.activePlat
-      platformJobSign({ jobId: item.id, signType: '2' }).then(res => {
-        Message.success('绛惧埌鎴愬姛')
-        this.$emit('success')
-        this.getList()
-      })
-    },
-    getList() {
-      const { activePlat, pagination, carCodeFront } = this
-      platformJobPage({
-        model: { platformGroupId: activePlat.id, queryStatus: '0,1', carCodeFront },
-        page: pagination.page,
-        capacity: pagination.pageSize
-      }).then(res => {
-        this.dataList = res.records
-        this.pagination.total = res.total
-      })
-    },
-    subDetail(row) {
-      this.isShowDriver = true
-      this.$nextTick(() => {
-        this.$refs.DriverDetailRef.id = row.bookId
-        this.$refs.DriverDetailRef.type = row.objType
-        this.$refs.DriverDetailRef.getDetail()
-        this.$refs.DriverDetailRef.isShowModal = true
-      })
-    },
-    handleDetail(row) {
-      this.isShowDetail = true
-      this.$nextTick(() => {
-        this.$refs.WaybillDetailRef.isShowModal = true
-        this.$refs.WaybillDetailRef.id = row.id
-        this.$refs.WaybillDetailRef.getDetail()
-      })
-    },
-    reset() {
-      this.carCodeFront = ''
-      this.pagination.page = 1
-      this.pagination.pageSize = 10
-      this.getList()
-    },
-    handleSizeChange(e) {
-      this.pagination.pageSize = e
-      this.getList()
-    },
-    handlePageChange(e) {
-      this.pagination.page = e
-      this.getList()
-    },
-    handleSub() {
-      const { param } = this
-      this.subLoading = true
-      PlatformEdit({
-        ...param
-      }).then(res => {
-        this.subLoading = false
-        this.isShowEdit = false
-        this.$tip.success('鎻愪氦鎴愬姛')
-        this.getList()
-      }, () => {
-        this.subLoading = false
-      })
-    }
-  }
-
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/variables.scss";
-
-.queuing_modal {
-  padding: 10px 30px;
-
-  .list {
-    .item {
-      background: #f4fafb;
-      border-radius: 2px;
-      border: 1px solid #dfe2e8;
-      margin-bottom: 10px;
-      padding: 16px;
-
-      .head {
-        margin-bottom: 15px;
-
-        .plate {
-          width: 90px;
-          text-align: center;
-          font-size: 15px;
-          color: #111111;
-          padding: 4px 5px;
-          font-weight: 700;
-          border: 1px solid #279baa;
-          background-color: #fff;
-        }
-
-        .status {
-          color: $primaryColor;
-        }
-
-        .code {
-          display: flex;
-          font-weight: 600;
-          height: 30px;
-          line-height: 30px;
-          font-size: 15px;
-          color: #111111;
-          background-color: #fff;
-          border-radius: 4px;
-          border: 1px solid $primaryColor;
-          padding-right: 4px;
-
-          span {
-            &:nth-of-type(1) {
-              background: $primaryColor;
-              padding: 0 8px;
-              color: #fff;
-            }
-
-            &:nth-of-type(2) {
-              padding-left: 4px;
-            }
-          }
-        }
-      }
-
-      .info {
-        display: flex;
-        flex-wrap: wrap;
-
-        .ite {
-          width: 33.3%;
-          margin-bottom: 8px;
-
-          span {
-            &:nth-child(1) {
-              color: #666666;
-            }
-          }
-        }
-      }
-
-      .footer {
-        .detail {
-          color: $primaryColor;
-          cursor: pointer;
-        }
-      }
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/platform/components/WaybillDetail.vue b/admin/src/views/platform/components/WaybillDetail.vue
deleted file mode 100644
index 4cbabfa..0000000
--- a/admin/src/views/platform/components/WaybillDetail.vue
+++ /dev/null
@@ -1,204 +0,0 @@
-<template>
-  <GlobalWindow title="杩愬崟璇︽儏" center :visible.sync="isShowModal" width="800px" :confirm-working="subLoading"
-    @confirm="isShowModal = false">
-    <div class="detail_modal">
-      <div class="head">
-        <div class="plate" v-if="info.plateNumber">
-          <span>{{ info.plateNumber.slice(0, 1) }}</span>
-          <span>{{ info.plateNumber.slice(1, 2) }}</span>
-          <span>路</span>
-          <span>{{ info.plateNumber.slice(2) }}</span>
-        </div>
-        <div class="list">
-          <div class="item">
-            <span>杩愯緭鍗曞彿锛�</span>
-            <span>{{ info.carryBillCode }}</span>
-          </div>
-          <div class="item">
-            <span>鎬昏繍杈撻噺锛�</span>
-            <span>{{ info.ioQty || info.totalNum }}涓囨敮</span>
-          </div>
-          <div class="item">
-            <span>椹鹃┒鍛橈細</span>
-            <span>{{ info.driverName }} {{ info.driverPhone }}</span>
-          </div>
-        </div>
-      </div>
-      <div class="title">鍚堝悓鍒楄〃</div>
-      <div class="content">
-        <div class="item" v-for="item in info.wmsJobContractVOList">
-          <div class="contract">
-            <span>鍚堝悓鍙凤細{{ item.contractCode }}</span>
-            <!-- <div> -->
-              <span class="scs" v-if="item.status == 1">WMS浣滀笟宸插畬鎴�</span>
-              <span class="pad" v-if="item.status == 0">WMS浣滀笟鏈畬鎴�</span>
-              <span class="err" v-if="item.status == 2">WMS浣滀笟宸插彇娑�</span>
-
-              <span class="scs" v-if="item.lockStatus == 1">鐢靛瓙閿佸凡涓婇攣</span>
-              <span class="pad" v-if="item.lockStatus == 0">鐢靛瓙閿佹湭涓婇攣</span>
-            <!-- </div> -->
-          </div>
-          <div class="placeholder6">鏀惰揣鍦帮細{{ item.address }}</div>
-          <div class="list">
-            <div class="line" v-for="line in item.platformWmsDetailList">
-              <div class="left"><span>鐗╂枡鍚嶇О锛�</span><span>{{ line.materialName }}</span></div>
-              <div class="right"><span>鏁伴噺锛�</span><span>{{ line.ioQty }}涓囨敮</span></div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </GlobalWindow>
-</template>
-
-<script>
-import GlobalWindow from '@/components/common/GlobalWindow'
-import { platformWmsJobDetail } from '@/api'
-export default {
-  components: {
-    GlobalWindow
-  },
-  data() {
-    return {
-      isShowModal: false,
-      subLoading: false,
-      info: {},
-      id: ''
-
-    }
-  },
-  methods: {
-    getDetail() {
-      const { id } = this
-      platformWmsJobDetail(id).then(res => {
-        this.info = res
-      })
-    }
-  }
-
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/variables.scss";
-
-.detail_modal {
-  font-size: 12px;
-  color: #282828;
-
-  .head {
-    background: rgba(39, 155, 170, 0.05);
-    border-radius: 4px;
-    border: 1px solid #dfe2e8;
-    padding: 16px;
-
-    .plate {
-      display: flex;
-      font-weight: 600;
-      height: 30px;
-      line-height: 30px;
-      font-size: 15px;
-      color: #111111;
-      background-color: #fff;
-      border-radius: 4px;
-      border: 1px solid $primaryColor;
-      padding-right: 4px;
-      width:106px;
-      span {
-        &:nth-of-type(1) {
-          background: $primaryColor;
-          padding: 0 8px;
-          color: #fff;
-        }
-
-        &:nth-of-type(2) {
-          padding-left: 4px;
-        }
-      }
-    }
-
-    .list {
-      display: flex;
-      flex-wrap: wrap;
-      margin-top: 16px;
-
-      .item {
-        width: 50%;
-        margin-bottom: 8px;
-
-        span {
-          &:nth-child(1) {
-            color: #666666;
-          }
-        }
-      }
-    }
-  }
-
-  .title {
-    margin: 16px 0;
-    font-weight: 500;
-    font-size: 16px;
-    color: #222222;
-  }
-
-  .content {
-    .item {
-      border-radius: 4px;
-      border: 1px solid #dfe2e8;
-      padding: 16px;
-      margin-bottom: 10px;
-
-      .list {
-        background: #f7f7f7;
-        border-radius: 4px;
-        padding: 12px 16px;
-        margin-top: 10px;
-      }
-
-      .contract {
-        font-weight: 500;
-        font-size: 15px;
-        color: #279baa;
-        margin-bottom: 4px;
-        display: flex;
-        justify-content: space-between;
-        .scs{
-          color: #00ba67;
-        }
-        .pad{
-          color: #f19c3f;
-        }
-        .err{
-          color: red;
-        }
-      }
-
-      .line {
-        display: flex;
-        margin-bottom: 8px;
-
-        &:nth-last-child(1) {
-          margin: 0;
-        }
-
-        div {
-          span {
-            &:nth-child(1) {
-              color: #666666;
-            }
-          }
-        }
-
-        .left {
-          flex: 6;
-        }
-
-        .right {
-          flex: 4;
-        }
-      }
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/platform/components/oilImportTem.vue b/admin/src/views/platform/components/oilImportTem.vue
deleted file mode 100644
index 415b5e0..0000000
--- a/admin/src/views/platform/components/oilImportTem.vue
+++ /dev/null
@@ -1,85 +0,0 @@
-<template>
-  <el-dialog
-      class="center-title"
-      :title="title"
-      width="500px"
-      top="30vh"
-      :visible.sync="visible"
-      :confirm-working="isWorking"
-      @confirm="confirm"
-  >
-    <p class="tip-warn"><i class="el-icon-warning"></i>瀵煎叆璇存槑锛�<br>
-      1.璇峰厛涓嬭浇鏂囦欢妯℃澘锛屽苟鎸夌収妯℃澘瑕佸幓濉啓琛ㄦ牸鍐呭;<br>
-    </p>
-    <el-form class="demo-form-inline" >
-      <el-form-item label="鏂囦欢妯℃澘" required>
-        <div style="width: 100%;display: flex;align-items: center;">
-          <el-button type="primary"   @click="clickRef">鐐瑰嚮涓婁紶</el-button>
-          <el-button type="text" @click="exportTemplate">鐐瑰嚮涓嬭浇妯$増.EXCEL</el-button>
-        </div>
-        <div style="font-size: 14px; color: black;" v-if="fileName">{{fileName}}</div>
-      </el-form-item>
-    </el-form>
-    <input type="file" style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" />
-    <template   v-slot:footer>
-      <el-button @click="visible=false">杩斿洖</el-button>
-    </template>
-  </el-dialog>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalWindow from '@/components/common/GlobalWindow'
-import { importExcel2 } from '@/api/business/member'
-export default {
-  name: 'OperaMemberImportWindow',
-  extends: BaseOpera,
-  // eslint-disable-next-line vue/no-unused-components
-  components: { GlobalWindow },
-  data () {
-    return {
-      importing:false,
-      fileName: '',
-      companyType: 0
-    }
-  },
-  methods: {
-    open (title, companyType) {
-      this.title = title
-      this.fileName = ''
-      this.visible = true
-      // this.companyType = companyType
-    },
-    // 瀵煎嚭妯℃澘
-    exportTemplate () {
-      // 鎶曚繚鐢宠
-      window.open('/template/oil.xlsx')
-    },
-    clickRef () {
-      this.$refs.fileExcel.click()
-    },
-    result (e) {
-      const data = new FormData()
-      data.append('file', e.target.files[0])
-      // data.append('companyType', this.companyType)
-      importExcel2(data)
-        .then(res => {
-          this.$message.success('瀵煎叆鎴愬姛')
-          this.$emit('success')
-          this.visible = false
-        })
-        .catch(err => {
-          // this.$message.error(err)
-          this.fileName = ''
-        })
-        .finally(() => {
-          this.$refs.fileExcel.value = null
-        })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>
diff --git a/admin/src/views/platform/config.js b/admin/src/views/platform/config.js
deleted file mode 100644
index add62d5..0000000
--- a/admin/src/views/platform/config.js
+++ /dev/null
@@ -1,26 +0,0 @@
-export const statusMap = {
-  0: '寰呯‘璁�',
-  1: '寰呯鍒�',
-  2: '绛夊緟鍙彿',
-  3: '鍏ュ洯绛夊緟',
-  4: '鏈堝彴绛夊緟', // 宸插彨鍙�
-  5: '浣滀笟涓�',
-  6: '浣滀笟瀹屾垚',
-  7: '杞Щ涓�',
-  8: '寮傚父鎸傝捣',
-  9: '宸叉巿鏉冪鍥�',
-  10: '宸茬鍥�',
-  11: '宸茶繃鍙�',
-  12: '宸插彇娑�',
-}
-export const queryQueueUpConfig = {
-  formItems: [
-    {
-      filed: 'carCodeFront',
-      type: 'input',
-      label: '鎼滅储杞﹁締',
-      placeholder: '璇疯緭鍏ヨ溅鐗屽彿'
-    },
-  ],
-  online: true
-}
\ No newline at end of file
diff --git a/admin/src/views/platform/gas.vue b/admin/src/views/platform/gas.vue
deleted file mode 100644
index 7cb6c13..0000000
--- a/admin/src/views/platform/gas.vue
+++ /dev/null
@@ -1,116 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:platformwatergas:query']">
-    <SearchFormCollapse slot="search-form" :need-more="false">
-      <el-form ref="searchForm" :model="searchForm"  label-width="100px" inline >
-          <el-form-item title="璇烽�夋嫨骞存湀鏃堕棿" label="" prop="timeInfo" >
-            <el-date-picker
-                @change="search"
-                v-model="searchForm.timeInfo"
-                format="yyyy-MM"
-                placeholder="璇烽�夋嫨骞存湀鏃堕棿"
-                value-format="yyyy-MM-dd HH:mm:ss"
-                type="month"
-            />
-          </el-form-item>
-        <section>
-          <el-button type="primary" @click="search">鎼滅储</el-button>
-          <el-button @click="reset">閲嶇疆</el-button>
-        </section>
-      </el-form>
-    </SearchFormCollapse>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:platformwatergas:create','business:platformwatergas:delete','business:notice:exportExcel']">
-        <li><el-button type="primary" @click="$refs.OperaPlatformGasWindow.open('鏂板缓鐢ㄦ皵')" icon="el-icon-plus" v-permissions="['business:platformwatergas:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">鍒犻櫎</el-button></li>
-        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:notice:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="timeInfo" label="浣跨敤鏈堜唤" fixed min-width="100px">
-          <template slot-scope="{row}">
-              {{(row.timeInfo || row.timeInfo.length >7 )?row.timeInfo.substr(0,7):'-'}}
-          </template>
-        </el-table-column>
-        <el-table-column prop="num" label="鐢ㄦ皵閲忥紙绔嬫柟绫筹級" fixed min-width="150px"></el-table-column>
-        <el-table-column prop="content" label="璇存槑" min-width="120px"></el-table-column>
-        <el-table-column prop="editDate" label="鏈�杩戞搷浣滄椂闂�" min-width="140px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:platformwatergas:update', 'business:platformwatergas:delete'])"
-          label="鎿嶄綔"
-          align="center"
-          min-width="150"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.OperaPlatformGasWindow.open('缂栬緫鐢ㄦ皵', row)" icon="el-icon-edit" v-permissions="['business:platformwatergas:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaPlatformGasWindow ref="OperaPlatformGasWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import SearchFormCollapse from '@/components/common/SearchFormCollapse'
-import Pagination from '@/components/common/Pagination'
-import OperaPlatformGasWindow from '@/components/business/OperaPlatformGasWindow'
-import { allList } from '@/api/platform/platformGroup'
-export default {
-  name: 'Platform',
-  extends: BaseTable,
-  components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformGasWindow },
-  data () {
-    return {
-      groupList: [],
-      // 鎼滅储
-      working: false,
-      working1: false,
-      searchForm: {
-        timeInfo: '',
-        type: 1
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鐢ㄦ皵淇℃伅琛�',
-      api: '/platform/platformWaterGas',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.loadGroupList()
-  },
-  methods: {
-    loadGroupList () {
-      allList({})
-        .then(res => {
-          this.groupList = res || []
-        })
-    },
-    changeStatus (e, row) {
-      this.api.updateStatusById({
-        id: row.id,
-        status: e
-      })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
deleted file mode 100644
index e12c639..0000000
--- a/admin/src/views/platform/index.vue
+++ /dev/null
@@ -1,682 +0,0 @@
-<template>
-  <div class="main_app">
-    <div class="mb20 main_header">
-      <div class="platgroup_tabs">
-        <div class="tab" :class="{ active: activeGroup.id === item.id }" @click="platgroupClick(item)"
-          v-for="(item, i) in PlatGroupList" :key="i">
-          {{ item.name }}
-        </div>
-      </div>
-      <div class="btns">
-        <!-- <el-button type="primary" @click="handleSet">鍒锋柊</el-button> -->
-        <el-button type="primary" class="ml20" @click="handleSet">閰嶇疆鏈堝彴</el-button>
-      </div>
-    </div>
-    <!--  -->
-    <div v-if="activeGroup.platformList" class="platform_list">
-      <div class="item" :class="{ emyty: item.workStatus == 0 }" v-for="(item, i) in activeGroup.platformList" :key="i">
-        <div class="head">
-          <div class="left">
-            <div class="status mr10">
-              {{ item.workStatus == "0" ? "绌洪棽" : "浣滀笟涓�" }}
-            </div>
-            <div class="name">{{ item.name }}</div>
-            <div class="ite">
-              <span class="placeholder9">浣滀笟锛�</span><span>{{ item.platformWorkVO.workNum }}</span>
-            </div>
-            <div class="ite">
-              <span class="placeholder9">宸插彨锛�</span><span>{{ item.platformWorkVO.callNum }}</span>
-            </div>
-            <div class="ite">
-              <span class="placeholder9">绛夊緟锛�</span><span>{{ item.platformWorkVO.waitNum }}</span>
-            </div>
-            <div class="ite">
-              <span class="placeholder9">寮傚父锛�</span><span class="red">{{ item.platformWorkVO.exceptionNum }}</span>
-            </div>
-          </div>
-          <el-button @click="handleQueuing(item, 1)">鍙彿鍏ュ洯</el-button>
-          <el-button type="primary" @click="handleQueuing(item, 2)">鏈堝彴鍙彿</el-button>
-        </div>
-        <div class="list" v-if="item.platformWorkVO && item.platformWorkVO.platformJobList">
-          <div class="info" :class="{ err: task.status == 8 }" v-for="task in item.platformWorkVO.platformJobList"
-            :key="task.id">
-            <div class="line">
-              <div class="left">
-                <div v-if="task.carCodeFront" class="code">
-                  <span>{{ task.carCodeFront.slice(0, 1) }}</span>
-                  <span>{{ task.carCodeFront.slice(1, 2) }}</span>
-                  <span>路</span>
-                  <span>{{ task.carCodeFront.slice(2) }}</span>
-                </div>
-              </div>
-              <div class="right">
-                <div class="status_item" v-if="task.status != 4 && task.status != 5" :class="{ red: task.status == 8 }">
-                  <span class="lab">{{ statusMap[task.status] }}</span>
-                </div>
-                <div class="status_item" v-if="task.status == 4">
-                  <span class="lab">鍙彿涓�</span> {{ task.callDateTemp }}
-                </div>
-                <div class="status_item scs" v-if="task.status == 5">
-                  <span class="lab">浣滀笟涓�</span> {{ task.startDateTemp }}
-                </div>
-              </div>
-            </div>
-            <div class="line">
-              <div v-if="task.billCode" style="width: 40%;" class="ite">
-                <span>杩愯緭鍗曞彿锛�</span>
-                <span>{{ task.billCode }}</span>
-              </div>
-              <div v-else class="ite" style="width: 40%;">
-                <span>鍚堝悓鍗曞彿锛�</span>
-                <span>{{ task.contractNum }}</span>
-              </div>
-              <div class="ite jiashi">
-                <span>椹鹃┒鍛橈細</span>
-                <span>{{ task.driverName }} {{ task.drivierPhone }}</span>
-              </div>
-              <!-- <div class="ite phone">
-                <span>鎵嬫満鍙凤細</span>
-                <span>{{ task.drivierPhone }}</span>
-              </div> -->
-              <div class="ite" style="width: 40%">
-                <span>鎬昏繍杈撻噺锛�</span>
-                <span>{{ task.totalNum || task.ioQty }}涓囨敮</span>
-              </div>
-              <div v-if="task.billCode" class="ite" style="width: 60%">
-                <span>杩愯緭鍏徃锛�</span>
-                <span>{{ task.carrierName }}</span>
-              </div>
-              <!-- <div class="ite"></div> -->
-            </div>
-            <div class="line">
-              <div class="left">
-                <span v-if="task.billCode" class="primaryColor pointer" @click="handleDetail(task)">杩愬崟璇︽儏</span>
-                <span v-else class="primaryColor pointer" @click="subDetail(task)">棰勭害璇︽儏</span>
-              </div>
-              <div class="right">
-                <el-button v-if="task.status == 5" plain @click="handleErr(task)">寮傚父鎸傝捣</el-button>
-                <el-button v-if="task.status == 5 || task.status == 8" plain
-                  @click="handleTransform(item, task)">杞Щ鏈堝彴</el-button>
-                <el-button v-if="task.status == 4" plain @click="handlePass(task)">杩囧彿</el-button>
-                <el-button v-preventReClick :loading="loadingFinish" v-if="task.status == 5 || task.status == 8" type="primary"
-                  @click="handleFinish(task)">浣滀笟瀹屾垚</el-button>
-                <el-button v-preventReClick :loading="loadingOpen" v-if="task.status == 4" type="primary" @click="handleWork(task)">寮�濮嬩綔涓�</el-button>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div v-if="!item.platformWorkVO.platformJobList || item.platformWorkVO.platformJobList.length == 0"
-          class="empty_plat">
-          <img src="@/assets/images/default_nodata.png" alt="">
-          <div>鏆傛棤杞﹁締</div>
-        </div>
-      </div>
-    </div>
-    <!-- 閰嶇疆鏄剧ず鏈堝彴 -->
-    <GlobalWindow title="閰嶇疆鏄剧ず鏈堝彴" :visible.sync="isShowSet" :confirm-working="setLoading" @confirm="handleSetSub"
-      width="560px">
-      <div class="set_modal">
-        <div class="mb10" v-for="group in PlatGroupListSet" :key="group.id">
-          <div class="title">{{ group.name }}</div>
-          <div class="list">
-            <div class="item" @click="platformSetClick(item.id)" :class="{ active: item.showConfig }"
-              v-for="item in group.platformList" :key="item.id">
-              <div>{{ item.name }}</div>
-              <div v-if="item.showConfig" class="bg"></div>
-              <i v-if="item.showConfig" class="el-icon-check scs"></i>
-            </div>
-          </div>
-        </div>
-      </div>
-    </GlobalWindow>
-    <!-- 杩愬崟璇︽儏 -->
-    <!--  -->
-    <!-- 鍙彿 -->
-    <PlatformQueuing ref="PlatformQueuingRef" v-if="isShowQueuing" @success="getPlatGroupList"
-      @close="isShowQueuing = false" />
-    <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" />
-    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
-    <el-dialog title="杞Щ鏈堝彴" :visible.sync="isShowTransform" width="500px" style="margin-top: 12vh">
-      <div class="df_ac">
-        <span>閫夋嫨杞Щ鍒扮殑鏈堝彴锛�</span>
-        <el-select v-model="activePlatId">
-          <el-option v-for="item in activeGroup.platformList" :key="item.id" :label="item.name" :value="item.id">
-          </el-option>
-        </el-select>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowTransform = false">鍙栨秷</el-button>
-        <el-button v-preventReClick type="primary" @click="transformSub">纭畾</el-button>
-      </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import {
-  getPlatformGroupList,
-  platformBeginWork,
-  platformFinishWork,
-  platformOverNumber,
-  platformErr,
-  platformMove,
-  updUserPlatformConfig,
-
-  listByGroupId
-} from '@/api'
-import PlatformQueuing from './components/PlatformQueuing.vue'
-import WaybillDetail from './components/WaybillDetail.vue'
-import DriverDetail from "@/views/task/driverDetail.vue"
-import GlobalWindow from '@/components/common/GlobalWindow'
-import dayjs from 'dayjs'
-import duration from 'dayjs/plugin/duration'
-import { Loading, Message } from 'element-ui'
-import { statusMap } from './config'
-dayjs.extend(duration)
-export default {
-  components: {
-    PlatformQueuing,
-    WaybillDetail,
-    DriverDetail,
-    GlobalWindow
-  },
-  data() {
-    return {
-      statusMap,
-      activeGroup: {},
-      PlatGroupList: [],
-      PlatGroupListSet: [],
-      platList: [],
-      platCallList: [],
-      isShowTransform: false,
-      activePlatId: '', // 杞Щ鏈堝彴
-      activetaskId: '',
-
-      isShowSet: false, // 鏈堝彴閰嶇疆
-      setLoading: false,
-
-      setParam: {},
-      isShowDetail: false, // 杩愬崟璇︽儏
-      isShowDriver: false, // 棰勭害璇︽儏
-      detail: {},
-      isShowQueuing: false,
-      timer: null,
-
-      loadingOpen: false,
-      loadingFinish: false,
-    }
-  },
-  created() {
-    setInterval(() => {
-      this.getPlatGroupList()
-    }, 1000 * 20)
-    this.getPlatGroupList()
-  },
-  methods: {
-    handleWork(item) {
-      this.loadingOpen = true
-      platformBeginWork({ jobId: item.id }).then(res => {
-        this.loadingOpen = false
-        Message.success('宸插紑濮嬩綔涓�')
-        this.getPlatGroupList()
-      }, () => {
-        this.loadingOpen = false
-      })
-    },
-    handleFinish(item) {
-      this.loadingFinish = true
-      platformFinishWork({ jobId: item.id }).then(res => {
-        this.loadingFinish = false
-        Message.success('瀹屾垚浣滀笟')
-        this.getPlatGroupList()
-      },() => {
-        this.loadingFinish = false
-      })
-    },
-    handleTransform(item, task) {
-      this.activePlatId = item.id
-      this.activetaskId = task.id
-      this.isShowTransform = true
-    },
-    transformSub() {
-      const { activePlatId, activetaskId } = this
-      platformMove({ platformId: activePlatId, jobId: activetaskId }).then(res => {
-        Message.success('杞Щ鏈堝彴鎴愬姛')
-        this.isShowTransform = false
-        this.getPlatGroupList()
-      })
-    },
-    handlePass(item) {
-      this.$confirm(`纭 ${item.carCodeFront}缃负杩囧彿鍚楋紵杩囧彿鍚庯紝闇�瑕侀噸鏂扮鍒版墠鑳借繘鍏ュ洯鍖篳, '娓╅Θ鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        platformOverNumber({ jobId: item.id }).then(ress => {
-          Message.success('杩囧彿鎴愬姛')
-          this.getPlatGroupList()
-        })
-      })
-    },
-    handleErr(item) {
-      this.$confirm('鎮ㄧ‘璁よ瀵硅浠诲姟杩涜寮傚父鎸傝捣鍚�', '娓╅Θ鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        platformErr({ jobId: item.id }).then(ress => {
-          Message.success('寮傚父鎸傝捣鎴愬姛')
-          this.getPlatGroupList()
-        })
-      })
-    },
-    platgroupClick(item) {
-      this.activeGroup = { ...item }
-      this.circulInitTaskList()
-      this.timer = setInterval(() => {
-        this.circulInitTaskList()
-      }, 1000)
-    },
-    getPlatGroupList() {
-      getPlatformGroupList({
-        queryData: 1,
-        queryType: 1
-      }).then(res => {
-        this.PlatGroupList = res || []
-        if (res.length > 0) {
-          if (this.activeGroup && this.activeGroup.id) {
-            this.activeGroup = res.find(item => item.id === this.activeGroup.id)
-          } else {
-            this.activeGroup = res[0]
-          }
-          this.circulInitTaskList()
-          this.timer = setInterval(() => {
-            this.circulInitTaskList()
-          }, 1000)
-        }
-      })
-    },
-    circulInitTaskList() {
-      if (this.activeGroup && this.activeGroup.platformList && this.activeGroup.platformList.length > 0) {
-        const time = new Date()
-        this.activeGroup.platformList.forEach(plat => {
-          if (plat.platformWorkVO.platformJobList && plat.platformWorkVO.platformJobList.length > 0) {
-            plat.platformWorkVO.platformJobList.forEach(item => {
-              if (item.newCallDate) {
-                const timeNum = time.getTime() - new Date(item.newCallDate).getTime()
-                if (timeNum > 3600000) {
-                  item.callDateTemp = dayjs.duration(timeNum).format('H灏忔椂m鍒唖绉�')
-                } else {
-                  item.callDateTemp = dayjs.duration(timeNum).format('m鍒唖绉�')
-                }
-              }
-              if (item.newStartDate) {
-                const timeNum = time.getTime() - new Date(item.newStartDate).getTime()
-                if (timeNum > 3600000) {
-                  item.startDateTemp = dayjs.duration(timeNum).format('H灏忔椂m鍒唖绉�')
-                } else {
-                  item.startDateTemp = dayjs.duration(timeNum).format('m鍒唖绉�')
-                }
-              }
-            })
-          }
-        })
-        this.$forceUpdate()
-      }
-    },
-    handleQueuing(item, callType) {
-      this.isShowQueuing = true
-      this.$nextTick(() => {
-        this.$refs.PlatformQueuingRef.isShowModal = true
-        this.$refs.PlatformQueuingRef.callType = callType
-        this.$refs.PlatformQueuingRef.carCodeFront = ''
-        this.$refs.PlatformQueuingRef.pagination = {
-          total: 0,
-          pageSize: 10,
-          page: 1
-        }
-        this.$refs.PlatformQueuingRef.activePlat = { ...item }
-        this.$refs.PlatformQueuingRef.getList()
-        this.$refs.PlatformQueuingRef.title = item.name
-      })
-    },
-    subDetail(row) {
-      this.isShowDriver = true
-      this.$nextTick(() => {
-        this.$refs.DriverDetailRef.id = row.bookId
-        this.$refs.DriverDetailRef.type = 6
-        this.$refs.DriverDetailRef.getDetail()
-        this.$refs.DriverDetailRef.isShowModal = true
-      })
-    },
-    handleDetail(row) {
-      this.isShowDetail = true
-      this.$nextTick(() => {
-        this.$refs.WaybillDetailRef.isShowModal = true
-        this.$refs.WaybillDetailRef.id = row.id
-        this.$refs.WaybillDetailRef.getDetail()
-      })
-    },
-    getList() {
-      const { groupId } = this
-      listByGroupId(groupId).then(res => {
-        this.platList = res
-      })
-    },
-    handleSet() {
-      this.isShowSet = true
-      getPlatformGroupList({
-        queryData: 0,
-        queryType: 1
-      }).then(res => {
-        this.PlatGroupListSet = res || []
-      })
-    },
-    handleSetSub() {
-      const { PlatGroupListSet } = this
-      const ids = []
-      PlatGroupListSet.forEach(item => {
-        item.platformList.forEach(platform => {
-          if (platform.showConfig) {
-            ids.push(platform.id)
-          }
-        })
-      })
-      this.setLoading = true
-      updUserPlatformConfig(ids).then(res => {
-        this.setLoading = false
-        Message.success('鏇存柊鎴愬姛')
-        this.isShowSet = false
-        this.getPlatGroupList()
-      }, () => {
-        this.setLoading = false
-      })
-    },
-    platformSetClick(id) {
-      const { PlatGroupListSet } = this
-      PlatGroupListSet.forEach(item => {
-        item.platformList.forEach(platform => {
-          if (platform.id === id) {
-            platform.showConfig = !platform.showConfig
-          }
-        })
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/variables.scss";
-
-.platform_list {
-  width: 100%;
-
-  .item {
-    /* padding: 16px 24px; */
-    background: #ffffff;
-    border-radius: 2px;
-    border: 1px solid #dfe2e8;
-    margin-bottom: 12px;
-    width: 100%;
-
-    .head {
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-      height: 50px;
-      background: linear-gradient(270deg, #FFFFFF 0%, #EBF6F7 100%);
-      border-radius: 2px 2px 0px 0px;
-      padding: 0 20px;
-
-      .shengyin {
-        width: 12px;
-        height: 12px;
-        margin-right: 3px;
-      }
-
-      .left {
-        flex: 1;
-        display: flex;
-        align-items: center;
-
-        .name {
-          font-size: 16px;
-          margin-right: 50px;
-        }
-
-        .status {
-          line-height: 25px;
-          height: 25px;
-          background: #00ba67;
-          border-radius: 2px;
-          color: #ffffff;
-          padding: 0 6px;
-        }
-
-        .ite {
-          margin-right: 30px;
-        }
-      }
-    }
-
-    .list {
-      display: flex;
-      flex-wrap: wrap;
-      margin-top: 10px;
-      padding: 16px;
-      width: calc(100% - 0);
-
-      .info {
-        background: #f4fafb;
-        border-radius: 2px;
-        border: 1px solid #dfe2e8;
-        padding: 16px;
-        border-radius: 2px;
-        margin-bottom: 10px;
-        width: calc(31.6% - 22px);
-        margin-right: 10px;
-
-        &:nth-of-type(3n) {
-          margin-right: 0;
-        }
-
-        .status_item {
-          .lab {
-            font-weight: 500;
-          }
-
-          color: #00ba67;
-        }
-
-        .line {
-          display: flex;
-          align-items: center;
-          justify-content: space-between;
-          flex-wrap: wrap;
-          margin-bottom: 6px;
-
-          .ite {
-            width: 50%;
-            margin-top: 8px;
-          }
-
-          .jiashi {
-            width: 60%;
-          }
-
-          .phone {
-            width: 37.6%;
-          }
-
-          .left {
-            .code {
-              display: flex;
-              font-weight: 600;
-              height: 30px;
-              line-height: 30px;
-              font-size: 15px;
-              color: #111111;
-              background-color: #fff;
-              border-radius: 4px;
-              border: 1px solid $primaryColor;
-              padding-right: 4px;
-
-              span {
-                &:nth-of-type(1) {
-                  background: $primaryColor;
-                  padding: 0 8px;
-                  color: #fff;
-                }
-
-                &:nth-of-type(2) {
-                  padding-left: 4px;
-                }
-              }
-            }
-          }
-
-          .right {
-            display: flex;
-            align-items: center;
-          }
-        }
-      }
-
-      .jobing {
-        background: #effbf5;
-
-        .status {
-          color: #00ba67;
-        }
-      }
-
-      .err {
-        background: #fef6f6;
-
-        .status {
-          color: #ed4545;
-        }
-      }
-    }
-
-    .empty_plat {
-      width: 100%;
-      height: 170px;
-      display: flex;
-      flex-direction: column;
-      justify-content: center;
-      align-items: center;
-      font-size: 12px;
-      color: #B2B2B2;
-
-      img {
-        width: 110px;
-      }
-    }
-  }
-
-  .emyty {
-    .head {
-      background: linear-gradient(270deg, #FFFFFF 0%, #F7F7F7 100%) !important;
-    }
-
-    .status {
-      background: #CCCCCC !important;
-    }
-  }
-}
-
-.main_header {
-  display: flex;
-  position: relative;
-
-  .platgroup_tabs {
-    flex: 1;
-    display: flex;
-    border-bottom: 1px solid #dfe2e8;
-
-    .tab {
-      color: #666666;
-      margin-right: 40px;
-      cursor: pointer;
-      padding-bottom: 18px;
-      border-bottom: 2px solid #fff;
-    }
-
-    .active {
-      font-weight: 500;
-      font-size: 15px;
-      color: #222222;
-      border-bottom: 2px solid $primary-color;
-    }
-  }
-
-  .btns {
-    position: absolute;
-    width: 180px;
-    height: 36px;
-    right: 0;
-    top: -4px;
-    display: flex;
-    justify-content: flex-end;
-  }
-}
-
-/*  */
-.set_modal {
-  .title {
-    font-size: 16px;
-    font-weight: 600;
-    margin-bottom: 16px;
-  }
-
-  .list {
-    display: flex;
-    flex-wrap: wrap;
-
-    .item {
-      cursor: pointer;
-      padding: 0 36px;
-      height: 36px;
-      border: 1px solid #dfe2e8;
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      border-radius: 2px;
-      margin-bottom: 10px;
-      margin-right: 13px;
-      position: relative;
-      overflow: hidden;
-
-      .bg {
-        position: absolute;
-        right: -12px;
-        bottom: -12px;
-        width: 24px;
-        height: 24px;
-        background: $primaryColor;
-        transform: rotate(45deg);
-      }
-
-      .scs {
-        position: absolute;
-        right: -1px;
-        bottom: -1px;
-        color: #fff;
-        z-index: 99999;
-        transform: scale(.8)
-      }
-    }
-
-    .active {
-      background: rgba(39, 155, 170, 0.06);
-      border: 1px solid $primaryColor;
-      color: $primaryColor;
-    }
-  }
-}
-
-/*  */
-/*  */
-</style>
diff --git a/admin/src/views/platform/oil.vue b/admin/src/views/platform/oil.vue
deleted file mode 100644
index a6b5680..0000000
--- a/admin/src/views/platform/oil.vue
+++ /dev/null
@@ -1,138 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:platformwatergas:query']">
-    <SearchFormCollapse slot="search-form" :need-more="false">
-      <el-form ref="searchForm" :model="searchForm"  label-width="100px" inline >
-          <el-form-item title="璇疯緭鍏ヨ溅鐗屽彿"  >
-            <el-input v-model="searchForm.carCode" clearable placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
-          </el-form-item>
-          <el-form-item  label="浣跨敤鏃堕棿锛�"  >
-            <el-date-picker
-                @change="search"
-                v-model="searchForm.startTime"
-                format="yyyy-MM"
-                style="width: 140px"
-                placeholder="寮�濮嬫椂闂�"
-                value-format="yyyy-MM-dd HH:mm:ss"
-                type="month"
-            />~
-              <el-date-picker
-                  @change="search"
-                  v-model="searchForm.endTime"
-                  format="yyyy-MM"
-                  style="width: 140px"
-                  placeholder="缁撴潫鏃堕棿"
-                  value-format="yyyy-MM-dd HH:mm:ss"
-                  type="month"
-              />
-          </el-form-item>
-        <section>
-          <el-button type="primary" @click="search">鎼滅储</el-button>
-          <el-button @click="reset">閲嶇疆</el-button>
-        </section>
-      </el-form>
-    </SearchFormCollapse>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:platformwatergas:create','business:platformwatergas:delete','business:notice:exportExcel']">
-        <li><el-button type="primary" @click="$refs.OperaPlatformOilWindow.open('鏂板缓娌硅��')" icon="el-icon-plus" v-permissions="['business:platformwatergas:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">鍒犻櫎</el-button></li>
-        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:platformwatergas:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
-        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:platformwatergas:exportExcel']" @click="handleImport">瀵煎叆</el-button>
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="carCode" label="杞︾墝鍙�" fixed min-width="150px"></el-table-column>
-        <el-table-column prop="timeInfo" label="浣跨敤鏈堜唤" fixed min-width="100px">
-          <template slot-scope="{row}">
-              {{(row.timeInfo || row.timeInfo.length >7 )?row.timeInfo.substr(0,7):'-'}}
-          </template>
-        </el-table-column>
-        <el-table-column prop="num" label="娌硅�楋紙鍗囷級" fixed min-width="150px"></el-table-column>
-        <el-table-column prop="content" label="璇存槑" min-width="120px"></el-table-column>
-        <el-table-column prop="editDate" label="鏈�杩戞搷浣滄椂闂�" min-width="140px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:platformwatergas:update', 'business:platformwatergas:delete'])"
-          label="鎿嶄綔"
-          align="center"
-          min-width="150"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.OperaPlatformOilWindow.open('缂栬緫娌硅��', row)" icon="el-icon-edit" v-permissions="['business:platformwatergas:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaPlatformOilWindow ref="OperaPlatformOilWindow" @success="handlePageChange"/>
-    <oilImportTem ref="oilImportTem" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import SearchFormCollapse from '@/components/common/SearchFormCollapse'
-import Pagination from '@/components/common/Pagination'
-import OperaPlatformOilWindow from '@/components/business/OperaPlatformOilWindow'
-import { allList } from '@/api/platform/platformGroup'
-import oilImportTem from './components/oilImportTem'
-export default {
-  name: 'Platform',
-  extends: BaseTable,
-  components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformOilWindow, oilImportTem },
-  data () {
-    return {
-      groupList: [],
-      // 鎼滅储
-      working: false,
-      working1: false,
-      searchForm: {
-        carCode:'',
-        startTime: '',
-        endTime: '',
-        type: 2
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '娌硅�椾俊鎭〃',
-      api: '/platform/platformWaterGas',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.loadGroupList()
-  },
-  methods: {
-    handleImport() {
-      this.$refs.oilImportTem.open('鎵归噺瀵煎叆')
-    },
-    loadGroupList () {
-      allList({})
-        .then(res => {
-          this.groupList = res || []
-        })
-    },
-    changeStatus (e, row) {
-      this.api.updateStatusById({
-        id: row.id,
-        status: e
-      })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/platform/platform.vue b/admin/src/views/platform/platform.vue
deleted file mode 100644
index fc0e89f..0000000
--- a/admin/src/views/platform/platform.vue
+++ /dev/null
@@ -1,164 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:platform:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <SearchFormCollapse slot="search-form" :need-more="false">
-      <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
-        <el-form-item label="" prop="name">
-          <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ユ湀鍙板悕绉�"
-            @keypress.enter.native="search"></el-input>
-        </el-form-item>
-        <el-form-item label="">
-          <el-select v-model="searchForm.groupId" placeholder="璇烽�夋嫨鏈堝彴鍒嗙粍" @change="search" clearable>
-            <el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <!-- <section> -->
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-        <!-- </section> -->
-      </el-form>
-    </SearchFormCollapse>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:hksync:platforms']">
-        <li><el-button type="primary" :loading="working" @click="syncData" icon="el-icon-plus"
-            v-permissions="['business:hksync:platforms']">鍚屾</el-button></li>
-        <li><el-button type="primary" :loading="working1" @click="syncStatus" icon="el-icon-plus"
-            v-permissions="['business:hksync:platforms']">鍚屾瀹炴椂鐘舵��</el-button></li>
-      </ul>
-      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="name" label="鏈堝彴鍚嶇О" fixed min-width="100px"></el-table-column>
-        <el-table-column prop="code" label="鏈堝彴缂栫爜" fixed min-width="100px"></el-table-column>
-        <el-table-column prop="groupName" label="鎵�灞炴湀鍙扮粍" fixed min-width="150px"></el-table-column>
-        <el-table-column prop="workingNum" label="鍚屾椂鍙彿杞﹁締鏁�" min-width="120px"></el-table-column>
-        <el-table-column prop="stayTimeoutAlarmTime" label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛�" min-width="180px">
-          <template scope="{row}">{{ row.stayTimeoutAlarmTime ? (row.stayTimeoutAlarmTime) : '-' }}</template>
-        </el-table-column>
-        <el-table-column prop="workTimeoutAlarmTime" label="浣滀笟瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛�" min-width="180px">
-          <template scope="{row}"> {{ row.workTimeoutAlarmTime ? (row.workTimeoutAlarmTime) : '-' }}</template>
-        </el-table-column>
-        <el-table-column prop="workRate" label="鏈堝彴浣滀笟鏁堢巼(涓囨敮/灏忔椂)" min-width="180px"></el-table-column>
-        <!-- <el-table-column prop="platformStatus" label="鏈堝彴鐘舵��" min-width="100px">
-          <template scope="{row}">
-            <span v-if="row.platformStatus == 0">鏃犺溅</span>
-            <span v-if="row.platformStatus == 1">鏈夎溅</span>
-            <span v-if="row.platformStatus == 2">瓒呮椂鍋滈潬</span>
-            <span v-if="row.platformStatus == 3">閿欒鍋滈潬</span>
-          </template>
-        </el-table-column> -->
-        <el-table-column prop="broadcastNames" label="鍏宠仈骞挎挱" min-width="100px"></el-table-column>
-        <el-table-column prop="ledNames" label="鍏宠仈LED" min-width="100px"></el-table-column>
-        <el-table-column prop="ledContent" label="LED绌洪棽鏂囨" min-width="180px"></el-table-column>
-        <el-table-column prop="hkDate" label="鍚屾鏃堕棿" min-width="150px"></el-table-column>
-        <el-table-column label="鏈堝彴鐘舵��" fixed="right" width="100px">
-          <template slot-scope="{row}">
-            <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
-              inactive-color="#ff4949" :active-value="0" :inactive-value="1">
-            </el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column v-if="containPermissions(['business:platform:update', 'business:platform:delete'])" label="鎿嶄綔"
-          min-width="120" fixed="right">
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaPlatformWindow.open('缂栬緫鏈堝彴淇℃伅琛�', row)" icon="el-icon-edit"
-              v-permissions="['business:platform:update']">缂栬緫</el-button>
-            <!-- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
-              v-permissions="['business:platform:delete']">鍒犻櫎</el-button> -->
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaPlatformWindow ref="operaPlatformWindow" @success="handlePageChange" />
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import SearchFormCollapse from '@/components/common/SearchFormCollapse'
-import Pagination from '@/components/common/Pagination'
-import OperaPlatformWindow from '@/components/business/OperaPlatformWindow'
-import { allList } from '@/api/platform/platformGroup'
-export default {
-  name: 'Platform',
-  extends: BaseTable,
-  components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformWindow },
-  data() {
-    return {
-      groupList: [],
-      // 鎼滅储
-      working: false,
-      working1: false,
-      searchForm: {
-        name: '',
-        groupId: null
-      }
-    }
-  },
-  created() {
-    this.config({
-      module: '鏈堝彴淇℃伅琛�',
-      api: '/platform/platform',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.loadGroupList()
-  },
-  methods: {
-    loadGroupList() {
-      allList({})
-        .then(res => {
-          this.groupList = res || []
-        })
-    },
-    changeStatus(e, row) {
-      this.api.updateStatusById({
-        id: row.id,
-        status: e
-      })
-    },
-    syncData() {
-      this.$dialog.actionConfirm('鎿嶄綔纭鎻愰啋', '鎮ㄧ‘璁ゅ悓姝ュ叏閮ㄤ俊鎭悧锛�')
-        .then(() => {
-          this.isWorking.working = true
-          this.api.syncPlatforms({})
-            .then(res => {
-              this.$tip.apiSuccess(res || '鍚屾鎴愬姛')
-              this.search()
-            })
-            .catch(e => {
-              // this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.isWorking.working = false
-            })
-        })
-        .catch(() => { })
-    },
-    syncStatus() {
-      this.$dialog.actionConfirm('鎿嶄綔纭鎻愰啋', '鎮ㄧ‘璁ゅ悓姝ュ叏閮ㄤ俊鎭悧锛�')
-        .then(() => {
-          this.isWorking.working = true
-          this.api.syncPlatformStatus({})
-            .then(res => {
-              this.$tip.apiSuccess(res || '鍚屾鎴愬姛')
-              this.search()
-            })
-            .catch(e => {
-              // this.$tip.apiFailed(e)
-            })
-            .finally(() => {
-              this.isWorking.working = false
-            })
-        })
-        .catch(() => { })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/platform/platformGroup.vue b/admin/src/views/platform/platformGroup.vue
deleted file mode 100644
index 62b3061..0000000
--- a/admin/src/views/platform/platformGroup.vue
+++ /dev/null
@@ -1,87 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:platformgroup:query']">
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:platformgroup:create','business:platformgroup:delete']">
-        <li><el-button type="primary" @click="$refs.operaPlatformGroupWindow.open('鏂板缓鏈堝彴鍒嗙粍')" icon="el-icon-plus" v-permissions="['business:platformgroup:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:platformgroup:delete']">鍒犻櫎</el-button></li>
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="name" label="鏈堝彴缁勫悕绉�" fixed min-width="150px" align="center"></el-table-column>
-        <el-table-column prop="startTime" label="宸ヤ綔鏃堕棿" min-width="150px"  align="center">
-          <template scope="{row}">
-            {{row.startTime || ' '}} - {{row.endTime || ' '}}
-          </template>
-        </el-table-column>
-        <el-table-column prop="type" label="涓氬姟绫诲瀷"  align="center" min-width="150px">
-          <template 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="waitCallTime" label="鍙彿绛夊緟鏃堕棿锛堝垎閽燂級" min-width="140px"  align="center"></el-table-column>
-        <el-table-column prop="editDate" label="鏈�杩戞洿鏂版椂闂�" min-width="150px"  align="center"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:platformgroup:update', 'business:platformgroup:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          align="center"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaPlatformGroupWindow.open('缂栬緫鏈堝彴鍒嗙粍', row)" icon="el-icon-edit" v-permissions="['business:platformgroup:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platformgroup:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaPlatformGroupWindow ref="operaPlatformGroupWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaPlatformGroupWindow from '@/components/business/OperaPlatformGroupWindow'
-export default {
-  name: 'Platform',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaPlatformGroupWindow },
-  data () {
-    return {
-      // 鎼滅储
-      working: false,
-      working1: false,
-      searchForm: {
-        name: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鏈堝彴淇℃伅琛�',
-      api: '/platform/platformGroup',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-  }
-}
-</script>
diff --git a/admin/src/views/platform/platformReason.vue b/admin/src/views/platform/platformReason.vue
deleted file mode 100644
index 117bf82..0000000
--- a/admin/src/views/platform/platformReason.vue
+++ /dev/null
@@ -1,115 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:platformreason:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <SearchFormCollapse slot="search-form" :need-more="false">
-      <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
-        <el-form-item label="" prop="reason">
-          <el-input v-model="searchForm.reason" clearable placeholder="璇疯緭鍏ュ叆鍥師鍥�"
-            @keypress.enter.native="search"></el-input>
-        </el-form-item>
-        <el-form-item label="">
-          <el-select v-model="searchForm.groupId" placeholder="璇烽�夋嫨鏈堝彴鍒嗙粍" @change="search" clearable>
-            <el-option v-for="item in groupList" :key="item.id" :label="item.name" :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <section>
-          <el-button type="primary" @click="search">鎼滅储</el-button>
-          <el-button @click="reset">閲嶇疆</el-button>
-        </section>
-      </el-form>
-    </SearchFormCollapse>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:platformreason:create', 'business:platformreason:delete']">
-        <li><el-button type="primary" @click="$refs.OperaPlatformReasonWindow.open('鏂板缓鏈堝彴鍏ュ洯鍘熷洜')" icon="el-icon-plus"
-            v-permissions="['business:platformreason:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete"
-            v-permissions="['business:platformreason:delete']">鍒犻櫎</el-button></li>
-      </ul>
-      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="reason" label="鍏ュ洯鍘熷洜" fixed min-width="100px"></el-table-column>
-        <el-table-column prop="groupName" label="瀵瑰簲浣滀笟鏈堝彴缁�" fixed min-width="150px"></el-table-column>
-        <el-table-column prop="limitNum" label="浣滀笟閲�(涓囨敮/澶�)" min-width="120px"></el-table-column>
-        <el-table-column prop="sortnum" label="鎺掑簭鐮�" fixed min-width="80px"></el-table-column>
-        <el-table-column prop="remark" label="璇存槑" fixed min-width="100px"></el-table-column>
-        <el-table-column label="绂�/鍚敤" min-width="120px">
-          <template slot-scope="{row}">
-            <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
-              inactive-color="#ff4949" :active-value="0" :inactive-value="1">
-            </el-switch>
-          </template>
-        </el-table-column>
-        <el-table-column prop="editDate" label="鏈�杩戞搷浣滄椂闂�" min-width="140px"></el-table-column>
-        <el-table-column v-if="containPermissions(['business:platformreason:update', 'business:platformreason:delete'])"
-          label="鎿嶄綔" align="center" min-width="150" fixed="right">
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.OperaPlatformApproveTemplWindow.open('鏈堝彴鍏ュ洯鍘熷洜瀹℃壒娴�', row)"
-              icon="el-icon-edit" v-permissions="['business:platformreason:update']">瀹℃壒娴�</el-button>
-            <el-button type="text" @click="$refs.OperaPlatformReasonWindow.open('缂栬緫鏈堝彴鍏ュ洯鍘熷洜', row)" icon="el-icon-edit"
-              v-permissions="['business:platformreason:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
-              v-permissions="['business:platformreason:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaPlatformReasonWindow ref="OperaPlatformReasonWindow" @success="handlePageChange" />
-    <OperaPlatformApproveTemplWindow ref="OperaPlatformApproveTemplWindow" @success="handlePageChange" />
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import SearchFormCollapse from '@/components/common/SearchFormCollapse'
-import Pagination from '@/components/common/Pagination'
-import OperaPlatformReasonWindow from '@/components/business/OperaPlatformReasonWindow'
-import OperaPlatformApproveTemplWindow from '@/components/business/OperaPlatformApproveTemplWindow'
-import { allList } from '@/api/platform/platformGroup'
-export default {
-  name: 'Platform',
-  extends: BaseTable,
-  components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformReasonWindow, OperaPlatformApproveTemplWindow },
-  data() {
-    return {
-      groupList: [],
-      // 鎼滅储
-      working: false,
-      working1: false,
-      searchForm: {
-        reason: '',
-        groupId: null
-      }
-    }
-  },
-  created() {
-    this.config({
-      module: '鏈堝彴鍏ュ洯鍘熷洜淇℃伅琛�',
-      api: '/platform/platformReason',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.loadGroupList()
-  },
-  methods: {
-    loadGroupList() {
-      allList({})
-        .then(res => {
-          this.groupList = res || []
-        })
-    },
-    changeStatus(e, row) {
-      this.api.updateStatusById({
-        id: row.id,
-        status: e
-      })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/platform/queueUp.vue b/admin/src/views/platform/queueUp.vue
deleted file mode 100644
index eb4b0b1..0000000
--- a/admin/src/views/platform/queueUp.vue
+++ /dev/null
@@ -1,323 +0,0 @@
-<template>
-  <div class="main_app">
-    <div class="mb20 main_header">
-      <div class="platgroup_tabs">
-        <div class="tab" :class="{ active: activeGroup.id === item.id }" @click="platgroupClick(item)"
-          v-for="(item, i) in PlatGroupList" :key="i">
-          {{ item.name }}
-        </div>
-      </div>
-    </div>
-    <div class="df_sb">
-      <QueryForm v-model="filters" :query-form-config="queryQueueUpConfig" @handleQuery="getList(1)" @clear="clear">
-      </QueryForm>
-      <el-button @click="openSign" type="primary" style="align-self: flex-start;">杞﹁締绛惧埌</el-button>
-    </div>
-    <div class="main_content">
-      <div class="static_wrap">
-        <span>绛夊緟锛�<span class="num">{{ staticParam.waitNum }}</span></span>
-        <span class="mr30">{{ }}</span>
-        <span>鎸傝捣锛�<span class="red">{{ staticParam.exceptionNum }}</span></span>
-        <span></span>
-      </div>
-    </div>
-    <el-table class="mb20" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all>
-      <el-table-column type="index" label="搴忓彿" width="80" />
-      <el-table-column label="杞︾墝鍙�" width="130">
-        <template slot-scope="{ row }">
-          <div class="plate_id">
-            <span>{{ row.carCodeFront.slice(0, 1) }}</span>
-            <span>{{ row.carCodeFront.slice(1, 2) }}</span>
-            <span>路</span>
-            <span>{{ row.carCodeFront.slice(2) }}</span>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column prop="carrierName" label="杩愯緭鍏徃" min-width="120">
-        <template v-slot="scope">
-          <span>{{ scope.row.carrierName || '-' }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="contractNum" label="杩愯緭鍗曞彿/鍚堝悓鍙�" min-width="120">
-        <template v-slot="scope">
-          <span>{{ scope.row.billCode || scope.row.contractNum || '-' }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="totalNum" label="鎬昏繍杈撻噺(涓囨敮)" min-width="110">
-        <template v-slot="scope">
-          <span>{{ scope.row.totalNum || '-' }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="椹鹃┒鍛�" min-width="130">
-        <template slot-scope="{ row }">
-          <span class="mr10">{{ row.driverName }}</span>
-          <span>{{ row.drivierPhone }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="signDate" label="绛惧埌鏃堕棿" min-width="150" />
-      <el-table-column label="鎿嶄綔" align="center" width="100" fixed="right">
-        <template slot-scope="{ row }">
-          <el-button v-if="row.billCode" type="text" @click="handleDetail(row)"
-            v-permissions="['business:company:update']">杩愬崟璇︽儏</el-button>
-          <el-button v-else type="text" @click="subDetail(row)">棰勭害璇︽儏</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <!-- <el-table v-else class="mb20" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all>
-      <el-table-column type="index" label="搴忓彿" width="80" />
-      <el-table-column label="杞︾墝鍙�" width="130">
-        <template slot-scope="{ row }">
-          <div class="plate_id">
-            <span>{{ row.carCodeFront.slice(0, 1) }}</span>
-            <span>{{ row.carCodeFront.slice(1, 2) }}</span>
-            <span>路</span>
-            <span>{{ row.carCodeFront.slice(2) }}</span>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column prop="carrierName" label="杩愯緭鍏徃" min-width="120" />
-      <el-table-column prop="totalNum" label="鎬昏繍杈撻噺(涓囨敮)" min-width="110" />
-      <el-table-column label="椹鹃┒鍛�" min-width="130">
-        <template slot-scope="{ row }">
-          <span class="mr10">{{ row.driverName }}</span>
-          <span>{{ row.drivierPhone }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column prop="signDate" label="绛惧埌鏃堕棿" min-width="150" />
-      <el-table-column label="鎿嶄綔" align="center" width="100" fixed="right">
-        <template slot-scope="{ row }">
-          <el-button v-if="row.billCode" type="text" @click="handleDetail(row)"
-            v-permissions="['business:company:update']">杩愬崟璇︽儏</el-button>
-          <el-button v-else type="text" @click="subDetail(row)">棰勭害璇︽儏</el-button>
-        </template>
-      </el-table-column>
-    </el-table> -->
-    <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination" />
-
-    <!--  -->
-    <PlatformSign ref="PlatformSignRef" v-if="isPlatformSign" @success="getPlatGroupList"
-      @close="isPlatformSign = false" />
-    <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" />
-    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import {
-  getPlatformGroupList,
-  platformLineUpPage,
-  getPlatformGroupWork
-} from '@/api'
-import { queryQueueUpConfig } from './config'
-import WaybillDetail from './components/WaybillDetail.vue'
-import DriverDetail from "@/views/task/driverDetail.vue"
-import PlatformSign from './components/PlatformSign.vue'
-export default {
-  components: {
-    Pagination,
-    QueryForm,
-    PlatformSign,
-    WaybillDetail,
-    DriverDetail
-  },
-  data() {
-    return {
-      filters: {},
-      activeGroup: {
-        type: 2
-      },
-      PlatGroupList: [],
-      staticParam: {},
-      dataList: [],
-      loading: false,
-      isShowDriver: false,
-      isPlatformSign: false,
-      pagination: {
-        pageSize: 10,
-        page: 1,
-        total: 0,
-      },
-      queryQueueUpConfig,
-      isShowDetail: false, // 杩愬崟璇︽儏
-      detail: {}
-    }
-  },
-  created() {
-    this.getPlatGroupList()
-  },
-  methods: {
-    openSign() {
-      this.isPlatformSign = true
-      this.$nextTick(() => {
-        this.$refs.PlatformSignRef.isShowModal = true
-        this.$refs.PlatformSignRef.activePlat = this.activeGroup
-        this.$refs.PlatformSignRef.carCodeFront = ''
-        this.$refs.PlatformSignRef.pagination = {
-          total: 0,
-          pageSize: 10,
-          page: 1
-        }
-        this.$refs.PlatformSignRef.getList()
-      })
-    },
-    getPlatGroupList() {
-      getPlatformGroupList({
-        queryData: 1,
-        queryType: 1
-      }).then(res => {
-        this.PlatGroupList = res || []
-        if (res && res.length > 0) {
-          if (this.activeGroup && this.activeGroup.id) {
-            this.activeGroup = res.find(item => item.id === this.activeGroup.id)
-          } else {
-            this.activeGroup = res[0]
-          }
-
-          this.getPlatformGroupWork()
-          this.getList()
-        }
-      })
-    },
-    getList() {
-      const { activeGroup, pagination, filters } = this
-      this.loading = true
-      platformLineUpPage({
-        model: { platformGroupId: activeGroup.id, ...filters, callType: 3 },
-        capacity: pagination.pageSize,
-        page: pagination.page,
-      }).then(res => {
-        this.loading = false
-        this.dataList = res.records || []
-        this.pagination.total = res.total || 0
-      }, () => {
-        this.loading = false
-      })
-    },
-    getPlatformGroupWork() {
-      const { activeGroup } = this
-      getPlatformGroupWork(activeGroup.id).then(res => {
-        this.staticParam = res || {}
-      })
-    },
-    handleSizeChange(e) {
-      this.pagination.pageSize = e
-      this.getList()
-    },
-    handlePageChange(e) {
-      this.pagination.page = e
-      this.getList()
-    },
-    platgroupClick(item) {
-      this.activeGroup = { ...item }
-      this.pagination.page = 1
-      this.filters = {}
-      this.getPlatformGroupWork()
-      this.getList()
-    },
-    clear() {
-      this.pagination.page = 1
-      this.filters = {}
-      this.getList()
-    },
-    subDetail(row) {
-      this.isShowDriver = true
-      this.$nextTick(() => {
-        this.$refs.DriverDetailRef.id = row.bookId
-        this.$refs.DriverDetailRef.type = row.objType
-        this.$refs.DriverDetailRef.getDetail()
-        this.$refs.DriverDetailRef.isShowModal = true
-      })
-    },
-    handleDetail(row) {
-      this.isShowDetail = true
-      this.$nextTick(() => {
-        this.$refs.WaybillDetailRef.isShowModal = true
-        this.$refs.WaybillDetailRef.id = row.id
-        this.$refs.WaybillDetailRef.getDetail()
-      })
-    },
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/variables.scss";
-
-.main_content {
-  background-color: #fff;
-  position: relative;
-  z-index: 999;
-  top: -10;
-  margin: -20px;
-  padding: 0 20px;
-
-  .static_wrap {
-    height: 50px;
-    line-height: 50px;
-    color: #666666;
-    font-size: 15px;
-    padding: 0 20px;
-    background: #F4FAFB;
-    border-radius: 2px 2px 0px 0px;
-    margin-bottom: 36px;
-
-    .num {
-      color: #111111;
-    }
-  }
-}
-
-.plate_id {
-  display: flex;
-  width: 120px;
-  font-weight: 600;
-  height: 30px;
-  line-height: 30px;
-  font-size: 16px;
-  color: #111111;
-  border-radius: 4px;
-  border: 1px solid #dfdede;
-
-  span {
-    &:nth-of-type(1) {
-      background: $primary-color;
-      padding: 0 6px;
-      color: #fff
-    }
-
-    &:nth-of-type(2) {
-      padding-left: 2px;
-    }
-
-    &:nth-of-type(4) {
-      padding-right: 3px;
-    }
-  }
-}
-
-
-.main_header {
-  .platgroup_tabs {
-    flex: 1;
-    display: flex;
-    border-bottom: 1px solid #dfe2e8;
-
-    .tab {
-      color: #666666;
-      margin-right: 40px;
-      cursor: pointer;
-      padding-bottom: 14px;
-      border-bottom: 2px solid #fff;
-    }
-
-    .active {
-      font-weight: 500;
-      font-size: 15px;
-      color: #222222;
-      border-bottom: 2px solid $primary-color;
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/platform/set/application.vue b/admin/src/views/platform/set/application.vue
deleted file mode 100644
index da1562e..0000000
--- a/admin/src/views/platform/set/application.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-<template>
-    <div class="main_app">
-    <el-form
-      :model="form"
-      :rules="rules"
-      label-suffix="锛�"
-      ref="ruleForm"
-      label-width="140px"
-    >
-      <!-- <el-form-item label="甯傚叕鍙稿鎵逛汉">
-        <el-select v-model="param.aa" class="w400" placeholder="璇烽�夋嫨锛屽閫�">
-          <el-option></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="甯傚叕鍙告棩浣滀笟閲�">
-        <el-input v-model="param.bbb" class="w400" placeholder="璇疯緭鍏�"></el-input>
-        <span>涓囨敮</span>
-      </el-form-item>-->
-      <el-form-item label="鐗╂祦杞﹂绾︽寚鍗�" required label-width="180px">
-        <RichEditor  :richData="form.bookTips" :styleEditor="styleEditor" @getWangedditor="getWangedditor" :readonly="false"/>
-      </el-form-item>
-      <el-form-item label="鐗╂祦杞﹀洯鍖哄瑙堝浘" required  label-width="180px">
-        <RichEditor  :richData="form.tipsImg" :styleEditor="styleEditor" @getWangedditor="getWangedditor1" :readonly="false"/>
-      </el-form-item>
-      <el-form-item>
-          <el-button type="primary" @click="submit">淇濆瓨閰嶇疆椤�</el-button>
-      </el-form-item>
-
-    </el-form>
-  </div>
-</template>
-
-<script>
-import RichEditor from '@/components/common/RichEditor'
-import { getPlatformConfigDTO, updatePlatformConfig } from '@/api/system/common'
-export default {
-  components: {
-    RichEditor: RichEditor
-  },
-  data () {
-    return {
-      styleEditor:'border: 1px solid #ccc;display: inline-block;',
-      form: {
-        bookTips: '',
-        tipsImg: ''
-      },
-      rules: {}
-    }
-  },
-  created () {
-    this.getData()
-  },
-  methods: {
-    getWangedditor(val){
-      this.form.bookTips =val
-    },
-    getWangedditor1(val){
-      this.form.tipsImg =val
-    },
-    getData: function () {
-      getPlatformConfigDTO({})
-        .then(res => {
-          this.form.tipsImg = res.tipsImg
-          this.form.bookTips = res.bookTips
-        })
-    },
-    submit () {
-      updatePlatformConfig({
-        tipsImg: this.form.tipsImg,
-        bookTips: this.form.bookTips
-      }).then(res => {
-        this.$message.success('淇濆瓨鎴愬姛')
-        this.getData()
-      })
-    }
-
-  }
-}
-</script>
-
-<style>
-</style>
diff --git a/admin/src/views/platform/set/group.vue b/admin/src/views/platform/set/group.vue
deleted file mode 100644
index cd46a7d..0000000
--- a/admin/src/views/platform/set/group.vue
+++ /dev/null
@@ -1,169 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm
-      v-model="filters"
-      :query-form-config="queryFormConfig"
-      @handleQuery="getList(1)"
-      @clear="clear"
-    />
-    <div class="mb20 mt20">
-      <el-button type="primary" @click="handleEdit()">鏂板</el-button>
-    </div>
-    <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column
-        prop="name"
-        label="鏈堝彴缁�"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鍏ュ洯浜嬬敱"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎿嶄綔"
-        min-width="80"
-        show-overflow-tooltip
-      >
-        <template v-slot="scope">
-          <el-button type="text" @click="handleEdit(scope.row)">缂栬緫</el-button>
-          <el-button type="text" class="red" @click="handleDel(scope.row)"
-            >鍒犻櫎</el-button
-          >
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      @size-change="handleSizeChange"
-      @current-change="getList"
-      :pagination="pagination"
-    />
-    <GlobalWindow
-      :title="param.id ? '缂栬緫鏈堝彴' : '鏂板鏈堝彴'"
-      :visible.sync="isShowEdit"
-      width="800px"
-      :confirm-working="subLoading"
-      @confirm="handleSub"
-    >
-      <el-form
-        :model="param"
-        :rules="rules"
-        label-suffix="锛�"
-        ref="ruleForm"
-        label-width="120px"
-      >
-        <el-form-item label="鏈堝彴缁勫悕绉�">
-          <el-input v-model="param.aaa" class="w300" disabled></el-input>
-        </el-form-item>
-        <el-form-item label="鍏宠仈鍏ュ洯浜嬬敱">
-          <el-checkbox-group v-model="param.checkList">
-            <el-checkbox label="0">瀹夋嘲瑁呰揣</el-checkbox>
-            <el-checkbox label="0">瀹夋嘲鍗歌揣</el-checkbox>
-            <el-checkbox label="0">甯傚叕鍙稿嵏璐�</el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-        <el-form-item label="鍏宠仈鏈堝彴">
-          <el-transfer
-            filterable
-            filter-placeholder="鎼滅储"
-            :titles="['寰呮坊鍔犳湀鍙�', '宸叉坊鍔犳湀鍙�']"
-            v-model="param.sel"
-            :data="data"
-            class="transfer"
-
-          >
-          </el-transfer>
-        </el-form-item>
-      </el-form>
-    </GlobalWindow>
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import GlobalWindow from '@/components/common/GlobalWindow'
-export default {
-  components: {
-    Pagination,
-    QueryForm,
-    GlobalWindow
-  },
-  data () {
-    return {
-      filters: {},
-      loading: false,
-      subLoading: false,
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'name',
-            type: 'input',
-            label: '鏈堝彴缁�'
-          }
-        ],
-        online: true
-      },
-      pagination: {
-        capacity: 10,
-        page: 1
-      },
-      list: [{}],
-      total: 0,
-      isShowEdit: false,
-      param: {
-        sel: []
-      },
-      rules: {},
-
-      data: [
-        { key: '1', label: '涓婃捣' },
-        { key: '2', label: '涓婃捣' },
-        { key: '3', label: '涓婃捣' },
-        { key: '4', label: '涓婃捣' },
-        { key: '5', label: '涓婃捣' }
-      ]
-    }
-  },
-  methods: {
-    handleSub () {
-      this.isShowEdit = false
-    },
-    getList (page) { },
-    clear () { },
-    handleEdit (row) {
-      this.isShowEdit = true
-    },
-    handleDel () { },
-    handleSizeChange (capacity) {
-      this.pagination.capacity = capacity
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.transfer {
-  height: 600px;
-  width: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-
-  ::v-deep .el-transfer-panel {
-    flex: 1;
-    height: 100%;
-  }
-
-  ::v-deep .el-transfer-panel__body {
-    height: 500px;
-  }
-
-  ::v-deep .el-transfer-panel__list.is-filterable {
-    height: 480px;
-  }
-}
-</style>
diff --git a/admin/src/views/platform/set/index.vue b/admin/src/views/platform/set/index.vue
deleted file mode 100644
index 824cbcf..0000000
--- a/admin/src/views/platform/set/index.vue
+++ /dev/null
@@ -1,250 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm
-      v-model="filters"
-      :query-form-config="queryFormConfig"
-      @handleQuery="getList(1)"
-      @clear="clear"
-    />
-    <el-table v-loading="loading" :data="dataList" stripe>
-      <el-table-column
-        prop="name"
-        label="鏈堝彴鍚嶇О"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="宸ヤ綔鏃堕棿"
-        min-width="100"
-        show-overflow-tooltip
-      >
-        <template v-slot="scope">
-          <span>{{ scope.row.startTime }}-{{ scope.row.endTime }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="workingNum"
-        label="鍚屾椂浣滀笟杞﹁締鏁�"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="alermTime"
-        label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓)"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="wariCallTime"
-        label="鍙彿绛夊緟鏃堕棿(鍒嗛挓)"
-        min-width="80"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop=""
-        label="鏈堝彴浣滀笟鏁堢巼(涓囨敮/灏忔椂)"
-        min-width="120"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鍋滅敤/鍚敤"
-        min-width="80"
-        show-overflow-tooltip
-      >
-        <template v-slot="scope">
-          <el-switch
-            v-model="scope.row.status"
-            active-value="0"
-            inactive-value="1"
-            @change="e => changeStatus(scope.row)"
-          >
-          </el-switch>
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="name"
-        label="鎿嶄綔"
-        min-width="80"
-        show-overflow-tooltip
-      >
-        <template v-slot="scope">
-          <el-button type="text" @click="handleEdit(scope.row)">缂栬緫</el-button>
-          <el-button type="text" class="red" @click="handleDel(scope.row)"
-            >鍒犻櫎</el-button
-          >
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      @size-change="handleSizeChange"
-      @current-change="getList"
-      :pagination="pagination"
-    />
-    <GlobalWindow
-      :title="param.id ? '缂栬緫鏈堝彴閰嶇疆' : '鏂板鏈堝彴閰嶇疆'"
-      :visible.sync="isShowEdit"
-      width="600px"
-      :confirm-working="subLoading"
-      @confirm="handleSub"
-    >
-      <el-form
-        :model="param"
-        :rules="rules"
-        label-suffix="锛�"
-        ref="ruleForm"
-        label-width="140px"
-      >
-        <el-form-item label="鏈堝彴鍚嶇О">
-          <el-input v-model="param.name" class="w300" disabled></el-input>
-        </el-form-item>
-        <el-form-item label="宸ヤ綔鏃堕棿">
-          <el-time-picker
-            class="w100"
-            v-model="param.startTime"
-            range-separator="鑷�"
-            value-format="HH:mm"
-            format="HH:mm"
-          />
-          鑷�
-          <el-time-picker
-            class="w100"
-            v-model="param.endTime"
-            range-separator="鑷�"
-            value-format="HH:mm"
-            format="HH:mm"
-          />
-        </el-form-item>
-        <el-form-item label="鍚屾椂浣滀笟杞﹁締鏁�">
-          <el-input v-model="param.workingNum" class="w300"></el-input>
-          <span class="ml10">涓�</span>
-        </el-form-item>
-        <el-form-item label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿">
-          <el-input
-            v-model="param.alermTime"
-            placeholder="璇疯緭鍏�"
-            class="w300"
-          ></el-input>
-          <span class="ml10">鍒嗛挓</span>
-        </el-form-item>
-        <el-form-item label="鍙彿绛夊緟鏃堕棿" prop="name">
-          <el-input
-            v-model="param.wariCallTime"
-            placeholder="璇疯緭鍏�"
-            class="w300"
-          ></el-input>
-          <span class="ml10">鍒嗛挓</span>
-        </el-form-item>
-        <el-form-item label="鏈堝彴浣滀笟鏁堢巼" placeholder="璇疯緭鍏�" prop="name">
-          <el-input
-            v-model="param.ccc"
-            class="w300"
-            placeholder="璇疯緭鍏�"
-            oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 7)"
-          />
-          <span class="ml10">涓囨敮/灏忔椂</span>
-        </el-form-item>
-         <el-form-item label="浣滀笟瓒呮椂鎶ヨ鏃堕棿">
-          <el-input
-            v-model="param.aaa"
-            placeholder="璇疯緭鍏�"
-            class="w300"
-          ></el-input>
-          <span class="ml10">鍒嗛挓</span>
-        </el-form-item>
-      </el-form>
-    </GlobalWindow>
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import GlobalWindow from '@/components/common/GlobalWindow'
-// import { getPlatform, PlatformEdit, PlatformDel } from '@/api'
-import { PlatformEdit, PlatformDel } from '@/api'
-export default {
-  components: {
-    Pagination,
-    QueryForm,
-    GlobalWindow
-  },
-  data () {
-    return {
-      filters: {},
-      loading: false,
-      subLoading: false,
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'name',
-            type: 'input',
-            label: '鏈堝彴鍚嶇О'
-          }
-        ],
-        online: true
-      },
-      pagination: {
-        capacity: 10,
-        page: 1
-      },
-      dataList: [{}],
-      total: 0,
-      isShowEdit: false,
-      param: {},
-      rules: {}
-    }
-  },
-  created () {
-    this.getList()
-  },
-  methods: {
-    getList (page) {
-      const { filters, pagination } = this
-      pagination.page = page || pagination.page
-      // getPlatform({
-      //   model: { ...filters },
-      //   ...pagination
-      // }).then(res => {
-      //   this.dataList = res.records
-      // })
-    },
-    handleDel (item) {
-      this.$confirm('纭畾鍒犻櫎璇ユ湀鍙板悧, 鏄惁缁х画?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(res => {
-        PlatformDel(item.id).then(() => {
-          this.getList()
-          this.$tip.success('鍒犻櫎鎴愬姛')
-        })
-      })
-    },
-    changeStatus (item) {
-      PlatformEdit({
-        ...item,
-        status: item.stauts == 1 ? 0 : 1
-      }).then(res => {
-        this.$tip.success('鏇存柊鎴愬姛')
-        this.getList()
-      })
-    },
-    clear () {
-      this.filters = {}
-      this.getList(0)
-    },
-    handleEdit (row) {
-      this.isShowEdit = true
-      this.param = { ...row }
-    },
-    handleSizeChange (capacity) {
-      this.pagination.capacity = capacity
-    }
-  }
-}
-</script>
-
-<style>
-</style>
diff --git a/admin/src/views/platform/water.vue b/admin/src/views/platform/water.vue
deleted file mode 100644
index fd99d89..0000000
--- a/admin/src/views/platform/water.vue
+++ /dev/null
@@ -1,117 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:platformwatergas:query']">
-    <SearchFormCollapse slot="search-form" :need-more="false">
-      <el-form ref="searchForm" :model="searchForm"  label-width="100px" inline>
-          <el-form-item title="璇烽�夋嫨骞存湀鏃堕棿" label=""   >
-            <el-date-picker
-                @change="search"
-                clearable
-                v-model="searchForm.timeInfo"
-                format="yyyy-MM"
-                placeholder="璇烽�夋嫨骞存湀鏃堕棿"
-                value-format="yyyy-MM-dd HH:mm:ss"
-                type="month"
-            />
-          </el-form-item>
-        <section>
-          <el-button type="primary" @click="search">鎼滅储</el-button>
-          <el-button @click="reset">閲嶇疆</el-button>
-        </section>
-      </el-form>
-    </SearchFormCollapse>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:platformwatergas:create','business:platformwatergas:delete','business:notice:exportExcel']">
-        <li><el-button type="primary" @click="$refs.OperaPlatformWaterWindow.open('鏂板缓鐢ㄦ按')" icon="el-icon-plus" v-permissions="['business:platformwatergas:create']">鏂板缓</el-button></li>
-        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">鍒犻櫎</el-button></li>
-        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:notice:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
-      </ul>
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-        @selection-change="handleSelectionChange"
-      >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="timeInfo" label="浣跨敤鏈堜唤" fixed min-width="100px">
-          <template slot-scope="{row}">
-              {{(row.timeInfo || row.timeInfo.length >7 )?row.timeInfo.substr(0,7):'-'}}
-          </template>
-        </el-table-column>
-        <el-table-column prop="num" label="鐢ㄦ按閲忥紙鍚級" fixed min-width="150px"></el-table-column>
-        <el-table-column prop="content" label="璇存槑" min-width="120px"></el-table-column>
-        <el-table-column prop="editDate" label="鏈�杩戞搷浣滄椂闂�" min-width="140px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:platformwatergas:update', 'business:platformwatergas:delete'])"
-          label="鎿嶄綔"
-          align="center"
-          min-width="150"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.OperaPlatformWaterWindow.open('缂栬緫鐢ㄦ按', row)" icon="el-icon-edit" v-permissions="['business:platformwatergas:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      >
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaPlatformWaterWindow ref="OperaPlatformWaterWindow" @success="handlePageChange"/>
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import SearchFormCollapse from '@/components/common/SearchFormCollapse'
-import Pagination from '@/components/common/Pagination'
-import OperaPlatformWaterWindow from '@/components/business/OperaPlatformWaterWindow'
-import { allList } from '@/api/platform/platformGroup'
-export default {
-  name: 'Platform',
-  extends: BaseTable,
-  components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformWaterWindow },
-  data () {
-    return {
-      groupList: [],
-      // 鎼滅储
-      working: false,
-      working1: false,
-      searchForm: {
-        timeInfo: '',
-        type: 0
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '鐢ㄦ按淇℃伅琛�',
-      api: '/platform/platformWaterGas',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.loadGroupList()
-  },
-  methods: {
-    loadGroupList () {
-      allList({})
-        .then(res => {
-          this.groupList = res || []
-        })
-    },
-    changeStatus (e, row) {
-      this.api.updateStatusById({
-        id: row.id,
-        status: e
-      })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/project/buildingList.vue b/admin/src/views/project/buildingList.vue
new file mode 100644
index 0000000..82b1bcc
--- /dev/null
+++ b/admin/src/views/project/buildingList.vue
@@ -0,0 +1,169 @@
+<template>
+  <TableLayout :permissions="['business:ywbuilding:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="涓婚敭" prop="id">
+        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="searchForm.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍥炬爣" prop="imgurl">
+        <el-input v-model="searchForm.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="缂栧彿" prop="code">
+        <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ョ紪鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍦板潃" prop="addr">
+        <el-input v-model="searchForm.addr" placeholder="璇疯緭鍏ュ湴鍧�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="闈㈢Н锛堝钩鏂圭背锛�" prop="area">
+        <el-input v-model="searchForm.area" placeholder="璇疯緭鍏ラ潰绉紙骞虫柟绫筹級" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="浜ф潈闈㈢Н锛堝钩鏂圭背锛�" prop="cqArea">
+        <el-input v-model="searchForm.cqArea" placeholder="璇疯緭鍏ヤ骇鏉冮潰绉紙骞虫柟绫筹級" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍙闈㈢Н锛堝钩鏂圭背锛�" prop="rentArea">
+        <el-input v-model="searchForm.rentArea" placeholder="璇疯緭鍏ュ彲绉熼潰绉紙骞虫柟绫筹級" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍦颁笂灞傛暟" prop="onFloor">
+        <el-input v-model="searchForm.onFloor" placeholder="璇疯緭鍏ュ湴涓婂眰鏁�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍦颁笅灞傛暟" prop="underFloor">
+        <el-input v-model="searchForm.underFloor" placeholder="璇疯緭鍏ュ湴涓嬪眰鏁�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" prop="projectId">
+        <el-input v-model="searchForm.projectId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_project)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywbuilding:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:ywbuilding:create', 'business:ywbuilding:delete']">
+        <li><el-button type="primary" @click="$refs.operaYwBuildingWindow.open('鏂板缓杩愮淮妤煎畤淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:ywbuilding:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywbuilding:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
+        <el-table-column prop="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="imgurl" label="鍥炬爣" min-width="100px"></el-table-column>
+        <el-table-column prop="code" label="缂栧彿" min-width="100px"></el-table-column>
+        <el-table-column prop="addr" label="鍦板潃" min-width="100px"></el-table-column>
+        <el-table-column prop="area" label="闈㈢Н锛堝钩鏂圭背锛�" min-width="100px"></el-table-column>
+        <el-table-column prop="cqArea" label="浜ф潈闈㈢Н锛堝钩鏂圭背锛�" min-width="100px"></el-table-column>
+        <el-table-column prop="rentArea" label="鍙闈㈢Н锛堝钩鏂圭背锛�" min-width="100px"></el-table-column>
+        <el-table-column prop="onFloor" label="鍦颁笂灞傛暟" min-width="100px"></el-table-column>
+        <el-table-column prop="underFloor" label="鍦颁笅灞傛暟" min-width="100px"></el-table-column>
+        <el-table-column prop="projectId" label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:ywbuilding:update', 'business:ywbuilding:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaYwBuildingWindow.open('缂栬緫杩愮淮妤煎畤淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:ywbuilding:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywbuilding:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaYwBuildingWindow ref="operaYwBuildingWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaYwBuildingWindow from './components/OperaYwBuildingWindow'
+export default {
+  name: 'YwBuilding',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaYwBuildingWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        imgurl: '',
+        code: '',
+        addr: '',
+        area: '',
+        cqArea: '',
+        rentArea: '',
+        onFloor: '',
+        underFloor: '',
+        projectId: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '杩愮淮妤煎畤淇℃伅琛�',
+      api: '/project/ywBuilding',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/project/components/OperaYwBuildingWindow.vue b/admin/src/views/project/components/OperaYwBuildingWindow.vue
new file mode 100644
index 0000000..e82f290
--- /dev/null
+++ b/admin/src/views/project/components/OperaYwBuildingWindow.vue
@@ -0,0 +1,110 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍥炬爣" prop="imgurl">
+        <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" v-trim/>
+      </el-form-item>
+      <el-form-item label="缂栧彿" prop="code">
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ョ紪鍙�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍦板潃" prop="addr">
+        <el-input v-model="form.addr" placeholder="璇疯緭鍏ュ湴鍧�" v-trim/>
+      </el-form-item>
+      <el-form-item label="闈㈢Н锛堝钩鏂圭背锛�" prop="area">
+        <el-input v-model="form.area" placeholder="璇疯緭鍏ラ潰绉紙骞虫柟绫筹級" v-trim/>
+      </el-form-item>
+      <el-form-item label="浜ф潈闈㈢Н锛堝钩鏂圭背锛�" prop="cqArea">
+        <el-input v-model="form.cqArea" placeholder="璇疯緭鍏ヤ骇鏉冮潰绉紙骞虫柟绫筹級" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍙闈㈢Н锛堝钩鏂圭背锛�" prop="rentArea">
+        <el-input v-model="form.rentArea" placeholder="璇疯緭鍏ュ彲绉熼潰绉紙骞虫柟绫筹級" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍦颁笂灞傛暟" prop="onFloor">
+        <el-input v-model="form.onFloor" placeholder="璇疯緭鍏ュ湴涓婂眰鏁�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍦颁笅灞傛暟" prop="underFloor">
+        <el-input v-model="form.underFloor" placeholder="璇疯緭鍏ュ湴涓嬪眰鏁�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" prop="projectId">
+        <el-input v-model="form.projectId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_project)" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaYwBuildingWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        imgurl: '',
+        code: '',
+        addr: '',
+        area: '',
+        cqArea: '',
+        rentArea: '',
+        onFloor: '',
+        underFloor: '',
+        projectId: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/project/ywBuilding',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/admin/src/views/project/components/OperaYwProjectWindow.vue b/admin/src/views/project/components/OperaYwProjectWindow.vue
new file mode 100644
index 0000000..3523263
--- /dev/null
+++ b/admin/src/views/project/components/OperaYwProjectWindow.vue
@@ -0,0 +1,63 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+     
+      <el-form-item label="椤圭洰鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵�灞炲湴鍧�" prop="addr">
+        <el-input v-model="form.addr" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"/>
+      </el-form-item>
+      <el-form-item label="璇︾粏鍦板潃" prop="addr">
+        <el-input v-model="form.addr" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"/>
+      </el-form-item>
+      <el-form-item label="椤圭洰绠�浠�" prop="desc">
+        <el-input type="textarea" :rows="4" v-model="form.desc" placeholder="璇疯緭鍏�"/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaYwProjectWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        imgurl: '',
+        areaId: '',
+        addr: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/project/ywProject',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/admin/src/views/project/components/OperaYwRoomWindow.vue b/admin/src/views/project/components/OperaYwRoomWindow.vue
new file mode 100644
index 0000000..5fab7dc
--- /dev/null
+++ b/admin/src/views/project/components/OperaYwRoomWindow.vue
@@ -0,0 +1,114 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍥炬爣" prop="imgurl">
+        <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎴块棿缂栧彿" prop="code">
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ユ埧闂寸紪鍙�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎴垮彿" prop="roomNum">
+        <el-input v-model="form.roomNum" placeholder="璇疯緭鍏ユ埧鍙�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏄惁鎷涘晢 0鍚� 1鏄�" prop="isInvestment">
+        <el-input v-model="form.isInvestment" placeholder="璇疯緭鍏ユ槸鍚︽嫑鍟� 0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="寤虹瓚闈㈢Н锛堝钩鏂圭背锛�" prop="area">
+        <el-input v-model="form.area" placeholder="璇疯緭鍏ュ缓绛戦潰绉紙骞虫柟绫筹級" v-trim/>
+      </el-form-item>
+      <el-form-item label="璁¤垂闈㈢Н锛堝钩鏂圭背锛�" prop="feeArea">
+        <el-input v-model="form.feeArea" placeholder="璇疯緭鍏ヨ璐归潰绉紙骞虫柟绫筹級" v-trim/>
+      </el-form-item>
+      <el-form-item label="璁$闈㈢Н锛堝钩鏂圭背锛�" prop="rentArea">
+        <el-input v-model="form.rentArea" placeholder="璇疯緭鍏ヨ绉熼潰绉紙骞虫柟绫筹級" v-trim/>
+      </el-form-item>
+      <el-form-item label="妤煎眰鏁�" prop="floor">
+        <el-input v-model="form.floor" placeholder="璇疯緭鍏ユゼ灞傛暟" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" prop="projectId">
+        <el-input v-model="form.projectId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_project)" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" prop="buildingId">
+        <el-input v-model="form.buildingId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_building)" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaYwRoomWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        imgurl: '',
+        code: '',
+        roomNum: '',
+        isInvestment: '',
+        area: '',
+        feeArea: '',
+        rentArea: '',
+        floor: '',
+        projectId: '',
+        buildingId: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/project/ywRoom',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/project/components/buildingDetail.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/project/components/buildingDetail.vue
diff --git a/admin/src/views/project/housingList.vue b/admin/src/views/project/housingList.vue
new file mode 100644
index 0000000..6aadddd
--- /dev/null
+++ b/admin/src/views/project/housingList.vue
@@ -0,0 +1,112 @@
+<template>
+  <TableLayout :permissions="['business:ywroom:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>  
+      <el-form-item label="鎴垮彿" prop="roomNum">
+        <el-input v-model="searchForm.roomNum" placeholder="璇疯緭鍏ユ埧鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" prop="projectId">
+        <el-input v-model="searchForm.projectId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_project)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" prop="buildingId">
+        <el-input v-model="searchForm.buildingId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_building)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywroom:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:ywroom:create', 'business:ywroom:delete']">
+        <li><el-button type="primary" @click="$refs.operaYwRoomWindow.open('鏂板缓杩愮淮鎴挎簮淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:ywroom:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywroom:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="roomNum" label="鎴垮彿" min-width="100px"></el-table-column>
+        <el-table-column prop="isInvestment" label="鏄惁鎷涘晢 0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="area" label="寤虹瓚闈㈢Н锛堝钩鏂圭背锛�" min-width="100px"></el-table-column>
+        <el-table-column prop="feeArea" label="璁¤垂闈㈢Н锛堝钩鏂圭背锛�" min-width="100px"></el-table-column>
+        <el-table-column prop="rentArea" label="璁$闈㈢Н锛堝钩鏂圭背锛�" min-width="100px"></el-table-column>
+        <el-table-column prop="floor" label="妤煎眰鏁�" min-width="100px"></el-table-column>
+        <el-table-column prop="projectId" label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" min-width="100px"></el-table-column>
+        <el-table-column prop="buildingId" label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:ywroom:update', 'business:ywroom:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaYwRoomWindow.open('缂栬緫杩愮淮鎴挎簮淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:ywroom:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywroom:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaYwRoomWindow ref="operaYwRoomWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaYwRoomWindow from './components/OperaYwRoomWindow'
+export default {
+  name: 'YwRoom',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaYwRoomWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        imgurl: '',
+        code: '',
+        roomNum: '',
+        isInvestment: '',
+        area: '',
+        feeArea: '',
+        rentArea: '',
+        floor: '',
+        projectId: '',
+        buildingId: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '杩愮淮鎴挎簮淇℃伅琛�',
+      api: '/project/ywRoom',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/project/projectList.vue b/admin/src/views/project/projectList.vue
new file mode 100644
index 0000000..df5fee2
--- /dev/null
+++ b/admin/src/views/project/projectList.vue
@@ -0,0 +1,95 @@
+<template>
+  <TableLayout :permissions="['business:ywproject:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      
+      <el-form-item label="椤圭洰鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ラ」鐩悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywproject:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:ywproject:create', 'business:ywproject:delete']">
+        <li><el-button type="primary" @click="$refs.operaYwProjectWindow.open('鏂板缓椤圭洰')" icon="el-icon-plus" v-permissions="['business:ywproject:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywproject:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+      <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="name" label="椤圭洰鍚嶇О" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="绠$悊闈㈢Н(m)" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="椤圭洰鍚嶇О" min-width="100px"></el-table-column>
+
+        <el-table-column
+          v-if="containPermissions(['business:ywproject:update', 'business:ywproject:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaYwProjectWindow.open('缂栬緫椤圭洰', row)" icon="el-icon-edit" v-permissions="['business:ywproject:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywproject:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaYwProjectWindow ref="operaYwProjectWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaYwProjectWindow from './components/OperaYwProjectWindow'
+export default {
+  name: 'YwProject',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaYwProjectWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        imgurl: '',
+        areaId: '',
+        addr: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '杩愮淮椤圭洰淇℃伅琛�',
+      api: '/project/ywProject',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/stock/in.vue
similarity index 100%
rename from admin/src/views/platform/LogisticsRecord/screen.vue
rename to admin/src/views/stock/in.vue
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/stock/out.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/stock/out.vue
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/stock/query.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/stock/query.vue
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/stock/record.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/stock/record.vue
diff --git a/admin/src/views/task/dangetDetail.vue b/admin/src/views/task/dangetDetail.vue
deleted file mode 100644
index 2651ddb..0000000
--- a/admin/src/views/task/dangetDetail.vue
+++ /dev/null
@@ -1,906 +0,0 @@
-<template>
-  <GlobalWindow :title="title" :visible.sync="isShowModal" @close="close" @confirm="confirm">
-    <div class="modal_wrap">
-      <div class="modal_content">
-        <div class="header">
-          <img v-if="info.status == '3' || info.status == '6'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
-          <img v-else-if="info.status == '2' || info.status == '5'" class="head_bg" src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
-          <img v-else-if="info.status == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt="">
-          <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
-          <div class="left">
-            <div class="h1">{{ cateList[type] }}</div>
-            <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
-          </div>
-          <div class="right" :class="{ scs: info.status == '2' || info.status == '5', msg: info.status == '3' || info.status == '6' }">{{ statusMap[info.status] }}</div>
-        </div>
-        <div class="info">
-          <div class="title">闅愭偅闅忔墜鎷嶄俊鎭�</div>
-          <div class="list">
-            <div class="item">
-              <div class="label">鎻愭姤浜�</div>
-              <div class="value">
-                {{ info.memberName }} {{ info.memberPhone }}
-              </div>
-            </div>
-            <div class="item">
-              <div class="label">闅愭偅鍖哄煙</div>
-              <div class="value">{{ info.areaName }}</div>
-            </div>
-            <div class="item">
-              <div class="label">闅愭偅绫诲瀷</div>
-              <div class="value">{{ info.categoryName }}</div>
-            </div>
-            <div class="item">
-              <div class="label">闅愭偅鎻忚堪</div>
-              <div class="value">{{ info.content }}</div>
-            </div>
-            <div class="item file">
-              <div class="label">鐜板満鎯呭喌</div>
-              <div class="value">
-                <div class="file_list">
-                  <div class="file" v-for="item in info.submitFileList">
-                    <img
-                      v-if="item.type == 0"
-                      :key="item.id"
-                      :src="item.fileurlFull"
-                      mode="widthFix"
-                      class="img"
-                    />
-                    <video
-                      v-if="item.type == 1"
-                      :key="item.id"
-                      :src="item.fileurlFull"
-                      class="img"
-                      controls
-                    />
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="side">
-        <div class="side_title">瀹℃壒娴佺▼</div>
-        <div
-          class="list"
-          v-if="
-            info.approveDateVO != null && info.approveDateVO.approveList != null
-          "
-        >
-          <div
-            class="item"
-            v-for="(item, index) in info.approveDateVO.approveList"
-            :key="item.id"
-          >
-            <div
-              class="separate"
-              v-if="index < info.approveDateVO.approveList.length - 1"
-            ></div>
-            <div class="info">
-              <img
-                src="@/assets/icons/ic_tongguo.png"
-                class="iconnew"
-                v-if="item.status == 2"
-              />
-              <img
-                src="@/assets/icons/ic_dangqian.png"
-                class="iconnew"
-                v-if="item.status == 1"
-              />
-              <img
-                src="@/assets/icons/ic_jujue.png"
-                class="iconnew"
-                v-if="item.status == 3"
-              />
-              <img
-                src="@/assets/icons/ic_grey.png"
-                class="iconnew"
-                v-if="item.status == null || item.status == 0"
-              />
-              <div style="display: inline" v-if="item.approveType != 1">
-                <img
-                  v-if="item.faceImg != null && item.faceImg != ''"
-                  :src="item.faceImg"
-                  class="avatar"
-                  alt=""
-                />
-                <img
-                  v-if="item.faceImg == null || item.faceImg == ''"
-                  src="@/assets/avatar/man.png"
-                  class="avatar"
-                  alt=""
-                />
-              </div>
-              <div style="display: inline" v-if="item.approveType == 1">
-                <img
-                  v-if="item.type != 1"
-                  src="@/assets/icons/ic_duoren.png"
-                  class="avatar"
-                  alt=""
-                />
-                <img
-                  v-if="item.type == 1"
-                  src="@/assets/icons/ic_chaosong.png"
-                  class="avatar"
-                  alt=""
-                />
-              </div>
-              <div class="content">
-                <div class="line">
-                  <div class="name">{{ item.title }}</div>
-                  <div class="time">{{ item.checkDate }}</div>
-                </div>
-                <div class="line">
-                  <div class="company">
-                    {{ item.memberName }}
-                    <div
-                      style="display: inline"
-                      v-if="item.statusInfo != null && item.statusInfo != ''"
-                    >
-                      锛�<span class="status-green">{{
-                        item.statusInfo || ""
-                      }}</span
-                      >锛�
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div
-              v-if="
-                item.approveType != 1 &&
-                item.checkInfo != null &&
-                item.checkInfo != ''
-              "
-              class="remark"
-            >
-              {{ item.checkInfo || "" }}
-            </div>
-            <div v-if="item.approveType == 1" class="childList">
-              <div
-                class="m_content company"
-                v-for="item1 in item.approveList"
-                :key="item1.id"
-              >
-                <img
-                  v-if="item1.faceImg != null && item1.faceImg != ''"
-                  :src="item1.faceImg"
-                  class="avatar"
-                  alt=""
-                />
-                <img
-                  v-if="item1.faceImg == null || item1.faceImg == ''"
-                  src="@/assets/avatar/man.png"
-                  class="avatar"
-                  alt=""
-                />
-                <span> {{ item1.memberName }}</span>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <!--  -->
-    <template v-slot:footer>
-      <el-button @click="handleAppr" type="primary" class="status-red"
-        >澶勭悊</el-button
-      >
-      <el-button @click="isShowTransfer = true" type="primary" plain
-        >杞氦</el-button
-      >
-      <el-button @click="isShowBack = true" type="danger" plain>閫�鍥�</el-button>
-      <el-button @click="close">杩斿洖</el-button>
-    </template>
-    <!--  鍚屾剰/鎷掔粷 -->
-    <el-dialog
-      append-to-body
-      title="闅愭偅杞氦"
-      :visible.sync="isShowTransfer"
-      width="600px"
-    >
-      <el-form
-        :model="transferForm"
-        :rules="handleRules"
-        ref="transferForm"
-        label-width="100px"
-        class="demo-ruleForm"
-      >
-        <el-form-item label="闅愭偅杞氦浜�" prop="checkUserId">
-          <el-select
-            v-model="transferForm.checkUserId"
-            filterable
-            placeholder="璇烽�夋嫨 鍗曢��"
-          >
-            <el-option
-              v-for="item in memberList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
-            >
-            </el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowTransfer = false">鍙栨秷</el-button>
-        <el-button :loading="subLoading" type="primary" @click="onTransfer"
-          >纭畾</el-button
-        >
-      </span>
-    </el-dialog>
-    <!-- 闅愭偅 -->
-    <el-dialog
-      append-to-body
-      title="闅愭偅鏁存敼"
-      :visible.sync="isShowProblem"
-      width="600px"
-    >
-      <el-form
-        :model="handleParam"
-        :rules="handleRules"
-        ref="handleForm"
-        label-width="100px"
-      >
-        <el-form-item label="鏁存敼鏃堕棿" prop="dealTime">
-          <el-date-picker
-            class="w300"
-            value-format="yyyy-MM-dd hh:mm:ss"
-            type="datetime"
-            placeholder="閫夋嫨鏃ユ湡"
-            v-model="handleParam.dealTime"
-          />
-        </el-form-item>
-        <el-form-item label="鏁存敼鍓�" prop="dealBeforeFileList">
-          <div class="upload_wrap">
-            <el-upload
-              class="avatar-uploader"
-              :action="uploadUrl"
-              :show-file-list="false"
-              :on-error="uploadError"
-              :on-success="handleAvatarSuccess"
-              :before-upload="beforeAvatarUpload"
-            >
-              <img v-if="param.url" :src="param.url" class="avatar" />
-              <div v-else class="upload_box">
-                <el-icon class="el-icon-plus icon" />
-                <div class="text">鍥剧墖/瑙嗛</div>
-              </div>
-            </el-upload>
-            <template v-if="handleParam.dealBeforeFileList">
-              <div
-                class="img_wrap"
-                v-for="(img, i) in handleParam.dealBeforeFileList"
-                :key="i"
-              >
-                <img v-if="img.type == 0" :src="img.fileurlFull" alt="" />
-                <video
-                  v-if="img.type == 1"
-                  :src="img.fileurlFull"
-                  controls
-                  alt=""
-                />
-              </div>
-            </template>
-          </div>
-        </el-form-item>
-        <el-form-item label="鏁存敼鍚�" prop="dealAfterFileList">
-          <div class="upload_wrap">
-            <el-upload
-              class="avatar-uploader"
-              :action="uploadUrl"
-              :show-file-list="false"
-              :on-success="handleAfterSuccess"
-              :on-error="uploadError"
-              :before-upload="beforeAvatarUpload"
-            >
-              <img v-if="param.url" :src="param.url" class="avatar" />
-              <div v-else class="upload_box">
-                <el-icon class="el-icon-plus icon" />
-                <div class="text">鍥剧墖/瑙嗛</div>
-              </div>
-            </el-upload>
-            <template v-if="handleParam.dealAfterFileList">
-              <div
-                class="img_wrap"
-                v-for="(img, i) in handleParam.dealAfterFileList"
-                :key="i"
-              >
-                <img v-if="img.type == 0" :src="img.fileurlFull" alt="" />
-                <video
-                  v-if="img.type == 1"
-                  :src="img.fileurlFull"
-                  controls
-                  alt=""
-                />
-              </div>
-            </template>
-          </div>
-        </el-form-item>
-        <el-form-item label="鏁存敼璇存槑">
-          <el-input
-            type="textarea"
-            placeholder="璇峰~鍐欒鏄�"
-            :rows="4"
-            v-model="handleParam.checkInfo"
-          />
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowProblem = false">鍙栨秷</el-button>
-        <el-button type="primary" :loading="subLoading" @click="onSubAppr"
-          >纭畾</el-button
-        >
-      </span>
-    </el-dialog>
-    <el-dialog
-      append-to-body
-      title="闅愭偅閫�鍥�"
-      :visible.sync="isShowBack"
-      width="600px"
-    >
-      <el-form
-        :model="backForm"
-        :rules="handleRules"
-        ref="backForm"
-        label-width="100px"
-      >
-        <el-form-item label="鏁存敼鏃堕棿" prop="dealTime">
-          <el-date-picker
-            class="w300"
-            value-format="yyyy-MM-dd hh:mm:ss"
-            type="datetime"
-            placeholder="閫夋嫨鏃ユ湡"
-            v-model="backForm.dealTime"
-          />
-        </el-form-item>
-        <el-form-item label="鏁存敼鍓�">
-          <div class="upload_wrap">
-            <el-upload
-              class="avatar-uploader"
-              :action="uploadUrl"
-              :show-file-list="false"
-              :on-success="handleBackSuccess"
-              :on-error="uploadError"
-              :before-upload="beforeAvatarUpload"
-            >
-              <div class="upload_box">
-                <el-icon class="el-icon-plus icon" />
-                <div class="text">鍥剧墖/瑙嗛</div>
-              </div>
-            </el-upload>
-            <template v-if="backForm.dealBeforeFileList">
-              <div
-                class="img_wrap"
-                v-for="(img, i) in backForm.dealBeforeFileList"
-                :key="i"
-              >
-                <img v-if="img.type == 0" :src="img.fileurlFull" alt="" />
-                <video
-                  v-if="img.type == 1"
-                  :src="img.fileurlFull"
-                  controls
-                  alt=""
-                />
-              </div>
-            </template>
-          </div>
-        </el-form-item>
-        <el-form-item label="鏁存敼璇存槑">
-          <el-input
-            type="textarea"
-            placeholder="璇峰~鍐欒鏄�"
-            :rows="4"
-            v-model="backForm.checkInfo"
-          />
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowBack = false">鍙栨秷</el-button>
-        <el-button type="primary" :loading="subLoading" @click="onSubBack"
-          >纭畾</el-button
-        >
-      </span>
-    </el-dialog>
-  </GlobalWindow>
-</template>
-
-<script>
-import GlobalWindow from '@/components/common/GlobalWindow'
-import { memberList } from '@/api/business/hiddenDangerParam'
-import { Loading } from 'element-ui'
-import {
-  uploadFile,
-  hiddenDangerDetail,
-  dealHiddenDanger,
-  transferHiddenDanger
-} from '@/api/index'
-
-export default {
-  components: { GlobalWindow },
-  data () {
-    return {
-      id: '',
-      type: '',
-      uploadUrl: uploadFile,
-      loadingInstance: false,
-      title: '璁垮棰勭害璇︽儏',
-      isShowModal: false,
-      info: {},
-      isShowAppr: false,
-      apprTitle: '鍚屾剰',
-      subLoading: false,
-      param: {},
-      handleParam: {},
-      backForm: {},
-      isShowBack: false,
-      isShowTransfer: false,
-      transferForm: {},
-      memberList: [],
-      isShowProblem: false,
-      rules: {
-        checkInfo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
-      },
-      handleRules: {
-        dealTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
-        dealBeforeFileList: [{ type: 'array', required: true, message: '璇烽�夋嫨', trigger: 'change' }],
-        checkUserId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
-        dealAfterFileList: [{ type: 'array', required: true, message: '璇烽�夋嫨', trigger: 'change' }]
-      },
-      statusMap: {
-        0: '寰呭鏍�',
-        1: '澶勭悊涓�',
-        2: '宸查�氳繃',
-        3: '宸叉嫆缁�',
-        4: '宸插彇娑�',
-        5: '浠栦汉鎴栫',
-        6: '浠栦汉鎷掔粷'
-      },
-      cateList: {
-        0: '璁垮鐢宠',
-        1: '璁垮鎶ュ',
-        2: '鐢ㄨ溅鐢宠',
-        3: '闅愭偅闅忔墜鎷�',
-        4: '鐗╂祦杞︾敵璇�'
-      }
-    }
-  },
-  created () {
-    this.getMemberList()
-  },
-  methods: {
-    onSubAppr () {
-      this.$refs.handleForm.validate((valid) => {
-        if (!valid) {
-          return
-        }
-        this.subLoading = true
-        dealHiddenDanger({
-          ...this.handleParam,
-          status: 1,
-          id: this.id
-        })
-          .then(res => {
-            this.subLoading = false
-            this.$tip.apiSuccess('澶勭悊鎴愬姛')
-            this.getDetail()
-            this.$emit('success')
-            this.$emit('close')
-            this.isShowProblem = false
-          })
-          .finally(() => {
-            this.subLoading = false
-          })
-      })
-    },
-    close(){
-      this.isShowModal = false
-      this.$emit('close')
-    },
-    onSubBack () {
-      this.$refs.backForm.validate((valid) => {
-        if (!valid) {
-          return
-        }
-        this.subLoading = true
-        dealHiddenDanger({
-          ...this.backForm,
-          status: 2,
-          id: this.id
-        })
-          .then(res => {
-            this.subLoading = false
-            this.$tip.apiSuccess('閫�鍥炴垚鍔�')
-            this.getDetail()
-            this.isShowProblem = false
-          })
-          .finally(() => {
-            this.subLoading = false
-          })
-      })
-    },
-    onTransfer () {
-      this.$refs.transferForm.validate((valid) => {
-        if (!valid) {
-          return
-        }
-        this.subLoading = true
-        transferHiddenDanger({
-          ...this.transferForm,
-          id: this.id
-        })
-          .then(res => {
-            this.subLoading = false
-            if (res.code !== 200) return
-            this.$tip.apiSuccess('杞氦鎴愬姛')
-            this.getDetail()
-            this.isShowTransfer = false
-          })
-          .finally(() => {
-            this.subLoading = false
-          })
-      })
-    },
-    getMemberList () {
-      memberList({}).then(res => {
-        this.memberList = res || []
-      })
-    },
-    getDetail () {
-      const { id } = this
-      hiddenDangerDetail(id).then(res => {
-        this.info = res
-      })
-    },
-    handleAppr (val) {
-      this.isShowProblem = true
-    },
-    confirm () {
-      console.log('--')
-    },
-    handleTransfer () {
-      this.isShowProblem = true
-    },
-    reject () { },
-    handleAvatarSuccess (res) {
-      this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
-        if(this.loadingInstance){
-          this.loadingInstance.close()
-        }
-      })
-      if (res.code === 200) {
-        const str = res.data.url.indexOf('png') > 0 || res.data.url.indexOf('jpg') > 0
-        const arr = this.handleParam.dealBeforeFileList || []
-        arr.push({
-          type: str ? 0 : 1,
-          fileurl: res.data.imgaddr,
-          fileurlFull: res.data.url
-        })
-        this.$set(this.handleParam, 'dealBeforeFileList', arr)
-      }
-    },
-    handleAfterSuccess (res) {
-      this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
-        if(this.loadingInstance){
-          this.loadingInstance.close()
-        }
-      })
-      if (res.code === 200) {
-        const str = res.data.url.indexOf('png') > 0 || res.data.url.indexOf('jpg') > 0
-        const arr = this.handleParam.dealAfterFileList || []
-        arr.push({
-          type: str ? 0 : 1,
-          fileurl: res.data.imgaddr,
-          fileurlFull: res.data.url
-        })
-        this.$set(this.handleParam, 'dealAfterFileList', arr)
-      }
-    },
-    handleBackSuccess (res) {
-      this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
-        if(this.loadingInstance){
-          this.loadingInstance.close()
-        }
-      })
-      if (res.code === 200) {
-        const str = res.data.url.indexOf('png') > 0 || res.data.url.indexOf('jpg') > 0
-        const arr = this.backForm.dealBeforeFileList || []
-        arr.push({
-          type: str ? 0 : 1,
-          fileurl: res.data.imgaddr,
-          fileurlFull: res.data.url
-        })
-        this.$set(this.backForm, 'dealBeforeFileList', arr)
-      }
-    },
-    beforeAvatarUpload () {
-      this.loadingInstance = Loading.service({
-        lock: true,
-        text: 'Loading',
-        spinner: 'el-icon-loading',
-        background: 'rgba(0, 0, 0, 0.7)'
-      })
-    },
-    uploadError() {
-      this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
-        this.loadingInstance.close()
-      })
-    },
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/variables.scss";
-.upload_wrap {
-  display: flex;
-  flex-wrap: wrap;
-  .img_wrap {
-    width: 85px;
-    margin-right: 10px;
-    margin-bottom: 10px;
-    img,
-    video {
-      width: 100%;
-    }
-  }
-}
-.upload_box {
-  width: 84px;
-  height: 84px;
-  border-radius: 4px;
-  background-color: #f7f7f7;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  color: #999999;
-  border: 1px solid #e4e4e4;
-  .icon {
-    font-size: 24px;
-  }
-  .text {
-    font-size: 12px;
-  }
-}
-.side_title {
-  font-weight: 600;
-  font-size: 18px;
-  color: #111111;
-  margin-bottom: 20px;
-  margin-left: 20px;
-  margin-top: 20px;
-}
-.modal_wrap {
-  display: flex;
-  height: 100%;
-  .modal_content {
-    flex: 1;
-    padding: 0px 30px;
-    border-radius: 8px;
-    overflow: hidden;
-    height: 100%;
-
-    .title {
-      font-weight: 600;
-      font-size: 18px;
-      color: #333333;
-      margin-bottom: 20px;
-      margin-top: 30px;
-    }
-    .info {
-      .list {
-        display: flex;
-        flex-wrap: wrap;
-
-        .item {
-          display: flex;
-          width: 40%;
-          margin-bottom: 20px;
-          &:nth-of-type(2n) {
-            width: 60%;
-          }
-
-          .label {
-            color: #888888;
-            width: 100px;
-          }
-          .file_list {
-            display: flex;
-            .file {
-              width: 92px;
-              margin-right: 12px;
-              margin-bottom: 12px;
-              .img{
-                max-height: 92px;
-                max-width: 92px;
-              }
-            }
-          }
-          .value {
-            color: #111111;
-          }
-        }
-        .file {
-          width: 100%;
-        }
-      }
-    }
-
-    .header {
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-      padding: 20px 30px;
-      margin: 0 -30px;
-      border-radius: 8px 8px 0 0;
-      position: relative;
-      .head_bg{
-        position: absolute;
-        width: 100%;
-        height: 100%;
-        left: 0;
-        top: 0;
-        z-index: 9;
-      }
-      .h1 {
-        font-weight: 600;
-        font-size: 22px;
-        color: #111111;
-        margin-bottom: 8px;
-      }
-
-      .time {
-        font-size: 14px;
-        color: #999999;
-      }
-      .right {
-        height: 40px;
-        font-size: 16px;
-        color: #ffffff;
-        line-height: 40px;
-        padding: 0 20px;
-        background: #207ff7;
-        box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
-        border-radius: 16px 0px 16px 0px;
-        position: relative;
-        z-index: 99;
-      }
-      .scs{
-        background-color: #00BA67;
-      }
-      .msg{
-        background-color: #ED4545;
-      }
-    }
-    .table_info {
-      .name_wrap {
-        display: flex;
-        align-items: center;
-        .avatar {
-          width: 40px;
-          height: 40px;
-          border-radius: 50%;
-          margin-right: 12px;
-        }
-        .content {
-          .line {
-            display: flex;
-          }
-          .tag {
-            color: #b2cbf9;
-            border: 1px solid #b2cbf9;
-            padding: 0px 4px;
-            border-radius: 4px;
-            margin-left: 6px;
-          }
-        }
-      }
-    }
-  }
-
-  .side {
-    height: 100%;
-    width: 420px;
-    background: #ffffff;
-    border-left: 20px solid #f7f7f7;
-    .list {
-      .item {
-        padding: 8px 0;
-        position: relative;
-        .separate {
-          position: absolute;
-          border-left: 2px dashed #cccccc;
-          left: 31px;
-          height: calc(100% - 30px);
-          top: 49px;
-        }
-        .avatar {
-          width: 40px;
-          height: 40px;
-          border-radius: 50%;
-          margin: 0 12px 0 16px;
-          //border: 1px solid;
-        }
-        .childList {
-          display: flex;
-          flex-wrap: wrap;
-          margin-left: 100px;
-        }
-        .company {
-          font-size: 13px;
-          color: #888888;
-          .status {
-            color: $primaryColor;
-          }
-        }
-        .m_content {
-          display: flex;
-          flex-direction: column;
-          align-items: center;
-          justify-content: center;
-          margin-bottom: 4px;
-        }
-        .info {
-          display: flex;
-          align-items: center;
-          margin-left: 20px;
-          .icon {
-            position: relative;
-            z-index: 11;
-            color: #53b76f;
-            font-size: 24px;
-          }
-          .icon1 {
-            position: relative;
-            z-index: 11;
-            color: deepskyblue;
-            font-size: 24px;
-          }
-          .icon2 {
-            position: relative;
-            z-index: 11;
-            color: #dc362e;
-            font-size: 24px;
-          }
-          .iconnew {
-            width: 24px;
-            height: 24px;
-          }
-          .icon3 {
-            position: relative;
-            z-index: 11;
-            color: gray;
-            font-size: 24px;
-          }
-          .content {
-            flex: 1;
-            .line {
-              display: flex;
-              justify-content: space-between;
-              align-content: center;
-              margin-bottom: 6px;
-              .name {
-                font-weight: 600;
-                font-size: 16px;
-                color: #111111;
-              }
-              .time {
-                color: #888888;
-              }
-            }
-          }
-        }
-        .remark {
-          background: #f7f7f7;
-          border-radius: 4px;
-          padding: 13px 15px;
-          color: #666666;
-          margin-left: 100px;
-        }
-      }
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/task/driverDetail.vue b/admin/src/views/task/driverDetail.vue
deleted file mode 100644
index e7f6cad..0000000
--- a/admin/src/views/task/driverDetail.vue
+++ /dev/null
@@ -1,519 +0,0 @@
-<template>
-  <GlobalWindow :title="title" :visible.sync="isShowModal" @close="close" @confirm="confirm">
-    <div class="modal_wrap">
-      <div class="modal_content">
-        <div class="header">
-          <img v-if="info.status == '3' || info.status == '6'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png"
-            alt="">
-          <img v-else-if="info.status == '2' || info.status == '5'" class="head_bg"
-            src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
-          <img v-else-if="info.status == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt="">
-          <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
-          <div class="left">
-            <div class="h1">鐗╂祦杞﹂绾�</div>
-            <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
-          </div>
-          <div class="right"
-            :class="{ scs: info.status == '2' || info.status == '5', msg: info.status == '3' || info.status == '6' }">{{
-              statusMap[info.status] }}</div>
-        </div>
-        <div class="info">
-          <div class="title">鐗╂祦杞﹂绾︿俊鎭�</div>
-          <div class="list">
-            <div class="item">
-              <div class="label">鐢宠浜�</div>
-              <div class="value">{{ info.driverName }} {{ info.driverPhone }}</div>
-            </div>
-            <div class="item">
-              <div class="label">杞︾墝鐓�</div>
-              <div class="value">鍓� {{ info.carCodeFront }}锛屽悗 {{ info.carCodeBack }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鍚堝悓缂栧彿</div>
-              <div class="value">{{ info.contractNum }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鍒板巶鏃堕棿</div>
-              <div class="value">{{ info.arriveDate }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鍏ュ簱绫诲瀷</div>
-              <div class="value">{{ info.inType == 0 ? '鏁存墭鐩�' : '浠剁儫' }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鎬昏繍杈撻噺</div>
-              <div class="value">{{ info.totalNum || info.ioQty }}涓囨敮</div>
-            </div>
-            <div class="item">
-              <div class="label">鍑嗚繍璇佺収鐗�</div>
-              <div v-if="info.transportImg" class="value">
-                <el-image style="width: 100px" :preview-src-list="[info.prefixUrl + info.transportImg]"
-                  :src="info.prefixUrl + info.transportImg" alt="" />
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="side">
-        <div class="side_title">瀹℃壒娴佺▼</div>
-        <div class="list" v-if="info.approveDateVO != null && info.approveDateVO.approveList != null">
-          <div class="item" v-for="item, index in info.approveDateVO.approveList">
-            <div v-if="index != info.approveDateVO.approveList.length - 1" class="separate"></div>
-            <div class="info">
-              <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="item.status == 2" />
-              <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="item.status == 1" />
-              <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="item.status == 3" />
-              <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if="item.status == null || item.status == 0" />
-            </div>
-            <div class="avatar_wrap">
-              <img class="img" :src="item.faceImg
-                ? item.faceImg
-                : require('@/assets/avatar/man.png')
-                " />
-            </div>
-            <div class="content">
-              <div class="head">
-                <div class="event">{{ item.title }}</div>
-                <div class="time">{{ item.checkDate }}</div>
-              </div>
-              <div class="name_wrap">
-                <span>{{ item.memberName }}<span v-if="item.statusInfo" class="status">({{ item.statusInfo
-                    }})</span></span>
-              </div>
-              <div v-if="item.checkInfo" class="remark">
-                {{ item.checkInfo }}
-              </div>
-              <div v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="carbon">
-                <div class="carbon_item" v-for="child in item.approveList" :key="child.id">
-                  <img v-if="child.faceImg != null && child.faceImg != ''" :src="child.faceImg" class="avatar" alt="" />
-                  <img v-if="child.faceImg == null || child.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
-                    alt="" />
-                  <div class="text">{{ child.memberName }}</div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <!--  -->
-    <template v-slot:footer>
-      <el-button @click="handleAppr(2)" type="primary" class="status-red" v-if="
-        info.approveDateVO != null &&
-        info.approveDateVO.canBeApproved != null &&
-        info.approveDateVO.canBeApproved == 1
-      ">鍚屾剰</el-button>
-      <el-button @click="handleAppr(3)" type="danger" v-if="
-        info.approveDateVO != null &&
-        info.approveDateVO.canBeApproved != null &&
-        info.approveDateVO.canBeApproved == 1
-      ">鎷掔粷</el-button>
-      <el-button @click="close">杩斿洖</el-button>
-    </template>
-    <!--  鍚屾剰/鎷掔粷 -->
-    <el-dialog append-to-body :title="apprTitle" :visible.sync="isShowAppr" width="480px">
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
-        <el-form-item :prop="param.status == 3 ? 'checkInfo' : ''" :label="param.status == 2 ? '鍚屾剰璇存槑' : '鎷掔粷璇存槑'">
-          <el-input type="textarea" :placeholder="param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑蹇呭~'
-            " :rows="4" v-model="param.checkInfo" />
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowAppr = false">鍙栨秷</el-button>
-        <el-button :loading="subLoading" type="primary" @click="onSubAppr">纭畾</el-button>
-      </span>
-    </el-dialog>
-  </GlobalWindow>
-</template>
-
-<script>
-import GlobalWindow from '@/components/common/GlobalWindow'
-import {
-  getDriverJobDetail,
-  approveDo
-} from '@/api'
-export default {
-  components: { GlobalWindow },
-  data() {
-    return {
-      id: '',
-      type: '',
-
-      title: '鐗╂祦杞﹂绾﹁鎯�',
-      isShowModal: false,
-      info: {},
-      isShowAppr: false,
-      apprTitle: '鍚屾剰',
-      subLoading: false,
-      param: {},
-
-      isShowProblem: false,
-      rules: {
-        checkInfo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
-      },
-      statusMap: {
-        0: '寰呭鏍�',
-        1: '澶勭悊涓�',
-        2: '宸插悓鎰�',
-        3: '宸叉嫆缁�',
-        4: '宸插彇娑�',
-        5: '浠栦汉鎴栫',
-        6: '浠栦汉鎷掔粷'
-      },
-      cateList: {
-        0: '璁垮鐢宠',
-        1: '璁垮鎶ュ',
-        2: '鐢ㄨ溅鐢宠',
-        3: '闅愭偅闅忔墜鎷�',
-        4: '鐗╂祦杞︾敵璇�'
-      }
-    }
-  },
-  methods: {
-    onSubAppr() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (!valid) {
-          return
-        }
-        this.$dialog.actionConfirm('鎿嶄綔纭', this.param.status === 2 ? '鎮ㄧ‘璁ゅ悓鎰忚鐢宠鍚楋紵' : '鎮ㄧ‘璁ゆ嫆缁濊鐢宠鍚楋紵')
-          .then(() => {
-            this.subLoading = true
-            approveDo({
-              objId: this.id,
-              objType: 6,
-              status: this.param.status,
-              checkInfo: this.param.checkInfo
-            })
-              .then(res => {
-                this.subLoading = false
-                this.$tip.apiSuccess('澶勭悊鎴愬姛')
-                this.getDetail()
-                this.$emit('success')
-                this.$emit('close')
-                this.isShowAppr = false
-              })
-              .finally(() => {
-                this.subLoading = false
-              })
-          })
-      })
-    },
-    getDetail() {
-      const { id } = this
-      getDriverJobDetail(id).then(res => {
-        this.info = res
-        if (this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0) {
-          this.info.approveDateVO.approveList.forEach(item => {
-            if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
-              item.title = item.approveList[0].title
-              item.faceImg = item.approveList[0].faceImg
-              item.memberName = item.approveList[0].memberName
-              item.statusInfo = item.approveList[0].statusInfo
-              item.approveList = []
-            }
-          })
-        }
-      })
-    },
-    close() {
-      this.isShowModal = false
-      this.$emit('close')
-    },
-    handleAppr(val) {
-      this.$set(this.param, 'status', val)
-      this.apprTitle = val == 2 ? '鍚屾剰' : '鎷掔粷'
-      this.isShowAppr = true
-    },
-    confirm() {
-      console.log('--')
-    },
-    handleTransfer() {
-      this.isShowProblem = true
-    },
-    reject() { },
-    handleAvatarSuccess() { },
-    beforeAvatarUpload() { }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/variables.scss";
-
-.upload_box {
-  width: 84px;
-  height: 84px;
-  border-radius: 4px;
-  background-color: #f7f7f7;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  color: #999999;
-  border: 1px solid #e4e4e4;
-
-  .icon {
-    font-size: 24px;
-  }
-
-  .text {
-    font-size: 12px;
-  }
-}
-
-.side_title {
-  font-weight: 600;
-  font-size: 18px;
-  color: #111111;
-  margin-bottom: 20px;
-  margin-left: 20px;
-  margin-top: 20px;
-}
-
-.modal_wrap {
-  display: flex;
-  height: 100%;
-
-  .modal_content {
-    flex: 1;
-    padding: 0px 30px;
-    border-radius: 8px;
-    overflow: hidden;
-    height: 100%;
-
-    .title {
-      font-weight: 600;
-      font-size: 18px;
-      color: #333333;
-      margin-bottom: 20px;
-      margin-top: 30px;
-    }
-
-    .info {
-      .list {
-        display: flex;
-        flex-wrap: wrap;
-
-        .item {
-          display: flex;
-          width: 40%;
-          margin-bottom: 20px;
-
-          &:nth-of-type(2n) {
-            width: 60%;
-          }
-
-          .label {
-            color: #888888;
-            width: 100px;
-          }
-
-          .value {
-            color: #111111;
-          }
-        }
-      }
-    }
-
-    .header {
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-      padding: 20px 30px;
-      margin: 0 -30px;
-      border-radius: 8px 8px 0 0;
-      position: relative;
-
-      .head_bg {
-        position: absolute;
-        width: 100%;
-        height: 100%;
-        left: 0;
-        top: 0;
-        z-index: 9;
-      }
-
-      .h1 {
-        font-weight: 600;
-        font-size: 22px;
-        color: #111111;
-        margin-bottom: 8px;
-      }
-
-      .time {
-        font-size: 14px;
-        color: #999999;
-      }
-
-      .right {
-        height: 40px;
-        font-size: 16px;
-        color: #ffffff;
-        line-height: 40px;
-        padding: 0 20px;
-        background: #207ff7;
-        box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
-        border-radius: 16px 0px 16px 0px;
-        position: relative;
-        z-index: 99;
-      }
-
-      .scs {
-        background-color: #00BA67;
-      }
-
-      .msg {
-        background-color: #ED4545;
-      }
-    }
-
-    .table_info {
-      .name_wrap {
-        display: flex;
-        align-items: center;
-
-        .avatar {
-          width: 40px;
-          height: 40px;
-          border-radius: 50%;
-          margin-right: 12px;
-        }
-
-        .content {
-          .line {
-            display: flex;
-          }
-
-          .tag {
-            color: #b2cbf9;
-            border: 1px solid #b2cbf9;
-            padding: 0px 4px;
-            border-radius: 4px;
-            margin-left: 6px;
-          }
-        }
-      }
-    }
-  }
-
-  .side {
-    height: 100%;
-    width: 420px;
-    background: #ffffff;
-    border-left: 20px solid #f7f7f7;
-
-    .list {
-      .item {
-        padding: 8px 0;
-        display: flex;
-        margin-bottom: 24px;
-        position: relative;
-
-        .separate {
-          position: absolute;
-          border-left: 2px dashed #cccccc;
-          left: 31px;
-          height: calc(100% - 2px);
-          top: 42px;
-        }
-
-        .info {
-          padding-top: 10px;
-          margin-left: 20px;
-          margin-right: 16px;
-
-          .iconnew {
-            width: 24px;
-            height: 24px;
-          }
-        }
-
-        .avatar_wrap {
-          width: 40px;
-          height: 40px;
-          position: relative;
-          margin-right: 10px;
-
-          .img {
-            width: 40px;
-            height: 40px;
-            border-radius: 50%;
-          }
-
-          .status {
-            width: 14px;
-            height: 14px;
-            border-radius: 50%;
-            position: absolute;
-            right: 0;
-            bottom: 0;
-          }
-
-        }
-
-        .content {
-          flex: 1;
-
-          .head {
-            display: flex;
-            justify-content: space-between;
-            margin-bottom: 2px;
-
-            .event {
-              font-size: 15px;
-            }
-
-            .time {
-              font-size: 13px;
-              color: #999999;
-            }
-          }
-
-          .name_wrap {
-            font-size: 13px;
-            color: #777777;
-
-            .status {
-              color: $primaryColor;
-            }
-          }
-
-          .remark {
-            margin-top: 6px;
-            background-color: #f7f7f7;
-            padding: 7px 10px;
-            border-radius: 4px;
-            font-size: 13px;
-            color: #666666;
-            line-height: 18px;
-          }
-        }
-
-        .carbon {
-          display: flex;
-          width: 100%;
-          overflow-x: auto;
-          margin-top: 12px;
-
-          .carbon_item {
-            text-align: center;
-            flex-shrink: 0;
-            width: 60px;
-
-            img {
-              width: 36px;
-              height: 36px;
-              margin: 0 auto;
-            }
-
-            div {
-              font-size: 13px;
-              color: #777777;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/task/index.vue b/admin/src/views/task/index.vue
deleted file mode 100644
index ac5d8d1..0000000
--- a/admin/src/views/task/index.vue
+++ /dev/null
@@ -1,303 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm
-      v-model="filters"
-      :query-form-config="queryFormConfig"
-      @handleQuery="getList(1)"
-      @clear="clear"
-      @changeForm='changeForm'
-    >
-      <template #fastdate>
-        <el-radio-group
-          v-model="filters.fastdate"
-          size="small"
-          @input="changeRadio"
-        >
-          <el-radio-button label="0">褰撳ぉ</el-radio-button>
-          <el-radio-button label="6">杩�7澶�</el-radio-button>
-          <el-radio-button label="29">杩�30澶�</el-radio-button>
-        </el-radio-group>
-      </template>
-    </QueryForm>
-    <!--  -->
-    <el-tabs v-model="filters.queryType" @tab-click="(e) => getList(1)">
-      <el-tab-pane label="寰呭鐞�" name="0">
-        <template #label>
-          <span
-            >寰呭鐞�
-            <el-badge
-              v-if="headData.noticeWaitNum"
-              :value="headData.noticeWaitNum"
-              class="item"
-              type="danger"
-            >
-            </el-badge>
-          </span>
-        </template>
-      </el-tab-pane>
-      <el-tab-pane :value="headData.noticeDealNum" label="宸插鐞�" name="1">
-      </el-tab-pane>
-      <el-tab-pane :value="headData.noticeCreateNum" label="鎴戝彂璧风殑" name="2">
-      </el-tab-pane>
-      <el-tab-pane :value="headData.noticeCopyNum" label="鎶勯�佹垜鐨�" name="3">
-        <template #label>
-          <span
-            >鎶勯�佹垜鐨�
-            <el-badge
-              v-if="headData.noticeCopyNum"
-              :value="headData.noticeCopyNum"
-              class="item"
-              type="danger"
-            >
-            </el-badge>
-          </span>
-        </template>
-      </el-tab-pane>
-    </el-tabs>
-    <el-table
-      v-loading="loading"
-      :data="dataList"
-      stripe
-      row-key="id"
-      class="mb20"
-      default-expand-all
-    >
-      <el-table-column label="澶勭悊浜嬮」" min-width="160">
-        <template slot-scope="{ row }"> {{ row.title}}
-        </template>
-      </el-table-column>
-      <el-table-column prop="info" label="褰撳墠闃舵" min-width="100"></el-table-column>
-      <el-table-column prop="createDate" label="鎻愪氦鏃堕棿" min-width="100">
-      </el-table-column>
-      <el-table-column label="鎿嶄綔" width="230" fixed="right">
-        <template slot-scope="{ row }">
-          <el-button
-            type="text"
-            @click="handleDetail(row)"
-            >鏌ョ湅璇︽儏</el-button
-          >
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      @size-change="handleSizeChange"
-      @current-change="getList"
-      :pagination="pagination"
-    />
-    <TaskDetail v-if="isShowDetail" ref="DetailRef" @close="isShowDetail = false" @success="SubSuccess('isShowDetail')" />
-    <VisReportDetail v-if="isShowReport" ref="VisReportDetailRef" @close="isShowReport = false" @success="SubSuccess('isShowReport')" />
-    <DangetDetail v-if="isShowDanger" ref="DangetDetailRef" @close="isShowDanger = false" @success="SubSuccess('isShowDanger')" />
-    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" @close="isShowDriver = false" @success="SubSuccess('isShowDriver')" />
-    <!-- 鐢ㄨ溅鐢宠 -->
-    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="getList" />
-    <!-- 闅愭偅 -->
-    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getList" />
-    <!-- 棰勭害璇︽儏 -->
-    <OperaVisitsDesWindow ref="OperaVisitsDesWindow" />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-import TaskDetail from './visSubDetail.vue'
-import VisReportDetail from './visReportDetail.vue'
-import DangetDetail from './dangetDetail.vue'
-import DriverDetail from './driverDetail.vue'
-import OperaCarUseBookWindow from '@/components/business/OperaCarUseBookWindow'
-import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow'
-import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow'
-import dayjs from 'dayjs'
-import {
-  taskCenterHeadPC,
-  taskCenterPage,
-  taskSignRead
-} from '@/api'
-export default {
-  components: {
-    TaskDetail,
-    VisReportDetail,
-    DangetDetail,
-    QueryForm,
-    DriverDetail,
-    Pagination,
-    OperaCarUseBookWindow,
-    OperaHiddenDangerWindow,
-    OperaVisitsDesWindow
-  },
-  data () {
-    return {
-      isShowDetail: false,
-      isShowReport: false,
-      isShowDanger: false,
-      isShowDriver: false,
-      filters: {
-        queryType: '0',
-        // fastdate: 0
-      },
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'type',
-            type: 'select',
-            label: '浠诲姟绫诲瀷',
-            options: [
-              { label: '璁垮鐢宠', value: '0' },
-              { label: '璁垮鎶ュ', value: '1' },
-              { label: '鐢ㄨ溅鐢宠', value: '2' },
-              { label: '闅愭偅闅忔墜鎷�', value: '3' },
-              { label: '鐗╂祦杞︾敵璇�', value: '4' }
-            ]
-          },
-          {
-            filed: 'selTime',
-            type: 'datetimerange',
-            label: '璧锋鏃堕棿',
-            pickerOptions: {}
-          },
-          {
-            type: 'slot',
-            filed: 'fastdate',
-            label: ''
-          }
-        ],
-        online: true
-      },
-      pagination: {
-        capacity: 10,
-        page: 1,
-        total: 0,
-      },
-      loading: false,
-      dataList: [],
-      headData: {},
-
-      cateList: [
-        { name: '璁垮鐢宠', id: 0 },
-        { name: '璁垮鎶ュ', id: 1 },
-        { name: '鐢ㄨ溅鐢宠', id: 2 },
-        { name: '闅愭偅闅忔墜鎷�', id: 3 },
-        { name: '鐗╂祦杞︾敵璇�', id: 4 }
-      ]
-    }
-  },
-  created () {
-    // this.getHeadData()
-    // this.changeRadio('0')
-    this.getList()
-  },
-  methods: {
-    changeRadio (day) {
-      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
-      this.$set(this.filters, 'selTime', arr)
-      this.getList()
-    },
-    SubSuccess(str) {
-      this[str] = false
-      this.getTaskList()
-    },
-    handleDetail (row) {
-      if (this.filters.queryType == 3) {
-        taskSignRead({
-          noticesId: row.id,
-          signType: 0
-        }).then(res => {
-          this.getHeadData()
-        })
-      }
-      if (row.objType === 2) {
-        this.$refs.OperaDetailsWindow.open('鍏姟杞︾敵璇疯鎯�', { ...row, id: row.objId })
-        return
-      }
-      if (row.objType === 1) {
-        this.isShowReport = true
-        this.$nextTick(() => {
-          this.$refs.VisReportDetailRef.id = row.objId
-          this.$refs.VisReportDetailRef.type = row.objType
-          this.$refs.VisReportDetailRef.getDetail()
-          this.$refs.VisReportDetailRef.isShowModal = true
-        })
-        return
-      }
-      if (row.objType === 3) {
-        const obj = { ...row, id: row.objId }
-        this.$refs.OperaHiddenDangerWindow.open('闅愭偅闅忔墜鎷嶈鎯�', obj)
-        return
-      }
-      if (row.objType === 6) {
-        const obj = { ...row, id: row.objId }
-        this.isShowDriver = true
-        this.$nextTick(() => {
-          this.$refs.DriverDetailRef.id = row.objId
-          this.$refs.DriverDetailRef.type = row.objType
-          this.$refs.DriverDetailRef.getDetail()
-          this.$refs.DriverDetailRef.isShowModal = true
-        })
-        return
-      }
-      if (row.objType === 0) {
-        this.isShowDetail = true
-        this.$nextTick(() => {
-          this.$refs.DetailRef.id = row.objId
-          this.$refs.DetailRef.type = row.objType
-          this.$refs.DetailRef.getDetail()
-          this.$refs.DetailRef.isShowModal = true
-        })
-      }
-    },
-    changeForm (str) {
-      if (str === 'selTime') {
-        this.$set(this.filters, 'fastdate', null)
-        this.getList()
-      }
-    },
-    getList (page) {
-      this.getHeadData()
-      const { filters, pagination } = this
-      if (filters.selTime && filters.selTime.length > 0) {
-        filters.startDate = filters.selTime[0]
-        filters.endDate = filters.selTime[1]
-      } else {
-        filters.startDate = null
-        filters.endDate = null
-      }
-      pagination.page = page || pagination.page
-      taskCenterPage({
-        model: { ...filters, queryType: Number(filters.queryType) },
-        ...pagination
-      }).then(res => {
-        console.log('res', res)
-        this.dataList = res.records || []
-        this.pagination.total = res.total || 0
-        this.dataList.forEach(i => {
-          i.param1 = JSON.parse(i.param1)
-        })
-      })
-    },
-    getHeadData () {
-      const { filters } = this
-      if (filters.selTime && filters.selTime.length > 0) {
-        filters.startDate = filters.selTime[0]
-        filters.endDate = filters.selTime[1]
-      } else {
-        filters.startDate = null
-        filters.endDate = null
-      }
-      taskCenterHeadPC({ ...filters, queryType: Number(filters.queryType), isDetail: '1' }).then(res => {
-        this.headData = res
-      })
-    },
-    clear () {
-      this.filters = {
-        queryType: '0',
-      }
-      this.getList(0)
-    },
-    handleSizeChange (capacity) {
-      this.pagination.capacity = capacity
-    }
-  }
-}
-</script>
-
-<style scoped lang="scss"></style>
diff --git a/admin/src/views/task/visReportDetail.vue b/admin/src/views/task/visReportDetail.vue
deleted file mode 100644
index 83c8ce0..0000000
--- a/admin/src/views/task/visReportDetail.vue
+++ /dev/null
@@ -1,567 +0,0 @@
-<template>
-  <GlobalWindow :title="title" :visible.sync="isShowModal" @close="close" @confirm="confirm">
-    <div class="modal_wrap">
-      <div class="modal_content">
-        <div class="header">
-          <img v-if="info.businessStatus == '3'" class="head_bg" src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
-          <img v-else-if="info.businessStatus == '2'" class="head_bg" src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
-          <img v-else-if="info.businessStatus == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png"
-            alt="">
-          <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
-          <div class="left">
-            <div class="h1">{{ cateList[type] }}</div>
-            <div class="time">鎻愪氦鏃堕棿锛歿{ info.createDate }}</div>
-          </div>
-          <div class="right" :class="{ scs: info.businessStatus == '2', msg: info.businessStatus == '3' }">{{
-            statusMap[info.businessStatus] }}</div>
-        </div>
-        <div class="info">
-          <div class="title">璁垮鎶ュ淇℃伅</div>
-          <div class="list">
-            <div class="item">
-              <div class="label">琚浜�</div>
-              <div class="value">{{ info.receptMemberName }} {{ info.receptMemberDepartment }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鏉ヨ鏃堕棿</div>
-              <div class="value">{{ info.starttime }}鑷硔{ info.endtime }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鏉ヨ鍗曚綅</div>
-              <div class="value">{{ info.companyName }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鏉ヨ浜嬬敱</div>
-              <div class="value">{{ info.reason }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鑱旂郴浜�</div>
-              <div class="value">{{ info.name }} {{ info.phone }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鍏ュ洯杞﹁締</div>
-              <div class="value">{{ info.carNos }}</div>
-            </div>
-            <div class="item">
-              <div class="label">闅忚溅浜烘暟</div>
-              <div class="value">{{ info.memberNum || 0 }}浜�</div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="side">
-        <div class="side_title">瀹℃壒娴佺▼</div>
-        <div class="list" v-if="
-          info.approveDateVO != null && info.approveDateVO.approveList != null
-        ">
-          <div class="item" v-for="(item, index) in info.approveDateVO.approveList" :key="item.id">
-            <div class="separate" v-if="index < info.approveDateVO.approveList.length - 1"></div>
-            <div class="info">
-              <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="item.status == 2" />
-              <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="item.status == 1" />
-              <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="item.status == 3" />
-              <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if="item.status == null || item.status == 0" />
-              <div style="display: inline" v-if="item.approveType != 1">
-                <img v-if="item.faceImg != null && item.faceImg != ''" :src="item.faceImg" class="avatar" alt="" />
-                <img v-if="item.faceImg == null || item.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
-                  alt="" />
-              </div>
-              <div style="display: inline" v-if="item.approveType == 1">
-                <img v-if="item.type != 1" src="@/assets/icons/ic_duoren.png" class="avatar" alt="" />
-                <img v-if="item.type == 1" src="@/assets/icons/ic_chaosong.png" class="avatar" alt="" />
-              </div>
-              <div class="content">
-                <div class="line">
-                  <div class="name">{{ item.title }}</div>
-                  <div class="time">{{ item.checkDate }}</div>
-                </div>
-                <div class="line">
-                  <div class="company">
-                    {{ item.memberName }}
-                    <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
-                      锛�<span :class="{ padding: item.statusInfo == '澶勭悊涓�' || item.status == '1' }">{{
-                        item.statusInfo || ""
-                      }}</span>锛�
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div v-if="
-              item.approveType != 1 &&
-              item.checkInfo != null &&
-              item.checkInfo != ''
-            " class="remark">
-              {{ item.checkInfo || "" }}
-            </div>
-            <div v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="childList">
-              <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id">
-                <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" />
-                <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
-                  alt="" />
-                <span> {{ item1.memberName }}</span>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <!--  -->
-    <template v-slot:footer>
-      <el-button @click="handleAppr(2)" type="primary" class="status-red" v-if="
-        info.approveDateVO != null &&
-        info.approveDateVO.canBeApproved != null &&
-        info.approveDateVO.canBeApproved == 1
-      ">鍚屾剰</el-button>
-      <el-button @click="handleAppr(3)" type="danger" v-if="
-        info.approveDateVO != null &&
-        info.approveDateVO.canBeApproved != null &&
-        info.approveDateVO.canBeApproved == 1
-      ">鎷掔粷</el-button>
-      <el-button @click="close">杩斿洖</el-button>
-    </template>
-    <!--  鍚屾剰/鎷掔粷 -->
-    <el-dialog append-to-body :title="apprTitle" :visible.sync="isShowAppr" width="480px">
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
-        <el-form-item :prop="param.status == 3 ? 'checkInfo' : ''" :label="param.status == 2 ? '鍚屾剰璇存槑' : '鎷掔粷璇存槑'">
-          <el-input type="textarea" :placeholder="param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑蹇呭~'
-            " :rows="4" v-model="param.checkInfo" />
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowAppr = false">鍙栨秷</el-button>
-        <el-button :loading="subLoading" type="primary" @click="onSubAppr">纭畾</el-button>
-      </span>
-    </el-dialog>
-    <!-- 闅愭偅 -->
-    <el-dialog append-to-body title="闅愭偅" :visible.sync="isShowProblem" width="480px">
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
-        <el-form-item label="閫�鍥炴椂闂�">
-          <el-date-picker class="w300" value-format="yyyy-MM-dd" type="date" placeholder="閫夋嫨鏃ユ湡" v-model="param.date" />
-        </el-form-item>
-        <el-form-item label="鏁存敼鍓�">
-          <div class="df_ac">
-            <img src="@/assets/avatar/man.png" />
-            <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/"
-              :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
-              <img v-if="param.url" :src="param.url" class="avatar" />
-              <div v-else class="upload_box">
-                <el-icon class="el-icon-plus icon" />
-                <div class="text">鍥剧墖/瑙嗛</div>
-              </div>
-            </el-upload>
-          </div>
-        </el-form-item>
-        <el-form-item label="閫�鍥炶鏄�">
-          <el-input type="textarea" placeholder="璇峰~鍐欒鏄�" :rows="4" v-model="param.explain" />
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowProblem = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="isShowProblem = false">纭畾</el-button>
-      </span>
-    </el-dialog>
-  </GlobalWindow>
-</template>
-
-<script>
-import GlobalWindow from '@/components/common/GlobalWindow'
-import {
-  getVisitedReDetail,
-  approveDo
-} from '@/api'
-export default {
-  components: { GlobalWindow },
-  data() {
-    return {
-      id: '',
-      type: '',
-
-      title: '璁垮棰勭害璇︽儏',
-      isShowModal: false,
-      info: {},
-      isShowAppr: false,
-      apprTitle: '鍚屾剰',
-      subLoading: false,
-      param: {},
-
-      isShowProblem: false,
-      rules: {
-        checkInfo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
-      },
-      statusMap: {
-        0: '寰呭鏍�',
-        1: '澶勭悊涓�',
-        2: '宸查�氳繃',
-        3: '宸叉嫆缁�',
-        4: '宸插彇娑�',
-        5: '浠栦汉鎴栫',
-        6: '浠栦汉鎷掔粷'
-      },
-      cateList: {
-        0: '璁垮鐢宠',
-        1: '璁垮鎶ュ',
-        2: '鐢ㄨ溅鐢宠',
-        3: '闅愭偅闅忔墜鎷�',
-        4: '鐗╂祦杞︾敵璇�'
-      }
-    }
-  },
-  methods: {
-    onSubAppr() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (!valid) {
-          return
-        }
-        this.$dialog.actionConfirm('鎿嶄綔纭', this.param.status === 2 ? '鎮ㄧ‘璁ゅ悓鎰忚鐢宠鍚楋紵' : '鎮ㄧ‘璁ゆ嫆缁濊鐢宠鍚楋紵')
-          .then(() => {
-            this.subLoading = true
-            approveDo({
-              objId: this.id,
-              objType: 2,
-              status: this.param.status,
-              checkInfo: this.param.checkInfo
-            })
-              .then(res => {
-                this.subLoading = false
-                this.$tip.apiSuccess('澶勭悊鎴愬姛')
-                this.getDetail()
-                this.$emit('success')
-                this.$emit('close')
-                this.isShowAppr = false
-              })
-              .finally(() => {
-                this.subLoading = false
-              })
-          })
-      })
-    },
-    close() {
-      this.isShowModal = false
-      this.$emit('close')
-    },
-    getDetail() {
-      const { id } = this
-      getVisitedReDetail({ id }).then(res => {
-        this.info = res
-        if (this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0) {
-          this.info.approveDateVO.approveList.forEach(item => {
-            if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
-              item.title = item.approveList[0].title
-              item.faceImg = item.approveList[0].faceImg
-              item.memberName = item.approveList[0].memberName
-              item.statusInfo = item.approveList[0].statusInfo
-              item.status = item.approveList[0].status
-              item.approveList = []
-            }
-          })
-        }
-      })
-    },
-    handleAppr(val) {
-      this.$set(this.param, 'status', val)
-      this.apprTitle = val == 2 ? '鍚屾剰' : '鎷掔粷'
-      this.isShowAppr = true
-    },
-    confirm() {
-      console.log('--')
-    },
-    handleTransfer() {
-      this.isShowProblem = true
-    },
-    reject() { },
-    handleAvatarSuccess() { },
-    beforeAvatarUpload() { }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/variables.scss";
-
-.upload_box {
-  width: 84px;
-  height: 84px;
-  border-radius: 4px;
-  background-color: #f7f7f7;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  color: #999999;
-  border: 1px solid #e4e4e4;
-
-  .icon {
-    font-size: 24px;
-  }
-
-  .text {
-    font-size: 12px;
-  }
-}
-
-.side_title {
-  font-weight: 600;
-  font-size: 18px;
-  color: #111111;
-  margin-bottom: 20px;
-  margin-left: 20px;
-  margin-top: 20px;
-}
-
-.modal_wrap {
-  display: flex;
-  height: 100%;
-
-  .modal_content {
-    flex: 1;
-    padding: 0px 30px;
-    border-radius: 8px;
-    overflow: hidden;
-    height: 100%;
-
-    .title {
-      font-weight: 600;
-      font-size: 18px;
-      color: #333333;
-      margin-bottom: 20px;
-      margin-top: 30px;
-    }
-
-    .info {
-      .list {
-        display: flex;
-        flex-wrap: wrap;
-
-        .item {
-          display: flex;
-          width: 40%;
-          margin-bottom: 20px;
-
-          &:nth-of-type(2n) {
-            width: 60%;
-          }
-
-          .label {
-            color: #888888;
-            width: 100px;
-          }
-
-          .value {
-            color: #111111;
-          }
-        }
-      }
-    }
-
-    .header {
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-      padding: 20px 30px;
-      margin: 0 -30px;
-      border-radius: 8px 8px 0 0;
-      position: relative;
-
-      .head_bg {
-        position: absolute;
-        width: 100%;
-        height: 100%;
-        left: 0;
-        top: 0;
-        z-index: 9;
-      }
-
-      .h1 {
-        font-weight: 600;
-        font-size: 22px;
-        color: #111111;
-        margin-bottom: 8px;
-      }
-
-      .time {
-        font-size: 14px;
-        color: #999999;
-      }
-
-      .right {
-        height: 40px;
-        font-size: 16px;
-        color: #ffffff;
-        line-height: 40px;
-        padding: 0 20px;
-        background: #207ff7;
-        box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
-        border-radius: 16px 0px 16px 0px;
-        position: relative;
-        z-index: 99;
-      }
-
-      .scs {
-        background-color: #00BA67;
-      }
-
-      .msg {
-        background-color: #ED4545;
-      }
-    }
-
-    .table_info {
-      .name_wrap {
-        display: flex;
-        align-items: center;
-
-        .avatar {
-          width: 40px;
-          height: 40px;
-          border-radius: 50%;
-          margin-right: 12px;
-        }
-
-        .content {
-          .line {
-            display: flex;
-          }
-
-          .tag {
-            color: #b2cbf9;
-            border: 1px solid #b2cbf9;
-            padding: 0px 4px;
-            border-radius: 4px;
-            margin-left: 6px;
-          }
-        }
-      }
-    }
-  }
-
-  .side {
-    height: 100%;
-    width: 420px;
-    background: #ffffff;
-    border-left: 20px solid #f7f7f7;
-
-    .list {
-      .item {
-        padding: 8px 0;
-        position: relative;
-
-        .separate {
-          position: absolute;
-          border-left: 2px dashed #cccccc;
-          left: 31px;
-          height: calc(100% - 30px);
-          top: 49px;
-        }
-
-        .avatar {
-          width: 40px;
-          height: 40px;
-          border-radius: 50%;
-          margin: 0 12px 0 16px;
-          //border: 1px solid;
-        }
-
-        .childList {
-          display: flex;
-          flex-wrap: wrap;
-          margin-left: 100px;
-        }
-
-        .company {
-          font-size: 13px;
-          color: #888888;
-
-          .status {
-            color: $primaryColor;
-          }
-        }
-
-        .m_content {
-          display: flex;
-          flex-direction: column;
-          align-items: center;
-          justify-content: center;
-          margin-bottom: 4px;
-        }
-
-        .info {
-          display: flex;
-          align-items: center;
-          margin-left: 20px;
-
-          .icon {
-            position: relative;
-            z-index: 11;
-            color: #53b76f;
-            font-size: 24px;
-          }
-
-          .icon1 {
-            position: relative;
-            z-index: 11;
-            color: deepskyblue;
-            font-size: 24px;
-          }
-
-          .icon2 {
-            position: relative;
-            z-index: 11;
-            color: #dc362e;
-            font-size: 24px;
-          }
-
-          .iconnew {
-            width: 24px;
-            height: 24px;
-          }
-
-          .icon3 {
-            position: relative;
-            z-index: 11;
-            color: gray;
-            font-size: 24px;
-          }
-
-          .content {
-            flex: 1;
-
-            .line {
-              display: flex;
-              justify-content: space-between;
-              align-content: center;
-              margin-bottom: 6px;
-
-              .status {
-                color: #888888;
-              }
-
-              .padding {
-                color: $primaryColor;
-              }
-
-              .name {
-                font-weight: 600;
-                font-size: 16px;
-                color: #111111;
-              }
-
-              .time {
-                color: #888888;
-              }
-            }
-          }
-        }
-
-        .remark {
-          background: #f7f7f7;
-          border-radius: 4px;
-          padding: 13px 15px;
-          color: #666666;
-          margin-left: 100px;
-        }
-      }
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/task/visSubDetail.vue b/admin/src/views/task/visSubDetail.vue
deleted file mode 100644
index d9f19b2..0000000
--- a/admin/src/views/task/visSubDetail.vue
+++ /dev/null
@@ -1,610 +0,0 @@
-<template>
-  <GlobalWindow :title="title" :visible.sync="isShowModal" @close="close" @confirm="confirm">
-    <div class="modal_wrap">
-      <div class="modal_content">
-        <div class="header">
-          <img v-if="info.businessStatus == '3'" class="head_bg"
-            src="@/assets/task/bg_shenhe_fail@2x.png" alt="">
-          <img v-else-if="info.businessStatus == '2'" class="head_bg"
-            src="@/assets/task/bg_shenhe_pass@2x.png" alt="">
-          <img v-else-if="info.businessStatus == '4'" class="head_bg" src="@/assets/task/bg_shenhe_chexiao@2x.png" alt="">
-          <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt="">
-          <div class="left">
-            <div class="h1">{{ cateList[type] }}</div>
-            <div class="time">鎻愪氦鏃堕棿锛歿{ info.createTime }}</div>
-          </div>
-          <div class="right"
-            :class="{ scs: info.businessStatus == '2', msg: info.businessStatus == '3' }">{{
-              statusMap[info.businessStatus] }}</div>
-        </div>
-        <div class="info">
-          <div class="title">璁垮棰勭害淇℃伅</div>
-          <div class="list">
-            <div class="item">
-              <div class="label">琚浜�</div>
-              <div class="value">{{ info.visitUserName }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鏉ヨ鏃堕棿</div>
-              <div class="value">{{ info.visitTime }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鏉ヨ浜嬬敱</div>
-              <div class="value">{{ info.visitReason }}</div>
-            </div>
-            <div class="item">
-              <div class="label">闅忚杞﹁締</div>
-              <div class="value">{{ info.carNos }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鏂藉伐浜哄憳</div>
-              <div class="value">{{ info.type == "0" ? "鍚�" : "鏄�" }}</div>
-            </div>
-            <div class="item">
-              <div class="label">鏂藉伐鍐呭</div>
-              <div class="value">{{ info.constructionReason }}</div>
-            </div>
-          </div>
-        </div>
-        <div class="table_info">
-          <div class="title">璁垮淇℃伅</div>
-          <el-table :data="[info]" border fit>
-            <el-table-column label="濮撳悕" prop="" min-width="150">
-              <template slot-scope="{ row }">
-                <div class="name_wrap">
-                  <image :src="row.prefix
-                    ? row.prefix
-                    : require('@/assets/avatar/man.png')
-                    " class="avatar" mode="" />
-                  <div class="content">
-                    <div class="line">
-                      <div class="name">{{ row.name }}</div>
-                      <div class="tag">鐢宠浜�</div>
-                    </div>
-                    <div class="line placeholder9">{{ row.phone }}</div>
-                  </div>
-                </div>
-              </template>
-            </el-table-column>
-            <!-- <el-table-column label="鎬у埆" prop="" min-width="40" /> -->
-            <el-table-column label="璇佷欢绫诲瀷" prop="idcardTypeName" min-width="80">
-              <template slot-scope="{ row }">
-                <span v-if="row.idcardType == 0">韬唤璇�</span>
-                <span v-if="row.idcardType == 1">娓境璇佷欢</span>
-                <span v-if="row.idcardType == 2">鎶ょ収</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="璇佷欢鍙风爜" prop="idCardDecode" min-width="120" />
-            <el-table-column label="鍏徃鍚嶇О" prop="companyName" min-width="120" />
-            <el-table-column label="浜鸿劯鐓х墖" prop="" min-width="80">
-              <template slot-scope="{ row }">
-                <el-image v-if="row.prefix && row.faceImg" :src="row.prefix + row.faceImg" :preview-src-list="[row.prefix + row.faceImg]">
-                </el-image>
-              </template>
-            </el-table-column>
-          </el-table>
-        </div>
-      </div>
-      <div class="side">
-        <div class="side_title">瀹℃壒娴佺▼</div>
-        <div class="list" v-if="
-          info.approveDateVO != null && info.approveDateVO.approveList != null
-        ">
-          <div class="item" v-for="(item, index) in info.approveDateVO.approveList" :key="item.id">
-            <div class="separate" v-if="index < info.approveDateVO.approveList.length - 1"></div>
-            <div class="info">
-              <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="item.status == 2" />
-              <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="item.status == 1" />
-              <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="item.status == 3" />
-              <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if="item.status == null || item.status == 0" />
-              <div style="display: inline" v-if="item.approveType != 1">
-                <img v-if="item.faceImg != null && item.faceImg != ''" :src="item.faceImg" class="avatar" alt="" />
-                <img v-if="item.faceImg == null || item.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
-                  alt="" />
-              </div>
-              <div style="display: inline" v-if="item.approveType == 1">
-                <img v-if="item.type != 1" src="@/assets/icons/ic_duoren.png" class="avatar" alt="" />
-                <img v-if="item.type == 1" src="@/assets/icons/ic_chaosong.png" class="avatar" alt="" />
-              </div>
-              <div class="content">
-                <div class="line">
-                  <div class="name">{{ item.title }}</div>
-                  <div class="time">{{ item.checkDate }}</div>
-                </div>
-                <div class="line">
-                  <div class="company">
-                    {{ item.memberName }}
-                    <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
-                      锛�<span :class="{ padding: item.statusInfo == '澶勭悊涓�' || item.status == '1' }">{{
-                        item.statusInfo || ""
-                        }}</span>锛�
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div v-if="
-              item.approveType != 1 &&
-              item.checkInfo != null &&
-              item.checkInfo != ''
-            " class="remark">
-              {{ item.checkInfo || "" }}
-            </div>
-            <div v-if="item.approveType == 1" class="childList">
-              <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id">
-                <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" />
-                <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
-                  alt="" />
-                <span> {{ item1.memberName }}</span>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <!--  -->
-    <template v-slot:footer>
-      <el-button @click="handleAppr(2)" type="primary" class="status-red" v-if="
-        info.approveDateVO != null &&
-        info.approveDateVO.canBeApproved != null &&
-        info.approveDateVO.canBeApproved == 1
-      ">鍚屾剰</el-button>
-      <el-button @click="handleAppr(3)" type="danger" v-if="
-        info.approveDateVO != null &&
-        info.approveDateVO.canBeApproved != null &&
-        info.approveDateVO.canBeApproved == 1
-      ">鎷掔粷</el-button>
-      <el-button @click="close">杩斿洖</el-button>
-    </template>
-    <!--  鍚屾剰/鎷掔粷 -->
-    <el-dialog append-to-body :title="param.status == 2 ? '鍚屾剰' : '鎷掔粷'" :visible.sync="isShowAppr" width="480px">
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
-        <el-form-item :prop="param.status == 3 ? 'checkInfo' : ''" :label="param.status == 2 ? '鍚屾剰璇存槑' : '鎷掔粷璇存槑'">
-          <el-input type="textarea" :placeholder="param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑蹇呭~'
-            " :rows="4" v-model="param.checkInfo" />
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowAppr = false">鍙栨秷</el-button>
-        <el-button :loading="subLoading" type="primary" @click="onSubAppr">纭畾</el-button>
-      </span>
-    </el-dialog>
-    <!-- 闅愭偅 -->
-    <el-dialog append-to-body title="闅愭偅" :visible.sync="isShowProblem" width="480px">
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
-        <el-form-item label="閫�鍥炴椂闂�">
-          <el-date-picker class="w300" value-format="yyyy-MM-dd" type="date" placeholder="閫夋嫨鏃ユ湡" v-model="param.date" />
-        </el-form-item>
-        <el-form-item label="鏁存敼鍓�">
-          <div class="df_ac">
-            <img src="@/assets/avatar/man.png" />
-            <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/"
-              :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
-              <img v-if="param.url" :src="param.url" class="avatar" />
-              <div v-else class="upload_box">
-                <el-icon class="el-icon-plus icon" />
-                <div class="text">鍥剧墖/瑙嗛</div>
-              </div>
-            </el-upload>
-          </div>
-        </el-form-item>
-        <el-form-item label="閫�鍥炶鏄�">
-          <el-input type="textarea" placeholder="璇峰~鍐欒鏄�" :rows="4" v-model="param.explain" />
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowProblem = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="isShowProblem = false">纭畾</el-button>
-      </span>
-    </el-dialog>
-  </GlobalWindow>
-</template>
-
-<script>
-import GlobalWindow from '@/components/common/GlobalWindow'
-import {
-  getVisitedDetail,
-  approveDo
-} from '@/api'
-export default {
-  components: { GlobalWindow },
-  data() {
-    return {
-      id: '',
-      type: '',
-
-      title: '璁垮棰勭害璇︽儏',
-      isShowModal: false,
-      info: {},
-      isShowAppr: false,
-      apprTitle: '鍚屾剰',
-      subLoading: false,
-      param: {},
-
-      isShowProblem: false,
-      rules: {
-        checkInfo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
-      },
-      statusMap: {
-        0: '寰呭鏍�',
-        1: '澶勭悊涓�',
-        2: '宸插悓鎰�',
-        3: '宸叉嫆缁�',
-        4: '宸插彇娑�',
-      },
-      cateList: {
-        0: '璁垮鐢宠',
-        1: '璁垮鎶ュ',
-        2: '鐢ㄨ溅鐢宠',
-        3: '闅愭偅闅忔墜鎷�',
-        4: '鐗╂祦杞︾敵璇�'
-      }
-    }
-  },
-  methods: {
-    onSubAppr() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (!valid) {
-          return
-        }
-        this.$dialog.actionConfirm('鎿嶄綔纭', this.param.status === 2 ? '鎮ㄧ‘璁ゅ悓鎰忚鐢宠鍚楋紵' : '鎮ㄧ‘璁ゆ嫆缁濊鐢宠鍚楋紵')
-          .then(() => {
-            this.subLoading = true
-            approveDo({
-              objId: this.id,
-              objType: this.info.type,
-              status: this.param.status,
-              checkInfo: this.param.checkInfo
-            })
-              .then(res => {
-                this.subLoading = false
-                this.$tip.apiSuccess('澶勭悊鎴愬姛')
-                this.getDetail()
-                this.$emit('success')
-                this.$emit('close')
-                this.isShowAppr = false
-              })
-              .finally(() => {
-                this.subLoading = false
-              })
-          })
-      })
-    },
-    close(){
-      this.isShowModal = false
-      this.$emit('close')
-    },
-    getDetail() {
-      const { id, type } = this
-      console.log(id, type)
-      switch (type) {
-        case 0:
-          getVisitedDetail({ id }).then(res => {
-            this.info = res
-            if (this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0) {
-              this.info.approveDateVO.approveList.forEach(item => {
-                if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
-                  item.title = item.approveList[0].title
-                  item.faceImg = item.approveList[0].faceImg
-                  item.memberName = item.approveList[0].memberName
-                  item.statusInfo = item.approveList[0].statusInfo
-                  item.approveList = []
-                }
-              })
-            }
-          })
-          break
-
-        default:
-          break
-      }
-    },
-    handleAppr(val) {
-      this.$set(this.param, 'status', val)
-      this.isShowAppr = true
-      this.$nextTick(() => {
-        this.$refs.ruleForm.clearValidate()
-      })
-    },
-    confirm() {
-      console.log('--')
-    },
-    handleTransfer() {
-      this.isShowProblem = true
-    },
-    reject() { },
-    handleAvatarSuccess() { },
-    beforeAvatarUpload() { }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "@/assets/style/variables.scss";
-
-.upload_box {
-  width: 84px;
-  height: 84px;
-  border-radius: 4px;
-  background-color: #f7f7f7;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  color: #999999;
-  border: 1px solid #e4e4e4;
-
-  .icon {
-    font-size: 24px;
-  }
-
-  .text {
-    font-size: 12px;
-  }
-}
-
-.side_title {
-  font-weight: 600;
-  font-size: 18px;
-  color: #111111;
-  margin-bottom: 20px;
-  margin-left: 20px;
-  margin-top: 20px;
-}
-
-.modal_wrap {
-  display: flex;
-  height: 100%;
-
-  .modal_content {
-    flex: 1;
-    padding: 0px 30px;
-    border-radius: 8px;
-    overflow: hidden;
-    height: 100%;
-
-    .title {
-      font-weight: 600;
-      font-size: 18px;
-      color: #333333;
-      margin-bottom: 20px;
-      margin-top: 30px;
-    }
-
-    .info {
-      .list {
-        display: flex;
-        flex-wrap: wrap;
-
-        .item {
-          display: flex;
-          width: 40%;
-          margin-bottom: 20px;
-
-          &:nth-of-type(2n) {
-            width: 60%;
-          }
-
-          .label {
-            color: #888888;
-            width: 100px;
-          }
-
-          .value {
-            color: #111111;
-          }
-        }
-      }
-    }
-
-    .header {
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-      padding: 20px 30px;
-      margin: 0 -30px;
-      border-radius: 8px 8px 0 0;
-      position: relative;
-
-      .head_bg {
-        position: absolute;
-        width: 100%;
-        height: 100%;
-        left: 0;
-        top: 0;
-        z-index: 9;
-      }
-
-      .h1 {
-        font-weight: 600;
-        font-size: 22px;
-        color: #111111;
-        margin-bottom: 8px;
-      }
-
-      .time {
-        font-size: 14px;
-        color: #999999;
-      }
-
-      .right {
-        height: 40px;
-        font-size: 16px;
-        color: #ffffff;
-        line-height: 40px;
-        padding: 0 20px;
-        background: #207ff7;
-        box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
-        border-radius: 16px 0px 16px 0px;
-        position: relative;
-        z-index: 99;
-      }
-
-      .scs {
-        background-color: #00BA67;
-      }
-
-      .msg {
-        background-color: #ED4545;
-      }
-    }
-
-    .table_info {
-      .name_wrap {
-        display: flex;
-        align-items: center;
-
-        .avatar {
-          width: 40px;
-          height: 40px;
-          border-radius: 50%;
-          margin-right: 12px;
-        }
-
-        .content {
-          .line {
-            display: flex;
-          }
-
-          .tag {
-            color: #b2cbf9;
-            border: 1px solid #b2cbf9;
-            padding: 0px 4px;
-            border-radius: 4px;
-            margin-left: 6px;
-          }
-        }
-      }
-    }
-  }
-
-  .side {
-    height: 100%;
-    width: 420px;
-    background: #ffffff;
-    border-left: 20px solid #f7f7f7;
-
-    .list {
-      .item {
-        padding: 8px 0;
-        position: relative;
-
-        .separate {
-          position: absolute;
-          border-left: 2px dashed #cccccc;
-          left: 31px;
-          height: calc(100% - 30px);
-          top: 49px;
-        }
-
-        .avatar {
-          width: 40px;
-          height: 40px;
-          border-radius: 50%;
-          margin: 0 12px 0 16px;
-          //border: 1px solid;
-        }
-
-        .childList {
-          display: flex;
-          flex-wrap: wrap;
-          margin-left: 100px;
-        }
-
-        .company {
-          font-size: 13px;
-          color: #888888;
-
-          .status {
-            color: $primaryColor;
-          }
-        }
-
-        .m_content {
-          display: flex;
-          flex-direction: column;
-          align-items: center;
-          justify-content: center;
-          margin-bottom: 4px;
-        }
-
-        .info {
-          display: flex;
-          align-items: center;
-          margin-left: 20px;
-
-          .icon {
-            position: relative;
-            z-index: 11;
-            color: #53b76f;
-            font-size: 24px;
-          }
-
-          .icon1 {
-            position: relative;
-            z-index: 11;
-            color: deepskyblue;
-            font-size: 24px;
-          }
-
-          .icon2 {
-            position: relative;
-            z-index: 11;
-            color: #dc362e;
-            font-size: 24px;
-          }
-
-          .iconnew {
-            width: 24px;
-            height: 24px;
-          }
-
-          .icon3 {
-            position: relative;
-            z-index: 11;
-            color: gray;
-            font-size: 24px;
-          }
-
-          .content {
-            flex: 1;
-
-            .line {
-              display: flex;
-              justify-content: space-between;
-              align-content: center;
-              margin-bottom: 6px;
-
-              .status {
-                color: #888888;
-              }
-
-              .padding {
-                color: $primaryColor;
-              }
-
-              .name {
-                font-weight: 600;
-                font-size: 16px;
-                color: #111111;
-              }
-
-              .time {
-                color: #888888;
-              }
-            }
-          }
-        }
-
-        .remark {
-          background: #f7f7f7;
-          border-radius: 4px;
-          padding: 13px 15px;
-          color: #666666;
-          margin-left: 100px;
-        }
-      }
-    }
-  }
-}
-</style>
diff --git a/admin/src/views/vehicle/cars.vue b/admin/src/views/vehicle/cars.vue
deleted file mode 100644
index cddc4f7..0000000
--- a/admin/src/views/vehicle/cars.vue
+++ /dev/null
@@ -1,228 +0,0 @@
-<template>
-  <TableLayout :permissions="['business:member:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="" prop="code" title="杞︾墝鍙�">
-        <el-input v-model="searchForm.code" clearable placeholder="杞︾墝鍙�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="" prop="memberName" title="杞︿富淇℃伅">
-        <el-input v-model="searchForm.memberName" clearable placeholder="杞︿富淇℃伅"
-          @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="" prop="catePName" title="鍒嗙被鍚嶇О">
-        <el-cascader v-model="searchForm.cateIds" @change="changeSel" placeholder="璇烽�夋嫨鍒嗙被" clearable :options="cateList" :props="{
-          label: 'name',
-          value: 'id',
-          children: 'childCategoryList',
-          checkStrictly: true
-        }"></el-cascader>
-      </el-form-item>
-      <el-form-item label="" prop="companyName" title="杞︿富缁勭粐鍚嶇О">
-        <el-input v-model="searchForm.companyName" clearable placeholder="杞︿富缁勭粐鍚嶇О"
-          @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="" prop="authStatus" title="鏄惁鎺堟潈">
-        <el-select v-model="searchForm.authStatus" @change="search" clearable placeholder="鏄惁鎺堟潈">
-          <el-option label="宸叉巿鏉�" value="1"></el-option>
-          <el-option label="鏈巿鏉�" value="0"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="" prop="type" title="涓氬姟绫诲瀷">
-        <el-select v-model="searchForm.type" @change="search" clearable placeholder="澶囨敞">
-          <el-option label="瀹夋嘲鍏姟杞�" value="0"></el-option>
-          <el-option label="瀹夋嘲鑷湁鐗╂祦杞�" value="1"></el-option>
-          <el-option label="鍏朵粬" value="2"></el-option>
-        </el-select>
-      </el-form-item>
-      <section>
-        <el-button type="primary" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar"
-        v-permissions="['business:cars:create', 'business:cars:exportExcel', 'business:parkBook:create']">
-        <li><el-button type="primary" @click="handleEdit" icon="el-icon-plus"
-            v-permissions="['business:cars:create']">鏂板缓</el-button></li>
-        <li><el-button type="primary" @click="$refs.OperaCarsImportWindowRef.open('浜哄憳瀵煎叆', searchForm.companyType)" v-permissions="['business:cars:create']">杞﹁締瀵煎叆</el-button>
-        </li>
-        <li><el-button type="primary" @click="exportExcel" v-permissions="['business:cars:exportExcel']">瀵煎嚭</el-button>
-        </li>
-        <li><el-button type="primary" @click="startEmpowerBatch" icon="el-icon-plus"
-            v-permissions="['business:parkbook:create']">涓嬪彂鎺堟潈</el-button></li>
-      </ul>
-      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="code" label="杞︾墝鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="memberName" label="杞︿富濮撳悕" min-width="100px"></el-table-column>
-        <el-table-column prop="memberPhone" label="杞︿富鎵嬫満鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="catePName" label="涓�绾у垎绫�" min-width="120px"></el-table-column>
-        <el-table-column prop="cateName" label="浜岀骇鍒嗙被" min-width="120px"></el-table-column>
-        <el-table-column prop="companyName" label="杞︿富缁勭粐" min-width="200px"></el-table-column>
-        <el-table-column label="鏄惁鎺堟潈" align="center" min-width="100px">
-          <template slot-scope="{row}">
-            <span v-if="row.authStatus == 1" style="color: green">鏄�</span>
-            <span v-else style="color: red">鍚�</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="parksName" align="center" label="宸叉巿鏉冨仠杞﹀満" min-width="200px">
-          <template slot-scope="{row}">
-            <div v-if="row.parkBookList && row.parkBookList.length">
-              <span v-for="item in row.parkBookList" :key="item.id" style="display: block">
-                <span
-                  :style="(item.hkStatus == 0 ? 'color:#2080f7' : (item.hkStatus == 1 ? 'color:green' : (item.hkStatus == 2 ? 'color:red' : '')))">銆恵{
-                    item.hkStatus ==
-                      0 ? '绛夊緟涓嬪彂' : (item.hkStatus == 1 ? '涓嬪彂鎴愬姛' : (item.hkStatus == 2 ? '涓嬪彂澶辫触' : '')) }}銆� </span>{{
-                    item.parksName }}
-              </span>
-            </div>
-            <span v-if="row.parkBookList == null || row.parkBookList.length == 0">-</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="涓嬪彂鏈夋晥鏈�" align="center" min-width="170px">
-          <template slot-scope="{row}">
-            <div
-              v-if="row.authStatus != null && row.authStatus == 1 && row.parkBookList != null && row.parkBookList.length > 0">
-              <div v-if="!row.startTime || !row.endTime">闀挎湡鏈夋晥</div>
-              <div v-else>
-                <span style="color: green">璧凤細{{ row.startTime }}</span><br />
-                <span style="color: red">姝細{{ row.endTime }}</span>
-              </div>
-            </div>
-            <div v-else>-</div>
-          </template>
-        </el-table-column>
-        <el-table-column label="澶囨敞" min-width="120px">
-          <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="editorName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
-        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="140px"></el-table-column>
-        <el-table-column
-          v-if="containPermissions(['business:member:update', 'business:member:delete', 'business:empower:create'])"
-          label="鎿嶄綔" min-width="200" align="center" fixed="right">
-          <template slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="handleEdit(row)"
-              v-permissions="['business:cars:update']">缂栬緫</el-button>
-            <el-button type="text" icon="el-icon-edit"
-              @click="$refs.operaCarAuthWindow.open('涓嬪彂鎺堟潈', [row.id], [row.code])"
-              v-permissions="['business:parkbook:create']">涓嬪彂鎺堟潈</el-button>
-            <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" style="color: red"
-              v-permissions="['business:empower:delete']">鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
-      </pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaCarAuthWindow ref="operaCarAuthWindow" @success="handlePageChange" />
-    <OperaCarsImportWindow ref="OperaCarsImportWindowRef" @success="handlePageChange" />
-    <OperaCarsWindow v-if="isShowEdit" ref="operaCarsWindow" @close="isShowEdit = false" @success="handlePageChange" />
-  </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCarsWindow from '@/components/business/OperaCarsWindow'
-import OperaCarAuthWindow from '@/components/business/OperaCarAuthWindow'
-import OperaCarsImportWindow from './components/OperaCarsImportWindow'
-import { fetchList } from '@/api/business/category.js'
-export default {
-  name: 'Cars',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCarsWindow, OperaCarAuthWindow,OperaCarsImportWindow },
-  data() {
-    return {
-      // 鎼滅储
-      searchForm: {
-        code: '',
-        memberName: '',
-        companyName: '',
-        cateIds: [],
-        catePId: '',
-        cateId: '',
-        type: null,
-        authStatus: null,
-        ids: ''
-      },
-      isShowEdit: false,
-      cateList: [],
-      selIdsList: []
-    }
-  },
-  created() {
-    this.config({
-      module: '杞﹁締淇℃伅琛�',
-      api: '/business/cars',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.getCate()
-  },
-  methods: {
-    handleSelectionChange(e) {
-      this.searchForm.ids = e.map(i => i.id).join(',')
-    },
-    changeSel(e) {
-      console.log(e)
-      if (e && e.length == 1) {
-        this.$set(this.searchForm, 'catePId', e[0])
-        this.$set(this.searchForm, 'cateId', '')
-      } else if (e && e.length == 2) {
-        this.$set(this.searchForm, 'catePId', e[0])
-        this.$set(this.searchForm, 'cateId', e[1])
-      } else {
-        this.$set(this.searchForm, 'catePId', '')
-        this.$set(this.searchForm, 'cateId', '')
-      }
-      this.search()
-    },
-    getCate() {
-      fetchList({
-        model: {},
-        capacity: 1000,
-        page: 1,
-      }).then(res => {
-        this.cateList = res.records || []
-
-      })
-    },
-    handleEdit(row) {
-      this.isShowEdit = true
-      let str = row && row.id ? '缂栬緫杞﹁締' : '鏂板缓杞﹁締'
-      this.$nextTick(() => {
-        this.$refs.operaCarsWindow.open(str, row)
-        if (row && row.id) {
-          let form = { ...row, cateId: [] }
-          if (row.catePId) { form.cateId.push(row.catePId) }
-          if (row.cateId) { form.cateId.push(row.cateId) }
-          this.$refs.operaCarsWindow.form = form
-          this.$refs.operaCarsWindow.loadMember()
-        }
-      })
-    },
-    // 鍚屾淇℃伅
-    startEmpowerBatch() {
-      if (this.tableData.selectedRows.length === 0) {
-        this.$tip.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�')
-        return
-      }
-      var ids = []
-      var codes = []
-      this.tableData.selectedRows.forEach(item => {
-        ids.push(item.id)
-        codes.push(item.code)
-      })
-      this.$refs.operaCarAuthWindow.open('杞﹁締涓嬪彂鎺堟潈', ids, codes)
-    },
-  }
-}
-</script>
diff --git a/admin/src/views/vehicle/category.vue b/admin/src/views/vehicle/category.vue
deleted file mode 100644
index ecf4b97..0000000
--- a/admin/src/views/vehicle/category.vue
+++ /dev/null
@@ -1,130 +0,0 @@
-<template>
-    <TableLayout>
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <!-- <el-form ref="searchForm" slot="search-form" label-width="100px" inline>
-            <el-form-item label="鐘舵��" prop="status">
-                <el-select v-model="filters.status" placeholder="璇烽�夋嫨">
-                    <el-option label="鍚敤" value="0"></el-option>
-                    <el-option label="绂佺敤" value="1"></el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form> -->
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
-                <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
-                        v-permissions="['business:category:create']">鏂板缓</el-button></li>
-                <li v-permissions="['business:category:exportExcel']"><el-button type="primary" @click="exportExcel"
-                        >瀵煎嚭</el-button></li>
-            </ul>
-            <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search"
-                :data="dataList" stripe @selection-change="handleSelectionChange">
-                <el-table-column prop="name" label="鍒嗙被鍚嶇О" min-width="100px"></el-table-column>
-                <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
-                <!-- <el-table-column prop="status" label="鐘舵��" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.status === 0">鍚敤</span>
-                        <span v-if="row.status === 1">绂佺敤</span>
-                    </template>
-</el-table-column> -->
-                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-                <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])"
-                    label="鎿嶄綔" min-width="120" fixed="right">
-                    <template slot-scope="{row}">
-                        <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
-                            v-permissions="['business:category:update']">缂栬緫</el-button>
-                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
-                            v-permissions="['business:category:delete']">鍒犻櫎</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="tableData.pagination">
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaCategoryWindow v-if="isShowEdit" @close="isShowEdit = false" ref="operaCategoryWindow"
-            @success="getList" />
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from './components/OperaCategoryWindow'
-import { fetchList, deleteById } from '@/api/business/category.js'
-export default {
-    name: 'Category',
-    extends: BaseTable,
-    components: { TableLayout, Pagination, OperaCategoryWindow },
-    data() {
-        return {
-            // 鎼滅储
-            filters: {
-                parentId: ''
-            },
-            isShowEdit: false,
-            loading: false,
-            pagination: {
-                pageSize: 10,
-                page: 1,
-                total: 0,
-            },
-            dataList: []
-        }
-    },
-    created() {
-        this.config({
-      module: '杞﹁締淇℃伅琛�',
-      api: '/business/category',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-        this.getList()
-    },
-    methods: {
-        handleEdit(row) {
-            this.isShowEdit = true
-            let str = row && row.id ? '缂栬緫杞﹁締鍒嗙被' : '鏂板缓杞﹁締鍒嗙被'
-            this.$nextTick(() => {
-                this.$refs.operaCategoryWindow.open(str)
-                this.$refs.operaCategoryWindow.getList()
-                if (row && row.id) {
-                    this.$refs.operaCategoryWindow.getDetail(row.id)
-                }
-            })
-        },
-        deleteById(row) {
-            this.$confirm(`鎮ㄧ‘璁よ鍒犻櫎璇ュ垎绫诲悧`, '娓╅Θ鎻愮ず', {
-                confirmButtonText: '纭畾',
-                cancelButtonText: '鍙栨秷',
-                type: 'warning'
-            }).then(() => {
-                deleteById(row.id).then(res => {
-                    this.getList()
-                })
-            })
-
-        },
-        getList() {
-            const { pagination, filters } = this
-            this.loading = true
-            fetchList({
-                model: { ...filters },
-                capacity: pagination.pageSize,
-                page: pagination.page,
-            }).then(res => {
-                this.loading = false
-                this.dataList = res.records || []
-                this.pagination.total = res.total || 0
-            }, () => {
-                this.loading = false
-            })
-        },
-    }
-}
-</script>
diff --git a/admin/src/views/vehicle/components/OperaCarsImportWindow.vue b/admin/src/views/vehicle/components/OperaCarsImportWindow.vue
deleted file mode 100644
index a0ab3a4..0000000
--- a/admin/src/views/vehicle/components/OperaCarsImportWindow.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-<template>
-  <el-dialog
-      class="center-title"
-      :title="title"
-      width="500px"
-      top="30vh"
-      :visible.sync="visible"
-      :confirm-working="isWorking"
-      @confirm="confirm"
-  >
-    <p class="tip-warn"><i class="el-icon-warning"></i>瀵煎叆璇存槑锛�<br>
-      1.璇峰厛涓嬭浇鏂囦欢妯℃澘锛屽苟鎸夌収妯℃澘瑕佸幓濉啓琛ㄦ牸鍐呭;<br>
-    </p>
-    <el-form class="demo-form-inline" >
-      <el-form-item label="杞﹁締淇℃伅" required>
-        <div style="width: 100%;display: flex;align-items: center;">
-          <el-button type="primary"   @click="clickRef">鐐瑰嚮涓婁紶</el-button>
-          <el-button type="text" @click="exportTemplate">鐐瑰嚮涓嬭浇妯$増.EXCEL</el-button>
-        </div>
-        <div style="font-size: 14px; color: black;" v-if="fileName">{{fileName}}</div>
-      </el-form-item>
-    </el-form>
-    <input type="file" style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" />
-    <template   v-slot:footer>
-      <el-button @click="visible=false">杩斿洖</el-button>
-    </template>
-  </el-dialog>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalWindow from '@/components/common/GlobalWindow'
-import { importExcel } from '@/api/business/cars'
-export default {
-  extends: BaseOpera,
-  // eslint-disable-next-line vue/no-unused-components
-  components: { GlobalWindow },
-  data () {
-    return {
-      importing:false,
-      fileName: '',
-      companyType: 0
-    }
-  },
-  methods: {
-    open (title, companyType) {
-      this.title = title
-      this.fileName = ''
-      this.visible = true
-      this.companyType = companyType
-    },
-    // 瀵煎嚭妯℃澘
-    exportTemplate () {
-      // 鎶曚繚鐢宠
-      window.open('/template/cars.xlsx')
-    },
-    clickRef () {
-      this.$refs.fileExcel.click()
-    },
-    result (e) {
-      const data = new FormData()
-      data.append('file', e.target.files[0])
-      // data.append('companyType', this.companyType)
-      importExcel(data)
-        .then(res => {
-          this.$message.success('瀵煎叆鎴愬姛')
-          this.$emit('success')
-          this.visible = false
-        })
-        .catch(err => {
-          // this.$message.error(err)
-          this.fileName = ''
-        })
-        .finally(() => {
-          this.$refs.fileExcel.value = null
-        })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>
diff --git a/admin/src/views/vehicle/components/OperaCategoryWindow.vue b/admin/src/views/vehicle/components/OperaCategoryWindow.vue
deleted file mode 100644
index b3588eb..0000000
--- a/admin/src/views/vehicle/components/OperaCategoryWindow.vue
+++ /dev/null
@@ -1,79 +0,0 @@
-<template>
-  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm">
-    <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鎵�灞炲垎绫�" prop="parentId">
-        <el-select :disabled="form.id" v-model="form.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
-          <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鍒嗙被鍚嶇О" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" v-trim />
-      </el-form-item>
-      <!-- <el-form-item label="鐘舵��" prop="status">
-        <el-select v-model="form.status" placeholder="璇烽�夋嫨">
-          <el-option label="鍚敤" value="0"></el-option>
-          <el-option label="绂佺敤" value="1"></el-option>
-        </el-select>
-      </el-form-item> -->
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim />
-      </el-form-item>
-    </el-form>
-  </GlobalWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalWindow from '@/components/common/GlobalWindow'
-import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
-export default {
-  name: 'OperaCategoryWindow',
-  extends: BaseOpera,
-  components: { GlobalWindow },
-  data() {
-    return {
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        parentId: null,
-        name: '',
-        remark: '',
-        status: '',
-        type: 1
-      },
-      // 楠岃瘉瑙勫垯
-      rules: {
-        name: [
-          { required: true, message: '璇疯緭鍏ヤ簩绾у垎绫诲悕绉�', trigger: 'blur' }
-        ],
-        status: [
-          { required: true, message: '璇烽�夋嫨鏄惁鍚敤', trigger: 'change' }
-        ]
-      },
-      dataList: []
-    }
-  },
-  created() {
-    this.config({
-      api: '/business/category',
-      'field.id': 'id'
-    })
-  },
-  methods: {
-    getList() {
-      fetchCateList({}).then(res => {
-        this.dataList = res || []
-        
-      })
-    },
-    close() {
-      this.visible = false
-      this.$emit('close')
-    },
-    getDetail(id) {
-      getInfoById(id).then(res => {
-        this.form = res
-      })
-    },
-  }
-}
-</script>
diff --git a/admin/src/views/vehicle/manager.vue b/admin/src/views/vehicle/manager.vue
deleted file mode 100644
index bb555b0..0000000
--- a/admin/src/views/vehicle/manager.vue
+++ /dev/null
@@ -1,153 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
-    <div class="table_btns">
-      <el-button icon="el-icon-plus" @click="handleEdit()" type="primary">鏂板缓</el-button>
-      <el-button @click="handleAppr" type="primary">涓嬪彂鎺堟潈</el-button>
-    </div>
-    <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column prop="name" label="杞︾墝鐓�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="name" label="涓氬姟绫诲瀷" min-width="80" show-overflow-tooltip />
-      <el-table-column prop="name" label="鎺堟潈鍋滆溅鍦�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="name" label="杞︿富濮撳悕" min-width="80" show-overflow-tooltip />
-      <el-table-column prop="name" label="鐢宠鏈夋晥鏈�" min-width="110" show-overflow-tooltip />
-      <el-table-column prop="name" label="鍋滆溅鍦轰笅鍙�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="name" label="鎿嶄綔浜�" min-width="80" show-overflow-tooltip />
-      <el-table-column prop="name" label="鎿嶄綔鏃堕棿" min-width="110" show-overflow-tooltip />
-
-      <el-table-column label="鎿嶄綔" width="230" fixed="right">
-        <!-- v-permissions="['business:company:update']" -->
-        <template slot-scope="{ row }">
-          <el-button type="text" icon="el-icon-edit" @click="handleEdit(row)">缂栬緫</el-button>
-          <el-button type="text" icon="el-icon-delete" @click="handleDel(row)" class="red">鍒犻櫎</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
-    <!--  -->
-    <el-dialog :title="param.id ? '缂栬緫杞﹁締' : '鏂板杞﹁締'" :visible.sync="isShowEdit" width="600px">
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
-        <el-form-item label="杞︾墝鐓�">
-          <el-input type="text" placeholder="璇疯緭鍏�" v-model="param.explain" />
-        </el-form-item>
-        <el-form-item label="涓氬姟绫诲瀷">
-          <el-radio v-model="param.aa" label="1">鍛樺伐杞﹁締</el-radio>
-        </el-form-item>
-        <el-form-item label="杞︿富濮撳悕">
-          <el-select v-model="param.b" filterable placeholder="璇烽�夋嫨,鍗曢�夛紝鏀寔鎼滅储">
-            <el-option></el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowEdit = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="handleSub">纭畾</el-button>
-      </span>
-    </el-dialog>
-    <!--  -->
-    <el-dialog title="鍋滆溅鍦烘巿鏉�" :visible.sync="isShowAuthor" width="600px">
-      <el-form :model="authorization" :rules="rules" ref="authorForm" label-width="100px">
-        <el-form-item label="鎺堟潈鍋滆溅鍦�">
-          <el-select v-model="authorization.b" filterable placeholder="璇烽�夋嫨,澶氶��">
-            <el-option></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="鐢宠鏈夋晥鏈�">
-          <el-radio v-model="authorization.aa" label="1">闀挎湡鏈夋晥</el-radio>
-          <div class="mt10">
-            <el-date-picker v-model="authorization.ac" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�"
-              format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" end-placeholder="缁撴潫鏃ユ湡">
-            </el-date-picker>
-          </div>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowAuthor = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="authorSub">鎻愪氦</el-button>
-      </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-export default {
-  components: {
-    Pagination,
-    QueryForm
-  },
-  data() {
-    return {
-      filters: {},
-      loading: false,
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'idCard',
-            type: 'input',
-            label: '杞︾墝鐓�'
-          },
-          {
-            filed: 'name',
-            type: 'select',
-            label: '涓氬姟绫诲瀷',
-            options: []
-          },
-          {
-            filed: 'name',
-            type: 'select',
-            label: '鍋滆溅鍦轰笅鍙�',
-            options: []
-          }
-        ],
-        online: true
-      },
-      pagination: {
-        capacity: 10,
-        page: 1
-      },
-      list: [{}],
-      total: 0,
-
-      isShowEdit: false,
-      param: {},
-      isShowAuthor: false,
-      authorization: {},
-      rules: {}
-    }
-  },
-  methods: {
-    handleSub() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          alert('submit!')
-        }
-      })
-    },
-    authorSub() { },
-    handleEdit(row) {
-      this.isShowEdit = true
-    },
-    handleAppr() {
-      this.isShowAuthor = true
-    },
-    handleDel(row) {
-      this.$confirm('纭鍒犻櫎璇ヨ溅杈�', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-
-      })
-    },
-    getList(page) { },
-    clear() { },
-    handleSizeChange(capacity) {
-      this.pagination.capacity = capacity
-    }
-  }
-}
-</script>
-
-<style></style>
diff --git a/admin/src/views/vehicle/parkBook.vue b/admin/src/views/vehicle/parkBook.vue
deleted file mode 100644
index 5902ae2..0000000
--- a/admin/src/views/vehicle/parkBook.vue
+++ /dev/null
@@ -1,146 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:member:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item title="杞︾墝鍙�" prop="carCode">
-                <el-input v-model="searchForm.carCode" placeholder="杞︾墝鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item title="杞︿富淇℃伅" prop="memberName">
-                <el-input v-model="searchForm.memberName" placeholder="杞︿富淇℃伅" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item title="杞︿富缁勭粐" prop="companyName">
-                <el-input v-model="searchForm.companyName" placeholder="杞︿富缁勭粐鍚嶇О" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item title="鍋滆溅搴撳悕绉�" prop="parksName">
-                <el-input v-model="searchForm.parksName" placeholder="鍋滆溅搴撳悕绉�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
-<!--
-                <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:cars:delete']">鍒犻櫎</el-button></li>
--->
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="carCode" label="杞︾墝鍙�" fixed min-width="100px"></el-table-column>
-                <el-table-column prop="parksName" label="鍋滆溅鍦�" fixed min-width="100px"></el-table-column>
-              <el-table-column prop="startTime" label="鏈夋晥鏈�"  align="center" fixed min-width="150px">
-                <template slot-scope="{row}">
-                  <div v-if="!row.startTime || !row.endTime">闀挎湡鏈夋晥</div>
-                  <div v-else>
-                    <span style="color: green">璧凤細{{row.startTime}}</span><br/>
-                    <span style="color: red">姝細{{row.endTime}}</span>
-                  </div>
-                </template>
-              </el-table-column>
-              <el-table-column prop="startTime" label="鐘舵��" fixed min-width="100px">
-                <template slot-scope="{row}">
-                  <div v-if="row.isdeleted==1"  style="color: red">宸插垹闄�</div>
-                  <div v-else style="color: green">
-                    <span v-if="row.hkStatus==0"  style="color: #435EBE">寰呬笅鍙�</span>
-                    <span v-if="row.hkStatus==1"  style="color: green">涓嬪彂鎴愬姛</span>
-                    <span v-if="row.hkStatus==2"  style="color: red">涓嬪彂澶辫触</span>
-                  </div>
-                </template>
-              </el-table-column>
-                <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px">
-                    <template slot-scope="{row}">
-                        <span v-if="row.memberType === 0">鍔冲姟璁垮</span>
-                        <span v-if="row.memberType === 1">鏅�氳瀹�</span>
-                        <span v-if="row.memberType === 2">鍐呴儴浜哄憳</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="memberName" label="濮撳悕" min-width="100px"></el-table-column>
-                <el-table-column prop="memberPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="companyName" label="缁勭粐" min-width="100px"></el-table-column>
-              <el-table-column prop="remark" label="澶囨敞" min-width="100px">
-                <template slot-scope="{row}">
-                  <span v-if="row.isdeleted !=2">{{row.remark}}</span>
-                </template>
-              </el-table-column>
-                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="140px"></el-table-column>
-<!--                <el-table-column-->
-<!--                    v-if="containPermissions(['business:member:update', 'business:member:delete'])"-->
-<!--                    label="鎿嶄綔"-->
-<!--                    min-width="120"-->
-<!--                    fixed="right"-->
-<!--                >-->
-<!--                    <template slot-scope="{row}">-->
-<!--&lt;!&ndash;                        <el-button type="text" @click="$refs.operaCarsWindow.open('缂栬緫杞﹁締淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:member:update']">缂栬緫</el-button>&ndash;&gt;-->
-<!--                        <el-button type="text" @click="deleteById(row)" v-if="row.isdeleted !=1" icon="el-icon-delete" v-permissions="['business:parkbook:delete']">鍒犻櫎</el-button>-->
-<!--&lt;!&ndash;-->
-<!--                        <el-button type="text" @click="reUpdate(row)" v-if="row.isdeleted !=1 && row.hkStatus ==0" icon="el-icon-edit" v-permissions="['business:parkbook:update']">绔嬪埢涓嬪彂</el-button>-->
-<!--&ndash;&gt;-->
-<!--                    </template>-->
-<!--                </el-table-column>-->
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaCarsWindow ref="operaCarsWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCarsWindow from '@/components/business/OperaCarsWindow'
-import { validity } from '@/utils/util'
-import { sync } from '@/api/business/cars'
-import { batchLoss } from '@/api/business/memberCard'
-import {reUpdate} from "@/api/business/parkBook";
-export default {
-  name: 'parkBook',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCarsWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        carCode: '',
-        memberName: '',
-        parksName: '',
-        companyName: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '杞﹁締淇℃伅琛�',
-      api: '/business/parkBook',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-    validity (startTime, endTime) {
-      return validity(startTime, endTime)
-    },
-    reUpdate (row) {
-      reUpdate({ id: row.id })
-        .then(res => {
-          this.$message.success('鎿嶄綔鎴愬姛')
-          this.search()
-        })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/vehicle/parks.vue b/admin/src/views/vehicle/parks.vue
deleted file mode 100644
index d0764f3..0000000
--- a/admin/src/views/vehicle/parks.vue
+++ /dev/null
@@ -1,105 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:member:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="鍋滆溅搴撳悕绉�" prop="name">
-                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ仠杞﹀簱鍚嶇О" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <el-form-item label="鎵�灞炲仠杞﹀簱" prop="parentHkId">
-                <el-select v-model="searchForm.parentHkId" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in list"
-                        :key="item.id"
-                        :label="item.name"
-                        :value="item.id">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar">
-                <li><el-button type="primary"  v-permissions="['business:hksync:park']"  @click="syncParks()">鍚屾</el-button></li>
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-            >
-                <el-table-column prop="name" label="鍋滆溅搴撳悕绉�" min-width="100px"></el-table-column>
-                <el-table-column prop="parentName" label="鎵�灞炲仠杞﹀簱" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-                <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import {findList, syncParks} from '@/api/business/parks'
-export default {
-  name: 'Parks',
-  extends: BaseTable,
-  components: { TableLayout, Pagination },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        name: '',
-        parentHkId: ''
-      },
-      list: []
-    }
-  },
-  created () {
-    this.config({
-      module: '鍋滆溅搴撲俊鎭〃',
-      api: '/business/parks',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-    this.getfindList()
-  },
-  methods: {
-    syncParks(){
-      this.$dialog.actionConfirm("鎿嶄綔纭鎻愰啋","鎮ㄧ‘璁ゅ悓姝ュ叏閮ㄤ俊鎭悧锛�")
-          .then(() => {
-            this.isWorking.delete = true
-            this.api.syncParks({})
-                .then(res => {
-                  this.$tip.apiSuccess(res || '鍚屾鎴愬姛')
-                  this.__afterDelete()
-                })
-                .catch(e => {
-                  this.$tip.apiFailed(e)
-                })
-                .finally(() => {
-                  this.isWorking.delete = false
-                })
-          })
-          .catch(() => {})
-    },
-    getfindList () {
-      findList({})
-        .then(res => {
-          this.list = res
-          console.log(res)
-        })
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/vehicle/visitPark.vue b/admin/src/views/vehicle/visitPark.vue
deleted file mode 100644
index 680b58c..0000000
--- a/admin/src/views/vehicle/visitPark.vue
+++ /dev/null
@@ -1,101 +0,0 @@
-<template>
-    <TableLayout :permissions="['business:visitpark:query']">
-        <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item title="杞︾墝鍙�" prop="carCode">
-                <el-input v-model="searchForm.carCode" placeholder="杞︾墝鍙�" @keypress.enter.native="search"></el-input>
-            </el-form-item>
-            <section>
-                <el-button type="primary" @click="search">鎼滅储</el-button>
-                <el-button @click="reset">閲嶇疆</el-button>
-            </section>
-        </el-form>
-        <!-- 琛ㄦ牸鍜屽垎椤� -->
-        <template v-slot:table-wrap>
-            <ul class="toolbar" v-permissions="['business:visitpark:create', 'business:visitpark:delete']">
-            </ul>
-            <el-table
-                v-loading="isWorking.search"
-                :data="tableData.list"
-                stripe
-                @selection-change="handleSelectionChange"
-            >
-                <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="carCode" label="杞︾墝鍙�" fixed min-width="100px"></el-table-column>
-                <el-table-column prop="parksName" label="鍋滆溅鍦�" fixed min-width="100px"></el-table-column>
-              <el-table-column prop="startTime" label="鏈夋晥鏈�"  align="center" fixed min-width="150px">
-                <template slot-scope="{row}">
-                  <div v-if="!row.startTime || !row.endTime">闀挎湡鏈夋晥</div>
-                  <div v-else>
-                    <span style="color: green">璧凤細{{row.startTime}}</span><br/>
-                    <span style="color: red">姝細{{row.endTime}}</span>
-                  </div>
-                </template>
-              </el-table-column>
-              <el-table-column prop="startTime" label="鐘舵��" fixed min-width="100px">
-                <template slot-scope="{row}">
-                  <div v-if="row.isdeleted==1"  style="color: red">宸插垹闄�</div>
-                  <div v-else style="color: green">
-                    <span v-if="row.hkStatus==0"  style="color: #435EBE">寰呬笅鍙�</span>
-                    <span v-if="row.hkStatus==1"  style="color: green">棰勭害鎴愬姛</span>
-                    <span v-if="row.hkStatus==2"  style="color: red">棰勭害澶辫触</span>
-                    <span v-if="row.hkStatus==2"  style="color: red">宸插彇娑�</span>
-                  </div>
-                </template>
-              </el-table-column>
-              <el-table-column prop="remark" label="澶囨敞" min-width="100px">
-                <template slot-scope="{row}">
-                  <span v-if="row.isdeleted !=2">{{row.remark}}</span>
-                </template>
-              </el-table-column>
-                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="140px"></el-table-column>
-            </el-table>
-            <pagination
-                @size-change="handleSizeChange"
-                @current-change="handlePageChange"
-                :pagination="tableData.pagination"
-            >
-            </pagination>
-        </template>
-        <!-- 鏂板缓/淇敼 -->
-        <OperaCarsWindow ref="operaCarsWindow" @success="handlePageChange"/>
-    </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCarsWindow from '@/components/business/OperaCarsWindow'
-import { validity } from '@/utils/util'
-export default {
-  name: 'parkBook',
-  extends: BaseTable,
-  components: { TableLayout, Pagination, OperaCarsWindow },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        carCode: '',
-        memberName: '',
-        parksName: '',
-        companyName: ''
-      }
-    }
-  },
-  created () {
-    this.config({
-      module: '杞﹁締淇℃伅琛�',
-      api: '/business/visitPark',
-      'field.id': 'id',
-      'field.main': 'id'
-    })
-    this.search()
-  },
-  methods: {
-    validity (startTime, endTime) {
-      return validity(startTime, endTime)
-    }
-  }
-}
-</script>
diff --git a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
new file mode 100644
index 0000000..1bdcfef
--- /dev/null
+++ b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
@@ -0,0 +1,150 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏍囬" prop="title">
+        <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎯呭喌璇存槑" prop="content">
+        <el-input v-model="form.content" placeholder="璇疯緭鍏ユ儏鍐佃鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="涓婇棬鏃堕棿" prop="getDate">
+        <el-date-picker v-model="form.getDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ヤ笂闂ㄦ椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" prop="projectId">
+        <el-input v-model="form.projectId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_project)" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" prop="buildingId">
+        <el-input v-model="form.buildingId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_building)" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎵�灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" prop="roomId">
+        <el-input v-model="form.roomId" placeholder="璇疯緭鍏ユ墍灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎻愭姤浜虹紪鐮�" prop="userId">
+        <el-input v-model="form.userId" placeholder="璇疯緭鍏ユ彁鎶ヤ汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鑱旂郴鐢佃瘽" prop="phone">
+        <el-input v-model="form.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鎻愭姤鏃堕棿" prop="submitDate">
+        <el-date-picker v-model="form.submitDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ彁鎶ユ椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�" prop="cateId">
+        <el-input v-model="form.cateId" placeholder="璇疯緭鍏ュ伐鍗曞垎绫荤紪鐮�(鍏宠仈category锛�" v-trim/>
+      </el-form-item>
+      <el-form-item label="淇濅慨鍖哄煙绫诲瀷 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" prop="areaType">
+        <el-input v-model="form.areaType" placeholder="璇疯緭鍏ヤ繚淇尯鍩熺被鍨� 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" v-trim/>
+      </el-form-item>
+      <el-form-item label="宸ュ崟缂栧彿" prop="code">
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ュ伐鍗曠紪鍙�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶勭悊鐘舵�� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" prop="dealStatus">
+        <el-input v-model="form.dealStatus" placeholder="璇疯緭鍏ュ鐞嗙姸鎬� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒嗘淳浜虹紪鐮�(鍏宠仈system_user)" prop="dispatchUserId">
+        <el-input v-model="form.dispatchUserId" placeholder="璇疯緭鍏ュ垎娲句汉缂栫爜(鍏宠仈system_user)" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒嗘淳鏃堕棿" prop="dispatchDate">
+        <el-date-picker v-model="form.dispatchDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垎娲炬椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鍒嗘淳澶勭悊璇存槑" prop="dispatchInfo">
+        <el-input v-model="form.dispatchInfo" placeholder="璇疯緭鍏ュ垎娲惧鐞嗚鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" prop="dealUserId">
+        <el-input v-model="form.dealUserId" placeholder="璇疯緭鍏ュ鐞嗕汉缂栫爜(鍏宠仈system_user)" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶勭悊鏃堕棿" prop="dealDate">
+        <el-date-picker v-model="form.dealDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ鐞嗘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="澶勭悊澶囨敞" prop="dealInfo">
+        <el-input v-model="form.dealInfo" placeholder="璇疯緭鍏ュ鐞嗗娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="澶勭悊鏂瑰紡 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" prop="dealType">
+        <el-input v-model="form.dealType" placeholder="璇疯緭鍏ュ鐞嗘柟寮� 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaYwWorkorderWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        title: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        content: '',
+        getDate: '',
+        projectId: '',
+        buildingId: '',
+        roomId: '',
+        userId: '',
+        phone: '',
+        submitDate: '',
+        cateId: '',
+        areaType: '',
+        code: '',
+        dealStatus: '',
+        dispatchUserId: '',
+        dispatchDate: '',
+        dispatchInfo: '',
+        dealUserId: '',
+        dealDate: '',
+        dealInfo: '',
+        dealType: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/workorder/ywWorkorder',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/admin/src/views/platform/LogisticsRecord/screen.vue b/admin/src/views/workorder/workorderCate.vue
similarity index 100%
copy from admin/src/views/platform/LogisticsRecord/screen.vue
copy to admin/src/views/workorder/workorderCate.vue
diff --git a/admin/src/views/workorder/workorderList.vue b/admin/src/views/workorder/workorderList.vue
new file mode 100644
index 0000000..05a7417
--- /dev/null
+++ b/admin/src/views/workorder/workorderList.vue
@@ -0,0 +1,219 @@
+<template>
+  <TableLayout :permissions="['business:ywworkorder:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="涓婚敭" prop="id">
+        <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏍囬" prop="title">
+        <el-input v-model="searchForm.title" placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="remark">
+        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
+        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="searchForm.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎯呭喌璇存槑" prop="content">
+        <el-input v-model="searchForm.content" placeholder="璇疯緭鍏ユ儏鍐佃鏄�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="涓婇棬鏃堕棿" prop="getDate">
+        <el-date-picker v-model="searchForm.getDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ヤ笂闂ㄦ椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" prop="projectId">
+        <el-input v-model="searchForm.projectId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_project)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" prop="buildingId">
+        <el-input v-model="searchForm.buildingId" placeholder="璇疯緭鍏ユ墍灞為」鐩紪鐮侊紙鍏宠仈yw_building)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎵�灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" prop="roomId">
+        <el-input v-model="searchForm.roomId" placeholder="璇疯緭鍏ユ墍灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎻愭姤浜虹紪鐮�" prop="userId">
+        <el-input v-model="searchForm.userId" placeholder="璇疯緭鍏ユ彁鎶ヤ汉缂栫爜" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鑱旂郴鐢佃瘽" prop="phone">
+        <el-input v-model="searchForm.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎻愭姤鏃堕棿" prop="submitDate">
+        <el-date-picker v-model="searchForm.submitDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ彁鎶ユ椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�" prop="cateId">
+        <el-input v-model="searchForm.cateId" placeholder="璇疯緭鍏ュ伐鍗曞垎绫荤紪鐮�(鍏宠仈category锛�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="淇濅慨鍖哄煙绫诲瀷 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" prop="areaType">
+        <el-input v-model="searchForm.areaType" placeholder="璇疯緭鍏ヤ繚淇尯鍩熺被鍨� 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="宸ュ崟缂栧彿" prop="code">
+        <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ュ伐鍗曠紪鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶勭悊鐘舵�� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" prop="dealStatus">
+        <el-input v-model="searchForm.dealStatus" placeholder="璇疯緭鍏ュ鐞嗙姸鎬� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒嗘淳浜虹紪鐮�(鍏宠仈system_user)" prop="dispatchUserId">
+        <el-input v-model="searchForm.dispatchUserId" placeholder="璇疯緭鍏ュ垎娲句汉缂栫爜(鍏宠仈system_user)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒嗘淳鏃堕棿" prop="dispatchDate">
+        <el-date-picker v-model="searchForm.dispatchDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垎娲炬椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="鍒嗘淳澶勭悊璇存槑" prop="dispatchInfo">
+        <el-input v-model="searchForm.dispatchInfo" placeholder="璇疯緭鍏ュ垎娲惧鐞嗚鏄�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" prop="dealUserId">
+        <el-input v-model="searchForm.dealUserId" placeholder="璇疯緭鍏ュ鐞嗕汉缂栫爜(鍏宠仈system_user)" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶勭悊鏃堕棿" prop="dealDate">
+        <el-date-picker v-model="searchForm.dealDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ鐞嗘椂闂�" @change="search"/>
+      </el-form-item>
+      <el-form-item label="澶勭悊澶囨敞" prop="dealInfo">
+        <el-input v-model="searchForm.dealInfo" placeholder="璇疯緭鍏ュ鐞嗗娉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="澶勭悊鏂瑰紡 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" prop="dealType">
+        <el-input v-model="searchForm.dealType" placeholder="璇疯緭鍏ュ鐞嗘柟寮� 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:ywworkorder:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:ywworkorder:create', 'business:ywworkorder:delete']">
+        <li><el-button type="primary" @click="$refs.operaYwWorkorderWindow.open('鏂板缓杩愮淮宸ュ崟淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:ywworkorder:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:ywworkorder:delete']">鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
+        <el-table-column prop="creator" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="title" label="鏍囬" min-width="100px"></el-table-column>
+        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="鐘舵�� 0鍚敤 1绂佺敤" min-width="100px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="content" label="鎯呭喌璇存槑" min-width="100px"></el-table-column>
+        <el-table-column prop="getDate" label="涓婇棬鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="projectId" label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)" min-width="100px"></el-table-column>
+        <el-table-column prop="buildingId" label="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_building)" min-width="100px"></el-table-column>
+        <el-table-column prop="roomId" label="鎵�灞炴埧闂寸紪鐮侊紙鍏宠仈yw_room)" min-width="100px"></el-table-column>
+        <el-table-column prop="userId" label="鎻愭姤浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="phone" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column>
+        <el-table-column prop="submitDate" label="鎻愭姤鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="cateId" label="宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�" min-width="100px"></el-table-column>
+        <el-table-column prop="areaType" label="淇濅慨鍖哄煙绫诲瀷 0瀹ゅ唴缁翠慨 1鍏叡鍖哄煙" min-width="100px"></el-table-column>
+        <el-table-column prop="code" label="宸ュ崟缂栧彿" min-width="100px"></el-table-column>
+        <el-table-column prop="dealStatus" label="澶勭悊鐘舵�� 0寰呭鐞� 1宸插垎娲� 2宸插鐞�" min-width="100px"></el-table-column>
+        <el-table-column prop="dispatchUserId" label="鍒嗘淳浜虹紪鐮�(鍏宠仈system_user)" min-width="100px"></el-table-column>
+        <el-table-column prop="dispatchDate" label="鍒嗘淳鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="dispatchInfo" label="鍒嗘淳澶勭悊璇存槑" min-width="100px"></el-table-column>
+        <el-table-column prop="dealUserId" label="澶勭悊浜虹紪鐮�(鍏宠仈system_user)" min-width="100px"></el-table-column>
+        <el-table-column prop="dealDate" label="澶勭悊鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column prop="dealInfo" label="澶勭悊澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="dealType" label="澶勭悊鏂瑰紡 0鎸囨淳鍚庡鐞� 1鐩存帴鍥炲" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:ywworkorder:update', 'business:ywworkorder:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" @click="$refs.operaYwWorkorderWindow.open('缂栬緫杩愮淮宸ュ崟淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:ywworkorder:update']">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:ywworkorder:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaYwWorkorderWindow ref="operaYwWorkorderWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaYwWorkorderWindow from './components/OperaYwWorkorderWindow'
+export default {
+  name: 'YwWorkorder',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaYwWorkorderWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        title: '',
+        remark: '',
+        status: '',
+        sortnum: '',
+        content: '',
+        getDate: '',
+        projectId: '',
+        buildingId: '',
+        roomId: '',
+        userId: '',
+        phone: '',
+        submitDate: '',
+        cateId: '',
+        areaType: '',
+        code: '',
+        dealStatus: '',
+        dispatchUserId: '',
+        dispatchDate: '',
+        dispatchInfo: '',
+        dealUserId: '',
+        dealDate: '',
+        dealInfo: '',
+        dealType: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '杩愮淮宸ュ崟淇℃伅琛�',
+      api: '/workorder/ywWorkorder',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>

--
Gitblit v1.9.3