From 3011b9800d6c5bee031d87bc4e225b5b1fb52571 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期六, 23 十一月 2024 09:19:21 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1

---
 company/src/components/business/OperaSolutionsDescWindow.vue           |   46 
 company/src/api/business/solutions.js                                  |   15 
 company/src/components/business/OperaInsuranceApplyWindow.vue          |  113 
 company/src/components/enterprise/addEmployeeWithDu.vue                |   51 
 company/src/components/business/OperaInsuranceApplyCheckWindow.vue     |   25 
 company/src/components/common/chooseCompany.vue                        |  144 +
 company/src/components/business/OperaUnionApplyCheckWindow.vue         |   13 
 company/.env.developmentShop                                           |    5 
 company/src/views/indexShop.vue                                        |   48 
 company/src/views/business/unionChangeUnit.vue                         |   22 
 company/src/components/business/OperaCompanyUserApplyCarefulWindow.vue |  179 ++
 company/src/api/business/contract.js                                   |   38 
 company/src/components/enterprise/confirmJobType.vue                   |   26 
 company/src/utils/request.js                                           |    4 
 company/src/views/system/role.vue                                      |   22 
 company/src/api/system/user.js                                         |   10 
 company/src/components/business/OperaContractWindow.vue                |  187 ++
 company/src/layouts/AppLayout.vue                                      |    3 
 company/src/components/enterprise/importEmployees.vue                  |   10 
 company/src/views/business/solutions.vue                               |   68 
 company/src/views/business/switchCourt.vue                             |   23 
 company/src/components/business/OperaCompanyDescWindow.vue             |   34 
 company/src/components/enterprise/factoryChange.vue                    |  100 
 company/src/views/business/unionApply.vue                              |   20 
 company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue     |  125 +
 company/src/api/business/insuranceApply.js                             |    5 
 company/src/api/business/company.js                                    |   10 
 company/src/components/business/detailsEntrustedInsurance.vue          |   72 
 company/src/components/business/modification.vue                       |   25 
 company/src/views/business/applyChange.vue                             |   37 
 company/.env.developmentCom                                            |    6 
 company/.env                                                           |    2 
 company/src/components/business/OperaSolutionsWindow.vue               |    6 
 company/src/components/business/OperaUnionChangeDetailWindow.vue       |   45 
 company/src/components/system/user/OperaUserWindow.vue                 |   78 
 company/src/views/business/contract.vue                                |  172 +
 company/src/components/business/OperaCompanyUserApplyWindow.vue        |  247 ++
 company/src/api/business/companyUserApply.js                           |   38 
 company/src/api/business/companyPermission.js                          |   10 
 company/src/views/index.vue                                            |  149 +
 company/src/assets/icons/ic_company@2x.png                             |    0 
 company/src/views/enterprise/insuranceApply.vue                        |  117 
 company/src/api/business/worktype.js                                   |    5 
 company/src/views/business/companyDepartment.vue                       |  162 +
 company/src/components/business/OperaUnionChangeCheckWindow.vue        |   75 
 company/src/components/business/operaCompanyUserApplyDescWindow.vue    |  168 +
 company/.env.development                                               |    5 
 company/src/components/business/selectPolicy.vue                       |  172 +
 company/src/api/business/companyDepartment.js                          |   42 
 company/src/components/enterprise/selectEmployees.vue                  |    6 
 company/src/components/business/OperaSolutionsBaseWindow.vue           |   59 
 company/src/views/enterprise/myPolicy.vue                              |   10 
 company/.env.productionShop                                            |    5 
 company/src/components/enterprise/renewalInsurance.vue                 |   16 
 company/src/api/system/role.js                                         |    5 
 company/src/components/business/OperaContractDescWindow.vue            |  169 +
 company/src/api/business/customerService.js                            |   38 
 company/src/views/business/company.vue                                 |    1 
 company/src/views/business/unionChange.vue                             |    8 
 company/src/components/business/allocateEnterprises.vue                |  113 +
 company/src/views/business/userManagement.vue                          |  141 +
 company/src/components/business/OperaApplyChangeCheckWindow.vue        |   32 
 company/src/assets/style/style.scss                                    |   10 
 company/src/components/business/OperaUnionChangeUnitDetailWindow.vue   |   37 
 company/public/template/personnel_no.xlsx                              |    0 
 company/src/components/business/OperaApplyChangeUnitDetailWindow.vue   |   45 
 company/src/components/system/role/Permissions.vue                     |  127 +
 company/src/views/business/companyUserApply.vue                        |  104 +
 company/src/utils/resetMessage.js                                      |   18 
 company/src/components/enterprise/additionSubtractionApplication.vue   |  182 +
 company/src/api/business/applyChange.js                                |    8 
 company/src/components/business/OperaWtbApplyShopWindow.vue            |   69 
 company/src/components/system/user/RoleConfigWindow.vue                |    7 
 company/src/views/system/user.vue                                      |  321 +-
 company/src/main.js                                                    |    2 
 company/src/components/system/user/allocationEnterprises.vue           |   11 
 company/.env.production                                                |   10 
 company/src/api/business/unionApply.js                                 |    5 
 company/src/views/business/insuranceApply.vue                          |  115 
 company/src/components/business/OperaApplyChangeDetailWindow.vue       |   26 
 company/src/components/business/authorizedEnterprise.vue               |  127 +
 company/.env.productionCom                                             |    4 
 company/src/api/system/common.js                                       |    5 
 company/src/views/business/customerService.vue                         |   93 +
 company/src/components/business/OperaCustomerServiceWindow.vue         |   64 
 company/src/components/business/OperaUnionChangeUnitCheckWindow.vue    |   65 
 company/src/components/common/CommonHeader.vue                         |  101 
 company/src/components/common/UploadFile.vue                           |   13 
 company/src/components/business/OperaCompanyDepartmentWindow.vue       |  138 +
 company/src/components/system/role/PermissionConfigWindow.vue          |    7 
 company/src/components/business/OperaApplyChangeUnitCheckWindow.vue    |   15 
 91 files changed, 4,604 insertions(+), 707 deletions(-)

diff --git a/company/.env b/company/.env
index d0e2989..db9f162 100644
--- a/company/.env
+++ b/company/.env
@@ -5,7 +5,7 @@
 
 # 椤圭洰涓婁笅鏂囪矾寰�
 # VUE_APP_CONTEXT_PATH = '/yyb_admin'
-VUE_APP_CONTEXT_PATH = '/yyb_web'
+# VUE_APP_CONTEXT_PATH = '/yyb_web'
 # VUE_APP_CONTEXT_PATH = '/yyb_shop'
 
 # 鎺ュ彛鍓嶇紑
diff --git a/company/.env.development b/company/.env.development
index d6927af..fa73b3f 100644
--- a/company/.env.development
+++ b/company/.env.development
@@ -4,11 +4,12 @@
 # 鎺ュ彛鍓嶇紑
 VUE_APP_API_PREFIX = '/yyb_admin_api'
 VUE_APP_SYSTEM_TITLE = '浜戞槗淇濆鎴锋湇鍔$郴缁�-骞冲彴绔�'
+VUE_APP_CONTEXT_PATH = '/yyb_admin'
 
 VUE_APP_COOKIE_NAME='dmplat-auth-token'
 
 # 娴嬭瘯鏈�
-# VUE_APP_API = 'https://dmtest.ahapp.net/yyb_admin_api/'
+VUE_APP_API = 'https://dmtest.ahapp.net/yyb_admin_api/'
 
 # 浠诲悍
-VUE_APP_API = 'http://192.168.0.138:10030/'
+# VUE_APP_API = 'http://192.168.0.147:10030/'
diff --git a/company/.env.developmentCom b/company/.env.developmentCom
index b2dc706..97327af 100644
--- a/company/.env.developmentCom
+++ b/company/.env.developmentCom
@@ -4,11 +4,11 @@
 # 鎺ュ彛鍓嶇紑
 # VUE_APP_API_PREFIX = '/yyb_admin_api'
 VUE_APP_SYSTEM_TITLE = '浜戞槗淇濆鎴锋湇鍔$郴缁�-浼佷笟绔�'
-
+VUE_APP_CONTEXT_PATH = '/yyb_web'
 VUE_APP_COOKIE_NAME='doumee-auth-token'
 
-#VUE_APP_API = 'https://dmtest.ahapp.net/yyb_web_api/'
+VUE_APP_API = 'https://dmtest.ahapp.net/yyb_web_api/'
 
-VUE_APP_API = 'http://192.168.0.138:10031/'
+# VUE_APP_API = 'http://192.168.0.147:10031/'
 
 # VUE_APP_API = 'https://www.yyb.red/yyb_web_api/'
diff --git a/company/.env.developmentShop b/company/.env.developmentShop
index 1c61b78..04e6f03 100644
--- a/company/.env.developmentShop
+++ b/company/.env.developmentShop
@@ -5,9 +5,10 @@
 # VUE_APP_API_PREFIX = '/yyb_admin_api'
 VUE_APP_COOKIE_NAME='dmshop-auth-token'
 VUE_APP_SYSTEM_TITLE = '浜戞槗淇濆鎴锋湇鍔$郴缁�-鍟嗘埛绔�'
-#VUE_APP_API = 'https://www.yyb.red/yyb_shop_api/'
+VUE_APP_CONTEXT_PATH = '/yyb_shop'
+VUE_APP_API = 'https://dmtest.ahapp.net/yyb_shop_api/'
 
- VUE_APP_API = 'http://192.168.0.135:10032/'
+# VUE_APP_API = 'http://192.168.0.147:10032/'
 
 #VUE_APP_API = 'http://localhost:10032/'
 
diff --git a/company/.env.production b/company/.env.production
index 03b6275..1e74d9e 100644
--- a/company/.env.production
+++ b/company/.env.production
@@ -1,14 +1,14 @@
 # 鐢熶骇鐜閰嶇疆
 NODE_ENV = 'production'
-VUE_APP_CONTEXT_PATH = '/admin'
-
 VUE_APP_API_PREFIX = '/yyb_admin_api'
-VUE_APP_CONTEXT_NAME = 'admin'
+VUE_APP_CONTEXT_NAME = 'yyb_admin'
 VUE_APP_COOKIE_NAME='dmplat-auth-token'
 VUE_APP_SYSTEM_TITLE = '浜戞槗淇濆鎴锋湇鍔$郴缁�-骞冲彴绔�'
 
+VUE_APP_CONTEXT_PATH = '/yyb_admin'
+
 # 骞冲彴绔�
-# VUE_APP_API = 'https://dmtest.ahapp.net/yyb_admin_api/'
+VUE_APP_API = 'https://dmtest.ahapp.net/yyb_admin_api/'
 
 # 浼佷笟绔�
-VUE_APP_API = 'https://www.yyb.red/yyb_admin_api/'
+# VUE_APP_API = 'https://www.yyb.red/yyb_admin_api/'
diff --git a/company/.env.productionCom b/company/.env.productionCom
index 74dbcc8..e58bfab 100644
--- a/company/.env.productionCom
+++ b/company/.env.productionCom
@@ -3,9 +3,9 @@
 
 VUE_APP_API_PREFIX = '/yyb_web_api'
 
-#VUE_APP_CONTEXT_PATH = '/company'
+VUE_APP_CONTEXT_PATH = '/yyb_web'
 
-VUE_APP_CONTEXT_NAME = 'company'
+VUE_APP_CONTEXT_NAME = 'yyb_company'
 
 VUE_APP_COOKIE_NAME='doumee-auth-token'
 
diff --git a/company/.env.productionShop b/company/.env.productionShop
index 6623bf3..9547a87 100644
--- a/company/.env.productionShop
+++ b/company/.env.productionShop
@@ -1,11 +1,10 @@
 # 鐢熶骇鐜閰嶇疆
 NODE_ENV = 'production'
 
-VUE_APP_CONTEXT_PATH = '/shop'
 VUE_APP_API_PREFIX = '/yyb_shop_api'
-VUE_APP_CONTEXT_NAME = 'shop'
+VUE_APP_CONTEXT_NAME = 'yyb_shop'
 VUE_APP_COOKIE_NAME='dmshop-auth-token'
-
+VUE_APP_CONTEXT_PATH = '/yyb_shop'
 # 骞冲彴绔�
 # VUE_APP_API = 'https://dmtest.ahapp.net/yyb_shop_api/'
 
diff --git a/company/public/template/personnel_no.xlsx b/company/public/template/personnel_no.xlsx
new file mode 100644
index 0000000..bf128e5
--- /dev/null
+++ b/company/public/template/personnel_no.xlsx
Binary files differ
diff --git a/company/src/api/business/applyChange.js b/company/src/api/business/applyChange.js
index 53f514b..bf4a495 100644
--- a/company/src/api/business/applyChange.js
+++ b/company/src/api/business/applyChange.js
@@ -57,3 +57,11 @@
 export function update (data) {
     return request.post('/business/applyChange/update', data)
 }
+
+// 瀵煎嚭淇濆崟涓嬫墍鏈夊姞鍑忎繚璇︽儏鍗�
+export function exportApplyJiajianBaoExcel (data) {
+    return request.post('/business/applyChange/exportApplyJiajianBaoExcel', data, {
+        trim: true,
+        download: true
+    })
+}
diff --git a/company/src/api/business/company.js b/company/src/api/business/company.js
index dba1e13..090cd33 100644
--- a/company/src/api/business/company.js
+++ b/company/src/api/business/company.js
@@ -55,3 +55,13 @@
 export function updateSolutions (data) {
     return request.post('/business/company/updateSolutions', data)
 }
+
+// 鏌ヨ褰撳墠浼佷笟杩涜闆嗗洟鐢宠鍙互鐢宠鐨勪紒涓�
+export function findAllCompanyList (data) {
+    return request.post('/business/company/findAllCompanyList', data)
+}
+
+// 鍙戣捣绛剧讲
+export function getSignLink (id) {
+    return request.get(`/business/companySolution/getSignLink?id=${id}`)
+}
diff --git a/company/src/api/business/companyDepartment.js b/company/src/api/business/companyDepartment.js
new file mode 100644
index 0000000..cb9f259
--- /dev/null
+++ b/company/src/api/business/companyDepartment.js
@@ -0,0 +1,42 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/companyDepartment/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/companyDepartment/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/companyDepartment/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/companyDepartment/delete/${id}`)
+}
+
+// 缁勭粐鏍戞煡璇�
+export function tree () {
+  return request.get(`/business/companyDepartment/tree`)
+}
+
+// 鎺掑簭
+export function updateSort (data) {
+  return request.post('/business/companyDepartment/updateSort', data)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/business/companyDepartment/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/company/src/api/business/companyPermission.js b/company/src/api/business/companyPermission.js
index 6afbf1a..c73e1fd 100644
--- a/company/src/api/business/companyPermission.js
+++ b/company/src/api/business/companyPermission.js
@@ -4,3 +4,13 @@
 export function create (data) {
     return request.post('/business/companyPermission/create', data)
 }
+
+// 鍒嗛〉鏌ヨ
+export function page (data) {
+    return request.post('/business/companyPermission/page', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+    return request.get(`/business/companyPermission/delete/${id}`)
+}
diff --git a/company/src/api/business/companyUserApply.js b/company/src/api/business/companyUserApply.js
new file mode 100644
index 0000000..c35a759
--- /dev/null
+++ b/company/src/api/business/companyUserApply.js
@@ -0,0 +1,38 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/companyUserApply/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/companyUserApply/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/companyUserApply/updateById', data)
+}
+
+// 鏍规嵁ID鏌ヨ
+export function getById (id) {
+  return request.get(`business/companyUserApply/${id}`)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/companyUserApply/delete/${id}`)
+}
+
+// 瀹℃壒
+export function audit (data) {
+  return request.post('/business/companyUserApply/audit', data)
+}
+
+// 鍒嗛〉鏌ヨ
+export function page (data) {
+  return request.post('/business/companyUserApply/page', data)
+}
diff --git a/company/src/api/business/contract.js b/company/src/api/business/contract.js
new file mode 100644
index 0000000..2107d0b
--- /dev/null
+++ b/company/src/api/business/contract.js
@@ -0,0 +1,38 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/contract/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/contract/create', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/contract/delete/${id}`)
+}
+
+// 鏍规嵁id鏌ヨ
+export function contractId (id) {
+  return request.get(`/business/contract/${id}`)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/contract/updateById', data)
+}
+
+// 鍚堝悓鍙栨秷
+export function cancel (id) {
+  return request.get(`/business/contract/cancel?id=${id}`)
+}
+
+// 鍙戣捣绛剧讲
+export function getSignLink (id) {
+  return request.get(`/business/contract/getSignLink?id=${id}`)
+}
diff --git a/company/src/api/business/customerService.js b/company/src/api/business/customerService.js
new file mode 100644
index 0000000..32675ea
--- /dev/null
+++ b/company/src/api/business/customerService.js
@@ -0,0 +1,38 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/customerService/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/customerService/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/customerService/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/customerService/delete/${id}`)
+}
+
+// 鏍规嵁ID鏌ヨ
+export function findByCompanyId (companyId) {
+  return request.get(`/business/customerService/findByCompanyId?companyId=${companyId}`)
+}
+
+// 鎺堟潈浼佷笟
+export function auth (data) {
+  return request.post('/business/customerService/auth', data)
+}
+
+// 鏍规嵁ID鏌ヨ
+export function getById (id) {
+  return request.get(`/business/customerService/${id}`)
+}
diff --git a/company/src/api/business/insuranceApply.js b/company/src/api/business/insuranceApply.js
index bc52189..5976ae6 100644
--- a/company/src/api/business/insuranceApply.js
+++ b/company/src/api/business/insuranceApply.js
@@ -185,3 +185,8 @@
 export function getApplyPower (data) {
     return request.post('/business/insuranceApply/getApplyPower', data)
 }
+
+// 鎶曚繚澶嶅
+export function reexamineCheck (data) {
+    return request.post('/business/insuranceApply/reexamineCheck', data)
+}
diff --git a/company/src/api/business/solutions.js b/company/src/api/business/solutions.js
index 4d890c1..aedfa3a 100644
--- a/company/src/api/business/solutions.js
+++ b/company/src/api/business/solutions.js
@@ -13,7 +13,10 @@
 }
 
 // 鏌ヨ鍏ㄩ儴淇濋櫓鏂规
-export function all (data) {
+export function all (data, type) {
+    if (!type) {
+        data.status = 0
+    }
     return request.post('/business/solutions/list', data)
 }
 
@@ -41,3 +44,13 @@
 export function getNewVersion (id) {
     return request.get(`/business/solutions/getNewVersion?solutionId=${id}`)
 }
+
+// 鏌ヨ浼佷笟鍙娇鐢ㄦ柟妗堬紙宸茬缃诧級
+export function getUseList (companyId, dateType) {
+    return request.get(`/business/solutions/getUseList?companyId=${companyId}&dateType=${dateType}`)
+}
+
+// 鏍规嵁ID鍒犻櫎
+export function deleteById (id) {
+    return request.get(`/business/solutions/delete/${id}`)
+}
diff --git a/company/src/api/business/unionApply.js b/company/src/api/business/unionApply.js
index ec6b3af..aa0de3b 100644
--- a/company/src/api/business/unionApply.js
+++ b/company/src/api/business/unionApply.js
@@ -43,3 +43,8 @@
 export function getById (id) {
     return request.get(`/business/unionApply/${id}`)
 }
+
+// 鎶曚繚澶嶅
+export function reexamineCheck (data) {
+    return request.post('/business/unionApply/reexamineCheck', data)
+}
diff --git a/company/src/api/business/worktype.js b/company/src/api/business/worktype.js
index c6fbbfc..39238ec 100644
--- a/company/src/api/business/worktype.js
+++ b/company/src/api/business/worktype.js
@@ -14,3 +14,8 @@
 export function findListByDTO (data) {
     return request.post('/business/worktype/findListByDTO', data)
 }
+
+// 涓绘柟妗堝鍏ュ伐绉�
+export function importExcelForSolution (data) {
+    return request.post('/business/worktype/importExcelForSolution', data)
+}
diff --git a/company/src/api/system/common.js b/company/src/api/system/common.js
index 7689187..220281c 100644
--- a/company/src/api/system/common.js
+++ b/company/src/api/system/common.js
@@ -32,6 +32,11 @@
   })
 }
 
+// 鍒囨崲浼佷笟
+export function switchCompany (params) {
+  return request.get('/system/switchCompany', { params })
+}
+
 // 鍝佺墝鍒楄〃鏌ヨ
 export function brand (data) {
   return request.post('/business/brand/list', data)
diff --git a/company/src/api/system/role.js b/company/src/api/system/role.js
index 5d9e34b..8f9093f 100644
--- a/company/src/api/system/role.js
+++ b/company/src/api/system/role.js
@@ -47,3 +47,8 @@
 export function createRoleMenu (data) {
   return request.post('/system/role/createRoleMenu', data)
 }
+
+// 閰嶇疆瑙掕壊鏁版嵁鏉冮檺
+export function createRoleDataPermission (data) {
+  return request.post('/system/role/createRoleDataPermission', data)
+}
diff --git a/company/src/api/system/user.js b/company/src/api/system/user.js
index 6473428..e47475a 100644
--- a/company/src/api/system/user.js
+++ b/company/src/api/system/user.js
@@ -47,3 +47,13 @@
 export function updUserStatus (params) {
   return request.get('/system/user/updUserStatus', {params})
 }
+
+// 璁剧疆鎴栧彇娑堜富绠�
+export function updateHead (data) {
+  return request.post('/system/user/updateHead', data)
+}
+
+// 鏌ヨ褰撳墠浼佷笟涓嬫墍鏈夌敤鎴�
+export function findUserList (data) {
+  return request.post('/system/user/findUserList', data)
+}
diff --git a/company/src/assets/icons/ic_company@2x.png b/company/src/assets/icons/ic_company@2x.png
new file mode 100644
index 0000000..c98e42c
--- /dev/null
+++ b/company/src/assets/icons/ic_company@2x.png
Binary files differ
diff --git a/company/src/assets/style/style.scss b/company/src/assets/style/style.scss
index 620ff86..e3d4276 100644
--- a/company/src/assets/style/style.scss
+++ b/company/src/assets/style/style.scss
@@ -99,7 +99,15 @@
 .settle-status1,.change-status6,
 .tax-status2,.union-apply-status4,
 .du-status2 {
-  color: #F95601 !important;
+  color: #f95601 !important;
+}
+
+.change-status6 {
+  color: #999 !important;
+}
+
+.change-status5, .change-status8 {
+  color: red !important;
 }
 
 .tip-warn {
diff --git a/company/src/components/business/OperaApplyChangeCheckWindow.vue b/company/src/components/business/OperaApplyChangeCheckWindow.vue
index eebee83..18d9f6b 100644
--- a/company/src/components/business/OperaApplyChangeCheckWindow.vue
+++ b/company/src/components/business/OperaApplyChangeCheckWindow.vue
@@ -101,7 +101,7 @@
                 <div class="form_item">
                     <div class="form_item_label"><span>*</span>涓婁紶鎵瑰崟锛�</div>
                     <div class="form_item_val">
-                      <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />
+                      <UploadFile :limit="99" :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @remove="removePIDAN" @uploadSuccess="baoxianFileUploaded" />
                     </div>
                 </div>
             </div>
@@ -122,7 +122,7 @@
                 <div class="form_item">
                     <div class="form_item_label"><span>*</span>涓婁紶鎵瑰崟锛�</div>
                     <div class="form_item_val">
-                      <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList2" @uploadSuccess="editBaoxianFileUploaded" />
+                      <UploadFile :limit="99" :uploadData="{ folder: 'apply',fileType:'.pdf' }" @remove="removeEditPiDan" :fileList="form.fileList2" @uploadSuccess="editBaoxianFileUploaded" />
                     </div>
                 </div>
                 <div class="form_item">
@@ -185,8 +185,8 @@
         applyStartTime: null,
         delValidTime: null,
         validCode: null,
-        pidanFile: null,
-        editPidanFile: null,
+        pidanFile: [],
+        editPidanFile: [],
         fileList1: [],
         fileList2: [],
         selectRadio: 0
@@ -217,8 +217,8 @@
         delValidTime: null,
         applyStartTime: null,
         validCode: null,
-        pidanFile: null,
-        editPidanFile: null,
+        pidanFile: [],
+        editPidanFile: [],
         fileList1: [],
         fileList2: [],
         selectRadio: 0
@@ -313,10 +313,24 @@
       }
     },
     baoxianFileUploaded (data) {
-      this.form.pidanFile = data
+      this.form.pidanFile.push(data)
+    },
+    removePIDAN(e) {
+      this.form.pidanFile.forEach((item, index) => {
+        if (e === item.imgaddr) {
+          this.form.pidanFile.splice(index, 1)
+        }
+      })
     },
     editBaoxianFileUploaded (data) {
-      this.form.editPidanFile = data
+      this.form.editPidanFile.push(data)
+    },
+    removeEditPiDan(e) {
+        this.form.editPidanFile.forEach((item, index) => {
+            if (e === item.imgaddr) {
+                this.form.editPidanFile.splice(index, 1)
+            }
+        })
     },
     backDo () {
       this.$dialog.messageConfirm('纭杩涜璇ユ搷浣滃悧锛�')
@@ -353,7 +367,7 @@
             applyStartTime: (this.model.delOnlyReplace != 1 ? this.form.applyStartTime : this.form.delValidTime),
             delValidTime: this.form.delValidTime,
             validCode: this.form.validCode,
-            pidanFile: this.form.pidanFile
+            pidanFileList: this.form.pidanFile
           })
             .then(response => {
               this.visible = false
diff --git a/company/src/components/business/OperaApplyChangeDetailWindow.vue b/company/src/components/business/OperaApplyChangeDetailWindow.vue
index 763ce82..9e76416 100644
--- a/company/src/components/business/OperaApplyChangeDetailWindow.vue
+++ b/company/src/components/business/OperaApplyChangeDetailWindow.vue
@@ -49,8 +49,9 @@
                           <el-button v-if="[2].includes(model.status)" type="primary" @click="viewPidan">鏌ョ湅鎵瑰崟</el-button>
                           <el-button v-if=" model.solutionType == 0 && [1].includes(model.status)" type="primary" @click="$refs.OperaApplyChangeCheckWindow.open('涓婁紶鎵瑰崟',model,3)">涓婁紶鎵瑰崟</el-button>
                           <el-button  v-if="model.solutionType == 0 &&[3,4].includes(model.status)"  type="primary" @click="$refs.OperaApplyChangeCheckWindow.open('椹冲洖閫�鍥炵敵璇�',model,5)">椹冲洖閫�鍥炵敵璇�</el-button>
-                          <el-button  v-if="model.solutionType == 0 &&[0,1,3,4].includes(model.status)" type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
+                          <el-button  v-if="[0,1].includes(model.solutionType) &&[0,1,3,4].includes(model.status)" type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
                           <el-button  v-if="model.solutionType == 0 &&[2].includes(model.status)"  type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('淇敼鎵瑰崟',model,4)">淇敼鎵瑰崟</el-button>
+                            <el-button v-if=" model.solutionType == 1 && [1].includes(model.status)" type="primary" @click="$refs.ApplyChangeDetails.open('鎶曚繚瀹℃牳',apply,model,1)">鎵规敼瀹℃牳</el-button>
                         </template>
                   </div>
                 </div>
@@ -146,6 +147,7 @@
                             label="韬唤璇佸彿">
                         </el-table-column>
                         <el-table-column
+                            v-if="apply && apply.hasDispatchUnit !== 1"
                             prop="duName"
                             label="娲鹃仯鍗曚綅">
                         </el-table-column>
@@ -242,11 +244,20 @@
                 <el-button @click="visiblePhone=false">鍙� 娑�</el-button>
             </span>
       </el-dialog>
+        <el-dialog title="鎵瑰崟鍒楄〃" :modal="false" :visible.sync="flieVisible">
+            <el-table :data="model.pidanFileList">
+                <el-table-column property="name" label="鏂囦欢鍚嶇О"></el-table-column>
+                <el-table-column label="鎿嶄綔" width="90">
+                    <template slot-scope="{row}">
+                        <el-button type="primary" @click="yulan(row.name, row.fileurlFull)">棰勮</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </el-dialog>
       <template v-slot:footer>
         <el-button @click="visible=false">杩斿洖</el-button>
       </template>
     </GlobalWindow>
-
 </template>
 
 <script>
@@ -320,7 +331,8 @@
       activeName: '0',
         total: 0,
       currentPage: 1,
-        loading: false
+        loading: false,
+      flieVisible: false,
     }
   },
   created () {
@@ -447,10 +459,10 @@
        }
     },
     viewPidan(){
-      if(this.model.pidanFile && this.model.pidanFile.fileurlFull){
-        this.$refs.OperaPdfViewerWindow.open('鏌ョ湅鎵瑰崟',this.model.pidanFile.fileurlFull)
-        // window.open(this.model.pidanFile.fileurlFull)
-      }
+       this.flieVisible = true
+    },
+    yulan(name, url) {
+      this.$refs.OperaPdfViewerWindow.open(name, url)
     },
     handleSizeChange(val){
         console.log(val)
diff --git a/company/src/components/business/OperaApplyChangeUnitCheckWindow.vue b/company/src/components/business/OperaApplyChangeUnitCheckWindow.vue
index 61c3a72..7e881ff 100644
--- a/company/src/components/business/OperaApplyChangeUnitCheckWindow.vue
+++ b/company/src/components/business/OperaApplyChangeUnitCheckWindow.vue
@@ -54,7 +54,7 @@
                 <div class="form_item">
                     <div class="form_item_label">涓婁紶鎵瑰崟锛�</div>
                     <div class="form_item_val">
-                      <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />
+                      <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :limit="99" :fileList="form.fileList1" @remove="removePIDAN" @uploadSuccess="baoxianFileUploaded" />
                     </div>
                 </div>
             </div>
@@ -135,7 +135,7 @@
           editValidCode: '',
           applyStartTime:null,
          validCode:null,
-          pidanFile:null,
+          pidanFile:[],
          editPidanFile:null,
           fileList1: [],
           fileList2: [],
@@ -166,7 +166,7 @@
          editValidCode: '',
          applyStartTime:null,
          validCode:null,
-         pidanFile:null,
+         pidanFile:[],
          editPidanFile:null,
          fileList1: [],
          fileList2: [],
@@ -219,8 +219,15 @@
        }
     },
     baoxianFileUploaded(data){
-      this.form.pidanFile=data
+      this.form.pidanFile.push(data)
     },
+      removePIDAN(e) {
+          this.form.pidanFile.forEach((item, index) => {
+              if (item.imgaddr === e) {
+                  this.form.pidanFile.splice(index, 1)
+              }
+          })
+      },
     editBaoxianFileUploaded(data){
       this.form.editPidanFile=data
     },
diff --git a/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue b/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue
index d245367..e4fcf77 100644
--- a/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue
+++ b/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue
@@ -49,7 +49,8 @@
                       <el-button v-if="[2].includes(model.status)" type="primary" @click="viewPidan">鏌ョ湅鎵瑰崟</el-button>
                       <el-button v-if=" model.solutionType == 0 && [1].includes(model.status)" type="primary" @click="$refs.OperaApplyChangeCheckWindow.open('涓婁紶鎵瑰崟',model,3)">涓婁紶鎵瑰崟</el-button>
                       <el-button  v-if="model.solutionType == 0 &&[3,4].includes(model.status)"  type="primary" @click="$refs.OperaApplyChangeCheckWindow.open('椹冲洖閫�鍥炵敵璇�',model,5)">椹冲洖閫�鍥炵敵璇�</el-button>
-                      <el-button  v-if="model.solutionType == 0 &&[0,1,3,4].includes(model.status)" type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
+                        <el-button v-if=" model.solutionType == 1 && [1].includes(model.status)" type="primary" @click="$refs.ApplyChangeDetails.open('鎶曚繚瀹℃牳',apply,model,1)">鎵规敼瀹℃牳</el-button>
+                        <el-button  v-if="[0,1,3,4].includes(model.status)" type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
                       <el-button  v-if="model.solutionType == 0 &&[2].includes(model.status)"  type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('淇敼鎵瑰崟',model,4)">淇敼鎵瑰崟</el-button>
                     </template>
                   </div>
@@ -126,6 +127,7 @@
                             label="韬唤璇佸彿">
                         </el-table-column>
                         <el-table-column
+                            v-if="hasDispatchUnit !== 1"
                             prop="oldDuName"
                             label="鍘熸淳閬e崟浣�">
                         </el-table-column>
@@ -138,6 +140,7 @@
                             label="淇濋櫓鐢熸晥璧锋湡">
                         </el-table-column>
                       <el-table-column
+                          v-if="hasDispatchUnit !== 1"
                           prop="duName"
                           label="鏇存崲鍚庢淳閬e崟浣�">
                       </el-table-column>
@@ -211,6 +214,27 @@
                 <el-button @click="visiblePhone=false">鍙� 娑�</el-button>
             </span>
       </el-dialog>
+        <el-dialog
+                title="鏌ョ湅鎵瑰崟"
+                :visible.sync="visibleFile"
+                width="800px"
+                :modal="false"
+                :show-close="true"
+                :close-on-click-modal="false"
+                append-to-body
+                center>
+            <el-table :data="model.pidanFileList">
+                <el-table-column property="name" label="鏂囦欢鍚�"></el-table-column>
+                <el-table-column label="鎿嶄綔" width="90px">
+                    <template slot-scope="{row}">
+                        <el-button type="primary" @click="chakan(row.name, row.fileurlFull)">鏌ョ湅</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="visibleFile=false">鍏� 闂�</el-button>
+            </span>
+        </el-dialog>
         <ApplyChangeUnitDetails ref="ApplyChangeDetails" @success="successEvent" />
         <OperaApplyChangeUnitCheckWindow ref="OperaApplyChangeCheckWindow" @success="successEvent" />
         <!--    浼佷笟鐢宠閫�鍥�    -->
@@ -307,7 +331,9 @@
       activeName: '0',
       total: 0,
       currentPage: 1,
-        loading: false
+        loading: false,
+      hasDispatchUnit: null,
+      visibleFile: false
     }
   },
   created () {
@@ -330,6 +356,9 @@
       this.timer=null
       this.getDetail()
       this.getList()
+    },
+    chakan(name, url) {
+      this.$refs.OperaPdfViewerWindow.open(name, url)
     },
     send () {
       sendSms({
@@ -439,10 +468,11 @@
       }
     },
     viewPidan(){
-      if(this.model.pidanFile && this.model.pidanFile.fileurlFull){
-        this.$refs.OperaPdfViewerWindow.open('鏌ョ湅鎵瑰崟',this.model.pidanFile.fileurlFull)
-        // window.open(this.model.pidanFile.fileurlFull)
-      }
+      this.visibleFile = true
+      // if(this.model.pidanFile && this.model.pidanFile.fileurlFull){
+      //   this.$refs.OperaPdfViewerWindow.open('鏌ョ湅鎵瑰崟',this.model.pidanFile.fileurlFull)
+      //   // window.open(this.model.pidanFile.fileurlFull)
+      // }
     },
     handleSizeChange (val) {
       console.log(val)
@@ -457,15 +487,14 @@
     },
     getDetail () {
       getDetail(this.dataId).then(res => {
+        this.hasDispatchUnit = res.hasDispatchUnit
         this.apply = res
-        console.log(this.tableData)
       }).catch(err => {
       })
       getChangeDetail(this.modelId).then(res => {
         this.model = res
         this.tableData = new Array()
         this.tableData.push(res)
-        console.log(this.tableData)
         this.activities = res.applyLogList
       }).catch(err => {
       })
diff --git a/company/src/components/business/OperaCompanyDepartmentWindow.vue b/company/src/components/business/OperaCompanyDepartmentWindow.vue
new file mode 100644
index 0000000..ae1d5d8
--- /dev/null
+++ b/company/src/components/business/OperaCompanyDepartmentWindow.vue
@@ -0,0 +1,138 @@
+<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="parentId">
+                <el-cascader
+                    :options="organization"
+                    v-model="form.parentId"
+                    :disabled="form.disabled"
+                    placeholder="璇烽�夋嫨涓婄骇缁勭粐"
+                    :props="{ label: 'name', value: 'id', checkStrictly: true }"
+                    clearable />
+            </el-form-item>
+            <el-form-item label="缁勭粐鍚嶇О" prop="name">
+                <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+            </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import { tree } from '@/api/business/companyDepartment'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'OperaCompanyDepartmentWindow',
+    extends: BaseOpera,
+    components: { GlobalWindow },
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    data () {
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          id: null,
+          name: '',
+          parentId: [],
+          type: '',
+          disabled: false
+        },
+        // 楠岃瘉瑙勫垯
+        rules: {
+          name: [
+            { required: true, message: '璇疯緭鍏ョ粍缁囧悕绉�' }
+          ]
+        },
+        organization: []
+      }
+    },
+    created () {
+      this.config({
+        api: '/business/companyDepartment',
+        'field.id': 'id'
+      })
+    },
+    methods: {
+      __confirmCreate () {
+        this.$refs.form.validate((valid) => {
+          if (!valid) {
+            return
+          }
+          let obj = JSON.parse(JSON.stringify(this.form))
+          obj.parentId = obj.parentId && obj.parentId.length > 0 ? obj.parentId[0] : ''
+          obj.type = this.userInfo.type
+          // 璋冪敤鏂板缓鎺ュ彛
+          this.isWorking = true
+          this.api.create(obj)
+            .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
+          }
+          // 璋冪敤鏂板缓鎺ュ彛
+          let obj = JSON.parse(JSON.stringify(this.form))
+          obj.parentId = obj.parentId && obj.parentId.length > 0 ? obj.parentId[0] : ''
+          obj.type = this.userInfo.type
+          this.isWorking = true
+          this.api.updateById(obj)
+            .then(() => {
+              this.visible = false
+              this.$tip.apiSuccess('淇敼鎴愬姛')
+              this.$emit('success')
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking = false
+            })
+        })
+      },
+      open (title, target) {
+        this.title = title
+        this.visible = true
+        this.getTree()
+        // 鏂板缓
+        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]
+          }
+        })
+      },
+      getTree() {
+        tree()
+          .then(records => {
+            this.organization = records
+          })
+      }
+    }
+  }
+</script>
diff --git a/company/src/components/business/OperaCompanyDescWindow.vue b/company/src/components/business/OperaCompanyDescWindow.vue
index b10e676..eaf6c4a 100644
--- a/company/src/components/business/OperaCompanyDescWindow.vue
+++ b/company/src/components/business/OperaCompanyDescWindow.vue
@@ -98,6 +98,30 @@
                         <el-checkbox :true-label="1" :false-label="0" disabled v-model="row.canReduce">鍑忎繚</el-checkbox>
                     </template>
                 </el-table-column>
+                <el-table-column
+                    align="center"
+                    label="绛剧讲鐘舵��">
+                    <template slot-scope="{row}">
+                        <template v-if="row.signStatus == 0">寰呯缃�</template>
+                        <template v-else-if="row.signStatus == 1">宸茬缃�</template>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    prop="signDate"
+                    align="center"
+                    label="绛剧讲鏃堕棿">
+                </el-table-column>
+                <el-table-column
+                    prop="signUserName"
+                    align="center"
+                    label="绛剧讲浜�">
+                </el-table-column>
+                <el-table-column
+                    label="鎿嶄綔">
+                    <template slot-scope="{row}">
+                        <el-button type="text" v-if="row.signStatus === 1" @click="openFile(row.fileSignUrl)">鏌ョ湅绛剧讲鏂规涔�</el-button>
+                    </template>
+                </el-table-column>
             </el-table>
             <div class="info_list" v-if="JSON.stringify(form) !== '{}'">
                 <div class="info_list_item">
@@ -155,6 +179,7 @@
         <OperaCompanyWindow ref="operaCompanyWindow" @success="callback"/>
         <!-- 淇敼淇濋櫓鏂规 -->
         <modification ref="modification" @success="callback"/>
+        <OperaPdfViewerWindow ref="operaPdfViewerWindow" />
         <!-- 淇敼鎵嬫満鍙� -->
         <el-dialog
             title="鏇存敼缁戝畾鎵嬫満鍙�"
@@ -193,13 +218,14 @@
 import GlobalWindow from '@/components/common/GlobalWindow'
 import OperaCompanyWindow from '@/components/business/OperaCompanyWindow'
 import modification from '@/components/business/modification'
+import OperaPdfViewerWindow from '@/components/business/OperaPdfViewerWindow'
 import { getById, updatePhone } from '@/api/business/company'
 import { listForCompany } from '@/api/business/solutions'
 import { sendSms } from '@/api/business/smsEmail'
 export default {
   name: 'OperaCompanyDescWindow',
   extends: BaseOpera,
-  components: { GlobalWindow, OperaCompanyWindow, modification },
+  components: { GlobalWindow, OperaCompanyWindow, modification, OperaPdfViewerWindow },
   data () {
     return {
       ruleForm: {
@@ -225,6 +251,9 @@
     })
   },
   methods: {
+    openFile(url) {
+      this.$refs.operaPdfViewerWindow.open('鏂规纭涔�', url)
+    },
     close () {
       this.visiblePhone = false
       this.phone = ''
@@ -344,7 +373,8 @@
                   solutionName: item.solutionName,
                   shopName: item.shopName,
                   canAdd: item.canAdd,
-                  canReduce: item.canReduce
+                  canReduce: item.canReduce,
+                  ...item
                 }
               })
               console.log(that.form)
diff --git a/company/src/components/business/OperaCompanyUserApplyCarefulWindow.vue b/company/src/components/business/OperaCompanyUserApplyCarefulWindow.vue
new file mode 100644
index 0000000..60d5475
--- /dev/null
+++ b/company/src/components/business/OperaCompanyUserApplyCarefulWindow.vue
@@ -0,0 +1,179 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <div class="info" v-if="info">
+            <div class="info_list">
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鐢宠鎺堟潈璐﹀彿锛�</div>
+                    <div class="info_list_item_val">{{info.userName}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鎺堟潈绠$悊浼佷笟锛�</div>
+                    <div class="info_list_item_val">{{info.companyNames}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鐢宠璇存槑锛�</div>
+                    <div class="info_list_item_val">{{info.content}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鐢宠闄勪欢锛�</div>
+                    <div class="info_list_item_val">
+                        <div class="info_list_item_val_cul">
+                            <u v-for="(item, index) in info.multifileList" :key="index" @click="openFile(item.fileurlFull)">{{item.name}}</u>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <el-form :model="form" ref="form" :rules="rules">
+            <el-form-item label="鏄惁閫氳繃" prop="status">
+                <el-radio-group v-model="form.status">
+                    <el-radio :label="1">瀹℃牳閫氳繃</el-radio>
+                    <el-radio :label="2">瀹℃牳涓嶉�氳繃</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <el-form-item :label="form.status === 1 ? '澶囨敞鐞嗙敱' : '椹冲洖鐞嗙敱'" prop="checkInfo" :rules="form.status === 2 ? { required: true, message: '椹冲洖鐞嗙敱涓嶈兘涓虹┖', trigger: 'blur' } : { required: false } ">
+                <el-input
+                    type="textarea"
+                    placeholder="璇疯緭鍏�"
+                    v-model="form.checkInfo"
+                    maxlength="300"
+                    show-word-limit />
+            </el-form-item>
+        </el-form>
+        <!-- 棰勮pdf -->
+        <OperaPdfViewerWindow ref="OperaPdfViewerWindow" />
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import UploadFile from '@/components/common/UploadFile'
+  import OperaPdfViewerWindow from '@/components/business/OperaPdfViewerWindow'
+  import { audit, getById } from '@/api/business/companyUserApply'
+  export default {
+    name: 'OperaCompanyUserApplyCarefulWindow',
+    extends: BaseOpera,
+    components: { GlobalWindow, UploadFile, OperaPdfViewerWindow },
+    data () {
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          id: null,
+          status: 1,
+          checkInfo: ''
+        },
+        info: null,
+        // 楠岃瘉瑙勫垯
+        rules: {}
+      }
+    },
+    methods: {
+      open (title, id) {
+        this.title = title
+        this.form.checkInfo = ''
+        this.form.status = 1
+        this.form.id = id
+        getById(id)
+          .then(res => {
+            this.info = res
+            this.visible = true
+          })
+      },
+      openFile(url) {
+        this.$refs.OperaPdfViewerWindow.open('闄勪欢', url)
+      },
+      confirm() {
+        this.$refs.form.validate((valid) => {
+          if (!valid) {
+            return
+          }
+          // 璋冪敤鏂板缓鎺ュ彛
+          this.isWorking = true
+          audit(this.form)
+            .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>
+    .info {
+        width: 100%;
+        .info_label {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            margin-bottom: 20px;
+            span {
+                font-size: 18px;
+                font-weight: 600;
+                color: #000000;
+            }
+        }
+        .info_list {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            flex-wrap: wrap;
+            .info_list_item {
+                width: 50%;
+                display: flex;
+                align-items: start;
+                margin-bottom: 20px;
+                .info_list_item_label {
+                    font-size: 15px;
+                    flex-shrink: 0;
+                }
+                .info_list_item_val {
+                    flex: 1;
+                    display: flex;
+                    align-items: center;
+                    font-size: 15px;
+                    .info_list_item_val_cul {
+                        display: flex;
+                        flex-direction: column;
+                        u {
+                            font-size: 15px;
+                            color: #2E68EC;
+                            cursor: pointer;
+                            margin-top: 5px;
+                            &:first-child {
+                                margin: 0;
+                            }
+                        }
+                    }
+                    .image {
+                        width: 100px;
+                        height: 100px;
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                        overflow: hidden;
+                        img {
+                            width: 100%;
+                        }
+                    }
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/business/OperaCompanyUserApplyWindow.vue b/company/src/components/business/OperaCompanyUserApplyWindow.vue
new file mode 100644
index 0000000..17e1d39
--- /dev/null
+++ b/company/src/components/business/OperaCompanyUserApplyWindow.vue
@@ -0,0 +1,247 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="50%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <el-form :model="form" ref="form" :rules="rules">
+            <el-form-item label="鎺堟潈璐﹀彿" prop="userId">
+                <el-select v-model="form.userId" filterable placeholder="璇烽�夋嫨">
+                    <el-option
+                        v-for="item in account"
+                        :key="item.id"
+                        :label="item.username"
+                        :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鐢宠鎺堟潈浼佷笟" prop="companyIds">
+                <el-select
+                    v-model="form.companyIds"
+                    multiple
+                    filterable
+                    placeholder="璇烽�夋嫨">
+                    <el-option
+                        v-for="item in company"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鐢宠璇存槑" prop="content">
+                <el-input
+                    type="textarea"
+                    placeholder="璇疯緭鍏ョ敵璇疯鏄�"
+                    v-model="form.content"
+                    maxlength="300"
+                    show-word-limit />
+            </el-form-item>
+            <el-form-item label="鎺堟潈涔�" prop="multifileList">
+                <UploadFile v-if="visible" @remove="deleFile" :limit="99" :uploadData="{ folder: 'companyUserApply', fileType:'.pdf' }" :fileList="fileList" @uploadSuccess="editFanganFile" />
+            </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import UploadFile from '@/components/common/UploadFile'
+  import { findUserList } from '@/api/system/user'
+  import { findAllCompanyList } from '@/api/business/company'
+  export default {
+    name: 'OperaCompanyUserApplyWindow',
+    extends: BaseOpera,
+    components: { GlobalWindow, UploadFile },
+    data () {
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          id: null,
+          userId: '',
+          content: '',
+          companyIds: [],
+          multifileList: []
+        },
+        // 楠岃瘉瑙勫垯
+        rules: {
+          multifileList: [
+            { required: true, message: '璇蜂笂浼犳巿鏉冧功' }
+          ],
+          companyIds: [
+            { required: true, message: '璇烽�夋嫨鎺堟潈浼佷笟' }
+          ],
+          userId: [
+            { required: true, message: '璇烽�夋嫨鎺堟潈璐﹀彿' }
+          ]
+        },
+        account: [],
+        fileList: [],
+        company: []
+      }
+    },
+    created () {
+      this.config({
+        api: '/business/companyUserApply',
+        'field.id': 'id'
+      })
+    },
+    methods: {
+      __confirmCreate () {
+        this.$refs.form.validate((valid) => {
+          if (!valid) {
+            return
+          }
+          let obj = JSON.parse(JSON.stringify(this.form))
+          obj.companyIds = obj.companyIds.join(',')
+          obj.companyNames = []
+          this.form.companyIds.forEach(item => {
+            this.company.forEach(row => {
+              if (item === row.id) {
+                obj.companyNames.push(row.name)
+              }
+            })
+          })
+          obj.companyNames = obj.companyNames.join(',')
+          this.isWorking = true
+          this.api.create(obj)
+            .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
+          }
+          let obj = JSON.parse(JSON.stringify(this.form))
+          obj.companyIds = obj.companyIds.join(',')
+          obj.companyNames = []
+          this.form.companyIds.forEach(item => {
+            this.company.forEach(row => {
+              if (item === row.id) {
+                obj.companyNames.push(row.name)
+              }
+            })
+          })
+          obj.companyNames = obj.companyNames.join(',')
+          this.isWorking = true
+          this.api.updateById(obj)
+            .then(() => {
+              this.visible = false
+              this.$tip.apiSuccess('淇敼鎴愬姛')
+              this.$emit('success')
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking = false
+            })
+        })
+      },
+      open (title, target) {
+        this.title = title
+        this.visible = true
+        this.getAccount()
+        this.getFindAllCompanyList()
+        // 鏂板缓
+        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]
+          }
+        })
+      },
+      deleFile (imgaddr) {
+        this.form.multifileList.forEach((item, index) => {
+          if (item.imgaddr === imgaddr) {
+            this.form.multifileList.splice(index, 1)
+          }
+        })
+      },
+      editFanganFile (data) {
+        this.form.multifileList.push(data)
+      },
+      getAccount() {
+        findUserList({})
+          .then(res => {
+            console.log(res)
+            this.account = res
+          })
+      },
+      getFindAllCompanyList() {
+        findAllCompanyList({})
+          .then(res => {
+            console.log(res)
+            this.company = res
+          })
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+    .list {
+        width: 100%;
+        padding: 10px 16px;
+        box-sizing: border-box;
+        background: #F4F7FC;
+        border-radius: 2px;
+        border: 1px solid #DFE2E8;
+        margin-top: 10px;
+        .list_label {
+            font-weight: 400;
+            font-size: 13px;
+            color: #333333;
+        }
+        .list_box {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            flex-wrap: wrap;
+            .list_box_row {
+                padding: 0 10px;
+                box-sizing: border-box;
+                background: #FFFFFF;
+                border-radius: 2px;
+                display: flex;
+                align-items: center;
+                margin-right: 10px;
+                &:last-child {
+                    margin: 0 !important;
+                }
+                span {
+                    font-weight: 400;
+                    font-size: 12px;
+                    color: #3F4F69;
+                    margin-right: 12px;
+                }
+                i {
+                    color: #BFC3CB;
+                    cursor: pointer;
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/business/OperaContractDescWindow.vue b/company/src/components/business/OperaContractDescWindow.vue
new file mode 100644
index 0000000..da17f44
--- /dev/null
+++ b/company/src/components/business/OperaContractDescWindow.vue
@@ -0,0 +1,169 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :withFooter="false"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <div class="info" v-if="info">
+            <div class="info_label">
+                <span>鍚堝悓璇︽儏</span>
+            </div>
+            <div class="info_list">
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鍚堝悓鍚嶇О锛�</div>
+                    <div class="info_list_item_val">{{info.name}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鍚堝悓鏃堕棿锛�</div>
+                    <div class="info_list_item_val">{{info.startTime}} - {{info.endTime}}</div>
+                </div>
+                <div class="info_list_item" v-if="userInfo.type === 0 || info.type === 2">
+                    <div class="info_list_item_label">鍚堝悓绫诲瀷锛�</div>
+                    <div class="info_list_item_val">
+                        <template v-if="info.signType === 0">骞冲彴-鍟嗘埛</template>
+                        <template v-if="info.signType === 1">骞冲彴-浼佷笟</template>
+                        <template v-if="info.signType === 2">鍟嗘埛-浼佷笟</template>
+                    </div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">浼佷笟鍚嶇О锛�</div>
+                    <div class="info_list_item_val">{{info.companyName}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;" v-if="userInfo.type === 0 || info.type === 2">
+                    <div class="info_list_item_label">绛剧讲鏂瑰紡锛�</div>
+                    <div class="info_list_item_val">
+                        <template v-if="info.type === 0">鍙屾柟绛剧珷</template>
+                        <template v-if="info.type === 1">浠呮垜鏂圭绔�</template>
+                    </div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鍘熷闄勪欢锛�</div>
+                    <div class="info_list_item_val" v-if="info.multifile">
+                        <u @click.stop="openPDF(info.multifile.name, info.multifile.fileurlFull)">{{info.multifile.name}}</u>
+                    </div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">澶囨敞锛�</div>
+                    <div class="info_list_item_val">{{info.remark}}</div>
+                </div>
+            </div>
+        </div>
+        <div class="info" v-if="info && info.status !== 0">
+            <div class="info_label">
+                <span>鍚堝悓绛剧讲鎯呭喌</span>
+            </div>
+            <div class="info_list">
+                <div class="info_list_item">
+                    <div class="info_list_item_label">{{info.signType === 2 ? '鍟嗘埛' :  [0, 1].includes(info.signType) ? '骞冲彴' : ''}}绛剧讲浜猴細</div>
+                    <div class="info_list_item_val">{{info.firstSignUserName}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">{{info.signType === 2 ? '鍟嗘埛' :  [0, 1].includes(info.signType) ? '骞冲彴' : ''}}绛剧讲鏃堕棿锛�</div>
+                    <div class="info_list_item_val">{{info.signDate}}</div>
+                </div>
+                <div class="info_list_item" v-if="info.type !== 1">
+                    <div class="info_list_item_label">{{info.signType === 0 ? '鍟嗘埛' :  [1, 2].includes(info.signType) ? '浼佷笟' : ''}}绛剧讲浜猴細</div>
+                    <div class="info_list_item_val">{{info.doneSignUserName}}</div>
+                </div>
+                <div class="info_list_item" v-if="info.type !== 1">
+                    <div class="info_list_item_label">{{info.signType === 0 ? '鍟嗘埛' :  [1, 2].includes(info.signType) ? '浼佷笟' : ''}}绛剧讲鏃堕棿锛�</div>
+                    <div class="info_list_item_val">{{info.comSignDate}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">绛剧讲浠讹細</div>
+                    <div class="info_list_item_val">
+                        <u v-if="info.multiDoneFile" @click.stop="openPDF(info.multiDoneFile.name, info.multiDoneFile.fileurlFull)">{{info.multiDoneFile.name}}</u>
+                        <u v-else-if="info.multiFirstFile" @click.stop="openPDF(info.multiFirstFile.name, info.multiFirstFile.fileurlFull)">{{info.multiFirstFile.name}}</u>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- 棰勮pdf -->
+        <OperaPdfViewerWindow ref="OperaPdfViewerWindow"  />
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import OperaPdfViewerWindow from '@/components/business/OperaPdfViewerWindow'
+  import { contractId } from '@/api/business/contract'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'OperaContractDescWindow',
+    extends: BaseOpera,
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    components: { GlobalWindow, OperaPdfViewerWindow },
+    data () {
+      return {
+        info: null
+      }
+    },
+    methods: {
+      open (title, id) {
+        this.title = title
+        this.info = null
+        this.visible = true
+        console.log(this.userInfo)
+        contractId(id)
+          .then(res => {
+            console.log(res)
+            this.info = res
+          })
+      },
+      openPDF(name, url) {
+        this.$refs.OperaPdfViewerWindow.open(name, url)
+      },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+    .info {
+        width: 100%;
+        .info_label {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            margin-bottom: 20px;
+            span {
+                font-size: 18px;
+                font-weight: 600;
+                color: #000000;
+            }
+        }
+        .info_list {
+            width: 100%;
+            display: flex;
+            align-items: start;
+            flex-wrap: wrap;
+            .info_list_item {
+                width: 50%;
+                display: flex;
+                align-items: start;
+                margin-bottom: 20px;
+                .info_list_item_label {
+                    flex-shrink: 0;
+                    font-size: 16px;
+                }
+                .info_list_item_val {
+                    flex: 1;
+                    display: flex;
+                    align-items: center;
+                    font-size: 16px;
+                    u {
+                        font-size: 16px;
+                        color: #2E68EC;
+                        cursor: pointer;
+                    }
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/business/OperaContractWindow.vue b/company/src/components/business/OperaContractWindow.vue
new file mode 100644
index 0000000..a9717b9
--- /dev/null
+++ b/company/src/components/business/OperaContractWindow.vue
@@ -0,0 +1,187 @@
+<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" maxlength="50" show-word-limit placeholder="璇疯緭鍏ュ悎鍚屽悕绉�" v-trim/>
+            </el-form-item>
+            <el-form-item label="鍚堝悓瀵硅薄" prop="companyType" v-if="type !== 2">
+                <el-radio-group v-model="form.companyType" @change="getList">
+                    <el-radio :label="0">浼佷笟</el-radio>
+                    <el-radio :label="1">鍟嗘埛</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <el-form-item :label="type !== 2 ? '浼佷笟/鍟嗘埛鍚嶇О' : '浼佷笟鍚嶇О'" prop="companyId">
+                <el-select v-model="form.companyId" filterable placeholder="璇烽�夋嫨锛屾敮鎸佹悳绱�">
+                    <el-option
+                        v-for="item in nameList"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鍚堝悓鏃堕棿" prop="date">
+                <el-date-picker
+                    v-model="form.date"
+                    type="daterange"
+                    @change="changeDate"
+                    value-format="yyyy-MM-dd"
+                    range-separator="鑷�"
+                    start-placeholder="寮�濮嬫棩鏈�"
+                    end-placeholder="缁撴潫鏃ユ湡">
+                </el-date-picker>
+            </el-form-item>
+            <el-form-item label="绛剧珷鏂瑰紡" prop="type">
+                <el-radio-group v-model="form.type">
+                    <el-radio :label="0">鍙屾柟绛剧珷</el-radio>
+                    <el-radio :label="1">浠呮垜鏂圭绔�</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <el-form-item label="鍚堝悓闄勪欢" prop="multifile" :rules="[{required:true,message:'璇蜂笂浼犳柟妗堢‘璁や功'}]">
+                <div v-if="visible">
+                    <UploadFile @remove="deleFile" :uploadData="{ folder: 'contract', fileType:'.pdf' }" :fileList="fileList" @uploadSuccess="editFanganFile" />
+                </div>
+            </el-form-item>
+            <el-form-item label="澶囨敞" prop="remark">
+                <el-input
+                    type="textarea"
+                    placeholder="璇疯緭鍏ュ娉�"
+                    v-model="form.remark"
+                    maxlength="300"
+                    show-word-limit
+                    v-trim
+                />
+            </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import UploadFile from '@/components/common/UploadFile'
+  import { pageAll } from '@/api/business/company'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'OperaContractWindow',
+    extends: BaseOpera,
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    components: { GlobalWindow, UploadFile },
+    data () {
+      const validatorTime = (rule, value, callback) => {
+        if (!this.form.startTime || !this.form.endTime) {
+          return callback(new Error('璇烽�夋嫨鍚堝悓鏃堕棿'))
+        }
+        callback()
+      }
+      const validatorMultifile = (rule, value, callback) => {
+        if (!this.form.multifile) {
+          return callback(new Error('璇蜂笂浼犲悎鍚岄檮浠�'))
+        }
+        callback()
+      }
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          id: null,
+          remark: '',
+          name: '',
+          companyType: 0,
+          type: 0,
+          startTime: '',
+          endTime: '',
+          date: [],
+          multifile: null,
+          companyId: ''
+        },
+        fileList: [],
+        // 楠岃瘉瑙勫垯
+        rules: {
+          name: [
+            { required: true, message: '璇疯緭鍏ュ悎鍚屽悕绉�' }
+          ],
+          companyType: [
+            { required: true, message: '璇烽�夋嫨鍚堝悓瀵硅薄' }
+          ],
+          companyId: [
+            { required: true, message: '璇烽�夋嫨浼佷笟/鍟嗘埛鍚嶇О' }
+          ],
+          date: [
+            { required: true, validator: validatorTime }
+          ],
+          multifile: [
+            { required: true, validator: validatorMultifile }
+          ],
+        },
+        nameList: [],
+        list: [],
+        type: null
+      }
+    },
+    created () {
+      this.config({
+        api: '/business/contract',
+        'field.id': 'id'
+      })
+    },
+    methods: {
+      open (title, target, type) {
+        this.title = title
+        this.type = type
+        this.visible = true
+        if (this.userInfo.type === 0) {
+          this.list = [{ label: '浼佷笟', id: 0 },{ label: '鍟嗘埛', id: 1 }]
+        } else if (this.userInfo.type === 2) {
+          this.list = [{ label: '浼佷笟', id: 0 }]
+        }
+        // 鏂板缓
+        if (target == null) {
+          this.$nextTick(() => {
+            this.$refs.form.resetFields()
+            this.form[this.configData['field.id']] = null
+          })
+          this.getList()
+          return
+        }
+        // 缂栬緫
+        this.$nextTick(() => {
+          for (const key in this.form) {
+            this.form[key] = target[key]
+          }
+        })
+        this.getList()
+      },
+      getList() {
+        this.form.companyId = ''
+        pageAll({ type: this.form.companyType })
+            .then(res => {
+              console.log(res)
+              this.nameList = res
+            })
+      },
+      deleFile () {
+        this.form.multifile = null
+      },
+      editFanganFile (data) {
+        console.log(data)
+        this.form.multifile = data
+      },
+      changeDate(e) {
+        if (e) {
+          this.form.startTime = e[0]
+          this.form.endTime = e[1]
+        } else {
+          this.form.startTime = ''
+          this.form.endTime = ''
+        }
+      }
+    }
+  }
+</script>
diff --git a/company/src/components/business/OperaCustomerServiceWindow.vue b/company/src/components/business/OperaCustomerServiceWindow.vue
new file mode 100644
index 0000000..b2775b6
--- /dev/null
+++ b/company/src/components/business/OperaCustomerServiceWindow.vue
@@ -0,0 +1,64 @@
+<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="mobile">
+                <el-input v-model="form.mobile" maxlength="11" show-word-limit placeholder="璇疯緭鍏ユ墜鏈哄彿" v-trim/>
+            </el-form-item>
+            <el-form-item label="澶囨敞" prop="remark">
+                <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ娉�" 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: 'OperaCustomerServiceWindow',
+    extends: BaseOpera,
+    components: { GlobalWindow },
+    data () {
+      const validatorMobile = (rule, value, callback) => {
+        if (value === '') {
+          callback(new Error('璇疯緭鍏ユ墜鏈哄彿'));
+        } else if (!/^1[3-9]\d{9}$/.test(value)) {
+          callback(new Error('鎵嬫満鍙蜂笉鍚堟硶'));
+        }
+        callback()
+      };
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          id: null,
+          remark: '',
+          name: '',
+          mobile: ''
+        },
+        // 楠岃瘉瑙勫垯
+        rules: {
+          name: [
+            { required: true, message: '璇疯緭鍏ュ鏈嶅鍚�' }
+          ],
+          mobile: [
+            { required: true, validator: validatorMobile }
+          ]
+        }
+      }
+    },
+    created () {
+      this.config({
+        api: '/business/customerService',
+        'field.id': 'id'
+      })
+    }
+  }
+</script>
diff --git a/company/src/components/business/OperaInsuranceApplyCheckWindow.vue b/company/src/components/business/OperaInsuranceApplyCheckWindow.vue
index 71d0815..c0eb2dd 100644
--- a/company/src/components/business/OperaInsuranceApplyCheckWindow.vue
+++ b/company/src/components/business/OperaInsuranceApplyCheckWindow.vue
@@ -84,6 +84,7 @@
   uploadToubaodan,
   check
 } from "@/api/business/insuranceApply";
+import { uploadBXD } from "@/api/business/unionApply";
 import UploadFile from "@/components/common/UploadFile";
 import {remark} from "@/api/business/settleClaims";
 export default {
@@ -155,6 +156,7 @@
       visible4: false,
       visible5: false,
       visible6: false,
+      type: null
     }
   },
   created () {
@@ -167,8 +169,9 @@
     dele2() {
       this.form.toubaodanFile = ''
     },
-     open(title,target,flag){
+     open(title,target,flag,type){
        this.visible=true
+       this.type = type
        this.model={}
        this.form= {
          id: null,
@@ -242,7 +245,11 @@
           if (!valid) {
             return
           }
-          this.uploadBaoxiandan()
+          if (!this.type) {
+            this.uploadBaoxiandan()
+          } else if (this.type === 1) {
+            this.uploadBaoxiandan1()
+          }
         })
       } else if (this.flag == 4) {
         this.$refs.form4.validate((valid) => {
@@ -337,7 +344,19 @@
                   this.$tip.apiFailed(err)
                 })
           })
-
+    },
+    uploadBaoxiandan1(){
+      this.$dialog.messageConfirm('纭杩涜璇ユ搷浣滃悧锛�')
+        .then(() => {
+          this.isWorking = true
+          uploadBXD({id:this.model.id,startTime:this.form.startTime,code:this.form.code,baoxiandanFile:this.form.baoxianFile})
+            .then(response => {
+              this.visible = false
+              this.$emit('success')
+            }).catch(err => {
+            this.$tip.apiFailed(err)
+          })
+        })
     },
     editBaoxiandan(){
       this.$dialog.messageConfirm('纭杩涜璇ユ搷浣滃悧锛�')
diff --git a/company/src/components/business/OperaInsuranceApplyWindow.vue b/company/src/components/business/OperaInsuranceApplyWindow.vue
index 3337197..98cdbfa 100644
--- a/company/src/components/business/OperaInsuranceApplyWindow.vue
+++ b/company/src/components/business/OperaInsuranceApplyWindow.vue
@@ -19,14 +19,20 @@
                 <div class="desc_item_label">
                     <div class="desc_item_label_left">
                         <span>鎶曚繚浼佷笟锛歿{ model.companyName }}</span>
-                      <span>淇濆崟鐘舵�侊細<span  :class="'apply-status'+model.status" >{{ model.statusInfo }}</span></span>
+                        <span>淇濆崟鐘舵�侊細
+                            <span style="color: #f95601;" v-if="[5,27].includes(model.status) && model.statusInfo === '寰呯敓鏁�'">{{ model.statusInfo }}</span>
+                            <span :class="'apply-status'+model.status" v-else>{{ model.statusInfo }}</span>
+                        </span>
                         <span>鎻愪氦鏃堕棿锛歿{ model.createDate }}</span>
                     </div>
                   <div class="desc_item_label_right">
+                      <el-button type="primary" @click="viewConfirmationLetter">鏌ョ湅鏂规纭涔�</el-button>
+                      <el-button type="primary" v-if="[1].includes(model.solutionType) && model.shenqingdanFile" @click="viewShenqingdan(model.shenqingdanFile)">鏌ョ湅鐢宠鍗�</el-button>
                       <template v-if="userInfo.type === 1">
                         <el-button type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚璇︽儏鍗�',model,0)">瀵煎嚭璇﹀崟</el-button>
                         <el-button v-if="[2, 3, 5, 7, 8].includes(model.status)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
 <!--                          $refs.operaverifyPhoneNumberWindew.open('楠岃瘉鎵嬫満鍙�')-->
+<!--                          <el-button v-if="[22].includes(model.status) && model.solutionType === 1" type="primary" @click="viewShenqingdan(model.shenqingdanFile)">鏌ョ湅鐢宠鍗�</el-button>-->
                         <el-button v-if="model.status == 2" type="primary" :disabled="loading" :loading="loading" @click="goSign()">绛剧讲鎶曚繚鍗�</el-button>
                         <el-button v-if="model.status == 5" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
                         <el-button v-if="model.status == 4" type="primary" @click="$refs.operaInsuranceApplyAddWindow.open('鎶曚繚鐢宠', {id: dataId})">鍐嶆鎶曚繚</el-button>
@@ -34,15 +40,20 @@
                         <el-button v-if="model.status == 4" type="primary" @click="closeOrder">鍏抽棴鐢宠</el-button>
                       </template>
                     <template v-else>
+                        <el-button v-if="[12].includes(model.status)" type="primary" @click="review">鎶曚繚澶嶅</el-button>
                       <el-button type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚璇︽儏鍗�',model,0)">瀵煎嚭璇﹀崟</el-button>
-                      <el-button v-if="[2, 3, 5, 7, 8].includes(model.status)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
-                      <el-button v-if="model.status == 5" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
+                      <el-button v-if="[2, 3, 5, 7, 8, 26].includes(model.status) && (model.toubaodanFile || model.toubaodanSignedFile)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
+                      <el-button v-if="[27,5].includes(model.status)" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
                       <el-button v-if="[2,10].includes(model.status) && model.solutionType ==0" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('涓婁紶鎶曚繚鍗�',model,2)">涓婁紶鎶曚繚鍗�</el-button>
-                      <el-button v-if="model.status == 3 && model.solutionType ==0" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('涓婁紶淇濋櫓鍗�',model,3)">涓婁紶淇濋櫓鍗�</el-button>
+                      <el-button v-if="model.status === 3 && userInfo.type === 0" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('涓婁紶淇濋櫓鍗�',model,3)">涓婁紶淇濋櫓鍗�</el-button>
+
+<!--                        <el-button v-if="model.status == 26 && model.solutionType == 1" type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('涓婁紶淇濋櫓鍗�',model,3)">涓婁紶淇濋櫓鍗�</el-button>-->
+<!--                        <el-button v-if="[22].includes(model.status) && model.solutionType === 1 && model.shenqingdanFile" type="primary" @click="viewShenqingdan(model.shenqingdanFile)">鏌ョ湅鐢宠鍗�</el-button>-->
                       <el-button  v-if="[6,7,8,11].includes(model.status) && model.solutionType ==0" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('椹冲洖閫�鍥炵敵璇�',model,5)">椹冲洖閫�鍥炵敵璇�</el-button>
-                      <el-button v-if="model.status == 0 && model.solutionType ==0" type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚瀹℃牳',model,1)">鎶曚繚瀹℃牳</el-button>
-                      <el-button v-if="![1,4,,5].includes(model.status) && model.solutionType ==0" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
-                      <el-button v-if="model.status == 5  && model.solutionType ==0" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('淇敼淇濋櫓鍗�',model,4)">淇敼淇濋櫓鍗�</el-button>
+                      <el-button v-if="[22, 0].includes(model.status) && [0,1].includes(model.solutionType)" type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚瀹℃牳',model,1)">鎶曚繚瀹℃牳</el-button>
+                      <el-button v-if="![1, 4, 5].includes(model.status) && [0,1].includes(model.solutionType)" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
+                      <el-button v-if="[5,27].includes(model.status) && ['寰呯敓鏁�'].includes(model.statusInfo) && userInfo.type === 0" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('淇敼淇濋櫓鍗�',model,4)">淇敼淇濋櫓鍗�</el-button>
+
                     </template>
                   </div>
                 </div>
@@ -72,12 +83,12 @@
                             align="center"
                             label="淇濋櫓鐢熸晥姝㈡湡">
                         </el-table-column>
-                        <el-table-column
-                            prop="insureNum"
-                            align="center"
-                            label="鎶曚繚浜烘暟">
-                        </el-table-column>
-                      <el-table-column prop="guaranteeNum"  align="center" label="鍦ㄤ繚浜烘暟" ></el-table-column>
+<!--                        <el-table-column-->
+<!--                            prop="insureNum"-->
+<!--                            align="center"-->
+<!--                            label="鎶曚繚浜烘暟">-->
+<!--                        </el-table-column>-->
+                      <el-table-column prop="guaranteeNum"  align="center" label="褰撳墠鍦ㄤ繚浜烘暟" ></el-table-column>
                         <el-table-column
                             prop="serviceDays"
                             align="center"
@@ -86,9 +97,9 @@
                         <el-table-column
                             prop="currentFee"
                             align="center"
-                            label="宸蹭骇鐢熻垂鐢�(鍏�)">
+                            label="鎵规敼璐圭敤鍚堣">
                           <template slot-scope="{row}">
-                            <span>{{row.currentFee!=null?row.currentFee: '-'}}</span>
+                            <span>{{row.changeMoney}}鍏�</span>
                           </template>
                         </el-table-column>
                         <el-table-column
@@ -103,9 +114,9 @@
                 </div>
                 <div class="desc_item_cate">
                     <el-tabs v-model="activeName" @tab-click="handleClick">
-                        <el-tab-pane label="鍦ㄤ繚浜哄憳" name="0" ></el-tab-pane>
+                        <el-tab-pane label="淇濆崟浜哄憳" name="0" ></el-tab-pane>
                         <el-tab-pane label="鍔�/鍑忎繚璁板綍"  name="1"></el-tab-pane>
-                        <el-tab-pane label="鏇存崲娲鹃仯鍗曚綅璁板綍" name="2"></el-tab-pane>
+                        <el-tab-pane :label="model.hasDispatchUnit !== 1 ? '鏇存崲娲鹃仯鍗曚綅' : '鏇存崲宸ョ璁板綍'" name="2"></el-tab-pane>
                     </el-tabs>
                 </div>
                 <div class="desc_item_search">
@@ -116,9 +127,10 @@
                                     <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>
-                            <el-form-item label="娲鹃仯鍗曚綅" prop="duId">
+                            <el-form-item label="娲鹃仯鍗曚綅" prop="duId" v-if="model.hasDispatchUnit !== 1">
                                 <el-select v-model="formInline.duId" placeholder="璇烽�夋嫨" @change="search">
                                     <el-option
                                         v-for="item in dwList"
@@ -195,8 +207,8 @@
                             <el-button type="primary" style="width: 80px;" @click="search">鏌ヨ</el-button>
                             <el-button @click="resetting" style="width: 80px;">閲嶇疆</el-button>
                             <el-button type="primary" style="width: 80px;" @click="exportExcel" v-if="activeName === '0'">瀵煎嚭鍚嶅崟</el-button>
-                          <el-button type="primary" style="width: 100px;" @click="$refs.OperaApplyChangeMonthWindow.open('鍔犲噺淇濊垂鐢ㄦ湀搴︾粺璁�',model)" v-if="activeName === '1'">璐圭敤缁熻鏌ヨ</el-button>
-
+                            <el-button type="primary" style="width: 100px;" @click="$refs.OperaApplyChangeMonthWindow.open('鍔犲噺淇濊垂鐢ㄦ湀搴︾粺璁�',model)" v-if="activeName === '1'">璐圭敤缁熻鏌ヨ</el-button>
+                            <el-button type="primary" style="width: 120px;" @click="exportRecords" v-if="activeName === '1' && (model.status === 5 || model.status === 27)">瀵煎嚭鍔犲噺淇濊褰�</el-button>
                         </el-form-item>
                     </el-form>
                 </div>
@@ -208,7 +220,7 @@
                         v-if="activeName === '0'"
                         style="width: 100%">
                         <el-table-column label="搴忓彿"
-                                         align="center">
+                             align="center">
                             <template slot-scope="scope">
                                 <span>{{scope.$index + 1}}</span>
                             </template>
@@ -229,12 +241,23 @@
                             </template>
                         </el-table-column>
                         <el-table-column
+                            align="center"
+                            :key="Math.random()"
+                            label="鍦ㄤ繚鐘舵��">
+                            <template slot-scope="{row}">
+                                <span v-if="row.applyStatus === 0" style="color: #00BA92;">淇濋殰涓�</span>
+                                <span v-if="row.applyStatus === 1" style="color: #999;">涓嶅湪淇�</span>
+                                <span v-if="row.applyStatus === 2" style="color: #f95601;">寰呯敓鏁�</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column
                             :key="Math.random()"
                             prop="idcardNo"
                             align="center"
                             label="韬唤璇佸彿">
                         </el-table-column>
                         <el-table-column
+                            v-if="model.hasDispatchUnit !== 1"
                             :key="Math.random()"
                             prop="duName"
                             align="center"
@@ -373,7 +396,7 @@
                         v-if="activeName === '2'"
                         style="width: 100%">
                         <el-table-column label="搴忓彿"
-                                         align="center">
+                             align="center">
                             <template slot-scope="scope">
                                 <span>{{scope.$index + 1}}</span>
                             </template>
@@ -401,7 +424,7 @@
                             :key="Math.random()"
                             prop="changeNum"
                             align="center"
-                            label="鏇存崲娲鹃仯鍗曚綅浜烘暟">
+                            :label="model.hasDispatchUnit !== 1 ? '鏇存崲娲鹃仯鍗曚綅浜烘暟' : '鏇存崲宸ョ浜烘暟'">
                           <template scope="{row}">
                             {{row.changeNum||0}} 浜�
                           </template>
@@ -483,6 +506,7 @@
         <operaverifyPhoneNumberWindew ref="operaverifyPhoneNumberWindew" @success="goSign" />
         <OperaPdfViewerWindow ref="OperaPdfViewerWindow" />
         <OperaApplyChangeMonthWindow ref="OperaApplyChangeMonthWindow" />
+        <OperaUnionApplyCheckWindow ref="OperaUnionApplyCheckWindow" @success="successEvent" />
         <template v-slot:footer>
             <el-button @click="visible=false">杩斿洖</el-button>
         </template>
@@ -500,15 +524,16 @@
 import OperaApplyChangeDetailWindow from '@/components/business/OperaApplyChangeDetailWindow'
 import OperaApplyChangeMonthWindow from '@/components/business/OperaApplyChangeMonthWindow'
 import OperaApplyChangeUnitDetailWindow from '@/components/business/OperaApplyChangeUnitDetailWindow'
-
 import applyReturn from '@/components/enterprise/applyReturn'
 import { getDetail, getSignLink, applyDetailPage,  exportExcel, applyChagneDetailExcel, applyOpt } from '@/api/business/insuranceApply'
 import { findListByDTO } from '@/api/business/dispatchUnit'
-import { fetchList } from '@/api/business/applyChange'
+import { fetchList, exportApplyJiajianBaoExcel } from '@/api/business/applyChange'
+import { reexamineCheck } from '@/api/business/insuranceApply'
 import { findListByDTO as worktypeFindListByDTO } from '@/api/business/worktype'
 import OperaInsuranceApplyAddWindow from '@/components/enterprise/OperaInsuranceApplyAddWindow'
 import { mapState } from 'vuex'
 import OperaPdfViewerWindow from '@/components/business/OperaPdfViewerWindow'
+import OperaUnionApplyCheckWindow from '@/components/business/OperaUnionApplyCheckWindow'
 export default {
   name: 'OperaInsuranceApplyWindow1',
   extends: BaseOpera,
@@ -524,7 +549,8 @@
     OperaApplyChangeDetailWindow,
     OperaApplyChangeUnitDetailWindow,
     OperaInsuranceApplyAddWindow,
-    operaverifyPhoneNumberWindew
+    operaverifyPhoneNumberWindew,
+    OperaUnionApplyCheckWindow
   },
   data () {
     return {
@@ -603,6 +629,33 @@
       this.getList()
       this.getDW()
       this.getGZ()
+    },
+    viewShenqingdan(row) {
+      if (!row) return;
+      this.$refs.OperaPdfViewerWindow.open(row.name, row.fileurlFull)
+    },
+    viewConfirmationLetter() {
+      this.$refs.OperaPdfViewerWindow.open('鏌ョ湅鏂规纭涔�', this.model.fanganFile.fileurlFull)
+    },
+    review() {
+      this.$confirm('鏄惁纭畾澶嶆牳閫氳繃?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        reexamineCheck({ id: this.dataId })
+          .then(res => {
+            this.getDetail()
+          })
+      }).catch(() => {
+
+      });
+    },
+    exportRecords() {
+      exportApplyJiajianBaoExcel({ id: this.dataId })
+        .then(response => {
+          this.download(response)
+        })
     },
     result(flag,param){
       console.log(flag,param)
@@ -946,14 +999,18 @@
             .desc_item_label {
                 width: 100%;
                 display: flex;
-                align-items: center;
-                justify-content: space-between;
+                align-items: start;
+                flex-direction: column;
                 margin-bottom: 10px;
                 span {
                     font-size: 14px;
                     color: black;
                     margin-right: 30px;
                 }
+                .desc_item_label_right {
+                    width: 100%;
+                    margin: 10px 0;
+                }
             }
             .desc_item_from {
                 width: 100%;
diff --git a/company/src/components/business/OperaSolutionsBaseWindow.vue b/company/src/components/business/OperaSolutionsBaseWindow.vue
index e7f597e..bbb4437 100644
--- a/company/src/components/business/OperaSolutionsBaseWindow.vue
+++ b/company/src/components/business/OperaSolutionsBaseWindow.vue
@@ -25,7 +25,7 @@
             </el-form-item>
             <el-form-item label="鎶曚繚骞撮緞" prop="minAge">
                 <div style="display: flex; align-items: center;">
-                    <el-select v-model="form.minAge" style="flex: 1;" placeholder="璇烽�夋嫨">
+                    <el-select v-model="form.minAge" @change="changeMinAge" style="flex: 1;" placeholder="璇烽�夋嫨">
                         <el-option
                             v-for="item in 80"
                             :key="item"
@@ -34,7 +34,7 @@
                         </el-option>
                     </el-select>
                     <span style="margin: 0 30px;">鑷�</span>
-                    <el-select v-model="form.maxAge" style="flex: 1;" placeholder="璇烽�夋嫨">
+                    <el-select v-model="form.maxAge" @change="changeMaxAge" style="flex: 1;" placeholder="璇烽�夋嫨">
                         <el-option
                             v-for="item in 80"
                             :key="item"
@@ -87,7 +87,11 @@
                     placeholder="璇烽�夋嫨鎵规敼鎻愰啋鏃堕棿">
                 </el-time-picker>
             </el-form-item>
-            <el-button type="primary" @click="add" style="margin-bottom: 10px;">娣诲姞宸ョ</el-button>
+            <div style="display: flex; align-items: center;">
+                <el-button type="primary" @click="add" style="margin-bottom: 10px;">娣诲姞宸ョ</el-button>
+                <el-button type="primary" @click="impor" style="margin-bottom: 10px;">瀵煎叆宸ョ</el-button>
+                <el-button type="text" @click="exprot">瀵煎叆妯$増xls</el-button>
+            </div>
             <el-table
                 :data="form.worktypeIdList"
                 border
@@ -133,6 +137,8 @@
                 <RichEditor :richData="form.ortherInfo" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor2" :readonly="false"/>
             </el-form-item>
         </el-form>
+        <!--    涓婁紶宸ョ    -->
+        <input type="file" @change="getFile" style="opacity: 0;" ref="upload" accept=".xlsx" />
     </GlobalWindow>
 </template>
 
@@ -140,7 +146,7 @@
   import BaseOpera from '@/components/base/BaseOpera'
   import GlobalWindow from '@/components/common/GlobalWindow'
   import { all } from '@/api/business/insurance'
-  import { all as allWorktype } from '@/api/business/worktype'
+  import { all as allWorktype, importExcelForSolution } from '@/api/business/worktype'
   import { solutionsBaseId } from '@/api/business/solutionsBase'
   import { pageAll as shopList } from '@/api/business/company'
   import UploadFile from '@/components/common/UploadFile'
@@ -233,6 +239,37 @@
       })
     },
     methods: {
+      // 瀵煎叆宸ョ妯℃澘
+      getFile(e) {
+        const formdate = new FormData()
+        formdate.append('file', e.target.files[0])
+        formdate.append('insuranceId', this.form.insuranceId)
+        importExcelForSolution(formdate)
+          .then(res => {
+            console.log(res)
+            res.forEach(id => {
+              if (this.form.worktypeIdList.length === 1 && !this.form.worktypeIdList[0].worktypeId) {
+                this.form.worktypeIdList[0].worktypeId = id
+              } else {
+                this.form.worktypeIdList.push({ worktypeId: id })
+              }
+            })
+          })
+          .catch(err => {
+            this.$message.error(err.message)
+          })
+          .finally(() => {
+            this.$refs.upload.value = null
+          })
+      },
+      impor() {
+        if (!this.form.insuranceId) return this.$message.warning('璇峰厛閫夋嫨浼佷笟')
+        this.$refs.upload.click()
+      },
+      // 瀵煎嚭妯℃澘
+      exprot() {
+        window.open(process.env.VUE_APP_TYPEWORK_URL)
+      },
       getWangedditor(val){
         this.form.specialAgreement = val;
       },
@@ -242,7 +279,18 @@
       getWangedditor2(val){
         this.form.ortherInfo = val;
       },
-
+      changeMinAge(e) {
+        if (this.form.maxAge && this.form.maxAge >= 0 && e > this.form.maxAge) {
+          this.form.minAge = ''
+          this.$message.warning('璧峰骞撮緞涓嶈兘澶т簬鎴骞撮緞锛�')
+        }
+      },
+      changeMaxAge(e) {
+        if (this.form.minAge && this.form.minAge >= 0 && e < this.form.minAge) {
+          this.form.maxAge = ''
+          this.$message.warning('鎴骞撮緞涓嶈兘澶т簬璧峰骞撮緞锛�')
+        }
+      },
       handNumberInput (value) {
         const regex = /^[-+]?\d*$/
         if (!regex.test(value)) {
@@ -338,7 +386,6 @@
                 this.form[key] = res[key]
               }
               this.form.correctWarnTime = `${this.form.correctWarnTime}:00`
-              console.log(this.form.correctWarnTime)
               if (res.worktypeList) {
                 this.form.worktypeIdList = res.worktypeList.map(item => {
                   return {
diff --git a/company/src/components/business/OperaSolutionsDescWindow.vue b/company/src/components/business/OperaSolutionsDescWindow.vue
index bacd9ca..67a8b60 100644
--- a/company/src/components/business/OperaSolutionsDescWindow.vue
+++ b/company/src/components/business/OperaSolutionsDescWindow.vue
@@ -57,8 +57,10 @@
                     <div class="info_list_item_val" ><a v-if="form.fanganFile && form.fanganFile.fileurlFull" style="cursor: pointer;color: #2E68EC" title="鐐瑰嚮鏌ョ湅" @click="openFile(form.fanganFile.fileurlFull)">{{ form.fanganFile.name || '鐐瑰嚮鏌ョ湅' }}</a></div>
                 </div>
             </div>
+            <div style="font-size: 18px; font-weight: bold; margin-bottom: 10px;" v-if="userInfo.type === 0">鏂规浣跨敤鎯呭喌</div>
             <el-table
-                :data="form.worktypeList"
+                v-if="userInfo.type === 0"
+                :data="list"
                 border
                 style="width: 100%; margin-bottom: 20px;">
                 <el-table-column
@@ -70,11 +72,37 @@
                     </template>
                 </el-table-column>
                 <el-table-column
-                    prop="worktypeName"
+                    prop="companyName"
                     align="center"
-                    label="宸ョ鍚嶇О">
+                    label="浼佷笟鍚嶇О">
+                </el-table-column>
+                <el-table-column
+                    align="center"
+                    label="绛剧珷鎯呭喌">
+                    <template slot-scope="{row}">
+                        <span v-if="row.signStatus === 0">寰呯绔�</span>
+                        <span v-if="row.signStatus === 1">宸茬绔�</span>
+                    </template>
                 </el-table-column>
             </el-table>
+<!--            <el-table-->
+<!--                :data="form.worktypeList"-->
+<!--                border-->
+<!--                style="width: 100%; margin-bottom: 20px;">-->
+<!--                <el-table-column-->
+<!--                    label="搴忓彿"-->
+<!--                    align="center"-->
+<!--                    width="80">-->
+<!--                    <template slot-scope="scope">-->
+<!--                        <span>{{scope.$index + 1}}</span>-->
+<!--                    </template>-->
+<!--                </el-table-column>-->
+<!--                <el-table-column-->
+<!--                    prop="worktypeName"-->
+<!--                    align="center"-->
+<!--                    label="宸ョ鍚嶇О">-->
+<!--                </el-table-column>-->
+<!--            </el-table>-->
         </div>
         <!-- 淇敼 -->
         <OperaSolutionsWindow ref="operaSolutionsWindow" @success="callback"/>
@@ -89,7 +117,7 @@
 import OperaSolutionsWindow from '@/components/business/OperaSolutionsWindow'
 import OperaPdfViewerWindow from '@/components/business/OperaPdfViewerWindow'
 import OperaSolutionsBaseDescWindow from '@/components/business/OperaSolutionsBaseDescWindow'
-import { solutionsId } from '@/api/business/solutions'
+import { solutionsId, listForCompany } from '@/api/business/solutions'
 import { mapState } from 'vuex'
 export default {
   name: 'OperaSolutionsDescWindow',
@@ -130,7 +158,8 @@
         signKeyword: '',
         worktypeList: [],
         worktypeIdList: []
-      }
+      },
+      list: []
     }
   },
   computed: {
@@ -186,8 +215,15 @@
           this.form[key] = target[key]
         }
         this.getDetails()
+        this.getList()
       })
     },
+    getList() {
+      listForCompany({ solutionId: this.form.id })
+        .then(res => {
+          this.list = res
+        })
+    },
     openFile (url) {
       setTimeout(() => {
         this.$refs.OperaPdfViewerWindow.open('鏂规纭涔�',url)
diff --git a/company/src/components/business/OperaSolutionsWindow.vue b/company/src/components/business/OperaSolutionsWindow.vue
index 597bc1f..4d23b6e 100644
--- a/company/src/components/business/OperaSolutionsWindow.vue
+++ b/company/src/components/business/OperaSolutionsWindow.vue
@@ -64,9 +64,9 @@
             </el-form-item>
             <el-form-item label="绛剧珷鏂瑰紡" prop="signType" v-if="form.type === 1">
                 <el-select v-model="form.signType" 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="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="鏈夋淳閬e崟浣�" prop="hasDispatchUnit">
diff --git a/company/src/components/business/OperaUnionApplyCheckWindow.vue b/company/src/components/business/OperaUnionApplyCheckWindow.vue
index 4ccb8b5..becba97 100644
--- a/company/src/components/business/OperaUnionApplyCheckWindow.vue
+++ b/company/src/components/business/OperaUnionApplyCheckWindow.vue
@@ -16,11 +16,11 @@
           <el-form-item label="涓婁紶鎶曚繚鍗曪細" prop="toubaodanFile">
             <UploadFile @remove="dele2" :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList" @uploadSuccess="toubaoFileUploaded" />
           </el-form-item>
-          <div v-for="(item,index) in this.model.applyList" :key="index">
-            <el-form-item :label="(index+1)+'.琚繚闄╀汉锛�'+item.companyName+')锛�'" prop="tbdMultifileList[index]">
-              <UploadFile  @remove="deleIndex(0,index)"  :uploadData="{ folder: 'apply',fileType:'.pdf' }"  :fileIndex="index"  :showTips="showTips" :fileList="model.applyList[index].fileList" @uploadSuccess="toubaoFileUploaded2" />
-            </el-form-item>
-          </div>
+<!--          <div v-for="(item,index) in this.model.applyList" :key="index">-->
+<!--            <el-form-item :label="(index+1)+'.琚繚闄╀汉锛�'+item.companyName+')锛�'" prop="tbdMultifileList[index]">-->
+<!--              <UploadFile  @remove="deleIndex(0,index)"  :uploadData="{ folder: 'apply',fileType:'.pdf' }"  :fileIndex="index"  :showTips="showTips" :fileList="model.applyList[index].fileList" @uploadSuccess="toubaoFileUploaded2" />-->
+<!--            </el-form-item>-->
+<!--          </div>-->
         </el-form>
         <!--    涓婁紶淇濋櫓鍗�    -->
       <el-form v-if="visible3==true" :model="form" ref="form3" :rules="rules3" style="width: 100%;">
@@ -56,7 +56,7 @@
         <el-form-item label="涓婁紶淇濋櫓鍗曪細" prop="baoxianFile">
           <UploadFile @remove="dele3"  :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />
         </el-form-item>
-        <div class="box_table">
+        <div class="box_table" v-if="false">
           <div class="box_table_head">
             <div class="box_table_head_item">搴忓彿</div>
             <div class="box_table_head_item">琚繚闄╀汉</div>
@@ -204,6 +204,7 @@
       }
 
       this.model = target
+      console.log(target)
       this.form.startTime = target.startTime
       this.form.endTime = target.endTime
       this.title = title
diff --git a/company/src/components/business/OperaUnionChangeCheckWindow.vue b/company/src/components/business/OperaUnionChangeCheckWindow.vue
index 4a85267..d758456 100644
--- a/company/src/components/business/OperaUnionChangeCheckWindow.vue
+++ b/company/src/components/business/OperaUnionChangeCheckWindow.vue
@@ -71,30 +71,30 @@
           <el-input v-model="form.code" placeholder="璇疯緭鍏�" v-trim/>
         </el-form-item>
         <el-form-item label="涓婁紶鎵瑰崟锛�" prop="baoxianFile">
-          <UploadFile @remove="dele3"  :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />
+          <UploadFile @remove="dele3" :limit="99" :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />
         </el-form-item>
-        <div class="box_table">
-          <div class="box_table_head">
-            <div class="box_table_head_item">搴忓彿</div>
-            <div class="box_table_head_item">琚繚闄╀汉</div>
-            <div v-if="model.type==0" class="box_table_head_item">鍔犱繚浜烘暟</div>
-            <div v-if="model.type==0" class="box_table_head_item">鍑忎繚浜烘暟</div>
-            <div v-if="model.type==1" class="box_table_head_item">鍙樻洿浜烘暟</div>
-            <div class="box_table_head_item">涓婁紶鎵瑰崟</div>
-          </div>
-          <div class="box_table_content" v-for="(item, index) in model.applyList" :key="index">
-            <div class="box_table_content_item">{{index + 1}}</div>
-            <div class="box_table_content_item" >{{ item.companyName }}</div>
-            <div v-if="model.type==0" class="box_table_content_item">{{ item.addNum }}</div>
-            <div v-if="model.type==0" class="box_table_content_item">{{ item.delNum }}</div>
-            <div  v-if="model.type==1" class="box_table_content_item">{{ item.changeNum }}</div>
-            <div class="box_table_content_item">
-              <el-form-item label="" prop="bxdMultifileList[index]">
-                <UploadFileLink   @remove="deleIndex(1,index)" :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileIndex="index" :showTips="showTips" :fileList="model.applyList[index].fileList1" @uploadSuccess="baoxianFileUploaded2" />
-              </el-form-item>
-            </div>
-          </div>
-        </div>
+<!--        <div class="box_table">-->
+<!--          <div class="box_table_head">-->
+<!--            <div class="box_table_head_item">搴忓彿</div>-->
+<!--            <div class="box_table_head_item">琚繚闄╀汉</div>-->
+<!--            <div v-if="model.type==0" class="box_table_head_item">鍔犱繚浜烘暟</div>-->
+<!--            <div v-if="model.type==0" class="box_table_head_item">鍑忎繚浜烘暟</div>-->
+<!--            <div v-if="model.type==1" class="box_table_head_item">鍙樻洿浜烘暟</div>-->
+<!--            <div class="box_table_head_item">涓婁紶鎵瑰崟</div>-->
+<!--          </div>-->
+<!--          <div class="box_table_content" v-for="(item, index) in model.applyList" :key="index">-->
+<!--            <div class="box_table_content_item">{{index + 1}}</div>-->
+<!--            <div class="box_table_content_item" >{{ item.companyName }}</div>-->
+<!--            <div v-if="model.type==0" class="box_table_content_item">{{ item.addNum }}</div>-->
+<!--            <div v-if="model.type==0" class="box_table_content_item">{{ item.delNum }}</div>-->
+<!--            <div  v-if="model.type==1" class="box_table_content_item">{{ item.changeNum }}</div>-->
+<!--            <div class="box_table_content_item">-->
+<!--              <el-form-item label="" prop="bxdMultifileList[index]">-->
+<!--                <UploadFileLink   @remove="deleIndex(1,index)" :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileIndex="index" :showTips="showTips" :fileList="model.applyList[index].fileList1" @uploadSuccess="baoxianFileUploaded2" />-->
+<!--              </el-form-item>-->
+<!--            </div>-->
+<!--          </div>-->
+<!--        </div>-->
       </el-form>
       <template v-slot:footer>
         <el-button type="primary" @click="doSubmit">纭� 瀹�</el-button>
@@ -118,6 +118,13 @@
   extends: BaseOpera,
   components: { UploadFile, GlobalWindow ,UploadFileLink},
   data () {
+    const checkFile = (rule, value, callback) => {
+      if (value.length === 0) {
+        callback(new Error('璇蜂笂浼犳壒鍗�'));
+      } else {
+        callback();
+      }
+    };
     return {
       // 琛ㄥ崟鏁版嵁
       model: {},
@@ -136,7 +143,7 @@
           { required: true, message: '璇峰畬鍠勪俊鎭�' }
         ],
         baoxianFile: [
-          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+          { required: true, validator: checkFile }
         ]
       },
       form: {
@@ -145,7 +152,7 @@
         applyTime: null,
         delValidTime: null,
         code: null,
-        baoxianFile: null,
+        baoxianFile: [],
         bxdMultifileList: [],
         fileList1: [],
         selectRadio: 0
@@ -171,8 +178,12 @@
         this.form.bxdMultifileList[index].name = null
       }
     },
-    dele3 () {
-      this.form.baoxianFile = null
+    dele3 (imgaddr) {
+      this.form.baoxianFile.forEach((item, index) => {
+        if (imgaddr === item.imgaddr) {
+          this.form.baoxianFile.splice(index, 1)
+        }
+      })
     },
     open (title, target, flag) {
       this.visible = true
@@ -182,7 +193,7 @@
         backCheckInfo: '',
         startTime: null,
         code: null,
-        baoxianFile: null,
+        baoxianFile: [],
         delValidTime: null,
         bxdMultifileList:[],
         fileList1: [],
@@ -238,7 +249,8 @@
       }
     },
     baoxianFileUploaded (data) {
-      this.form.baoxianFile = data
+      this.form.baoxianFile.push(data)
+      console.log(this.form.baoxianFile)
     },
     baoxianFileUploaded2 (data) {
       this.form.bxdMultifileList[data.index].fileurl = data.fileurl
@@ -266,8 +278,9 @@
             applyDate: (this.model.delOnlyReplace != 1 ? this.form.applyTime : this.form.delValidTime),
             delValidTime:this.form.delValidTime,
             code: this.form.code,
-            fileurl: this.form.baoxianFile.fileurl,
-            name: this.form.baoxianFile.name,
+            pidanFileList: this.form.baoxianFile,
+            // fileurl: this.form.baoxianFile.fileurl,
+            // name: this.form.baoxianFile.name,
             applyChangeBXDList:this.form.bxdMultifileList
           }
           uploadBXD(param)
diff --git a/company/src/components/business/OperaUnionChangeDetailWindow.vue b/company/src/components/business/OperaUnionChangeDetailWindow.vue
index e606aca..da2f6fc 100644
--- a/company/src/components/business/OperaUnionChangeDetailWindow.vue
+++ b/company/src/components/business/OperaUnionChangeDetailWindow.vue
@@ -27,7 +27,7 @@
                             <el-button v-if="[1,2].includes(model.status)" type="primary" @click="viewApplyFile">鏌ョ湅鐢宠鍗�</el-button>
                             <el-button v-if="[0].includes(model.status)" type="primary" :disabled="loading" :loading="loading" @click="getSignLink(0)">绛剧讲鐢宠鍗�</el-button>
                             <el-button v-if="[2].includes(model.status)" type="primary" @click="viewPidan">鏌ョ湅鎵瑰崟</el-button>
-                            <el-button v-if=" [1].includes(model.status)" type="primary" @click="$refs.OperaUnionChangeCheckWindow.open('涓婁紶鎵瑰崟',model,3)">涓婁紶鎵瑰崟</el-button>
+                            <el-button v-if=" [1].includes(model.status) && userInfo.type === 0" type="primary" @click="$refs.OperaUnionChangeCheckWindow.open('涓婁紶鎵瑰崟',model,3)">涓婁紶鎵瑰崟</el-button>
                             <el-button  v-if="[0,1].includes(model.status)" type="danger" @click="$refs.OperaUnionChangeCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
                         </template>
                         <template  v-if="0">
@@ -136,6 +136,7 @@
                           label="琚繚闄╀汉">
                       </el-table-column>
                         <el-table-column
+                            v-if="hasDispatchUnit !== 1"
                             prop="duName"
                             label="娲鹃仯鍗曚綅">
                         </el-table-column>
@@ -235,21 +236,37 @@
             </span>
       </el-dialog>
       <el-dialog
-          title="鏌ョ湅淇濋櫓鍗�"
+          title="鏌ョ湅鎵瑰崟"
           :visible.sync="visibleFile"
-          width="500px"
-          :modal="true"
+          width="700px"
+          :modal="false"
           :show-close="true"
           :close-on-click-modal="false"
           append-to-body
           center>
-        <div class="desc_item_from" v-for="(item, index) in pidanFileData" :key="index"  style="margin-bottom: 15px">
-          <span v-if="index ==0">{{item.name}}锛�</span>
-          <span v-if="index >0">琚繚闄╀汉锛坽{item.name}}锛変繚闄╁崟锛�</span>
-          <a  style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index ==0" @click="openFile(item.file.fileurlFull,item.name)">鍦ㄧ嚎棰勮</a>
-          <a   style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index !=0 " @click="openFile(item.file.fileurlFull,'琚繚闄╀汉锛�'+item.name+'锛変繚闄╁崟')">鍦ㄧ嚎棰勮</a>
-          <span v-if="!item.file || !item.file.fileurl">鏈笂浼�</span>
-        </div>
+          <el-table
+              :data="model.pidanFileList"
+              border
+              style="width: 100%">
+              <el-table-column
+                  prop="name"
+                  label="鍚嶇О">
+              </el-table-column>
+              <el-table-column
+                  width="90"
+                  label="鎿嶄綔">
+                  <template slot-scope="{ row }">
+                      <el-button type="primary" @click="seePidan(row.name, row.fileurlFull)">鏌ョ湅</el-button>
+                  </template>
+              </el-table-column>
+          </el-table>
+<!--        <div class="desc_item_from" v-for="(item, index) in pidanFileData" :key="index"  style="margin-bottom: 15px">-->
+<!--          <span v-if="index ==0">{{item.name}}锛�</span>-->
+<!--          <span v-if="index >0">琚繚闄╀汉锛坽{item.name}}锛変繚闄╁崟锛�</span>-->
+<!--          <a  style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index ==0" @click="openFile(item.file.fileurlFull,item.name)">鍦ㄧ嚎棰勮</a>-->
+<!--          <a   style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index !=0 " @click="openFile(item.file.fileurlFull,'琚繚闄╀汉锛�'+item.name+'锛変繚闄╁崟')">鍦ㄧ嚎棰勮</a>-->
+<!--          <span v-if="!item.file || !item.file.fileurl">鏈笂浼�</span>-->
+<!--        </div>-->
         <span slot="footer" class="dialog-footer">
                 <el-button @click="visibleFile=false">鍏� 闂�</el-button>
             </span>
@@ -311,6 +328,7 @@
       model: {},
       visiblePhone: false,
       visibleFile:false,
+      hasDispatchUnit: null,
       form: {
           businessId: null,
           phone: this.$store.state.userInfo.company? this.$store.state.userInfo.company.phone:null,
@@ -364,6 +382,9 @@
         this.getDetail()
         this.getList()
      },
+    seePidan(name, url) {
+       this.$refs.OperaPdfViewerWindow.open(name, url)
+    },
     send () {
       sendSms({
         phone: this.form.phone
@@ -493,7 +514,6 @@
         this.model = res
         this.tableData = new Array()
         this.tableData.push(res)
-          console.log(this.tableData)
         this.pidanFileData.push({ name: '鍟嗘埛淇濋櫓鍗�', file: this.model.pidanFile })
         this.getApplyList()
       }).catch(err => {
@@ -502,6 +522,7 @@
     getApplyList () {
       applyList({ unionChangeId: this.model.id, getFiles: 1 }).then(res => {
         this.model.applyList = res
+        this.hasDispatchUnit = res[0].hasDispatchUnit
         if (res && res.length > 0) {
           res.forEach(item => {
             if (item.pidanFile) {
diff --git a/company/src/components/business/OperaUnionChangeUnitCheckWindow.vue b/company/src/components/business/OperaUnionChangeUnitCheckWindow.vue
index 5791392..685a964 100644
--- a/company/src/components/business/OperaUnionChangeUnitCheckWindow.vue
+++ b/company/src/components/business/OperaUnionChangeUnitCheckWindow.vue
@@ -35,30 +35,30 @@
         <el-input v-model="form.code" placeholder="璇疯緭鍏�" v-trim/>
       </el-form-item>
       <el-form-item label="涓婁紶鎵瑰崟锛�" prop="baoxianFile">
-        <UploadFile @remove="dele3"  :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />
+        <UploadFile @remove="dele3" :limit="99" :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />
       </el-form-item>
-      <div class="box_table">
-        <div class="box_table_head">
-          <div class="box_table_head_item">搴忓彿</div>
-          <div class="box_table_head_item">琚繚闄╀汉</div>
-          <div v-if="model.type==0" class="box_table_head_item">鍔犱繚浜烘暟</div>
-          <div v-if="model.type==0" class="box_table_head_item">鍑忎繚浜烘暟</div>
-          <div v-if="model.type==1" class="box_table_head_item">鍙樻洿浜烘暟</div>
-          <div class="box_table_head_item">涓婁紶鎵瑰崟</div>
-        </div>
-        <div class="box_table_content" v-for="(item, index) in model.applyList" :key="index">
-          <div class="box_table_content_item">{{index + 1}}</div>
-          <div class="box_table_content_item" >{{ item.companyName }}</div>
-          <div v-if="model.type==0" class="box_table_content_item">{{ item.addNum }}</div>
-          <div v-if="model.type==0" class="box_table_content_item">{{ item.delNum }}</div>
-          <div  v-if="model.type==1" class="box_table_content_item">{{ item.changeNum }}</div>
-          <div class="box_table_content_item">
-            <el-form-item label="" prop="bxdMultifileList[index]">
-              <UploadFileLink   @remove="deleIndex(1,index)" :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileIndex="index" :showTips="showTips" :fileList="model.applyList[index].fileList1" @uploadSuccess="baoxianFileUploaded2" />
-            </el-form-item>
-          </div>
-        </div>
-      </div>
+<!--      <div class="box_table">-->
+<!--        <div class="box_table_head">-->
+<!--          <div class="box_table_head_item">搴忓彿</div>-->
+<!--          <div class="box_table_head_item">琚繚闄╀汉</div>-->
+<!--          <div v-if="model.type==0" class="box_table_head_item">鍔犱繚浜烘暟</div>-->
+<!--          <div v-if="model.type==0" class="box_table_head_item">鍑忎繚浜烘暟</div>-->
+<!--          <div v-if="model.type==1" class="box_table_head_item">鍙樻洿浜烘暟</div>-->
+<!--          <div class="box_table_head_item">涓婁紶鎵瑰崟</div>-->
+<!--        </div>-->
+<!--        <div class="box_table_content" v-for="(item, index) in model.applyList" :key="index">-->
+<!--          <div class="box_table_content_item">{{index + 1}}</div>-->
+<!--          <div class="box_table_content_item" >{{ item.companyName }}</div>-->
+<!--          <div v-if="model.type==0" class="box_table_content_item">{{ item.addNum }}</div>-->
+<!--          <div v-if="model.type==0" class="box_table_content_item">{{ item.delNum }}</div>-->
+<!--          <div  v-if="model.type==1" class="box_table_content_item">{{ item.changeNum }}</div>-->
+<!--          <div class="box_table_content_item">-->
+<!--            <el-form-item label="" prop="bxdMultifileList[index]">-->
+<!--              <UploadFileLink   @remove="deleIndex(1,index)" :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileIndex="index" :showTips="showTips" :fileList="model.applyList[index].fileList1" @uploadSuccess="baoxianFileUploaded2" />-->
+<!--            </el-form-item>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--      </div>-->
     </el-form>
     <template v-slot:footer>
       <el-button type="primary" @click="doSubmit">纭� 瀹�</el-button>
@@ -108,7 +108,7 @@
         backCheckInfo: '',
         applyTime: null,
         code: null,
-        baoxianFile: null,
+        baoxianFile: [],
         bxdMultifileList: [],
         fileList1: [],
         selectRadio: 0
@@ -134,8 +134,12 @@
         this.form.bxdMultifileList[index].name = null
       }
     },
-    dele3 () {
-      this.form.baoxianFile = null
+    dele3 (e) {
+        this.form.baoxianFile.forEach((item, index) => {
+          if (e === item.imgaddr) {
+            this.form.baoxianFile.splice(index, 1)
+          }
+        })
     },
     open (title, target, flag) {
       this.visible = true
@@ -145,7 +149,7 @@
         backCheckInfo: '',
         startTime: null,
         code: null,
-        baoxianFile: null,
+        baoxianFile: [],
         bxdMultifileList:[],
         fileList1: [],
         selectRadio: 0,
@@ -198,7 +202,7 @@
       }
     },
     baoxianFileUploaded (data) {
-      this.form.baoxianFile = data
+      this.form.baoxianFile.push(data)
     },
     baoxianFileUploaded2 (data) {
       this.form.bxdMultifileList[data.index].fileurl = data.fileurl
@@ -225,8 +229,9 @@
               id: this.model.id,
               applyDate: this.form.applyTime,
               code: this.form.code,
-              fileurl: this.form.baoxianFile.fileurl,
-              name: this.form.baoxianFile.name,
+              // fileurl: this.form.baoxianFile.fileurl,
+              // name: this.form.baoxianFile.name,
+              pidanFileList: this.form.baoxianFile,
               applyChangeBXDList:this.form.bxdMultifileList
             }
             uploadBXD(param)
diff --git a/company/src/components/business/OperaUnionChangeUnitDetailWindow.vue b/company/src/components/business/OperaUnionChangeUnitDetailWindow.vue
index df35918..61d53af 100644
--- a/company/src/components/business/OperaUnionChangeUnitDetailWindow.vue
+++ b/company/src/components/business/OperaUnionChangeUnitDetailWindow.vue
@@ -10,7 +10,7 @@
             <div class="desc_item">
                 <div class="desc_item_label">
                     <div class="desc_item_label_left">
-                        <span>鎶曚繚浜猴細{{ model.shopName}}</span>
+                        <span>鎶曚繚浜猴細{{ model.shopName}} </span>
                       <span v-if="model.status === 0">淇濆崟鐘舵�侊細<span  :class="'change-status'+model.status" >寰呯缃�</span></span>
                       <span v-if="model.status === 1">淇濆崟鐘舵�侊細<span  :class="'change-status'+model.status" >寰呭鏍�</span></span>
                       <span v-if="model.status === 2">淇濆崟鐘舵�侊細<span  :class="'change-status'+model.status" >宸茬敓鏁�</span></span>
@@ -27,7 +27,7 @@
                             <el-button v-if="[1,2].includes(model.status)" type="primary" @click="viewApplyFile">鏌ョ湅鐢宠鍗�</el-button>
                             <el-button v-if="[0].includes(model.status)" type="primary" :disabled="loading" :loading="loading" @click="getSignLink(0)">绛剧讲鐢宠鍗�</el-button>
                             <el-button v-if="[2].includes(model.status)" type="primary" @click="viewPidan">鏌ョ湅鎵瑰崟</el-button>
-                            <el-button v-if=" [1].includes(model.status)" type="primary" @click="$refs.OperaUnionChangeCheckWindow.open('涓婁紶鎵瑰崟',model,3)">涓婁紶鎵瑰崟</el-button>
+                            <el-button v-if=" [1].includes(model.status) && userInfo.type !== 2" type="primary" @click="$refs.OperaUnionChangeCheckWindow.open('涓婁紶鎵瑰崟',model,3)">涓婁紶鎵瑰崟</el-button>
                             <el-button  v-if="[0,1].includes(model.status)" type="danger" @click="$refs.OperaUnionChangeCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
                         </template>
                         <template  v-if="0">
@@ -113,6 +113,7 @@
                           label="琚繚闄╀汉">
                       </el-table-column>
                       <el-table-column
+                          v-if="hasDispatchUnit !== 1"
                           prop="oldDuName"
                           label="鍘熸淳閬e崟浣�">
                       </el-table-column>
@@ -121,6 +122,7 @@
                           label="鍘熸墍灞炲伐绉�">
                       </el-table-column>
                       <el-table-column
+                          v-if="hasDispatchUnit !== 1"
                           prop="duName"
                           label="鏇存崲鍚庢淳閬e崟浣�">
                       </el-table-column>
@@ -203,21 +205,29 @@
             </span>
       </el-dialog>
       <el-dialog
-          title="鏌ョ湅淇濋櫓鍗�"
+          title="鏌ョ湅鎵瑰崟"
           :visible.sync="visibleFile"
           width="800px"
-          :modal="true"
+          :modal="false"
           :show-close="true"
           :close-on-click-modal="false"
           append-to-body
           center>
-        <div class="desc_item_from" v-for="(item, index) in pidanFileData" :key="index"  style="margin-bottom: 15px">
-          <span v-if="index ==0">{{item.name}}锛�</span>
-          <span v-if="index >0">琚繚闄╀汉锛坽{item.name}}锛変繚闄╁崟锛�</span>
-          <a  style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index ==0" @click="openFile(item.file.fileurlFull,item.name)">鍦ㄧ嚎棰勮</a>
-          <a  style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index !=0 " @click="openFile(item.file.fileurlFull,'琚繚闄╀汉锛�'+item.name+'锛変繚闄╁崟')">鍦ㄧ嚎棰勮</a>
-          <span v-if="!item.file || !item.file.fileurl">鏈笂浼�</span>
-        </div>
+          <el-table :data="model.pidanFileList">
+              <el-table-column property="name" label="鏂囦欢鍚�"></el-table-column>
+              <el-table-column label="鎿嶄綔" width="90px">
+                  <template slot-scope="{row}">
+                      <el-button type="primary" @click="chakan(row.name, row.fileurlFull)">鏌ョ湅</el-button>
+                  </template>
+              </el-table-column>
+          </el-table>
+<!--        <div class="desc_item_from" v-for="(item, index) in pidanFileData" :key="index"  style="margin-bottom: 15px">-->
+<!--          <span v-if="index ==0">{{item.name}}锛�</span>-->
+<!--          <span v-if="index >0">琚繚闄╀汉锛坽{item.name}}锛変繚闄╁崟锛�</span>-->
+<!--          <a  style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index ==0" @click="openFile(item.file.fileurlFull,item.name)">鍦ㄧ嚎棰勮</a>-->
+<!--          <a  style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index !=0 " @click="openFile(item.file.fileurlFull,'琚繚闄╀汉锛�'+item.name+'锛変繚闄╁崟')">鍦ㄧ嚎棰勮</a>-->
+<!--          <span v-if="!item.file || !item.file.fileurl">鏈笂浼�</span>-->
+<!--        </div>-->
 <!--
         <div class="desc_item_from" v-for="(item, index) in pidanFileData" :key="index"  style="margin-bottom: 15px">
           <span v-if="index ==0">{{item.name}}锛�</span>
@@ -283,6 +293,7 @@
       model: {},
       visiblePhone: false,
       visibleFile:false,
+      hasDispatchUnit: null,
       form: {
           businessId: null,
           phone: this.$store.state.userInfo.company? this.$store.state.userInfo.company.phone:null,
@@ -336,6 +347,9 @@
         this.getDetail()
         this.getList()
      },
+    chakan(name, url) {
+       this.$refs.OperaPdfViewerWindow.open(name, url)
+    },
     send () {
       sendSms({
         phone: this.form.phone
@@ -472,6 +486,7 @@
     getApplyList () {
       applyList({ unionChangeId: this.model.id, getFiles: 1 }).then(res => {
         this.model.applyList = res
+        this.hasDispatchUnit = res[0].hasDispatchUnit
         if (res && res.length > 0) {
           res.forEach(item => {
             if (item.pidanFile) {
diff --git a/company/src/components/business/OperaWtbApplyShopWindow.vue b/company/src/components/business/OperaWtbApplyShopWindow.vue
index ec7d1b2..3ea73c1 100644
--- a/company/src/components/business/OperaWtbApplyShopWindow.vue
+++ b/company/src/components/business/OperaWtbApplyShopWindow.vue
@@ -20,16 +20,19 @@
                     <div class="desc_item_label_left">
                         <span>鎶曚繚浜猴細{{ model.shopName }}</span>
                         <span>琚繚闄╀汉锛歿{ model.companyName }}</span>
-                      <span>淇濆崟鐘舵�侊細<span  :class="'apply-status'+model.status" >{{ model.statusInfo }}</span></span>
+                      <span>淇濆崟鐘舵�侊細
+                          <span  :class="'apply-status'+model.status" >{{ model.statusInfo }}</span>
+                      </span>
                         <span>鎻愪氦鏃堕棿锛歿{ model.createDate }}</span>
                     </div>
                   <div class="desc_item_label_right">
+                      <el-button type="primary" @click="viewConfirmationLetter">鏌ョ湅鏂规纭涔�</el-button>
                     <el-button type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚璇︽儏鍗�',model,0)">瀵煎嚭璇﹀崟</el-button>
                       <template v-if="userInfo.type === 1">
                           <el-button v-if="model.status == 24" type="primary" @click="$refs.OperaInsuranceApplyAddWindow.open('鎶曚繚鐢宠', {id: dataId})">鍐嶆鎶曚繚</el-button>
-                          <el-button v-if="[21,22,23,24,25,26,27].includes(model.status)" type="primary" @click="viewFanganshu">鏌ョ湅纭涔�</el-button>
+<!--                          <el-button v-if="[21,22,23,24,25,26,27].includes(model.status)" type="primary" @click="viewFanganshu">鏌ョ湅纭涔�</el-button>-->
                         <el-button v-if="[22,23,24,25,26,27].includes(model.status)  && model.shenqingdanFile" type="primary" @click="viewShenqingdan">鏌ョ湅鐢宠鍗�</el-button>
-                        <el-button v-if="[1,2,3].includes(model.unionApplyTbdStatus) &&(model.toubaodanFile || model.oubaodanSignedFile)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
+                        <el-button v-if="[1,2,3].includes(model.unionApplyTbdStatus) && (model.toubaodanFile || model.toubaodanSignedFile) && model.signType !== 1" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
                         <el-button v-if="[3].includes(model.unionApplyTbdStatus) &&(model.baoxiandanFile)" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
                         <!--                          goSign-->
                         <el-button v-if="model.status == 20" type="primary" :disabled="loading" :loading="loading" @click="getSignLink(0)">绛剧讲鏂规纭涔�</el-button>
@@ -38,7 +41,7 @@
                         <el-button v-if="model.status == 24" type="danger" @click="closeOrder">鍏抽棴鐢宠</el-button>
                       </template>
                     <template v-if="userInfo.type === 2">
-                      <el-button v-if="[21,22,23,24,25,26,27].includes(model.status)" type="primary" @click="viewFanganshu">鏌ョ湅纭涔�</el-button>
+<!--                      <el-button v-if="[21,22,23,24,25,26,27].includes(model.status)" type="primary" @click="viewFanganshu">鏌ョ湅纭涔�</el-button>-->
                       <el-button v-if="[22,23,24,25,26,27].includes(model.status)  && model.shenqingdanFile" type="primary" @click="viewShenqingdan">鏌ョ湅鐢宠鍗�</el-button>
                       <el-button v-if="[1,2,3].includes(model.unionApplyTbdStatus) &&(model.toubaodanFile || model.oubaodanSignedFile)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
                       <el-button v-if="[3].includes(model.unionApplyTbdStatus) &&(model.baoxiandanFile)" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
@@ -47,7 +50,7 @@
                       <el-button v-if="model.status == 23" type="danger" @click="$refs.OperaWtbApplyCheckWindow.open('鍏抽棴鐢宠',model,2)">鍏抽棴鐢宠</el-button>
                     </template>
                     <template v-if="userInfo.type === 0">
-                      <el-button v-if="[21,22,23,24,25,26,27].includes(model.status)" type="primary" @click="viewFanganshu">鏌ョ湅纭涔�</el-button>
+<!--                      <el-button v-if="[21,22,23,24,25,26,27].includes(model.status)" type="primary" @click="viewFanganshu">鏌ョ湅纭涔�</el-button>-->
                       <el-button v-if="[22,23,24,25,26,27].includes(model.status)  && model.shenqingdanFile" type="primary" @click="viewShenqingdan">鏌ョ湅鐢宠鍗�</el-button>
                       <el-button v-if="[1,2,3].includes(model.unionApplyTbdStatus) &&(model.toubaodanFile || model.oubaodanSignedFile)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
                       <el-button v-if="[3].includes(model.unionApplyTbdStatus) &&(model.baoxiandanFile)" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
@@ -80,15 +83,7 @@
                             align="center"
                             :label="getApplyTimeTitle(1,model.solutionType,model)">
                         </el-table-column>
-                        <el-table-column
-                            prop="insureNum"
-                            align="center"
-                            label="鎶曚繚浜烘暟">
-                          <template scope="{row}">
-                            <span>{{row.insureNum||0}} 浜�</span>
-                          </template>
-                        </el-table-column>
-                      <el-table-column prop="guaranteeNum"  align="center" label="鍦ㄤ繚浜烘暟" >
+                      <el-table-column prop="guaranteeNum"  align="center" label="褰撳墠鍦ㄤ繚浜烘暟" >
                         <template scope="{row}">
                           <span>{{row.guaranteeNum||0}} 浜�</span>
                         </template>
@@ -104,10 +99,10 @@
                         <el-table-column
                             prop="currentFee"
                             align="center"
-                            label="宸蹭骇鐢熻垂鐢�">
-                          <template scope="{row}">
-                            <span>{{row.currentFee!=null?row.currentFee+' 鍏�': '-'}}</span>
-                          </template>
+                            label="鎵规敼璐圭敤鍚堣">
+                            <template slot-scope="{row}">
+                                <span>{{row.changeMoney}}鍏�</span>
+                            </template>
                         </el-table-column>
                         <el-table-column
                             prop="fee"
@@ -121,9 +116,9 @@
                 </div>
                 <div class="desc_item_cate">
                     <el-tabs v-model="activeName" @tab-click="handleClick">
-                        <el-tab-pane label="鍦ㄤ繚浜哄憳" name="0" ></el-tab-pane>
+                        <el-tab-pane label="淇濆崟浜哄憳" name="0" ></el-tab-pane>
                         <el-tab-pane label="鍔�/鍑忎繚璁板綍"  name="1"></el-tab-pane>
-                        <el-tab-pane label="鏇存崲娲鹃仯鍗曚綅璁板綍" name="2"></el-tab-pane>
+                        <el-tab-pane :label="model.hasDispatchUnit !== 1 ? '鏇存崲娲鹃仯鍗曚綅' : '鏇存崲宸ョ璁板綍'" name="2"></el-tab-pane>
                     </el-tabs>
                 </div>
                 <div class="desc_item_search">
@@ -134,9 +129,10 @@
                                     <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>
-                            <el-form-item label="娲鹃仯鍗曚綅" prop="duId">
+                            <el-form-item label="娲鹃仯鍗曚綅" prop="duId" v-if="model.hasDispatchUnit !== 1">
                                 <el-select v-model="formInline.duId" placeholder="璇烽�夋嫨" @change="search">
                                     <el-option
                                         v-for="item in dwList"
@@ -216,6 +212,7 @@
                             <el-button @click="resetting" style="width: 80px;">閲嶇疆</el-button>
                             <el-button type="primary" style="width: 80px;" @click="exportExcel" v-if="activeName === '0'">瀵煎嚭鍚嶅崟</el-button>
                             <el-button type="primary" style="width: 100px;" @click="$refs.OperaApplyChangeMonthWindow.open('鍔犲噺淇濊垂鐢ㄦ湀搴︾粺璁�',model)" v-if="activeName === '1'">璐圭敤缁熻鏌ヨ</el-button>
+                            <el-button type="primary" style="width: 120px;" @click="exportRecords" v-if="activeName === '1' && [5,27].includes(model.status)">瀵煎嚭鍔犲噺淇濊褰�</el-button>
                         </el-form-item>
                     </el-form>
                 </div>
@@ -248,12 +245,23 @@
                             </template>
                         </el-table-column>
                         <el-table-column
+                            align="center"
+                            :key="Math.random()"
+                            label="鍦ㄤ繚鐘舵��">
+                            <template slot-scope="{row}">
+                                <span v-if="row.applyStatus === 0" style="color: #00BA92;">淇濋殰涓�</span>
+                                <span v-if="row.applyStatus === 1" style="color: #999;">涓嶅湪淇�</span>
+                                <span v-if="row.applyStatus === 2" style="color: #f95601;">寰呯敓鏁�</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column
                             :key="Math.random()"
                             prop="idcardNo"
                             align="center"
                             label="韬唤璇佸彿">
                         </el-table-column>
                         <el-table-column
+                            v-if="model.hasDispatchUnit !== 1"
                             :key="Math.random()"
                             prop="duName"
                             align="center"
@@ -410,7 +418,7 @@
                             :key="Math.random()"
                             prop="changeNum"
                             align="center"
-                            label="鏇存崲娲鹃仯鍗曚綅浜烘暟">
+                            :label="model.hasDispatchUnit !== 1 ? '鏇存崲娲鹃仯鍗曚綅浜烘暟' : '鏇存崲宸ョ浜烘暟'">
                         </el-table-column>
                         <el-table-column
                             :key="Math.random()"
@@ -544,7 +552,7 @@
   getMemberListOnlineSignLink, getSignTBQRSLink, getSignWTBTBDLink
 } from '@/api/business/insuranceApply'
 import { findListByDTO } from '@/api/business/dispatchUnit'
-import { fetchList } from '@/api/business/applyChange'
+import { fetchList, exportApplyJiajianBaoExcel } from '@/api/business/applyChange'
 import { findListByDTO as worktypeFindListByDTO } from '@/api/business/worktype'
 import { mapState } from 'vuex'
 import {sendSms} from '@/api/business/smsEmail';
@@ -657,6 +665,15 @@
       this.getDW()
       this.getGZ()
     },
+    exportRecords() {
+      exportApplyJiajianBaoExcel({ id: this.dataId })
+        .then(response => {
+          this.download(response)
+        })
+    },
+    viewConfirmationLetter() {
+      this.$refs.OperaPdfViewerWindow.open('鏌ョ湅鏂规纭涔�', this.model.fanganFile.fileurlFull)
+    },
     getSignLink (flag) {
       if (flag === 0) {
         this.signTitle = '绛剧讲鏂规纭涔�'
@@ -688,6 +705,8 @@
             // }, 500)
           }).catch(err => {
             this.$tip.apiFailed(err)
+          }).finally(() => {
+            this.loading = false
           })
         } else if (this.form.type === 1) {
           getMemberListOnlineSignLink(this.form).then(res => {
@@ -698,6 +717,8 @@
             // }, 500)
           }).catch(err => {
             this.$tip.apiFailed(err)
+          }).finally(() => {
+            this.loading = false
           })
         } else if (this.form.type === 2) {
           getSignWTBTBDLink(this.form).then(res => {
@@ -708,6 +729,8 @@
             // }, 500)
           }).catch(err => {
             this.$tip.apiFailed(err)
+          }).finally(() => {
+            this.loading = false
           })
         }
       // })
diff --git a/company/src/components/business/allocateEnterprises.vue b/company/src/components/business/allocateEnterprises.vue
new file mode 100644
index 0000000..9488e2c
--- /dev/null
+++ b/company/src/components/business/allocateEnterprises.vue
@@ -0,0 +1,113 @@
+<template>
+    <GlobalWindow
+        class="menu-config-dialog"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        width="800px"
+        title="鍒嗛厤鏈嶅姟浼佷笟"
+        @confirm="confirm"
+    >
+        <p class="tip">涓虹敤鎴� <em>{{form.name || ''}}</em> 鍒嗛厤浼佷笟</p>
+        <el-transfer
+            :titles="['鏈垎閰嶄紒涓�', '宸插垎閰嶄紒涓�']"
+            v-model="form.companyIds"
+            :data="enterprise" />
+    </GlobalWindow>
+</template>
+
+<script>
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import { allForFp } from '@/api/business/company'
+  import { auth, getById } from '@/api/business/customerService'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'allocateEnterprises',
+    components: { GlobalWindow },
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    data () {
+      return {
+        visible: false,
+        isWorking: false,
+        form: {
+          id: null,
+          name: '',
+          companyIds: []
+        },
+        enterprise: []
+      }
+    },
+    methods: {
+      open (title, id) {
+        this.title = title
+        this.visible = true
+        this.getCompany()
+        for (const key in this.form) {
+          this.form[key] = ''
+        }
+        getById(id)
+          .then(res => {
+            this.form.id = res.id
+            this.form.name = res.name
+            this.form.companyIds = res.customerCompanyList.map(item => item.companyId)
+          })
+      },
+      getCompany() {
+        allForFp({ type: this.userInfo.type })
+          .then(res => {
+            this.enterprise = res.map(item => {
+              return {
+                key: item.id,
+                label: item.name
+              }
+            })
+          })
+      },
+      confirm() {
+        let obj = {
+          id: this.form.id,
+          customerCompanyList: []
+        }
+        if (this.form.companyIds.length > 0) {
+          obj.customerCompanyList = this.form.companyIds.map(item => {
+            return {
+              companyId: item
+            }
+          })
+        }
+        this.isWorking = true
+        auth(obj)
+          .then(() => {
+            this.visible = false
+            this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+            this.$emit('success')
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+      }
+    }
+  }
+</script>
+<style>
+    .el-transfer-panel {
+        width: 300px !important;
+    }
+</style>
+<style scoped lang="scss">
+    @import "@/assets/style/variables.scss";
+    .global-window {
+        .tip {
+            margin-bottom: 12px;
+            em {
+                font-style: normal;
+                color: $primary-color;
+                font-weight: bold;
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/business/authorizedEnterprise.vue b/company/src/components/business/authorizedEnterprise.vue
new file mode 100644
index 0000000..3817fde
--- /dev/null
+++ b/company/src/components/business/authorizedEnterprise.vue
@@ -0,0 +1,127 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :withFooter="false"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <el-table
+            :data="tableData"
+            border
+            style="width: 100%">
+            <el-table-column
+                prop="username"
+                label="璐﹀彿">
+            </el-table-column>
+            <el-table-column
+                prop="realname"
+                label="濮撳悕">
+            </el-table-column>
+            <el-table-column
+                prop="mobile"
+                label="鑱旂郴鏂瑰紡">
+            </el-table-column>
+            <el-table-column
+                width="200"
+                prop="companyName"
+                label="鎺堟潈浼佷笟鍚嶇О">
+            </el-table-column>
+            <el-table-column
+                prop="auditName"
+                label="鎺堟潈浜�">
+            </el-table-column>
+            <el-table-column
+                width="170"
+                prop="createDate"
+                label="鎺堟潈鏃堕棿">
+            </el-table-column>
+            <el-table-column
+                label="鎿嶄綔">
+                <template slot-scope="{row}">
+                    <el-button type="text" @click="cancel(row.id)">鍙栨秷鎺堟潈</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div style="width: 100%; height: 15px;"></div>
+        <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="form.page"
+            :page-sizes="[10, 30, 50, 100]"
+            :page-size="form.size"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total">
+        </el-pagination>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import { page, deleteById } from '@/api/business/companyPermission'
+  export default {
+    name: 'authorizedEnterprise',
+    extends: BaseOpera,
+    components: { GlobalWindow },
+    data () {
+      return {
+        model: {},
+        tableData: [],
+        form: {
+          page: 1,
+          capacity: 10,
+          model: {
+            userId: null
+          }
+        },
+        total: 0
+      }
+    },
+    methods: {
+      cancel(id) {
+        this.$confirm('纭畾鍙栨秷鎺堟潈璇ヤ紒涓氬悧?', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          deleteById(id)
+            .then(res => {
+              this.getList()
+            })
+        }).catch(() => {
+
+        });
+      },
+      handleSizeChange(e) {
+        this.form.capacity = e
+        this.getList()
+      },
+      handleCurrentChange(e) {
+        this.form.page = e
+        this.getList()
+      },
+      open (title, id) {
+        this.title = title
+        this.visible = true
+        this.form.page = 1
+        this.form.capacity = 10
+        this.form.model.userId = id
+        this.getList()
+      },
+      getList() {
+        page(this.form)
+          .then(res => {
+            console.log(res)
+            this.total = res.total
+            this.tableData = res.records
+          })
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/company/src/components/business/detailsEntrustedInsurance.vue b/company/src/components/business/detailsEntrustedInsurance.vue
index 6b07c9c..d57101c 100644
--- a/company/src/components/business/detailsEntrustedInsurance.vue
+++ b/company/src/components/business/detailsEntrustedInsurance.vue
@@ -11,23 +11,40 @@
         <div class="desc_item_label">
           <div class="desc_item_label_left">
             <span>鎶曚繚浜猴細{{ model.companyName }}</span>
-            <span>淇濆崟鐘舵�侊細<span  :class="'union-apply-status'+model.status" >{{ model.statusInfo }}</span></span>
+            <span>淇濆崟鐘舵�侊細
+              <span v-if="model.status === 5 && model.statusInfo === '寰呭鏍�'" style="color: #216EEE;">{{ model.statusInfo }}</span>
+              <span v-else-if="model.status === 3 && model.statusInfo === '宸茶繃鏈�'" style="color: #999;">{{ model.statusInfo }}</span>
+              <span v-else-if="model.status === 3 && model.statusInfo === '寰呯敓鏁�'" style="color: #f95601;">{{ model.statusInfo }}</span>
+              <span v-else-if="model.status === 4 && model.statusInfo === '宸查��鍥�'" style="color: red;">{{ model.statusInfo }}</span>
+              <span :class="'union-apply-status'+model.status" v-else>{{ model.statusInfo }}</span>
+            </span>
             <span>鎻愪氦鏃堕棿锛歿{ model.createDate }}</span>
           </div>
           <div class="desc_item_label_right">
             <template v-if="userInfo.type === 2">
-              <el-button type="primary"   @click="$refs.InsuranceDetails.open('瀵煎嚭璇﹀崟',model,0)">瀵煎嚭璇﹀崟</el-button>
+              <el-button type="primary" @click="$refs.InsuranceDetails.open('瀵煎嚭璇﹀崟',model,0)">瀵煎嚭璇﹀崟</el-button>
               <el-button v-if="[0].includes(model.status) " type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('涓婁紶鎶曚繚鍗�',model,2)">涓婁紶鎶曚繚鍗�</el-button>
-              <el-button v-if="model.status == 1" type="primary" :disabled="loading" :loading="loading" @click="getSignLink(0)">绛剧讲鎶曚繚鍗�</el-button>
-              <el-button v-if="[2,3,4].includes(model.status)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
-              <el-button v-if="[2].includes(model.status) " type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('涓婁紶淇濋櫓鍗�',model,3)">涓婁紶淇濋櫓鍗�</el-button>
+              <el-button v-if="model.status == 1" type="primary" :disabled="loading" :loading="loading" @click="getSignLink(0)">{{model.signType === 1 ? '绛剧讲鐢宠鍗�' : '绛剧讲鎶曚繚鍗�'}}</el-button>
+              <el-button v-if="[2,3,4].includes(model.status)" type="primary" @click="viewToubaodan">{{model.signType === 1 ? '鏌ョ湅鐢宠鍗�' : '鏌ョ湅鎶曚繚鍗�'}}</el-button>
+<!--              <el-button v-if="[2].includes(model.status) " type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('涓婁紶淇濋櫓鍗�',model,3)">涓婁紶淇濋櫓鍗�</el-button>-->
               <el-button v-if="model.status == 3" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
+
+              <el-button v-if="[2,3,4,1,5].includes(model.status) && (model.toubaodanFile || model.toubaodanSignedFile)" type="primary" @click="viewToubaodan">{{model.signType === 1 ? '鏌ョ湅鐢宠鍗�' : '鏌ョ湅鎶曚繚鍗�'}}</el-button>
+              <el-button v-if="[0,1,2,5].includes(model.status) " type="danger" @click="$refs.OperaUnionApplyCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
+              <el-button v-if="[5].includes(model.status)" type="primary" @click="fusheng">鎶曚繚澶嶅</el-button>
+
               <el-button v-if="[0,1,2].includes(model.status) " type="danger" @click="$refs.OperaUnionApplyCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
             </template>
             <template v-if="userInfo.type ===0">
+              <el-button v-if="[2,3,4,1,5].includes(model.status) && (model.toubaodanFile || model.toubaodanSignedFile)" type="primary" @click="viewToubaodan">{{model.signType === 1 ? '鏌ョ湅鐢宠鍗�' : '鏌ョ湅鎶曚繚鍗�'}}</el-button>
+              <el-button v-if="[0].includes(model.status) " type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('涓婁紶鎶曚繚鍗�',model,2)">涓婁紶鎶曚繚鍗�</el-button>
+              <el-button v-if="[0, 1].includes(model.status)" type="primary" :disabled="loading" :loading="loading" @click="getSignLink(0)">{{model.signType === 1 ? '绛剧讲鐢宠鍗�' : '绛剧讲鎶曚繚鍗�'}}</el-button>
+              <el-button v-if="[0,1,2,5].includes(model.status) " type="danger" @click="$refs.OperaUnionApplyCheckWindow.open('閫�鍥炵敵璇�',model,1)">閫�鍥炵敵璇�</el-button>
+              <el-button v-if="[2].includes(model.status)" type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('涓婁紶淇濋櫓鍗�',model,3)">涓婁紶淇濋櫓鍗�</el-button>
               <el-button type="primary"   @click="$refs.InsuranceDetails.open('瀵煎嚭璇﹀崟',model,0)">瀵煎嚭璇﹀崟</el-button>
-              <el-button v-if="[2,3,4].includes(model.status)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
+<!--              <el-button v-if="[2,3,4].includes(model.status)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>-->
               <el-button v-if="[4].includes(model.status)" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
+              <el-button v-if="[5].includes(model.status)" type="primary" @click="fusheng">鎶曚繚澶嶅</el-button>
             </template>
           </div>
         </div>
@@ -98,9 +115,9 @@
         </div>
         <div class="desc_item_cate">
           <el-tabs v-model="activeName" @tab-click="handleClick">
-            <el-tab-pane label="鍦ㄤ繚浜哄憳" name="0" ></el-tab-pane>
+            <el-tab-pane label="淇濆崟浜哄憳" name="0" ></el-tab-pane>
             <el-tab-pane label="鍔�/鍑忎繚璁板綍"  name="1"></el-tab-pane>
-            <el-tab-pane label="鏇存崲娲鹃仯鍗曚綅璁板綍" name="2"></el-tab-pane>
+            <el-tab-pane label="鏇存崲宸ョ璁板綍" name="2"></el-tab-pane>
           </el-tabs>
         </div>
         <div class="desc_item_search">
@@ -111,6 +128,7 @@
                   <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>
               <el-form-item label="鍛樺伐濮撳悕" prop="memberName">
@@ -178,6 +196,16 @@
               </template>
             </el-table-column>
             <el-table-column
+              align="center"
+              :key="Math.random()"
+              label="鍦ㄤ繚鐘舵��">
+              <template slot-scope="{row}">
+                <span v-if="row.applyStatus === 0" style="color: #00BA92;">淇濋殰涓�</span>
+                <span v-if="row.applyStatus === 1" style="color: #999;">涓嶅湪淇�</span>
+                <span v-if="row.applyStatus === 2" style="color: #00BA92;">寰呯敓鏁�</span>
+              </template>
+            </el-table-column>
+            <el-table-column
                 :key="Math.random()"
                 prop="idcardNo"
                 align="center"
@@ -190,6 +218,7 @@
                 label="琚繚闄╀汉">
             </el-table-column>
             <el-table-column
+                v-if="model.hasDispatchUnit !== 1"
                 :key="Math.random()"
                 prop="duName"
                 align="center"
@@ -322,7 +351,7 @@
                 :key="Math.random()"
                 prop="changeNum"
                 align="center"
-                label="鏇存崲娲鹃仯鍗曚綅浜烘暟">
+                label="鏇存崲宸ョ浜烘暟">
             </el-table-column>
             <el-table-column
                 :key="Math.random()"
@@ -450,7 +479,7 @@
 import OperaApplyChangeUnitDetailWindow from '@/components/business/OperaApplyChangeUnitDetailWindow'
 
 import OperaUnionApplyCheckWindow from '@/components/business/OperaUnionApplyCheckWindow'
-import { getById, getSignLink } from '@/api/business/unionApply'
+import { getById, getSignLink, reexamineCheck } from '@/api/business/unionApply'
 
 import {
   applyDetailPage,
@@ -560,6 +589,20 @@
       this.getList()
       this.getDW()
       this.getGZ()
+    },
+    fusheng() {
+      this.$confirm('鏄惁纭畾澶嶅閫氳繃?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        reexamineCheck({ id: this.dataId })
+          .then(res => {
+            this.getDetail()
+          })
+      }).catch(() => {
+
+      });
     },
     getSignLink (flag) {
       if (flag === 0) {
@@ -814,10 +857,11 @@
       }, 500)
     },
     viewToubaodan () {
-      this.fileData = this.taobaodanFileData;
-      this.visibleFile=true
-      this.fileTitle='鏌ョ湅鎶曚繚鍗�'
-      this.fileFlag = 0
+      if (this.model.toubaodanSignedFile) {
+        this.$refs.OperaPdfViewerWindow.open(this.model.toubaodanSignedFile.name, this.model.toubaodanSignedFile.fileurlFull)
+      } else if (this.model.toubaodanFile) {
+        this.$refs.OperaPdfViewerWindow.open(this.model.toubaodanFile.name, this.model.toubaodanFile.fileurlFull)
+      }
     },
     viewBaoxiandan () {
       this.fileFlag = 1
diff --git a/company/src/components/business/modification.vue b/company/src/components/business/modification.vue
index 53e9d17..7d186a0 100644
--- a/company/src/components/business/modification.vue
+++ b/company/src/components/business/modification.vue
@@ -10,6 +10,7 @@
         <el-table v-if="form.solutionList && form.solutionList.length>0"
             :data="form.solutionList"
             border
+            border
             style="width: 100%">
             <el-table-column
                 label="搴忓彿"
@@ -23,8 +24,7 @@
                 align="center"
                 label="淇濋櫓鏂规">
                 <template slot-scope="scope">
-<!--                    :value="{ id:item.id, baseId: item.baseId }"-->
-                    <el-select v-model="scope.row.solution.id" @change="changeSolution($event, scope.$index)" placeholder="璇烽�夋嫨">
+                    <el-select v-model="scope.row.solution.id" :disabled="scope.row.disabled" filterable @change="changeSolution($event, scope.$index)" placeholder="璇烽�夋嫨">
                         <el-option
                             v-for="item in programme"
                             :key="item.id"
@@ -38,7 +38,7 @@
               align="center"
               label="濮旀墭鍟嗘埛">
             <template slot-scope="scope">
-              <el-select :ref="'shopSelect'+scope.$index" :disabled="scope.row.solution.type ==1" v-model="scope.row.shopId" clearable value-key="id" placeholder="璇烽�夋嫨">
+              <el-select :ref="'shopSelect'+scope.$index" disabled v-model="scope.row.shopId" clearable value-key="id" placeholder="璇烽�夋嫨">
                 <el-option
                     v-for="item in shops"
                     :key="item.id"
@@ -54,6 +54,14 @@
                 <template slot-scope="{row}">
                     <el-checkbox :true-label="1" :false-label="0" disabled  v-model="row.canAdd">鍔犱繚</el-checkbox>
                     <el-checkbox :true-label="1" :false-label="0"  disabled   v-model="row.canReduce">鍑忎繚</el-checkbox>
+                </template>
+            </el-table-column>
+            <el-table-column
+                align="center"
+                label="绛剧讲鐘舵��">
+                <template slot-scope="{row}">
+                    <template v-if="row.signStatus === 0">寰呯绔�</template>
+                    <template v-else-if="row.signStatus === 1">宸茬绔�</template>
                 </template>
             </el-table-column>
             <el-table-column
@@ -116,9 +124,10 @@
         if (item.id === e) {
           baseId = item.baseId
           this.form.solutionList[index].solution.type = item.type
-          if(item.type == 1){
+          // console.log(item.type)
+          // if(item.type == 1){
             this.form.solutionList[index].shopId =item.shopId
-          }
+          // }
         }
       })
 
@@ -163,18 +172,20 @@
         .then(resa => {
           resa.forEach(item => {
             this.form.solutionList.push({
+              disabled: true,
               solution: { id: item.solutionId, baseId: item.solutionBaseId,type:item.solutionType },
               shopId: item.shopId,
               canAdd: 1,
-              canReduce: 1
+              canReduce: 1,
+              signStatus: item.signStatus
             })
           })
-          console.log(this.form.solutionList)
           that.visible = true
         })
     },
     add () {
       this.form.solutionList.push({
+        disabled: false,
         solution: { id: null, baseId: null },
         shopId: null,
         canAdd: 1,
diff --git a/company/src/components/business/operaCompanyUserApplyDescWindow.vue b/company/src/components/business/operaCompanyUserApplyDescWindow.vue
new file mode 100644
index 0000000..9c7a58e
--- /dev/null
+++ b/company/src/components/business/operaCompanyUserApplyDescWindow.vue
@@ -0,0 +1,168 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :withFooter="false"
+        :visible.sync="visible"
+    >
+        <div class="info">
+            <div class="info_label">
+                <span>鐢宠璁板綍璇︽儏</span>
+            </div>
+            <div class="info_list">
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鐢宠浜猴細</div>
+                    <div class="info_list_item_val">{{form.realName}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">鐢宠鏃堕棿锛�</div>
+                    <div class="info_list_item_val">{{form.createDate}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鎺堟潈璐﹀彿锛�</div>
+                    <div class="info_list_item_val">{{form.userName}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鎺堟潈绠$悊浼佷笟锛�</div>
+                    <div class="info_list_item_val">{{form.companyNames}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鐢宠璇存槑锛�</div>
+                    <div class="info_list_item_val">{{form.content}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鐢宠闄勪欢锛�</div>
+                    <div class="info_list_item_val">
+                        <div class="info_list_item_val_cul">
+                            <u v-for="(item, index) in form.multifileList" :key="index" @click="openFile(item.name, item.fileurlFull)">{{item.name}}</u>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="info">
+            <div class="info_label">
+                <span>瀹℃壒鎯呭喌</span>
+            </div>
+            <div class="info_list">
+                <div class="info_list_item">
+                    <div class="info_list_item_label">瀹℃壒缁撴灉锛�</div>
+                    <div class="info_list_item_val">
+                        <template v-if="form.status === 0">寰呭鏍�</template>
+                        <template v-if="form.status === 1">瀹℃牳閫氳繃</template>
+                        <template v-if="form.status === 2">瀹℃牳涓嶉�氳繃</template>
+                    </div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">瀹℃牳鏃堕棿锛�</div>
+                    <div class="info_list_item_val">{{form.checkDate}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">瀹℃牳璇存槑锛�</div>
+                    <div class="info_list_item_val">{{form.checkInfo}}</div>
+                </div>
+            </div>
+        </div>
+        <!-- 棰勮pdf -->
+        <OperaPdfViewerWindow ref="OperaPdfViewerWindow" />
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import { getById } from '@/api/business/companyUserApply'
+  import { mapState } from 'vuex'
+  import OperaPdfViewerWindow from '@/components/business/OperaPdfViewerWindow'
+  export default {
+    name: 'operaCompanyUserApplyDescWindow',
+    extends: BaseOpera,
+    components: { GlobalWindow, OperaPdfViewerWindow },
+    data () {
+      return {
+        form: {}
+      }
+    },
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    methods: {
+      open (title, id) {
+        this.title = title
+        getById(id)
+          .then(res => {
+            console.log(res)
+            this.form = res
+            this.visible = true
+          })
+      },
+      openFile(name, url) {
+        this.$refs.OperaPdfViewerWindow.open(name, url)
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+    .info {
+        width: 100%;
+        .info_label {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            margin-bottom: 20px;
+            span {
+                font-size: 18px;
+                font-weight: 600;
+                color: #000000;
+            }
+        }
+        .info_list {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            flex-wrap: wrap;
+            .info_list_item {
+                width: 50%;
+                display: flex;
+                align-items: start;
+                margin-bottom: 20px;
+                .info_list_item_label {
+                    font-size: 15px;
+                    flex-shrink: 0;
+                }
+                .info_list_item_val {
+                    flex: 1;
+                    display: flex;
+                    align-items: center;
+                    font-size: 15px;
+                    .info_list_item_val_cul {
+                        display: flex;
+                        flex-direction: column;
+                        u {
+                            font-size: 15px;
+                            color: #2E68EC;
+                            cursor: pointer;
+                            margin-top: 5px;
+                            &:first-child {
+                                margin: 0;
+                            }
+                        }
+                    }
+                    .image {
+                        width: 100px;
+                        height: 100px;
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                        overflow: hidden;
+                        img {
+                            width: 100%;
+                        }
+                    }
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/business/selectPolicy.vue b/company/src/components/business/selectPolicy.vue
new file mode 100644
index 0000000..8d187e7
--- /dev/null
+++ b/company/src/components/business/selectPolicy.vue
@@ -0,0 +1,172 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :withFooter="false"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+<!--        <el-form ref="form" :model="form" label-width="100px" inline>-->
+<!--            <el-form-item label="浼佷笟鍚嶇О" prop="name">-->
+<!--                <el-input v-model="form.model.name" placeholder="璇疯緭鍏�" @keypress.enter.native="getList"></el-input>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item>-->
+<!--                <div style="display: flex; align-items: center;">-->
+<!--                    <el-button type="primary" @click="getList">鎼滅储</el-button>-->
+<!--                    <el-button @click="reset">閲嶇疆</el-button>-->
+<!--                </div>-->
+<!--            </el-form-item>-->
+<!--        </el-form>-->
+        <el-table
+            :data="tableData"
+            border
+            style="width: 100%">
+            <el-table-column label="搴忓彿" width="80px" align="center" fixed>
+                <template slot-scope="scope">
+                    <span>{{scope.$index + 1}}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="statusInfo" align="center" fixed label="鐘舵��">
+                <template slot-scope="{row}">
+                    <span :class="'apply-status'+row.status">{{row.statusInfo}}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="solutionsName" align="center" fixed label="淇濋櫓鏂规" min-width="150"></el-table-column>
+            <el-table-column label="绫诲瀷" fixed  align="center">
+                <template slot-scope="{row}">
+                    <span style="color: #00BA92" v-if="row.solutionType == 1">濮旀墭鎶曚繚</span>
+                    <span style="color: #F95601;"  v-else>鐩存帴鎶曚繚</span>
+                </template>
+            </el-table-column>
+            <el-table-column label="淇濆崟鍙�" align="center" fixed>
+                <template slot-scope="{row}">
+                    <span>{{row.code ? row.code : '-'}}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="guaranteeNum"  align="center" label="褰撳墠鍦ㄤ繚浜烘暟" width="120">
+                <template slot-scope="{row}">
+                    <span>{{(row.guaranteeNum||0)}} 浜�</span>
+                </template>
+            </el-table-column>
+            <el-table-column label="鎶曚繚鏃堕暱" align="center">
+                <template slot-scope="{row}">
+                    <span>{{(row.serviceDays - row.loseEfficacyDays) < 0 ? `-` : (row.serviceDays - row.loseEfficacyDays+'澶�')}}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="fee" label="鎵规敼璐圭敤鍚堣"  align="center" width="120">
+                <template slot-scope="{row}">
+                    <span>{{row.changeMoney+' 鍏�'}}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="fee" label="鎬昏垂鐢�"  align="center">
+                <template slot-scope="{row}">
+                    <span>{{row.fee!=null?row.fee+' 鍏�': '-'}}</span>
+                </template>
+            </el-table-column>
+            <el-table-column prop="createDate" label="鎻愪氦鏃ユ湡"  align="center" min-width="150"></el-table-column>
+            <el-table-column prop="startTime" label="鎶曚繚鐢熸晥鏃ユ湡"  align="center" min-width="150"></el-table-column>
+            <el-table-column prop="endTime" label="鎶曚繚澶辨晥鏃ユ湡"  align="center" min-width="150"></el-table-column>
+            <el-table-column
+                fixed="right"
+                width="120"
+                label="鎿嶄綔">
+                <template slot-scope="{row}">
+                    <el-button type="text" @click="$refs.factoryChange.open('鏇存崲娲鹃仯鍗曚綅鐢宠', { id: row.id })" v-if="isShow(row.status, row.endTime) && type === 2">{{ row.hasDispatchUnit === 1 ? '鏇存崲宸ョ' : '鏇存崲娲鹃仯鍗曚綅' }}</el-button>
+                    <el-button type="text" @click="$refs.additionSubtractionApplication.open('鍔犲噺淇濈敵璇�', { id: row.id })" v-else-if="isShow(row.status, row.endTime) && type === 1">鍔犲噺淇濈敵璇�</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div style="width: 100%; height: 15px;"></div>
+        <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="form.page"
+            :page-sizes="[10, 30, 50, 100]"
+            :page-size="form.size"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total">
+        </el-pagination>
+        <!--    鍔犲噺淇濈敵璇�    -->
+        <additionSubtractionApplication ref="additionSubtractionApplication" @success="selectItem" />
+        <!--    鏇存崲娲鹃仯鍗曚綅鐢宠    -->
+        <factoryChange ref="factoryChange" @success="selectItem" />
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import additionSubtractionApplication from '@/components/enterprise/additionSubtractionApplication'
+  import factoryChange from '@/components/enterprise/factoryChange'
+  import { fetchList } from '@/api/business/insuranceApply'
+  export default {
+    name: 'selectPolicy',
+    extends: BaseOpera,
+    components: { GlobalWindow, additionSubtractionApplication, factoryChange },
+    data () {
+      return {
+        model: {},
+        tableData: [],
+        type: null,
+        form: {
+          page: 1,
+          capacity: 10,
+          model: {
+            companyId: '',
+            status: '5,27',
+            timeOut: 3
+          }
+        },
+        total: 0
+      }
+    },
+    methods: {
+      // 鍒ゆ柇鏄惁鏄剧ず鍔犲噺淇�
+      isShow(status, endTime) {
+        const currentDate = new Date();
+        const specifiedDate = new Date(endTime);
+        return [5,27].includes(status) && (currentDate < specifiedDate);
+      },
+      selectItem() {
+        this.$emit('success')
+        this.visible = false
+      },
+      handleSizeChange(e) {
+        this.form.capacity = e
+        this.getList()
+      },
+      handleCurrentChange(e) {
+        this.form.page = e
+        this.getList()
+      },
+      open (title, id, type) {
+        this.title = title
+        this.type = type
+        this.form.model.companyId = id
+        this.form.name = ''
+        this.visible = true
+        this.form.page = 1
+        this.form.capacity = 10
+        this.getList()
+      },
+      reset() {
+        this.form.page = 1
+        this.form.capacity = 10
+        this.form.model.name = ''
+        this.getList()
+      },
+      getList() {
+        fetchList(this.form)
+          .then(res => {
+            this.total = res.total
+            this.tableData = res.records
+          })
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/company/src/components/common/CommonHeader.vue b/company/src/components/common/CommonHeader.vue
index a5705fc..606771e 100644
--- a/company/src/components/common/CommonHeader.vue
+++ b/company/src/components/common/CommonHeader.vue
@@ -6,16 +6,40 @@
         <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
       </div>
       <div class="user">
-        <el-dropdown v-if="isLogined" trigger="click">
+        <!--    浼佷笟    -->
+        <div style="display: flex; align-items: center;" v-if="userInfo.type === 1">
+          <div class="user_kf" v-if="info">
+            鏈嶅姟浜哄憳锛歿{info.name}} {{info.mobile}}
+          </div>
+          <el-dropdown v-if="isLogined" trigger="click">
           <span class="el-dropdown-link">
-            <!-- <img v-if="userInfo != null" :src="userInfo.avatar == null ? `${require('@/assets/avatar/man.png')}` : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i> -->
-            <img v-if="userInfo != null" style="width: 30px !important;" src="@/assets/avatar/man.png" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i>
+            <img v-if="userInfo != null" class="img1" style="width: 20px !important;" src="@/assets/icons/ic_company@2x.png" alt="">{{userInfo.showCompany.name}}<i class="el-icon-arrow-down el-icon--right"></i>
           </span>
-          <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>
-            <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>
-          </el-dropdown-menu>
-        </el-dropdown>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item @click.native="changeCompany(item)" v-for="(item, index) in userInfo.companyPermissionList" :key="index">{{item.companyName}}</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+          <el-dropdown v-if="isLogined" trigger="click" style="top: -7px;">
+          <span class="el-dropdown-link">
+            <img v-if="userInfo != null" class="img2" style="width: 30px !important;" src="@/assets/avatar/man.png" alt="">{{userInfo.realname}}<i class="el-icon-arrow-down el-icon--right"></i>
+          </span>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>
+              <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </div>
+        <div v-else>
+          <el-dropdown v-if="isLogined" trigger="click" style="top: -7px;">
+          <span class="el-dropdown-link">
+            <img v-if="userInfo != null" class="img2" style="width: 30px !important;" src="@/assets/avatar/man.png" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i>
+          </span>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>
+              <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </div>
       </div>
     </div>
     <!-- 淇敼瀵嗙爜 -->
@@ -43,7 +67,8 @@
 <script>
 import { mapState, mapMutations } from 'vuex'
 import GlobalAlertWindow from './GlobalAlertWindow'
-import { logout, updatePwd } from '@/api/system/common'
+import { logout, updatePwd, switchCompany } from '@/api/system/common'
+import { findByCompanyId } from '@/api/business/customerService'
 export default {
   name: 'CommonHeader',
   components: { GlobalAlertWindow },
@@ -65,6 +90,7 @@
         changePwd: false
       },
       username: 'bob', // 鐢ㄦ埛鍚�
+      info: null,
       // 淇敼瀵嗙爜寮规
       changePwdData: {
         form: {
@@ -88,6 +114,9 @@
   },
   created () {
     document.title=this.systemTitle
+    if (this.userInfo.companyId) {
+      this.setFindByCompanyId(this.userInfo.companyId)
+    }
   },
   computed: {
     ...mapState(['menuData', 'userInfo']),
@@ -114,6 +143,24 @@
   },
   methods: {
     ...mapMutations(['setUserInfo', 'switchCollapseMenu']),
+    // 鍒囨崲浼佷笟
+    changeCompany(row) {
+      if (row.companyId === this.userInfo.companyId) {
+        this.$message.warning('涓嶈兘鍒囨崲褰撳墠浼佷笟')
+        return
+      }
+      switchCompany({ companyId: row.companyId })
+        .then(res => {
+          location.reload();
+        })
+    },
+    setFindByCompanyId(companyId) {
+      if (this.userInfo.type !== 1) return
+      findByCompanyId(companyId)
+        .then(res => {
+          this.info = res
+        })
+    },
     // 淇敼瀵嗙爜
     changePwd () {
       this.visible.changePwd = true
@@ -167,7 +214,11 @@
   }
 }
 </script>
-
+<style>
+  .el-dropdown-menu {
+    width: 240px !important;
+  }
+</style>
 <style scoped lang="scss">
 @import "@/assets/style/variables.scss";
 .common-header {
@@ -205,13 +256,31 @@
     padding-right: 25px;
     background: url('../../assets/images/top_ic_bolang@2x.png') no-repeat;
     flex-shrink: 0;
-    text-align: right;
-    .el-dropdown {
-      top: 10px;
-      color: #fff;
+    /*text-align: right;*/
+    display: flex;
+    align-items: center;
+    justify-content: end;
+    .user_kf {
+      color: #ffffff;
+      font-size: 14px;
+      margin-right: 30px;
     }
-    img {
-      width: 32px;
+    .el-dropdown {
+      top: -2px;
+      color: #fff;
+      margin-right: 30px;
+      &:last-child {
+        margin: 0 !important;
+      }
+    }
+    .img1 {
+      width: 20px;
+      position: relative;
+      top: 5px;
+      margin-right: 10px;
+    }
+    .img2 {
+      width: 20px;
       position: relative;
       top: 10px;
       margin-right: 10px;
diff --git a/company/src/components/common/UploadFile.vue b/company/src/components/common/UploadFile.vue
index 8624fa0..4bb6bfb 100644
--- a/company/src/components/common/UploadFile.vue
+++ b/company/src/components/common/UploadFile.vue
@@ -5,7 +5,7 @@
       class="upload-demo"
       :accept="uploadData.fileType"
       :action="uploadImgUrl"
-      :limit="1"
+      :limit="limit"
       :before-remove="removes"
       :on-exceed="handleExceed"
       :on-success="handleFileSuccess"
@@ -42,7 +42,11 @@
       type: String,
       default: 'width: 190px; height: 190px;'
     },
-    uploadData: Object
+    uploadData: Object,
+    limit: {
+      type: Number,
+      default: () => 1
+    }
   },
   data() {
     return {
@@ -70,9 +74,10 @@
     }
   },
   methods: {
-    removes() {
+    removes(e) {
       this.uploaded=false
-      this.$emit('remove')
+      console.log(e.imgaddr)
+      this.$emit('remove', e.imgaddr)
     },
     // 涓婁紶鍥剧墖
     handleExceed(){
diff --git a/company/src/components/common/chooseCompany.vue b/company/src/components/common/chooseCompany.vue
new file mode 100644
index 0000000..34caaf5
--- /dev/null
+++ b/company/src/components/common/chooseCompany.vue
@@ -0,0 +1,144 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :withFooter="false"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <el-form ref="form" :model="form" label-width="100px" inline>
+            <el-form-item label="浼佷笟鍚嶇О" prop="name">
+                <el-input v-model="form.model.name" placeholder="璇疯緭鍏�" @keypress.enter.native="getList"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <div style="display: flex; align-items: center;">
+                    <el-button type="primary" @click="getList">鎼滅储</el-button>
+                    <el-button @click="reset">閲嶇疆</el-button>
+                </div>
+            </el-form-item>
+        </el-form>
+        <el-table
+            :data="tableData"
+            border
+            style="width: 100%">
+            <el-table-column
+                prop="name"
+                label="浼佷笟鍚嶇О">
+            </el-table-column>
+            <el-table-column
+                width="170"
+                prop="code"
+                label="缁熶竴淇$敤浠g爜">
+            </el-table-column>
+            <el-table-column
+                prop="createDate"
+                label="鍒涘缓鏃堕棿">
+            </el-table-column>
+            <el-table-column
+                prop="phone"
+                label="缁戝畾鎵嬫満">
+            </el-table-column>
+            <el-table-column
+                width="90"
+                label="鍚敤鐘舵��">
+                <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
+                label="鐢靛瓙绛捐璇佺姸鎬�">
+                <template slot-scope="{row}">
+                    <template v-if="row.signStatus === 0">寰呰璇�</template>
+                    <template v-if="row.signStatus === 1">璁よ瘉涓�</template>
+                    <template v-if="row.signStatus === 2">璁よ瘉澶辫触</template>
+                    <template v-if="row.signStatus === 3">璁よ瘉閫氳繃</template>
+                </template>
+            </el-table-column>
+            <el-table-column
+                label="鎿嶄綔">
+                <template slot-scope="{row}">
+                    <el-button type="text" @click="selectItem(row)">閫夋嫨</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div style="width: 100%; height: 15px;"></div>
+        <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="form.page"
+            :page-sizes="[10, 30, 50, 100]"
+            :page-size="form.size"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total">
+        </el-pagination>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import { fetchList } from '@/api/business/company'
+  export default {
+    name: 'chooseCompany',
+    extends: BaseOpera,
+    components: { GlobalWindow },
+    data () {
+      return {
+        model: {},
+        tableData: [],
+        form: {
+          page: 1,
+          capacity: 10,
+          model: {
+            type: 0,
+            name: '',
+            status: 0,
+            isdeleted: 1
+          }
+        },
+        total: 0
+      }
+    },
+    methods: {
+      selectItem(row) {
+        this.$emit('submit', { companyId: row.id, companyName: row.name })
+        this.visible = false
+      },
+      handleSizeChange(e) {
+        this.form.capacity = e
+        this.getList()
+      },
+      handleCurrentChange(e) {
+        this.form.page = e
+        this.getList()
+      },
+      open (title, id) {
+        this.title = title
+        this.form.name = ''
+        this.visible = true
+        this.form.page = 1
+        this.form.capacity = 10
+        this.getList()
+      },
+      reset() {
+        this.form.page = 1
+        this.form.capacity = 10
+        this.form.model.name = ''
+        this.getList()
+      },
+      getList() {
+        fetchList(this.form)
+          .then(res => {
+            this.total = res.total
+            this.tableData = res.records
+          })
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue b/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue
index 15fb687..2b3f5b0 100644
--- a/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue
+++ b/company/src/components/enterprise/OperaInsuranceApplyAddWindow.vue
@@ -10,7 +10,7 @@
     <div class="list">
       <el-form :inline="true" ref="form" :model="form" :rules="rules" class="demo-form-inline">
         <el-form-item label="淇濋櫓鏂规" prop="solutionId">
-          <el-select v-model="form.solutionId" @change="changeSolution" placeholder="璇烽�夋嫨">
+          <el-select v-model="form.solutionId" filterable @change="changeSolution" placeholder="璇烽�夋嫨">
             <el-option
                 v-for="item in company"
                 :key="item.id"
@@ -83,7 +83,8 @@
         <div style="display: inline-block;margin-right: 30px;font-size: 14px"><span>鍚堣璐圭敤锛�</span>
         <span style="font-weight: bold;color: red">{{sumFee}}</span>鍏�
         </div>
-        <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
+        <el-button type="primary" @click="sele(1)" v-if="item && item.hasDispatchUnit !== 1">閫夊彇娲鹃仯鍗曚綅</el-button>
+        <el-button type="primary" @click="sele(2)" v-if="item && item.hasDispatchUnit === 1">閫夊彇宸ョ</el-button>
       </div>
     </div>
 <!--    show-summary
@@ -124,6 +125,7 @@
         </template>
       </u-table-column>
       <u-table-column
+          v-if="item && item.hasDispatchUnit !== 1"
           prop="duName"
           label="娲鹃仯鍗曚綅">
       </u-table-column>
@@ -183,7 +185,7 @@
 import importEmployees from '@/components/enterprise/importEmployees'
 import confirmJobType from '@/components/enterprise/confirmJobType'
 import detailsPolicyholder from '@/components/business/detailsPolicyholder'
-import { all, getNewVersion } from '@/api/business/solutions'
+import { all, getNewVersion, getUseList } from '@/api/business/solutions'
 import { mapState } from 'vuex'
 import { create, getCountCyclePriceVO, getDetail, findList } from '@/api/business/insuranceApply'
 import { UTable, UTableColumn } from 'umy-ui'
@@ -208,7 +210,8 @@
         ID: null,
         solutionId: '',
         applyStartTime: '',
-        applyEndTime: ''
+        applyEndTime: '',
+        companyId: null
       },
       solutionName: '',
       type: '',
@@ -258,6 +261,7 @@
       this.isWorking = true
       // if (!this.form.id) {
       create({
+        companyId: this.form.companyId,
         applyDetailList: arr,
         applyStartTime: this.form.applyStartTime,
         applyEndTime: this.form.applyEndTime,
@@ -305,6 +309,10 @@
       this.form.solutionId = ''
       this.form.applyStartTime = ''
       this.form.applyEndTime = ''
+      if (target.companyId) {
+        this.form.companyId = target.companyId
+        this.form.companyName = target.companyName
+      }
       if (target && target.id) {
         this.$nextTick(() => {
           this.$refs.form.resetFields()
@@ -397,31 +405,90 @@
             this.$message.warning('鑷冲皯娣诲姞涓�椤瑰憳宸�')
             return
           }
-          for (let i = 0; i < this.tableData.length; i++) {
-            console.log(this.tableData[i].worktypeId)
-            console.log(this.tableData[i].duId)
-            if (!this.tableData[i].worktypeId || !this.tableData[i].duId) {
-              this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
-              return
+          if (this.item.hasDispatchUnit !== 1) {
+            for (let i = 0; i < this.tableData.length; i++) {
+              if (!this.tableData[i].worktypeId || !this.tableData[i].duId) {
+                this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
+                return
+              }
+            }
+          } else {
+            for (let i = 0; i < this.tableData.length; i++) {
+              if (!this.tableData[i].worktypeId) {
+                this.$message.warning('璇峰畬鍠勬淳宸ョ淇℃伅')
+                return
+              }
             }
           }
-
           let price = 0
           // if (this.item && this.item.type != 1) {
           this.tableData.forEach(item => {
             price = price + item.fee
           })
           // }
-          this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
-            companyName: this.userInfo.company.name,
-            solutionName: this.item.name,
-            solutionType: this.item.type,
-            applyStartTime: this.form.applyStartTime,
-            applyEndTime: this.form.applyEndTime,
-            insureNum: this.tableData.length,
-            totalPrice: price,
-            detailList: this.tableData
-          })
+          const endTime = Number(this.item.correctWarnTime.split(':')[0] + this.item.correctWarnTime.split(':')[1])
+          const now = new Date();
+          const hours = now.getHours();
+          const minutes = now.getMinutes();
+          const date = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
+          const startTime = Number(date.split(':')[0] + date.split(':')[1])
+          if (startTime > endTime) {
+            this.$confirm('鎮ㄥ凡瓒呰繃褰撳ぉ鏈�鏅氭壒鏀规椂闂达紝淇濆崟瀹為檯鐢熸晥鏃堕棿浠ヤ繚闄╁叕鍙稿鏍镐负鍑嗭紒', '鎻愮ず', {
+              confirmButtonText: '纭畾',
+              cancelButtonText: '鍙栨秷',
+              type: 'warning'
+            }).then(() => {
+              if (!this.form.companyId) {
+                this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
+                  companyName: this.userInfo.company.name,
+                  solutionName: this.item.name,
+                  solutionType: this.item.type,
+                  applyStartTime: this.form.applyStartTime,
+                  applyEndTime: this.form.applyEndTime,
+                  insureNum: this.tableData.length,
+                  totalPrice: price,
+                  detailList: this.tableData
+                })
+              } else {
+                this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
+                  companyName: this.form.companyName,
+                  solutionName: this.item.name,
+                  solutionType: this.item.type,
+                  applyStartTime: this.form.applyStartTime,
+                  applyEndTime: this.form.applyEndTime,
+                  insureNum: this.tableData.length,
+                  totalPrice: price,
+                  detailList: this.tableData
+                })
+              }
+            }).catch(() => {
+
+            });
+          } else {
+            if (!this.form.companyId) {
+              this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
+                companyName: this.userInfo.company.name,
+                solutionName: this.item.name,
+                solutionType: this.item.type,
+                applyStartTime: this.form.applyStartTime,
+                applyEndTime: this.form.applyEndTime,
+                insureNum: this.tableData.length,
+                totalPrice: price,
+                detailList: this.tableData
+              })
+            } else {
+              this.$refs.detailsPolicyholder.open('鎶曚繚璇︽儏鍗�', {
+                companyName: this.form.companyName,
+                solutionName: this.item.name,
+                solutionType: this.item.type,
+                applyStartTime: this.form.applyStartTime,
+                applyEndTime: this.form.applyEndTime,
+                insureNum: this.tableData.length,
+                totalPrice: price,
+                detailList: this.tableData
+              })
+            }
+          }
         }
       })
     },
@@ -470,21 +537,21 @@
         this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
         return
       }
-      this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.tableData, price: this.price, type: 1 })
+      this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.tableData, price: this.price, type: 1, companyId: this.form.companyId })
     },
     addUser () {
       if (!this.form.solutionId) {
         this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
         return
       }
-      this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.tableData, price: this.price, solutionId: this.form.solutionId })
+      this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.tableData, price: this.price, solutionId: this.form.solutionId, hasDispatchUnit: this.item.hasDispatchUnit, companyId: this.userInfo.type === 1 ? this.userInfo.companyId : this.form.companyId })
     },
     uploadUser () {
       if (!this.form.solutionId) {
         this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
         return
       }
-      this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.tableData, solutionId: this.form.solutionId, type: 1, price: this.price })
+      this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.tableData, solutionId: this.form.solutionId, type: 1, hasDispatchUnit: this.item.hasDispatchUnit, price: this.price })
     },
     // 鍒囨崲鏂规
     changeSolution (e) {
@@ -555,7 +622,7 @@
       this.$refs.multipleTable.clearSelection()
     },
     // 閫夋嫨鍛樺伐
-    sele () {
+    sele (type) {
       if (!this.form.solutionId) {
         this.$message.warning('璇烽�夋嫨淇濋櫓鏂规')
         return
@@ -564,14 +631,18 @@
         this.$message.warning('璇烽�夋嫨鍛樺伐')
         return
       }
-      this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.form.solutionId })
+      this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.form.solutionId, type })
     },
     // 鏌ヨ鍏ㄩ儴鏂规
     getCompany () {
-      all({})
+      getUseList(this.form.companyId ? this.form.companyId : this.userInfo.companyId, 2)
         .then(res => {
           this.company = res
         })
+      // all({ companyId: this.form.companyId })
+      //   .then(res => {
+      //     this.company = res
+      //   })
     },
     getAgeByIdCard (idCard) {
       const sexAndAge = {}
diff --git a/company/src/components/enterprise/addEmployeeWithDu.vue b/company/src/components/enterprise/addEmployeeWithDu.vue
index 7565552..80b00ca 100644
--- a/company/src/components/enterprise/addEmployeeWithDu.vue
+++ b/company/src/components/enterprise/addEmployeeWithDu.vue
@@ -14,7 +14,7 @@
                 <el-form-item label="韬唤璇佸彿" required>
                     <el-input v-model="item.idCard" maxlength="18" placeholder="璇疯緭鍏�"></el-input>
                 </el-form-item>
-              <el-form-item label="娲鹃仯鍗曚綅" >
+              <el-form-item label="娲鹃仯鍗曚綅" v-if="hasDispatchUnit !== 1">
                 <el-select v-model="item.duId" @change="selectChange(index)" placeholder="璇烽�夋嫨" clearable>
                   <el-option
                       v-for="item in dispatching"
@@ -57,6 +57,8 @@
       tempIndex: -1,
       dispatching: [],
       solutionId: null,
+      companyId: null,
+      hasDispatchUnit: null,
       list: [
         {
           memberName: '',
@@ -79,6 +81,8 @@
       this.visible = true
       this.tempIndex = tempIndex
       this.solutionId = obj.solutionId
+      this.companyId = obj.companyId
+      this.hasDispatchUnit = obj.hasDispatchUnit
       this.dispatching = []
       this.list = [
         {
@@ -94,7 +98,14 @@
       ]
       this.arr = obj.arr
       this.price = obj.price
-      this.getFindListByDTO()
+      if (obj.hasDispatchUnit === 1) {
+        this.getFindListByDTO()
+      } else {
+        worktype({ id: obj.solutionId, queryType: 0 })
+          .then(res => {
+            this.list[0].options = res
+          })
+      }
     },
     getFindListByDTO () {
       findListByDTO({
@@ -128,17 +139,31 @@
       })
     },
     add () {
-      this.list.push({
-        memberName: '',
-        idCard: '',
-        workTypeName: '',
-        worktypeId: '',
-        duName: '',
-        duId: '',
-        options: [],
-        fee: '',
-        id: this.tempIndex - 1
-      })
+      if (!this.companyId) {
+        this.list.push({
+          memberName: '',
+          idCard: '',
+          workTypeName: '',
+          worktypeId: '',
+          duName: '',
+          duId: '',
+          options: [],
+          fee: '',
+          id: this.tempIndex - 1
+        })
+      } else {
+        this.list.push({
+          memberName: '',
+          idCard: '',
+          workTypeName: '',
+          worktypeId: '',
+          duName: '',
+          duId: '',
+          options: JSON.parse(JSON.stringify(this.list[0].options)),
+          fee: '',
+          id: this.tempIndex - 1
+        })
+      }
     },
     dele (index) {
       this.list.splice(index, 1)
diff --git a/company/src/components/enterprise/additionSubtractionApplication.vue b/company/src/components/enterprise/additionSubtractionApplication.vue
index c3e10b6..b3c9821 100644
--- a/company/src/components/enterprise/additionSubtractionApplication.vue
+++ b/company/src/components/enterprise/additionSubtractionApplication.vue
@@ -68,25 +68,35 @@
                     align="center"
                     label="淇濋櫓鐢熸晥姝㈡湡">
                 </el-table-column>
-                <el-table-column
-                    prop="insureNum"
-                    align="center"
-                    label="鎶曚繚浜烘暟">
-                </el-table-column>
-                <el-table-column
-                    prop="guaranteeNum"
-                    align="center"
-                    label="鍦ㄤ繚浜烘暟">
+<!--                <el-table-column-->
+<!--                    prop="insureNum"-->
+<!--                    align="center"-->
+<!--                    label="鎶曚繚浜烘暟">-->
+<!--                </el-table-column>-->
+<!--                <el-table-column-->
+<!--                    prop="guaranteeNum"-->
+<!--                    align="center"-->
+<!--                    label="鍦ㄤ繚浜烘暟">-->
+<!--                </el-table-column>-->
+                <el-table-column prop="guaranteeNum"  align="center" label="褰撳墠鍦ㄤ繚浜烘暟" width="120">
+                    <template slot-scope="{row}">
+                        <span>{{(row.guaranteeNum||0)}} 浜�</span>
+                    </template>
                 </el-table-column>
                 <el-table-column
                     prop="serviceDays"
                     align="center"
                     label="淇濆崟鏃堕暱锛堝ぉ锛�">
                 </el-table-column>
-                <el-table-column
-                    prop="currentFee"
-                    align="center"
-                    label="宸蹭骇鐢熻垂鐢�(鍏�)">
+<!--                <el-table-column-->
+<!--                    prop="currentFee"-->
+<!--                    align="center"-->
+<!--                    label="宸蹭骇鐢熻垂鐢�(鍏�)">-->
+<!--                </el-table-column>-->
+                <el-table-column prop="fee" label="鎵规敼璐圭敤鍚堣"  align="center" width="120">
+                    <template slot-scope="{row}">
+                        <span>{{row.changeMoney+' 鍏�'}}</span>
+                    </template>
                 </el-table-column>
                 <el-table-column
                     prop="fee"
@@ -109,10 +119,13 @@
                 <el-button type="danger" @click="deleItem">鍒犻櫎</el-button>
             </div>
             <div class="btns_item" v-if="activeName !== '1'">
-                <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
+<!--                <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>-->
+                <el-button type="primary" @click="sele(1)" v-if="item && item.hasDispatchUnit !== 1">閫夊彇娲鹃仯鍗曚綅</el-button>
+                <el-button type="primary" @click="sele(2)" v-if="item && item.hasDispatchUnit === 1">閫夊彇宸ョ</el-button>
             </div>
         </div>
         <el-table
+            v-if="item"
             :data="activeName === '0' ? form.addDetailList : form.delDetailList"
             border
             show-summary
@@ -145,6 +158,7 @@
                 </template>
             </el-table-column>
             <el-table-column
+                v-if="item && item.hasDispatchUnit !== 1"
                 prop="duName"
                 label="娲鹃仯鍗曚綅">
             </el-table-column>
@@ -324,14 +338,6 @@
     },
     // 鑾峰彇鎶曚繚璇︽儏
     getDetails () {
-      // findList({ applyId: this.form.id })
-      //     .then(res => {
-      //         res.forEach(item => {
-      //             item.idCard = item.idcardNo
-      //             item.fee = ''
-      //         })
-      //         this.tableData = res
-      //     })
       getDetail(this.form.id)
         .then(res => {
           this.list.push(res)
@@ -368,7 +374,20 @@
       columns.forEach((column, index) => {
         if (index === 0) {
           sums[index] = '鎬讳环'
-        } else if (index === 7) {
+        } else if (this.item.hasDispatchUnit === 1 && index === 6) {
+          let total = 0
+          if (this.activeName === '0') {
+            this.form.addDetailList.forEach(item => {
+              total += item.fee || 0
+            })
+            sums[index] = (total || 0).toFixed(2)
+          } else {
+            this.form.delDetailList.forEach(item => {
+              total += item.reducePrice
+            })
+            sums[index] = (total || 0).toFixed(2)
+          }
+        } else if (this.item.hasDispatchUnit !== 1 && index === 7) {
           let total = 0
           if (this.activeName === '0') {
             this.form.addDetailList.forEach(item => {
@@ -450,56 +469,67 @@
           //     this.$message.warning('鑷冲皯娣诲姞涓�椤瑰憳宸�')
           //     return
           // }
-          for (let i = 0; i < this.form.addDetailList.length; i++) {
-            if (!this.form.addDetailList[i].worktypeId || !this.form.addDetailList[i].duId) {
-              this.$message.warning('璇峰畬鍠勫姞淇濇淳閬e崟浣嶅拰宸ョ淇℃伅')
-              return
+          if (this.item.hasDispatchUnit !== 1) {
+            for (let i = 0; i < this.form.addDetailList.length; i++) {
+              if (!this.form.addDetailList[i].worktypeId || !this.form.addDetailList[i].duId) {
+                this.$message.warning('璇峰畬鍠勫姞淇濇淳閬e崟浣嶅拰宸ョ淇℃伅')
+                return
+              }
+            }
+            for (let i = 0; i < this.form.delDetailList.length; i++) {
+              if (!this.form.delDetailList[i].worktypeId || !this.form.delDetailList[i].duId) {
+                this.$message.warning('璇峰畬鍠勫噺淇濇淳閬e崟浣嶅拰宸ョ淇℃伅')
+                return
+              }
+            }
+          } else {
+            for (let i = 0; i < this.form.addDetailList.length; i++) {
+              if (!this.form.addDetailList[i].worktypeId) {
+                this.$message.warning('璇峰畬鍠勫姞淇濆伐绉嶄俊鎭�')
+                return
+              }
+            }
+            for (let i = 0; i < this.form.delDetailList.length; i++) {
+              if (!this.form.delDetailList[i].worktypeId) {
+                this.$message.warning('璇峰畬鍠勫噺淇濆伐绉嶄俊鎭�')
+                return
+              }
             }
           }
-          for (let i = 0; i < this.form.delDetailList.length; i++) {
-            if (!this.form.delDetailList[i].worktypeId || !this.form.delDetailList[i].duId) {
-              this.$message.warning('璇峰畬鍠勫噺淇濇淳閬e崟浣嶅拰宸ョ淇℃伅')
-              return
-            }
+          let arr = this.company.filter(item => item.id === this.form.solutionId)
+          const endTime = Number(arr[0].correctWarnTime.split(':')[0] + arr[0].correctWarnTime.split(':')[1])
+          const now = new Date();
+          const hours = now.getHours();
+          const minutes = now.getMinutes();
+          const date = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
+          const startTime = Number(date.split(':')[0] + date.split(':')[1])
+          if (startTime > endTime) {
+            this.$confirm('鎮ㄥ凡瓒呰繃褰撳ぉ鏈�鏅氭壒鏀规椂闂达紝淇濆崟瀹為檯鐢熸晥鏃堕棿浠ヤ繚闄╁叕鍙稿鏍镐负鍑嗭紒', '鎻愮ず', {
+              confirmButtonText: '纭畾',
+              cancelButtonText: '鍙栨秷',
+              type: 'warning'
+            }).then(() => {
+              this.$refs.ApplyChangeDetails1.open('鍔犲噺淇濊鍗�', this.form.addDetailList, this.form.delDetailList, {
+                companyName: this.item.companyName,
+                solutionsName: this.form.solutionsName,
+                code: this.list[0].code,
+                startTime: this.list[0].startTime,
+                endTime: this.list[0].endTime,
+                applyStartTime: this.form.applyStartTime
+              })
+            }).catch(() => {
+
+            });
+          } else {
+            this.$refs.ApplyChangeDetails1.open('鍔犲噺淇濊鍗�', this.form.addDetailList, this.form.delDetailList, {
+              companyName: this.item.companyName,
+              solutionsName: this.form.solutionsName,
+              code: this.list[0].code,
+              startTime: this.list[0].startTime,
+              endTime: this.list[0].endTime,
+              applyStartTime: this.form.applyStartTime
+            })
           }
-
-          this.$refs.ApplyChangeDetails1.open('鍔犲噺淇濊鍗�', this.form.addDetailList, this.form.delDetailList, {
-            companyName: this.userInfo.company.name,
-            solutionsName: this.form.solutionsName,
-            code: this.list[0].code,
-            startTime: this.list[0].startTime,
-            endTime: this.list[0].endTime,
-            applyStartTime: this.form.applyStartTime
-          })
-
-          // return
-
-          // this.form.addDetailList.forEach(item => {
-          //     item.idcardNo = item.idCard
-          // })
-          // this.form.delDetailList.forEach(item => {
-          //     item.idcardNo = item.idCard
-          // })
-          // // let arr = JSON.parse(JSON.stringify(this.form.addDetailList))
-          // // arr.forEach(item => {
-          // //     item.idcardNo = item.idCard
-          // // })
-          // this.isWorking = true
-          // create({
-          //     applyId: this.form.id,
-          //     addDetailList: this.form.addDetailList,
-          //     delDetailList: this.form.delDetailList,
-          //     validTime: this.form.applyStartTime,
-          //     type: 0
-          // }).then(() => {
-          //     this.visible = false
-          //     this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
-          //     this.$emit('success')
-          // }).catch(e => {
-          //     this.$tip.apiFailed(e)
-          // }).finally(() => {
-          //     this.isWorking = false
-          // })
         }
       })
     },
@@ -534,9 +564,9 @@
         return
       }
       if (this.activeName === '0') {
-        this.$refs.addEmployee.open('娣诲姞鍔犱繚鍛樺伐', { arr: this.form.addDetailList, solutionId: this.item.newVersionSolutionId, price: this.price })
+        this.$refs.addEmployee.open('娣诲姞鍔犱繚鍛樺伐', { arr: this.form.addDetailList, solutionId: this.item.newVersionSolutionId, price: this.price, companyId: this.item.hasDispatchUnit === 1 ? '1' : '' })
       } else {
-        this.$refs.addEmployee.open('娣诲姞鍑忎繚鍛樺伐', { arr: this.form.delDetailList, solutionId: this.item.newVersionSolutionId, price: this.reducePrice })
+        this.$refs.addEmployee.open('娣诲姞鍑忎繚鍛樺伐', { arr: this.form.delDetailList, solutionId: this.item.newVersionSolutionId, price: this.reducePrice, companyId: this.item.hasDispatchUnit === 1 ? '1' : '' })
       }
     },
     uploadUser () {
@@ -551,9 +581,9 @@
       }
 
       if (this.activeName === '0') {
-        this.$refs.importEmployees.open('鍔犱繚鍛樺伐鍚嶅崟', { arr: this.form.addDetailList, type: 1, price: this.price, solutionId: this.item.newVersionSolutionId })
+        this.$refs.importEmployees.open('鍔犱繚鍛樺伐鍚嶅崟', { arr: this.form.addDetailList, type: 1, price: this.price, hasDispatchUnit: this.item.hasDispatchUnit, solutionId: this.item.newVersionSolutionId })
       } else {
-        this.$refs.importEmployees.open('鍑忎繚鍛樺伐鍚嶅崟', { arr: this.form.delDetailList, type: 0, price: this.reducePrice, solutionId: this.item.newVersionSolutionId, insuranceApplyId: this.form.id })
+        this.$refs.importEmployees.open('鍑忎繚鍛樺伐鍚嶅崟', { arr: this.form.delDetailList, type: 0, price: this.reducePrice, hasDispatchUnit: this.item.hasDispatchUnit, solutionId: this.item.newVersionSolutionId, insuranceApplyId: this.form.id })
       }
     },
     // 鍒囨崲鏂规
@@ -603,7 +633,7 @@
       this.$refs.multipleTable.clearSelection()
     },
     // 閫夋嫨鍛樺伐
-    sele () {
+    sele (type) {
       if (this.activeName === '0') {
         if (this.addTrue !== 0) return this.$message.warning('褰撳墠淇濆崟鏆備笉鏀寔鎿嶄綔')
       } else {
@@ -617,7 +647,7 @@
         this.$message.warning('璇烽�夋嫨鍛樺伐')
         return
       }
-      this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.item.newVersionSolutionId })
+      this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.item.newVersionSolutionId, type })
     },
     // 鏌ヨ鍏ㄩ儴鏂规
     getCompany () {
diff --git a/company/src/components/enterprise/confirmJobType.vue b/company/src/components/enterprise/confirmJobType.vue
index 638a430..5425aec 100644
--- a/company/src/components/enterprise/confirmJobType.vue
+++ b/company/src/components/enterprise/confirmJobType.vue
@@ -7,7 +7,7 @@
         @confirm="confirm"
     >
         <el-form class="demo-form-inline">
-            <el-form-item label="娲鹃仯鍗曚綅" required>
+            <el-form-item label="娲鹃仯鍗曚綅" required v-if="type !== 2">
                 <el-select v-model="dw" @change="selectChange" placeholder="璇烽�夋嫨">
                     <el-option
                         v-for="item in dispatching"
@@ -45,6 +45,7 @@
                 form: {
                     solutionId: ''
                 },
+                type: null,
                 data: [],
                 dw: [],
                 gz: [],
@@ -59,9 +60,17 @@
                 this.gz = ''
                 this.form.solutionId = arr.solutionId
                 this.data = arr.seleData
+                this.type = arr.type
                 this.visible = true
                 this.options=[]
-                this.getFindListByDTO()
+                if (arr.type === 2) {
+                  worktype({ id: arr.solutionId, queryType: 0 })
+                    .then(res => {
+                      this.options = res
+                    })
+                } else {
+                  this.getFindListByDTO()
+                }
             },
             getFindListByDTO () {
                 findListByDTO({
@@ -85,9 +94,16 @@
                     })
             },
             confirm() {
-              if(!this.dw || !this.gz){
-                this.$message.error("璇峰厛閫夋嫨娲鹃仯鍗曚綅鍜屽伐绉嶏紒")
-                return;
+              if (this.type === 2) {
+                if(!this.gz){
+                  this.$message.error("璇峰厛閫夋嫨宸ョ锛�")
+                  return;
+                }
+              } else {
+                if(!this.dw || !this.gz){
+                  this.$message.error("璇峰厛閫夋嫨娲鹃仯鍗曚綅鍜屽伐绉嶏紒")
+                  return;
+                }
               }
                 let obj = {
                     workTypeName: '',
diff --git a/company/src/components/enterprise/factoryChange.vue b/company/src/components/enterprise/factoryChange.vue
index 9ee1676..9865d81 100644
--- a/company/src/components/enterprise/factoryChange.vue
+++ b/company/src/components/enterprise/factoryChange.vue
@@ -64,21 +64,31 @@
                     align="center"
                     label="淇濋櫓鐢熸晥姝㈡湡">
                 </el-table-column>
-                <el-table-column
-                    prop="insureNum"
-                    align="center"
-                    label="鎶曚繚浜烘暟">
+<!--                <el-table-column-->
+<!--                    prop="insureNum"-->
+<!--                    align="center"-->
+<!--                    label="鎶曚繚浜烘暟">-->
+<!--                </el-table-column>-->
+<!--              <el-table-column prop="guaranteeNum"  align="center" label="鍦ㄤ繚浜烘暟" ></el-table-column>-->
+                <el-table-column prop="guaranteeNum"  align="center" label="褰撳墠鍦ㄤ繚浜烘暟" width="120">
+                    <template slot-scope="{row}">
+                        <span>{{(row.guaranteeNum||0)}} 浜�</span>
+                    </template>
                 </el-table-column>
-              <el-table-column prop="guaranteeNum"  align="center" label="鍦ㄤ繚浜烘暟" ></el-table-column>
                 <el-table-column
                     prop="serviceDays"
                     align="center"
                     label="淇濆崟鏃堕暱锛堝ぉ锛�">
                 </el-table-column>
-                <el-table-column
-                    prop="currentFee"
-                    align="center"
-                    label="宸蹭骇鐢熻垂鐢�(鍏�)">
+<!--                <el-table-column-->
+<!--                    prop="currentFee"-->
+<!--                    align="center"-->
+<!--                    label="宸蹭骇鐢熻垂鐢�(鍏�)">-->
+<!--                </el-table-column>-->
+                <el-table-column prop="fee" label="鎵规敼璐圭敤鍚堣"  align="center" width="120">
+                    <template slot-scope="{row}">
+                        <span>{{row.changeMoney+' 鍏�'}}</span>
+                    </template>
                 </el-table-column>
                 <el-table-column
                     prop="fee"
@@ -93,7 +103,9 @@
                 <el-button type="danger" @click="deleItem">鍒犻櫎</el-button>
             </div>
             <div class="btns_item">
-                <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
+<!--                <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>-->
+                <el-button type="primary" @click="sele(1)" v-if="item && item.hasDispatchUnit !== 1">閫夊彇娲鹃仯鍗曚綅</el-button>
+                <el-button type="primary" @click="sele(2)" v-if="item && item.hasDispatchUnit === 1">閫夊彇宸ョ</el-button>
             </div>
         </div>
         <el-table
@@ -120,6 +132,7 @@
                 label="韬唤璇佸彿">
             </el-table-column>
             <el-table-column
+                v-if="item && item.hasDispatchUnit !== 1"
                 prop="oldDuName"
                 label="鍘熸淳閬e崟浣�">
             </el-table-column>
@@ -128,6 +141,7 @@
                 label="鍘熸墍灞炲伐绉�">
             </el-table-column>
             <el-table-column
+                v-if="item && item.hasDispatchUnit !== 1"
                 prop="duName"
                 label="鍙樻洿鍚庢淳閬e崟浣�">
             </el-table-column>
@@ -348,35 +362,41 @@
           //     this.$message.warning('鑷冲皯娣诲姞涓�椤瑰憳宸�')
           //     return
           // }
-          for (let i = 0; i < this.form.factory.length; i++) {
-            if (!this.form.factory[i].worktypeId || !this.form.factory[i].duId) {
-              this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
-              return
+          if (this.item.hasDispatchUnit !== 1) {
+            for (let i = 0; i < this.form.factory.length; i++) {
+              if (!this.form.factory[i].worktypeId || !this.form.factory[i].duId) {
+                this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
+                return
+              }
+            }
+          } else {
+            for (let i = 0; i < this.form.factory.length; i++) {
+              if (!this.form.factory[i].worktypeId) {
+                this.$message.warning('璇峰畬鍠勫伐绉嶄俊鎭�')
+                return
+              }
             }
           }
-          this.$refs.ApplyChangeUnitDetails1.open('鏇存崲娲鹃仯鍗曚綅璇﹀崟', this.form.factory, { ...this.list[0], applyStartTime: this.form.applyStartTime })
-          // this.form.factory.forEach(item => {
-          //     item.idcardNo = item.idCard
-          // })
-          // let arr = JSON.parse(JSON.stringify(this.form.factory))
-          // arr.forEach(item => {
-          //     item.idcardNo = item.idCard
-          // })
-          // this.isWorking = true
-          // create({
-          //     applyId: this.form.id,
-          //     changeDetailList: this.form.factory,
-          //     validTime: this.form.applyStartTime,
-          //     type: 1
-          // }).then(() => {
-          //     this.visible = false
-          //     this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
-          //     this.$emit('success')
-          // }).catch(e => {
-          //     this.$tip.apiFailed(e)
-          // }).finally(() => {
-          //     this.isWorking = false
-          // })
+          let arr = this.company.filter(item => item.id === this.form.solutionId)
+          const endTime = Number(arr[0].correctWarnTime.split(':')[0] + arr[0].correctWarnTime.split(':')[1])
+          const now = new Date();
+          const hours = now.getHours();
+          const minutes = now.getMinutes();
+          const date = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
+          const startTime = Number(date.split(':')[0] + date.split(':')[1])
+          if (startTime > endTime) {
+            this.$confirm('鎮ㄥ凡瓒呰繃褰撳ぉ鏈�鏅氭壒鏀规椂闂达紝淇濆崟瀹為檯鐢熸晥鏃堕棿浠ヤ繚闄╁叕鍙稿鏍镐负鍑嗭紒', '鎻愮ず', {
+              confirmButtonText: '纭畾',
+              cancelButtonText: '鍙栨秷',
+              type: 'warning'
+            }).then(() => {
+              this.$refs.ApplyChangeUnitDetails1.open('鏇存崲娲鹃仯鍗曚綅璇﹀崟', this.form.factory, { ...this.list[0], applyStartTime: this.form.applyStartTime })
+            }).catch(() => {
+
+            });
+          } else {
+            this.$refs.ApplyChangeUnitDetails1.open('鏇存崲娲鹃仯鍗曚綅璇﹀崟', this.form.factory, { ...this.list[0], applyStartTime: this.form.applyStartTime })
+          }
         }
       })
     },
@@ -403,7 +423,7 @@
         this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
         return
       }
-      this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.form.factory, price: this.price })
+      this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.form.factory, price: this.price, hasDispatchUnit: this.item.hasDispatchUnit })
     },
     // 鍒囨崲鏂规
     changeSolution1 (e) {
@@ -435,7 +455,7 @@
       this.$refs.multipleTable.clearSelection()
     },
     // 閫夋嫨鍛樺伐
-    sele () {
+    sele (type) {
       if (!this.form.solutionId) {
         this.$message.warning('璇烽�夋嫨淇濋櫓鏂规')
         return
@@ -444,7 +464,7 @@
         this.$message.warning('璇烽�夋嫨鍛樺伐')
         return
       }
-      this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.newVersionSolutionId })
+      this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.newVersionSolutionId, type })
     },
     // 鏌ヨ鍏ㄩ儴鏂规
     getCompany () {
diff --git a/company/src/components/enterprise/importEmployees.vue b/company/src/components/enterprise/importEmployees.vue
index a61616f..8e3f2df 100644
--- a/company/src/components/enterprise/importEmployees.vue
+++ b/company/src/components/enterprise/importEmployees.vue
@@ -48,7 +48,8 @@
       applyId: null,
       addList: [],
       delList: [],
-      fileName: ''
+      fileName: '',
+      hasDispatchUnit: null
     }
   },
   methods: {
@@ -63,6 +64,7 @@
       this.applyId = obj.insuranceApplyId
       this.list = obj.arr
       this.price = obj.price
+      this.hasDispatchUnit = obj.hasDispatchUnit
       this.importing= false
       this.confirming= false
     },
@@ -70,7 +72,11 @@
     exportTemplate () {
       // 鎶曚繚鐢宠
       if (this.type === 1) {
-        window.open('/template/personnel_add.xlsx')
+        if (this.hasDispatchUnit === 1) {
+          window.open('/template/personnel_no.xlsx')
+        } else {
+          window.open('/template/personnel_add.xlsx')
+        }
       } else {
         window.open('/template/personnel_reduce.xlsx')
       }
diff --git a/company/src/components/enterprise/renewalInsurance.vue b/company/src/components/enterprise/renewalInsurance.vue
index 6638b2a..861f3f1 100644
--- a/company/src/components/enterprise/renewalInsurance.vue
+++ b/company/src/components/enterprise/renewalInsurance.vue
@@ -26,14 +26,24 @@
                     <span>{{row.code ? row.code : '-'}}</span>
                 </template>
             </el-table-column>
-            <el-table-column prop="insureNum" label="鎶曚繚浜烘暟"></el-table-column>
-          <el-table-column prop="guaranteeNum" label="鍦ㄤ繚浜烘暟" ></el-table-column>
+            <el-table-column prop="guaranteeNum"  align="center" label="褰撳墠鍦ㄤ繚浜烘暟" width="120">
+                <template slot-scope="{row}">
+                    <span>{{(row.guaranteeNum||0)}} 浜�</span>
+                </template>
+            </el-table-column>
+<!--            <el-table-column prop="insureNum" label="鎶曚繚浜烘暟"></el-table-column>-->
+<!--          <el-table-column prop="guaranteeNum" label="鍦ㄤ繚浜烘暟" ></el-table-column>-->
             <el-table-column label="鎶曚繚鏃堕暱锛堝ぉ锛�">
                 <template slot-scope="{row}">
                     <span>{{row.serviceDays < 0 ? `-` : row.serviceDays}}</span>
                 </template>
             </el-table-column>
-            <el-table-column prop="currentFee" label="宸蹭骇鐢熻垂鐢�"></el-table-column>
+<!--            <el-table-column prop="currentFee" label="宸蹭骇鐢熻垂鐢�"></el-table-column>-->
+            <el-table-column prop="fee" label="鎵规敼璐圭敤鍚堣"  align="center" width="120">
+                <template slot-scope="{row}">
+                    <span>{{row.changeMoney+' 鍏�'}}</span>
+                </template>
+            </el-table-column>
             <el-table-column prop="fee" label="鎬昏垂鐢紙鍏冿級"></el-table-column>
             <el-table-column prop="endTime" label="淇濋櫓鐢熸晥姝㈡湡"></el-table-column>
             <el-table-column label="澶辨晥鍓╀綑锛堝ぉ锛�">
diff --git a/company/src/components/enterprise/selectEmployees.vue b/company/src/components/enterprise/selectEmployees.vue
index dfa5994..90c6943 100644
--- a/company/src/components/enterprise/selectEmployees.vue
+++ b/company/src/components/enterprise/selectEmployees.vue
@@ -81,6 +81,7 @@
       confirming:false,
       type: '',
       val: '',
+      companyId: null,
       memberIds:[],
       loading:false,
       memberList:[],
@@ -115,6 +116,7 @@
       if (obj.type) {
         this.type = obj.type
       }
+      this.companyId = obj.companyId
       this.list = []
       if (obj.insuranceApplyId) {
         this.insuranceApplyId = obj.insuranceApplyId
@@ -162,9 +164,6 @@
         }
         item.fee = this.price
       })
-
-      console.log(this.oldList)
-      console.log(this.seleData)
       this.confirming=false
       this.$emit('result', this.seleData)
       this.seleData=[]
@@ -197,6 +196,7 @@
         this.loading = true;
         findListByDTO({
           name: query,
+          companyId: this.companyId,
           insuranceApplyId: this.insuranceApplyId,
           notInInsuranceApplyId: this.notInInsuranceApplyId,
           validTime: this.validTime
diff --git a/company/src/components/system/role/PermissionConfigWindow.vue b/company/src/components/system/role/PermissionConfigWindow.vue
index 17476a0..7c2c014 100644
--- a/company/src/components/system/role/PermissionConfigWindow.vue
+++ b/company/src/components/system/role/PermissionConfigWindow.vue
@@ -2,7 +2,7 @@
   <GlobalWindow
     :visible.sync="visible"
     :confirm-working="isWorking"
-    width="582px"
+    width="800px"
     title="閰嶇疆瑙掕壊鏉冮檺"
     @confirm="confirm"
   >
@@ -122,3 +122,8 @@
   }
 }
 </style>
+<style>
+  .el-transfer-panel {
+    width: 300px !important;
+  }
+</style>
diff --git a/company/src/components/system/role/Permissions.vue b/company/src/components/system/role/Permissions.vue
new file mode 100644
index 0000000..d7bed0a
--- /dev/null
+++ b/company/src/components/system/role/Permissions.vue
@@ -0,0 +1,127 @@
+<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="type">
+                <el-select v-model="form.type" @change="form.customData === []" placeholder="璇烽�夋嫨">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鑷畾涔夐儴闂�" prop="customData" v-if="form.type === 4">
+                <el-cascader
+                    :options="organization"
+                    v-model="form.customData"
+                    placeholder="璇烽�夋嫨涓婄骇缁勭粐"
+                    :props="{ label: 'name', value: 'id', multiple: true, checkStrictly: true }"
+                    clearable />
+            </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import { tree } from '@/api/business/companyDepartment'
+  import { createRoleDataPermission } from '@/api/system/role'
+  export default {
+    name: 'Permissions',
+    extends: BaseOpera,
+    components: { GlobalWindow },
+    data () {
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          roleId: null,
+          type: '',
+          customData: []
+        },
+        // 楠岃瘉瑙勫垯
+        rules: {
+          type: [
+            { required: true, message: '璇烽�夋嫨鏉冮檺绫诲瀷' }
+          ],
+          customData: [
+            { required: true, message: '璇烽�夋嫨閮ㄩ棬' }
+          ]
+        },
+        organization: [],
+        options: [
+          { label: '鍏ㄩ儴', value: 0 },
+          { label: '鎵�灞為儴闂ㄥ強涓嬪睘閮ㄩ棬', value: 1 },
+          { label: '鎵�灞為儴闂ㄥ強鍏跺瓙瀛欓儴闂�', value: 2 },
+          { label: '浠呮墍灞為儴闂�', value: 3 },
+          { label: '鑷畾涔夐儴闂�', value: 4 },
+          { label: '浠呰嚜宸�', value: -1 }
+        ]
+      }
+    },
+    methods: {
+      confirm () {
+        this.$refs.form.validate((valid) => {
+          if (!valid) {
+            return
+          }
+          this.isWorking = true
+          let obj = JSON.parse(JSON.stringify(this.form))
+          if (obj.customData.length > 0) {
+            obj.customData = obj.customData.flat().join(',')
+          } else {
+            obj.customData = ''
+          }
+          createRoleDataPermission(obj)
+            .then(() => {
+              this.visible = false
+              this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+              this.$emit('success')
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking = false
+            })
+        })
+      },
+      getTree() {
+        tree()
+          .then(records => {
+            this.organization = records
+          })
+      },
+      open (title, target) {
+        this.title = title
+        this.visible = true
+        this.getTree()
+        // 鏂板缓
+        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]
+          }
+        })
+      }
+    },
+    created () {
+      this.config({
+        api: '/system/role'
+      })
+    }
+  }
+</script>
diff --git a/company/src/components/system/user/OperaUserWindow.vue b/company/src/components/system/user/OperaUserWindow.vue
index a64d417..85dce16 100644
--- a/company/src/components/system/user/OperaUserWindow.vue
+++ b/company/src/components/system/user/OperaUserWindow.vue
@@ -23,6 +23,14 @@
           <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" v-else>{{num}}s</el-button>
         </div>
       </el-form-item>
+      <el-form-item label="閮ㄩ棬" prop="departmentId">
+        <el-cascader
+          :options="organization"
+          v-model="form.departmentId"
+          placeholder="璇烽�夋嫨"
+          :props="{ label: 'name', value: 'id', children: 'childList', checkStrictly: true }"
+          clearable />
+      </el-form-item>
       <el-form-item label="鎶勯�佹枃浠堕偖绠�" prop="email">
         <el-input v-model="form.email" placeholder="璇疯緭鍏�" v-trim />
       </el-form-item>
@@ -37,7 +45,7 @@
 import PositionSelect from '@/components/common/PositionSelect'
 import { checkMobile, checkEmail } from '@/utils/form'
 import { sendSms } from '@/api/business/smsEmail'
-
+import { tree } from '@/api/business/companyDepartment'
 export default {
   name: 'OperaUserWindow',
   extends: BaseOpera,
@@ -51,10 +59,12 @@
         realname: '', // 濮撳悕
         mobile: '', // 鎵嬫満鍙风爜
         email: '',
-        captcha: ''
+        captcha: '',
+        departmentId: ''
       },
       num: 0,
       timer: null,
+      organization: [],
       // 楠岃瘉瑙勫垯
       rules: {
         username: [
@@ -66,6 +76,9 @@
         mobile: [
           { required: true, validator: checkMobile }
         ],
+        departmentId: [
+          { required: true, message: '璇烽�夋嫨閮ㄩ棬' }
+        ],
         email: [
           { required: true, message: '璇疯緭鍏ラ偖绠�' }
         ]
@@ -73,6 +86,52 @@
     }
   },
   methods: {
+    __confirmCreate () {
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        let obj = JSON.parse(JSON.stringify(this.form))
+        obj.departmentId = obj.departmentId[obj.departmentId.length - 1]
+        // 璋冪敤鏂板缓鎺ュ彛
+        this.isWorking = true
+        this.api.create(obj)
+          .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
+        }
+        let obj = JSON.parse(JSON.stringify(this.form))
+        obj.departmentId = obj.departmentId[obj.departmentId.length - 1]
+        // 璋冪敤鏂板缓鎺ュ彛
+        this.isWorking = true
+        this.api.updateById(obj)
+          .then(() => {
+            this.visible = false
+            this.$tip.apiSuccess('淇敼鎴愬姛')
+            this.$emit('success')
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+      })
+    },
     send() {
       if (!this.form.mobile) {
         this.$message.warning('璇疯緭鍏ユ墜鏈哄彿')
@@ -82,6 +141,12 @@
         .then(res => {
           this.num = 60
           this.setTime()
+        })
+    },
+    getTree() {
+      tree()
+        .then(records => {
+          this.organization = records
         })
     },
     setTime() {
@@ -100,6 +165,7 @@
     open (title, target) {
       this.title = title
       this.visible = true
+      this.getTree()
       clearInterval(this.timer)
       this.num = 0
       // 鏂板缓
@@ -107,8 +173,8 @@
         this.$nextTick(() => {
           this.$refs.form.resetFields()
           this.form.id = null
-          this.form.departmentId = null
-          this.form.positionIds = []
+          // this.form.departmentId = null
+          // this.form.positionIds = []
         })
         return
       }
@@ -117,8 +183,8 @@
         for (const key in this.form) {
           this.form[key] = target[key]
         }
-        this.form.departmentId = target.department == null ? null : target.department.id
-        this.form.positionIds = target.positions == null ? [] : target.positions.map(p => p.id)
+        // this.form.departmentId = target.department == null ? null : target.department.id
+        // this.form.positionIds = target.positions == null ? [] : target.positions.map(p => p.id)
       })
     }
   },
diff --git a/company/src/components/system/user/RoleConfigWindow.vue b/company/src/components/system/user/RoleConfigWindow.vue
index 5b029f7..3bf8d7a 100644
--- a/company/src/components/system/user/RoleConfigWindow.vue
+++ b/company/src/components/system/user/RoleConfigWindow.vue
@@ -2,7 +2,7 @@
   <GlobalWindow
     :visible.sync="visible"
     :confirm-working="isWorking"
-    width="582px"
+    width="800px"
     title="閰嶇疆鐢ㄦ埛瑙掕壊"
     @confirm="confirm"
   >
@@ -125,3 +125,8 @@
   }
 }
 </style>
+<style>
+  .el-transfer-panel {
+    width: 300px !important;
+  }
+</style>
diff --git a/company/src/components/system/user/allocationEnterprises.vue b/company/src/components/system/user/allocationEnterprises.vue
index d9a9c14..0a26f64 100644
--- a/company/src/components/system/user/allocationEnterprises.vue
+++ b/company/src/components/system/user/allocationEnterprises.vue
@@ -2,8 +2,8 @@
     <GlobalWindow
         :visible.sync="visible"
         :confirm-working="isWorking"
-        width="582px"
-        title="閰嶇疆鐢ㄦ埛瑙掕壊"
+        width="800px"
+        title="鍒嗛厤浼佷笟"
         @confirm="confirm"
     >
         <p class="tip" v-if="user != null">涓虹敤鎴� <em>{{user.realname}}</em> 鍒嗛厤浼佷笟</p>
@@ -91,9 +91,14 @@
         }
     }
 </script>
-
+<style>
+    .el-transfer-panel {
+        width: 300px !important;
+    }
+</style>
 <style scoped lang="scss">
     @import "@/assets/style/variables.scss";
+
     // 瑙掕壊閰嶇疆
     .global-window {
         .tip {
diff --git a/company/src/layouts/AppLayout.vue b/company/src/layouts/AppLayout.vue
index 96b84b5..ab907f4 100644
--- a/company/src/layouts/AppLayout.vue
+++ b/company/src/layouts/AppLayout.vue
@@ -47,7 +47,8 @@
       // 浼佷笟绔敤鎴疯缃按鍗�
       if (this.userInfo.type === 1 || this.userInfo.type === 2) {
         if(this.userInfo.company && this.userInfo.company.name){
-          Watermark.set(this.userInfo.company.name, this.$refs.containerS);
+          Watermark.set(this.userInfo.showCompany.name, this.$refs.containerS);
+          // Watermark.set(this.userInfo.company.name, this.$refs.containerS);
         }
       }
     },
diff --git a/company/src/main.js b/company/src/main.js
index e3587f1..175888f 100644
--- a/company/src/main.js
+++ b/company/src/main.js
@@ -10,7 +10,6 @@
 import plugins from './plugins'
 import { mapState, mapMutations } from 'vuex'
 import { fetchMenuTree } from './api/system/menu'
-
 Vue.config.productionTip = false
 Vue.use(ElementUI, {
   size: 'small'
@@ -19,7 +18,6 @@
 Vue.use(directives)
 Vue.use(filters)
 Vue.use(plugins)
-
 new Vue({
   data: {
     loading: false
diff --git a/company/src/utils/request.js b/company/src/utils/request.js
index 39e92c7..ea38661 100644
--- a/company/src/utils/request.js
+++ b/company/src/utils/request.js
@@ -42,8 +42,7 @@
 
 // 鏂板缓鍝嶅簲鎷︽埅鍣�
 axiosInstance.interceptors.response.use((response) => {
-  // console.log(response.status)
-  // debugger
+  // console.log(response)
   // 璇锋眰澶辫触
   if (response.status !== 200) {
     return Promise.reject(new Error('鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇�'))
@@ -66,6 +65,7 @@
   }
   return response.data.data
 }, function (error) {
+  console.log(error)
   if (error.code == null) {
     return Promise.reject(new Error('鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇�'))
   }
diff --git a/company/src/utils/resetMessage.js b/company/src/utils/resetMessage.js
new file mode 100644
index 0000000..4fca990
--- /dev/null
+++ b/company/src/utils/resetMessage.js
@@ -0,0 +1,18 @@
+import { Message } from 'element-ui';
+
+let messageInstance = null;
+
+export const showMessage = (message) => {
+  if (messageInstance) {
+    // 濡傛灉宸茬粡瀛樺湪涓�涓秷鎭彁绀哄疄渚嬶紝鍒欏厛鍏抽棴瀹�
+    Message.closeAll();
+  }
+
+  // 鏄剧ず鏂扮殑娑堟伅鎻愮ず锛屽苟淇濆瓨璇ュ疄渚�
+  messageInstance = Message({
+    message: message,
+    onClose: () => {
+      messageInstance = null; // 褰撴秷鎭彁绀哄叧闂椂锛屽皢瀹炰緥缃负null
+    }
+  });
+}
diff --git a/company/src/views/business/applyChange.vue b/company/src/views/business/applyChange.vue
index 1e2c6e7..2031d8a 100644
--- a/company/src/views/business/applyChange.vue
+++ b/company/src/views/business/applyChange.vue
@@ -9,9 +9,15 @@
           <el-option label="寰呭鏍�" value="1"></el-option>
           <el-option label="宸茬敓鏁�" value="2"></el-option>
           <el-option label="鐢宠閫�鍥�" value="3"></el-option>
-          <!--                    3 4 閮芥槸閫�鍥炵敵璇蜂腑-->
           <el-option label="宸查��鍥�" value="5"></el-option>
           <el-option label="宸插叧闂�" value="6"></el-option>
+          <el-option label="鎵规敼鐢宠涓�" value="9"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鎶曚繚绫诲瀷" prop="solutionType">
+        <el-select v-model="searchForm.solutionType" placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鐩翠繚鎶曚繚" :value="0"></el-option>
+          <el-option label="濮旀墭鎶曚繚" :value="1"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="鎶曚繚浼佷笟" prop="companyId">
@@ -52,6 +58,9 @@
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
+      <ul class="toolbar">
+        <li><el-button type="primary" @click="$refs.chooseCompany.open('閫夋嫨浼佷笟')">鏂板</el-button></li>
+      </ul>
       <el-table
           v-loading="isWorking.search"
           :data="tableData.list"
@@ -70,6 +79,7 @@
             <span  :class="'change-status'+row.status" v-if="row.status === 3 || row.status === 4">閫�鍥炵敵璇�</span>
             <span  :class="'change-status'+row.status" v-if="row.status ===5 || row.status === 8">宸查��鍥�</span>
             <span  :class="'change-status'+row.status" v-if="row.status ===6">宸插叧闂�</span>
+            <span  :class="'change-status'+row.status" v-if="row.status ===9">鎵规敼鐢宠涓�</span>
           </template>
         </el-table-column>
         <el-table-column prop="companyName" label="鎶曚繚浼佷笟" min-width="100px"></el-table-column>
@@ -85,7 +95,7 @@
             fixed="right"
         >
           <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaApplyChangeDetailWindow.open('鍔犲噺淇濊鎯�', row)">鏌ョ湅璇︽儏</el-button>
+            <el-button type="text" @click="openEdit(row)">鏌ョ湅璇︽儏</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -98,6 +108,11 @@
     </template>
     <!-- 璇︽儏 -->
     <OperaApplyChangeDetailWindow ref="operaApplyChangeDetailWindow" @success="handlePageChange"/>
+    <OperaUnionChangeDetailWindow ref="OperaUnionChangeDetailWindow" @success="handlePageChange"/>
+    <!--    閫夋嫨浼佷笟    -->
+    <chooseCompany ref="chooseCompany" @submit="getCompany" />
+    <!--    閫夋嫨淇濆崟    -->
+    <selectPolicy ref="selectPolicy" @success="handlePageChange" />
   </TableLayout>
 </template>
 
@@ -105,13 +120,16 @@
 import BaseTable from '@/components/base/BaseTable'
 import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
+import OperaUnionChangeDetailWindow from '@/components/business/OperaUnionChangeDetailWindow'
 import OperaApplyChangeDetailWindow from '@/components/business/OperaApplyChangeDetailWindow'
 import {all as solutionAll, all} from '@/api/business/solutions'
 import {pageAll as companyAll} from "@/api/business/company";
+import chooseCompany from '@/components/common/chooseCompany'
+import selectPolicy from '@/components/business/selectPolicy'
 export default {
   name: 'add_subtract',
   extends: BaseTable,
-  components: { TableLayout, Pagination, OperaApplyChangeDetailWindow },
+  components: { TableLayout, Pagination, OperaApplyChangeDetailWindow, OperaUnionChangeDetailWindow, chooseCompany, selectPolicy },
   data () {
     return {
       // 鎼滅储
@@ -122,7 +140,7 @@
         createDateE: '',
         createDateS: '',
         companyId: '',
-        solutionType: 0,
+        solutionType: '',
         baseSolutionsId: '',
         time: []
       },
@@ -141,6 +159,17 @@
     this.loadSelectList()
   },
   methods: {
+    getCompany(e) {
+      this.$refs.selectPolicy.open('閫夋嫨淇濆崟', e.companyId, 1)
+    },
+    openEdit(row) {
+      this.$refs.operaApplyChangeDetailWindow.open('鍔犲噺淇濊鎯�', row)
+      // if (row.solutionType === 0) {
+      //   this.$refs.operaApplyChangeDetailWindow.open('鍔犲噺淇濊鎯�', row)
+      // } else if (row.solutionType === 1) {
+      //   this.$refs.OperaUnionChangeDetailWindow.open('鍔犲噺淇濊鎯�', row)
+      // }
+    },
     loadSelectList() {
       solutionAll({dataType:2,type:0}).then(res => {
         this.solutionList = res
diff --git a/company/src/views/business/company.vue b/company/src/views/business/company.vue
index 87a5ea1..ea58a9e 100644
--- a/company/src/views/business/company.vue
+++ b/company/src/views/business/company.vue
@@ -23,6 +23,7 @@
                 :data="tableData.list"
                 stripe
             >
+                <el-table-column prop="username" label="鐧诲綍璐﹀彿" min-width="150px" fixed  align="center"></el-table-column>
                 <el-table-column prop="name" label="浼佷笟鍚嶇О" min-width="150px" fixed  align="center"></el-table-column>
                 <el-table-column prop="code" label="缁熶竴淇$敤浠g爜" min-width="150px" fixed     align="center"></el-table-column>
               <el-table-column prop="phone" label="缁戝畾鎵嬫満鍙�" min-width="100px" fixed     align="center"></el-table-column>
diff --git a/company/src/views/business/companyDepartment.vue b/company/src/views/business/companyDepartment.vue
new file mode 100644
index 0000000..ca9b260
--- /dev/null
+++ b/company/src/views/business/companyDepartment.vue
@@ -0,0 +1,162 @@
+<template>
+    <TableLayout :permissions="['business:companydepartment:query']">
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <ul class="toolbar" v-permissions="['business:companydepartment:create']">
+                <li><el-button type="primary" @click="$refs.operaCompanyDepartmentWindow.open('鏂板缓缁勭粐', { disabled: false })" icon="el-icon-plus" v-permissions="['business:companydepartment:create']">鏂板缓</el-button></li>
+                <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:menu:delete']">鍒犻櫎</el-button></li>
+                <li><el-button @click="sort('top')" :loading="isWorking.sort" icon="el-icon-sort-up" v-permissions="['system:menu:sort']">涓婄Щ</el-button></li>
+                <li><el-button @click="sort('bottom')" :loading="isWorking.sort" icon="el-icon-sort-down" v-permissions="['system:menu:sort']">涓嬬Щ</el-button></li>
+            </ul>
+            <el-table
+                ref="table"
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                :tree-props="{children: 'childList', hasChildren: 'hasChildren'}"
+                row-key="id"
+                stripe
+                :default-expand-all="false"
+                @selection-change="handleSelectionChange"
+            >
+                <el-table-column type="selection" width="55" fixed="left"></el-table-column>
+                <el-table-column prop="name" label="缁勭粐鍚嶇О" min-width="100px"></el-table-column>
+                <el-table-column prop="name" label="缁勭粐绫诲瀷" min-width="100px"></el-table-column>
+                <el-table-column prop="editorName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
+                <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="100px"></el-table-column>
+                <el-table-column
+                    v-if="containPermissions(['business:companydepartment:update', 'business:companydepartment:delete'])"
+                    label="鎿嶄綔"
+                    min-width="140"
+                    fixed="right"
+                >
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.operaCompanyDepartmentWindow.open('缂栬緫缁勭粐', {...row, parentId: [row.id], disabled: true})" icon="el-icon-edit" v-permissions="['business:companydepartment:update']">缂栬緫</el-button>
+                        <el-button type="text" icon="el-icon-plus" @click="$refs.operaCompanyDepartmentWindow.open('鏂板缓瀛愮粍缁�', {...row, id: null, parentId: [row.id], disabled: true})">鏂板缓瀛愮粍缁�</el-button>
+                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:companydepartment:delete']">鍒犻櫎</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </template>
+        <!-- 鏂板缓/淇敼 -->
+        <OperaCompanyDepartmentWindow ref="operaCompanyDepartmentWindow" @success="handlePageChange"/>
+    </TableLayout>
+</template>
+
+<script>
+  import BaseTable from '@/components/base/BaseTable'
+  import TableLayout from '@/layouts/TableLayout'
+  import Pagination from '@/components/common/Pagination'
+  import OperaCompanyDepartmentWindow from '@/components/business/OperaCompanyDepartmentWindow'
+  import { tree, updateSort } from '@/api/business/companyDepartment'
+  export default {
+    name: 'CompanyDepartment',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, OperaCompanyDepartmentWindow },
+    data () {
+      return {
+        // 鎼滅储
+        searchForm: {
+        },
+        isWorking: {
+          sort: false
+        }
+      }
+    },
+    created () {
+      this.config({
+        module: '浼佷笟淇℃伅琛�',
+        api: '/business/companyDepartment',
+        'field.id': 'id',
+        'field.main': 'id'
+      })
+      this.search()
+    },
+    methods: {
+      // 鏌ヨ鏁版嵁
+      handlePageChange () {
+        this.isWorking.search = true
+        tree()
+          .then(records => {
+            this.tableData.list = records
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking.search = false
+          })
+      },
+      // 鎺掑簭
+      sort (direction) {
+        if (this.isWorking.sort) {
+          return
+        }
+        if (this.tableData.selectedRows.length === 0) {
+          this.$tip.warning('璇烽�夋嫨涓�鏉℃暟鎹�')
+          return
+        }
+        if (this.tableData.selectedRows.length > 1) {
+          this.$tip.warning('鎺掑簭鏃朵粎鍏佽閫夋嫨涓�鏉℃暟鎹�')
+          return
+        }
+        const menuId = this.tableData.selectedRows[0].id
+        // 鎵惧埌鑿滃崟鑼冨洿
+        let menuPool
+        for (const rootMenu of this.tableData.list) {
+          const parent = this.__findParent(menuId, rootMenu)
+          if (parent != null) {
+            menuPool = parent.children
+          }
+        }
+        menuPool = menuPool || this.tableData.list
+        const menuIndex = menuPool.findIndex(menu => menu.id === menuId)
+        // 涓婄Щ鏍¢獙
+        if (direction === 'top' && menuIndex === 0) {
+          this.$tip.warning('鑿滃崟宸插埌椤堕儴')
+          return
+        }
+        // 涓嬬Щ鏍¢獙
+        if (direction === 'bottom' && menuIndex === menuPool.length - 1) {
+          this.$tip.warning('鑿滃崟宸插埌搴曢儴')
+          return
+        }
+        this.isWorking.sort = true
+        updateSort({
+          id: this.tableData.selectedRows[0].id,
+          direction
+        })
+          .then(() => {
+            if (direction === 'top') {
+              menuPool.splice(menuIndex, 0, menuPool.splice(menuIndex - 1, 1)[0])
+            } else {
+              menuPool.splice(menuIndex, 0, menuPool.splice(menuIndex + 1, 1)[0])
+            }
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking.sort = false
+          })
+      },
+      // 鏌ヨ鐖惰妭鐐�
+      __findParent (id, parent) {
+        if (parent.childList === 0) {
+          return
+        }
+        for (const menu of parent.childList) {
+          if (menu.id === id) {
+            return parent
+          }
+          if (menu.childList.length > 0) {
+            const m = this.__findParent(id, menu)
+            if (m != null) {
+              return m
+            }
+          }
+        }
+        return null
+      }
+    }
+  }
+</script>
diff --git a/company/src/views/business/companyUserApply.vue b/company/src/views/business/companyUserApply.vue
new file mode 100644
index 0000000..9993b73
--- /dev/null
+++ b/company/src/views/business/companyUserApply.vue
@@ -0,0 +1,104 @@
+<template>
+    <TableLayout :permissions="['business:companyuserapply:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item label="鐢宠鐘舵��" prop="status">
+                <el-select v-model="searchForm.status" @change="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>
+            <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:companyuserapply:create']" v-if="userInfo.type === 1">
+                <li><el-button type="primary" @click="$refs.operaCompanyUserApplyWindow.open('鏂板缓鐢宠')" icon="el-icon-plus" v-permissions="['business:companyuserapply:create']">鏂板缓</el-button></li>
+            </ul>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+                <el-table-column label="搴忓彿" width="80px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="realName" label="鐢宠浜�"></el-table-column>
+                <el-table-column prop="userName" label="鎺堟潈璐﹀彿"></el-table-column>
+                <el-table-column prop="content" label="鐢宠璇存槑"></el-table-column>
+                <el-table-column prop="createDate" label="鐢宠鏃堕棿"></el-table-column>
+                <el-table-column label="鐢宠鐘舵��">
+                    <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>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    label="鎿嶄綔"
+                    min-width="120"
+                    fixed="right"
+                >
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.operaCompanyUserApplyDescWindow.open('鐢宠璁板綍璇︽儏', row.id)" icon="el-icon-view">鏌ョ湅</el-button>
+                        <el-button type="text" v-if="userInfo.type === 0 && row.status === 0" @click="$refs.operaCompanyUserApplyCarefulWindow.open('闆嗗洟鐢宠璁板綍瀹℃牳', row.id)">瀹℃牳</el-button>
+                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-if="userInfo.type === 1" v-permissions="['business:companyuserapply:delete']">鍒犻櫎</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!-- 鏂板缓/淇敼 -->
+        <OperaCompanyUserApplyWindow ref="operaCompanyUserApplyWindow" @success="handlePageChange"/>
+        <!--    鏌ョ湅    -->
+        <operaCompanyUserApplyDescWindow ref="operaCompanyUserApplyDescWindow" />
+        <!--    瀹℃牳    -->
+        <OperaCompanyUserApplyCarefulWindow ref="operaCompanyUserApplyCarefulWindow" @success="handlePageChange"/>
+    </TableLayout>
+</template>
+
+<script>
+  import BaseTable from '@/components/base/BaseTable'
+  import TableLayout from '@/layouts/TableLayout'
+  import Pagination from '@/components/common/Pagination'
+  import OperaCompanyUserApplyCarefulWindow from '@/components/business/OperaCompanyUserApplyCarefulWindow'
+  import OperaCompanyUserApplyWindow from '@/components/business/OperaCompanyUserApplyWindow'
+  import operaCompanyUserApplyDescWindow from '@/components/business/operaCompanyUserApplyDescWindow'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'CompanyUserApply',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, OperaCompanyUserApplyWindow, operaCompanyUserApplyDescWindow, OperaCompanyUserApplyCarefulWindow },
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    data () {
+      return {
+        // 鎼滅储
+        searchForm: {
+          status: ''
+        }
+      }
+    },
+    created () {
+      this.config({
+        module: '闆嗗洟鐢宠璁板綍琛�',
+        api: '/business/companyUserApply',
+        'field.id': 'id',
+        'field.main': 'id'
+      })
+      this.search()
+    }
+  }
+</script>
diff --git a/company/src/views/business/contract.vue b/company/src/views/business/contract.vue
new file mode 100644
index 0000000..84b03d5
--- /dev/null
+++ b/company/src/views/business/contract.vue
@@ -0,0 +1,172 @@
+<template>
+    <TableLayout :permissions="['business:contract: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="signType">
+                <el-select v-model="searchForm.signType" placeholder="璇烽�夋嫨" @change="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>
+            <el-form-item label="鐘舵��" prop="queryStatus">
+                <el-select v-model="searchForm.queryStatus" placeholder="璇烽�夋嫨" @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-option label="宸插叧闂�" :value="5"></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:contract:create']" v-if="[0,2].includes(userInfo.type)">
+                <li><el-button type="primary" @click="$refs.operaContractWindow.open('鏂板缓鍚堝悓淇℃伅琛�', null, userInfo.type)" icon="el-icon-plus" v-permissions="['business:contract:create']">鏂板缓</el-button></li>
+            </ul>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+                <el-table-column label="搴忓彿" width="80px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="鍚堝悓鍚嶇О" min-width="100px"></el-table-column>
+                <el-table-column label="鍚堝悓绫诲瀷" min-width="100px">
+                    <template slot-scope="{row}">
+                        <template v-if="row.signType === 0">骞冲彴-鍟嗘埛</template>
+                        <template v-else-if="row.signType === 1">骞冲彴-浼佷笟</template>
+                        <template v-else-if="row.signType === 2">鍟嗘埛-浼佷笟</template>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="companyName" label="鐢蹭箼鏂瑰悕绉�" min-width="100px">
+                    <template slot-scope="{row}">
+                        {{ row.partyCompanyName }} / {{ row.companyName }}
+                    </template>
+                </el-table-column>
+                <el-table-column label="鍚堝悓寮�濮嬫椂闂�" min-width="100px">
+                    <template slot-scope="{row}">
+                        {{ row.startTime }} - {{ row.endTime }}
+                    </template>
+                </el-table-column>
+                <el-table-column label="鐘舵��" min-width="100px">
+                    <template slot-scope="{row}">
+                        <template v-if="row.queryStatus === 0">寰呭钩鍙扮缃�</template>
+                        <template v-else-if="row.queryStatus === 1">寰呭晢鎴风缃�</template>
+                        <template v-else-if="row.queryStatus === 2">寰呬紒涓氱缃�</template>
+                        <template v-else-if="row.queryStatus === 3">宸插畬鎴�</template>
+                        <template v-else-if="row.queryStatus === 4">宸插彇娑�</template>
+                        <template v-else-if="row.queryStatus === 5">宸插叧闂�</template>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    label="鎿嶄綔"
+                    min-width="150"
+                    fixed="right"
+                >
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.operaContractDescWindow.open('鍚堝悓璇︽儏', row.id)" icon="el-icon-view">鏌ョ湅璇︽儏</el-button>
+                        <template v-if="userInfo.type === 0">
+                            <template v-if="(row.signType === 0 && row.status === 0) || (row.signType === 1 && row.status === 0)">
+                                <el-button type="text" @click="sign(row)" icon="el-icon-document-checked">绛剧讲</el-button>
+                            </template>
+                        </template>
+                        <template v-if="userInfo.type === 1">
+                            <template v-if="(row.signType === 1 && row.status === 1) || (row.signType === 2 && row.status === 1)">
+                                <el-button type="text" @click="sign(row)" icon="el-icon-document-checked">绛剧讲</el-button>
+                            </template>
+                        </template>
+                        <template v-if="userInfo.type === 2">
+                            <template v-if="(row.signType === 0 && row.status === 1) || (row.signType === 2 && row.status === 0)">
+                                <el-button type="text" @click="sign(row)" icon="el-icon-document-checked">绛剧讲</el-button>
+                            </template>
+                        </template>
+                        <el-button type="text" icon="el-icon-document-remove" v-if="row.status === 0" @click="cancelHT(row.id)">鍙栨秷</el-button>
+                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:contract:delete']" v-if="row.status === 4">鍒犻櫎</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!-- 鏂板缓/淇敼 -->
+        <OperaContractWindow ref="operaContractWindow" @success="handlePageChange"/>
+        <!--    璇︽儏    -->
+        <OperaContractDescWindow ref="operaContractDescWindow" />
+    </TableLayout>
+</template>
+
+<script>
+  import BaseTable from '@/components/base/BaseTable'
+  import TableLayout from '@/layouts/TableLayout'
+  import Pagination from '@/components/common/Pagination'
+  import OperaContractWindow from '@/components/business/OperaContractWindow'
+  import OperaContractDescWindow from '@/components/business/OperaContractDescWindow'
+  import { cancel, getSignLink } from '@/api/business/contract'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'Contract',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, OperaContractWindow, OperaContractDescWindow },
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    data () {
+      return {
+        // 鎼滅储
+        searchForm: {
+          name: '',
+          signType: '',
+          queryStatus: ''
+        }
+      }
+    },
+    created () {
+      this.config({
+        module: '鍚堝悓淇℃伅琛�',
+        api: '/business/contract',
+        'field.id': 'id',
+        'field.main': 'id'
+      })
+      this.search()
+    },
+    methods: {
+      // 绛剧讲
+      sign(row) {
+        getSignLink(row.id)
+          .then(res => {
+            window.open(res)
+          })
+      },
+      // 鍙栨秷鍚堝悓
+      cancelHT(id) {
+        this.$confirm('纭鍙栨秷褰撳墠鍚堝悓鍚�?', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          cancel(id).then(res => {
+            this.search()
+          })
+        }).catch(() => {
+
+        });
+      }
+    }
+  }
+</script>
diff --git a/company/src/views/business/customerService.vue b/company/src/views/business/customerService.vue
new file mode 100644
index 0000000..a5a33c6
--- /dev/null
+++ b/company/src/views/business/customerService.vue
@@ -0,0 +1,93 @@
+<template>
+    <TableLayout :permissions="['business:customerservice: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="mobile">
+                <el-input v-model="searchForm.mobile" 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:customerservice:create']">
+                <li><el-button type="primary" @click="$refs.operaCustomerServiceWindow.open('鏂板璐﹀彿')" icon="el-icon-plus" v-permissions="['business:customerservice:create']">鏂板缓</el-button></li>
+            </ul>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+                <el-table-column label="搴忓彿" width="80px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="瀹㈡湇濮撳悕" min-width="100px"></el-table-column>
+                <el-table-column prop="mobile" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
+                <el-table-column prop="companyNum" label="鏈嶅姟浼佷笟鏁�" min-width="100px"></el-table-column>
+                <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+                <el-table-column prop="createUserName" label="鍒涘缓浜�" min-width="100px"></el-table-column>
+                <el-table-column
+                    v-if="containPermissions(['business:customerservice:update', 'business:customerservice:delete'])"
+                    label="鎿嶄綔"
+                    min-width="180"
+                    fixed="right"
+                >
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.operaCustomerServiceWindow.open('缂栬緫璐﹀彿', row)" icon="el-icon-edit" v-permissions="['business:customerservice:update']">缂栬緫</el-button>
+                        <el-button type="text" @click="$refs.allocateEnterprises.open('鍒嗛厤鏈嶅姟浼佷笟', row.id)" icon="el-icon-connection">浼佷笟鎺堟潈</el-button>
+                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:customerservice:delete']">鍒犻櫎</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!-- 鏂板缓/淇敼 -->
+        <OperaCustomerServiceWindow ref="operaCustomerServiceWindow" @success="handlePageChange"/>
+        <!--    鍒嗛厤浼佷笟    -->
+        <allocateEnterprises ref="allocateEnterprises" @success="handlePageChange"/>
+    </TableLayout>
+</template>
+
+<script>
+  import BaseTable from '@/components/base/BaseTable'
+  import TableLayout from '@/layouts/TableLayout'
+  import Pagination from '@/components/common/Pagination'
+  import OperaCustomerServiceWindow from '@/components/business/OperaCustomerServiceWindow'
+  import allocateEnterprises from '@/components/business/allocateEnterprises'
+  export default {
+    name: 'CustomerService',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, OperaCustomerServiceWindow, allocateEnterprises },
+    data () {
+      return {
+        // 鎼滅储
+        searchForm: {
+          name: '',
+          mobile: ''
+        }
+      }
+    },
+    created () {
+      this.config({
+        module: '瀹㈡湇淇℃伅琛�',
+        api: '/business/customerService',
+        'field.id': 'id',
+        'field.main': 'id'
+      })
+      this.search()
+    }
+  }
+</script>
diff --git a/company/src/views/business/insuranceApply.vue b/company/src/views/business/insuranceApply.vue
index 9f674f5..4a49a27 100644
--- a/company/src/views/business/insuranceApply.vue
+++ b/company/src/views/business/insuranceApply.vue
@@ -3,15 +3,18 @@
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
             <el-form-item label="淇濆崟鐘舵��" prop="statusCollect">
-                <el-select v-model="searchForm.statusCollect" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <el-option label="寰呭鏍�" value="0"></el-option>
-                    <el-option label="寰呭嚭鍗�" value="1"></el-option>
-                  <el-option label="寰呯缃�" value="7"></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 v-model="statusCollect" placeholder="璇烽�夋嫨" @change="changeStatus">
+                    <el-option
+                        v-for="(item, index) in status"
+                        :key="index"
+                        :label="item.label"
+                        :value="item.id" />
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鎶曚繚绫诲瀷" prop="solutionType">
+                <el-select v-model="searchForm.solutionType" placeholder="璇烽�夋嫨" @change="search">
+                    <el-option label="鐩翠繚鎶曚繚" :value="0"></el-option>
+                    <el-option label="濮旀墭鎶曚繚" :value="1"></el-option>
                 </el-select>
             </el-form-item>
             <el-form-item label="鎶曚繚浼佷笟" prop="companyId">
@@ -52,6 +55,9 @@
         </el-form>
         <!-- 琛ㄦ牸鍜屽垎椤� -->
         <template v-slot:table-wrap>
+            <ul class="toolbar">
+                <li><el-button type="primary" @click="$refs.chooseCompany.open('閫夋嫨闇�瑕佹姇淇濈殑浼佷笟')">鏂板</el-button></li>
+            </ul>
               <el-table
                   v-loading="isWorking.search"
                   :data="tableData.list"
@@ -62,9 +68,13 @@
                     <span>{{scope.$index + 1}}</span>
                   </template>
                 </el-table-column>
-                <el-table-column prop="statusInfo"   align="center"  fixed label="鐘舵��">
+                <el-table-column prop="statusInfo" align="center"  fixed label="鐘舵��">
                   <template slot-scope="{row}">
-                    <span :class="'apply-status'+row.status" >{{row.statusInfo}}</span>
+                    <span style="color: #666;" v-if="[9,25,27,5].includes(row.status) && ['宸插叧闂�','宸茶繃鏈�'].includes(row.statusInfo)">{{row.statusInfo}}</span>
+                    <span style="color: red;" v-else-if="row.status === 4 && row.statusInfo === '宸查��鍥�'">{{ row.statusInfo}}</span>
+                    <span style="color: #f95601;" v-else-if="[5,27].includes(row.status) && row.statusInfo === '寰呯敓鏁�'">{{ row.statusInfo}}</span>
+                      <span style="color: #216EEE;" v-else-if="[12].includes(row.status) && row.statusInfo === '寰呭鏍�'">{{ row.statusInfo}}</span>
+                    <span :class="'apply-status'+row.status" v-else>{{row.statusInfo}}</span>
                   </template>
                 </el-table-column>
                 <el-table-column prop="solutionsName" fixed label="淇濋櫓鏂规" align="center" min-width="150"></el-table-column>
@@ -79,26 +89,36 @@
                     <span>{{row.code ? row.code : '-'}}</span>
                   </template>
                 </el-table-column>
-                <el-table-column prop="insureNum" align="center" label="鎶曚繚浜烘暟"  >
-                  <template slot-scope="{row}">
-                    <span>{{(row.insureNum||0)}} 浜�</span>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="guaranteeNum"  align="center" label="鍦ㄤ繚浜烘暟"  >
-                  <template slot-scope="{row}">
-                    <span>{{(row.guaranteeNum||0)}} 浜�</span>
-                  </template>
-                </el-table-column>
+<!--                <el-table-column prop="insureNum" align="center" label="鎶曚繚浜烘暟"  >-->
+<!--                  <template slot-scope="{row}">-->
+<!--                    <span>{{(row.insureNum||0)}} 浜�</span>-->
+<!--                  </template>-->
+<!--                </el-table-column>-->
+                  <el-table-column prop="guaranteeNum"  align="center" label="褰撳墠鍦ㄤ繚浜烘暟" width="120">
+                      <template slot-scope="{row}">
+                          <span>{{(row.guaranteeNum||0)}} 浜�</span>
+                      </template>
+                  </el-table-column>
+<!--                <el-table-column prop="guaranteeNum"  align="center" label="鍦ㄤ繚浜烘暟"  >-->
+<!--                  <template slot-scope="{row}">-->
+<!--                    <span>{{(row.guaranteeNum||0)}} 浜�</span>-->
+<!--                  </template>-->
+<!--                </el-table-column>-->
                 <el-table-column label="鎶曚繚鏃堕暱">
                   <template slot-scope="{row}">
                     <span>{{(row.serviceDays - row.loseEfficacyDays) < 0 ? `-` : (row.serviceDays - row.loseEfficacyDays+'澶�')}}</span>
                   </template>
                 </el-table-column>
-                <el-table-column prop="currentFee" label="宸蹭骇鐢熻垂鐢�"  align="center">
-                  <template slot-scope="{row}">
-                    <span>{{row.currentFee!=null?row.currentFee+' 鍏�': '-'}}</span>
-                  </template>
-                </el-table-column>
+                  <el-table-column prop="fee" label="鎵规敼璐圭敤鍚堣"  align="center" width="120">
+                      <template slot-scope="{row}">
+                          <span>{{row.changeMoney+' 鍏�'}}</span>
+                      </template>
+                  </el-table-column>
+<!--                <el-table-column prop="currentFee" label="宸蹭骇鐢熻垂鐢�"  align="center">-->
+<!--                  <template slot-scope="{row}">-->
+<!--                    <span>{{row.currentFee!=null?row.currentFee+' 鍏�': '-'}}</span>-->
+<!--                  </template>-->
+<!--                </el-table-column>-->
                 <el-table-column prop="fee" label="鎬昏垂鐢�"  align="center">
                   <template slot-scope="{row}">
                     <span>{{row.fee!=null?row.fee+' 鍏�': '-'}}</span>
@@ -127,6 +147,10 @@
         </template>
         <!-- 鏂板缓/淇敼 -->
         <OperaInsuranceApplyWindow ref="operaInsuranceApplyWindow" @success="handlePageChange"/>
+        <!--    閫夋嫨浼佷笟    -->
+        <chooseCompany ref="chooseCompany" @submit="getVal" />
+        <!--    鏂板鎶曚繚    -->
+            <OperaInsuranceApplyAddWindow ref="OperaInsuranceApplyAddWindow" @success="handlePageChange" />
     </TableLayout>
 </template>
 
@@ -137,10 +161,12 @@
 import { all as solutionAll} from '@/api/business/solutions'
 import { pageAll as companyAll} from '@/api/business/company'
 import OperaInsuranceApplyWindow from '@/components/business/OperaInsuranceApplyWindow'
+import OperaInsuranceApplyAddWindow from '@/components/enterprise/OperaInsuranceApplyAddWindow'
+import chooseCompany from '@/components/common/chooseCompany'
 export default {
     name: 'InsuranceApply',
     extends: BaseTable,
-    components: { TableLayout, Pagination, OperaInsuranceApplyWindow },
+    components: { TableLayout, Pagination, OperaInsuranceApplyWindow, chooseCompany, OperaInsuranceApplyAddWindow },
     data () {
         return {
             // 鎼滅储
@@ -149,12 +175,25 @@
                 createTimeE: '',
                 time: [],
                 baseSolutionId: '',
-                 solutionType: 0,
+                solutionType: '',
                 companyId: '',
-                statusCollect: ''
+                statusCollect: '',
             },
+          statusCollect: '',
           solutionList:[],
-          companyList:[]
+          companyList:[],
+          status: [
+            { label: '寰呭鏍�', id: '0' },
+            { label: '寰呭嚭鍗�', id: '1' },
+            { label: '鎶曚繚涓�', id: '26' },
+            { label: '寰呯缃�', id: '7' },
+            { label: '寰呯敓鏁�', id: '2,0' },
+            { label: '淇濋殰涓�', id: '2,1' },
+            { label: '宸茶繃鏈�', id: '2,2' },
+            { label: '宸查��鍥�', id: '4' },
+            { label: '閫�鍥炵敵璇蜂腑', id: '5' },
+            { label: '宸插叧闂�', id: '6' },
+          ]
         }
     },
     created () {
@@ -168,9 +207,25 @@
         this.loadSelectList()
     },
     methods:{
+      changeStatus(e) {
+        if (e.indexOf(',') !== -1) {
+          this.searchForm.timeOut = e.split(',')[1]
+          this.searchForm.statusCollect = e.split(',')[0]
+        } else {
+          this.searchForm.timeOut = ''
+          this.searchForm.statusCollect = e
+        }
+        this.search()
+      },
+      getVal(company) {
+        this.$refs.OperaInsuranceApplyAddWindow.open('鎶曚繚鐢宠', { type: '', companyName: company.companyName, companyId: company.companyId })
+      },
         // 鎼滅储妗嗛噸缃�
         reset () {
             this.$refs.searchForm.resetFields()
+            this.statusCollect = ''
+            this.searchForm.timeOut = ''
+            this.searchForm.statusCollect = ''
             this.searchForm.createTimeS = ''
             this.searchForm.createTimeE = ''
             this.search()
diff --git a/company/src/views/business/solutions.vue b/company/src/views/business/solutions.vue
index c65c11e..17f8511 100644
--- a/company/src/views/business/solutions.vue
+++ b/company/src/views/business/solutions.vue
@@ -5,6 +5,12 @@
             <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="signStatus">
+                <el-select v-model="searchForm.signStatus" 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>
@@ -27,12 +33,13 @@
                         <span>{{scope.$index + 1}}</span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="name" label="瀛愭柟妗堝悕绉�" min-width="150px"></el-table-column>
-                <el-table-column prop="solutionBaseName" label="涓绘柟妗�" min-width="100px"></el-table-column>
+                <el-table-column prop="name" label="瀛愭柟妗堝悕绉�" min-width="150px" v-if="userInfo.type === 0"></el-table-column>
+                <el-table-column prop="name" label="鏂规鍚嶇О" min-width="150px" v-if="userInfo.type === 1"></el-table-column>
+                <el-table-column prop="solutionBaseName" label="涓绘柟妗�" min-width="100px" v-if="userInfo.type === 0"></el-table-column>
                 <el-table-column label="鎶曚繚绫诲瀷" min-width="120px" align="center">
                     <template slot-scope="{row}">
-                        <span v-if="row.type === 0">鐩翠繚</span>
-                        <span v-if="row.type === 1">濮旀墭<div style="color: blue;display:  block" >{{row.shopName||'-'}}</div></span>
+                        <span v-if="row.type === 0">鐩翠繚<div style="color: blue;display:  block" >{{ row.shopName || '-' }}</div></span>
+                        <span v-if="row.type === 1">濮旀墭<div style="color: blue;display:  block" >{{ row.shopName || '-' }}</div></span>
                     </template>
                 </el-table-column>
                 <el-table-column label="鎶曚繚浠锋牸" min-width="100px">
@@ -46,7 +53,7 @@
                         <span v-if="row.timeUnit === 5">骞�</span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="retrial" label="闇�瑕佸瀹�">
+                <el-table-column prop="retrial" label="闇�瑕佸瀹�" v-if="userInfo.type === 0">
                     <template slot-scope="{row}">
                         <span v-if="row.retrial === 0">涓嶉渶瑕�</span>
                         <span v-if="row.retrial === 1">闇�瑕�</span>
@@ -56,19 +63,30 @@
                 <el-table-column prop="status" label="鍚敤鐘舵��" min-width="100px" v-if="userInfo.type !== 1">
                     <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">
+                            @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="signDate" label="绛剧讲鏃堕棿" min-width="100px" v-if="userInfo.type === 1"></el-table-column>
+                <el-table-column prop="signUserName" label="绛剧讲浜�" min-width="100px" v-if="userInfo.type === 1"></el-table-column>
+                <el-table-column label="绛剧讲鐘舵��" min-width="100px" v-if="userInfo.type === 1">
+                    <template slot-scope="{row}">
+                        <span v-if="row.signStatus === 0">寰呯绔�</span>
+                        <span v-else-if="!row.signStatus">寰呯绔�</span>
+                        <span v-else-if="row.signStatus === 1">宸茬绔�</span>
+                    </template>
+                </el-table-column>
+
                 <el-table-column
                     v-if="containPermissions(['business:solutions:update', 'business:solutions:delete'])"
                     label="鎿嶄綔"
-                    min-width="150"
+                    min-width="230"
                     fixed="right"
                 >
                     <template slot-scope="{row}">
@@ -76,6 +94,13 @@
                         <template v-if="userInfo.type !== 1">
                             <el-button type="text" @click="$refs.operaSolutionsWindow.open('缂栬緫瀛愭柟妗�', { id: row.id })" icon="el-icon-edit" v-permissions="['business:solutions:update']">淇敼</el-button>
                         </template>
+                        <template v-if="userInfo.type === 1 && (!row.signStatus || row.signStatus === 0)">
+                            <el-button type="text" icon="el-icon-tickets" @click="sign(row.companySolutionId)">绛剧讲</el-button>
+                        </template>
+                        <template v-if="userInfo.type === 1 && row.signStatus === 1">
+                            <el-button type="text" icon="el-icon-tickets" @click="seeFleSignUrl(row.fileSignUrl)">鏌ョ湅鏂规纭涔�</el-button>
+                        </template>
+                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:solutions:delete']">鍒犻櫎</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -90,6 +115,8 @@
         <OperaSolutionsWindow ref="operaSolutionsWindow" @success="handlePageChange"/>
         <!-- 璇︽儏 -->
         <OperaSolutionsDescWindow ref="OperaSolutionsDescWindow" @success="handlePageChange"/>
+        <!-- 棰勮pdf -->
+        <OperaPdfViewerWindow ref="OperaPdfViewerWindow"  />
     </TableLayout>
 </template>
 <script>
@@ -98,19 +125,23 @@
   import Pagination from '@/components/common/Pagination'
   import OperaSolutionsWindow from '@/components/business/OperaSolutionsWindow'
   import OperaSolutionsDescWindow from '@/components/business/OperaSolutionsDescWindow'
+  import OperaPdfViewerWindow from '@/components/business/OperaPdfViewerWindow'
   import { updateStatus } from '@/api/business/solutions'
+  import { getSignLink } from '@/api/business/company'
   import { mapState } from 'vuex'
   export default {
     name: 'Solutions',
     extends: BaseTable,
-    components: { TableLayout, Pagination, OperaSolutionsWindow, OperaSolutionsDescWindow },
+    components: { TableLayout, Pagination, OperaSolutionsWindow, OperaSolutionsDescWindow, OperaPdfViewerWindow },
     data () {
       return {
         // 鎼滅储
         searchForm: {
           name: '',
           status: '',
-          type: ''
+          type: '',
+          signStatus: '',
+          dataType: 0
         }
       }
     },
@@ -132,6 +163,15 @@
       this.search()
     },
     methods: {
+      seeFleSignUrl(url) {
+        this.$refs.OperaPdfViewerWindow.open('鏂规纭涔�', url)
+      },
+      sign(id) {
+        getSignLink(id)
+          .then(res => {
+            window.open(res)
+          })
+      },
       // 淇敼鐘舵��
       changeStatus (status, row) {
         updateStatus({ id: row.id, status })
diff --git a/company/src/views/business/switchCourt.vue b/company/src/views/business/switchCourt.vue
index c329e25..d0e21ae 100644
--- a/company/src/views/business/switchCourt.vue
+++ b/company/src/views/business/switchCourt.vue
@@ -14,6 +14,12 @@
           <el-option label="宸插叧闂�" value="6"></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item label="鎶曚繚绫诲瀷" prop="solutionType">
+        <el-select v-model="searchForm.solutionType" placeholder="璇烽�夋嫨" @change="search">
+          <el-option label="鐩翠繚鎶曚繚" :value="0"></el-option>
+          <el-option label="濮旀墭鎶曚繚" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="鎶曚繚浼佷笟" prop="companyId">
         <el-select v-model="searchForm.companyId" filterable placeholder="璇烽�夋嫨" @change="search">
           <el-option
@@ -52,6 +58,9 @@
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
+      <ul class="toolbar">
+        <li><el-button type="primary" @click="$refs.chooseCompany.open('閫夋嫨浼佷笟')">鏂板</el-button></li>
+      </ul>
       <el-table
           v-loading="isWorking.search"
           :data="tableData.list"
@@ -70,6 +79,7 @@
             <span :class="'change-status'+ row.status" v-if="row.status === 3 || row.status === 4">閫�鍥炵敵璇�</span>
             <span :class="'change-status'+ row.status" v-if="row.status ===5 || row.status === 8">宸查��鍥�</span>
             <span :class="'change-status'+ row.status" v-if="row.status ===6">宸插叧闂�</span>
+            <span :class="'change-status'+ row.status" v-if="row.status ===9">鎵规敼鐢宠涓�</span>
           </template>
         </el-table-column>
         <el-table-column prop="companyName" label="鎶曚繚浼佷笟" min-width="150px" align="center"></el-table-column>
@@ -100,6 +110,10 @@
     </template>
     <!-- 璇︽儏 -->
     <OperaApplyChangeUnitDetailWindow ref="operaApplyChangeDetailWindow" @success="handlePageChange"/>
+    <!--    閫夋嫨浼佷笟    -->
+    <chooseCompany ref="chooseCompany" @submit="getCompany" />
+    <!--    閫夋嫨淇濆崟    -->
+    <selectPolicy ref="selectPolicy" @success="handlePageChange" />
   </TableLayout>
 </template>
 
@@ -110,10 +124,12 @@
 import OperaApplyChangeUnitDetailWindow from '@/components/business/OperaApplyChangeUnitDetailWindow'
 import {all as solutionAll, all} from '@/api/business/solutions'
 import {pageAll as companyAll} from "@/api/business/company";
+import chooseCompany from '@/components/common/chooseCompany'
+import selectPolicy from '@/components/business/selectPolicy'
 export default {
   name: 'switchCourt',
   extends: BaseTable,
-  components: { TableLayout, Pagination, OperaApplyChangeUnitDetailWindow },
+  components: { TableLayout, Pagination, OperaApplyChangeUnitDetailWindow, chooseCompany, selectPolicy },
   data () {
     return {
       // 鎼滅储
@@ -122,7 +138,7 @@
         type: '1',
         solutionsId: '',
         createDateE: '',
-        solutionType: 0,
+        solutionType: '',
         createDateS: '',
         baseSolutionsId: '',
         companyId: '',
@@ -143,6 +159,9 @@
     this.loadSelectList()
   },
   methods: {
+    getCompany(e) {
+      this.$refs.selectPolicy.open('閫夋嫨淇濆崟', e.companyId, 2)
+    },
     loadSelectList() {
       solutionAll({dataType:2,type:0}).then(res => {
         this.solutionList = res
diff --git a/company/src/views/business/unionApply.vue b/company/src/views/business/unionApply.vue
index 3944843..cf2521e 100644
--- a/company/src/views/business/unionApply.vue
+++ b/company/src/views/business/unionApply.vue
@@ -2,13 +2,15 @@
     <TableLayout :permissions="['business:insuranceapply:query']">
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="淇濆崟鐘舵��" prop="status" >
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨"  clearable   @keypress.enter.native="search">
+            <el-form-item label="淇濆崟鐘舵��" prop="queryStatus" >
+                <el-select v-model="searchForm.queryStatus" 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-option label="寰呯敓鏁�" value="5"></el-option>
+                    <el-option label="宸茶繃鏈�" value="6"></el-option>
                 </el-select>
             </el-form-item>
             <el-form-item label="淇濋櫓鏂规" prop="solutionId">
@@ -39,9 +41,9 @@
         </el-form>
         <!-- 琛ㄦ牸鍜屽垎椤� -->
         <template v-slot:table-wrap>
-            <ul class="toolbar"  v-if="userInfo.type==2"  v-permissions="['business:unionapply:create']">
-                <li><el-button type="primary" @click="$refs.OpearaUnionApply.open('濮旀墭鎶曚繚鐢宠')" v-permissions="['business:unionapply:create']">鎻愪氦鐢宠</el-button></li>
-            </ul>
+<!--            <ul class="toolbar"  v-if="userInfo.type==2"  v-permissions="['business:unionapply:create']">-->
+<!--                <li><el-button type="primary" @click="$refs.OpearaUnionApply.open('濮旀墭鎶曚繚鐢宠')" v-permissions="['business:unionapply:create']">鎻愪氦鐢宠</el-button></li>-->
+<!--            </ul>-->
             <el-table
                 v-loading="isWorking.search"
                 :data="tableData.list"
@@ -54,7 +56,11 @@
                 </el-table-column>
                 <el-table-column prop="statusInfo" label="鐘舵��" min-width="100px">
                     <template slot-scope="{row}">
-                        <span :class="'union-apply-status'+row.status"  >{{ row.statusInfo}}</span>
+                        <span v-if="row.status === 3 && row.statusInfo === '宸茶繃鏈�'" style="color: #999;">{{ row.statusInfo}}</span>
+                        <span v-else-if="row.status === 3 && row.statusInfo === '寰呯敓鏁�'" style="color: #f95601;">{{ row.statusInfo}}</span>
+                        <span v-else-if="row.status === 4 && row.statusInfo === '宸查��鍥�'" style="color: red;">{{ row.statusInfo}}</span>
+                        <span v-else-if="row.status === 5 && row.statusInfo === '寰呭鏍�'" style="color: #216EEE;">{{ row.statusInfo}}</span>
+                        <span :class="'union-apply-status'+row.status" v-else>{{ row.statusInfo}}</span>
                     </template>
                 </el-table-column>
                 <el-table-column prop="solutionName" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
@@ -106,7 +112,7 @@
                     queryStartTime: '',
                     queryEndTime: '',
                     solutionId: '',
-                    status: '',
+                    queryStatus: '',
                     time: []
                 },
                 solutionList: []
diff --git a/company/src/views/business/unionChange.vue b/company/src/views/business/unionChange.vue
index b06f1e6..3a5e242 100644
--- a/company/src/views/business/unionChange.vue
+++ b/company/src/views/business/unionChange.vue
@@ -31,9 +31,9 @@
         </el-form>
         <!-- 琛ㄦ牸鍜屽垎椤� -->
         <template v-slot:table-wrap>
-            <ul class="toolbar"  v-if="userInfo.type==2" v-permissions="['business:unionchange:create']">
-                <li><el-button type="primary" @click="$refs.OpearaUnionChange.open('鍔犲噺淇濈敵璇�')" v-permissions="['business:unionchange:create']">鎻愪氦鐢宠</el-button></li>
-            </ul>
+<!--            <ul class="toolbar"  v-if="userInfo.type==2 && " v-permissions="['business:unionchange:create']">-->
+<!--                <li><el-button type="primary" @click="$refs.OpearaUnionChange.open('鍔犲噺淇濈敵璇�')" v-permissions="['business:unionchange:create']">鎻愪氦鐢宠</el-button></li>-->
+<!--            </ul>-->
             <el-table
                 v-loading="isWorking.search"
                 :data="tableData.list"
@@ -49,7 +49,7 @@
                         <span :class="'union-change-status'+row.status" v-if="row.status === 0">寰呯缃�</span>
                         <span :class="'union-change-status'+row.status" v-if="row.status === 1">寰呭鏍�</span>
                         <span :class="'union-change-status'+row.status" v-if="row.status === 2">宸茬敓鏁�</span>
-                        <span :class="'union-change-status'+row.status" v-if="row.status === 3">宸查��鍥�</span>
+                        <span style="color: red;" v-if="row.status === 3">宸查��鍥�</span>
                     </template>
                 </el-table-column>
                  <el-table-column align="center" prop="applyCode" label="鍏宠仈淇濆崟鍙�" min-width="150px"></el-table-column>
diff --git a/company/src/views/business/unionChangeUnit.vue b/company/src/views/business/unionChangeUnit.vue
index cc0beb3..1b2b926 100644
--- a/company/src/views/business/unionChangeUnit.vue
+++ b/company/src/views/business/unionChangeUnit.vue
@@ -4,10 +4,10 @@
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
       <el-form-item label="淇濆崟鐘舵��" prop="status">
         <el-select v-model="searchForm.status" clearable  @change="search">
-          <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="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>
       <el-form-item label="淇濋櫓鏂规" prop="solutionName">
@@ -31,9 +31,9 @@
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
-      <ul class="toolbar"  v-if="userInfo.type==2" v-permissions="['business:unionchange:create']">
-        <li><el-button type="primary" @click="$refs.OpearaUnionChangeUnit.open('鏇存崲娲鹃仯鍗曚綅鐢宠')" v-permissions="['business:unionchange:create']">鎻愪氦鐢宠</el-button></li>
-      </ul>
+<!--      <ul class="toolbar"  v-if="userInfo.type==2" v-permissions="['business:unionchange:create']">-->
+<!--        <li><el-button type="primary" @click="$refs.OpearaUnionChangeUnit.open('鏇存崲娲鹃仯鍗曚綅鐢宠')" v-permissions="['business:unionchange:create']">鎻愪氦鐢宠</el-button></li>-->
+<!--      </ul>-->
       <el-table
           v-loading="isWorking.search"
           :data="tableData.list"
@@ -46,10 +46,10 @@
         </el-table-column>
          <el-table-column align="center" prop="status" label="淇濆崟鐘舵��" min-width="80px">
           <template slot-scope="{row}">
-            <span :class="'union-change-status'+row.status" v-if="row.status === 0">寰呯缃�</span>
-            <span :class="'union-change-status'+row.status" v-if="row.status === 1">寰呭鏍�</span>
-            <span :class="'union-change-status'+row.status" v-if="row.status === 2">宸茬敓鏁�</span>
-            <span :class="'union-change-status'+row.status" v-if="row.status === 3">宸查��鍥�</span>
+              <span :class="'union-change-status'+row.status" v-if="row.status === 0">寰呯缃�</span>
+              <span :class="'union-change-status'+row.status" v-if="row.status === 1">寰呭鏍�</span>
+              <span :class="'union-change-status'+row.status" v-if="row.status === 2">宸茬敓鏁�</span>
+              <span style="color: red;" v-if="row.status === 3">宸查��鍥�</span>
           </template>
         </el-table-column>
          <el-table-column align="center" prop="applyCode" label="鍏宠仈淇濆崟鍙�" min-width="150px"></el-table-column>
diff --git a/company/src/views/business/userManagement.vue b/company/src/views/business/userManagement.vue
new file mode 100644
index 0000000..f0d98fb
--- /dev/null
+++ b/company/src/views/business/userManagement.vue
@@ -0,0 +1,141 @@
+<template>
+    <TableLayout :permissions="['system:user:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
+            <el-form-item label="璐﹀彿" prop="username">
+                <el-input v-model="searchForm.username" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
+            </el-form-item>
+            <el-form-item label="濮撳悕" prop="realname">
+                <el-input v-model="searchForm.realname" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
+            </el-form-item>
+            <el-form-item label="鑱旂郴鏂瑰紡" prop="mobile">
+                <el-input v-model="searchForm.mobile" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
+            </el-form-item>
+            <el-form-item label="浼佷笟鍚嶇О" prop="companyName">
+                <el-input v-model="searchForm.companyName" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
+            </el-form-item>
+            <section>
+                <el-button type="primary" icon="el-icon-search" @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"
+                :default-sort = "{prop: 'createTime', order: 'descending'}"
+                stripe
+                @sort-change="handleSortChange"
+            >
+                <el-table-column label="搴忓彿" width="80px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="username" label="璐﹀彿" min-width="120px"></el-table-column>
+                <el-table-column prop="realname" label="濮撳悕" min-width="100px"></el-table-column>
+                <el-table-column prop="mobile" 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>{{row.authNum}}瀹�</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="鏄惁瓒呯" min-width="100px">
+                    <template slot-scope="{row}">
+                        <span v-if="row.isAdmin === '1'">鏄�</span>
+                        <span v-if="row.isAdmin === '0'">鍚�</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="鐘舵��" min-width="100px">
+                    <template slot-scope="{row}">
+                        <el-switch
+                            v-if="!row.fixed"
+                            @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
+                    label="鎿嶄綔"
+                    width="100"
+                    fixed="right"
+                >
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.authorizedEnterprise.open('鎺堟潈浼佷笟璁板綍', row.id)">鎺堟潈浼佷笟</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            ></pagination>
+        </template>
+        <authorizedEnterprise ref="authorizedEnterprise" />
+    </TableLayout>
+</template>
+
+<script>
+  import Pagination from '@/components/common/Pagination'
+  import TableLayout from '@/layouts/TableLayout'
+  import BaseTable from '@/components/base/BaseTable'
+  import { updUserStatus } from '@/api/system/user'
+  import authorizedEnterprise from '@/components/business/authorizedEnterprise'
+  export default {
+    name: 'userManagement',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, authorizedEnterprise },
+    data () {
+      return {
+        // 鎼滅储
+        searchForm: {
+          username: '',
+          realname: '',
+          mobile: '',
+          companyName: '',
+          type: 1
+        }
+      }
+    },
+    created () {
+      this.config({
+        module: '鐢ㄦ埛',
+        api: '/system/user',
+        'field.main': 'realname',
+        sorts: [{
+          property: 'CREATE_TIME',
+          direction: 'DESC'
+        }]
+      })
+      this.search()
+    },
+    methods: {
+      changeStatus(status, row) {
+        updUserStatus({
+          id: row.id,
+          status
+        }).then(res => {
+          this.search()
+        }).catch(err => {
+          row.status = row.status === 0 ? 1 : 0
+        })
+      }
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+    @import "@/assets/style/variables.scss";
+    // 鍒楄〃澶村儚澶勭悊
+    .table-column-avatar {
+        img {
+            width: 48px;
+        }
+    }
+</style>
diff --git a/company/src/views/enterprise/insuranceApply.vue b/company/src/views/enterprise/insuranceApply.vue
index 1013974..73fc0c6 100644
--- a/company/src/views/enterprise/insuranceApply.vue
+++ b/company/src/views/enterprise/insuranceApply.vue
@@ -3,16 +3,12 @@
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
             <el-form-item label="鐘舵��" prop="statusCollect">
-                <el-select v-model="searchForm.statusCollect" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option label="寰呭鏍�" value="0"></el-option>
-                    <el-option label="寰呭嚭鍗�" value="1"></el-option>
-                    <el-option label="寰呯缃�" value="7"></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="26"></el-option>
+                <el-select v-model="statusCollect" placeholder="璇烽�夋嫨" @change="changeStatus">
+                    <el-option
+                        v-for="(item, index) in status"
+                        :key="index"
+                        :label="item.label"
+                        :value="item.id" />
                 </el-select>
             </el-form-item>
             <el-form-item label="淇濋櫓鏂规" prop="baseSolutionId">
@@ -58,7 +54,12 @@
             </el-table-column>
             <el-table-column prop="statusInfo"   align="center"  fixed label="鐘舵��">
               <template slot-scope="{row}">
-                <span :class="'apply-status'+row.status" >{{row.statusInfo}}</span>
+                  <span style="color: #666;" v-if="[9,25,27,5].includes(row.status) && ['宸插叧闂�','宸茶繃鏈�'].includes(row.statusInfo)">{{row.statusInfo}}</span>
+                  <span style="color: red;" v-else-if="row.status === 4 && row.statusInfo === '宸查��鍥�'">{{ row.statusInfo}}</span>
+                  <span style="color: #f95601;" v-else-if="[5,27].includes(row.status) && row.statusInfo === '寰呯敓鏁�'">{{ row.statusInfo}}</span>
+                  <span style="color: #216EEE;" v-else-if="[12].includes(row.status) && row.statusInfo === '寰呭鏍�'">{{ row.statusInfo}}</span>
+                  <span :class="'apply-status'+row.status" v-else>{{row.statusInfo}}</span>
+<!--                <span :class="'apply-status'+row.status" >{{row.statusInfo}}</span>-->
               </template>
             </el-table-column>
             <el-table-column prop="solutionsName" fixed label="淇濋櫓鏂规" align="center" min-width="150"></el-table-column>
@@ -73,26 +74,31 @@
                 <span>{{row.code ? row.code : '-'}}</span>
               </template>
             </el-table-column>
-            <el-table-column prop="insureNum" align="center" label="鎶曚繚浜烘暟"  >
-              <template slot-scope="{row}">
-                <span>{{(row.insureNum||0)}} 浜�</span>
-              </template>
-            </el-table-column>
-            <el-table-column prop="guaranteeNum"  align="center" label="鍦ㄤ繚浜烘暟"  >
-              <template slot-scope="{row}">
-                <span>{{(row.guaranteeNum||0)}} 浜�</span>
-              </template>
-            </el-table-column>
+<!--            <el-table-column prop="insureNum" align="center" label="鎶曚繚浜烘暟"  >-->
+<!--              <template slot-scope="{row}">-->
+<!--                <span>{{(row.insureNum||0)}} 浜�</span>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
+              <el-table-column prop="guaranteeNum"  align="center" label="褰撳墠鍦ㄤ繚浜烘暟" width="120">
+                  <template slot-scope="{row}">
+                      <span>{{(row.guaranteeNum||0)}} 浜�</span>
+                  </template>
+              </el-table-column>
             <el-table-column label="鎶曚繚鏃堕暱">
               <template slot-scope="{row}">
                 <span>{{(row.serviceDays - row.loseEfficacyDays) < 0 ? `-` : (row.serviceDays - row.loseEfficacyDays+'澶�')}}</span>
               </template>
             </el-table-column>
-            <el-table-column prop="currentFee" label="宸蹭骇鐢熻垂鐢�"  align="center">
-              <template slot-scope="{row}">
-                <span>{{row.currentFee!=null?row.currentFee+' 鍏�': '-'}}</span>
-              </template>
-            </el-table-column>
+<!--            <el-table-column prop="currentFee" label="宸蹭骇鐢熻垂鐢�"  align="center">-->
+<!--              <template slot-scope="{row}">-->
+<!--                <span>{{row.currentFee!=null?row.currentFee+' 鍏�': '-'}}</span>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
+              <el-table-column prop="fee" label="鎵规敼璐圭敤鍚堣"  align="center" width="120">
+                  <template slot-scope="{row}">
+                      <span>{{row.changeMoney+' 鍏�'}}</span>
+                  </template>
+              </el-table-column>
             <el-table-column prop="fee" label="鎬昏垂鐢�"  align="center">
               <template slot-scope="{row}">
                 <span>{{row.fee!=null?row.fee+' 鍏�': '-'}}</span>
@@ -110,10 +116,10 @@
             >
               <template slot-scope="{row}">
                 <el-button type="text" @click="godetail(row)" v-permissions="['business:insuranceapply:update']">鏌ョ湅璇︽儏</el-button>
-                <!--     <el-button type="text" @click="$refs.OperaApplyChangeMonthWindow.open('鍔犲噺淇濇湀搴﹁垂鐢ㄧ粺璁�',row)" v-permissions="['business:applychange:query']">鍔犲噺淇濊垂鐢�</el-button>
-                                 <template v-if="row.statusCollect === 2">-->
-                <!--                            <el-button type="text" @click="$refs.additionSubtractionApplication.open('鍔犲噺淇濈敵璇�', { id: row.id })">鍔犲噺淇濈敵璇�</el-button>-->
-                <!--                        </template>-->
+<!--                <el-button type="text" @click="$refs.OperaApplyChangeMonthWindow.open('鍔犲噺淇濇湀搴﹁垂鐢ㄧ粺璁�',row)" v-permissions="['business:applychange:query']">鍔犲噺淇濊垂鐢�</el-button>-->
+                <template v-if="isShow(row.status, row.endTime)">
+                    <el-button type="text" @click="$refs.additionSubtractionApplication.open('鍔犲噺淇濈敵璇�', { id: row.id })">鍔犲噺淇濈敵璇�</el-button>
+                </template>
               </template>
             </el-table-column>
           </el-table>
@@ -132,6 +138,8 @@
         <OperaWtbApplyShopWindow ref="OperaWtbApplyShopWindow" @success="handlePageChange" />
         <!--    鎶曚繚璇︽儏    -->
         <OperaInsuranceApplyDetails ref="OperaInsuranceApplyDetails" @success="handlePageChange" />
+        <!--    鍔犲噺淇濈敵璇�    -->
+        <additionSubtractionApplication ref="additionSubtractionApplication" @success="handlePageChange" />
     </TableLayout>
 </template>
 <script>
@@ -141,6 +149,7 @@
 import OperaInsuranceApplyAddWindow from '@/components/enterprise/OperaInsuranceApplyAddWindow'
 import OperaInsuranceApplyDetails from '@/components/business/OperaInsuranceApplyWindow'
 import OperaWtbApplyShopWindow from '@/components/business/OperaWtbApplyShopWindow'
+import additionSubtractionApplication from '@/components/enterprise/additionSubtractionApplication'
 import OperaApplyChangeMonthWindow from '@/components/business/OperaApplyChangeMonthWindow'
 
 import { all as solutionAll } from '@/api/business/solutions'
@@ -149,7 +158,7 @@
   extends: BaseTable,
   components: { TableLayout, Pagination,
     // OperaApplyChangeMonthWindow,
-    OperaInsuranceApplyAddWindow, OperaInsuranceApplyDetails,OperaWtbApplyShopWindow },
+    OperaInsuranceApplyAddWindow, OperaInsuranceApplyDetails,OperaWtbApplyShopWindow, additionSubtractionApplication },
   data () {
     return {
       // 鎼滅储
@@ -157,9 +166,23 @@
         createTimeS: '',
         createTimeE: '',
         baseSolutionId: '',
-        statusCollect: ''
+        statusCollect: '',
+        timeOut: ''
       },
-      solutionList: []
+      statusCollect: '',
+      solutionList: [],
+      status: [
+        { label: '寰呭鏍�', id: '0' },
+        { label: '寰呭嚭鍗�', id: '1' },
+        { label: '鎶曚繚涓�', id: '26' },
+        { label: '寰呯缃�', id: '7' },
+        { label: '寰呯敓鏁�', id: '2,0' },
+        { label: '淇濋殰涓�', id: '2,1' },
+        { label: '宸茶繃鏈�', id: '2,2' },
+        { label: '宸查��鍥�', id: '4' },
+        { label: '閫�鍥炵敵璇蜂腑', id: '5' },
+        { label: '宸插叧闂�', id: '6' },
+      ]
     }
   },
   created () {
@@ -173,14 +196,32 @@
     this.loadSelectList()
   },
   methods: {
+    // 鍒ゆ柇鏄惁鏄剧ず鍔犲噺淇�
+    isShow(status, endTime) {
+      const currentDate = new Date();
+      const specifiedDate = new Date(endTime);
+      return [5,27].includes(status) && (currentDate < specifiedDate);
+    },
+    changeStatus(e) {
+      if (e.indexOf(',') !== -1) {
+        this.searchForm.timeOut = e.split(',')[1]
+        this.searchForm.statusCollect = e.split(',')[0]
+      } else {
+        this.searchForm.timeOut = ''
+        this.searchForm.statusCollect = e
+      }
+      this.search()
+    },
       reset() {
-          this.searchForm.createTimeS = ''
-          this.searchForm.createTimeE = ''
-          this.$refs.searchForm.resetFields()
-          this.search()
+        this.searchForm.createTimeS = ''
+        this.searchForm.timeOut = ''
+        this.searchForm.createTimeE = ''
+        this.statusCollect = ''
+        this.searchForm.statusCollect = ''
+        this.$refs.searchForm.resetFields()
+        this.search()
       },
     result(flag,param){
-      console.log(flag,param)
       if(param && param.godetail && param.id){
         if (param.type == 1) {
           this.$refs.OperaWtbApplyShopWindow.open('濮旀墭鎶曚繚璇︽儏', { id: param.id })
diff --git a/company/src/views/enterprise/myPolicy.vue b/company/src/views/enterprise/myPolicy.vue
index b711b90..19f8a23 100644
--- a/company/src/views/enterprise/myPolicy.vue
+++ b/company/src/views/enterprise/myPolicy.vue
@@ -23,7 +23,7 @@
             </el-form-item>
             <el-form-item label="鐘舵��" prop="timeOut">
                 <el-select v-model="searchForm.timeOut" placeholder="璇烽�夋嫨" @change="search">
-                    <el-option label="鏈紑濮�" value="0"></el-option>
+                    <el-option label="寰呯敓鏁�" value="0"></el-option>
                     <el-option label="淇濋殰涓�" value="1"></el-option>
                     <el-option label="宸茶繃鏈�" value="2"></el-option>
                 </el-select>
@@ -156,7 +156,7 @@
                         <el-button type="text" @click="godetail(row)" v-permissions="['business:insuranceapply:update']">鏌ョ湅璇︽儏</el-button>
                       <!--                        <el-button type="text" @click="$refs.OperaApplyChangeMonthWindow.open('鍔犲噺淇濇湀搴﹁垂鐢ㄧ粺璁�',row)" v-permissions="['business:applychange:query']">鍔犲噺淇濊垂鐢�</el-button>
                                           <template v-if="row.statusCollect === 2">-->
-                        <el-button type="text" @click="$refs.additionSubtractionApplication.open('鍔犲噺淇濈敵璇�', { id: row.id })">鍔犲噺淇濈敵璇�</el-button>
+                        <el-button type="text" @click="$refs.additionSubtractionApplication.open('鍔犲噺淇濈敵璇�', { id: row.id })" v-if="isShow(row.status, row.endTime)">鍔犲噺淇濈敵璇�</el-button>
 <!--                        </template>-->
                     </template>
                 </el-table-column>
@@ -241,6 +241,12 @@
     this.getNum()
   },
   methods: {
+    // 鍒ゆ柇鏄惁鏄剧ず鍔犲噺淇�
+    isShow(status, endTime) {
+      const currentDate = new Date();
+      const specifiedDate = new Date(endTime);
+      return [5,27].includes(status) && (currentDate < specifiedDate);
+    },
     godetail (row) {
       if (row.solutionType == 1) {
         this.$refs.OperaWtbApplyShopWindow.open('濮旀墭鎶曚繚璇︽儏', { id: row.id })
diff --git a/company/src/views/index.vue b/company/src/views/index.vue
index ff4cb7f..86ba11f 100644
--- a/company/src/views/index.vue
+++ b/company/src/views/index.vue
@@ -123,10 +123,105 @@
             </el-pagination>
           </div>
         </div>
+
+        <div v-if="activeName === '6'">
+          <div class="home_content_right_list" v-if="tableData6 && tableData6.length">
+            <div class="list_item" v-for="(item, index) in tableData6" :key="index">
+              <div class="list_item_left">
+                <span>{{item.title}}锛坽{ item.typeDetail }}锛�</span>
+                <span>{{item.info}}锛坽{item.content}}锛�</span>
+              </div>
+              <div class="list_item_center">
+                <span>{{item.companyName}}</span>
+                <span>鎻愪氦鏃堕棿  {{item.createDate}}</span>
+              </div>
+              <div class="list_item_right">
+                <span @click="jump('/business/contract')">鏌ョ湅</span>
+              </div>
+            </div>
+          </div>
+          <div class="home_content_right_list" v-else>
+            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
+              鏆傛棤娑堟伅
+            </div>
+          </div>
+          <div class="home_content_right_page">
+            <el-pagination
+              @current-change="handleCurrentChange6"
+              :current-page="page6"
+              :page-size="5"
+              layout="total, prev, pager, next, jumper"
+              :total="totalPage6">
+            </el-pagination>
+          </div>
+        </div>
+        <div v-if="activeName === '7'">
+          <div class="home_content_right_list" v-if="tableData7 && tableData7.length">
+            <div class="list_item" v-for="(item, index) in tableData7" :key="index">
+              <div class="list_item_left">
+                <span>{{item.title}}锛坽{ item.typeDetail }}锛�</span>
+                <span>{{item.info}}锛坽{item.content}}锛�</span>
+              </div>
+              <div class="list_item_center">
+                <span>{{item.companyName}}</span>
+                <span>鎻愪氦鏃堕棿  {{item.createDate}}</span>
+              </div>
+              <div class="list_item_right">
+                <span @click="jump('/business/solutions')">鏌ョ湅</span>
+              </div>
+            </div>
+          </div>
+          <div class="home_content_right_list" v-else>
+            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
+              鏆傛棤娑堟伅
+            </div>
+          </div>
+          <div class="home_content_right_page">
+            <el-pagination
+              @current-change="handleCurrentChange2"
+              :current-page="page7"
+              :page-size="5"
+              layout="total, prev, pager, next, jumper"
+              :total="totalPage7">
+            </el-pagination>
+          </div>
+        </div>
+        <div v-if="activeName === '8'">
+          <div class="home_content_right_list" v-if="tableData8 && tableData8.length">
+            <div class="list_item" v-for="(item, index) in tableData8" :key="index">
+              <div class="list_item_left">
+                <span>{{item.title}}锛堝緟瀹℃牳锛�</span>
+                <span>{{item.info}}锛坽{item.content}}锛�</span>
+              </div>
+              <div class="list_item_center">
+                <span>{{item.companyName}}</span>
+                <span>鎻愪氦鏃堕棿  {{item.createDate}}</span>
+              </div>
+              <div class="list_item_right">
+                <span @click="jump('/business/companyUserApply')">鏌ョ湅</span>
+              </div>
+            </div>
+          </div>
+          <div class="home_content_right_list" v-else>
+            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
+              鏆傛棤娑堟伅
+            </div>
+          </div>
+          <div class="home_content_right_page">
+            <el-pagination
+              @current-change="handleCurrentChange2"
+              :current-page="page7"
+              :page-size="5"
+              layout="total, prev, pager, next, jumper"
+              :total="totalPage7">
+            </el-pagination>
+          </div>
+        </div>
+
       </div>
     </div>
     <OperaInsuranceApplyWindow ref="operaInsuranceApplyWindow" @success="handleCurrentChange0()"/>
-    <OperaWtbApplyShopWindow ref="OperaWtbApplyShopWindow" @success="handleCurrentChange0()"/>
+    <OperaWtbApplyShopWindow ref="OperaWatbApplyShopWindow" @success="handleCurrentChange0()"/>
     <dispatchUnitDetailsPlat ref="dispatchUnitDetailsPlat" @success="handleCurrentChange0()"/>
     <OperaSettleClaimsWindow ref="operaSettleClaimsWindow" @success="handleCurrentChange2()"/>
     <OperaApplyChangeUnitDetailWindow ref="operaApplyChangeUnitDetailWindow" @success="handleCurrentChange0()"/>
@@ -165,12 +260,21 @@
       page0: 1,
       page1: 1,
       page2: 1,
+      page6: 1,
+      page7: 1,
+      page8: 1,
+      totalPage8: 0,
+      totalPage7: 0,
+      totalPage6: 0,
       totalPage2: 0,
       totalPage1: 0,
       totalPage0: 0,
       tableData0: [],
       tableData1: [],
       tableData2: [],
+      tableData6: [],
+      tableData7: [],
+      tableData8: [],
       cate: [
         {
           name: '鎶曚繚鐢宠',
@@ -317,9 +421,22 @@
           if (type === 1) {
             this.tableData1 = response.records
             this.totalPage1 = response.total
-          } if (type === 2) {
+          }
+          if (type === 2) {
             this.tableData2 = response.records
             this.totalPage2 = response.total
+          }
+          if (type === 6) {
+            this.tableData6 = response.records
+            this.totalPage6 = response.total
+          }
+          if (type === 7) {
+            this.tableData7 = response.records
+            this.totalPage7 = response.total
+          }
+          if (type === 8) {
+            this.tableData8 = response.records
+            this.totalPage8 = response.total
           }
         })
         .catch(e => {
@@ -341,10 +458,12 @@
         this.tabs.push({ name: '2', label: '鐞嗚禂鎻愰啋' })
         // this.handleCurrentChange2(0);
       }
-      //鏂板鍒嗙被
-      if (pemissons.includes('business:notice:settle')) {
-        this.tabs.push({ name: '3', label: '鍚堝悓绛剧讲鎻愰啋' })
-        // this.handleCurrentChange2(0);
+      if (this.userInfo.type === 1) {
+        this.tabs.push({ name: '7', label: '鏂规绛剧讲鎻愰啋' })
+      }
+      this.tabs.push({ name: '6', label: '鍚堝悓绛剧讲鎻愰啋' })
+      if (this.userInfo.type === 0) {
+        this.tabs.push({ name: '8', label: '闆嗗洟鐢宠鎻愰啋' })
       }
       /* if (pemissons.includes('business:notice:insurance')) {
         this.getNoticeList(0, this.page0)
@@ -364,6 +483,12 @@
         this.handleCurrentChange1(0)
       } else if (this.activeName === '2') {
         this.handleCurrentChange2(0)
+      } else if (this.activeName === '6') {
+        this.handleCurrentChange6(0)
+      } else if (this.activeName === '7') {
+        this.handleCurrentChange7(0)
+      } else if (this.activeName === '8') {
+        this.handleCurrentChange8(0)
       }
     },
     handleCurrentChange0 (page) {
@@ -378,6 +503,18 @@
       this.page2 = page
       this.getNoticeList(2, this.page2)
     },
+    handleCurrentChange6 (page) {
+      this.page6 = page
+      this.getNoticeList(6, this.page6)
+    },
+    handleCurrentChange7 (page) {
+      this.page7 = page
+      this.getNoticeList(7, this.page7)
+    },
+    handleCurrentChange8 (page) {
+      this.page8 = page
+      this.getNoticeList(8, this.page8)
+    },
     jump (url) {
       if (!url) return
       this.$router.push({ path: url })
diff --git a/company/src/views/indexShop.vue b/company/src/views/indexShop.vue
index ce5e346..62d3e57 100644
--- a/company/src/views/indexShop.vue
+++ b/company/src/views/indexShop.vue
@@ -86,6 +86,39 @@
             </el-pagination>
           </div>
         </div>
+
+        <div v-if="activeName === '6'"  >
+          <div class="home_content_right_list" v-if="tableData6&&tableData6.length">
+            <div class="list_item"  v-for="(item, index) in tableData6" :key="index">
+              <div class="list_item_left">
+                <span>{{item.title}}锛坽{ item.typeDetail }}锛�</span>
+                <span>{{item.info}}锛坽{item.content}}锛�</span>
+              </div>
+              <div class="list_item_center">
+                <span>{{item.companyName}}</span>
+                <span>鎻愪氦鏃堕棿  {{item.createDate}}</span>
+              </div>
+              <div class="list_item_right">
+                <span @click="jump('/business/contract')">鏌ョ湅</span>
+              </div>
+            </div>
+          </div>
+          <div class="home_content_right_list" v-else>
+            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
+              鏆傛棤娑堟伅
+            </div>
+          </div>
+          <div class="home_content_right_page">
+            <el-pagination
+              @current-change="handleCurrentChange1"
+              :current-page="page1"
+              :page-size="5"
+              layout="total, prev, pager, next, jumper"
+              :total="totalPage1">
+            </el-pagination>
+          </div>
+        </div>
+
       </div>
     </div>
     <OperaInsuranceApplyWindow ref="operaInsuranceApplyWindow" @success="handleCurrentChange0()"/>
@@ -118,12 +151,15 @@
       page0: 1,
       page1: 1,
       page2: 1,
+      page6: 1,
+      totalPage6: 0,
       totalPage2: 0,
       totalPage1: 0,
       totalPage0: 0,
       tableData0: [],
       tableData1: [],
       tableData2: [],
+      tableData6: [],
       cate: [
         {
           name: '鎶曚繚鐢宠瀹℃牳',
@@ -201,6 +237,7 @@
     initLoadData () {
         this.handleCurrentChange0(0)
         this.handleCurrentChange1(0)
+        this.handleCurrentChange6(0)
     },
     getNoticeList (type, page) {
       noticeList({
@@ -218,6 +255,10 @@
             this.tableData1 = response.records
             this.totalPage1 = response.total
           }
+          if (type === 6) {
+            this.tableData6 = response.records
+            this.totalPage6 = response.total
+          }
         })
         .catch(e => {
           this.$tip.apiFailed(e)
@@ -226,6 +267,7 @@
     initPanel () {
       this.tabs.push({ name: '0', label: '鐩存帴鎶曚繚寰呭姙' })
       this.tabs.push({ name: '1', label: '濮旀墭鎶曚繚寰呭姙' })
+      this.tabs.push({ name: '6', label: '鍚堝悓绛剧讲鎻愰啋' })
     },
     handleClick (e) {
       this.activeName = e.name
@@ -233,6 +275,8 @@
         this.handleCurrentChange0(0)
       } else if (this.activeName === '1') {
         this.handleCurrentChange1(0)
+      } else if (this.activeName === '6') {
+        this.handleCurrentChange6(0)
       }
     },
     handleCurrentChange0 (page) {
@@ -243,6 +287,10 @@
       this.page1 = page
       this.getNoticeList(4, this.page1)
     },
+    handleCurrentChange6 (page) {
+      this.page6 = page
+      this.getNoticeList(6, this.page6)
+    },
     jump (url) {
       if (!url) return
       this.$router.push({ path: url })
diff --git a/company/src/views/system/role.vue b/company/src/views/system/role.vue
index 45cab31..579e7ca 100644
--- a/company/src/views/system/role.vue
+++ b/company/src/views/system/role.vue
@@ -42,12 +42,12 @@
         <el-table-column
           v-if="containPermissions(['system:role:update', 'system:role:createRolePermission', 'system:role:createRoleMenu', 'system:role:delete'])"
           label="鎿嶄綔"
-          min-width="270"
+          min-width="260"
           fixed="right"
         >
-<!--          v-if="isAdmin || (row.code !== adminCode && userInfo.roles.findIndex(code => code === row.code) === -1)"-->
           <template slot-scope="{row}">
             <el-button type="text" @click="$refs.operaRoleWindow.open('缂栬緫瑙掕壊', row)" icon="el-icon-edit" v-permissions="['system:role:update']">缂栬緫</el-button>
+<!--            <el-button type="text" @click="openRole(row.systemDataPermission, row.id)">鏁版嵁鏉冮檺</el-button>-->
             <el-button type="text" @click="$refs.permissionConfigWindow.open(row)" v-permissions="['system:role:createRolePermission']">閰嶇疆鏉冮檺</el-button>
             <el-button type="text" @click="$refs.menuConfigWindow.open(row)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">鎺堟潈鑿滃崟</el-button>
             <el-button v-if="!row.fixed" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:role:delete']">鍒犻櫎</el-button>
@@ -66,6 +66,8 @@
     <PermissionConfigWindow ref="permissionConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
     <!-- 鎺堟潈鑿滃崟 -->
     <MenuConfigWindow ref="menuConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+    <!--  鏁版嵁鏉冮檺  -->
+    <Permissions ref="permissions" @success="handlePageChange(tableData.pagination.pageIndex)"/>
   </TableLayout>
 </template>
 
@@ -76,10 +78,11 @@
 import OperaRoleWindow from '@/components/system/role/OperaRoleWindow'
 import PermissionConfigWindow from '@/components/system/role/PermissionConfigWindow'
 import MenuConfigWindow from '@/components/system/role/MenuConfigWindow'
+import Permissions from '@/components/system/role/Permissions'
 export default {
   name: 'SystemRole',
   extends: BaseTable,
-  components: { MenuConfigWindow, PermissionConfigWindow, OperaRoleWindow, TableLayout, Pagination },
+  components: { MenuConfigWindow, PermissionConfigWindow, OperaRoleWindow, TableLayout, Pagination, Permissions },
   data () {
     return {
       // 鎼滅储
@@ -100,6 +103,19 @@
       }]
     })
     this.search()
+  },
+  methods: {
+    openRole(row, id) {
+      if (row) {
+        let customData = []
+        row.customData.split(',').forEach(item => {
+          customData.push([item])
+        })
+        this.$refs.permissions.open('鏁版嵁鏉冮檺', { ...row, customData })
+      } else {
+        this.$refs.permissions.open('鏁版嵁鏉冮檺', { roleId: id, customData: [] })
+      }
+    }
   }
 }
 </script>
diff --git a/company/src/views/system/user.vue b/company/src/views/system/user.vue
index e43e158..26bceaf 100644
--- a/company/src/views/system/user.vue
+++ b/company/src/views/system/user.vue
@@ -1,163 +1,180 @@
 <template>
-  <TableLayout :permissions="['system:user:query']">
-    <!-- 鎼滅储琛ㄥ崟 -->
-    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
-<!--      <el-form-item label="鐢ㄦ埛鍚�" prop="username">-->
-<!--        <el-input v-model="searchForm.username" v-trim placeholder="璇疯緭鍏ョ敤鎴峰悕" @keypress.enter.native="search"/>-->
-<!--      </el-form-item>-->
-      <el-form-item label="濮撳悕" prop="realname">
-        <el-input v-model="searchForm.realname" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
-      </el-form-item>
-<!--      <el-form-item label="鎵嬫満鍙风爜" prop="mobile">-->
-<!--        <el-input v-model="searchForm.mobile" v-trim placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" @keypress.enter.native="search"/>-->
-<!--      </el-form-item>-->
-<!--            <el-form-item label="鎵�灞為儴闂�" prop="rootDeptId">-->
-<!--        <DepartmentSelect v-model="searchForm.rootDeptId" placeholder="璇烽�夋嫨鎵�灞為儴闂�" clearable/>-->
-<!--      </el-form-item>-->
-<!--      <el-form-item label="宀椾綅" prop="positionId">-->
-<!--        <PositionSelect v-model="searchForm.positionId" placeholder="璇烽�夋嫨宀椾綅" clearable/>-->
-<!--      </el-form-item>-->
-      <section>
-        <el-button type="primary" icon="el-icon-search" @click="search">鎼滅储</el-button>
-        <el-button @click="reset">閲嶇疆</el-button>
-      </section>
-    </el-form>
-    <!-- 琛ㄦ牸鍜屽垎椤� -->
-    <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']">
-        <li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('鏂板璐﹀彿')">鏂板璐﹀彿</el-button></li>
-<!--        <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li>-->
-      </ul>
-<!--      @selection-change="handleSelectionChange"-->
-      <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        :default-sort = "{prop: 'createTime', order: 'descending'}"
-        stripe
-        @sort-change="handleSortChange"
-      >
-        <el-table-column label="搴忓彿" width="80px">
-          <template slot-scope="scope">
-            <span>{{scope.$index + 1}}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="username" label="璐﹀彿" min-width="120px"></el-table-column>
-        <el-table-column prop="realname" label="濮撳悕" min-width="100px"></el-table-column>
-        <el-table-column prop="mobile" label="鑱旂郴鏂瑰紡" min-width="100px"></el-table-column>
-        <el-table-column prop="roles" label="瑙掕壊" min-width="160px" class-name="table-column-strings">
-          <template slot-scope="{row}">
-            <ul>
-              <li v-for="role in row.roles" :key="role.id">{{role.name}}</li>
-            </ul>
-          </template>
-        </el-table-column>
-        <el-table-column label="鍚敤鐘舵��" min-width="100px">
-          <template slot-scope="{row}">
-            <el-switch
-              v-if="!row.fixed"
-              @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(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])"
-          label="鎿嶄綔"
-          width="270"
-          fixed="right"
-        >
-<!--          row.id !== userInfo.id &&-->
-          <template v-if="isAdmin || (row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}">
-            <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('缂栬緫鐢ㄦ埛', row)" v-permissions="['system:user:update']">缂栬緫</el-button>
-            <el-button type="text" @click="$refs.allocationEnterprises.open('鍒嗛厤浼佷笟', row)" v-if="userInfo.type !== 1">鍒嗛厤浼佷笟</el-button>
-            <el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">閰嶇疆瑙掕壊</el-button>
-            <el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">閲嶇疆瀵嗙爜</el-button>
-<!--            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>-->
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        @size-change="handleSizeChange"
-        @current-change="handlePageChange"
-        :pagination="tableData.pagination"
-      ></pagination>
-    </template>
-    <!-- 鏂板缓/淇敼 -->
-    <OperaUserWindow ref="operaUserWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
-    <!-- 閰嶇疆瑙掕壊 -->
-    <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
-    <!-- 閲嶇疆瀵嗙爜 -->
-    <ResetPwdWindow ref="resetPwdWindow"/>
-    <!--  鍒嗛厤浼佷笟  -->
-    <allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/>
-  </TableLayout>
+	<TableLayout :permissions="['system:user:query']">
+		<!-- 鎼滅储琛ㄥ崟 -->
+		<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
+			<el-form-item label="濮撳悕" prop="realname">
+				<el-input v-model="searchForm.realname" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
+			</el-form-item>
+			<el-form-item label="鎵�灞為儴闂�" prop="companyDepartmentPathName">
+				<el-input v-model="searchForm.companyDepartmentPathName" v-trim placeholder="璇疯緭鍏�" @keypress.enter.native="search"/>
+			</el-form-item>
+			<section>
+				<el-button type="primary" icon="el-icon-search" @click="search">鎼滅储</el-button>
+				<el-button @click="reset">閲嶇疆</el-button>
+			</section>
+		</el-form>
+		<!-- 琛ㄦ牸鍜屽垎椤� -->
+		<template v-slot:table-wrap>
+			<ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']">
+				<li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('鏂板璐﹀彿')">鏂板璐﹀彿</el-button></li>
+				<!--        <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li>-->
+			</ul>
+			<!--      @selection-change="handleSelectionChange"-->
+			<el-table
+					v-loading="isWorking.search"
+					:data="tableData.list"
+					:default-sort = "{prop: 'createTime', order: 'descending'}"
+					stripe
+					@sort-change="handleSortChange"
+			>
+				<el-table-column label="搴忓彿" width="80px">
+					<template slot-scope="scope">
+						<span>{{scope.$index + 1}}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="username" label="璐﹀彿" min-width="120px"></el-table-column>
+				<el-table-column prop="realname" label="濮撳悕" min-width="100px"></el-table-column>
+				<el-table-column prop="mobile" label="鑱旂郴鏂瑰紡" min-width="100px"></el-table-column>
+				<el-table-column label="涓荤" min-width="100px">
+					<template slot-scope="{ row }">
+						<el-switch
+								v-model="row.headStatus"
+								@change="setHeadStatus($event, row)"
+								active-color="#13ce66"
+								inactive-color="#ff4949"
+								:active-value="1"
+								:inactive-value="0">
+						</el-switch>
+					</template>
+				</el-table-column>
+				<el-table-column prop="companyDepartmentPathName" label="鎵�鍦ㄩ儴闂�" min-width="100px"></el-table-column>
+				<el-table-column prop="roles" label="瑙掕壊" min-width="160px" class-name="table-column-strings">
+					<template slot-scope="{row}">
+						<ul>
+							<li v-for="role in row.roles" :key="role.id">{{role.name}}</li>
+						</ul>
+					</template>
+				</el-table-column>
+				<el-table-column label="鍚敤鐘舵��" min-width="100px">
+					<template slot-scope="{row}">
+						<el-switch
+								v-if="!row.fixed"
+								@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(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])"
+						label="鎿嶄綔"
+						width="270"
+						fixed="right"
+				>
+					<!--          row.id !== userInfo.id &&-->
+					<template v-if="isAdmin || (row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}">
+						<el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('缂栬緫鐢ㄦ埛', {...row, departmentId: row.companyDepartmentPathId ? row.companyDepartmentPathId.substring(0, row.companyDepartmentPathId.length - 1).split('/').map(val => +val) : '' })" v-permissions="['system:user:update']">缂栬緫</el-button>
+						<el-button type="text" @click="$refs.allocationEnterprises.open('鍒嗛厤浼佷笟', row)" v-if="[0,2].includes(userInfo.type)">鍒嗛厤浼佷笟</el-button>
+						<el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">閰嶇疆瑙掕壊</el-button>
+						<el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">閲嶇疆瀵嗙爜</el-button>
+						<!--            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>-->
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination
+					@size-change="handleSizeChange"
+					@current-change="handlePageChange"
+					:pagination="tableData.pagination"
+			></pagination>
+		</template>
+		<!-- 鏂板缓/淇敼 -->
+		<OperaUserWindow ref="operaUserWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+		<!-- 閰嶇疆瑙掕壊 -->
+		<RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+		<!-- 閲嶇疆瀵嗙爜 -->
+		<ResetPwdWindow ref="resetPwdWindow"/>
+		<!--  鍒嗛厤浼佷笟  -->
+		<allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/>
+	</TableLayout>
 </template>
 
 <script>
-import Pagination from '@/components/common/Pagination'
-import TableLayout from '@/layouts/TableLayout'
-import BaseTable from '@/components/base/BaseTable'
-import OperaUserWindow from '@/components/system/user/OperaUserWindow'
-import allocationEnterprises from '@/components/system/user/allocationEnterprises'
-import RoleConfigWindow from '@/components/system/user/RoleConfigWindow'
-import ResetPwdWindow from '@/components/system/user/ResetPwdWindow'
-import DepartmentSelect from '@/components/common/DepartmentSelect'
-import PositionSelect from '@/components/common/PositionSelect'
-import { updUserStatus } from '@/api/system/user'
-
-export default {
-  name: 'SystemUser',
-  extends: BaseTable,
-  components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination },
-  data () {
-    return {
-      // 鎼滅储
-      searchForm: {
-        username: '', // 鍚嶅瓧
-        realname: '', // 濮撳悕
-        rootDeptId: null, // 閮ㄩ棬ID
-        positionId: null, // 宀椾綅ID
-        mobile: '' // 鎵嬫満鍙风爜
+  import Pagination from '@/components/common/Pagination'
+  import TableLayout from '@/layouts/TableLayout'
+  import BaseTable from '@/components/base/BaseTable'
+  import OperaUserWindow from '@/components/system/user/OperaUserWindow'
+  import allocationEnterprises from '@/components/system/user/allocationEnterprises'
+  import RoleConfigWindow from '@/components/system/user/RoleConfigWindow'
+  import ResetPwdWindow from '@/components/system/user/ResetPwdWindow'
+  import DepartmentSelect from '@/components/common/DepartmentSelect'
+  import PositionSelect from '@/components/common/PositionSelect'
+  import { updUserStatus, updateHead } from '@/api/system/user'
+  import { mapState } from 'vuex'
+  export default {
+    name: 'SystemUser',
+    extends: BaseTable,
+    computed: {
+      ...mapState(['userInfo'])
+    },
+    components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination },
+    data () {
+      return {
+        // 鎼滅储
+        searchForm: {
+          username: '', // 鍚嶅瓧
+          realname: '', // 濮撳悕
+          rootDeptId: null, // 閮ㄩ棬ID
+          positionId: null, // 宀椾綅ID
+          mobile: '', // 鎵嬫満鍙风爜
+          type: '',
+          companyDepartmentPathName: ''   // 閮ㄩ棬鍚嶇О
+        }
+      }
+    },
+    created () {
+      this.config({
+        module: '鐢ㄦ埛',
+        api: '/system/user',
+        'field.main': 'realname',
+        sorts: [{
+          property: 'CREATE_TIME',
+          direction: 'DESC'
+        }]
+      })
+      this.searchForm.type = this.userInfo.type
+      this.search()
+    },
+    methods: {
+      // 璁剧疆鍙栨秷涓荤
+      setHeadStatus(e, row) {
+        updateHead({ id: row.id, headStatus: row.headStatus })
+          .then(res => {
+            this.search()
+          })
+      },
+      changeStatus(status, row) {
+        updUserStatus({
+          id: row.id,
+          status
+        }).then(res => {
+          this.search()
+        }).catch(err => {
+          row.status = row.status === 0 ? 1 : 0
+        })
       }
     }
-  },
-  created () {
-    this.config({
-      module: '鐢ㄦ埛',
-      api: '/system/user',
-      'field.main': 'realname',
-      sorts: [{
-        property: 'CREATE_TIME',
-        direction: 'DESC'
-      }]
-    })
-    this.search()
-  },
-  methods: {
-    changeStatus(status, row) {
-      updUserStatus({
-        id: row.id,
-        status
-      }).then(res => {
-        this.search()
-      }).catch(err => {
-        row.status = row.status === 0 ? 1 : 0
-      })
-    }
   }
-}
 </script>
 
 <style scoped lang="scss">
-@import "@/assets/style/variables.scss";
-// 鍒楄〃澶村儚澶勭悊
-.table-column-avatar {
-  img {
-    width: 48px;
-  }
-}
+	@import "@/assets/style/variables.scss";
+	// 鍒楄〃澶村儚澶勭悊
+	.table-column-avatar {
+		img {
+			width: 48px;
+		}
+	}
 </style>

--
Gitblit v1.9.3