From 2d50c51214f0ced8c992a415c72ea33b519fff59 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Fri, 03 Sep 2021 15:53:05 +0800
Subject: [PATCH] Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/zhba_regulatory

---
 vue.config.js                                                       |    4 
 src/api/permit/permit.js                                            |    2 
 src/views/securityCompany/armed.vue                                 |  263 
 src/views/statisticalQueryManagement/securityGuardDetail.vue        |  315 +
 src/api/talk/talk.js                                                |   50 
 src/views/permit/permit.vue                                         |   80 
 src/views/securityCompany/confess.vue                               |  143 
 src/views/qualificationExamination/qualificationExamination.vue     |   70 
 src/views/revoke/revoke.vue                                         |   36 
 src/views/securityGuardManagement/register.vue                      |  788 +-
 src/views/resource/attachOnce.vue                                   |  418 +
 src/views/talk/talk.vue                                             |  340 +
 src/views/securityCompany/column.js                                 |  175 
 src/views/securityCompany/train.vue                                 |  119 
 src/views/licenseApproval/branchOffice.vue                          |  897 +++
 src/views/recordk/recordk.vue                                       |   36 
 src/api/securityUnitOperation/securityUnitOperation.js              |   28 
 src/views/statisticalQueryManagement/businessStatistics.vue         |  257 
 src/lang/zh.js                                                      |    4 
 src/views/workreport/workreport.vue                                 |   52 
 src/page/index/tags.vue                                             |  328 
 public/favicon.png                                                  |    0 
 src/api/licenseApproval/permit.js                                   |   50 
 src/views/record/record.vue                                         |   87 
 src/views/securityCompany/computents/punish.vue                     |   24 
 src/views/desk/notice.vue                                           |   17 
 src/views/securityCompany/computents/yyzz.png                       |    0 
 src/api/register/honor.js                                           |   10 
 src/views/home/index.vue                                            |  802 ++
 src/views/licenseApproval/securityGuard.vue                         | 1000 +++
 src/views/management/peopleDetails.vue                              |   15 
 src/views/statisticalQueryManagement/businessStatisticsDetail.vue   |  400 
 src/api/licenseApproval/record.js                                   |   50 
 src/views/licenseApproval/crossRegion.vue                           |  883 +++
 src/views/securityCompany/computents/staff.vue                      |    8 
 src/views/securityUnitOperation/economicTable.vue                   |  500 
 src/views/securityUnitOperation/operationTable.vue                  |  496 -
 src/config/website.js                                               |   13 
 src/views/securityCompany/security.vue                              |  135 
 src/views/qualificationExamination/signQualificationExamination.vue |    2 
 src/router/views/index.js                                           |   96 
 src/views/workreport/workreply.vue                                  |    4 
 src/api/resource/attachOnce.js                                      |   53 
 src/views/home/index.scss                                           |  464 +
 src/views/securityCompany/computents/service.vue                    |   59 
 src/views/workreport/data.js                                        |   56 
 src/views/licenseApproval/securityPermit.vue                        |  899 +++
 src/api/licenseApproval/revoke.js                                   |   50 
 src/views/securityCompany/companyDetails.vue                        |   96 
 src/views/securityUnitOperation/operationAnalysis.vue               |  336 +
 src/views/qualificationExamination/registrationTrainingQuery.vue    |   25 
 public/index.html                                                   |    4 
 src/views/securityCompany/computents/enclosure.vue                  |    8 
 src/views/statisticalQueryManagement/securityGuardStatistics.vue    |  341 
 src/views/securityUnitOperation/economicAnalysis.vue                |  163 
 src/api/statisticalQueryManagement/statisticalQueryManagement.js    |   63 
 src/views/securityCompany/computents/xkz.png                        |    0 
 src/styles/element-ui.scss                                          |   31 
 src/views/home/echarts-auto-tooltip.js                              |    2 
 src/views/securityUnitOperation/securityEchart.js                   |  220 
 src/api/securityCompany/security.js                                 |   13 
 src/views/licenseApproval/cancellationOfFiling.vue                  |  801 +++
 src/api/index/index.js                                              |   89 
 src/views/licenseApproval/securityTraining.vue                      |  898 +++
 src/api/licenseApproval/recordk.js                                  |   50 
 src/views/securityGuardManagement/registerOnce.vue                  | 1089 ++++
 src/views/statisticalQueryManagement/companyDetails.vue             |  402 
 src/views/home/indexEchart.js                                       |  320 
 src/views/securityCompany/computents/equipment.vue                  |    8 
 src/views/securityCompany/securityCrossRegion.vue                   |  128 
 70 files changed, 12,706 insertions(+), 2,959 deletions(-)

diff --git a/public/favicon.png b/public/favicon.png
index 0fc2fc1..9a4bcf0 100644
--- a/public/favicon.png
+++ b/public/favicon.png
Binary files differ
diff --git a/public/index.html b/public/index.html
index 67cce1f..f77ca95 100644
--- a/public/index.html
+++ b/public/index.html
@@ -81,6 +81,10 @@
       color: #ABABAB;
       font-size: 12px;
     }
+    .el-tooltip__popper.is-dark{
+      z-index: 11111111 !important;
+      background: #031952;
+    }
   </style>
 </head>
 
diff --git a/src/api/index/index.js b/src/api/index/index.js
index 28efff5..e8b9c13 100644
--- a/src/api/index/index.js
+++ b/src/api/index/index.js
@@ -19,27 +19,28 @@
     method: "get"
   });
 };
-export const getLiveLocationVoList = (params) => {
+export const getLiveLocationVoList = params => {
   return request({
     url: "/api/liveLocation/getLiveLocationVoList",
     method: "get",
     params: params
   });
 };
+// 获取辖区列表
 export const lazyTreeJu = () => {
   return request({
     url: "/api/information/lazyTreeJu",
     method: "post"
   });
 };
-export const noholderNum = (params) => {
+export const noholderNum = params => {
   return request({
     url: "/api/information/selectInCount",
     method: "post",
     params: params
   });
 };
-export const noSocialSecurity = (params) => {
+export const noSocialSecurity = params => {
   return request({
     url: "/api/information/selectCs",
     method: "post",
@@ -49,39 +50,103 @@
 export const selectFj = () => {
   return request({
     url: "/api/information/selectFj",
-    method: "post",
+    method: "post"
   });
 };
-export const selectBx = (params) => {
+export const selectBx = params => {
   return request({
     url: "/api/information/selectBx",
     method: "post",
     params: params
   });
 };
-export const selectExtype = (params) => {
+export const selectExtype = params => {
   return request({
     url: "/api/information/selectExtype",
     method: "post",
     params: params
   });
 };
-export const seCountUg = (params) => {
+export const seCountUg = params => {
   return request({
     url: "/api/information/seCountUg",
     method: "post",
     params: params
   });
 };
-export const seCountI = (params) => {
+export const seCountI = params => {
   return request({
     url: "/api/information/seCountI",
     method: "post",
     params: params
   });
 };
+export const selectExtypeUser = () => {
+  return request({
+    url: "/api/information/selectExtypeUser",
+    method: "post"
+  });
+};
+// 资格审查异常人员清单
+export const qualificationPages = params => {
+  return request({
+    url: "/api/blade-user/pages",
+    method: "get",
+    params: params
+  });
+};
+// 监管处罚数量
+export const selectCf = params => {
+  return request({
+    url: "/api/information/selectCf",
+    method: "post",
+    params: params
+  });
+};
+// 监管处罚公司清单
+export const punishList = params => {
+  return request({
+    url: "/api/punish/page",
+    method: "get",
+    params: params
+  });
+};
+// 公司材料不全数量
+export const selectCl = () => {
+  return request({
+    url: "/api/information/selectCl",
+    method: "post"
+  });
+};
+// 有名无实
+export const selectYs = params => {
+  return request({
+    url: "/api/information/selectYs",
+    method: "post",
+    params: params
+  });
+};
+// 经营不善
+export const selectJy = params => {
+  return request({
+    url: "/api/information/selectJy",
+    method: "post",
+    params: params
+  });
+};
+// 违规经营
+export const selectWg = params => {
+  return request({
+    url: "/api/information/selectWg",
+    method: "post",
+    params: params
+  });
+};
 
- 
-
-
-
+// 获取树形辖区
+export const lazyTrees = () => {
+  return request({
+    url: "/api/jurisdiction/lazy-trees",
+    method: "get"
+  });
+};
diff --git a/src/api/licenseApproval/permit.js b/src/api/licenseApproval/permit.js
new file mode 100644
index 0000000..bca351f
--- /dev/null
+++ b/src/api/licenseApproval/permit.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/permit/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/permit/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/permit/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/permit/save',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/permit/update',
+    method: 'post',
+    data: row
+  })
+}
+
diff --git a/src/api/licenseApproval/record.js b/src/api/licenseApproval/record.js
new file mode 100644
index 0000000..0bc371e
--- /dev/null
+++ b/src/api/licenseApproval/record.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/record/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/record/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/record/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/record/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/record/update',
+    method: 'post',
+    data: row
+  })
+}
+
diff --git a/src/api/licenseApproval/recordk.js b/src/api/licenseApproval/recordk.js
new file mode 100644
index 0000000..e7fe5c0
--- /dev/null
+++ b/src/api/licenseApproval/recordk.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/recordk/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/recordk/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/recordk/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/recordk/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/recordk/submit',
+    method: 'post',
+    data: row
+  })
+}
+
diff --git a/src/api/licenseApproval/revoke.js b/src/api/licenseApproval/revoke.js
new file mode 100644
index 0000000..a268a64
--- /dev/null
+++ b/src/api/licenseApproval/revoke.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/revoke/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/revoke/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/revoke/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/revoke/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/revoke/submit',
+    method: 'post',
+    data: row
+  })
+}
+
diff --git a/src/api/permit/permit.js b/src/api/permit/permit.js
index b11d647..bca351f 100644
--- a/src/api/permit/permit.js
+++ b/src/api/permit/permit.js
@@ -42,7 +42,7 @@
 
 export const update = (row) => {
   return request({
-    url: '/api/permit/submit',
+    url: '/api/permit/update',
     method: 'post',
     data: row
   })
diff --git a/src/api/register/honor.js b/src/api/register/honor.js
index 0255a34..1d5b50f 100644
--- a/src/api/register/honor.js
+++ b/src/api/register/honor.js
@@ -70,4 +70,14 @@
             userIds
         }
     })
+}
+
+export const getER = (securityNumber) => {
+    return request({
+        url: '/api//qrCode/getQrCodeBase64',
+        method: 'get',
+        params: {
+            securityNumber
+        }
+    })
 }
\ No newline at end of file
diff --git a/src/api/resource/attachOnce.js b/src/api/resource/attachOnce.js
new file mode 100644
index 0000000..45cfeed
--- /dev/null
+++ b/src/api/resource/attachOnce.js
@@ -0,0 +1,53 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params, cardid, type) => {
+  return request({
+    url: '/api/blade-resource/attach/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+      cardid,
+      type,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/blade-resource/attach/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/blade-resource/attach/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+
+export const add = (row) => {
+  return request({
+    url: '/api/blade-resource/attach/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/blade-resource/attach/submit',
+    method: 'post',
+    data: row
+  })
+}
+
diff --git a/src/api/securityCompany/security.js b/src/api/securityCompany/security.js
index 96cb1d5..d4e7c9c 100644
--- a/src/api/securityCompany/security.js
+++ b/src/api/securityCompany/security.js
@@ -2,6 +2,19 @@
 
 export const getList = (current, size, params, stats) => {
   return request({
+    url: '/api/information/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+      stats
+    }
+  })
+}
+
+export const getListold = (current, size, params, stats) => {//2021.8.25因内网公司接口需要同步成外网公司接口 舍弃
+  return request({
     url: '/api/information/list',
     method: 'get',
     params: {
diff --git a/src/api/securityUnitOperation/securityUnitOperation.js b/src/api/securityUnitOperation/securityUnitOperation.js
index ae9605b..1d62e80 100644
--- a/src/api/securityUnitOperation/securityUnitOperation.js
+++ b/src/api/securityUnitOperation/securityUnitOperation.js
@@ -54,4 +54,32 @@
         method: "get",
         params: params
     });
+};
+export const queryYearPz = (params) => {
+    return request({
+        url: "/api/information/queryYearPz",
+        method: "get",
+        params: params
+    });
+};
+export const selectTb = (params) => {
+    return request({
+        url: "/api/information/selectTb",
+        method: "post",
+        params: params
+    });
+};
+export const selectJj = (params) => {
+    return request({
+        url: "/api/information/selectJj",
+        method: "post",
+        params: params
+    });
+};
+export const selectAge = (params) => {
+    return request({
+        url: "/api/information/selectAge",
+        method: "post",
+        params: params
+    });
 };
\ No newline at end of file
diff --git a/src/api/statisticalQueryManagement/statisticalQueryManagement.js b/src/api/statisticalQueryManagement/statisticalQueryManagement.js
new file mode 100644
index 0000000..f21e114
--- /dev/null
+++ b/src/api/statisticalQueryManagement/statisticalQueryManagement.js
@@ -0,0 +1,63 @@
+import request from "@/router/axios";
+export const selectLi = (params) => {
+    return request({
+        url: "/api/information/selectLi",
+        method: "post",
+        params: params
+    });
+};
+export const selectYw = (params) => {
+    return request({
+        url: "/api/information/selectYw",
+        method: "post",
+        params: params
+    });
+};
+export const selectUIn = (params) => {
+    return request({
+        url: "/api/information/selectUIn",
+        method: "post",
+        params: params
+    });
+};
+export const selectDis = (params) => {
+    return request({
+        url: "/api/information/selectDis",
+        method: "post",
+        params: params
+    });
+};
+// 服务单位下拉接口
+export const selectFw = (params) => {
+    return request({
+        url: "/api/information/selectFw",
+        method: "post",
+        params: params
+    });
+};
+// 查保安员明细
+export const pageSecurity = (params) => {
+    return request({
+        url: "/api/blade-user/page-security",
+        method: "get",
+        params: params
+    });
+};
+
+// 服务对象明细
+export const fwList = (params) => {
+    return request({
+        url: "/api/dispatcherUnit/list",
+        method: "get",
+        params: params
+    });
+};
+
+// 单位类型
+export const dictionaryList = () => {
+    return request({
+        url: "/api/blade-system/dict-biz/dictionary?code=stats",
+        method: "get",
+    });
+};
+
diff --git a/src/api/talk/talk.js b/src/api/talk/talk.js
new file mode 100644
index 0000000..40d097f
--- /dev/null
+++ b/src/api/talk/talk.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-talk/talk/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/blade-talk/talk/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/blade-talk/talk/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/blade-talk/talk/save',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/blade-talk/talk/update',
+    method: 'post',
+    data: row
+  })
+}
+
diff --git a/src/config/website.js b/src/config/website.js
index 5eaecaf..561f91a 100644
--- a/src/config/website.js
+++ b/src/config/website.js
@@ -30,6 +30,19 @@
     group: [],
     close: false
   },
+  //配置权限分别的首页
+  jurisdiction: [
+    {
+      userNames: '管理员',
+      label: '本市保安公司',
+      value: '/securityCompany/security'
+    },
+    {
+      userNames: '保安',
+      label: '保安员查询',
+      value: '/securityGuardManagement/register'
+    },
+  ],
   //配置菜单的属性
   menu: {
     iconDefault: 'iconfont icon-caidan',
diff --git a/src/lang/zh.js b/src/lang/zh.js
index bbc7592..06d9b8c 100644
--- a/src/lang/zh.js
+++ b/src/lang/zh.js
@@ -1,3 +1,5 @@
+import website from '@/config/website';
+
 export default {
   tip: '提示',
   title: '保安监管系统',
@@ -52,7 +54,7 @@
     info: '个人信息',
     website: 'bladex官网',
     avuexwebsite: 'avuex官网',
-    dashboard: '保安员查询',
+    dashboard: website.fistPage.label,
     more: '更多',
     tags: '标签',
     store: '本地存储',
diff --git a/src/page/index/tags.vue b/src/page/index/tags.vue
index ab14485..b60dae1 100644
--- a/src/page/index/tags.vue
+++ b/src/page/index/tags.vue
@@ -1,186 +1,202 @@
 <template>
-  <div class="avue-tags"
-       v-if="showTag">
+  <div class="avue-tags" v-if="showTag">
     <!-- tag盒子 -->
-    <div v-if="contextmenuFlag"
-         class="avue-tags__contentmenu"
-         :style="{left:contentmenuX+'px',top:contentmenuY+'px'}">
-      <div class="item"
-           @click="clearCacheTags">{{$t('tagsView.clearCache')}}
+    <div
+      v-if="contextmenuFlag"
+      class="avue-tags__contentmenu"
+      :style="{ left: contentmenuX + 'px', top: contentmenuY + 'px' }"
+    >
+      <div class="item" @click="clearCacheTags">
+        {{ $t("tagsView.clearCache") }}
       </div>
-      <div class="item"
-           @click="closeOthersTags">{{$t('tagsView.closeOthers')}}
+      <div class="item" @click="closeOthersTags">
+        {{ $t("tagsView.closeOthers") }}
       </div>
-      <div class="item"
-           @click="closeAllTags">{{$t('tagsView.closeAll')}}
+      <div class="item" @click="closeAllTags">
+        {{ $t("tagsView.closeAll") }}
       </div>
     </div>
-    <div class="avue-tags__box"
-         :class="{'avue-tags__box--close':!website.isFirstPage}">
-      <el-tabs v-model="active"
-               type="card"
-               @contextmenu.native="handleContextmenu"
-               :closable="tagLen!==1"
-               @tab-click="openTag"
-               @edit="menuTag">
-        <el-tab-pane :key="item.value"
-                     v-for="item in tagList"
-                     :label="generateTitle(item)"
-                     :name="item.value">
+    <div
+      class="avue-tags__box"
+      :class="{ 'avue-tags__box--close': !website.isFirstPage }"
+    >
+      <el-tabs
+        v-model="active"
+        type="card"
+        @contextmenu.native="handleContextmenu"
+        :closable="tagLen !== 1"
+        @tab-click="openTag"
+        @edit="menuTag"
+      >
+        <el-tab-pane
+          :key="item.value"
+          v-for="item in tagList"
+          :label="generateTitle(item)"
+          :name="item.value"
+        >
         </el-tab-pane>
-
       </el-tabs>
       <el-dropdown class="avue-tags__menu">
-        <el-button type="primary"
-                   size="mini">
-          {{$t('tagsView.menu')}}
+        <el-button type="primary" size="mini">
+          {{ $t("tagsView.menu") }}
           <i class="el-icon-arrow-down el-icon--right"></i>
         </el-button>
         <el-dropdown-menu slot="dropdown">
-          <el-dropdown-item @click.native="$parent.isSearch=true">{{$t('tagsView.search')}}</el-dropdown-item>
-          <el-dropdown-item @click.native="closeOthersTags">{{$t('tagsView.closeOthers')}}</el-dropdown-item>
-          <el-dropdown-item @click.native="closeAllTags">{{$t('tagsView.closeAll')}}</el-dropdown-item>
-          <el-dropdown-item @click.native="clearCacheTags">{{$t('tagsView.clearCache')}}</el-dropdown-item>
+          <el-dropdown-item @click.native="$parent.isSearch = true">{{
+            $t("tagsView.search")
+          }}</el-dropdown-item>
+          <el-dropdown-item @click.native="closeOthersTags">{{
+            $t("tagsView.closeOthers")
+          }}</el-dropdown-item>
+          <el-dropdown-item @click.native="closeAllTags">{{
+            $t("tagsView.closeAll")
+          }}</el-dropdown-item>
+          <el-dropdown-item @click.native="clearCacheTags">{{
+            $t("tagsView.clearCache")
+          }}</el-dropdown-item>
         </el-dropdown-menu>
       </el-dropdown>
     </div>
-
   </div>
 </template>
 <script>
-  import {mapGetters, mapState} from "vuex";
-  import {clearCache} from "@/api/user";
+import { mapGetters, mapState } from "vuex";
+import { clearCache } from "@/api/user";
 
-  export default {
-    name: "tags",
-    data() {
-      return {
-        active: "",
-        contentmenuX: "",
-        contentmenuY: "",
-        contextmenuFlag: false
-      };
-    },
-    created() {
-    },
-    mounted() {
+export default {
+  name: "tags",
+  data() {
+    return {
+      active: "",
+      contentmenuX: "",
+      contentmenuY: "",
+      contextmenuFlag: false,
+    };
+  },
+  created() {},
+  mounted() {
+    this.setActive();
+    // if(this.userInfo.role_name == )
+    // console.log(this.website, "website");//改变首页
+  },
+  watch: {
+    tag() {
       this.setActive();
     },
-    watch: {
-      tag() {
-        this.setActive();
-      },
-      contextmenuFlag() {
-        window.addEventListener("mousedown", this.watchContextmenu);
+    contextmenuFlag() {
+      window.addEventListener("mousedown", this.watchContextmenu);
+    },
+  },
+  computed: {
+    ...mapGetters(["tagWel", "tagList", "tag", "website", "userInfo"]),
+    ...mapState({
+      showTag: (state) => state.common.showTag,
+    }),
+    tagLen() {
+      return this.tagList.length || 0;
+    },
+  },
+  methods: {
+    generateTitle(item) {
+      return this.$router.$avueRouter.generateTitle(
+        item.label,
+        (item.meta || {}).i18n
+      );
+    },
+    watchContextmenu(event) {
+      if (!this.$el.contains(event.target) || event.button !== 0) {
+        this.contextmenuFlag = false;
+      }
+      window.removeEventListener("mousedown", this.watchContextmenu);
+    },
+    handleContextmenu(event) {
+      let target = event.target;
+      // 解决 https://github.com/d2-projects/d2-admin/issues/54
+      let flag = false;
+      if (target.className.indexOf("el-tabs__item") > -1) flag = true;
+      else if (target.parentNode.className.indexOf("el-tabs__item") > -1) {
+        target = target.parentNode;
+        flag = true;
+      }
+      if (flag) {
+        event.preventDefault();
+        event.stopPropagation();
+        this.contentmenuX = event.clientX;
+        this.contentmenuY = event.clientY;
+        this.tagName = target.getAttribute("aria-controls").slice(5);
+        this.contextmenuFlag = true;
       }
     },
-    computed: {
-      ...mapGetters(["tagWel", "tagList", "tag", "website"]),
-      ...mapState({
-        showTag: state => state.common.showTag
-      }),
-      tagLen() {
-        return this.tagList.length || 0;
+    //激活当前选项
+    setActive() {
+      this.active = this.tag.value;
+    },
+    menuTag(value, action) {
+      if (action === "remove") {
+        let { tag, key } = this.findTag(value);
+        this.$store.commit("DEL_TAG", tag);
+        if (tag.value === this.tag.value) {
+          tag = this.tagList[key === 0 ? key : key - 1]; //如果关闭本标签让前推一个
+          this.openTag(tag);
+        }
       }
     },
-    methods: {
-      generateTitle(item) {
-        return this.$router.$avueRouter.generateTitle(
-          item.label,
-          (item.meta || {}).i18n
-        );
-      },
-      watchContextmenu(event) {
-        if (!this.$el.contains(event.target) || event.button !== 0) {
-          this.contextmenuFlag = false;
-        }
-        window.removeEventListener("mousedown", this.watchContextmenu);
-      },
-      handleContextmenu(event) {
-        let target = event.target;
-        // 解决 https://github.com/d2-projects/d2-admin/issues/54
-        let flag = false;
-        if (target.className.indexOf("el-tabs__item") > -1) flag = true;
-        else if (target.parentNode.className.indexOf("el-tabs__item") > -1) {
-          target = target.parentNode;
-          flag = true;
-        }
-        if (flag) {
-          event.preventDefault();
-          event.stopPropagation();
-          this.contentmenuX = event.clientX;
-          this.contentmenuY = event.clientY;
-          this.tagName = target.getAttribute("aria-controls").slice(5);
-          this.contextmenuFlag = true;
-        }
-      },
-      //激活当前选项
-      setActive() {
-        this.active = this.tag.value;
-      },
-      menuTag(value, action) {
-        if (action === "remove") {
-          let {tag, key} = this.findTag(value);
-          this.$store.commit("DEL_TAG", tag);
-          if (tag.value === this.tag.value) {
-            tag = this.tagList[key === 0 ? key : key - 1]; //如果关闭本标签让前推一个
-            this.openTag(tag);
-          }
-        }
-      },
-      openTag(item) {
-        let tag;
-        if (item.name) {
-          tag = this.findTag(item.name).tag;
-        } else {
-          tag = item;
-        }
-        this.$router.push({
-          path: this.$router.$avueRouter.getPath({
+    openTag(item) {
+      let tag;
+      if (item.name) {
+        tag = this.findTag(item.name).tag;
+      } else {
+        tag = item;
+      }
+      this.$router.push({
+        path: this.$router.$avueRouter.getPath(
+          {
             name: tag.label,
-            src: tag.value
-          }, tag.meta),
-          query: tag.query
+            src: tag.value,
+          },
+          tag.meta
+        ),
+        query: tag.query,
+      });
+    },
+    closeOthersTags() {
+      this.contextmenuFlag = false;
+      this.$store.commit("DEL_TAG_OTHER");
+    },
+    findTag(value) {
+      let tag, key;
+      this.tagList.map((item, index) => {
+        if (item.value === value) {
+          tag = item;
+          key = index;
+        }
+      });
+      return { tag: tag, key: key };
+    },
+    closeAllTags() {
+      this.contextmenuFlag = false;
+      this.$store.commit("DEL_ALL_TAG");
+      this.$router.push({
+        path: this.$router.$avueRouter.getPath({
+          src: this.tagWel.value,
+        }),
+        query: this.tagWel.query,
+      });
+    },
+    clearCacheTags() {
+      this.$confirm("是否需要清除缓存?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(() => {
+        clearCache().then(() => {
+          this.contextmenuFlag = false;
+          this.$message.success("清除完毕");
         });
-      },
-      closeOthersTags() {
-        this.contextmenuFlag = false;
-        this.$store.commit("DEL_TAG_OTHER");
-      },
-      findTag(value) {
-        let tag, key;
-        this.tagList.map((item, index) => {
-          if (item.value === value) {
-            tag = item;
-            key = index;
-          }
-        });
-        return {tag: tag, key: key};
-      },
-      closeAllTags() {
-        this.contextmenuFlag = false;
-        this.$store.commit("DEL_ALL_TAG");
-        this.$router.push({
-          path: this.$router.$avueRouter.getPath({
-            src: this.tagWel.value
-          }),
-          query: this.tagWel.query
-        });
-      },
-      clearCacheTags() {
-        this.$confirm("是否需要清除缓存?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(() => {
-          clearCache().then(() => {
-            this.contextmenuFlag = false;
-            this.$message.success('清除完毕');
-          })
-        });
-      }
-    }
-  };
+      });
+    },
+  },
+};
 </script>
 
 
diff --git a/src/router/views/index.js b/src/router/views/index.js
index 51ab3b9..ebdd3aa 100644
--- a/src/router/views/index.js
+++ b/src/router/views/index.js
@@ -177,6 +177,20 @@
         }]
     },
     {
+        path: '/securityGuardManagement',
+        redirect: '/securityGuardManagement/registerOnce',
+        component: Layout,
+        children: [{
+            path: 'registerOnce',
+            name: '公司保安员详情',
+            meta: {
+                i18n: 'registerOnce',
+            },
+            component: () =>
+                import( /* webpackChunkName: "views" */ '@/views/securityGuardManagement/registerOnce')
+        }]
+    },
+    {
         path: '/desk',
         component: Layout,
         redirect: '/desk/notice',
@@ -262,7 +276,7 @@
         component: Layout,
         children: [{
             path: 'index',
-            name: '保安详细资料',
+            name: '保安公司详细资料',
             meta: {
                 i18n: 'index',
             },
@@ -327,21 +341,49 @@
             component: () =>
                 import( /* webpackChunkName: "views" */ '@/views/securityUnitOperation/operationTable')
         }]
-    }, 
+    },
+    // {
+    //     path: '/securityUnitOperation/economicTable',
+    //     redirect: '/securityUnitOperation/economicTable/index',
+    //     component: Layout,
+    //     children: [{
+    //         path: 'index',
+    //         name: '公司经济情况智能分析详情表',
+    //         meta: {
+    //             i18n: 'index',
+    //         },
+    //         component: () =>
+    //             import( /* webpackChunkName: "views" */ '@/views/securityUnitOperation/economicTable')
+    //     }]
+    // },
     {
-        path: '/securityUnitOperation/economicTable',
-        redirect: '/securityUnitOperation/economicTable/index',
+        path: '/statisticalQueryManagement/companyDetails',
+        redirect: '/statisticalQueryManagement/companyDetails/index',
         component: Layout,
         children: [{
             path: 'index',
-            name: '公司经济情况智能分析详情表',
+            name: '保安公司人员详情',
             meta: {
                 i18n: 'index',
             },
             component: () =>
-                import( /* webpackChunkName: "views" */ '@/views/securityUnitOperation/economicTable')
+                import( /* webpackChunkName: "views" */ '@/views/statisticalQueryManagement/companyDetails')
         }]
     },
+    // {
+    //     path: '/securityUnitOperation/economicTable',
+    //     redirect: '/securityUnitOperation/economicTable/index',
+    //     component: Layout,
+    //     children: [{
+    //         path: 'index',
+    //         name: '公司经济情况智能分析详情表',
+    //         meta: {
+    //             i18n: 'index',
+    //         },
+    //         component: () =>
+    //             import( /* webpackChunkName: "views" */ '@/views/securityUnitOperation/economicTable')
+    //     }]
+    // },
     {
         path: '/statisticalQueryManagement/companyDetails',
         redirect: '/statisticalQueryManagement/companyDetails/index',
@@ -371,31 +413,57 @@
         }]
     },
     {
-        path: '/statisticalQueryManagement/companyDetails',
-        redirect: '/statisticalQueryManagement/companyDetails/index',
+        path: '/statisticalQueryManagement/businessStatisticsDetail',
+        redirect: '/statisticalQueryManagement/businessStatisticsDetail/index',
         component: Layout,
         children: [{
             path: 'index',
-            name: '保安公司人员详情',
+            name: '业务情况明细',
             meta: {
                 i18n: 'index',
             },
             component: () =>
-                import( /* webpackChunkName: "views" */ '@/views/statisticalQueryManagement/companyDetails')
+                import( /* webpackChunkName: "views" */ '@/views/statisticalQueryManagement/businessStatisticsDetail')
         }]
     },
     {
-        path: '/securityUnitOperation/economicTable',
-        redirect: '/securityUnitOperation/economicTable/index',
+        path: '/statisticalQueryManagement/securityGuardDetail',
+        redirect: '/statisticalQueryManagement/securityGuardDetail/index',
         component: Layout,
         children: [{
             path: 'index',
-            name: '公司经济情况智能分析详情表',
+            name: '保安员明细',
             meta: {
                 i18n: 'index',
             },
             component: () =>
-                import( /* webpackChunkName: "views" */ '@/views/securityUnitOperation/economicTable')
+                import( /* webpackChunkName: "views" */ '@/views/statisticalQueryManagement/securityGuardDetail')
+        }]
+    }, {
+        path: '/attachOnce',
+        redirect: '/resource/attachOnce',
+        component: Layout,
+        children: [{
+            path: 'index',
+            name: '附件查看',
+            meta: {
+                i18n: 'index',
+            },
+            component: () =>
+                import( /* webpackChunkName: "views" */ '@/views/resource/attachOnce')
+        }]
+    }, {
+        path: '/talk',
+        redirect: '/talk/talk',
+        component: Layout,
+        children: [{
+            path: 'index',
+            name: '心理咨询',
+            meta: {
+                i18n: 'index',
+            },
+            component: () =>
+                import( /* webpackChunkName: "views" */ '@/views/talk/talk')
         }]
     }
 ]
\ No newline at end of file
diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss
index a62a7a0..d2f42f9 100644
--- a/src/styles/element-ui.scss
+++ b/src/styles/element-ui.scss
@@ -415,7 +415,7 @@
 //去除表格底部线
 .el-table td,
 .el-table th.is-leaf {
-  border: 1px solid transparent;
+  border: 1px solid rgba($color: #ffffff, $alpha: 0.2);
 }
 // //顶部搜索栏
 // .el-card.is-never-shadow.avue-crud__search {
@@ -587,3 +587,32 @@
 .el-range-editor--mini .el-range-input {
   background-color: transparent !important;
 }
+
+// 右侧弹窗  表格显影功能  背景
+.el-drawer__open .el-drawer.rtl {
+  background-color: $mainB !important;
+}
+
+// .registersss .avue-form__menu {
+//   position: relative;
+//   width: 100%;
+//   display: flex;
+//   flex-direction: row-reverse;
+// }
+
+.rowClickSelf {
+  // border: 1px solid #2593ee !important;
+  &:hover {
+    cursor: pointer;
+  }
+}
+
+//格子
+// .el-table th.is-leaf {
+//   border: 1px solid #fff;
+//   box-sizing: border-box;
+// }
+
+.avue-empty__desc {
+  color: #fff !important;
+}
diff --git a/src/views/desk/notice.vue b/src/views/desk/notice.vue
index 755e759..907221e 100644
--- a/src/views/desk/notice.vue
+++ b/src/views/desk/notice.vue
@@ -27,7 +27,7 @@
           size="small"
           icon="el-icon-delete"
           plain
-          v-if="deptCategory"
+          v-if="permission.notice_delete"
           @click="handleDelete"
           >删 除
         </el-button>
@@ -37,16 +37,13 @@
         <el-tag>{{ row.categoryName }}</el-tag>
       </template>
       <template slot-scope="{ type, size, row }" slot="menu">
-        <el-button :size="size" :type="type" @click="handleUploadPage(row)"
+        <el-button 
+        :size="size" 
+        :type="type" 
+        @click="handleUploadPage(row)"
+        v-if="permission.notice_upload"
           >附件上传
         </el-button>
-        <!-- <el-button
-          v-if="!deptCategory"
-          :size="size"
-          :type="type"
-          @click="handleUploadPage(row)"
-          >附件查看
-        </el-button> -->
       </template>
     </avue-crud>
   </basic-container>
@@ -239,6 +236,7 @@
     rowSave(row, done, loading) {
       row.category = 2;
       row.deptId = this.deptId;
+      row['type'] = 1;
       add(row).then(
         () => {
           this.onLoad(this.page);
@@ -357,6 +355,7 @@
       if (this.deptId != 1123598813738675201) {
         params["deptId"] = this.deptId;
       }
+      params["type"] = 1;
       const { releaseTimeRange } = this.query;
 
       let values = {
diff --git a/src/views/home/echarts-auto-tooltip.js b/src/views/home/echarts-auto-tooltip.js
index 6ea3b7c..8dad82c 100644
--- a/src/views/home/echarts-auto-tooltip.js
+++ b/src/views/home/echarts-auto-tooltip.js
@@ -19,7 +19,7 @@
 
      echartAutoTools.loopShowTooltip = function (chart, chartOption, options) {
         var defaultOptions = {
-            interval: 2000,
+            interval: 10000,
             loopSeries: false,
             seriesIndex: 1,
             updateData: null
diff --git a/src/views/home/index.scss b/src/views/home/index.scss
index 3bf427e..ee94929 100644
--- a/src/views/home/index.scss
+++ b/src/views/home/index.scss
@@ -222,8 +222,8 @@
         width: 44px;
         height: 56px;
         position: absolute;
-        margin-left: -7px;
-        margin-top: -9px;
+        left: -7px;
+        top: -9px;
       }
       .leftbottom {
         background: url("../../../public/img/bajgxt/leftbottom.png") no-repeat;
@@ -231,8 +231,8 @@
         width: 44px;
         height: 56px;
         position: absolute;
-        margin-left: -7px;
-        margin-top: calc(40% - 66px);
+        left: -7px;
+        bottom: -7px;
       }
       .righttop {
         background: url("../../../public/img/bajgxt/righttop.png") no-repeat;
@@ -240,8 +240,8 @@
         width: 44px;
         height: 56px;
         position: absolute;
-        margin-left: calc(100% - 37px);
-        margin-top: -9px;
+        left: calc(100% - 37px);
+        top: -9px;
       }
       .rightbottom {
         background: url("../../../public/img/bajgxt/rightbottom.png") no-repeat;
@@ -249,39 +249,42 @@
         width: 44px;
         height: 56px;
         position: absolute;
-        margin-left: calc(100% - 37px);
-        margin-top: calc(40% - 66px);
+        left: calc(100% - 37px);
+        bottom: -7px;
       }
     }
   }
-  .el-table {
-    width: calc(100% - 40px);
-    height: calc(100% - 65px);
-    margin: 0px 20px 15px;
-    top: 50px;
+  .middle {
+    .el-table {
+      width: calc(100% - 40px);
+      height: calc(100% - 65px);
+      margin: 0px 20px 15px;
+      top: 50px;
+    }
+    /deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
+      background: #031d4b !important;
+    }
+    /deep/ .el-table--enable-row-transition .el-table__body td,
+    /deep/ .el-table th,
+    .el-table tr {
+      background: #03225b !important;
+    }
+    /deep/ .el-table .cell {
+      color: #fff;
+      text-align: center;
+    }
+    /deep/ .el-table td,
+    .el-table th.is-leaf {
+      border-bottom-color: transparent;
+    }
+    /deep/ .el-table__header th {
+      border-bottom: 1px solid #031a38 !important;
+    }
+    /deep/.el-table--enable-row-hover .el-table__body tr:hover > td {
+      background-color: #b0caf3;
+    }
   }
-  /deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
-    background: #031d4b !important;
-  }
-  /deep/ .el-table--enable-row-transition .el-table__body td,
-  /deep/ .el-table th,
-  .el-table tr {
-    background: #03225b !important;
-  }
-  /deep/ .el-table .cell {
-    color: #fff;
-    text-align: center;
-  }
-  /deep/ .el-table td,
-  .el-table th.is-leaf {
-    border-bottom-color: transparent;
-  }
-  /deep/ .el-table__header th{
-    border-bottom: 1px solid #031a38 !important;
-  }
-  /deep/.el-table--enable-row-hover .el-table__body tr:hover > td {
-    background-color: #b0caf3;
-  }
+
   /deep/ .el-input__inner {
     height: 27px;
     color: #fff !important;
@@ -339,7 +342,7 @@
     padding: 15px;
   }
   .card-list {
-    margin: 15px 60px 10px 90px;
+    margin: 15px 60px 10px 50px;
     display: flex;
     height: 55px;
     line-height: 55px;
@@ -424,190 +427,285 @@
     height: 100%;
   }
 }
-.left2-btn{
+.left2-btn {
   height: 21px;
   width: 69px;
-  background-color: #0445b5;
+  background-color: #4478d0;
+  color: #fff;
   font-size: 13px !important;
   font-weight: 700;
-  color: #fff !important;
+
   line-height: 21px !important;
   text-align: center;
   position: absolute;
   cursor: pointer;
 }
-.left2-btn.btn1{
+.left2-btn.btn1 {
   right: 106px;
   margin-top: 25px;
 }
-.left2-btn.btn2{
+.left2-btn.btn2 {
   right: 25px;
   margin-top: 25px;
 }
-.left2-btn.date{
-  margin-left: 74px;
+.left2-btn.date {
+  right: 47px;
+  margin-top: 27px;
 }
-.left2-btn.mounce{
-  margin-left: 208px;
+.left2-btn.mounce {
+  right: 47px;
+  margin-top: 71px;
 }
-.left2-btn.all{
-  right: 100px;
+.left2-btn.all {
+  right: 47px;
+  margin-top: 114px;
 }
 
-.rightData{
-    position: relative;
-    color: #fff;
-    background: #010945;
-    border-radius: 11px;
-    height: 52px;
-    display: inline-flex;
-    width: 174px;
-    cursor: pointer;
-    font-weight: 700;
-    img {
-      margin: 12px;
-      height: 28px;
-      width: 30px;
-    }
-    .text {
-      width: 100px;
-      text-align: center;
-      // margin: 3px;
-      line-height: 25px;
-      span:nth-child(1) {
-        width: 100%;
-        display: block;
-        font-size: 14px;
-      }
-      span:nth-child(2) {
-        width: 100%;
-        display: block;
-        color: #00CCFF;
-        font-size: 15px;
-      }
-    }
+.rightData {
+  position: relative;
+  color: #fff;
+  background: #010945;
+  border-radius: 11px;
+  height: 52px;
+  display: inline-flex;
+  width: 174px;
+  cursor: pointer;
+  font-weight: 700;
+  img {
+    margin: 12px;
+    height: 28px;
+    width: 30px;
   }
-  .rightData1{
-    margin-left: 42px;
-    margin-top: 23px;
-  }
-  .rightData2{
-    margin-left: 58px;
-    margin-top: 23px;
-  }
-  .rightData3{
-    margin-top: 21px;
-    margin-left: 42px;
-  }
-  .rightData4{
-    margin-top: 21px;
-    margin-left: 58px;
-  }
-  .rightData5{
-    margin-top: 8px;
-    margin-left: 42px;
-  }
-
-  .textBox {
-    width: 70%;
-    height: 58px;
-    // margin: 0 auto;
-    overflow: hidden;
-    position: absolute;
-    text-align: left;
-    color: #09b560;
-    left: 20px;
-    top: 20px;
-    font-size: 15px;
-    .text {
+  .text {
+    width: 100px;
+    text-align: center;
+    // margin: 3px;
+    line-height: 25px;
+    span:nth-child(1) {
       width: 100%;
-      position: absolute;
-      bottom: 0;
+      display: block;
+      font-size: 14px;
     }
-    .slide-enter-active, .slide-leave-active {
-      transition: all 0.5s linear;
-    }
-    .slide-enter{
-      transform: translateY(20px) scale(1);
-      opacity: 1;
-    }
-    .slide-leave-to {
-      transform: translateY(-20px) scale(0.8);
-      opacity: 0;
+    span:nth-child(2) {
+      width: 100%;
+      display: block;
+      color: #00ccff;
+      font-size: 15px;
     }
   }
-  .leftEchartTitle{
-    height: 30px;
-    display: flex;
-    line-height: 30px;
-    margin-top: 10px;
-    margin-left: 28px;
+}
+.rightData1 {
+  margin-left: 42px;
+  margin-top: 23px;
+}
+.rightData2 {
+  margin-left: 58px;
+  margin-top: 23px;
+}
+.rightData3 {
+  margin-top: 21px;
+  margin-left: 42px;
+}
+.rightData4 {
+  margin-top: 21px;
+  margin-left: 58px;
+}
+.rightData5 {
+  margin-top: 8px;
+  margin-left: 42px;
+}
+
+.textBox {
+  width: 70%;
+  height: 58px;
+  // margin: 0 auto;
+  overflow: hidden;
+  position: absolute;
+  text-align: left;
+  color: #09b560;
+  left: 20px;
+  top: 20px;
+  font-size: 15px;
+  .text {
+    width: 100%;
     position: absolute;
-    .block1{
-      width: 23px;
-      height: 13px;
-      background: #2ec7c9;
-      border-radius: 3px;
-      margin-top: 9px;
-    }
-    span:nth-child(2){
-      color: #fff;
-      font-size: 13px;
-      margin: 0px 10px 0px 3px;
-    }
-    span:nth-child(3){
-      color: #2ec7c9;
+    bottom: 0;
+  }
+  .slide-enter-active,
+  .slide-leave-active {
+    transition: all 0.5s linear;
+  }
+  .slide-enter {
+    transform: translateY(20px) scale(1);
+    opacity: 1;
+  }
+  .slide-leave-to {
+    transform: translateY(-20px) scale(0.8);
+    opacity: 0;
+  }
+}
+.leftEchartTitle {
+  height: 30px;
+  display: flex;
+  line-height: 30px;
+  margin-top: 10px;
+  margin-left: 28px;
+  position: absolute;
+  .block1 {
+    width: 23px;
+    height: 13px;
+    background: #2ec7c9;
+    border-radius: 3px;
+    margin-top: 9px;
+  }
+  span:nth-child(2) {
+    color: #fff;
+    font-size: 13px;
+    margin: 0px 10px 0px 3px;
+  }
+  span:nth-child(3) {
+    color: #2ec7c9;
     font-size: 17px;
     font-weight: 700;
     display: block;
     width: 65px;
     text-align: center;
-    }
-    span:nth-child(4){
-      font-size: 13px;
-      color: #2ec7c9;
-    }
   }
-  .leftEchartTitle2{
-    right: 35px;
-    .block1{
-      background: #b6a2de;
-    }
-    span:nth-child(3){
-      color: #b6a2de;
+  span:nth-child(4) {
+    font-size: 13px;
+    color: #2ec7c9;
+  }
+}
+.leftEchartTitle2 {
+  right: 35px;
+  .block1 {
+    background: #b6a2de;
+  }
+  span:nth-child(3) {
+    color: #b6a2de;
     font-size: 15px;
-    }
   }
-  .leftEchartTitle3{
-    margin-top: 37px;
-    .block1{
-      background: #5ab1ef;
-    }
-    span:nth-child(3){
-      color: #5ab1ef;
+}
+.leftEchartTitle3 {
+  margin-top: 37px;
+  .block1 {
+    background: #5ab1ef;
+  }
+  span:nth-child(3) {
+    color: #5ab1ef;
     font-size: 15px;
-    }
   }
-  .leftEchartTitle4{
-    margin-top: 37px;
-    right: 22px;
-    .block1{
-      background: #ffb980;
-    }
-    span:nth-child(3){
-      color: #ffb980;
+}
+.leftEchartTitle4 {
+  margin-top: 37px;
+  right: 36px;
+  .block1 {
+    background: #ffb980;
+  }
+  span:nth-child(2) {
+    width: 77px;
+  }
+  span:nth-child(3) {
+    color: #ffb980;
     font-size: 15px;
-    }
   }
-  .leftEchartTitle5{
-    margin-top: 64px;
-    .block1{
-      background: #fc8452;
-    }
-    span:nth-child(3){
-      color: #fc8452;
+}
+.leftEchartTitle5 {
+  margin-top: 64px;
+  .block1 {
+    background: #fc8452;
+  }
+  span:nth-child(3) {
+    color: #fc8452;
     font-size: 15px;
+  }
+}
+.bayHover {
+  background-color: #0445b5;
+  color: #fff !important;
+}
+.leftEchartTitle.xbNan {
+  right: 47px;
+  margin-top: 76px;
+  .block1 {
+    width: 30px;
+    height: 15px;
+    background: #008dec;
+    margin-top: 7px;
+  }
+  span:nth-child(2) {
+    color: #fff;
+    font-size: 13px;
+  }
+  span:nth-child(3) {
+    color: #008dec;
+    font-size: 17px;
+  }
+  span:nth-child(4) {
+    font-size: 13px;
+    color: #008dec;
+  }
+}
+.leftEchartTitle.xbNv {
+  right: 47px;
+  margin-top: 135px;
+  .block1 {
+    width: 30px;
+    height: 15px;
+    background: #886eff;
+    margin-top: 7px;
+  }
+  span:nth-child(2) {
+    color: #fff;
+    font-size: 13px;
+  }
+  span:nth-child(3) {
+    color: #886eff;
+    font-size: 17px;
+  }
+  span:nth-child(4) {
+    font-size: 13px;
+    color: #886eff;
+  }
+}
+.showDialog:hover {
+  cursor: pointer;
+}
+.bajgxt-home {
+  /deep/.dialog {
+    z-index: 10000000 !important;
+    .el-table {
+      top: 0px !important;
+      margin: 0px !important;
+      width: 100% !important;
+      height: calc(100% - 50px) !important;
+      .el-table__header {
+        background-color: #2d5cc8 !important;
+      }
+      .el-table__body-wrapper {
+        height: calc(100% - 50px);
+        overflow-x: hidden;
+        overflow-y: auto;
+      }
+    }
+    .el-pagination {
+      color: #a2a5a5;
+    }
+    .btn-prev,
+    .btn-next {
+      background: transparent !important;
+    }
+    .el-dialog__body {
+      padding: 10px 20px;
+      height: calc(100% - 60px);
+      .el-input {
+        width: 50px !important;
+        border-bottom: 1px solid #8a7b7b !important;
+      }
     }
   }
-
-
+  /deep/ .el-dialog {
+    width: 80% !important;
+    height: 77%;
+  }
+}
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index a99e83a..bc6c395 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -26,7 +26,7 @@
           </div>
           <div class="leftEchartTitle leftEchartTitle3">
             <div class="block1"></div>
-            <span>保安服务公司</span>
+            <span>本市保安公司</span>
             <span>{{ leftData.fw }}</span>
             <span>个</span>
           </div>
@@ -38,7 +38,7 @@
           </div> -->
           <div class="leftEchartTitle leftEchartTitle4">
             <div class="block1"></div>
-            <span>跨区域保安公司</span>
+            <span>分公司</span>
             <span>{{ leftData.kqy }}</span>
             <span>个</span>
           </div>
@@ -48,12 +48,31 @@
           <div class="title-pane2">
             <img src="../../../public/img/bajgxt/icon1.png" />
             <span>保安员持证情况</span>
-            <span class="left2-btn btn1" @click="getHolderNum(0)"
+            <span
+              class="left2-btn btn1"
+              :class="[left2EchartType === 0 ? 'bayHover' : '']"
+              @click="getHolderNum(0)"
               >辖区统计</span
             >
-            <span class="left2-btn btn2" @click="getHolderNum(1)"
+            <span
+              class="left2-btn btn2"
+              :class="[left2EchartType === 1 ? 'bayHover' : '']"
+              @click="getHolderNum(1)"
               >男女结构</span
             >
+          </div>
+
+          <div v-if="left2EchartType === 1" class="leftEchartTitle xbNan">
+            <div class="block1"></div>
+            <span>男</span>
+            <span>{{ leftData.nan }}</span>
+            <span>人</span>
+          </div>
+          <div v-if="left2EchartType === 1" class="leftEchartTitle xbNv">
+            <div class="block1"></div>
+            <span>女</span>
+            <span>{{ leftData.nv }}</span>
+            <span>人</span>
           </div>
           <div id="left2Echart" v-loading="left2loading"></div>
         </div>
@@ -216,26 +235,51 @@
           <div class="title-pane1">
             <img src="../../../public/img/bajgxt/icon2.png" />
             <span>保安员预警统计</span>
-            <el-select v-model="value1" @change="companyWarning">
+            <!-- <el-select v-model="value1" @change="companyWarning">
               <el-option
                 v-for="item in options1"
                 :key="item.id"
                 :label="item.title"
                 :value="item.value"
               ></el-option>
+            </el-select> -->
+            <el-select
+              ref="treeForm1"
+              v-model="node1.title"
+              placeholder="请选择"
+            >
+              <el-option style="height: auto" :value="node1">
+                <el-tree
+                  :data="options1"
+                  default-expand-all
+                  node-key="id"
+                  @node-click="handleNodeClick1"
+                  :props="props"
+                >
+                </el-tree>
+              </el-option>
             </el-select>
           </div>
           <div class="right-content" v-loading="right1loading">
-            <span class="left2-btn date" @click="getPoorPerformance(0)"
+            <span
+              class="left2-btn date"
+              :class="[poorPerformanceType === 1 ? 'bayHover' : '']"
+              @click="getPoorPerformance(1)"
               >当日</span
             >
-            <span class="left2-btn mounce" @click="getPoorPerformance(1)"
+            <span
+              class="left2-btn mounce"
+              :class="[poorPerformanceType === 2 ? 'bayHover' : '']"
+              @click="getPoorPerformance(2)"
               >当月</span
             >
-            <span class="left2-btn all" @click="getPoorPerformance(2)"
+            <span
+              class="left2-btn all"
+              :class="[poorPerformanceType === 3 ? 'bayHover' : '']"
+              @click="getPoorPerformance(3)"
               >全部</span
             >
-            <div class="card-list" style="margin-top: 38px">
+            <div class="card-list" style="margin-top: 21px">
               <img src="../../../public/img/bajgxt/u4.png" />
               <img src="../../../public/img/bajgxt/u256.png" />
               <img src="../../../public/img/bajgxt/u1.png" />
@@ -246,8 +290,12 @@
               <img src="../../../public/img/bajgxt/u4.png" />
               <img src="../../../public/img/bajgxt/u230.png" />
               <img src="../../../public/img/bajgxt/u1.png" />
-              <span>{{ rightData.qualification }}</span>
-              <span>资格审查异常</span>
+              <span class="showDialog" @click="shoeDialog('zg')">{{
+                rightData.qualification
+              }}</span>
+              <span class="showDialog" @click="shoeDialog('zg')"
+                >资格审查异常</span
+              >
             </div>
           </div>
           <!-- <div class="card-text"> -->
@@ -260,7 +308,7 @@
           <div class="title-pane1">
             <img src="../../../public/img/bajgxt/icon2.png" />
             <span>保安公司预警统计</span>
-            <el-select
+            <!-- <el-select
               v-model="value2"
               placeholder="请选择"
               @change="peoWarning"
@@ -271,35 +319,51 @@
                 :label="item.title"
                 :value="item.value"
               ></el-option>
+            </el-select> -->
+            <el-select
+              ref="treeForm2"
+              v-model="node2.title"
+              placeholder="请选择"
+            >
+              <el-option style="height: auto" :value="node2">
+                <el-tree
+                  :data="options2"
+                  default-expand-all
+                  node-key="id"
+                  @node-click="handleNodeClick2"
+                  :props="props"
+                >
+                </el-tree>
+              </el-option>
             </el-select>
           </div>
           <div class="right-content" v-loading="right2loading">
-            <div class="rightData rightData1">
+            <div class="rightData rightData1" @click="shoeDialog('wg')">
               <img src="../../../public/img/bajgxt/u231.png" alt />
               <div class="text">
-                <span>数据未更新</span>
-                <span>45条</span>
+                <span>违规经营</span>
+                <span>{{ rightData.wgNum }}个</span>
               </div>
             </div>
-            <div class="rightData rightData2">
+            <div class="rightData rightData2" @click="shoeDialog('jy')">
               <img src="../../../public/img/bajgxt/u232.png" alt />
               <div class="text">
-                <span>资质不全</span>
-                <span>23个</span>
+                <span>经营不善</span>
+                <span>{{ rightData.materialNum }}个</span>
               </div>
             </div>
-            <div class="rightData rightData3">
+            <div class="rightData rightData3" @click="shoeDialog('ym')">
               <img src="../../../public/img/bajgxt/u233.png" alt />
               <div class="text">
-                <span>没开展业务</span>
-                <span>12个</span>
+                <span>有名无实</span>
+                <span>{{ rightData.ymwsNum }}个</span>
               </div>
             </div>
-            <div class="rightData rightData4">
+            <div class="rightData rightData4" @click="shoeDialog('jg')">
               <img src="../../../public/img/bajgxt/111.png" alt />
               <div class="text">
-                <span>被公安查处</span>
-                <span>6个</span>
+                <span>监管处罚</span>
+                <span>{{ rightData.punishNum }}个</span>
               </div>
             </div>
             <!-- <div class="card-list">
@@ -332,11 +396,272 @@
         </div>
       </div>
     </div>
+
+    <!-- 弹框表格 -->
+    <el-dialog
+      class="dialog"
+      :title="gridData.title"
+      v-loading="dialogloading"
+      element-loading-text="数据加载中"
+      :visible.sync="dialogTableVisible"
+    >
+      <el-table :data="gridData.data">
+        <template v-if="gridData.type === 'zg'">
+          <el-table-column :key="gridData.type" type="index"> </el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="realName"
+            label="保安姓名"
+            :show-overflow-tooltip="true"
+            width="100"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="deptName"
+            label="保安公司"
+            :show-overflow-tooltip="true"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="sex"
+            label="性别"
+            :formatter="sexFormatter"
+            :show-overflow-tooltip="true"
+            width="100"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="cardid"
+            label="身份证号"
+            :show-overflow-tooltip="true"
+            width="180"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="age"
+            label="年龄"
+            :show-overflow-tooltip="true"
+            width="100"
+          ></el-table-column>
+          <!-- <el-table-column
+          prop="birthday"
+          label="出生日期"
+          :show-overflow-tooltip="true"
+        ></el-table-column> -->
+          <el-table-column
+            :key="gridData.type"
+            prop="securitynumber"
+            label="保安员证编号"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="phone"
+            label="联系方式"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="examinationType"
+            label="审查状态"
+            :formatter="examinationFormatter"
+            :show-overflow-tooltip="true"
+            width="100"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="examinationMx"
+            label="审查明细"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+        </template>
+        <template v-if="gridData.type === 'wg'">
+          <el-table-column :key="gridData.type" type="index"> </el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="enterpriseName"
+            label="公司名称"
+            :show-overflow-tooltip="true"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="znum"
+            label="保安员数量"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="cznum"
+            label="持证保安"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="czl"
+            label="持证率"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="sbnum"
+            label="缴纳社保人数"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="sbl"
+            label="缴纳社保比例"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+        </template>
+        <template v-if="gridData.type === 'jy'">
+          <el-table-column :key="gridData.type" type="index"> </el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="enterpriseName"
+            label="公司名称"
+            :show-overflow-tooltip="true"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="znum"
+            label="保安员数量"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="cznum"
+            label="持证保安"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="painum"
+            label="派遣人数"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="fwnum"
+            label="服务对象数量"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="pql"
+            label="派遣率"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="pjpqrs"
+            label="平均派遣人数"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+        </template>
+        <template v-if="gridData.type === 'ym'">
+          <el-table-column :key="gridData.type" type="index"> </el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="enterpriseName"
+            label="公司名称"
+            :show-overflow-tooltip="true"
+            width="450"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="znum"
+            label="保安员数量"
+            :show-overflow-tooltip="true"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="cznum"
+            label="持证保安"
+            :show-overflow-tooltip="true"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="painum"
+            label="派遣人数"
+            :show-overflow-tooltip="true"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="fwnum"
+            label="服务对象数量"
+            :show-overflow-tooltip="true"
+          ></el-table-column
+          >gridData
+        </template>
+        <template v-if="gridData.type === 'jg'">
+          <el-table-column :key="gridData.type" type="index"> </el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="enterpriseName"
+            label="公司名称"
+            :show-overflow-tooltip="true"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="punishtype"
+            label="处罚类别"
+            :formatter="punishType"
+            :show-overflow-tooltip="true"
+            width="150"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="punishreason"
+            label="处罚原因"
+            :show-overflow-tooltip="true"
+            width="200"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="penalty"
+            label="处罚单位"
+            :show-overflow-tooltip="true"
+            width="200"
+          ></el-table-column>
+          <el-table-column
+            :key="gridData.type"
+            prop="punishtime"
+            label="处罚时间"
+            :show-overflow-tooltip="true"
+            width="100"
+          ></el-table-column>
+        </template>
+      </el-table>
+      <el-pagination
+        @current-change="changePage"
+        @size-change="changePage"
+        :current-page.sync="gridData.current"
+        :page-size="10"
+        layout="total, prev, pager, next, jumper"
+        :total="gridData.total"
+      >
+      </el-pagination>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import './echarts-auto-tooltip'
+import "./echarts-auto-tooltip";
 // import "ol/ol.css";
 import * as echarts from "echarts";
 import optionJs from "./indexEchart";
@@ -366,11 +691,22 @@
   selectExtype,
   seCountUg,
   seCountI,
+  selectExtypeUser,
+  qualificationPages,
+  selectCf,
+  selectCl,
+  selectYs,
+  selectJy,
+  selectWg,
+  punishList,
+  lazyTrees,
 } from "../../api/index/index";
 
 import car from "@/assets/img/car.png";
 import peo from "@/assets/img/people.png";
 import gun from "@/assets/img/gun.png";
+
+import website from "@/config/website";
 
 export default {
   data() {
@@ -389,8 +725,10 @@
       rightData: {
         poorPerformance: 0,
         qualification: 0,
-        socialSecurity: 0,
-        noholder: 0,
+        materialNum: 0,
+        punishNum: 0,
+        wgNum: 0,
+        ymwsNum: 0,
       },
       carNum: 0,
       peoNum: 0,
@@ -415,8 +753,32 @@
         px: 0,
         fw: 0,
         wz: 0,
-        kqy:0
+        kqy: 0,
+        nan: 0,
+        nv: 0,
       },
+      left2EchartType: 0,
+      poorPerformanceType: 3,
+      dialogTableVisible: false,
+      gridData: {
+        data: [],
+        total: 0,
+        current: 1,
+        type: "zg",
+        title: "资格异常人员清单",
+      },
+      dialogTable: {
+        wgTable: [],
+        jyTable: [],
+        ymTable: [],
+      },
+      props: {
+        children: "children",
+        label: "title",
+        value: "id",
+      },
+      node1: {}, //选中的记录
+      node2: {},
     };
   },
   computed: {
@@ -428,17 +790,55 @@
     },
   },
   methods: {
-    startMove() {
-      // eslint-disable-next-line
-      let timer = setTimeout(() => {
-        if (this.number === 2) {
-          this.number = 0;
-        } else {
-          this.number += 1;
-        }
-        this.startMove();
-      }, 2000); // 滚动不需要停顿则将2000改成动画持续时间
+    //点击节点
+    handleNodeClick1(data) {
+      this.node1 = data;
+      this.value1 = data.id;
+      this.$refs.treeForm1.blur();
+      this.right1loading = true;
+      this.getPoorPerformance(3);
     },
+    //点击节点
+    handleNodeClick2(data) {
+      this.node2 = data;
+      this.value2 = data.id;
+      this.$refs.treeForm2.blur();
+      this.peoWarning();
+    },
+    sexFormatter(row, column) {
+      if (row.sex === 1) {
+        return "男";
+      } else if (row.sex === 2) {
+        return "女";
+      }
+    },
+    examinationFormatter(row) {
+      if (row.examinationType === "1") {
+        return "异常";
+      } else if (row.examinationType === "0") {
+        return "正常";
+      }
+    },
+    punishType(row) {
+      if (row.punishtype === "0") {
+        return "警告";
+      } else if (row.punishtype === "1") {
+        return "罚款";
+      } else if (row.punishtype === "2") {
+        return "没收违法所得";
+      } else if (row.punishtype === "3") {
+        return "没收非法财物";
+      } else if (row.punishtype === "4") {
+        return "责令停止施工";
+      } else if (row.punishtype === "5") {
+        return "责令停止使用";
+      } else if (row.punishtype === "6") {
+        return "责令停止违法行为";
+      } else if (row.punishtype === "7") {
+        return "责令停业";
+      }
+    },
+
     // 左侧表的接口返回数据
     initEchart() {
       securityTotal().then((res) => {
@@ -497,6 +897,7 @@
     },
 
     getHolderNum(type) {
+      this.left2EchartType = type;
       this.left2loading = true;
       if (this.echarts.left2Echart) {
         this.echarts.left2Echart.clear();
@@ -523,6 +924,8 @@
             this.echarts.left2Echart.setOption(
               optionJs.left3Data(res.data.data, true)
             );
+            this.leftData.nan = res.data.data[0].mnum;
+            this.leftData.nv = res.data.data[0].gnum;
           }
           this.left2loading = false;
         });
@@ -533,7 +936,11 @@
         this.echarts.mapEchart = echarts.init(document.getElementById("map"));
       }
       this.echarts.mapEchart.setOption(optionJs.middleData(data, type));
-      echartAutoTools.loopShowTooltip(this.echarts.mapEchart, optionJs.middleData(data, type), {loopSeries: true});
+      echartAutoTools.loopShowTooltip(
+        this.echarts.mapEchart,
+        optionJs.middleData(data, type),
+        { loopSeries: true }
+      );
     },
     setMapData(type) {
       this.middleloading = true;
@@ -586,47 +993,6 @@
           this.textArr.push(obj);
         });
       }
-      // let curLayer = null;
-      // let imgUrl = null;
-      // this.carVectorLayer.getSource().clear();
-      // this.peoVectorLayer.getSource().clear();
-      // this.gunVectorLayer.getSource().clear();
-      // if (type === 2) {
-      //   curLayer = this.carVectorLayer;
-      //   imgUrl = car;
-      // } else if (type === 1) {
-      //   curLayer = this.peoVectorLayer;
-      //   imgUrl = peo;
-      // } else if (type === 3) {
-      //   curLayer = this.gunVectorLayer;
-      //   imgUrl = gun;
-      // }
-      // let features = [];
-      // let style = new Style({
-      //   image: new Icon({
-      //     src: imgUrl,
-      //     opacity: 1,
-      //     scale: 0.5,
-      //   }),
-      // });
-      // this.mapData[type]["geoData"].forEach((item) => {
-      //   let carFeature = new Feature({
-      //     geometry: new Point(item),
-      //   });
-      //   carFeature.setStyle(style);
-      //   features.push(carFeature);
-      // });
-      // curLayer.getSource().addFeatures(features);
-      // if (this.mapData[type]["geoData"].length > 1) {
-      //   let extent = curLayer.getSource().getExtent();
-      //   this.map.getView().fit(extent, this.map.getSize());
-      //   this.$nextTick(() => {
-      //     this.$refs.indexTable.doLayout();
-      //   });
-      // } else {
-      //   this.map.getView().setCenter(this.mapData[type]["geoData"][0]);
-      //   this.map.getView().setZoom(11);
-      // }
     },
     // 获取表格及地图上的数据
     getTableData(type) {
@@ -729,38 +1095,198 @@
     },
     // 获取辖区列表
     getOfficeData() {
-      lazyTreeJu().then((res) => {
+      lazyTrees().then((res) => {
         if (res.data.code === 200) {
           this.options1 = res.data.data;
           this.options2 = res.data.data;
           this.value1 = this.options1[0].value || "";
           this.value2 = this.options2[0].value || "";
+          this.node1 = this.options1[0];
+          this.node2 = this.options1[0];
           // 获取完辖区列表之后再获取具体数据
-          this.getNoholderNum();
-          this.getNoSocialSecurity();
-          this.getQualification();
-          this.getPoorPerformance();
+          this.peoWarning();
+          // this.getQualification();
+          this.getPoorPerformance(3);
         } else {
           this.$message.error(res.msg);
         }
       });
     },
-    // 未持证
-    getNoholderNum() {
-      noholderNum({ jurisdiction: this.value2 }).then((res) => {
+    // 资格审查异常名单
+    shoeDialog(type) {
+      this.gridData.title = "";
+      this.gridData.type = type;
+      this.gridData.current = 1;
+      this.gridData.total = 0;
+      this.dialogTableVisible = true;
+      if (type === "zg") {
+        this.gridData.title = "资格异常人员清单";
+        this.getQualificationPages(1);
+      } else if (type === "wg") {
+        this.gridData.title = "违规经营公司清单";
+        this.getWgTable();
+      } else if (type === "jy") {
+        this.gridData.title = "经营不善公司清单";
+        this.getJyTable();
+      } else if (type === "ym") {
+        this.gridData.title = "有名无实公司清单";
+        this.getYmTable();
+      } else if (type === "jg") {
+        this.gridData.title = "受监管处罚公司清单";
+        this.getPunishList(1);
+      }
+    },
+    getWgTable() {
+      this.dialogTable.wgTable.forEach((item) => {
+        let czl = 0;
+        if (Number(item.cznum) !== 0 && Number(item.znum) !== 0) {
+          czl =
+            ((Number(item.cznum) / Number(item.znum)) * 100).toFixed(4) + "%";
+        }
+        item["czl"] = czl;
+        let sbl = 0;
+        if (Number(item.sbnum) !== 0 && Number(item.znum) !== 0) {
+          czl =
+            ((Number(item.sbnum) / Number(item.znum)) * 100).toFixed(4) + "%";
+        }
+        item["sbl"] = sbl;
+      });
+      this.gridData.data = this.dialogTable.wgTable.slice(0, 10);
+      this.gridData.total = this.dialogTable.wgTable.length;
+    },
+    getJyTable() {
+      this.dialogTable.jyTable.forEach((item) => {
+        let pql = 0;
+        if (Number(item.painum) !== 0 && Number(item.znum) !== 0) {
+          pql =
+            ((Number(item.painum) / Number(item.znum)) * 100).toFixed(4) + "%";
+        }
+        item["pql"] = pql;
+        let pjpqrs = 0;
+        if (Number(item.painum) !== 0 && Number(item.fwnum) !== 0) {
+          pjpqrs =
+            ((Number(item.painum) / Number(item.fwnum)) * 100).toFixed(4) + "%";
+        }
+        item["pjpqrs"] = pjpqrs;
+      });
+      this.gridData.data = this.dialogTable.jyTable.slice(0, 10);
+      this.gridData.total = this.dialogTable.jyTable.length;
+    },
+    getYmTable() {
+      this.gridData.data = this.dialogTable.ymTable.slice(0, 10);
+      this.gridData.total = this.dialogTable.ymTable.length;
+    },
+    getPunishList(page) {
+      this.gridData.current = page;
+      this.dialogloading = true;
+      this.gridData.data = [];
+      let params = {
+        current: this.gridData.current,
+        size: 10,
+        jurisdiction: this.value2,
+      };
+      punishList(params).then((res) => {
         if (res.data.code === 200) {
-          this.rightData.noholder = res.data.data[0].Count;
+          this.gridData.data = res.data.data.records;
+          this.gridData.total = res.data.data.total;
+        }
+        this.dialogloading = false;
+      });
+    },
+    changePage(page) {
+      if (this.gridData.type === "zg") {
+        this.getQualificationPages(page);
+      } else if (this.gridData.type === "wg") {
+        this.gridData.data = this.dialogTable.wgTable.slice(
+          10 * (page - 1),
+          10 * page
+        );
+      } else if (this.gridData.type === "jy") {
+        this.gridData.data = this.dialogTable.jyTable.slice(
+          10 * (page - 1),
+          10 * page
+        );
+      } else if (this.gridData.type === "ym") {
+        this.gridData.data = this.dialogTable.jyTable.slice(
+          10 * (page - 1),
+          10 * page
+        );
+      } else if (this.gridData.type === "jg") {
+        this.getPunishList(page);
+      }
+    },
+    getQualificationPages(page) {
+      this.gridData.current = page;
+      this.dialogloading = true;
+      this.gridData.data = [];
+      let params = {
+        current: this.gridData.current,
+        size: 10,
+        examinationType: 1,
+        jurisdiction: this.value1,
+      };
+      qualificationPages(params).then((res) => {
+        if (res.data.code === 200) {
+          this.gridData.data = res.data.data.records;
+          this.gridData.total = res.data.data.total;
+        }
+        this.dialogloading = false;
+      });
+    },
+    // 公司受处罚数量
+    getPunishNum() {
+      // selectCf({ jurisdiction: this.value2 }).then(res => {
+      //   if (res.data.code === 200) {
+      //     this.rightData.punishNum = res.data.data.count;
+      //   } else {
+      //     this.$message.error(res.msg);
+      //   }
+      //   this.right2loading = false;
+      // });
+      let params = {
+        current: this.gridData.current,
+        size: 10,
+        jurisdiction: this.value2,
+      };
+      punishList(params).then((res) => {
+        if (res.data.code === 200) {
+          this.gridData.data = res.data.data.records;
+          this.gridData.total = res.data.data.total;
+          this.rightData.punishNum = res.data.data.total;
+        }
+        this.dialogloading = false;
+      });
+    },
+    // 经营不善
+    getMaterial() {
+      selectJy({ jurisdiction: this.value2 }).then((res) => {
+        if (res.data.code === 200) {
+          this.rightData.materialNum = res.data.data.count;
+          this.dialogTable.jyTable = res.data.data.List;
         } else {
           this.$message.error(res.msg);
         }
         this.right2loading = false;
       });
     },
-    // 未缴纳社保
-    getNoSocialSecurity() {
-      noSocialSecurity({ jurisdiction: this.value2 }).then((res) => {
+    // 有名无实
+    getselectYs() {
+      selectYs({ jurisdiction: this.value2 }).then((res) => {
         if (res.data.code === 200) {
-          this.rightData.socialSecurity = res.data.data[0].Count;
+          this.rightData.ymwsNum = res.data.data.count;
+          this.dialogTable.ymTable = res.data.data.List;
+        } else {
+          this.$message.error(res.msg);
+        }
+        this.right2loading = false;
+      });
+    },
+    // 违规经营
+    getselectWg() {
+      selectWg({ jurisdiction: this.value2 }).then((res) => {
+        if (res.data.code === 200) {
+          this.rightData.wgNum = res.data.data.count;
+          this.dialogTable.wgTable = res.data.data.list;
         } else {
           this.$message.error(res.msg);
         }
@@ -768,61 +1294,82 @@
       });
     },
     // 现实表现差
-    // getPoorPerformance() {
-    //   selectBx({ jurisdiction: this.value1 }).then((res) => {
-    //     if (res.data.code === 200) {
-    //       this.rightData.poorPerformance = res.data.data[0].count;
-    //     } else {
-    //       this.$message.error(res.msg);
-    //     }
-    //     this.right1loading = false;
-    //   });
-    // },
-    // 资格审查异常
-    getQualification() {
-      selectExtype({ jurisdiction: this.value1 }).then((res) => {
+    getPoorPerformance(type) {
+      this.right1loading = true;
+      this.poorPerformanceType = type;
+      this.rightData.poorPerformance = 0;
+      this.rightData.qualification = 0;
+
+      // if (type === 1) {
+      //   this.rightData.poorPerformance = 2;
+      //   this.rightData.qualification = 3;
+      //   this.right1loading = false;
+      // } else if (type === 2) {
+      //   this.rightData.poorPerformance = 11;
+      //   this.rightData.qualification = 14;
+      //   this.right1loading = false;
+      // } else if (type === 3) {
+      // this.rightData.poorPerformance = 32;
+      // this.rightData.qualification = 45;
+      selectBx({
+        jurisdiction: this.value1,
+        type: this.poorPerformanceType,
+      }).then((res) => {
         if (res.data.code === 200) {
-          this.rightData.qualification = res.data.data[0].count;
+          this.rightData.poorPerformance = res.data.data[0].count;
         } else {
           this.$message.error(res.msg);
         }
         this.right1loading = false;
       });
+      selectExtype({
+        jurisdiction: this.value1,
+        type: this.poorPerformanceType,
+      }).then((res) => {
+        if (res.data.code === 200) {
+          this.rightData.qualification = res.data.data[0].count;
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+      // selectExtypeUser().then(res => {
+      //   if (res.status === 200) {
+      //     this.rightData.qualification = res.data;
+      //   } else {
+      //     this.$message.error(res.msg);
+      //   }
+      // });
+      // }
+      // this.right1loading = false;
     },
     peoWarning() {
+      this.rightData.materialNum = 0;
+      this.rightData.punishNum = 0;
+      this.rightData.wgNum = 0;
+      this.rightData.ymwsNum = 0;
       this.right2loading = true;
-      this.getNoholderNum();
-      this.getNoSocialSecurity();
+      this.getPunishNum();
+      this.getMaterial();
+      this.getselectWg();
+      this.getselectYs();
     },
 
     companyWarning() {
       this.right1loading = true;
-      this.getPoorPerformance();
-      this.getQualification();
+      this.getPoorPerformance(3);
+      // this.getQualification();
     },
 
     goSystemHome() {
       // this.$router.push({ path: "/register/index" });
-      this.$router.push({ path: "/securityGuardManagement/register" });
-    },
-    getPoorPerformance(type) {
-      if (type === 0) {
-        this.rightData.poorPerformance = 2;
-        this.rightData.qualification = 3;
-      } else if (type === 1) {
-        this.rightData.poorPerformance = 11;
-        this.rightData.qualification = 14;
-      } else if (type === 2) {
-        this.rightData.poorPerformance = 32;
-        this.rightData.qualification = 45;
-      }
+      // this.$router.push({ path: "/securityGuardManagement/register" });
+      this.$router.push({ path: website.fistPage.value });
     },
   },
   mounted() {
-    this.startMove();
     this.initEchart();
     this.getHolderNum(0);
-    this.getPoorPerformance(0);
+    // this.getPoorPerformance(3);
     // this.getTableData("car");
     // this.initMap();
     this.getTableData(0);
@@ -845,4 +1392,7 @@
 /deep/ .el-loading-mask {
   background-color: transparent !important;
 }
+/deep/ .el-table .cell {
+  text-align: center;
+}
 </style>
diff --git a/src/views/home/indexEchart.js b/src/views/home/indexEchart.js
index 716e7b8..a57fda2 100644
--- a/src/views/home/indexEchart.js
+++ b/src/views/home/indexEchart.js
@@ -1,5 +1,5 @@
 import * as echarts from "echarts";
-import nc from '../../../public/nc.json';
+import nc from "../../../public/nc.json";
 function left1Data(allData) {
   let nameArr = [];
   let data1 = [];
@@ -10,12 +10,18 @@
   // let legend = ["自招保安单位", "保安培训公司", "保安服务公司", "武装守押公司"];
   allData.forEach(item => {
     nameArr.push(item.name);
-    data1.push(item.server.confess);
-    data2.push(item.server.staff);
-    data3.push(item.server.security);
-    data4.push(item.server.armed);
-    data5.push(item.server.region);
+    data1.push(item.server.confess || 0);
+    data2.push(item.server.staff || 0);
+    data3.push(item.server.security || 0);
+    data4.push(item.server.armed || 0);
+    data5.push(item.server.region || 0);
   });
+  nameArr.reverse();
+  data1.reverse();
+  data2.reverse();
+  data3.reverse();
+  data4.reverse();
+  data5.reverse();
   let option = {
     tooltip: {
       trigger: "axis",
@@ -28,13 +34,13 @@
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     color: [
-      '#2ec7c9',
-      '#b6a2de',
-      '#5ab1ef',
-      '#ffb980',
+      "#2ec7c9",
+      "#b6a2de",
+      "#5ab1ef",
+      "#ffb980",
 
       // "#fac858",
       // "#73c0de",
@@ -43,10 +49,10 @@
       "#9a60b4",
       "#3fb1e3",
       "#6be6c1",
-      '#626c91',
-      '#a0a7e6',
-      '#c4ebad',
-      '#96dee8'
+      "#626c91",
+      "#a0a7e6",
+      "#c4ebad",
+      "#96dee8"
     ],
     // legend: {
     //   data: ["自招保安单位", "保安培训公司", "保安服务公司", "武装守押公司"],
@@ -60,9 +66,9 @@
     //   // }
     // },
     grid: {
-      top: '5%',
+      top: "5%",
       left: "5%",
-      right: "8%",
+      right: "10%",
       bottom: "5%",
       containLabel: true
     },
@@ -90,7 +96,7 @@
         name: "自招保安单位",
         type: "bar",
         stack: "total",
-        barWidth: 20,
+        barWidth: 17,
         emphasis: {
           focus: "series"
         },
@@ -106,7 +112,7 @@
         data: data2
       },
       {
-        name: "保安服务公司",
+        name: "本市保安公司",
         type: "bar",
         stack: "total",
         emphasis: {
@@ -124,7 +130,7 @@
         data: data4
       },
       {
-        name: "跨区域保安公司",
+        name: "分公司",
         type: "bar",
         stack: "total",
         emphasis: {
@@ -157,7 +163,7 @@
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     color: [
       "#3fb1e3",
@@ -168,27 +174,36 @@
       "#9a60b4",
       "#3fb1e3",
       "#6be6c1",
-      '#626c91',
-      '#a0a7e6',
-      '#c4ebad',
-      '#96dee8'
+      "#626c91",
+      "#a0a7e6",
+      "#c4ebad",
+      "#96dee8"
     ],
     legend: {
       data: ["持证人数", "未持证人数"],
       bottom: "1%",
+      left: "13%",
       itemWidth: 20,
       textStyle: {
         color: "#fff"
       }
     },
     grid: {
-      top: '5%',
+      top: "10%",
       left: "5%",
       right: "6%",
-      bottom: "15%",
+      bottom: "4%",
       containLabel: true
     },
     xAxis: {
+      type: "category",
+      axisLabel: {
+        color: "#fff",
+        rotate: 40
+      },
+      data: nameArr
+    },
+    yAxis: {
       type: "value",
       axisLabel: {
         color: "#fff"
@@ -200,13 +215,6 @@
       splitLine: {
         show: false
       }
-    },
-    yAxis: {
-      type: "category",
-      axisLabel: {
-        color: "#fff"
-      },
-      data: nameArr
     },
     series: [
       {
@@ -236,12 +244,12 @@
 
 function left3Data(allData) {
   let data = [
-    { value: allData[0].mnum ? Number(allData[0].mnum) : 0, name: '男' },
-    { value: allData[0].gnum ? Number(allData[0].gnum) : 0, name: '女' }
-  ]
+    { value: allData[0].mnum ? Number(allData[0].mnum) : 0, name: "男" },
+    { value: allData[0].gnum ? Number(allData[0].gnum) : 0, name: "女" }
+  ];
   let option = {
     tooltip: {
-      trigger: 'item',
+      trigger: "item",
       formatter: "{a}<br>{b}:{c}({d}%)",
       axisPointer: {
         type: "shadow"
@@ -252,42 +260,42 @@
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
-    color: [
-      '#008DEC',
-      '#886EFF',
-    ],
-    legend: {
-      right: "8%",
-      bottom: "10%",
-      itemHeight: 10,
-      show: true,
-      selectedMode: false,
-      textStyle: {
-        color: "#fff"
-      },
-      data: ['男', '女'],
-      orient: "vertical"
+    color: ["#008DEC", "#886EFF"],
+    // legend: {
+    //   right: "8%",
+    //   bottom: "10%",
+    //   itemHeight: 10,
+    //   show: true,
+    //   selectedMode: false,
+    //   textStyle: {
+    //     color: "#fff"
+    //   },
+    //   data: ['男', '女'],
+    //   orient: "vertical"
+    // },
+    grid: {
+      top: "10%",
+      left: "5%",
+      right: "30%",
+      bottom: "4%",
+      containLabel: true
     },
     series: [
       {
-        name: '性别比例',
-        type: 'pie',
-        center: ['43%', '50%'],
-        radius: '70%',
+        name: "性别比例",
+        type: "pie",
+        center: ["33%", "50%"],
+        radius: "70%",
         data: data,
-        emphasis: {
-          itemStyle: {
-            shadowBlur: 10,
-            shadowOffsetX: 0,
-            shadowColor: 'rgba(0, 0, 0, 0.5)'
-          }
-        },
+        label: {
+          color: "#fff"
+        }
       }
     ]
   };
-  return option
+  return option;
 }
 
 function right1Data(allData) {
@@ -325,10 +333,10 @@
       "#9a60b4",
       "#3fb1e3",
       "#6be6c1",
-      '#626c91',
-      '#a0a7e6',
-      '#c4ebad',
-      '#96dee8'
+      "#626c91",
+      "#a0a7e6",
+      "#c4ebad",
+      "#96dee8"
     ],
 
     legend: {
@@ -390,10 +398,10 @@
       "#9a60b4",
       "#3fb1e3",
       "#6be6c1",
-      '#626c91',
-      '#a0a7e6',
-      '#c4ebad',
-      '#96dee8'
+      "#626c91",
+      "#a0a7e6",
+      "#c4ebad",
+      "#96dee8"
     ],
 
     legend: {
@@ -446,17 +454,17 @@
   let data = [];
   let legendData = [];
   let datas = allData.sort((a, b) => {
-    return b.Count - a.Count
-  })
+    return b.Count - a.Count;
+  });
   datas.forEach(item => {
     let obj = {
       name: item.jurname,
       value: item.Count
-    }
-    legendData.push(item.jurname)
+    };
+    legendData.push(item.jurname);
     // sumValue += Number(item.Count)
-    data.push(obj)
-  })
+    data.push(obj);
+  });
   // let arrName = getArrayValue(data, "name");
   // let arrValue = getArrayValue(data, "value");
   // let sumValue = 1000;
@@ -624,16 +632,18 @@
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     legend: {
-      right: "2%",
-      top: "10%",
+      right: "5%",
+      top: "5%",
       itemHeight: 10,
       show: true,
+      itemGap: 8,
       selectedMode: false,
       textStyle: {
-        color: "#fff"
+        color: "#fff",
+        fontSize: 9
       },
       data: legendData,
       orient: "vertical"
@@ -647,18 +657,18 @@
       "#9a60b4",
       "#3fb1e3",
       "#6be6c1",
-      '#626c91',
-      '#a0a7e6',
-      '#c4ebad',
-      '#96dee8'
+      "#626c91",
+      "#a0a7e6",
+      "#c4ebad",
+      "#96dee8"
     ],
     series: [
       {
-        name: '分局预警占比',
-        type: 'pie',
-        radius: '75%',
-        center: ['30%', '50%'],
-        roseType: 'radius',
+        name: "分局预警占比",
+        type: "pie",
+        radius: "75%",
+        center: ["35%", "55%"],
+        roseType: "radius",
         itemStyle: {
           borderRadius: 0
         },
@@ -671,7 +681,7 @@
           }
         },
         data: data
-      },
+      }
       // {
       //     name: '面积模式',
       //     type: 'pie',
@@ -711,15 +721,16 @@
   //   }
   //   return res;
   // };
-  let name = '';
-  let label = '';
-  let symbolUrl = '';
-  let geoData = []
-  allData['table'].forEach((item, i) => {
+  let name = "";
+  let label = "";
+  let symbolUrl = "";
+  let geoData = [];
+  allData["table"].forEach((item, i) => {
     let obj = {};
     if (type === 1) {
-      name = '保安员名称';
-      label = "押运人员:" +
+      name = "保安员名称";
+      label =
+        "押运人员:" +
         item.name +
         "<br />当前位置:" +
         item.location +
@@ -727,13 +738,13 @@
         item.linkman +
         "<br />联系电话:" +
         item.tel;
-      symbolUrl = require('@/assets/img/people.png')
+      symbolUrl = require("@/assets/img/people.png");
       obj = {
         name: label,
-        value: allData['geoData'][i]
-      }
+        value: allData["geoData"][i]
+      };
     } else if (type === 2) {
-      name = '押运车辆';
+      name = "押运车辆";
       label =
         "押运车辆车牌号:" +
         item.carNum +
@@ -745,14 +756,15 @@
         item.linkman +
         "<br />联系电话:" +
         item.tel;
-      symbolUrl = require('@/assets/img/car.png')
+      symbolUrl = require("@/assets/img/car.png");
       obj = {
         name: label,
-        value: allData['geoData'][i],
-      }
+        value: allData["geoData"][i]
+      };
     } else if (type === 3) {
-      name = '枪支';
-      label = "枪支编号:" +
+      name = "枪支";
+      label =
+        "枪支编号:" +
         item.number +
         "<br />当前位置:" +
         item.location +
@@ -762,17 +774,16 @@
         item.linkman +
         "<br />联系电话:" +
         item.tel;
-      symbolUrl = require('@/assets/img/gun.png')
+      symbolUrl = require("@/assets/img/gun.png");
       obj = {
         name: label,
-        value: allData['geoData'][i]
-      }
+        value: allData["geoData"][i]
+      };
     }
-    geoData.push(obj)
-  })
+    geoData.push(obj);
+  });
 
-
-  echarts.registerMap('ncMap', ncMap);
+  echarts.registerMap("ncMap", ncMap);
   // echarts.registerMap('chinaMapOutline', chinaMapOutline);
   let option = {
     // backgroundColor: '#181F4E',
@@ -780,12 +791,11 @@
     //   trigger: 'item',
     // },
     tooltip: {
-      trigger: 'item',
-      formatter: function (params) {
-        if (typeof (params.value)[1] == "undefined") {
+      trigger: "item",
+      formatter: function(params) {
+        if (typeof params.value[1] == "undefined") {
           return params.name;
         } else {
-          debugger
           return params.name;
         }
       },
@@ -793,104 +803,102 @@
       color: "#fff",
       borderWidth: "0", //边框宽度设置1
       borderColor: "gray", //设置边框颜色
-      extraCssText: 'box-shadow: 0 0 3px rgba(	211,211,211, 0.5);',
+      extraCssText: "box-shadow: 0 0 3px rgba(	211,211,211, 0.5);",
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     geo: {
       // silent: true,
-      map: 'ncMap',
+      map: "ncMap",
       show: true,
       zoom: 1.04,
-      top: '8%',
+      top: "8%",
       label: {
         show: false,
-        color: '#fff',
+        color: "#fff",
         emphasis: {
           textStyle: {
-            color: '#fff'
+            color: "#fff"
           }
         }
       },
 
       roam: true,
       itemStyle: {
-        areaColor: 'rgba(0,255,255,.02)',
-        borderColor: '#00ffff',
+        areaColor: "rgba(0,255,255,.02)",
+        borderColor: "#00ffff",
         borderWidth: 1.5,
-        shadowColor: '#00ffff',
+        shadowColor: "#00ffff",
         shadowOffsetX: 0,
         shadowOffsetY: 4,
-        shadowBlur: 10,
-
+        shadowBlur: 10
       },
       emphasis: {
         itemStyle: {
-          color: 'transparent', //悬浮背景
+          color: "transparent", //悬浮背景
           textStyle: {
-            color: '#fff'
+            color: "#fff"
           }
         }
       }
     },
     series: [
       {
-        map: 'ncMap',
+        map: "ncMap",
         // silent: true,
-        type: 'map',
+        type: "map",
         geoIndex: 0,
         // aspectScale: 0.75, //长宽比
         zoom: 1.14,
         label: {
           show: false,
-          color: '#fff'
+          color: "#fff"
         },
         emphasis: {
           label: {
-            color: '#fff'
+            color: "#fff"
           }
         },
-        top: '10%',
+        top: "10%",
         roam: true,
         itemStyle: {
-          areaColor: 'rgba(0,255,255,.02)',
-          borderColor: '#00ffff',
+          areaColor: "rgba(0,255,255,.02)",
+          borderColor: "#00ffff",
           borderWidth: 1.5,
-          shadowColor: '#00ffff',
+          shadowColor: "#00ffff",
           shadowOffsetX: 0,
           shadowOffsetY: 4,
-          shadowBlur: 10,
-
+          shadowBlur: 10
         },
         emphasis: {
           itemStyle: {
-            areaColor: 'transparent', //悬浮背景
+            areaColor: "transparent", //悬浮背景
             textStyle: {
-              color: '#fff'
+              color: "#fff"
             }
           }
         }
       },
       {
         name: name,
-        type: 'scatter',
-        coordinateSystem: 'geo',
+        type: "scatter",
+        coordinateSystem: "geo",
         // roam: false,
-        symbol: 'image://' + symbolUrl,
+        symbol: "image://" + symbolUrl,
         symbolSize: [30, 30],
         label: {
           show: false,
-          color: '#fff',
-          fontSize: 9,
+          color: "#fff",
+          fontSize: 9
         },
         itemStyle: {
-          color: '#FF0000', //标志颜色
+          color: "#FF0000" //标志颜色
         },
         data: geoData,
-        showEffectOn: 'render',
+        showEffectOn: "render",
         rippleEffect: {
-          brushType: 'stroke'
+          brushType: "stroke"
         },
         hoverAnimation: true,
         emphasis: {
@@ -899,8 +907,8 @@
         zlevel: 1
       }
     ]
-  }
-  return option
+  };
+  return option;
 }
 export default {
   left1Data,
diff --git a/src/views/licenseApproval/branchOffice.vue b/src/views/licenseApproval/branchOffice.vue
new file mode 100644
index 0000000..4169ac7
--- /dev/null
+++ b/src/views/licenseApproval/branchOffice.vue
@@ -0,0 +1,897 @@
+/*
+ * @Author: liu
+ * @Date: 2021-08-26 17:00:55 
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-08-28 10:28:39
+ */
+
+
+<template>
+  <div>
+    <basic-container class="permit">
+      <avue-crud
+        :option="option"
+        :table-loading="loading"
+        :data="data"
+        :page.sync="page"
+        :permission="permissionList"
+        :before-open="beforeOpen"
+        v-model="form"
+        ref="crud"
+        @row-update="rowUpdate"
+        @row-save="rowSave"
+        @row-del="rowDel"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @selection-change="selectionChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :row-style="rowStyle"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="danger"
+            size="small"
+            icon="el-icon-delete"
+            plain
+            v-if="permission.permit_delete"
+            @click="handleDelete"
+            >删 除
+          </el-button>
+        </template>
+        <template slot-scope="{ type, size, row }" slot="menu">
+          <el-button
+            icon="icon-zhengjian"
+            :size="size"
+            :type="type"
+            class="zhengJian-icon"
+            @click.stop="handleCredentials(row)"
+            >附件审查</el-button
+          >
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            v-if="row.type == '2'"
+            @click.stop="rowDel(row)"
+            >备案审批
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            @click.stop="viewLicense(row)"
+            v-if="row.type == '0'"
+            >打印备案证
+          </el-button>
+        </template>
+        <template class="tdtype" slot-scope="{ row }" slot="type">
+          <el-tag class="dtype">
+            {{
+              row.type == "0" ? "通过" : row.type == "1" ? "不通过" : "待审批"
+            }}
+            <i class="gz" v-if="row.type == '0'"></i>
+            <i class="yj" v-if="row.type == '1'"></i>
+            <i class="zc" v-if="row.type == '2'"></i>
+          </el-tag>
+        </template>
+      </avue-crud>
+    </basic-container>
+
+    <div
+      v-if="dialogVisible"
+      class="dialogVisibles"
+      :class="classStyle == 'print' ? 'printstyle' : ''"
+    >
+      <div
+        id="licence_box"
+        :class="classStyle == 'print' ? 'printstyle' : ''"
+        ref="licence"
+      >
+        <div class="licence" id="licence" v-if="dialogVisible">
+          <div class="licence-head">备案证</div>
+          <div class="head-tid">
+            洪公保服务
+            <span class="fontStyle">{{
+              licenceData.row.organizationcode
+            }}</span>
+            号
+          </div>
+          <div class="licence-main">
+            <div
+              class="l-m-once"
+              v-for="(item, index, key) in licenceData.chiden"
+              :key="key"
+            >
+              <span class="l-m-o-title"> {{ index }}: </span>
+              <span class="l-m-r-once">{{ item }}</span>
+            </div>
+          </div>
+          <div class="licence-bottom">发证机关(南昌市公安局)</div>
+          <div class="l-bottom">
+            发证日期
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(0, 4)
+            }}</span
+            >年
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(5, 7)
+            }}</span>
+            月
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(8, 10)
+            }}</span>
+            日
+          </div>
+        </div>
+        <span slot="footer" class="dialog-footer no-print PrintBut">
+          <el-button type="primary" @click="Print">打 印</el-button>
+          <el-button type="primary" @click="closePrint"> 取 消 </el-button>
+        </span>
+      </div>
+    </div>
+
+    <el-dialog
+      title=""
+      :visible.sync="dialogVisiblecc"
+      width="30%"
+      :modal-append-to-body="false"
+    >
+      <div class="flots">
+        <span class="f_title">是否通过备案审批?</span>
+        <span class="f_body">请输入修改意见:</span>
+        <textarea
+          name="reworkmes"
+          cols="40"
+          rows="4"
+          style="overflow: hidden"
+          v-model="textareaShenpi"
+        ></textarea>
+        <div class="but">
+          <el-button type="danger" @click="subcc">不通过</el-button>
+          <el-button type="primary" @click="closecc">通过</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getList,
+  getDetail,
+  add,
+  update,
+  remove,
+} from "@/api/licenseApproval/record";
+import { mapGetters } from "vuex";
+
+export default {
+  data() {
+    return {
+      classStyle: "print", //打印样式
+
+      dialogVisiblecc: false, //许可证审核抽屉
+      xukezData: {},
+
+      dialogVisible: false, //许可证抽屉
+      licenceData: {
+        row: {},
+        chiden: {},
+      },
+      textareaShenpi: "",
+
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      selectionList: [],
+      option: {
+        height: "auto",
+        calcHeight: 30,
+        excelBtn: true,
+        tip: false,
+        searchShowBtn: false,
+        searchShow: true,
+        searchMenuSpan: 8,
+        border: true,
+        menuWidth: 300,
+        labelWidth: 130,
+        headerAlign: "center",
+        align: "center",
+        // border: false,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "企业名称",
+            search: true,
+            prop: "enterprisename",
+            searchLabelWidth: 80,
+            searchSpan: 4,
+            overHidden: true,
+            width: 250,
+            rules: [
+              {
+                required: true,
+                message: "请输入企业名称",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "社会信用代码",
+            prop: "creditcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入统一社会信用代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人",
+            prop: "representative",
+            searchLabelWidth: 90,
+            search: true,
+            width: 82,
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人电话",
+            width: 106,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            width: 58,
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 96,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "单位许可证编号",
+            prop: "perid",
+            // labelWidth: 160,
+            // span: 12,
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "单位许可证编号",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "许可证发证机关",
+            prop: "offices",
+            // labelWidth: 160,
+            // span: 12,
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "许可证发证机关",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "发证时间",
+            prop: "officetime",
+            // labelWidth: 160,
+            // span: 12,
+            hide: true,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+          },
+          {
+            label: "注册时间",
+            hide: true,
+            prop: "establishtime",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "注册资本",
+            prop: "registeredcapital",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册资本",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "组织机构代码",
+            prop: "organizationcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入组织机构代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "工商注册号",
+            hide: true,
+            prop: "registrationnumber",
+            rules: [
+              {
+                required: true,
+                message: "请输入工商注册号",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "纳税人识别号",
+          //   prop: "identificationnumber",
+          //   hide: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入纳税人识别号",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          // {
+          //   label: "企业类型",
+          //   hide: true,
+          //   prop: "enterprises",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入企业类型",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "注册地址",
+            prop: "address",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入注册地址",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属地区",
+          //   hide: true,
+          //   prop: "region",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入所属地区",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "登记机关",
+            prop: "registration",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入登记机关",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "所属行业",
+            hide: true,
+            prop: "industry",
+            rules: [
+              {
+                required: true,
+                message: "请输入所属行业",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属机构",
+          //   prop: "deptid",
+          //   addDisplay: false,
+          //   type: "select",
+          //   hide: true,
+          //   dicUrl: "/api/blade-system/dept/selectIn",
+          //   props: {
+          //     label: "deptname",
+          //     value: "deptid",
+          //   },
+          // },
+          {
+            label: "所属辖区",
+            prop: "jurisdiction",
+            type: "tree",
+            dicUrl: "/api/jurisdiction/lazy-trees",
+            props: {
+              label: "title",
+              value: "id",
+            },
+            // labelWidth: 160,
+            // span: 12,
+          },
+          {
+            label: "许可类型",
+            // search: true,
+            hide: true,
+            prop: "ptype",
+            type: "select",
+            searchSpan: 4,
+            dicData: [
+              {
+                label: "设立分公司备案",
+                value: "2",
+              },
+            ],
+          },
+          {
+            label: "提交时间",
+            prop: "permitime",
+            overHidden: true,
+            addDisplay: false,
+            width: 132,
+            type: "date",
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: "审核状态",
+            prop: "type",
+            addDisplay: false,
+            type: "select",
+            dicData: [
+              {
+                label: "通过",
+                value: "0",
+              },
+              {
+                label: "不通过",
+                value: "1",
+              },
+              {
+                label: "待审核",
+                value: "2",
+              },
+            ],
+          },
+          {
+            label: "经营范围",
+            prop: "business",
+            component: "AvueUeditor",
+            hide: true,
+            minRows: 6,
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入经营范围",
+                trigger: "blur",
+              },
+            ],
+          },
+        ],
+      },
+      data: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.permit_add, false),
+        viewBtn: this.vaildData(this.permission.permit_view, true),
+        delBtn: this.vaildData(this.permission.permit_delete, false),
+        editBtn: this.vaildData(this.permission.permit_edit, false),
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  // mounted() {
+  //     console.log(this.userInfo.dept_id);
+  // },
+  methods: {
+    Print() {
+      this.$Print(this.$refs.licence);
+    },
+
+    handleCredentials(row) {
+      // console.log(row, "21354");
+      this.$router.push({
+        path: "/attachOnce/index",
+        // redirect: { name: "foo" },
+        // query: { row: row },
+        query: { deptid: row.cardid, type: "0" },
+        // params: { row: row.identificationnumber },
+      });
+    },
+    rowSave(row, done, loading) {
+      row.deptid = this.userInfo.dept_id;
+      add(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          window.console.log(error);
+        }
+      );
+    },
+    rowUpdate(row, index, done, loading) {
+      update(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          console.log(error);
+        }
+      );
+    },
+    rowDel(row) {
+      this.dialogVisiblecc = true;
+      this.xukezData = row;
+    },
+    closecc() {
+      this.xukezData.type = "0";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      console.log(this.xukezData);
+      update(this.xukezData);
+      this.textareaShenpi = "";
+      this.$message({
+        type: "success",
+        message: "审核通过!",
+      });
+    },
+    subcc() {
+      this.xukezData.type = "1";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      update(this.xukezData);
+      this.textareaShenpi = "";
+      this.$message({
+        type: "success",
+        message: "审核不通过!",
+      });
+    },
+
+    viewLicense(row) {
+      //查看许可证
+      this.licenceData.row = row;
+      this.licenceData.chiden = {};
+      this.licenceData.chiden["名称"] = row.enterprisename;
+      this.licenceData.chiden["住所"] = row.address;
+      this.licenceData.chiden["法定代表人"] = row.representative;
+      this.licenceData.chiden["服务范围"] = row.industry;
+      this.licenceData.chiden["注册资本"] = row.registeredcapital;
+      this.licenceData.chiden["批准文号"] = row.registrationnumber;
+
+      console.log(this.licenceData);
+      this.dialogVisible = true;
+    },
+    closePrint() {
+      this.dialogVisible = false;
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$refs.crud.toggleSelection();
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      params["ptype"] = 2;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+    rowStyle({ row }) {
+      if (row.dtype != null && row.dtype != "") {
+        if (row.dtype == "2") {
+          return {
+            color: "#F34A4A",
+          };
+        }
+        if (row.dtype == "1") {
+          return {
+            color: "#F48F57",
+          };
+        }
+      }
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.dtype {
+  width: 80px;
+}
+
+.dx {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #dfdfdf;
+}
+.zc {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #29c093;
+}
+.yj {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f34a4a;
+}
+.gz {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f48f57;
+}
+
+.el-tag {
+  display: inline-block;
+  width: 80px;
+
+  /*padding-right: 40px !important;*/
+}
+#licence_box {
+  position: relative;
+  top: 15px;
+  width: 1080px;
+  height: 780px;
+  background-color: #004ca7;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+.licence {
+  width: 960px;
+  height: 648px;
+  background-color: #fff !important;
+  background-image: url("/img/permit/服务许可背景图.png");
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  box-sizing: border-box;
+  padding: 10%;
+  color: #000;
+}
+.licence-head {
+  width: 100%;
+  height: 1.8rem;
+  font-size: 1.8rem;
+  text-align: center;
+}
+.head-tid {
+  position: relative;
+  left: 70%;
+}
+.head-tid span {
+  margin: 0 1rem;
+}
+.licence-main {
+  width: 80%;
+}
+.l-m-once {
+  width: 100%;
+  height: 2rem;
+  margin-top: 1rem;
+}
+.l-m-o-title {
+  font-size: 1.3rem;
+  width: 22%;
+  text-align: justify;
+  display: inline-block;
+}
+.l-m-r-once {
+  font-size: 1.1rem;
+  /* border: 1px solid #000; */
+  display: inline-block;
+  width: 77%;
+}
+.licence-bottom,
+.l-bottom {
+  position: relative;
+  left: 60%;
+  font-size: 1.5rem;
+  margin-top: 0.5rem;
+}
+.dialogVisibles {
+  position: fixed;
+  top: 0;
+  left: -10%;
+  height: 0;
+  width: 120%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 9000;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.printstyle {
+  background-color: #fff !important;
+}
+.PrintBut {
+  margin-top: 15px;
+}
+
+.flots {
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+  span {
+    display: inline-block;
+  }
+  .f_title {
+    position: absolute;
+    top: 15px;
+    font-size: 18px;
+  }
+}
+.but {
+  margin-top: 20px;
+  width: 100%;
+  display: flex;
+  align-content: center;
+  justify-content: center;
+}
+</style>
diff --git a/src/views/licenseApproval/cancellationOfFiling.vue b/src/views/licenseApproval/cancellationOfFiling.vue
new file mode 100644
index 0000000..f123d92
--- /dev/null
+++ b/src/views/licenseApproval/cancellationOfFiling.vue
@@ -0,0 +1,801 @@
+/*
+ * @Author: liu
+ * @Date: 2021-08-26 17:00:04 
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-08-28 10:28:44
+ */
+
+
+<template>
+  <div>
+    <basic-container class="permit">
+      <avue-crud
+        :option="option"
+        :table-loading="loading"
+        :data="data"
+        :page.sync="page"
+        :permission="permissionList"
+        :before-open="beforeOpen"
+        v-model="form"
+        ref="crud"
+        @row-update="rowUpdate"
+        @row-save="rowSave"
+        @row-del="rowDel"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @selection-change="selectionChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :row-style="rowStyle"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="danger"
+            size="small"
+            icon="el-icon-delete"
+            plain
+            v-if="permission.permit_delete"
+            @click="handleDelete"
+            >删 除
+          </el-button>
+        </template>
+        <template slot-scope="{ type, size, row }" slot="menu">
+          <el-button
+            icon="icon-zhengjian"
+            :size="size"
+            :type="type"
+            class="zhengJian-icon"
+            @click.stop="handleCredentials(row)"
+            >附件查阅
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            @click.stop="rowDel(row)"
+            v-if="row.type == '2'"
+            >撤销备案审批
+          </el-button>
+        </template>
+        <template class="tdtype" slot-scope="{ row }" slot="type">
+          <el-tag class="dtype">
+            {{
+              row.type == "0" ? "通过" : row.type == "1" ? "不通过" : "待审核"
+            }}
+            <i class="gz" v-if="row.type == '0'"></i>
+            <i class="yj" v-if="row.type == '1'"></i>
+            <i class="zc" v-if="row.type == '2'"></i>
+          </el-tag>
+        </template>
+      </avue-crud>
+    </basic-container>
+
+    <el-dialog
+      title=""
+      :visible.sync="dialogVisiblecc"
+      width="30%"
+      :modal-append-to-body="false"
+    >
+      <div class="flots">
+        <span class="f_title">是否通过撤销备案审批?</span>
+        <span class="f_body">请输入修改意见:</span>
+        <textarea
+          name="reworkmes"
+          cols="40"
+          rows="4"
+          style="overflow: hidden"
+          v-model="textareaShenpi"
+        ></textarea>
+        <div class="but">
+          <el-button type="danger" @click="subcc">不通过</el-button>
+          <el-button type="primary" @click="closecc">通过</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getList,
+  getDetail,
+  add,
+  update,
+  remove,
+} from "@/api/licenseApproval/revoke";
+import { mapGetters } from "vuex";
+
+export default {
+  data() {
+    return {
+      classStyle: "print", //打印样式
+
+      dialogVisiblecc: false, //许可证审核抽屉
+      xukezData: {},
+
+      dialogVisible: false, //许可证抽屉
+      licenceData: {
+        row: {},
+        chiden: {},
+      },
+      textareaShenpi: "",
+
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      selectionList: [],
+      option: {
+        height: "auto",
+        calcHeight: 30,
+        excelBtn: true,
+        tip: false,
+        searchShowBtn: false,
+        searchShow: true,
+        searchMenuSpan: 8,
+        border: true,
+        menuWidth: 300,
+        labelWidth: 130,
+        headerAlign: "center",
+        align: "center",
+        // border: false,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "企业名称",
+            search: true,
+            prop: "enterprisename",
+            searchLabelWidth: 80,
+            searchSpan: 4,
+            overHidden: true,
+            width: 250,
+            rules: [
+              {
+                required: true,
+                message: "请输入企业名称",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "社会信用代码",
+            prop: "creditcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入统一社会信用代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人",
+            prop: "representative",
+            searchLabelWidth: 90,
+            search: true,
+            width: 82,
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人电话",
+            width: 106,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            width: 58,
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 96,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "注册时间",
+            hide: true,
+            prop: "establishtime",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "注册资本",
+            prop: "registeredcapital",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册资本",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "组织机构代码",
+            prop: "organizationcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入组织机构代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "工商注册号",
+            hide: true,
+            prop: "registrationnumber",
+            rules: [
+              {
+                required: true,
+                message: "请输入工商注册号",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "纳税人识别号",
+          //   prop: "identificationnumber",
+          //   hide: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入纳税人识别号",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          // {
+          //   label: "企业类型",
+          //   hide: true,
+          //   prop: "enterprises",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入企业类型",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "注册地址",
+            prop: "address",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入注册地址",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属地区",
+          //   hide: true,
+          //   prop: "region",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入所属地区",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "登记机关",
+            prop: "registration",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入登记机关",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "所属行业",
+            hide: true,
+            prop: "industry",
+            rules: [
+              {
+                required: true,
+                message: "请输入所属行业",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属机构",
+          //   prop: "deptid",
+          //   addDisplay: false,
+          //   type: "select",
+          //   hide: true,
+          //   dicUrl: "/api/blade-system/dept/selectIn",
+          //   props: {
+          //     label: "deptname",
+          //     value: "deptid",
+          //   },
+          // },
+          {
+            label: "所属辖区",
+            prop: "jurisdiction",
+            type: "tree",
+            dicUrl: "/api/jurisdiction/lazy-trees",
+            props: {
+              label: "title",
+              value: "id",
+            },
+            // labelWidth: 160,
+            // span: 12,
+          },
+          {
+            label: "许可类型",
+            // search: true,
+            hide: true,
+            prop: "ptype",
+            type: "select",
+            searchSpan: 4,
+            dicData: [
+              {
+                label: "保安服务许可",
+                value: "0",
+              },
+            ],
+          },
+          {
+            label: "提交时间",
+            prop: "permitime",
+            overHidden: true,
+            addDisplay: false,
+            width: 132,
+            type: "date",
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: "审核状态",
+            prop: "type",
+            addDisplay: false,
+            type: "select",
+            dicData: [
+              {
+                label: "通过",
+                value: "0",
+              },
+              {
+                label: "不通过",
+                value: "1",
+              },
+              {
+                label: "待审核",
+                value: "2",
+              },
+            ],
+          },
+          {
+            label: "经营范围",
+            prop: "business",
+            component: "AvueUeditor",
+            hide: true,
+            minRows: 6,
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入经营范围",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "撤销原因",
+            prop: "reason",
+            // labelWidth: 160,
+            // span: 24,
+            hide: true,
+            type: "textarea",
+            rules: [
+              {
+                required: true,
+                message: "请输入撤销原因",
+                trigger: "blur",
+              },
+            ],
+          },
+        ],
+      },
+      data: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.permit_add, false),
+        viewBtn: this.vaildData(this.permission.permit_view, true),
+        delBtn: this.vaildData(this.permission.permit_delete, false),
+        editBtn: this.vaildData(this.permission.permit_edit, false),
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  // mounted() {
+  //     console.log(this.userInfo.dept_id);
+  // },
+  methods: {
+    Print() {
+      this.$Print(this.$refs.licence);
+    },
+
+    handleCredentials(row) {
+      this.$router.push({
+        path: "/attachOnce/index",
+        // redirect: { name: "foo" },
+        // query: { row: row },
+        query: { deptid: row.cardid, type: "0" },
+        // params: { row: row.identificationnumber },
+      });
+    },
+    rowSave(row, done, loading) {
+      row.deptid = this.userInfo.dept_id;
+      add(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          window.console.log(error);
+        }
+      );
+    },
+    rowUpdate(row, index, done, loading) {
+      update(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          console.log(error);
+        }
+      );
+    },
+    rowDel(row) {
+      this.dialogVisiblecc = true;
+      this.xukezData = row;
+    },
+    closecc() {
+      this.xukezData.type = "0";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      console.log(this.xukezData);
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+    subcc() {
+      this.xukezData.type = "1";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+
+    viewLicense(row) {
+      //查看许可证
+      this.licenceData.row = row;
+      this.licenceData.chiden = {};
+      this.licenceData.chiden["名称"] = row.enterprisename;
+      this.licenceData.chiden["住所"] = row.address;
+      this.licenceData.chiden["法定代表人"] = row.representative;
+      this.licenceData.chiden["服务范围"] = row.industry;
+      this.licenceData.chiden["注册资本"] = row.registeredcapital;
+      this.licenceData.chiden["批准文号"] = row.registrationnumber;
+
+      console.log(this.licenceData);
+      this.dialogVisible = true;
+    },
+    closePrint() {
+      this.dialogVisible = false;
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$refs.crud.toggleSelection();
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      params["ptype"] = 4;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+    rowStyle({ row }) {
+      if (row.dtype != null && row.dtype != "") {
+        if (row.dtype == "2") {
+          return {
+            color: "#F34A4A",
+          };
+        }
+        if (row.dtype == "1") {
+          return {
+            color: "#F48F57",
+          };
+        }
+      }
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.dtype {
+  width: 80px;
+}
+
+.dx {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #dfdfdf;
+}
+.zc {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #29c093;
+}
+.yj {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f34a4a;
+}
+.gz {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f48f57;
+}
+
+.el-tag {
+  display: inline-block;
+  width: 80px;
+
+  /*padding-right: 40px !important;*/
+}
+#licence_box {
+  position: relative;
+  top: 15px;
+  width: 1080px;
+  height: 780px;
+  background-color: #004ca7;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+.licence {
+  width: 960px;
+  height: 648px;
+  background-color: #fff !important;
+  background-image: url("/img/permit/服务许可背景图.png");
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  box-sizing: border-box;
+  padding: 10%;
+  color: #000;
+}
+.licence-head {
+  width: 100%;
+  height: 1.8rem;
+  font-size: 1.8rem;
+  text-align: center;
+}
+.head-tid {
+  position: relative;
+  left: 70%;
+}
+.head-tid span {
+  margin: 0 1rem;
+}
+.licence-main {
+  width: 80%;
+}
+.l-m-once {
+  width: 100%;
+  height: 2rem;
+  margin-top: 1rem;
+}
+.l-m-o-title {
+  font-size: 1.3rem;
+  width: 22%;
+  text-align: justify;
+  display: inline-block;
+}
+.l-m-r-once {
+  font-size: 1.1rem;
+  /* border: 1px solid #000; */
+  display: inline-block;
+  width: 77%;
+}
+.licence-bottom,
+.l-bottom {
+  position: relative;
+  left: 60%;
+  font-size: 1.5rem;
+  margin-top: 0.5rem;
+}
+.dialogVisibles {
+  position: fixed;
+  top: 0;
+  left: -10%;
+  height: 0;
+  width: 120%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 9000;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.printstyle {
+  background-color: #fff !important;
+}
+.PrintBut {
+  margin-top: 15px;
+}
+
+.flots {
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+  .f_title {
+    position: absolute;
+    top: 15px;
+    font-size: 18px;
+  }
+}
+.but {
+  margin-top: 20px;
+  width: 100%;
+  display: flex;
+  align-content: center;
+  justify-content: center;
+}
+</style>
diff --git a/src/views/licenseApproval/crossRegion.vue b/src/views/licenseApproval/crossRegion.vue
new file mode 100644
index 0000000..29b43ca
--- /dev/null
+++ b/src/views/licenseApproval/crossRegion.vue
@@ -0,0 +1,883 @@
+/*
+ * @Author:liu
+ * @Date: 2021-08-26 16:59:35 
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-08-28 10:28:50
+ */
+
+
+<template>
+  <div>
+    <basic-container class="permit">
+      <avue-crud
+        :option="option"
+        :table-loading="loading"
+        :data="data"
+        :page.sync="page"
+        :permission="permissionList"
+        :before-open="beforeOpen"
+        v-model="form"
+        ref="crud"
+        @row-update="rowUpdate"
+        @row-save="rowSave"
+        @row-del="rowDel"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @selection-change="selectionChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :row-style="rowStyle"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="danger"
+            size="small"
+            icon="el-icon-delete"
+            plain
+            v-if="permission.permit_delete"
+            @click="handleDelete"
+            >删 除
+          </el-button>
+        </template>
+        <template slot-scope="{ type, size, row }" slot="menu">
+          <el-button
+            icon="icon-zhengjian"
+            :size="size"
+            :type="type"
+            class="zhengJian-icon"
+            @click.stop="handleCredentials(row)"
+            >附件查阅
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            @click.stop="rowDel(row)"
+            v-if="row.type == '2'"
+            >备案审批
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            @click.stop="viewLicense(row)"
+            v-if="row.type == '0'"
+            >打印备案证
+          </el-button>
+        </template>
+        <template class="tdtype" slot-scope="{ row }" slot="type">
+          <el-tag class="dtype">
+            {{
+              row.type == "0" ? "通过" : row.type == "1" ? "不通过" : "待审核"
+            }}
+            <i class="gz" v-if="row.type == '0'"></i>
+            <i class="yj" v-if="row.type == '1'"></i>
+            <i class="zc" v-if="row.type == '2'"></i>
+          </el-tag>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <div
+      v-if="dialogVisible"
+      class="dialogVisibles"
+      :class="classStyle == 'print' ? 'printstyle' : ''"
+    >
+      <div
+        id="licence_box"
+        :class="classStyle == 'print' ? 'printstyle' : ''"
+        ref="licence"
+      >
+        <div class="licence" id="licence" v-if="dialogVisible">
+          <div class="licence-head">备案证</div>
+          <div class="head-tid">
+            洪公保服务
+            <span class="fontStyle">{{
+              licenceData.row.organizationcode
+            }}</span>
+            号
+          </div>
+          <div class="licence-main">
+            <div
+              class="l-m-once"
+              v-for="(item, index, key) in licenceData.chiden"
+              :key="key"
+            >
+              <span class="l-m-o-title"> {{ index }}: </span>
+              <span class="l-m-r-once">{{ item }}</span>
+            </div>
+          </div>
+          <div class="licence-bottom">发证机关(南昌市公安局)</div>
+          <div class="l-bottom">
+            发证日期
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(0, 4)
+            }}</span
+            >年
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(5, 7)
+            }}</span>
+            月
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(8, 10)
+            }}</span>
+            日
+          </div>
+        </div>
+        <span slot="footer" class="dialog-footer no-print PrintBut">
+          <el-button type="primary" @click="Print">打 印</el-button>
+          <el-button type="primary" @click="closePrint"> 取 消 </el-button>
+        </span>
+      </div>
+    </div>
+    <el-dialog
+      title=""
+      :visible.sync="dialogVisiblecc"
+      width="30%"
+      :modal-append-to-body="false"
+    >
+      <div class="flots">
+        <span class="f_title">是否通过备案审批?</span>
+        <span class="f_body">请输入修改意见:</span>
+        <textarea
+          name="reworkmes"
+          cols="40"
+          rows="4"
+          style="overflow: hidden"
+          v-model="textareaShenpi"
+        ></textarea>
+        <div class="but">
+          <el-button type="danger" @click="subcc">不通过</el-button>
+          <el-button type="primary" @click="closecc">通过</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getList,
+  getDetail,
+  add,
+  update,
+  remove,
+} from "@/api/licenseApproval/recordk";
+import { mapGetters } from "vuex";
+
+export default {
+  data() {
+    return {
+      classStyle: "print", //打印样式
+
+      dialogVisiblecc: false, //许可证审核抽屉
+      xukezData: {},
+
+      dialogVisible: false, //许可证抽屉
+      licenceData: {
+        row: {},
+        chiden: {},
+      },
+      textareaShenpi: "",
+
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      selectionList: [],
+      option: {
+        height: "auto",
+        calcHeight: 30,
+        excelBtn: true,
+        tip: false,
+        searchShowBtn: false,
+        searchShow: true,
+        searchMenuSpan: 8,
+        border: true,
+        menuWidth: 300,
+        labelWidth: 130,
+        headerAlign: "center",
+        align: "center",
+        // border: false,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "企业名称",
+            search: true,
+            prop: "enterprisename",
+            searchLabelWidth: 80,
+            searchSpan: 4,
+            overHidden: true,
+            width: 250,
+            rules: [
+              {
+                required: true,
+                message: "请输入企业名称",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "社会信用代码",
+            prop: "creditcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入统一社会信用代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人",
+            prop: "representative",
+            search: true,
+            searchLabelWidth: 90,
+            width: 82,
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人电话",
+            width: 106,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            width: 58,
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 96,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "单位许可证编号",
+            prop: "perid",
+            // labelWidth: 160,
+            // span: 12,
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "单位许可证编号",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "许可证发证机关",
+            prop: "offices",
+            // labelWidth: 160,
+            // span: 12,
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "许可证发证机关",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "发证时间",
+            prop: "officetime",
+            // labelWidth: 160,
+            // span: 12,
+            hide: true,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+          },
+          {
+            label: "注册时间",
+            hide: true,
+            prop: "establishtime",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "注册资本",
+            prop: "registeredcapital",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册资本",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "组织机构代码",
+            prop: "organizationcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入组织机构代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "工商注册号",
+            hide: true,
+            prop: "registrationnumber",
+            rules: [
+              {
+                required: true,
+                message: "请输入工商注册号",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "纳税人识别号",
+          //   prop: "identificationnumber",
+          //   hide: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入纳税人识别号",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          // {
+          //   label: "企业类型",
+          //   hide: true,
+          //   prop: "enterprises",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入企业类型",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "注册地址",
+            prop: "address",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入注册地址",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属地区",
+          //   hide: true,
+          //   prop: "region",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入所属地区",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "登记机关",
+            prop: "registration",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入登记机关",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "所属行业",
+            hide: true,
+            prop: "industry",
+            rules: [
+              {
+                required: true,
+                message: "请输入所属行业",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属机构",
+          //   prop: "deptid",
+          //   addDisplay: false,
+          //   type: "select",
+          //   hide: true,
+          //   dicUrl: "/api/blade-system/dept/selectIn",
+          //   props: {
+          //     label: "deptname",
+          //     value: "deptid",
+          //   },
+          // },
+          // {
+          //   label: "所属辖区",
+          //   prop: "jurisdiction",
+          //   type: "tree",
+          //   dicUrl: "/api/jurisdiction/lazy-trees",
+          //   props: {
+          //     label: "title",
+          //     value: "id",
+          //   },
+          //   // labelWidth: 160,
+          //   // span: 12,
+          // },
+          {
+            label: "许可类型",
+            // search: true,
+            hide: true,
+            prop: "ptype",
+            type: "select",
+            searchSpan: 4,
+            dicData: [
+              {
+                label: "设立分公司备案",
+                value: "2",
+              },
+            ],
+          },
+          {
+            label: "提交时间",
+            prop: "permitime",
+            overHidden: true,
+            addDisplay: false,
+            width: 132,
+            type: "date",
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: "审核状态",
+            prop: "type",
+            addDisplay: false,
+            type: "select",
+            dicData: [
+              {
+                label: "通过",
+                value: "0",
+              },
+              {
+                label: "不通过",
+                value: "1",
+              },
+              {
+                label: "待审核",
+                value: "2",
+              },
+            ],
+          },
+          {
+            label: "经营范围",
+            prop: "business",
+            component: "AvueUeditor",
+            hide: true,
+            minRows: 6,
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入经营范围",
+                trigger: "blur",
+              },
+            ],
+          },
+        ],
+      },
+      data: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.permit_add, false),
+        viewBtn: this.vaildData(this.permission.permit_view, true),
+        delBtn: this.vaildData(this.permission.permit_delete, false),
+        editBtn: this.vaildData(this.permission.permit_edit, false),
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  // mounted() {
+  //     console.log(this.userInfo.dept_id);
+  // },
+  methods: {
+    Print() {
+      this.$Print(this.$refs.licence);
+    },
+
+    handleCredentials(row) {
+      this.$router.push({
+        path: "/attachOnce/index",
+        // redirect: { name: "foo" },
+        // query: { row: row },
+        query: { deptid: row.cardid, type: "0" },
+        // params: { row: row.identificationnumber },
+      });
+    },
+    rowSave(row, done, loading) {
+      row.deptid = this.userInfo.dept_id;
+      add(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          window.console.log(error);
+        }
+      );
+    },
+    rowUpdate(row, index, done, loading) {
+      update(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          console.log(error);
+        }
+      );
+    },
+    rowDel(row) {
+      this.dialogVisiblecc = true;
+      this.xukezData = row;
+    },
+    closecc() {
+      this.xukezData.type = "0";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      console.log(this.xukezData);
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+    subcc() {
+      this.xukezData.type = "1";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+
+    viewLicense(row) {
+      //查看许可证
+      this.licenceData.row = row;
+      this.licenceData.chiden = {};
+      this.licenceData.chiden["名称"] = row.enterprisename;
+      this.licenceData.chiden["住所"] = row.address;
+      this.licenceData.chiden["法定代表人"] = row.representative;
+      this.licenceData.chiden["服务范围"] = row.industry;
+      this.licenceData.chiden["注册资本"] = row.registeredcapital;
+      this.licenceData.chiden["批准文号"] = row.registrationnumber;
+
+      console.log(this.licenceData);
+      this.dialogVisible = true;
+    },
+    closePrint() {
+      this.dialogVisible = false;
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$refs.crud.toggleSelection();
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      params["ptype"] = 5;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+    rowStyle({ row }) {
+      if (row.dtype != null && row.dtype != "") {
+        if (row.dtype == "2") {
+          return {
+            color: "#F34A4A",
+          };
+        }
+        if (row.dtype == "1") {
+          return {
+            color: "#F48F57",
+          };
+        }
+      }
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.dtype {
+  width: 80px;
+}
+
+.dx {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #dfdfdf;
+}
+.zc {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #29c093;
+}
+.yj {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f34a4a;
+}
+.gz {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f48f57;
+}
+
+.el-tag {
+  display: inline-block;
+  width: 80px;
+
+  /*padding-right: 40px !important;*/
+}
+#licence_box {
+  position: relative;
+  top: 15px;
+  width: 1080px;
+  height: 780px;
+  background-color: #004ca7;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+.licence {
+  width: 960px;
+  height: 648px;
+  background-color: #fff !important;
+  background-image: url("/img/permit/服务许可背景图.png");
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  box-sizing: border-box;
+  padding: 10%;
+  color: #000;
+}
+.licence-head {
+  width: 100%;
+  height: 1.8rem;
+  font-size: 1.8rem;
+  text-align: center;
+}
+.head-tid {
+  position: relative;
+  left: 70%;
+}
+.head-tid span {
+  margin: 0 1rem;
+}
+.licence-main {
+  width: 80%;
+}
+.l-m-once {
+  width: 100%;
+  height: 2rem;
+  margin-top: 1rem;
+}
+.l-m-o-title {
+  font-size: 1.3rem;
+  width: 22%;
+  text-align: justify;
+  display: inline-block;
+}
+.l-m-r-once {
+  font-size: 1.1rem;
+  /* border: 1px solid #000; */
+  display: inline-block;
+  width: 77%;
+}
+.licence-bottom,
+.l-bottom {
+  position: relative;
+  left: 60%;
+  font-size: 1.5rem;
+  margin-top: 0.5rem;
+}
+.dialogVisibles {
+  position: fixed;
+  top: 0;
+  left: -10%;
+  height: 0;
+  width: 120%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 9000;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.printstyle {
+  background-color: #fff !important;
+}
+.PrintBut {
+  margin-top: 15px;
+}
+
+.flots {
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+  .f_title {
+    position: absolute;
+    top: 15px;
+    font-size: 18px;
+  }
+}
+.but {
+  margin-top: 20px;
+  width: 100%;
+  display: flex;
+  align-content: center;
+  justify-content: center;
+}
+</style>
diff --git a/src/views/licenseApproval/securityGuard.vue b/src/views/licenseApproval/securityGuard.vue
new file mode 100644
index 0000000..e66fbe1
--- /dev/null
+++ b/src/views/licenseApproval/securityGuard.vue
@@ -0,0 +1,1000 @@
+/*
+ * @Author: liu
+ * @Date: 2021-08-26 16:57:58 
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-08-28 10:42:08
+ */
+
+
+<template>
+  <div>
+    <basic-container class="permit">
+      <avue-crud
+        :option="option"
+        :table-loading="loading"
+        :data="data"
+        :page.sync="page"
+        :permission="permissionList"
+        :before-open="beforeOpen"
+        v-model="form"
+        ref="crud"
+        @row-update="rowUpdate"
+        @row-save="rowSave"
+        @row-del="rowDel"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @selection-change="selectionChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :row-style="rowStyle"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="danger"
+            size="small"
+            icon="el-icon-delete"
+            plain
+            v-if="permission.permit_delete"
+            @click="handleDelete"
+            >删 除
+          </el-button>
+        </template>
+        <template slot-scope="{ type, size, row }" slot="menu">
+          <el-button
+            icon="icon-zhengjian"
+            :size="size"
+            :type="type"
+            class="zhengJian-icon"
+            @click.stop="handleCredentials(row)"
+            >附件审查</el-button
+          >
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            v-if="row.type == '2'"
+            @click.stop="rowDel(row)"
+            >备案审批
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            @click.stop="viewLicense(row)"
+            v-if="row.type == '0'"
+            >打印备案证
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            v-show="row.type == 0"
+            @click.stop="viewLicensehuizhi(row)"
+            >回执打印
+          </el-button>
+        </template>
+        <template class="tdtype" slot-scope="{ row }" slot="type">
+          <el-tag class="dtype">
+            {{
+              row.type == "0" ? "通过" : row.type == "1" ? "不通过" : "待审核"
+            }}
+            <i class="gz" v-if="row.type == '0'"></i>
+            <i class="yj" v-if="row.type == '1'"></i>
+            <i class="zc" v-if="row.type == '2'"></i>
+          </el-tag>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <div
+      v-if="dialogVisible"
+      class="dialogVisibles"
+      :class="classStyle == 'print' ? 'printstyle' : ''"
+    >
+      <div
+        id="licence_box"
+        :class="classStyle == 'print' ? 'printstyle' : ''"
+        ref="licence"
+      >
+        <div class="licence" id="licence" v-if="dialogVisible">
+          <div class="licence-head">备案证</div>
+          <div class="head-tid">
+            洪公保服务
+            <span class="fontStyle">{{
+              licenceData.row.organizationcode
+            }}</span>
+            号
+          </div>
+          <div class="licence-main">
+            <div
+              class="l-m-once"
+              v-for="(item, index, key) in licenceData.chiden"
+              :key="key"
+            >
+              <span class="l-m-o-title"> {{ index }}: </span>
+              <span class="l-m-r-once">{{ item }}</span>
+            </div>
+          </div>
+          <div class="licence-bottom">发证机关(南昌市公安局)</div>
+          <div class="l-bottom">
+            发证日期
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(0, 4)
+            }}</span
+            >年
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(5, 7)
+            }}</span>
+            月
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(8, 10)
+            }}</span>
+            日
+          </div>
+        </div>
+        <span slot="footer" class="dialog-footer no-print PrintBut">
+          <el-button type="primary" @click="Print">打 印</el-button>
+          <el-button type="primary" @click="closePrint"> 取 消 </el-button>
+        </span>
+      </div>
+    </div>
+
+    <div
+      v-if="dialogVisiblehuizhi"
+      class="dialogVisibles"
+      :class="classStyle == 'print' ? 'printstyle' : ''"
+    >
+      <div
+        id="licence_box"
+        :class="classStyle == 'print' ? 'printstyle' : ''"
+        ref="licencelicencehuizhi"
+      >
+        <div
+          class="licencehuizhi exam-box"
+          id="licencehuizhi"
+          v-if="dialogVisiblehuizhi"
+        >
+          <h3>回执单</h3>
+          <p>
+            南昌市公安局已收到
+            <span>{{ rowData == null ? "" : rowData.enterprisename }}</span>
+            的相关备案申请!
+          </p>
+
+          <div class="examine-bottom">
+            <ul>
+              <li>审批单位:<span>南昌市公安局</span></li>
+              <li>
+                日期:<span>{{
+                  rowData == null ? "" : rowData.examinetime
+                }}</span>
+              </li>
+            </ul>
+          </div>
+        </div>
+        <span slot="footer" class="dialog-footer no-print PrintBut">
+          <el-button type="primary" @click="Printhuizhi">打 印</el-button>
+          <el-button type="primary" @click="closePrinthuizhi">
+            取 消
+          </el-button>
+        </span>
+      </div>
+    </div>
+
+    <el-dialog
+      title=""
+      :visible.sync="dialogVisiblecc"
+      width="30%"
+      :modal-append-to-body="false"
+    >
+      <div class="flots">
+        <span class="f_title">是否通过备案审批?</span>
+        <span class="f_body">请输入修改意见:</span>
+        <textarea
+          name="reworkmes"
+          cols="40"
+          rows="4"
+          style="overflow: hidden"
+          v-model="textareaShenpi"
+        ></textarea>
+        <div class="but">
+          <el-button type="danger" @click="subcc">不通过</el-button>
+          <el-button type="primary" @click="closecc">通过</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getList,
+  getDetail,
+  add,
+  update,
+  remove,
+} from "@/api/licenseApproval/record";
+import { mapGetters } from "vuex";
+
+export default {
+  data() {
+    return {
+      classStyle: "print", //打印样式
+
+      dialogVisiblecc: false, //许可证审核抽屉
+      xukezData: {},
+
+      dialogVisiblehuizhi: false, //回执
+
+      dialogVisible: false, //许可证抽屉
+      licenceData: {
+        row: {},
+        chiden: {},
+      },
+      textareaShenpi: "",
+
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      selectionList: [],
+      option: {
+        height: "auto",
+        calcHeight: 30,
+        excelBtn: true,
+        tip: false,
+        searchShowBtn: false,
+        searchShow: true,
+        searchMenuSpan: 8,
+        border: true,
+        menuWidth: 378,
+        labelWidth: 130,
+        headerAlign: "center",
+        align: "center",
+        // border: false,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "企业名称",
+            search: true,
+            prop: "enterprisename",
+            searchLabelWidth: 80,
+            searchSpan: 4,
+            overHidden: true,
+            width: 200,
+            rules: [
+              {
+                required: true,
+                message: "请输入企业名称",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "社会信用代码",
+            prop: "creditcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入统一社会信用代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人",
+            prop: "representative",
+            search: true,
+            width: 82,
+            searchLabelWidth: 90,
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人电话",
+            width: 106,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            width: 58,
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 96,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "单位许可证编号",
+            prop: "perid",
+            // labelWidth: 160,
+            // span: 12,
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "单位许可证编号",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "许可证发证机关",
+            prop: "offices",
+            // labelWidth: 160,
+            // span: 12,
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "许可证发证机关",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "发证时间",
+            prop: "officetime",
+            // labelWidth: 160,
+            // span: 12,
+            hide: true,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+          },
+          {
+            label: "注册时间",
+            hide: true,
+            prop: "establishtime",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "注册资本",
+            prop: "registeredcapital",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册资本",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "组织机构代码",
+            prop: "organizationcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入组织机构代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "工商注册号",
+            hide: true,
+            prop: "registrationnumber",
+            rules: [
+              {
+                required: true,
+                message: "请输入工商注册号",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "纳税人识别号",
+          //   prop: "identificationnumber",
+          //   hide: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入纳税人识别号",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          // {
+          //   label: "企业类型",
+          //   hide: true,
+          //   prop: "enterprises",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入企业类型",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "注册地址",
+            prop: "address",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入注册地址",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属地区",
+          //   hide: true,
+          //   prop: "region",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入所属地区",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "登记机关",
+            prop: "registration",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入登记机关",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "所属行业",
+            hide: true,
+            prop: "industry",
+            rules: [
+              {
+                required: true,
+                message: "请输入所属行业",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属机构",
+          //   prop: "deptid",
+          //   addDisplay: false,
+          //   type: "select",
+          //   hide: true,
+          //   dicUrl: "/api/blade-system/dept/selectIn",
+          //   props: {
+          //     label: "deptname",
+          //     value: "deptid",
+          //   },
+          // },
+          {
+            label: "所属辖区",
+            prop: "jurisdiction",
+            type: "tree",
+            dicUrl: "/api/jurisdiction/lazy-trees",
+            props: {
+              label: "title",
+              value: "id",
+            },
+            // labelWidth: 160,
+            // span: 12,
+          },
+          {
+            label: "许可类型",
+            // search: true,
+            hide: true,
+            prop: "ptype",
+            type: "select",
+            searchSpan: 4,
+            dicData: [
+              {
+                label: "自招保安单位备案",
+                value: "3",
+              },
+            ],
+          },
+          {
+            label: "提交时间",
+            prop: "permitime",
+            overHidden: true,
+            addDisplay: false,
+            width: 132,
+            type: "date",
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: "审核状态",
+            prop: "type",
+            addDisplay: false,
+            type: "select",
+            width: 80,
+            dicData: [
+              {
+                label: "通过",
+                value: "0",
+              },
+              {
+                label: "不通过",
+                value: "1",
+              },
+              {
+                label: "待审核",
+                value: "2",
+              },
+            ],
+          },
+          {
+            label: "经营范围",
+            prop: "business",
+            component: "AvueUeditor",
+            hide: true,
+            minRows: 6,
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入经营范围",
+                trigger: "blur",
+              },
+            ],
+          },
+        ],
+      },
+      data: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.permit_add, false),
+        viewBtn: this.vaildData(this.permission.permit_view, true),
+        delBtn: this.vaildData(this.permission.permit_delete, false),
+        editBtn: this.vaildData(this.permission.permit_edit, false),
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  // mounted() {
+  //     console.log(this.userInfo.dept_id);
+  // },
+  methods: {
+    Printhuizhi() {
+      this.$Print(this.$refs.licencehuizhi);
+    },
+    Print() {
+      this.$Print(this.$refs.licence);
+    },
+
+    handleCredentials(row) {
+      this.$router.push({
+        path: "/attachOnce/index",
+        // redirect: { name: "foo" },
+        // query: { row: row },
+        query: { deptid: row.cardid, type: "0" },
+        // params: { row: row.identificationnumber },
+      });
+    },
+    rowSave(row, done, loading) {
+      row.deptid = this.userInfo.dept_id;
+      add(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          window.console.log(error);
+        }
+      );
+    },
+    rowUpdate(row, index, done, loading) {
+      update(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          console.log(error);
+        }
+      );
+    },
+    rowDel(row) {
+      this.dialogVisiblecc = true;
+      this.xukezData = row;
+    },
+    closecc() {
+      this.xukezData.type = "0";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      console.log(this.xukezData);
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+    subcc() {
+      this.xukezData.type = "1";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+
+    viewLicensehuizhi() {
+      this.dialogVisiblehuizhi = true;
+    },
+    closePrinthuizhi() {
+      this.dialogVisiblehuizhi = false;
+    },
+    viewLicense(row) {
+      //查看许可证
+      this.licenceData.row = row;
+      this.licenceData.chiden = {};
+      this.licenceData.chiden["名称"] = row.enterprisename;
+      this.licenceData.chiden["住所"] = row.address;
+      this.licenceData.chiden["法定代表人"] = row.representative;
+      this.licenceData.chiden["服务范围"] = row.industry;
+      this.licenceData.chiden["注册资本"] = row.registeredcapital;
+      this.licenceData.chiden["批准文号"] = row.registrationnumber;
+
+      console.log(this.licenceData);
+      this.dialogVisible = true;
+    },
+    closePrint() {
+      this.dialogVisible = false;
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$refs.crud.toggleSelection();
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      params["ptype"] = 3;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+    rowStyle({ row }) {
+      if (row.dtype != null && row.dtype != "") {
+        if (row.dtype == "2") {
+          return {
+            color: "#F34A4A",
+          };
+        }
+        if (row.dtype == "1") {
+          return {
+            color: "#F48F57",
+          };
+        }
+      }
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.dtype {
+  width: 80px;
+}
+
+.dx {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #dfdfdf;
+}
+.zc {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #29c093;
+}
+.yj {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f34a4a;
+}
+.gz {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f48f57;
+}
+
+.el-tag {
+  display: inline-block;
+  width: 80px;
+
+  /*padding-right: 40px !important;*/
+}
+#licence_box {
+  position: relative;
+  top: 15px;
+  width: 1080px;
+  height: 780px;
+  background-color: #004ca7;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+.licence {
+  width: 960px;
+  height: 648px;
+  background-color: #fff !important;
+  background-image: url("/img/permit/服务许可背景图.png");
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  box-sizing: border-box;
+  padding: 10%;
+  color: #000;
+}
+.licencehuizhi {
+  width: 800px;
+  height: 348px;
+  background-color: #fff !important;
+  // background-image: url("../../static/img/permit/服务许可背景图.png");
+  border: 1px solid rgba(#a3a3a3, 0.5);
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  box-sizing: border-box;
+  padding: 10%;
+  color: #000;
+}
+.licence-head {
+  width: 100%;
+  height: 1.8rem;
+  font-size: 1.8rem;
+  text-align: center;
+}
+.head-tid {
+  position: relative;
+  left: 70%;
+}
+.head-tid span {
+  margin: 0 1rem;
+}
+.licence-main {
+  width: 80%;
+}
+.l-m-once {
+  width: 100%;
+  height: 2rem;
+  margin-top: 1rem;
+}
+.l-m-o-title {
+  font-size: 1.3rem;
+  width: 22%;
+  text-align: justify;
+  display: inline-block;
+}
+.l-m-r-once {
+  font-size: 1.1rem;
+  /* border: 1px solid #000; */
+  display: inline-block;
+  width: 77%;
+}
+.licence-bottom,
+.l-bottom {
+  position: relative;
+  left: 60%;
+  font-size: 1.5rem;
+  margin-top: 0.5rem;
+}
+.dialogVisibles {
+  position: fixed;
+  top: 0;
+  left: -10%;
+  height: 0;
+  width: 120%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 9000;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.printstyle {
+  background-color: #fff !important;
+}
+.PrintBut {
+  margin-top: 15px;
+}
+
+.flots {
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+  span {
+    display: inline-block;
+  }
+  .f_title {
+    position: absolute;
+    top: 15px;
+    font-size: 18px;
+  }
+}
+.but {
+  margin-top: 20px;
+  width: 100%;
+  display: flex;
+  align-content: center;
+  justify-content: center;
+}
+.exam-box {
+  width: 100%;
+  height: 360px;
+
+  position: relative;
+  padding: 10px;
+  background: #fff !important;
+  color: #000;
+
+  box-sizing: border-box;
+}
+.exam-box h3 {
+  margin: 0;
+  text-align: center;
+  font-size: 28px;
+  letter-spacing: 10px;
+  line-height: 46px;
+}
+
+.exam-box p {
+  text-indent: 2em;
+  font-size: 18px;
+}
+
+.exam-box .examine-bottom {
+  position: absolute;
+  bottom: 10px;
+  right: 10px;
+}
+
+.exam-box li {
+  list-style: none;
+  font-size: 18px;
+  line-height: 32px;
+}
+
+.exam-box span {
+  text-decoration: underline;
+}
+</style>
diff --git a/src/views/licenseApproval/securityPermit.vue b/src/views/licenseApproval/securityPermit.vue
new file mode 100644
index 0000000..28d6ec8
--- /dev/null
+++ b/src/views/licenseApproval/securityPermit.vue
@@ -0,0 +1,899 @@
+
+/*
+ * @Author: liu
+ * @Date: 2021-08-26 16:22:20 
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-08-28 10:29:07
+ */
+
+<template>
+  <div>
+    <basic-container class="permit">
+      <avue-crud
+        :option="option"
+        :table-loading="loading"
+        :data="data"
+        :page.sync="page"
+        :permission="permissionList"
+        :before-open="beforeOpen"
+        v-model="form"
+        ref="crud"
+        @row-update="rowUpdate"
+        @row-save="rowSave"
+        @row-del="rowDel"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @selection-change="selectionChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :row-style="rowStyle"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="danger"
+            size="small"
+            icon="el-icon-delete"
+            plain
+            v-if="permission.permit_delete"
+            @click="handleDelete"
+            >删 除
+          </el-button>
+        </template>
+        <template slot-scope="{ type, size, row }" slot="menu">
+          <el-button
+            icon="icon-zhengjian"
+            :size="size"
+            :type="type"
+            class="zhengJian-icon"
+            @click.stop="handleCredentials(row)"
+            >附件查阅
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            @click.stop="rowDel(row)"
+            v-if="row.type == '2'"
+            >许可审批
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            @click.stop="viewLicense(row)"
+            v-if="row.type == '0'"
+            >打印许可证
+          </el-button>
+        </template>
+        <template class="tdtype" slot-scope="{ row }" slot="type">
+          <el-tag class="dtype">
+            {{
+              row.type == "0" ? "通过" : row.type == "1" ? "不通过" : "待审核"
+            }}
+            <i class="gz" v-if="row.type == '0'"></i>
+            <i class="yj" v-if="row.type == '1'"></i>
+            <i class="zc" v-if="row.type == '2'"></i>
+          </el-tag>
+        </template>
+      </avue-crud>
+    </basic-container>
+
+    <!-- <el-dialog
+      :visible.sync="dialogVisible"
+      :before-close="handleClose"
+      :modal-append-to-body="false"
+      width="1005px"
+      top="10vh"
+      class="printstyle"
+    >
+      <div id="licence_box">
+        <div class="licence" id="licence" v-if="dialogVisible">
+          <div class="licence-head">保安服务许可证</div>
+          <div class="head-tid">
+            洪公保服务
+            <span class="fontStyle">{{
+              licenceData.row.organizationcode
+            }}</span>
+            号
+          </div>
+          <div class="licence-main">
+            <div
+              class="l-m-once"
+              v-for="(item, index, key) in licenceData.chiden"
+              :key="key"
+            >
+              <span class="l-m-o-title"> {{ index }}: </span>
+              <span class="l-m-r-once">{{ item }}</span>
+            </div>
+          </div>
+          <div class="licence-bottom">发证机关(南昌市公安局)</div>
+          <div class="l-bottom">
+            发证日期
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(0, 4)
+            }}</span
+            >年
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(5, 7)
+            }}</span>
+            月
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(8, 10)
+            }}</span>
+            日
+          </div>
+        </div>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="Print">打 印</el-button>
+      </span>
+    </el-dialog> -->
+    <div
+      v-if="dialogVisible"
+      class="dialogVisibles"
+      :class="classStyle == 'print' ? 'printstyle' : ''"
+    >
+      <div
+        id="licence_box"
+        :class="classStyle == 'print' ? 'printstyle' : ''"
+        ref="licence"
+      >
+        <div class="licence" id="licence" v-if="dialogVisible">
+          <div class="licence-head">保安服务许可证</div>
+          <div class="head-tid">
+            洪公保服务
+            <span class="fontStyle">{{
+              licenceData.row.organizationcode
+            }}</span>
+            号
+          </div>
+          <div class="licence-main">
+            <div
+              class="l-m-once"
+              v-for="(item, index, key) in licenceData.chiden"
+              :key="key"
+            >
+              <span class="l-m-o-title"> {{ index }}: </span>
+              <span class="l-m-r-once">{{ item }}</span>
+            </div>
+          </div>
+          <div class="licence-bottom">发证机关(南昌市公安局)</div>
+          <div class="l-bottom">
+            发证日期
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(0, 4)
+            }}</span
+            >年
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(5, 7)
+            }}</span>
+            月
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(8, 10)
+            }}</span>
+            日
+          </div>
+        </div>
+        <span slot="footer" class="dialog-footer no-print PrintBut">
+          <el-button type="primary" @click="Print">打 印</el-button>
+          <el-button type="primary" @click="closePrint"> 取 消 </el-button>
+        </span>
+      </div>
+    </div>
+
+    <el-dialog
+      title=""
+      :visible.sync="dialogVisiblecc"
+      width="30%"
+      :modal-append-to-body="false"
+    >
+      <div class="flots">
+        <span class="f_title">是否通过审核?</span>
+        <span class="f_body">请输入修改意见:</span>
+        <textarea
+          name="reworkmes"
+          cols="40"
+          rows="4"
+          style="overflow: hidden"
+          v-model="textareaShenpi"
+        ></textarea>
+        <div class="but">
+          <el-button type="danger" @click="subcc">不通过</el-button>
+          <el-button type="primary" @click="closecc">通过</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getList,
+  getDetail,
+  add,
+  update,
+  remove,
+} from "@/api/licenseApproval/permit";
+import { mapGetters } from "vuex";
+
+export default {
+  data() {
+    return {
+      classStyle: "print", //打印样式
+
+      dialogVisiblecc: false, //许可证审核抽屉
+      xukezData: {},
+
+      dialogVisible: false, //许可证抽屉
+      licenceData: {
+        row: {},
+        chiden: {},
+      },
+      textareaShenpi: "",
+
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      selectionList: [],
+      option: {
+        height: "auto",
+        calcHeight: 30,
+        excelBtn: true,
+        tip: false,
+        searchShowBtn: false,
+        searchShow: true,
+        searchMenuSpan: 8,
+        border: true,
+        menuWidth: 300,
+        labelWidth: 130,
+        headerAlign: "center",
+        align: "center",
+        // border: false,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "企业名称",
+            search: true,
+            prop: "enterprisename",
+            searchLabelWidth: 80,
+            searchSpan: 4,
+            overHidden: true,
+            width: 250,
+            rules: [
+              {
+                required: true,
+                message: "请输入企业名称",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "社会信用代码",
+            prop: "creditcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入统一社会信用代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人",
+            prop: "representative",
+            search: true,
+            searchLabelWidth: 90,
+            width: 82,
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人电话",
+            width: 106,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            width: 58,
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 96,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "注册时间",
+            hide: true,
+            prop: "establishtime",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "注册资本",
+            prop: "registeredcapital",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册资本",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "组织机构代码",
+            prop: "organizationcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入组织机构代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "工商注册号",
+            hide: true,
+            prop: "registrationnumber",
+            rules: [
+              {
+                required: true,
+                message: "请输入工商注册号",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "纳税人识别号",
+          //   prop: "identificationnumber",
+          //   hide: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入纳税人识别号",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          // {
+          //   label: "企业类型",
+          //   hide: true,
+          //   prop: "enterprises",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入企业类型",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "注册地址",
+            prop: "address",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入注册地址",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属地区",
+          //   hide: true,
+          //   prop: "region",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入所属地区",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "登记机关",
+            prop: "registration",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入登记机关",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "所属行业",
+            hide: true,
+            prop: "industry",
+            rules: [
+              {
+                required: true,
+                message: "请输入所属行业",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属机构",
+          //   prop: "deptid",
+          //   addDisplay: false,
+          //   type: "select",
+          //   hide: true,
+          //   dicUrl: "/api/blade-system/dept/selectIn",
+          //   props: {
+          //     label: "deptname",
+          //     value: "deptid",
+          //   },
+          // },
+          {
+            label: "所属辖区",
+            prop: "jurisdiction",
+            type: "tree",
+            dicUrl: "/api/jurisdiction/lazy-trees",
+            props: {
+              label: "title",
+              value: "id",
+            },
+            // labelWidth: 160,
+            // span: 12,
+          },
+          {
+            label: "许可类型",
+            // search: true,
+            hide: true,
+            prop: "ptype",
+            type: "select",
+            searchSpan: 4,
+            dicData: [
+              {
+                label: "保安服务许可",
+                value: "0",
+              },
+            ],
+          },
+          {
+            label: "提交时间",
+            prop: "permitime",
+            overHidden: true,
+            addDisplay: false,
+            width: 132,
+            type: "date",
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: "审核状态",
+            prop: "type",
+            addDisplay: false,
+            type: "select",
+            dicData: [
+              {
+                label: "通过",
+                value: "0",
+              },
+              {
+                label: "不通过",
+                value: "1",
+              },
+              {
+                label: "待审核",
+                value: "2",
+              },
+            ],
+          },
+          {
+            label: "经营范围",
+            prop: "business",
+            component: "AvueUeditor",
+            hide: true,
+            minRows: 6,
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入经营范围",
+                trigger: "blur",
+              },
+            ],
+          },
+        ],
+      },
+      data: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.permit_add, false),
+        viewBtn: this.vaildData(this.permission.permit_view, true),
+        delBtn: this.vaildData(this.permission.permit_delete, false),
+        editBtn: this.vaildData(this.permission.permit_edit, false),
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  // mounted() {
+  //     console.log(this.userInfo.dept_id);
+  // },
+  methods: {
+    Print() {
+      this.$Print(this.$refs.licence);
+    },
+
+    handleCredentials(row) {
+      console.log(row, "21354");
+      this.$router.push({
+        path: "/attachOnce/index",
+        // redirect: { name: "foo" },
+        // query: { row: row },
+        query: { deptid: row.cardid, type: "0" },
+        // params: { row: row.identificationnumber },
+      });
+    },
+    rowSave(row, done, loading) {
+      row.deptid = this.userInfo.dept_id;
+      add(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          window.console.log(error);
+        }
+      );
+    },
+    rowUpdate(row, index, done, loading) {
+      update(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          console.log(error);
+        }
+      );
+    },
+    rowDel(row) {
+      this.dialogVisiblecc = true;
+      this.xukezData = row;
+    },
+    closecc() {
+      this.xukezData.type = "0";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      console.log(this.xukezData);
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+    subcc() {
+      this.xukezData.type = "1";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+
+    viewLicense(row) {
+      //查看许可证
+      this.licenceData.row = row;
+      this.licenceData.chiden = {};
+      this.licenceData.chiden["名称"] = row.enterprisename;
+      this.licenceData.chiden["住所"] = row.address;
+      this.licenceData.chiden["法定代表人"] = row.representative;
+      this.licenceData.chiden["服务范围"] = row.industry;
+      this.licenceData.chiden["注册资本"] = row.registeredcapital;
+      this.licenceData.chiden["批准文号"] = row.registrationnumber;
+
+      console.log(this.licenceData);
+      this.dialogVisible = true;
+    },
+    closePrint() {
+      this.dialogVisible = false;
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$refs.crud.toggleSelection();
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      params["ptype"] = 0;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+    rowStyle({ row }) {
+      if (row.dtype != null && row.dtype != "") {
+        if (row.dtype == "2") {
+          return {
+            color: "#F34A4A",
+          };
+        }
+        if (row.dtype == "1") {
+          return {
+            color: "#F48F57",
+          };
+        }
+      }
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.dtype {
+  width: 80px;
+}
+
+.dx {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #dfdfdf;
+}
+.zc {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #29c093;
+}
+.yj {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f34a4a;
+}
+.gz {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f48f57;
+}
+
+.el-tag {
+  display: inline-block;
+  width: 80px;
+
+  /*padding-right: 40px !important;*/
+}
+#licence_box {
+  position: relative;
+  top: 15px;
+  width: 1080px;
+  height: 780px;
+  background-color: #004ca7;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+.licence {
+  width: 960px;
+  height: 648px;
+  background-color: #fff !important;
+  background-image: url("/img/permit/服务许可背景图.png");
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  box-sizing: border-box;
+  padding: 10%;
+  color: #000;
+}
+.licence-head {
+  width: 100%;
+  height: 1.8rem;
+  font-size: 1.8rem;
+  text-align: center;
+}
+.head-tid {
+  position: relative;
+  left: 70%;
+}
+.head-tid span {
+  margin: 0 1rem;
+}
+.licence-main {
+  width: 80%;
+}
+.l-m-once {
+  width: 100%;
+  height: 2rem;
+  margin-top: 1rem;
+}
+.l-m-o-title {
+  font-size: 1.3rem;
+  width: 22%;
+  text-align: justify;
+  display: inline-block;
+}
+.l-m-r-once {
+  font-size: 1.1rem;
+  /* border: 1px solid #000; */
+  display: inline-block;
+  width: 77%;
+}
+.licence-bottom,
+.l-bottom {
+  position: relative;
+  left: 60%;
+  font-size: 1.5rem;
+  margin-top: 0.5rem;
+}
+.dialogVisibles {
+  position: fixed;
+  top: 0;
+  left: -10%;
+  height: 0;
+  width: 120%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 9000;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.printstyle {
+  background-color: #fff !important;
+}
+.PrintBut {
+  margin-top: 15px;
+}
+
+.flots {
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+  .f_title {
+    position: absolute;
+    top: 15px;
+    font-size: 18px;
+  }
+}
+.but {
+  margin-top: 20px;
+  width: 100%;
+  display: flex;
+  align-content: center;
+  justify-content: center;
+}
+</style>
diff --git a/src/views/licenseApproval/securityTraining.vue b/src/views/licenseApproval/securityTraining.vue
new file mode 100644
index 0000000..822dea1
--- /dev/null
+++ b/src/views/licenseApproval/securityTraining.vue
@@ -0,0 +1,898 @@
+/*
+ * @Author: liu
+ * @Date: 2021-08-26 16:55:25 
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-08-28 10:29:12
+ */
+
+
+<template>
+  <div>
+    <basic-container class="permit">
+      <avue-crud
+        :option="option"
+        :table-loading="loading"
+        :data="data"
+        :page.sync="page"
+        :permission="permissionList"
+        :before-open="beforeOpen"
+        v-model="form"
+        ref="crud"
+        @row-update="rowUpdate"
+        @row-save="rowSave"
+        @row-del="rowDel"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @selection-change="selectionChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :row-style="rowStyle"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="danger"
+            size="small"
+            icon="el-icon-delete"
+            plain
+            v-if="permission.permit_delete"
+            @click="handleDelete"
+            >删 除
+          </el-button>
+        </template>
+        <template slot-scope="{ type, size, row }" slot="menu">
+          <el-button
+            icon="icon-zhengjian"
+            :size="size"
+            :type="type"
+            class="zhengJian-icon"
+            @click.stop="handleCredentials(row)"
+            >附件查阅
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            @click.stop="rowDel(row)"
+            v-if="row.type == '2'"
+            >许可审批
+          </el-button>
+          <el-button
+            icon="el-icon-edit"
+            :size="size"
+            :type="type"
+            @click.stop="viewLicense(row)"
+            v-if="row.type == '0'"
+            >打印许可证
+          </el-button>
+        </template>
+        <template class="tdtype" slot-scope="{ row }" slot="type">
+          <el-tag class="dtype">
+            {{
+              row.type == "0" ? "通过" : row.type == "1" ? "不通过" : "待审核"
+            }}
+            <i class="gz" v-if="row.type == '0'"></i>
+            <i class="yj" v-if="row.type == '1'"></i>
+            <i class="zc" v-if="row.type == '2'"></i>
+          </el-tag>
+        </template>
+      </avue-crud>
+    </basic-container>
+
+    <!-- <el-dialog
+      :visible.sync="dialogVisible"
+      :before-close="handleClose"
+      :modal-append-to-body="false"
+      width="1005px"
+      top="10vh"
+      class="printstyle"
+    >
+      <div id="licence_box">
+        <div class="licence" id="licence" v-if="dialogVisible">
+          <div class="licence-head">保安服务许可证</div>
+          <div class="head-tid">
+            洪公保服务
+            <span class="fontStyle">{{
+              licenceData.row.organizationcode
+            }}</span>
+            号
+          </div>
+          <div class="licence-main">
+            <div
+              class="l-m-once"
+              v-for="(item, index, key) in licenceData.chiden"
+              :key="key"
+            >
+              <span class="l-m-o-title"> {{ index }}: </span>
+              <span class="l-m-r-once">{{ item }}</span>
+            </div>
+          </div>
+          <div class="licence-bottom">发证机关(南昌市公安局)</div>
+          <div class="l-bottom">
+            发证日期
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(0, 4)
+            }}</span
+            >年
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(5, 7)
+            }}</span>
+            月
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(8, 10)
+            }}</span>
+            日
+          </div>
+        </div>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="Print">打 印</el-button>
+      </span>
+    </el-dialog> -->
+    <div
+      v-if="dialogVisible"
+      class="dialogVisibles"
+      :class="classStyle == 'print' ? 'printstyle' : ''"
+    >
+      <div
+        id="licence_box"
+        :class="classStyle == 'print' ? 'printstyle' : ''"
+        ref="licence"
+      >
+        <div class="licence" id="licence" v-if="dialogVisible">
+          <div class="licence-head">保安服务许可证</div>
+          <div class="head-tid">
+            洪公保服务
+            <span class="fontStyle">{{
+              licenceData.row.organizationcode
+            }}</span>
+            号
+          </div>
+          <div class="licence-main">
+            <div
+              class="l-m-once"
+              v-for="(item, index, key) in licenceData.chiden"
+              :key="key"
+            >
+              <span class="l-m-o-title"> {{ index }}: </span>
+              <span class="l-m-r-once">{{ item }}</span>
+            </div>
+          </div>
+          <div class="licence-bottom">发证机关(南昌市公安局)</div>
+          <div class="l-bottom">
+            发证日期
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(0, 4)
+            }}</span
+            >年
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(5, 7)
+            }}</span>
+            月
+            <span class="l-b-t">{{
+              licenceData.row.permitime.slice(8, 10)
+            }}</span>
+            日
+          </div>
+        </div>
+        <span slot="footer" class="dialog-footer no-print PrintBut">
+          <el-button type="primary" @click="Print">打 印</el-button>
+          <el-button type="primary" @click="closePrint"> 取 消 </el-button>
+        </span>
+      </div>
+    </div>
+
+    <el-dialog
+      title=""
+      :visible.sync="dialogVisiblecc"
+      width="30%"
+      :modal-append-to-body="false"
+    >
+      <div class="flots">
+        <span class="f_title">是否通过审核?</span>
+        <span class="f_body">请输入修改意见:</span>
+        <textarea
+          name="reworkmes"
+          cols="40"
+          rows="4"
+          style="overflow: hidden"
+          v-model="textareaShenpi"
+        ></textarea>
+        <div class="but">
+          <el-button type="danger" @click="subcc">不通过</el-button>
+          <el-button type="primary" @click="closecc">通过</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getList,
+  getDetail,
+  add,
+  update,
+  remove,
+} from "@/api/licenseApproval/permit";
+import { mapGetters } from "vuex";
+
+export default {
+  data() {
+    return {
+      classStyle: "print", //打印样式
+
+      dialogVisiblecc: false, //许可证审核抽屉
+      xukezData: {},
+
+      dialogVisible: false, //许可证抽屉
+      licenceData: {
+        row: {},
+        chiden: {},
+      },
+      textareaShenpi: "",
+
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      selectionList: [],
+      option: {
+        height: "auto",
+        calcHeight: 30,
+        excelBtn: true,
+        tip: false,
+        searchShowBtn: false,
+        searchShow: true,
+        searchMenuSpan: 8,
+        border: true,
+        menuWidth: 300,
+        labelWidth: 130,
+        headerAlign: "center",
+        align: "center",
+        // border: false,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "企业名称",
+            search: true,
+            prop: "enterprisename",
+            searchLabelWidth: 80,
+            searchSpan: 4,
+            overHidden: true,
+            width: 250,
+            rules: [
+              {
+                required: true,
+                message: "请输入企业名称",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "社会信用代码",
+            prop: "creditcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入统一社会信用代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人",
+            prop: "representative",
+            search: true,
+            width: 82,
+            searchLabelWidth: 90,
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "法定代表人电话",
+            width: 106,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            width: 58,
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 96,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "注册时间",
+            hide: true,
+            prop: "establishtime",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "注册资本",
+            prop: "registeredcapital",
+            rules: [
+              {
+                required: true,
+                message: "请输入注册资本",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "组织机构代码",
+            prop: "organizationcode",
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入组织机构代码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "工商注册号",
+            hide: true,
+            prop: "registrationnumber",
+            rules: [
+              {
+                required: true,
+                message: "请输入工商注册号",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "纳税人识别号",
+          //   prop: "identificationnumber",
+          //   hide: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入纳税人识别号",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          // {
+          //   label: "企业类型",
+          //   hide: true,
+          //   prop: "enterprises",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入企业类型",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "注册地址",
+            prop: "address",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入注册地址",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属地区",
+          //   hide: true,
+          //   prop: "region",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入所属地区",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          // },
+          {
+            label: "登记机关",
+            prop: "registration",
+            overHidden: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入登记机关",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "所属行业",
+            hide: true,
+            prop: "industry",
+            rules: [
+              {
+                required: true,
+                message: "请输入所属行业",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //   label: "所属机构",
+          //   prop: "deptid",
+          //   addDisplay: false,
+          //   type: "select",
+          //   hide: true,
+          //   dicUrl: "/api/blade-system/dept/selectIn",
+          //   props: {
+          //     label: "deptname",
+          //     value: "deptid",
+          //   },
+          // },
+          {
+            label: "所属辖区",
+            prop: "jurisdiction",
+            type: "tree",
+            dicUrl: "/api/jurisdiction/lazy-trees",
+            props: {
+              label: "title",
+              value: "id",
+            },
+            // labelWidth: 160,
+            // span: 12,
+          },
+          {
+            label: "许可类型",
+            // search: true,
+            hide: true,
+            prop: "ptype",
+            type: "select",
+            searchSpan: 4,
+            dicData: [
+              {
+                label: "保安培训许可",
+                value: "1",
+              },
+            ],
+          },
+          {
+            label: "提交时间",
+            prop: "permitime",
+            overHidden: true,
+            addDisplay: false,
+            width: 132,
+            type: "date",
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: "审核状态",
+            prop: "type",
+            addDisplay: false,
+            type: "select",
+            dicData: [
+              {
+                label: "通过",
+                value: "0",
+              },
+              {
+                label: "不通过",
+                value: "1",
+              },
+              {
+                label: "待审核",
+                value: "2",
+              },
+            ],
+          },
+          {
+            label: "经营范围",
+            prop: "business",
+            component: "AvueUeditor",
+            hide: true,
+            minRows: 6,
+            span: 24,
+            rules: [
+              {
+                required: true,
+                message: "请输入经营范围",
+                trigger: "blur",
+              },
+            ],
+          },
+        ],
+      },
+      data: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.permit_add, false),
+        viewBtn: this.vaildData(this.permission.permit_view, true),
+        delBtn: this.vaildData(this.permission.permit_delete, false),
+        editBtn: this.vaildData(this.permission.permit_edit, false),
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  // mounted() {
+  //     console.log(this.userInfo.dept_id);
+  // },
+  methods: {
+    Print() {
+      this.$Print(this.$refs.licence);
+    },
+
+    handleCredentials(row) {
+      this.$router.push({
+        path: "/attachOnce/index",
+        // redirect: { name: "foo" },
+        // query: { row: row },
+        query: { deptid: row.cardid, type: "0" },
+        // params: { row: row.identificationnumber },
+      });
+    },
+    rowSave(row, done, loading) {
+      row.deptid = this.userInfo.dept_id;
+      add(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          window.console.log(error);
+        }
+      );
+    },
+    rowUpdate(row, index, done, loading) {
+      update(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          console.log(error);
+        }
+      );
+    },
+    rowDel(row) {
+      this.dialogVisiblecc = true;
+      this.xukezData = row;
+    },
+    closecc() {
+      this.xukezData.type = "0";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      console.log(this.xukezData);
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+    subcc() {
+      this.xukezData.type = "1";
+      this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      update(this.xukezData);
+      this.textareaShenpi = "";
+    },
+
+    viewLicense(row) {
+      //查看许可证
+      this.licenceData.row = row;
+      this.licenceData.chiden = {};
+      this.licenceData.chiden["名称"] = row.enterprisename;
+      this.licenceData.chiden["住所"] = row.address;
+      this.licenceData.chiden["法定代表人"] = row.representative;
+      this.licenceData.chiden["服务范围"] = row.industry;
+      this.licenceData.chiden["注册资本"] = row.registeredcapital;
+      this.licenceData.chiden["批准文号"] = row.registrationnumber;
+
+      console.log(this.licenceData);
+      this.dialogVisible = true;
+    },
+    closePrint() {
+      this.dialogVisible = false;
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$refs.crud.toggleSelection();
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      params["ptype"] = 1;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+    rowStyle({ row }) {
+      if (row.dtype != null && row.dtype != "") {
+        if (row.dtype == "2") {
+          return {
+            color: "#F34A4A",
+          };
+        }
+        if (row.dtype == "1") {
+          return {
+            color: "#F48F57",
+          };
+        }
+      }
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.dtype {
+  width: 80px;
+}
+
+.dx {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #dfdfdf;
+}
+.zc {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #29c093;
+}
+.yj {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f34a4a;
+}
+.gz {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f48f57;
+}
+
+.el-tag {
+  display: inline-block;
+  width: 80px;
+
+  /*padding-right: 40px !important;*/
+}
+#licence_box {
+  position: relative;
+  top: 15px;
+  width: 1080px;
+  height: 780px;
+  background-color: #004ca7;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+.licence {
+  width: 960px;
+  height: 648px;
+  background-color: #fff !important;
+  background-image: url("/img/permit/服务许可背景图.png");
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  box-sizing: border-box;
+  padding: 10%;
+  color: #000;
+}
+.licence-head {
+  width: 100%;
+  height: 1.8rem;
+  font-size: 1.8rem;
+  text-align: center;
+}
+.head-tid {
+  position: relative;
+  left: 70%;
+}
+.head-tid span {
+  margin: 0 1rem;
+}
+.licence-main {
+  width: 80%;
+}
+.l-m-once {
+  width: 100%;
+  height: 2rem;
+  margin-top: 1rem;
+}
+.l-m-o-title {
+  font-size: 1.3rem;
+  width: 22%;
+  text-align: justify;
+  display: inline-block;
+}
+.l-m-r-once {
+  font-size: 1.1rem;
+  /* border: 1px solid #000; */
+  display: inline-block;
+  width: 77%;
+}
+.licence-bottom,
+.l-bottom {
+  position: relative;
+  left: 60%;
+  font-size: 1.5rem;
+  margin-top: 0.5rem;
+}
+.dialogVisibles {
+  position: fixed;
+  top: 0;
+  left: -10%;
+  height: 0;
+  width: 120%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 9000;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.printstyle {
+  background-color: #fff !important;
+}
+.PrintBut {
+  margin-top: 15px;
+}
+
+.flots {
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+  .f_title {
+    position: absolute;
+    top: 15px;
+    font-size: 18px;
+  }
+}
+.but {
+  margin-top: 20px;
+  width: 100%;
+  display: flex;
+  align-content: center;
+  justify-content: center;
+}
+</style>
diff --git a/src/views/management/peopleDetails.vue b/src/views/management/peopleDetails.vue
index df3781e..4a429ad 100644
--- a/src/views/management/peopleDetails.vue
+++ b/src/views/management/peopleDetails.vue
@@ -399,6 +399,21 @@
   },
   mounted() {
     // this.$store.state.tags.tag.label = '保安详细资料'
+    var flag = false,
+      i = 0,
+      ind = null;
+    this.$store.state.tags.tagList.forEach((item, index) => {
+      if (item.label == "保安详细资料") {
+        if (flag == false) {
+          ind = index;
+          flag = true;
+        }
+        i++;
+      }
+    });
+    if (i > 1) {
+      this.$store.state.tags.tagList.splice(ind, 1);
+    }
   },
   methods: {
     handleClick(tab) {
diff --git a/src/views/permit/permit.vue b/src/views/permit/permit.vue
index cfa78da..f20ae9c 100644
--- a/src/views/permit/permit.vue
+++ b/src/views/permit/permit.vue
@@ -182,11 +182,21 @@
       width="30%"
       :modal-append-to-body="false"
     >
-      <span>是否通过审核?</span>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closecc">通过</el-button>
-        <el-button type="primary" @click="subcc">不通过</el-button>
-      </span>
+      <div class="flots">
+        <span class="f_title">是否通过审核?</span>
+        <span class="f_body">请输入修改意见:</span>
+        <textarea
+          name="reworkmes"
+          cols="40"
+          rows="4"
+          style="overflow: hidden"
+          v-model="textareaShenpi"
+        ></textarea>
+        <div class="but">
+          <el-button @click="closecc">通过</el-button>
+          <el-button type="primary" @click="subcc">不通过</el-button>
+        </div>
+      </div>
     </el-dialog>
   </div>
 </template>
@@ -208,6 +218,7 @@
         row: {},
         chiden: {},
       },
+      textareaShenpi: "",
 
       form: {},
       query: {},
@@ -276,7 +287,43 @@
             ],
           },
           {
+            label: "法定代表人电话",
+            width: 150,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 150,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
             label: "注册时间",
+            hide: true,
             prop: "establishtime",
             type: "date",
             format: "yyyy-MM-dd",
@@ -547,11 +594,14 @@
     closecc() {
       this.xukezData.type = "0";
       this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
+      console.log(this.xukezData);
       return update(this.xukezData);
     },
     subcc() {
       this.xukezData.type = "1";
       this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
       return update(this.xukezData);
     },
 
@@ -660,7 +710,7 @@
 };
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .dtype {
   width: 80px;
 }
@@ -793,4 +843,22 @@
 .PrintBut {
   margin-top: 15px;
 }
+
+.flots {
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+  .f_title {
+    position: absolute;
+    top: 15px;
+    font-size: 18px;
+  }
+}
+.but {
+  margin-top: 20px;
+  width: 100%;
+  display: flex;
+  align-content: center;
+  justify-content: center;
+}
 </style>
diff --git a/src/views/qualificationExamination/qualificationExamination.vue b/src/views/qualificationExamination/qualificationExamination.vue
index 34cce98..06df4d4 100644
--- a/src/views/qualificationExamination/qualificationExamination.vue
+++ b/src/views/qualificationExamination/qualificationExamination.vue
@@ -25,6 +25,7 @@
       @size-change="sizeChange"
       @refresh-change="refreshChange"
       @on-load="onLoad"
+      @sort-change="sortChange"
     >
     </avue-crud>
   </basic-container>
@@ -46,6 +47,7 @@
 export default {
   data() {
     return {
+      sort: {},
       form: {},
       query: {},
       loading: true,
@@ -77,56 +79,6 @@
 
         column: [
           {
-            label: "保安公司",
-            prop: "deptName",
-            minWidth: 110,
-            overHidden: true,
-            // labelWidth: 120,
-            // searchLabelWidth: 120,
-            // searchSpan: 4,
-            // dicUrl:
-            //   "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697",
-            // props: {
-            //   label: "title",
-            //   value: "id",
-            // },
-            // search: true,
-            // overHidden: true,
-            // type: "select",
-            // rules: [
-            //   {
-            //     required: true,
-            //     message: "请输入保安公司",
-            //     trigger: "blur",
-            //   },
-            // ],
-          },
-          // {
-          //   label: "deptId",
-          //   prop: "deptId",
-          //   overHidden: true,
-          //   // labelWidth: 120,
-          //   // searchLabelWidth: 120,
-          //   searchSpan: 4,
-          //   dicUrl:
-          //     "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697",
-          //   props: {
-          //     label: "title",
-          //     value: "id",
-          //   },
-          //   // hide: true,
-          //   search: true,
-          //   // overHidden: true,
-          //   type: "select",
-          //   // rules: [
-          //   //   {
-          //   //     required: true,
-          //   //     message: "请输入保安公司",
-          //   //     trigger: "blur",
-          //   //   },
-          //   // ],
-          // },
-          {
             label: "保安姓名",
             prop: "realName",
             search: true,
@@ -134,6 +86,12 @@
             //     hide: true,
             //     editDisplay: false,
             //     addDisplay: false
+          },
+          {
+            label: "保安公司",
+            prop: "deptName",
+            minWidth: 110,
+            overHidden: true,
           },
 
           {
@@ -219,6 +177,7 @@
             label: "审查状态",
             prop: "examinationType",
             // overHidden: true,
+            sortable: true,
             // type: "date",
             // format: "yyyy-MM-dd",
             // valueFormat: "yyyy-MM-dd",
@@ -236,6 +195,7 @@
           {
             label: "审查明细",
             prop: "examinationMx",
+            sortable: true,
             // labelWidth: 120,
             // display: false,
           },
@@ -405,8 +365,17 @@
       var d = new Date();
       return d.getFullYear();
     },
+    sortChange(val) {
+      // console.log(val);
+      this.sort = {
+        sort: val.order == "descending" ? "asc" : "desc",
+        useName: val.prop,
+      };
+      this.onLoad(this.page, this.sort);
+    },
     onLoad(page, params = {}) {
       // this.loading = false;
+      params = Object.assign(params, this.sort);
       this.loading = true;
       params["status"] = 1;
       getListSecurity(
@@ -422,6 +391,7 @@
             d[k]["examinationMx"] = "正常";
             d[k]["examinationType"] = "正常";
           } else {
+            console.log(d[k]);
             d[k]["examinationType"] = "异常";
           }
           // if (d[k]["examinationType"] == "") {
diff --git a/src/views/qualificationExamination/registrationTrainingQuery.vue b/src/views/qualificationExamination/registrationTrainingQuery.vue
index eded444..296cc3b 100644
--- a/src/views/qualificationExamination/registrationTrainingQuery.vue
+++ b/src/views/qualificationExamination/registrationTrainingQuery.vue
@@ -286,9 +286,32 @@
             // search: true,
             // searchSpan: 4,
           },
+          // {
+          //   label: "保安公司",
+          //   prop: "deptId",
+          //   // width: 70,
+          //   // search: true,
+          //   // searchSpan: 4,
+          //   dicUrl:
+          //     "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697",
+          //   props: {
+          //     label: "title",
+          //     value: "id",
+          //   },
+          //   // search: true,
+          //   // type: "tree",
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请输入组织机构",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          //   overHidden: true,
+          // },
           {
             label: "保安公司",
-            prop: "deptId",
+            prop: "deptName",
             // width: 70,
             // search: true,
             // searchSpan: 4,
diff --git a/src/views/qualificationExamination/signQualificationExamination.vue b/src/views/qualificationExamination/signQualificationExamination.vue
index ba2db1b..0c3faae 100644
--- a/src/views/qualificationExamination/signQualificationExamination.vue
+++ b/src/views/qualificationExamination/signQualificationExamination.vue
@@ -70,7 +70,7 @@
         column: [
           {
             label: "保安姓名",
-            prop: "name",
+            prop: "realName",
           },
           {
             label: "保安公司",
diff --git a/src/views/record/record.vue b/src/views/record/record.vue
index 4290aa7..4db1e95 100644
--- a/src/views/record/record.vue
+++ b/src/views/record/record.vue
@@ -47,6 +47,7 @@
           @click.stop="rowDel(row)"
           v-show="row.type == 2"
           >审批
+          <!--  v-show="row.type == 2" -->
         </el-button>
         <el-button
           icon="el-icon-edit"
@@ -105,15 +106,25 @@
       width="30%"
       :modal-append-to-body="false"
     >
-      <span>是否通过审核?</span>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closecc">通过</el-button>
-        <el-button type="primary" @click="subcc">不通过</el-button>
-      </span>
+      <div class="flots">
+        <span class="f_title">是否通过审核?</span>
+        <span class="f_body">请输入修改意见:</span>
+        <textarea
+          name="reworkmes"
+          cols="40"
+          rows="4"
+          style="overflow: hidden"
+          v-model="textareaShenpi"
+        ></textarea>
+        <div class="but">
+          <el-button @click="closecc">通过</el-button>
+          <el-button type="primary" @click="subcc">不通过</el-button>
+        </div>
+      </div>
     </el-dialog>
   </basic-container>
 </template>
- 
+
 <script>
 import { getList, getDetail, add, update, remove } from "@/api/record/record";
 import { mapGetters } from "vuex";
@@ -123,6 +134,8 @@
     return {
       dialogVisiblecc: false, //许可证审核抽屉
       xukezData: {},
+
+      textareaShenpi: "",
 
       dialogVisible: false, // 备案审批打印的
       form: {},
@@ -187,7 +200,43 @@
             ],
           },
           {
+            label: "法定代表人电话",
+            width: 150,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 150,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
             label: "注册时间",
+            hide: true,
             prop: "establishtime",
             type: "date",
             format: "yyyy-MM-dd",
@@ -491,11 +540,13 @@
     closecc() {
       this.xukezData.type = "0";
       this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
       return update(this.xukezData);
     },
     subcc() {
       this.xukezData.type = "1";
       this.dialogVisiblecc = false;
+      this.xukezData["approve"] = this.textareaShenpi;
       return update(this.xukezData);
     },
     // 审批打印
@@ -622,8 +673,8 @@
   },
 };
 </script>
- 
-<style scoped>
+
+<style scoped lang="scss">
 .dtype {
   width: 80px;
 }
@@ -715,4 +766,22 @@
 .exam-box span {
   text-decoration: underline;
 }
-</style>
\ No newline at end of file
+
+.flots {
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+  .f_title {
+    position: absolute;
+    top: 15px;
+    font-size: 18px;
+  }
+}
+.but {
+  margin-top: 20px;
+  width: 100%;
+  display: flex;
+  align-content: center;
+  justify-content: center;
+}
+</style>
diff --git a/src/views/recordk/recordk.vue b/src/views/recordk/recordk.vue
index eb574f5..fa3d9b7 100644
--- a/src/views/recordk/recordk.vue
+++ b/src/views/recordk/recordk.vue
@@ -131,7 +131,43 @@
             ],
           },
           {
+            label: "法定代表人电话",
+            width: 150,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 150,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
             label: "注册时间",
+            hide: true,
             prop: "establishtime",
             overHidden: true,
             type: "date",
diff --git a/src/views/resource/attachOnce.vue b/src/views/resource/attachOnce.vue
new file mode 100644
index 0000000..23a9051
--- /dev/null
+++ b/src/views/resource/attachOnce.vue
@@ -0,0 +1,418 @@
+<template>
+  <basic-container>
+    <avue-crud
+      :option="option"
+      :table-loading="loading"
+      :data="data"
+      :page.sync="page"
+      :permission="permissionList"
+      :before-open="beforeOpen"
+      v-model="form"
+      ref="crud"
+      @row-del="rowDel"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @selection-change="selectionChange"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
+      @on-load="onLoad"
+    >
+      <template slot="menuLeft">
+        <!--        <el-button type="primary"-->
+        <!--                   size="small"-->
+        <!--                   plain-->
+        <!--                   icon="el-icon-upload2"-->
+        <!--                   @click="handleUpload">上 传-->
+        <!--        </el-button>-->
+        <!--        <el-button type="danger"-->
+        <!--                   size="small"-->
+        <!--                   icon="el-icon-delete"-->
+        <!--                   plain-->
+        <!--                   @click="handleDelete">删 除-->
+        <!--        </el-button>-->
+      </template>
+      <template slot-scope="scope" slot="menu">
+        <el-button
+          type="text"
+          icon="el-icon-download"
+          size="small"
+          @click="handleDownload(scope.row)"
+          >下载
+        </el-button>
+        <el-button
+          type="text"
+          icon="el-icon-picture-outline-round"
+          size="small"
+          v-show="!fileFormat(scope.row)"
+          @click="seeImages(scope.row)"
+          >预览
+        </el-button>
+      </template>
+      <template slot-scope="{ row }" slot="attachSize">
+        <el-tag>{{ `${row.attachSize} KB` }}</el-tag>
+      </template>
+    </avue-crud>
+    <el-dialog
+      title="附件管理"
+      append-to-body
+      :visible.sync="attachBox"
+      width="555px"
+    >
+      <avue-form
+        ref="form"
+        :option="attachOption"
+        v-model="attachForm"
+        :upload-after="uploadAfter"
+      >
+      </avue-form>
+    </el-dialog>
+
+    <el-dialog
+      title="预览"
+      append-to-body
+      :visible.sync="imgSee"
+      class="see-img-box"
+    >
+      <div class="img" :style="{ background: imgUrl }"></div>
+    </el-dialog>
+  </basic-container>
+</template>
+
+<script>
+import { getList, getDetail, remove } from "@/api/resource/attachOnce";
+import { mapGetters } from "vuex";
+import ElImageViewer from "element-ui/packages/image/src/image-viewer";
+
+export default {
+  components: { ElImageViewer },
+  data() {
+    return {
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      attachBox: false,
+      selectionList: [],
+      option: {
+        height: "auto",
+        calcHeight: 30,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        searchShowBtn: false,
+        headerAlign: "center",
+        border: true,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "附件地址",
+            prop: "link",
+            rules: [
+              {
+                required: true,
+                message: "请输入附件地址",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "附件域名",
+            prop: "domain",
+            search: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入附件域名",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "附件名称",
+            prop: "name",
+            search: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入附件名称",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "附件原名",
+            prop: "originalName",
+            search: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入附件原名",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "附件拓展名",
+            prop: "extension",
+            rules: [
+              {
+                required: true,
+                message: "请输入附件拓展名",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "附件大小",
+            prop: "attachSize",
+            slot: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入附件大小",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "所属机构",
+            prop: "deptid",
+            type: "select",
+            dicUrl: "/api/blade-system/dept/selectIn",
+            props: {
+              label: "deptname",
+              value: "deptid",
+            },
+          },
+          {
+            label: "类型",
+            prop: "type",
+            addDisplay: false,
+            width: 80,
+            type: "select",
+            dicData: [
+              {
+                label: "许可审批",
+                value: "0",
+              },
+              {
+                label: "备案",
+                value: "1",
+              },
+              {
+                label: "撤销",
+                value: "2",
+              },
+              {
+                label: "跨区备案",
+                value: "3",
+              },
+            ],
+          },
+        ],
+      },
+      data: [],
+      attachForm: {},
+      attachOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "附件上传",
+            prop: "attachFile",
+            type: "upload",
+            drag: true,
+            loadText: "模板上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data",
+            },
+            action: "/api/blade-resource/oss/endpoint/put-file-attach?deptid=",
+          },
+        ],
+      },
+
+      imgSee: false,
+      imgUrl: "",
+    };
+  },
+  created() {
+    var flag = false,
+      i = 0,
+      ind = null;
+    this.$store.state.tags.tagList.forEach((item, index) => {
+      if (item.label == "附件上传") {
+        if (flag == false) {
+          ind = index;
+          flag = true;
+        }
+        i++;
+      }
+    });
+    if (i > 1) {
+      this.$store.state.tags.tagList.splice(ind, 1);
+    }
+    var deptid = this.$route.query.deptid;
+    var type = this.$route.query.type;
+    this.attachOption.column[0].action += deptid + "&type=" + type;
+  },
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: false,
+        editBtn: false,
+        viewBtn: false,
+        delBtn: this.vaildData(this.permission.attach_delete, false),
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  methods: {
+    handleUpload() {
+      this.attachBox = true;
+    },
+    uploadAfter(res, done, loading, column) {
+      window.console.log(column);
+      this.attachBox = false;
+      this.refreshChange();
+      done();
+    },
+    handleDownload(row) {
+      window.open(`${row.link}`);
+    },
+    rowDel(row) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(row.id);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+        });
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$refs.crud.toggleSelection();
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query),
+        this.$route.query.deptid,
+        this.$route.query.type
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+
+    seeImages(row) {
+      this.imgUrl = "";
+      this.imgUrl = "url(" + row.link + ") center center / contain no-repeat";
+
+      this.imgSee = true;
+    },
+
+    fileFormat(row) {
+      var index = row.link.lastIndexOf(".");
+      var ext = row.link.substr(index + 1);
+
+      return (
+        [
+          "png",
+          "jpg",
+          "jpeg",
+          "bmp",
+          "gif",
+          "webp",
+          "psd",
+          "svg",
+          "tiff",
+        ].indexOf(ext.toLowerCase()) == -1
+      );
+    },
+  },
+};
+</script>
+
+<style>
+</style>
diff --git a/src/views/revoke/revoke.vue b/src/views/revoke/revoke.vue
index 6e483af..c040456 100644
--- a/src/views/revoke/revoke.vue
+++ b/src/views/revoke/revoke.vue
@@ -131,7 +131,43 @@
             ],
           },
           {
+            label: "法定代表人电话",
+            width: 150,
+            prop: "representativecell",
+            rules: [
+              {
+                required: true,
+                message: "请输入法定代表人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系人电话",
+            width: 150,
+            prop: "contactscell",
+            rules: [
+              {
+                required: true,
+                message: "请输入联系人电话",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
             label: "注册时间",
+            hide: true,
             prop: "establishtime",
             type: "date",
             format: "yyyy-MM-dd",
diff --git a/src/views/securityCompany/armed.vue b/src/views/securityCompany/armed.vue
index 68a23ab..50e1534 100644
--- a/src/views/securityCompany/armed.vue
+++ b/src/views/securityCompany/armed.vue
@@ -1,9 +1,9 @@
 /*
  * @Author: Morpheus
  * @Date: 2021-07-07 17:30:05
- * @Last Modified by: Morpheus
- * @Last Modified time: 2021-07-10 16:05:44
- * menu-name 武装守押公司查询
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-08-30 15:14:22
+ * menu-name 保安服务公司查询
  */
 <template>
   <basic-container>
@@ -25,10 +25,67 @@
       @current-change="currentChange"
       @size-change="sizeChange"
       @refresh-change="refreshChange"
-      @row-click="handleRowClick"
       @on-load="onLoad"
     >
+      <!-- @row-click="handleRowClick" -->
+      <template slot-scope="{ row }" slot="znum">
+        <el-tag
+          class="rowClickSelf"
+          @click="rowClickSelf(row)"
+          title="点击查看保安人员情况"
+          >{{ row.znum }}</el-tag
+        >
+      </template>
+      <template slot-scope="{ type, size, row }" slot="menu">
+        <el-button
+          icon="el-icon-s-custom"
+          :size="size"
+          :type="type"
+          @click.stop="handleRowClick(row)"
+          >查看
+        </el-button>
+        <el-button
+          :size="size"
+          :type="type"
+          icon="el-icon-warning"
+          class="zhengJian-icon"
+          @click.stop="punish(row)"
+          >处罚</el-button
+        >
+      </template>
     </avue-crud>
+    <el-dialog
+      title="处罚"
+      :visible.sync="dialogVisible"
+      width="60%"
+      :before-close="handleClose"
+      :modal-append-to-body="false"
+      center
+    >
+      <!-- <span>这是一段信息</span> -->
+      <avue-form
+        :option="optionf"
+        v-model="objf"
+        @submit="submitf"
+        @error="errorf"
+      >
+        <template slot-scope="{ type, size, row }" slot="menuForm">
+          <el-button
+            :size="size"
+            icon="el-icon-error"
+            :type="type"
+            @click="close(row)"
+            >关闭</el-button
+          >
+        </template>
+      </avue-form>
+      <!-- <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="dialogVisible = false"
+          >确 定</el-button
+        >
+      </span> -->
+    </el-dialog>
   </basic-container>
 </template>
 
@@ -39,12 +96,77 @@
   add,
   update,
   remove,
-} from "@/api/securityCompany/armed";
+  savePunish,
+} from "@/api/securityCompany/security";
 import { mapGetters } from "vuex";
+import { companyColimn } from "./column";
 
 export default {
   data() {
     return {
+      objf: {},
+      optionf: {
+        column: [
+          {
+            label: "公司名称",
+            prop: "enterprisename",
+            span: 24,
+            labelWidth: 110,
+            rules: [
+              {
+                required: true,
+                message: "请输入身份证号码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "处罚原因",
+            prop: "punishreason",
+            span: 24,
+            labelWidth: 110,
+            rules: [
+              {
+                required: true,
+                message: "请输入荣誉名称",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "处罚结果",
+            prop: "punishresult",
+            span: 24,
+            // type: "textarea",
+            labelWidth: 110,
+          },
+          {
+            label: "处罚日期",
+            prop: "punishtime",
+            span: 24,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            // type: "textarea",
+            labelWidth: 110,
+          },
+          {
+            label: "处罚批准文号",
+            prop: "punisnum",
+            span: 24,
+            // type: "textarea",
+            labelWidth: 110,
+          },
+          //   {
+          //     label: "授予单位名称",
+          //     prop: "sex2",
+          //     span: 24,
+          //     labelWidth: 110,
+          //   },
+        ],
+      },
+      dialogVisible: false,
+
       form: {},
       query: {},
       loading: true,
@@ -60,73 +182,21 @@
         editBtn: false,
         addBtn: false,
         selection: true,
-        menu: false,
-        selection: true,
-
+        searchShowBtn: false,
+        // menu: false,
+        border: true,
         align: "center",
         height: "auto",
         calcHeight: 30,
         tip: false,
-        searchShowBtn: false,
         searchShow: true,
+        menuWidth: 160,
         searchMenuSpan: 6,
         index: true,
         viewBtn: true,
         dialogClickModal: false,
 
-        column: [
-          {
-            label: "公司名称",
-            prop: "enterprisename",
-            search: true,
-            searchSpan: 4,
-            display: false,
-          },
-          {
-            label: "法定代表人",
-            prop: "representative",
-            display: false,
-            width: 120,
-          },
-          {
-            label: "注册时间",
-            prop: "establishtime",
-            type: "date",
-            format: "yyyy-MM-dd",
-            valueFormat: "yyyy-MM-dd",
-            mock: {
-              type: "datetime",
-              format: "yyyy-MM-dd",
-            },
-            search: true,
-            searchSpan: 4,
-            display: false,
-            width: 180,
-          },
-          {
-            label: "注册资金",
-            prop: "registeredcapital",
-            display: false,
-            width: 130,
-          },
-          {
-            label: "实缴资金",
-            prop: "capital",
-            display: false,
-            width: 130,
-          },
-          {
-            label: "公司类型",
-            prop: "enterprises",
-            display: false,
-          },
-          {
-            label: "注册地址",
-            prop: "address",
-            display: false,
-            width: 280,
-          },
-        ],
+        column: companyColimn,
         group: [
           {
             label: "详细信息",
@@ -176,6 +246,67 @@
     },
   },
   methods: {
+    rowClickSelf(val) {
+      console.log(val.departmentid);
+      this.$router.push({
+        path: "/securityGuardManagement/registerOnce",
+        query: { departmentid: val.departmentid },
+      });
+    },
+    close(row) {
+      this.dialogVisible = false;
+      this.objf = {
+        enterprisename: "",
+        punishreason: "",
+        punishresult: "",
+        punishtime: "",
+        punisnum: "",
+      };
+    },
+    submitf(form, done) {
+      console.log(form);
+      var that = this;
+      savePunish(form).then((res) => {
+        this.$message({
+          type: "success",
+          message: "操作成功!",
+        });
+        that.objf = {
+          enterprisename: "",
+          punishreason: "",
+          punishresult: "",
+          punishtime: "",
+          punisnum: "",
+        };
+      });
+      // this.$message.success(JSON.stringify(form));
+      done();
+      this.dialogVisible = false;
+      this.objf = {};
+    },
+    errorf(err) {
+      this.$message.success("请查看控制台");
+      console.log(err);
+    },
+    handleClose(done) {
+      this.objf = {
+        enterprisename: "",
+        punishreason: "",
+        punishresult: "",
+        punishtime: "",
+        punisnum: "",
+      };
+      done();
+    },
+    punish(row) {
+      //打开处罚
+      // console.log(row);
+      this.objf = {
+        deptid: row.departmentid,
+        enterprisename: row.enterprisename,
+      };
+      this.dialogVisible = true;
+    },
     rowSave(row, done, loading) {
       add(row).then(
         () => {
@@ -265,11 +396,12 @@
         page.currentPage,
         page.pageSize,
         Object.assign(params, this.query),
-        3
+        7
       ).then((res) => {
         const data = res.data.data;
         this.page.total = data.total;
         this.data = data.records;
+        console.log(this.data);
         this.loading = false;
         this.selectionClear();
       });
@@ -279,7 +411,8 @@
     handleRowClick(row) {
       // delete (row["name"]);
       var obj = row;
-      obj["name"] = "保安公司详细资料";
+      obj["name"] = "保安公司详细信息";
+      console.log(obj, "obj");
       this.$router.push({
         path: `/securityCompany/index`,
         query: obj,
@@ -289,5 +422,5 @@
 };
 </script>
 
-<style>
+<style lang="scss">
 </style>
diff --git a/src/views/securityCompany/column.js b/src/views/securityCompany/column.js
index fb7fec3..f713bb1 100644
--- a/src/views/securityCompany/column.js
+++ b/src/views/securityCompany/column.js
@@ -1,79 +1,164 @@
 export var companyColimn = [
     {
-        label: "公司名称",
+        label: "统一社会信用代码",
+        prop: "creditcode",
+        width: 140,
+        hide: true,
+
+        labelWidth: 160,
+        // hide: true,
+        // editDisplay: false,
+        // addDisplay: false
+    },
+
+    {
+        label: "企业名称",
         prop: "enterprisename",
         search: true,
+        width: 260,
         searchSpan: 4,
-        // width: 300,
-        minWidth: 120,
-        overHidden: true,
-        display: false,
+        labelWidth: 160,
+        // width: 130,
+        overHidden: true
+    },
+
+    {
+        label: "企业类型",
+        prop: "stats",
+        type: "tree",
+        hide: true,
+        labelWidth: 160,
+        dicUrl: "/api/blade-system/dict-biz/dictionary?code=stats",
+        props: {
+            label: "dictValue",
+            value: "dictKey"
+        },
+        width: 130,
+        rules: [
+            {
+                required: true,
+                message: "请选择企业类型",
+                trigger: "click",
+            },
+        ],
     },
     {
         label: "法定代表人",
+        labelWidth: 160,
         prop: "representative",
-        display: false,
-        width: 86,
+        width: 110,
+        search: true,
+        searchSpan: 4,
+        searchLabelWidth: 100
     },
     {
-        label: "法人电话",
+        label: "法定代表人电话",
+        labelWidth: 160,
         prop: "representativecell",
-        display: false,
-        width: 95,
+        width: 120,
+        // search: true,
+        searchSpan: 4,
+        searchLabelWidth: 100
+    },
+
+    {
+        label: "保安人数",
+        labelWidth: 160,
+        prop: "znum",
+        width: 73,
+        // search: true,
+        searchSpan: 4,
+        searchLabelWidth: 100
+    },
+    {
+        label: "派遣人数",
+        labelWidth: 160,
+        prop: "pnum",
+        width: 73,
+        // search: true,
+        searchSpan: 4,
+        searchLabelWidth: 100
+    },
+    {
+        label: "持证人数",
+        labelWidth: 160,
+        prop: "cnum",
+        width: 73,
+        // search: true,
+        searchSpan: 4,
+        searchLabelWidth: 100
     },
     {
         label: "注册时间",
         prop: "establishtime",
+        labelWidth: 160,
+        width: 130,
+        overHidden: true,
         type: "date",
         format: "yyyy-MM-dd",
-        valueFormat: "yyyy-MM-dd",
-        mock: {
-            type: "datetime",
-            format: "yyyy-MM-dd",
-        },
-        search: true,
-        searchSpan: 4,
-        display: false,
-        width: 140,
+        valueFormat: "timestamp",
+
     },
     {
-        label: "注册资金",
+        label: "注册资本",
         prop: "registeredcapital",
-        display: false,
-        width: 110,
+        hide: true,
+        labelWidth: 160,
+        // search: true,
+        width: 80,
     },
-    // {
-    //     label: "实缴资金",
-    //     prop: "capital",
-    //     display: false,
-    //     width: 110,
-    // },
-    // {
-    //   label: "公司类型",
-    //   prop: "enterprises",
-    //   display: false,
-    //   width: 220,
-    //   overHidden: true,
-    // },
-
     {
         label: "联系人",
         prop: "contacts",
-        display: false,
-        overHidden: true,
-        width: 95,
-    },
-    {
+        labelWidth: 160,
+        width: 85,
+    }, {
         label: "联系电话",
         prop: "contactscell",
-        display: false,
-        overHidden: true,
+        labelWidth: 160,
         width: 95,
     },
+
     {
         label: "注册地址",
         prop: "address",
-        display: false,
+        labelWidth: 160,
+        // search: true,
+        hide: true,
+    },
+    {
+        label: "经营范围",
+        prop: "business",
+        // search: true,
+        labelWidth: 160,
+        hide: true,
+        // width: 110,
+        overHidden: true
+    },
+    {
+        label: "所属辖区",
+        prop: "region",
+        labelWidth: 160,
+        // width: 110,
+        // search: true,
+        overHidden: true
+    },
+    {
+        label: "登记机关",
+        prop: "registration",
+        // search: true,
+        labelWidth: 160,
+        // width: 88,
         overHidden: true,
-    }
+        hide: true,
+    },
+
+    {
+        label: "所属行业",
+        prop: "industry",
+        labelWidth: 160,
+        hide: true,
+        // search: true,
+        // width: 88,
+    },
 ]
\ No newline at end of file
diff --git a/src/views/securityCompany/companyDetails.vue b/src/views/securityCompany/companyDetails.vue
index 6b2c3af..25352b1 100644
--- a/src/views/securityCompany/companyDetails.vue
+++ b/src/views/securityCompany/companyDetails.vue
@@ -1,8 +1,8 @@
 /*
  * @Author: Morpheus
  * @Date: 2021-07-05 16:31:54
- * @Last Modified by: Morpheus
- * @Last Modified time: 2021-07-10 15:33:24
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-08-31 14:52:13
  * menu-name 保安公司详细资料
  */
 <template>
@@ -209,8 +209,37 @@
             <el-tab-pane label="服务对象" name="seventh">
               <service :form="form"></service>
             </el-tab-pane>
-            <el-tab-pane label="其他附件" name="eighth">
+            <!-- <el-tab-pane label="其他附件" name="eighth">
               <enclosure :form="form"></enclosure>
+            </el-tab-pane> -->
+            <el-tab-pane label="营业执照" name="eighth">
+              <div class="businessLicenses">
+                <el-container>
+                  <el-main>
+                    <div class="title" v-if="businessLicenseUrl == ''">
+                      未上传营业执照
+                    </div>
+                    <img
+                      class="businessLicensess"
+                      :src="businessLicenseUrl"
+                      alt=""
+                      v-else
+                    />
+                  </el-main>
+                </el-container>
+              </div>
+            </el-tab-pane>
+            <el-tab-pane label="许可证" name="ninth">
+              <div class="businessLicenses">
+                <el-container>
+                  <el-main>
+                    <div class="title" v-if="licenceUrl == ''">
+                      未上传许可证
+                    </div>
+                    <img class="Licenses" :src="licenceUrl" alt="" v-else />
+                  </el-main>
+                </el-container>
+              </div>
             </el-tab-pane>
           </el-tabs>
         </div>
@@ -233,17 +262,23 @@
 import staff from "./computents/staff.vue"; //保安员信息
 import punish from "./computents/punish.vue"; //处罚信息
 import service from "./computents/service.vue"; //服务对象
-import enclosure from "./computents/enclosure.vue"; //其他附件
+// import enclosure from "./computents/enclosure.vue"; //其他附件
+
+import { getList } from "@/api/securityCompany/security"; //保安公司
+
 export default {
   components: {
     equipment: equipment,
     staff: staff,
     punish: punish,
     service: service,
-    enclosure: enclosure,
+    // enclosure: enclosure,
   },
   data() {
     return {
+      businessLicenseUrl: "",
+      licenceUrl: "",
+
       activeName: "first",
       form: {},
       manifestationData: [],
@@ -394,10 +429,11 @@
   created() {
     var flag = false,
       i = 0,
-      ind = null;
+      ind = null,
+      that = this;
 
     this.$store.state.tags.tagList.forEach((item, index) => {
-      if (item.label == "保安详细资料") {
+      if (item.label == "保安公司详细信息") {
         if (flag == false) {
           ind = index;
           flag = true;
@@ -408,10 +444,26 @@
     if (i > 1) {
       this.$store.state.tags.tagList.splice(ind, 1);
     }
-
-    this.form = this.$route.query;
-
-    console.log(this.form, 1);
+    if (this.$route.query.fromSecunityGuardId) {
+      console.log(this.$route.query.fromSecunityGuardId, "fromSecunityGuardId");
+      // getList().then(res=>{
+      //   console.log
+      var page = {
+          currentPage: 1,
+          pageSize: 10,
+        },
+        params = { departmentid: this.$route.query.fromSecunityGuardId };
+      getList(page.currentPage, page.pageSize, params).then((res) => {
+        console.log(res.data.data.records[0]);
+        that.form = res.data.data.records[0];
+        this.businessLicenseUrl = res.data.data.records[0].businessLicense;
+        this.licenceUrl = res.data.data.records[0].licence;
+      });
+      // })
+    } else {
+      this.form = this.$route.query;
+      console.log(this.form, "obj1");
+    }
   },
   mounted() {
     // this.$store.state.tags.tag.label = '保安详细资料'
@@ -566,4 +618,26 @@
 </script>
 
 <style lang="scss" scoped>
+.businessLicenses {
+  padding-top: 15px;
+  background-color: transparent;
+}
+.el-main {
+  background-color: transparent;
+  color: #333;
+  text-align: center;
+  // position: relative;
+  // right: 5%;
+}
+.businessLicensess {
+  height: 680px;
+  width: 450px;
+}
+.Licenses {
+  height: 680px;
+  width: 1048px;
+}
+.title {
+  color: #fff;
+}
 </style>
diff --git a/src/views/securityCompany/computents/enclosure.vue b/src/views/securityCompany/computents/enclosure.vue
index d0dd27d..60e5300 100644
--- a/src/views/securityCompany/computents/enclosure.vue
+++ b/src/views/securityCompany/computents/enclosure.vue
@@ -17,8 +17,8 @@
       @current-change="currentChange"
       @size-change="sizeChange"
       @refresh-change="refreshChange"
-      @on-load="onLoad"
     >
+      <!-- @on-load="onLoad" -->
       <template slot="menuLeft">
         <!--        <el-button type="primary"-->
         <!--                   size="small"-->
@@ -281,6 +281,10 @@
       return ids.join(",");
     },
   },
+  mounted() {
+    console.log(this.form, "getListeenclosure");
+    this.onLoad(this.page);
+  },
   methods: {
     rowClick(row) {
       var that = this;
@@ -385,7 +389,7 @@
         const data = res.data.data;
         this.page.total = data.total;
         this.data = data.records;
-        console.log(this.data, getListeenclosure);
+        console.log(this.data, "getListeenclosure");
         this.loading = false;
         this.selectionClear();
       });
diff --git a/src/views/securityCompany/computents/equipment.vue b/src/views/securityCompany/computents/equipment.vue
index ef26ed5..210a019 100644
--- a/src/views/securityCompany/computents/equipment.vue
+++ b/src/views/securityCompany/computents/equipment.vue
@@ -7,7 +7,6 @@
     :data="equipmentData"
     ref="equipmentCrud"
     :page.sync="equipmentPage"
-    @on-load="equipmentOnLoad"
     @selection-change="equipmentSelectionChange"
     @search-change="equipmentSearchChange"
     @search-reset="equipmentSearchReset"
@@ -15,6 +14,7 @@
     @size-change="equipmentSizeChange"
   >
   </avue-crud>
+  <!-- @on-load="equipmentOnLoad" -->
 </template>
 
 <script>
@@ -31,7 +31,7 @@
         addBtn: false,
         selection: true,
         menu: false,
-
+        border: true,
         align: "center",
         height: "auto",
         calcHeight: 270,
@@ -232,6 +232,10 @@
       equipmentSelectionList: [],
     };
   },
+  mounted() {
+    console.log(this.form, "equipmentData");
+    this.equipmentOnLoad(this.equipmentPage);
+  },
   methods: {
     equipmentOnLoad(page, params = {}) {
       this.equipmentLoading = true;
diff --git a/src/views/securityCompany/computents/punish.vue b/src/views/securityCompany/computents/punish.vue
index b4048d3..b585e5f 100644
--- a/src/views/securityCompany/computents/punish.vue
+++ b/src/views/securityCompany/computents/punish.vue
@@ -7,7 +7,6 @@
     :data="punishData"
     ref="punishCrud"
     :page.sync="punishPage"
-    @on-load="punishOnLoad"
     @selection-change="punishSelectionChange"
     @search-change="punishSearchChange"
     @search-reset="punishSearchReset"
@@ -15,6 +14,7 @@
     @size-change="punishSizeChange"
   >
   </avue-crud>
+  <!-- @on-load="punishOnLoad" -->
 </template>
 
 <script>
@@ -30,6 +30,7 @@
         searchShowBtn: false,
         addBtn: false,
         selection: true,
+        border: true,
         menu: false,
 
         align: "center",
@@ -49,8 +50,8 @@
           {
             label: "处罚原因",
             prop: "punishreason",
-            span: 24,
             labelWidth: 110,
+            // width: 160,
             rules: [
               {
                 required: true,
@@ -62,26 +63,29 @@
           {
             label: "处罚结果",
             prop: "punishresult",
-            span: 24,
             // type: "textarea",
+            // width: 160,
             labelWidth: 110,
           },
           {
             label: "处罚日期",
             prop: "punishtime",
-            span: 24,
             type: "date",
             format: "yyyy-MM-dd",
             valueFormat: "yyyy-MM-dd",
             // type: "textarea",
             labelWidth: 110,
+            width: 160,
           },
           {
-            label: "处罚批准文号",
+            label: "批准文号",
             prop: "punisnum",
-            span: 24,
-            // type: "textarea",
+            // type: "date",
+            // format: "yyyy-MM-dd",
+            // valueFormat: "yyyy-MM-dd",
+            // // type: "textarea",
             labelWidth: 110,
+            // width: 160,
           },
         ],
       },
@@ -97,6 +101,10 @@
       punishSelectionList: [],
     };
   },
+  mounted() {
+    console.log(this.form, "pu");
+    this.punishOnLoad(this.punishPage);
+  },
   methods: {
     punishOnLoad(page, params = {}) {
       this.punishLoading = true;
@@ -111,7 +119,7 @@
 
         this.punishPage.total = data.total;
         this.punishData = data.records;
-        console.log(this.punishData);
+        console.log(this.punishData, "pu");
         this.punishLoading = false;
         this.$refs.punishCrud.refreshTable();
         this.$refs.punishCrud.doLayout();
diff --git a/src/views/securityCompany/computents/service.vue b/src/views/securityCompany/computents/service.vue
index 2be126c..678fd34 100644
--- a/src/views/securityCompany/computents/service.vue
+++ b/src/views/securityCompany/computents/service.vue
@@ -7,7 +7,6 @@
     :data="serviceData"
     ref="serviceCrud"
     :page.sync="servicePage"
-    @on-load="serviceOnLoad"
     @selection-change="serviceSelectionChange"
     @search-change="serviceSearchChange"
     @search-reset="serviceSearchReset"
@@ -15,6 +14,7 @@
     @size-change="serviceSizeChange"
   >
   </avue-crud>
+  <!-- @on-load="serviceOnLoad" -->
 </template>
 
 <script>
@@ -31,7 +31,7 @@
         addBtn: false,
         selection: true,
         menu: false,
-
+        border: true,
         align: "center",
         height: "auto",
         calcHeight: 270,
@@ -46,13 +46,6 @@
         menuWidth: 156,
 
         column: [
-          // {
-          //   label: "id",
-          //   prop: "id",
-          //   hide: true,
-          //   editDisplay: false,
-          //   addDisplay: false,
-          // },
           {
             label: "姓名",
             prop: "name",
@@ -66,55 +59,11 @@
               },
             ],
           },
-          // {
-          //   label: "身份证号",
-          //   prop: "cardid",
-          //   // rules: [
-          //   //   {
-          //   //     required: true,
-          //   //     message: "请输入编号",
-          //   //     trigger: "blur",
-          //   //   },
-          //   // ],
-          //   // search: true,
-          // }, //上面不显示
           {
             label: "派遣单位",
             prop: "dispatcherCompany",
             search: true,
-            // rules: [
-            //   {
-            //     required: true,
-            //     message: "请输入规格",
-            //     trigger: "blur",
-            //   },
-            // ],
-            // search: true,
           },
-          // {
-          //   label: "保安公司",
-          //   prop: "deptName",
-          //   // rules: [
-          //   //   {
-          //   //     required: true,
-          //   //     message: "请输入规格",
-          //   //     trigger: "blur",
-          //   //   },
-          //   // ],
-          //   // search: true,
-          // },
-          // {
-          //   label: "派遣人",
-          //   prop: "dispatcher",
-          //   // rules: [
-          //   //   {
-          //   //     required: true,
-          //   //     message: "请输入规格",
-          //   //     trigger: "blur",
-          //   //   },
-          //   // ],
-          //   // search: true,
-          // },
           {
             label: "派遣时间",
             prop: "dispatchertime",
@@ -212,6 +161,10 @@
       serviceSelectionList: [],
     };
   },
+  mounted() {
+    console.log(this.form, "serviceData");
+    this.serviceOnLoad(this.servicePage);
+  },
   methods: {
     serviceOnLoad(page, params = {}) {
       this.serviceLoading = true;
diff --git a/src/views/securityCompany/computents/staff.vue b/src/views/securityCompany/computents/staff.vue
index 9f3b373..46f423d 100644
--- a/src/views/securityCompany/computents/staff.vue
+++ b/src/views/securityCompany/computents/staff.vue
@@ -7,13 +7,13 @@
     :data="staffData"
     ref="staffCrud"
     :page.sync="staffPage"
-    @on-load="staffOnLoad"
     @selection-change="staffSelectionChange"
     @search-change="staffSearchChange"
     @search-reset="staffSearchReset"
     @current-change="staffCurrentChange"
     @size-change="staffSizeChange"
   >
+    <!-- @on-load="staffOnLoad" -->
   </avue-crud>
 </template>
 
@@ -31,7 +31,7 @@
         searchShowBtn: false,
         selection: true,
         menu: false,
-
+        border: true,
         align: "center",
         height: "auto",
         calcHeight: 270,
@@ -253,6 +253,10 @@
       staffSelectionList: [],
     };
   },
+  mounted() {
+    console.log(this.form, "staff");
+    this.staffOnLoad(this.staffPage);
+  },
   methods: {
     staffOnLoad(page, params = {}) {
       this.staffLoading = true;
diff --git a/src/views/securityCompany/computents/xkz.png b/src/views/securityCompany/computents/xkz.png
new file mode 100644
index 0000000..b1ae80f
--- /dev/null
+++ b/src/views/securityCompany/computents/xkz.png
Binary files differ
diff --git a/src/views/securityCompany/computents/yyzz.png b/src/views/securityCompany/computents/yyzz.png
new file mode 100644
index 0000000..c821109
--- /dev/null
+++ b/src/views/securityCompany/computents/yyzz.png
Binary files differ
diff --git a/src/views/securityCompany/confess.vue b/src/views/securityCompany/confess.vue
index 9842b75..fa09112 100644
--- a/src/views/securityCompany/confess.vue
+++ b/src/views/securityCompany/confess.vue
@@ -2,8 +2,8 @@
  * @Author: Morpheus
  * @Date: 2021-07-07 17:30:05
  * @Last Modified by: Morpheus
- * @Last Modified time: 2021-07-10 16:07:26
- * menu-name 自招保安单位查询
+ * @Last Modified time: 2021-07-10 16:01:42
+ * menu-name 保安服务公司查询
  */
 <template>
   <basic-container>
@@ -25,13 +25,29 @@
       @current-change="currentChange"
       @size-change="sizeChange"
       @refresh-change="refreshChange"
-      @row-click="handleRowClick"
       @on-load="onLoad"
     >
+      <!-- @row-click="handleRowClick" -->
+      <template slot-scope="{ row }" slot="znum">
+        <el-tag
+          class="rowClickSelf"
+          @click="rowClickSelf(row)"
+          title="点击查看保安人员情况"
+          >{{ row.znum }}</el-tag
+        >
+      </template>
       <template slot-scope="{ type, size, row }" slot="menu">
+        <el-button
+          icon="el-icon-s-custom"
+          :size="size"
+          :type="type"
+          @click.stop="handleRowClick(row)"
+          >查看
+        </el-button>
         <el-button
           :size="size"
           :type="type"
+          icon="el-icon-warning"
           class="zhengJian-icon"
           @click.stop="punish(row)"
           >处罚</el-button
@@ -80,8 +96,8 @@
   add,
   update,
   remove,
-} from "@/api/securityCompany/confess";
-import { savePunish } from "@/api/securityCompany/security";
+  savePunish,
+} from "@/api/securityCompany/security";
 import { mapGetters } from "vuex";
 import { companyColimn } from "./column";
 
@@ -165,101 +181,22 @@
         delBtn: false,
         editBtn: false,
         addBtn: false,
-        menuWidth: 100,
         selection: true,
+        searchShowBtn: false,
         // menu: false,
-
+        border: true,
         align: "center",
         height: "auto",
         calcHeight: 30,
         tip: false,
         searchShow: true,
+        menuWidth: 160,
         searchMenuSpan: 6,
         index: true,
-        searchShowBtn: false,
         viewBtn: true,
         dialogClickModal: false,
 
         column: companyColimn,
-        // [
-        //   {
-        //     label: "公司名称",
-        //     prop: "enterprisename",
-        //     search: true,
-        //     searchSpan: 4,
-        //     // width: 300,
-        //     minWidth: 120,
-        //     overHidden: true,
-        //     display: false,
-        //   },
-        //   {
-        //     label: "法定代表人",
-        //     prop: "representative",
-        //     display: false,
-        //     width: 86,
-        //   },
-        //   {
-        //     label: "法人电话",
-        //     prop: "representativecell",
-        //     display: false,
-        //     width: 95,
-        //   },
-        //   {
-        //     label: "注册时间",
-        //     prop: "establishtime",
-        //     type: "date",
-        //     format: "yyyy-MM-dd",
-        //     valueFormat: "yyyy-MM-dd",
-        //     mock: {
-        //       type: "datetime",
-        //       format: "yyyy-MM-dd",
-        //     },
-        //     search: true,
-        //     searchSpan: 4,
-        //     display: false,
-        //     width: 140,
-        //   },
-        //   {
-        //     label: "注册资金",
-        //     prop: "registeredcapital",
-        //     display: false,
-        //     width: 110,
-        //   },
-        //   {
-        //     label: "实缴资金",
-        //     prop: "capital",
-        //     display: false,
-        //     width: 110,
-        //   },
-        //   // {
-        //   //   label: "公司类型",
-        //   //   prop: "enterprises",
-        //   //   display: false,
-        //   //   width: 220,
-        //   //   overHidden: true,
-        //   // },
-
-        //   {
-        //     label: "联系人",
-        //     prop: "contacts",
-        //     display: false,
-        //     overHidden: true,
-        //     width: 95,
-        //   },
-        //   {
-        //     label: "联系电话",
-        //     prop: "contactscell",
-        //     display: false,
-        //     overHidden: true,
-        //     width: 95,
-        //   },
-        //   {
-        //     label: "注册地址",
-        //     prop: "address",
-        //     display: false,
-        //     overHidden: true,
-        //   },
-        // ],
         group: [
           {
             label: "详细信息",
@@ -309,14 +246,12 @@
     },
   },
   methods: {
-    punish(row) {
-      //打开处罚
-      // console.log(row);
-      this.objf = {
-        deptid: row.departmentid,
-        enterprisename: row.enterprisename,
-      };
-      this.dialogVisible = true;
+    rowClickSelf(val) {
+      console.log(val.departmentid);
+      this.$router.push({
+        path: "/securityGuardManagement/registerOnce",
+        query: { departmentid: val.departmentid },
+      });
     },
     close(row) {
       this.dialogVisible = false;
@@ -350,7 +285,7 @@
       this.objf = {};
     },
     errorf(err) {
-      this.$message.success("操作失败");
+      this.$message.success("请查看控制台");
       console.log(err);
     },
     handleClose(done) {
@@ -362,6 +297,15 @@
         punisnum: "",
       };
       done();
+    },
+    punish(row) {
+      //打开处罚
+      // console.log(row);
+      this.objf = {
+        deptid: row.departmentid,
+        enterprisename: row.enterprisename,
+      };
+      this.dialogVisible = true;
     },
     rowSave(row, done, loading) {
       add(row).then(
@@ -457,7 +401,7 @@
         const data = res.data.data;
         this.page.total = data.total;
         this.data = data.records;
-        console.log(this.data, "自招单位");
+        console.log(this.data);
         this.loading = false;
         this.selectionClear();
       });
@@ -467,7 +411,8 @@
     handleRowClick(row) {
       // delete (row["name"]);
       var obj = row;
-      obj["name"] = "保安公司详细资料";
+      obj["name"] = "保安公司详细信息";
+      console.log(obj, "obj");
       this.$router.push({
         path: `/securityCompany/index`,
         query: obj,
@@ -477,5 +422,5 @@
 };
 </script>
 
-<style>
+<style lang="scss">
 </style>
diff --git a/src/views/securityCompany/security.vue b/src/views/securityCompany/security.vue
index 8898e23..200eaac 100644
--- a/src/views/securityCompany/security.vue
+++ b/src/views/securityCompany/security.vue
@@ -25,13 +25,29 @@
       @current-change="currentChange"
       @size-change="sizeChange"
       @refresh-change="refreshChange"
-      @row-click="handleRowClick"
       @on-load="onLoad"
     >
+      <!-- @row-click="handleRowClick" -->
+      <template slot-scope="{ row }" slot="znum">
+        <el-tag
+          class="rowClickSelf"
+          @click="rowClickSelf(row)"
+          title="点击查看保安人员情况"
+          >{{ row.znum }}</el-tag
+        >
+      </template>
       <template slot-scope="{ type, size, row }" slot="menu">
+        <el-button
+          icon="el-icon-s-custom"
+          :size="size"
+          :type="type"
+          @click.stop="handleRowClick(row)"
+          >查看
+        </el-button>
         <el-button
           :size="size"
           :type="type"
+          icon="el-icon-warning"
           class="zhengJian-icon"
           @click.stop="punish(row)"
           >处罚</el-button
@@ -135,6 +151,13 @@
             labelWidth: 110,
           },
           {
+            label: "处罚单位",
+            prop: "penalty",
+            span: 24,
+            // type: "textarea",
+            labelWidth: 110,
+          },
+          {
             label: "处罚批准文号",
             prop: "punisnum",
             span: 24,
@@ -168,98 +191,19 @@
         selection: true,
         searchShowBtn: false,
         // menu: false,
-
+        border: true,
         align: "center",
         height: "auto",
         calcHeight: 30,
         tip: false,
         searchShow: true,
-        menuWidth: 100,
+        menuWidth: 160,
         searchMenuSpan: 6,
         index: true,
         viewBtn: true,
         dialogClickModal: false,
 
         column: companyColimn,
-        // [
-        //   {
-        //     label: "公司名称",
-        //     prop: "enterprisename",
-        //     search: true,
-        //     searchSpan: 4,
-        //     // width: 300,
-        //     minWidth: 120,
-        //     overHidden: true,
-        //     display: false,
-        //   },
-        //   {
-        //     label: "法定代表人",
-        //     prop: "representative",
-        //     display: false,
-        //     width: 86,
-        //   },
-        //   {
-        //     label: "法人电话",
-        //     prop: "representativecell",
-        //     display: false,
-        //     width: 95,
-        //   },
-        //   {
-        //     label: "注册时间",
-        //     prop: "establishtime",
-        //     type: "date",
-        //     format: "yyyy-MM-dd",
-        //     valueFormat: "yyyy-MM-dd",
-        //     mock: {
-        //       type: "datetime",
-        //       format: "yyyy-MM-dd",
-        //     },
-        //     search: true,
-        //     searchSpan: 4,
-        //     display: false,
-        //     width: 140,
-        //   },
-        //   {
-        //     label: "注册资金",
-        //     prop: "registeredcapital",
-        //     display: false,
-        //     width: 110,
-        //   },
-        //   {
-        //     label: "实缴资金",
-        //     prop: "capital",
-        //     display: false,
-        //     width: 110,
-        //   },
-        //   // {
-        //   //   label: "公司类型",
-        //   //   prop: "enterprises",
-        //   //   display: false,
-        //   //   width: 220,
-        //   //   overHidden: true,
-        //   // },
-
-        //   {
-        //     label: "联系人",
-        //     prop: "contacts",
-        //     display: false,
-        //     overHidden: true,
-        //     width: 95,
-        //   },
-        //   {
-        //     label: "联系电话",
-        //     prop: "contactscell",
-        //     display: false,
-        //     overHidden: true,
-        //     width: 95,
-        //   },
-        //   {
-        //     label: "注册地址",
-        //     prop: "address",
-        //     display: false,
-        //     overHidden: true,
-        //   },
-        // ],
         group: [
           {
             label: "详细信息",
@@ -309,6 +253,13 @@
     },
   },
   methods: {
+    rowClickSelf(val) {
+      console.log(val.departmentid);
+      this.$router.push({
+        path: "/securityGuardManagement/registerOnce",
+        query: { departmentid: val.departmentid },
+      });
+    },
     close(row) {
       this.dialogVisible = false;
       this.objf = {
@@ -468,31 +419,15 @@
       // delete (row["name"]);
       var obj = row;
       obj["name"] = "保安公司详细信息";
+      console.log(obj, "obj");
       this.$router.push({
         path: `/securityCompany/index`,
         query: obj,
       });
-
-      var flag = false,
-        i = 0,
-        ind = null;
-
-      this.$store.state.tags.tagList.forEach((item, index) => {
-        if (item.label == "保安公司详细信息") {
-          if (flag == false) {
-            ind = index;
-            flag = true;
-          }
-          i++;
-        }
-      });
-      if (i > 1) {
-        this.$store.state.tags.tagList.splice(ind, 1);
-      }
     },
   },
 };
 </script>
 
-<style>
+<style lang="scss">
 </style>
diff --git a/src/views/securityCompany/securityCrossRegion.vue b/src/views/securityCompany/securityCrossRegion.vue
index 7f84a04..c8202e3 100644
--- a/src/views/securityCompany/securityCrossRegion.vue
+++ b/src/views/securityCompany/securityCrossRegion.vue
@@ -25,13 +25,29 @@
       @current-change="currentChange"
       @size-change="sizeChange"
       @refresh-change="refreshChange"
-      @row-click="handleRowClick"
       @on-load="onLoad"
     >
+      <!-- @row-click="handleRowClick" -->
+      <template slot-scope="{ row }" slot="znum">
+        <el-tag
+          class="rowClickSelf"
+          @click="rowClickSelf(row)"
+          title="点击查看保安人员情况"
+          >{{ row.znum }}</el-tag
+        >
+      </template>
       <template slot-scope="{ type, size, row }" slot="menu">
+        <el-button
+          icon="el-icon-s-custom"
+          :size="size"
+          :type="type"
+          @click.stop="handleRowClick(row)"
+          >查看
+        </el-button>
         <el-button
           :size="size"
           :type="type"
+          icon="el-icon-warning"
           class="zhengJian-icon"
           @click.stop="punish(row)"
           >处罚</el-button
@@ -168,98 +184,19 @@
         selection: true,
         searchShowBtn: false,
         // menu: false,
-
+        border: true,
         align: "center",
         height: "auto",
         calcHeight: 30,
         tip: false,
         searchShow: true,
-        menuWidth: 100,
+        menuWidth: 160,
         searchMenuSpan: 6,
         index: true,
         viewBtn: true,
         dialogClickModal: false,
 
         column: companyColimn,
-        // [
-        //   {
-        //     label: "公司名称",
-        //     prop: "enterprisename",
-        //     search: true,
-        //     searchSpan: 4,
-        //     // width: 300,
-        //     minWidth: 120,
-        //     overHidden: true,
-        //     display: false,
-        //   },
-        //   {
-        //     label: "法定代表人",
-        //     prop: "representative",
-        //     display: false,
-        //     width: 86,
-        //   },
-        //   {
-        //     label: "法人电话",
-        //     prop: "representativecell",
-        //     display: false,
-        //     width: 95,
-        //   },
-        //   {
-        //     label: "注册时间",
-        //     prop: "establishtime",
-        //     type: "date",
-        //     format: "yyyy-MM-dd",
-        //     valueFormat: "yyyy-MM-dd",
-        //     mock: {
-        //       type: "datetime",
-        //       format: "yyyy-MM-dd",
-        //     },
-        //     search: true,
-        //     searchSpan: 4,
-        //     display: false,
-        //     width: 140,
-        //   },
-        //   {
-        //     label: "注册资金",
-        //     prop: "registeredcapital",
-        //     display: false,
-        //     width: 110,
-        //   },
-        //   {
-        //     label: "实缴资金",
-        //     prop: "capital",
-        //     display: false,
-        //     width: 110,
-        //   },
-        //   // {
-        //   //   label: "公司类型",
-        //   //   prop: "enterprises",
-        //   //   display: false,
-        //   //   width: 220,
-        //   //   overHidden: true,
-        //   // },
-
-        //   {
-        //     label: "联系人",
-        //     prop: "contacts",
-        //     display: false,
-        //     overHidden: true,
-        //     width: 95,
-        //   },
-        //   {
-        //     label: "联系电话",
-        //     prop: "contactscell",
-        //     display: false,
-        //     overHidden: true,
-        //     width: 95,
-        //   },
-        //   {
-        //     label: "注册地址",
-        //     prop: "address",
-        //     display: false,
-        //     overHidden: true,
-        //   },
-        // ],
         group: [
           {
             label: "详细信息",
@@ -309,6 +246,13 @@
     },
   },
   methods: {
+    rowClickSelf(val) {
+      console.log(val.departmentid);
+      this.$router.push({
+        path: "/securityGuardManagement/registerOnce",
+        query: { departmentid: val.departmentid },
+      });
+    },
     close(row) {
       this.dialogVisible = false;
       this.objf = {
@@ -468,31 +412,15 @@
       // delete (row["name"]);
       var obj = row;
       obj["name"] = "保安公司详细信息";
+      console.log(obj, "obj");
       this.$router.push({
         path: `/securityCompany/index`,
         query: obj,
       });
-
-      var flag = false,
-        i = 0,
-        ind = null;
-
-      this.$store.state.tags.tagList.forEach((item, index) => {
-        if (item.label == "保安公司详细信息") {
-          if (flag == false) {
-            ind = index;
-            flag = true;
-          }
-          i++;
-        }
-      });
-      if (i > 1) {
-        this.$store.state.tags.tagList.splice(ind, 1);
-      }
     },
   },
 };
 </script>
 
-<style>
+<style lang="scss">
 </style>
diff --git a/src/views/securityCompany/train.vue b/src/views/securityCompany/train.vue
index 88a7e98..c158763 100644
--- a/src/views/securityCompany/train.vue
+++ b/src/views/securityCompany/train.vue
@@ -2,8 +2,8 @@
  * @Author: Morpheus
  * @Date: 2021-07-07 17:30:05
  * @Last Modified by: Morpheus
- * @Last Modified time: 2021-07-10 16:06:14
- * menu-name 保安培训单位查询
+ * @Last Modified time: 2021-07-10 16:01:42
+ * menu-name 保安服务公司查询
  */
 <template>
   <basic-container>
@@ -25,13 +25,29 @@
       @current-change="currentChange"
       @size-change="sizeChange"
       @refresh-change="refreshChange"
-      @row-click="handleRowClick"
       @on-load="onLoad"
     >
+      <!-- @row-click="handleRowClick" -->
+      <template slot-scope="{ row }" slot="znum">
+        <el-tag
+          class="rowClickSelf"
+          @click="rowClickSelf(row)"
+          title="点击查看保安人员情况"
+          >{{ row.znum }}</el-tag
+        >
+      </template>
       <template slot-scope="{ type, size, row }" slot="menu">
+        <el-button
+          icon="el-icon-s-custom"
+          :size="size"
+          :type="type"
+          @click.stop="handleRowClick(row)"
+          >查看
+        </el-button>
         <el-button
           :size="size"
           :type="type"
+          icon="el-icon-warning"
           class="zhengJian-icon"
           @click.stop="punish(row)"
           >处罚</el-button
@@ -80,9 +96,10 @@
   add,
   update,
   remove,
-} from "@/api/securityCompany/train";
-import { savePunish } from "@/api/securityCompany/security";
+  savePunish,
+} from "@/api/securityCompany/security";
 import { mapGetters } from "vuex";
+import { companyColimn } from "./column";
 
 export default {
   data() {
@@ -165,73 +182,21 @@
         editBtn: false,
         addBtn: false,
         selection: true,
+        searchShowBtn: false,
         // menu: false,
-        menuWidth: 100,
-
+        border: true,
         align: "center",
         height: "auto",
         calcHeight: 30,
-        searchShowBtn: false,
         tip: false,
         searchShow: true,
+        menuWidth: 160,
         searchMenuSpan: 6,
         index: true,
         viewBtn: true,
         dialogClickModal: false,
 
-        column: [
-          {
-            label: "公司名称",
-            prop: "enterprisename",
-            search: true,
-            searchSpan: 4,
-            display: false,
-          },
-          {
-            label: "法定代表人",
-            prop: "representative",
-            display: false,
-            width: 120,
-          },
-          {
-            label: "注册时间",
-            prop: "establishtime",
-            type: "date",
-            format: "yyyy-MM-dd",
-            valueFormat: "yyyy-MM-dd",
-            mock: {
-              type: "datetime",
-              format: "yyyy-MM-dd",
-            },
-            search: true,
-            searchSpan: 4,
-            display: false,
-            width: 180,
-          },
-          {
-            label: "注册资金",
-            prop: "registeredcapital",
-            display: false,
-            width: 130,
-          },
-          {
-            label: "实缴资金",
-            prop: "capital",
-            display: false,
-            width: 130,
-          },
-          {
-            label: "公司类型",
-            prop: "enterprises",
-            display: false,
-          },
-          {
-            label: "注册地址",
-            prop: "address",
-            display: false,
-            width: 280,
-          },
-        ],
+        column: companyColimn,
         group: [
           {
             label: "详细信息",
@@ -281,14 +246,12 @@
     },
   },
   methods: {
-    punish(row) {
-      //打开处罚
-      // console.log(row);
-      this.objf = {
-        deptid: row.departmentid,
-        enterprisename: row.enterprisename,
-      };
-      this.dialogVisible = true;
+    rowClickSelf(val) {
+      console.log(val.departmentid);
+      this.$router.push({
+        path: "/securityGuardManagement/registerOnce",
+        query: { departmentid: val.departmentid },
+      });
     },
     close(row) {
       this.dialogVisible = false;
@@ -322,7 +285,7 @@
       this.objf = {};
     },
     errorf(err) {
-      this.$message.success("操作失败");
+      this.$message.success("请查看控制台");
       console.log(err);
     },
     handleClose(done) {
@@ -335,7 +298,15 @@
       };
       done();
     },
-
+    punish(row) {
+      //打开处罚
+      // console.log(row);
+      this.objf = {
+        deptid: row.departmentid,
+        enterprisename: row.enterprisename,
+      };
+      this.dialogVisible = true;
+    },
     rowSave(row, done, loading) {
       add(row).then(
         () => {
@@ -430,6 +401,7 @@
         const data = res.data.data;
         this.page.total = data.total;
         this.data = data.records;
+        console.log(this.data);
         this.loading = false;
         this.selectionClear();
       });
@@ -439,7 +411,8 @@
     handleRowClick(row) {
       // delete (row["name"]);
       var obj = row;
-      obj["name"] = "保安公司详细资料";
+      obj["name"] = "保安公司详细信息";
+      console.log(obj, "obj");
       this.$router.push({
         path: `/securityCompany/index`,
         query: obj,
@@ -449,5 +422,5 @@
 };
 </script>
 
-<style>
+<style lang="scss">
 </style>
diff --git a/src/views/securityGuardManagement/register.vue b/src/views/securityGuardManagement/register.vue
index f721e45..39c6757 100644
--- a/src/views/securityGuardManagement/register.vue
+++ b/src/views/securityGuardManagement/register.vue
@@ -1,8 +1,8 @@
 /*
  * @Author: Morpheus
  * @Date: 2021-07-05 16:31:54
- * @Last Modified by: Morpheus
- * @Last Modified time: 2021-07-10 15:41:13
+ * @Last Modified by: liu
+ * @Last Modified time: 2021-08-31 11:26:49
  * menu-name 保安员注册查询
  */
 <template>
@@ -40,9 +40,9 @@
             @current-change="currentChange"
             @size-change="sizeChange"
             @refresh-change="refreshChange"
-            @row-click="handleRowClick"
             @on-load="onLoad"
           >
+            <!-- @row-click="handleRowClick" -->
             <!-- <template slot-scope="{row}"
                               slot="tenantName">
                         <el-tag>{{row.tenantName}}</el-tag>
@@ -59,7 +59,22 @@
                               slot="userTypeName">
                         <el-tag>{{row.userTypeName}}</el-tag>
                     </template> -->
+            <template slot-scope="{ row }" slot="deptId">
+              <el-tag
+                class="rowClickSelf"
+                title="点击查看所属公司情况"
+                @click="rowClickSelf(row.deptId)"
+                >{{ row.$deptId }}</el-tag
+              >
+            </template>
             <template slot-scope="{ type, size, row }" slot="menu">
+              <el-button
+                :size="size"
+                :type="type"
+                class="zhengJian-icon"
+                @click.stop="handleRowClick(row)"
+                >详情</el-button
+              >
               <el-button
                 :size="size"
                 :type="type"
@@ -140,10 +155,62 @@
     </el-dialog>
 
     <div class="baoanzheng" v-if="dialogVisiblecertificates">
+      <!-- 保安员证 -->
+      <!-- <div class="baoanzheng" id="baoanzheng"> -->
       <div class="baz-main">
         <div class="baz-m-body" ref="baoanzheng">
           <div class="bmb-heard">保安员证</div>
+          <div class="img">
+            <div v-if="!objVisiblecertificates.myPicture">暂无照片</div>
+            <img :src="objVisiblecertificates.myPicture" alt="" v-else />
+          </div>
+          <div class="imgs">
+            <div v-if="erweima == ''">暂无二维码</div>
+            <img :src="erweima" alt="" v-else />
+            <!-- <img src="/img/register/ewm.png" alt="" /> -->
+            <!-- logoSrc="/img/register/ewm.png" -->
+            <!-- <vue-qr :text="goToUrl" :size="200"></vue-qr> -->
+          </div>
+
           <!-- <img src="/img/mock/card/card-1.jpg" alt="" /> -->
+          <div class="bmb-b">
+            姓名:<span class="bmb-b-s">{{
+              objVisiblecertificates.realName
+            }}</span>
+          </div>
+          <div class="bmb-b">
+            性别:<span class="bmb-b-s">{{ objVisiblecertificates.$sex }}</span>
+          </div>
+          <div class="bmb-b">
+            编号:<span class="bmb-b-s">{{
+              objVisiblecertificates.securitynumber
+            }}</span>
+          </div>
+          <div class="bmb-b">
+            发证机关:<span class="bmb-b-s">南昌市公安局</span>
+          </div>
+          <div class="bmb-b">
+            发证日期:<span class="bmb-b-s">{{
+              objVisiblecertificates.paperTime.slice(0, 10)
+            }}</span>
+          </div>
+          <!-- <div class="bmb-b">
+              发证机关:<span class="bmb-b-s" style="margin-right: 15px"
+                >南昌市公安局</span
+              >发证日期:<span class="bmb-b-s">{{
+                obj0.createTime.slice(0, 10)
+              }}</span>
+            </div> -->
+        </div>
+        <span slot="footer" class="dialog-footer no-print PrintBut">
+          <el-button type="primary" @click="Print">打 印</el-button>
+          <el-button type="primary" @click="closePrint"> 取 消 </el-button>
+        </span>
+      </div>
+      <!-- </div> -->
+      <!-- <div class="baz-main">
+        <div class="baz-m-body" ref="baoanzheng">
+          <div class="bmb-heard">保安员证</div>
           <div class="bmb-b">
             姓名:<span class="bmb-b-s">{{
               objVisiblecertificates.realName
@@ -171,7 +238,7 @@
           <el-button type="primary" @click="Print">打 印</el-button>
           <el-button type="primary" @click="closePrint"> 取 消 </el-button>
         </span>
-      </div>
+      </div> -->
     </div>
   </div>
 </template>
@@ -187,7 +254,7 @@
 import { mapGetters } from "vuex";
 import website from "@/config/website";
 import { getToken } from "@/util/auth";
-import { addhonor } from "@/api/register/honor";
+import { addhonor, getER } from "@/api/register/honor";
 
 export default {
   data() {
@@ -210,6 +277,7 @@
     return {
       dialogVisiblecertificates: false,
       objVisiblecertificates: {},
+      erweima: "", //二维码
 
       objf: {},
       optionf: {
@@ -321,388 +389,247 @@
         tip: false,
         searchShowBtn: false,
         searchShow: true,
+        border: true,
         searchMenuSpan: 4,
         index: true,
         viewBtn: false,
         //dialogType: 'drawer',
         dialogClickModal: false,
         // 操作栏宽度
-        menuWidth: 280,
+        menuWidth: 310,
         column: [
           {
-            label: "保安姓名",
+            label: "姓名",
             prop: "realName",
             search: true,
-            searchSpan: 4,
+            searchSpan: 3,
+            width: 60,
+            searchLabelWidth: 50,
             display: false,
-            width: 78,
+          },
+          {
+            label: "所属保安公司",
+            searchLabelWidth: "110",
+            // prop: "deptName",
+            prop: "deptId",
+            type: "tree",
+            dicUrl:
+              "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697",
+            props: {
+              label: "title",
+              value: "id",
+            },
+            slot: true,
+            searchSpan: 5,
+            display: false,
+            overHidden: true,
+            search: true,
+            width: 198,
           },
           {
             label: "性别",
             prop: "sex",
+            width: 55,
             type: "select",
-            // search: true,
-            searchSpan: 4,
-            searchLabelWidth: 50,
             dicData: [
+              {
+                label: "男",
+                value: 1,
+              },
               {
                 label: "女",
                 value: 2,
               },
               {
-                label: "男",
-                value: 1,
+                label: "未知",
+                value: 3,
               },
             ],
-            slot: true,
             display: false,
-            width: 48,
           },
           {
-            label: "保安公司",
-            prop: "deptName",
-            // width: 120,
+            label: "身份证号码",
+            prop: "cardid",
             search: true,
+            searchLabelWidth: 90,
             searchSpan: 4,
-            overHidden: true,
-            slot: true,
+            minWidth: 140,
+
+            display: false,
+          },
+
+          {
+            label: "籍贯",
+            prop: "nativeplace",
+            hide: true,
+            display: false,
+          },
+          {
+            label: "民族",
+            prop: "nation",
+            hide: true,
+            width: 55,
+            display: false,
+          },
+
+          {
+            label: "出生日期",
+            prop: "birthday",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            display: false,
+            hide: true,
+          },
+          {
+            label: "年龄",
+            prop: "age",
+            width: 55,
+            display: false,
+          },
+          {
+            label: "学历",
+            prop: "education",
+            display: false,
+            hide: true,
+            width: 90,
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=educationType",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            type: "select",
+            // hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请选择学历",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系电话",
+            prop: "phone",
+            minWidth: 95,
+            display: false,
+          },
+          {
+            label: "健康状态",
+            prop: "healstats",
+            hide: true,
             display: false,
           },
           {
             label: "保安证编号",
             prop: "securitynumber",
-            display: false,
-            searchSpan: 5,
-            searchLabelWidth: 110,
-            // search: true,
-          },
-          {
-            label: "身份证号",
-            prop: "cardid",
-            slot: true,
-            display: false,
-            width: 145,
-          },
-          {
-            label: "联系方式",
-            prop: "phone",
-            slot: true,
-            display: false,
-            width: 100,
-          },
-          {
-            label: "联系地址",
-            prop: "address",
-            slot: true,
-            display: false,
-            hide: true,
+            search: true,
+            searchLabelWidth: 90,
+            minWidth: 105,
+            searchSpan: 4,
+            addDisplay: false,
+            editDisplay: false,
+            // hide: true,
           },
           {
             label: "入职时间",
             prop: "rtime",
-            slot: true,
-            display: false,
-            width: 82,
-          },
-          {
-            label: "所属角色",
-            prop: "roleName",
-            slot: true,
-            display: false,
-            width: 78,
             hide: true,
+            display: false,
           },
-
           // {
-          //   label: "所属辖区",
-          //   prop: "jurisdiction",
-          //   // multiple: true,
-          //   minWidth: 60,
-          //   type: "tree",
-          //   dicUrl: "/api/jurisdiction/lazy-tree?parentId=0",
-          //   props: {
-          //     label: "title",
-          //     value: "id",
-          //   },
-          //   checkStrictly: true,
-          //   slot: true,
-          //   rules: [
-          //     {
-          //       required: true,
-          //       message: "请选择所属辖区",
-          //       trigger: "click",
-          //     },
-          //   ],
+          //     label: "是否派遣",
+          //     prop: "dispatch",
+          //     // hide: true,
+          //     type: 'select',
+          //     // display: false,
+          //     dicData: [
+          //         {
+          //             label: '未派遣',
+          //             value: 1
+          //         }, {
+          //             label: '已派遣',
+          //             value: 0
+          //         }
+          //     ]
           // },
           {
-            label: "是否在职",
-            prop: "status",
+            label: "是否派遣",
+            prop: "dispatch",
             type: "select",
-            search: true,
-            searchSpan: 4,
             dicData: [
               {
-                label: "否",
-                value: 0,
+                label: "未派遣",
+                value: "1",
               },
               {
-                label: "是",
-                value: 1,
+                label: "已派遣",
+                value: "0",
               },
             ],
-            slot: true,
-            display: false,
-            width: 70,
           },
           {
             label: "是否持证",
             prop: "hold",
-            type: "select",
-            search: true,
-            searchSpan: 4,
-            dicData: [
-              {
-                label: "是",
-                value: "0",
-              },
-              {
-                label: "否",
-                value: "1",
-              },
-              {
-                label: "已吊销",
-                value: "2",
-              },
-            ],
             slot: true,
+            search: true,
+            searchSpan: 3,
+            width: 72,
             display: false,
-            width: 70,
-          },
-        ],
-        group: [
-          {
-            label: "基础信息",
-            prop: "baseInfo",
-            icon: "el-icon-user-solid",
-            column: [
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=equipage",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            type: "select",
+            rules: [
               {
-                label: "所属机构",
-                prop: "tenantId",
-                type: "tree",
-                dicUrl: "/api/blade-system/tenant/select",
-                props: {
-                  label: "tenantName",
-                  value: "tenantId",
-                },
-                hide: !website.tenantMode,
-                addDisplay: website.tenantMode,
-                editDisplay: website.tenantMode,
-                viewDisplay: website.tenantMode,
-                rules: [
-                  {
-                    required: true,
-                    message: "请输入所属机构",
-                    trigger: "click",
-                  },
-                ],
-                span: 24,
-              },
-              {
-                label: "登录账号",
-                prop: "account",
-                rules: [
-                  {
-                    required: true,
-                    message: "请输入登录账号",
-                    trigger: "blur",
-                  },
-                ],
-              },
-              {
-                label: "用户平台",
-                type: "select",
-                dicUrl: "/api/blade-system/dict/dictionary?code=user_type",
-                props: {
-                  label: "dictValue",
-                  value: "dictKey",
-                },
-                dataType: "number",
-                slot: true,
-                prop: "userType",
-                rules: [
-                  {
-                    required: true,
-                    message: "请选择用户平台",
-                    trigger: "blur",
-                  },
-                ],
-              },
-              {
-                label: "密码",
-                prop: "password",
-                hide: true,
-                editDisplay: false,
-                viewDisplay: false,
-                rules: [
-                  { required: true, validator: validatePass, trigger: "blur" },
-                ],
-              },
-              {
-                label: "确认密码",
-                prop: "password2",
-                hide: true,
-                editDisplay: false,
-                viewDisplay: false,
-                rules: [
-                  { required: true, validator: validatePass2, trigger: "blur" },
-                ],
+                required: true,
+                message: "请选择",
+                trigger: "blur",
               },
             ],
           },
+
+          // {
+          //     label: "入职时间",
+          //     prop: "rtime",
+          //     type: "datetime",
+          //     format: "yyyy-MM-dd",
+          //     valueFormat: "yyyy-MM-dd",
+          //     searchRange: true,
+          //     searchSpan: 6,
+          //     hide: true,
+          //     addDisplay: false,
+          //     editDisplay: false,
+          //     viewDisplay: false,
+          //     search: true,
+          //     rules: [{
+          //         required: true,
+          //         message: "请输入时间",
+          //         trigger: "blur"
+          //     }]
+          // },
           {
-            label: "详细信息",
-            prop: "detailInfo",
-            icon: "el-icon-s-order",
-            column: [
+            label: "在职状态",
+            prop: "status",
+            type: "select",
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=workerState",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            dataType: "number",
+            display: false,
+            hide: true,
+            searchSpan: 3,
+            width: 80,
+            search: false,
+            rules: [
               {
-                label: "用户昵称",
-                prop: "name",
-                hide: true,
-                rules: [
-                  {
-                    required: true,
-                    message: "请输入用户昵称",
-                    trigger: "blur",
-                  },
-                ],
-              },
-              {
-                label: "用户姓名",
-                prop: "realName",
-                rules: [
-                  {
-                    required: true,
-                    message: "请输入用户姓名",
-                    trigger: "blur",
-                  },
-                  {
-                    min: 2,
-                    max: 5,
-                    message: "姓名长度在2到5个字符",
-                  },
-                ],
-              },
-              {
-                label: "手机号码",
-                prop: "phone",
-                overHidden: true,
-              },
-              {
-                label: "电子邮箱",
-                prop: "email",
-                hide: true,
-                overHidden: true,
-              },
-              {
-                label: "用户性别",
-                prop: "sex",
-                type: "select",
-                dicData: [
-                  {
-                    label: "男",
-                    value: 1,
-                  },
-                  {
-                    label: "女",
-                    value: 2,
-                  },
-                  {
-                    label: "未知",
-                    value: 3,
-                  },
-                ],
-                hide: true,
-              },
-              {
-                label: "用户生日",
-                type: "date",
-                prop: "birthday",
-                format: "yyyy-MM-dd hh:mm:ss",
-                valueFormat: "yyyy-MM-dd hh:mm:ss",
-                hide: true,
-              },
-              {
-                label: "账号状态",
-                prop: "statusName",
-                hide: true,
-                display: false,
-              },
-            ],
-          },
-          {
-            label: "职责信息",
-            prop: "dutyInfo",
-            icon: "el-icon-s-custom",
-            column: [
-              {
-                label: "用户编号",
-                prop: "code",
-              },
-              {
-                label: "所属角色",
-                prop: "roleId",
-                multiple: true,
-                type: "tree",
-                dicData: [],
-                props: {
-                  label: "title",
-                },
-                checkStrictly: true,
-                slot: true,
-                rules: [
-                  {
-                    required: true,
-                    message: "请选择所属角色",
-                    trigger: "click",
-                  },
-                ],
-              },
-              {
-                label: "所属单位",
-                prop: "deptId",
-                type: "tree",
-                multiple: true,
-                dicData: [],
-                props: {
-                  label: "title",
-                },
-                checkStrictly: true,
-                slot: true,
-                rules: [
-                  {
-                    required: true,
-                    message: "请选择所属部门",
-                    trigger: "click",
-                  },
-                ],
-              },
-              {
-                label: "所属岗位",
-                prop: "postId",
-                type: "tree",
-                multiple: true,
-                dicData: [],
-                props: {
-                  label: "postName",
-                  value: "id",
-                },
-                rules: [
-                  {
-                    required: true,
-                    message: "请选择所属岗位",
-                    trigger: "click",
-                  },
-                ],
+                required: true,
+                message: "请选择在职状态",
+                trigger: "blur",
               },
             ],
           },
@@ -805,6 +732,13 @@
     }
   },
   methods: {
+    rowClickSelf(row) {
+      console.log(row, "baoan");
+      this.$router.push({
+        path: "/securityCompany/index",
+        query: { fromSecunityGuardId: row },
+      });
+    },
     Print() {
       this.$Print(this.$refs.baoanzheng);
     },
@@ -836,18 +770,24 @@
     honor(row) {
       this.objf = {};
       //打开荣誉录入
-      console.log(this.objf);
       this.objf = {
         cardid: row.cardid,
-        name: row.name,
+        name: row.realName,
         honor: "",
         honortime: "",
       };
+      console.log(this.objf);
+      console.log(row);
       this.dialogVisible = true;
     },
     nodeClick(data) {
       //   this.treeDeptId = data.id;
-      this.jurisdiction = data.id;
+      // console.log(data, 55555);
+      if (data.title != "南昌市公安局") {
+        this.jurisdiction = data.id;
+      } else {
+        this.jurisdiction = "";
+      }
       this.page.currentPage = 1;
       this.onLoad(this.page);
     },
@@ -894,7 +834,11 @@
     searchChange(params, done) {
       this.query = params;
       this.page.currentPage = 1;
-      this.onLoad(this.page, params);
+      var deptId;
+      if (params.deptId) {
+        deptId = params.deptId;
+      }
+      this.onLoad(this.page, params, deptId);
       done();
     },
     selectionChange(list) {
@@ -945,16 +889,25 @@
     refreshChange() {
       this.onLoad(this.page, this.query);
     },
-    onLoad(page, params = {}) {
+    onLoad(page, params = {}, deptId) {
       this.loading = true;
       params["jurisdiction"] = this.jurisdiction;
       getListSecurity(
         page.currentPage,
         page.pageSize,
-        Object.assign(params, this.query)
+        Object.assign(params, this.query),
+        deptId
       ).then((res) => {
         const data = res.data.data;
         this.page.total = data.total;
+        var d = data.records;
+        var date = new Date();
+        var datayear = date.getFullYear();
+        for (const key in d) {
+          var year = d[key].cardid.slice(6, 10);
+          d[key]["age"] = +datayear - +year;
+          // d[key].securitynumber = "赣洪202100009";
+        }
         this.data = data.records;
         console.log(this.data);
         this.loading = false;
@@ -977,22 +930,22 @@
         query: obj,
       });
 
-      var flag = false,
-        i = 0,
-        ind = null;
+      // var flag = false,
+      //   i = 0,
+      //   ind = null;
 
-      this.$store.state.tags.tagList.forEach((item, index) => {
-        if (item.label == "保安详细信息") {
-          if (flag == false) {
-            ind = index;
-            flag = true;
-          }
-          i++;
-        }
-      });
-      if (i > 1) {
-        this.$store.state.tags.tagList.splice(ind, 1);
-      }
+      // this.$store.state.tags.tagList.forEach((item, index) => {
+      //   if (item.label == "保安详细信息") {
+      //     if (flag == false) {
+      //       ind = index;
+      //       flag = true;
+      //     }
+      //     i++;
+      //   }
+      // });
+      // if (i > 1) {
+      //   this.$store.state.tags.tagList.splice(ind, 1);
+      // }
     },
     //证件查看
     handleViewCredentials(row) {
@@ -1008,6 +961,10 @@
       // this.$Print("#certificatess");
       this.objVisiblecertificates = obj;
       console.log(this.objVisiblecertificates);
+      getER(this.obj.securitynumber).then((res) => {
+        this.erweima = res.data;
+        // console.log(res.data);
+      });
     },
     // 证件吊销事件
     handleCredentials(row) {
@@ -1086,13 +1043,91 @@
   align-items: center;
   justify-content: center;
 }
+// .baz-main {
+//   position: relative;
+//   top: 15px;
+//   // width: 441px;
+//   // height: 358px;
+//   width: 491px;
+//   height: 468px;
+//   // background-color: #004ca7;
+//   background-color: #fff;
+//   display: flex;
+//   align-items: center;
+//   justify-content: center;
+//   flex-direction: column;
+// }
+// .baz-m-body {
+//   width: 461px;
+//   height: 308px;
+//   background-image: url("/img/register/bazbj.png");
+//   background-size: 100% 100%;
+//   .bmb-heard {
+//     font-size: 2rem;
+//     width: 100%;
+//     text-align: center;
+//     letter-spacing: 1rem;
+//     margin-bottom: 40px;
+//     position: relative;
+//     top: 20px;
+//   }
+//   img {
+//     width: 130px;
+//     height: 130px;
+//     border-radius: 130px;
+//     position: absolute;
+//     top: 110px;
+//     right: 60px;
+//   }
+//   .bmb-b {
+//     padding-left: 20px;
+//     box-sizing: border-box;
+//     height: 50px;
+//     margin-left: 10px;
+//     width: 100%;
+//     font-size: 1rem;
+//     font-weight: 400;
+//     .bmb-b-s {
+//       display: inline-block;
+//       width: 110px;
+//       font-size: 1.1rem;
+//       font-weight: 600;
+//     }
+//   }
+// }
+// .PrintBut {
+//   margin-top: 15px;
+// }
+// .rowClickSelf {
+//   &:hover {
+//     cursor: pointer;
+//   }
+// }
+
+// .baoanzheng {
+//   // position: fixed;
+//   position: relative;
+//   // top: 0;
+//   top: 0;
+//   // left: -10%;
+//   left: 0;
+//   // height: 0;
+//   width: 100%;
+//   height: calc(100% - 100px);
+//   // background-color: rgba(0, 0, 0, 0.5);
+//   background-color: #fff;
+//   z-index: 9000;
+//   display: flex;
+//   align-items: center;
+//   justify-content: center;
+// }
 .baz-main {
   position: relative;
   top: 15px;
   // width: 441px;
   // height: 358px;
-  width: 491px;
-  height: 468px;
+  width: 750px;
+  height: 550px;
   // background-color: #004ca7;
   background-color: #fff;
   display: flex;
@@ -1101,40 +1136,65 @@
   flex-direction: column;
 }
 .baz-m-body {
-  width: 461px;
-  height: 308px;
+  width: 750px;
+  height: 550px;
   background-image: url("/img/register/bazbj.png");
   background-size: 100% 100%;
   .bmb-heard {
-    font-size: 2rem;
+    font-size: 4rem;
     width: 100%;
     text-align: center;
-    letter-spacing: 1rem;
+    letter-spacing: 1.4rem;
     margin-bottom: 40px;
+    padding-left: 10px;
     position: relative;
     top: 20px;
   }
-  img {
-    width: 130px;
-    height: 130px;
-    border-radius: 130px;
+  .img {
+    width: 152px;
+    height: 205px;
+    border-radius: 10px;
     position: absolute;
+    // border: 1px solid rgba($color: #888888, $alpha: 0.5);
     top: 110px;
-    right: 60px;
+    right: 80px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+  .imgs {
+    width: 110px;
+    height: 110px;
+    border-radius: 10px;
+    position: absolute;
+    // border: 1px solid rgba($color: #888888, $alpha: 0.5);
+    top: 330px;
+    right: 103px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    img {
+      width: 100%;
+      height: 100%;
+    }
   }
   .bmb-b {
     padding-left: 20px;
     box-sizing: border-box;
-    height: 50px;
-    margin-left: 10px;
+    height: 3.9rem;
+    margin-left: 3rem;
     width: 100%;
-    font-size: 1rem;
-    font-weight: 400;
+    font-size: 2rem;
+    font-weight: 300;
     .bmb-b-s {
       display: inline-block;
-      width: 110px;
-      font-size: 1.1rem;
-      font-weight: 600;
+      width: 20rem;
+      font-size: 2rem;
+      font-weight: 300;
     }
   }
 }
diff --git a/src/views/securityGuardManagement/registerOnce.vue b/src/views/securityGuardManagement/registerOnce.vue
new file mode 100644
index 0000000..17d545a
--- /dev/null
+++ b/src/views/securityGuardManagement/registerOnce.vue
@@ -0,0 +1,1089 @@
+/*
+ * @Author: Morpheus
+ * @Date: 2021-07-05 16:31:54
+ * @Last Modified by: Morpheus
+ * @Last Modified time: 2021-07-10 15:41:13
+ * menu-name 保安员注册查询
+ */
+<template>
+  <div>
+    <el-row class="registersss">
+      <el-col :span="spanLeft">
+        <div class="box">
+          <el-scrollbar>
+            <basic-container>
+              <avue-tree
+                :option="treeOption"
+                :data="treeData"
+                @node-click="nodeClick"
+              />
+            </basic-container>
+          </el-scrollbar>
+        </div>
+      </el-col>
+      <el-col :span="spanRight">
+        <basic-container>
+          <avue-crud
+            :option="option"
+            :search.sync="search"
+            :table-loading="loading"
+            :data="data"
+            ref="crud"
+            v-model="form"
+            :permission="permissionList"
+            @row-save="rowSave"
+            :before-open="beforeOpen"
+            :page.sync="page"
+            @search-change="searchChange"
+            @search-reset="searchReset"
+            @selection-change="selectionChange"
+            @current-change="currentChange"
+            @size-change="sizeChange"
+            @refresh-change="refreshChange"
+          >
+            <!-- @on-load="onLoad" -->
+            <!-- @row-click="handleRowClick" -->
+            <!-- <template slot-scope="{row}"
+                              slot="tenantName">
+                        <el-tag>{{row.tenantName}}</el-tag>
+                    </template>
+                    <template slot-scope="{row}"
+                              slot="roleName">
+                        <el-tag>{{row.roleName}}</el-tag>
+                    </template>
+                    <template slot-scope="{row}"
+                              slot="deptName">
+                        <el-tag>{{row.deptName}}</el-tag>
+                    </template>
+                    <template slot-scope="{row}"
+                              slot="userTypeName">
+                        <el-tag>{{row.userTypeName}}</el-tag>
+                    </template> -->
+            <template slot-scope="{ row }" slot="deptId">
+              <el-tag
+                class="rowClickSelf"
+                title="点击查看所属公司情况"
+                @click="rowClickSelf(row.deptId)"
+                >{{ row.$deptId }}</el-tag
+              >
+            </template>
+            <template slot-scope="{ type, size, row }" slot="menu">
+              <el-button
+                :size="size"
+                :type="type"
+                class="zhengJian-icon"
+                @click.stop="handleRowClick(row)"
+                >详情</el-button
+              >
+              <el-button
+                :size="size"
+                :type="type"
+                class="zhengJian-icon"
+                @click.stop="honor(row)"
+                >荣誉录入</el-button
+              >
+              <el-button
+                :size="size"
+                :type="type"
+                class="zhengJian-icon"
+                @click.stop="handleViewCredentials(row)"
+                >打印证件</el-button
+              >
+
+              <el-button
+                icon="icon-zhengjian"
+                :size="size"
+                :type="type"
+                class="zhengJian-icon"
+                @click.stop="handleCredentials(row)"
+                >证件吊销</el-button
+              >
+            </template>
+          </avue-crud>
+          <el-dialog
+            title="用户数据导入"
+            append-to-body
+            :visible.sync="excelBox"
+            width="555px"
+          >
+            <avue-form
+              :option="excelOption"
+              v-model="excelForm"
+              :upload-after="uploadAfter"
+            >
+              <template slot="excelTemplate">
+                <el-button type="primary" @click="handleTemplate">
+                  点击下载<i class="el-icon-download el-icon--right"></i>
+                </el-button>
+              </template>
+            </avue-form>
+          </el-dialog>
+        </basic-container>
+      </el-col>
+    </el-row>
+    <el-dialog
+      title="荣誉录入"
+      :visible.sync="dialogVisible"
+      width="60%"
+      :before-close="handleClose"
+      :modal-append-to-body="false"
+      center
+    >
+      <!-- <span>这是一段信息</span> -->
+      <avue-form
+        :option="optionf"
+        v-model="objf"
+        @submit="submitf"
+        @error="errorf"
+      >
+        <template slot-scope="{ type, size, row }" slot="menuForm">
+          <el-button
+            :size="size"
+            icon="el-icon-error"
+            :type="type"
+            @click="close(row)"
+            >关闭</el-button
+          >
+        </template>
+      </avue-form>
+      <!-- <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="dialogVisible = false"
+          >确 定</el-button
+        >
+      </span> -->
+    </el-dialog>
+
+    <div class="baoanzheng" v-if="dialogVisiblecertificates">
+      <div class="baz-main">
+        <div class="baz-m-body" ref="baoanzheng">
+          <div class="bmb-heard">保安员证</div>
+          <!-- <img src="/img/mock/card/card-1.jpg" alt="" /> -->
+          <div class="bmb-b">
+            姓名:<span class="bmb-b-s">{{
+              objVisiblecertificates.realName
+            }}</span>
+          </div>
+          <div class="bmb-b">
+            性别:<span class="bmb-b-s">{{
+              objVisiblecertificates.sexName
+            }}</span>
+          </div>
+          <div class="bmb-b">
+            编号:<span class="bmb-b-s">{{
+              objVisiblecertificates.securitynumber
+            }}</span>
+          </div>
+          <div class="bmb-b">
+            发证机关:<span class="bmb-b-s" style="margin-right: 15px"
+              >南昌市公安局</span
+            >发证日期:<span class="bmb-b-s">{{
+              objVisiblecertificates.createTime.slice(0, 10)
+            }}</span>
+          </div>
+        </div>
+        <span slot="footer" class="dialog-footer no-print PrintBut">
+          <el-button type="primary" @click="Print">打 印</el-button>
+          <el-button type="primary" @click="closePrint"> 取 消 </el-button>
+        </span>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUser, add, updateHold } from "@/api/management/user";
+import { getListSecurity } from "@/api/system/user";
+import { getDeptLazyTree } from "@/api/Jurs/jurs";
+// import { getDeptTree, getDeptLazyTree } from "@/api/system/dept";
+import { getDeptTree } from "@/api/system/dept";
+import { getRoleTree } from "@/api/system/role";
+import { getPostList } from "@/api/system/post";
+import { mapGetters } from "vuex";
+import website from "@/config/website";
+import { getToken } from "@/util/auth";
+import { addhonor } from "@/api/register/honor";
+
+export default {
+  data() {
+    const validatePass = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("请输入密码"));
+      } else {
+        callback();
+      }
+    };
+    const validatePass2 = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("请再次输入密码"));
+      } else if (value !== this.form.password) {
+        callback(new Error("两次输入密码不一致!"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      spanLeft: 3,
+      spanRight: 21,
+      departmentid: "", //从保安公司进来
+
+      dialogVisiblecertificates: false,
+      objVisiblecertificates: {},
+
+      objf: {},
+      optionf: {
+        column: [
+          {
+            label: "保安员名称",
+            prop: "name",
+            span: 24,
+            labelWidth: 110,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入身份证号码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "身份证号码",
+            prop: "cardid",
+            span: 24,
+            labelWidth: 110,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入身份证号码",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "荣誉内容",
+            prop: "honor",
+            span: 24,
+            type: "textarea",
+            labelWidth: 110,
+          },
+          {
+            label: "获取时间",
+            prop: "honortime",
+            span: 24,
+            labelWidth: 110,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+          },
+        ],
+      },
+      dialogVisible: false,
+      form: {},
+      search: {},
+      excelBox: false,
+      initFlag: true,
+      selectionList: [],
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+
+      init: {
+        roleTree: [],
+        deptTree: [],
+      },
+
+      treeDeptId: "",
+      jurisdiction: "",
+      treeData: [],
+      treeOption: {
+        nodeKey: "id",
+        defaultExpandAll: true,
+        lazy: true,
+        treeLoad: function (node, resolve) {
+          const parentId = node.level === 0 ? 0 : node.data.id;
+          getDeptLazyTree(parentId).then((res) => {
+            resolve(
+              res.data.data.map((item) => {
+                return {
+                  ...item,
+                  leaf: !item.hasChildren,
+                };
+              })
+            );
+          });
+        },
+        addBtn: false,
+        menu: false,
+        size: "small",
+        props: {
+          labelText: "标题",
+          label: "title",
+          value: "value",
+          children: "children",
+        },
+      },
+      option: {
+        // 操作栏多余按钮去除
+        delBtn: false,
+        editBtn: false,
+        addBtn: false,
+        selection: true,
+        align: "center",
+        height: "auto",
+        calcHeight: 80,
+        tip: false,
+        searchShowBtn: false,
+        searchShow: true,
+        border: true,
+        searchMenuSpan: 4,
+        index: true,
+        viewBtn: false,
+        //dialogType: 'drawer',
+        dialogClickModal: false,
+        // 操作栏宽度
+        menuWidth: 310,
+        column: [
+          {
+            label: "姓名",
+            prop: "realName",
+            search: true,
+            searchSpan: 3,
+            width: 60,
+            searchLabelWidth: 50,
+            display: false,
+          },
+          {
+            label: "所属保安公司",
+            searchLabelWidth: "110",
+            // prop: "deptName",
+            prop: "deptId",
+            type: "tree",
+            dicUrl:
+              "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697",
+            props: {
+              label: "title",
+              value: "id",
+            },
+            slot: true,
+            searchSpan: 5,
+            display: false,
+            overHidden: true,
+            search: true,
+            width: 280,
+          },
+          {
+            label: "性别",
+            prop: "sex",
+            width: 55,
+            type: "select",
+            dicData: [
+              {
+                label: "男",
+                value: 1,
+              },
+              {
+                label: "女",
+                value: 2,
+              },
+              {
+                label: "未知",
+                value: 3,
+              },
+            ],
+            display: false,
+          },
+          {
+            label: "身份证号码",
+            prop: "cardid",
+            search: true,
+            searchLabelWidth: 90,
+            searchSpan: 4,
+            minWidth: 140,
+
+            display: false,
+          },
+
+          {
+            label: "籍贯",
+            prop: "nativeplace",
+            hide: true,
+            display: false,
+          },
+          {
+            label: "民族",
+            prop: "nation",
+            hide: true,
+            width: 55,
+            display: false,
+          },
+
+          {
+            label: "出生日期",
+            prop: "birthday",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            display: false,
+            hide: true,
+          },
+          {
+            label: "年龄",
+            prop: "age",
+            width: 55,
+            display: false,
+          },
+          {
+            label: "学历",
+            prop: "education",
+            display: false,
+            width: 90,
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=educationType",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            type: "select",
+            // hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请选择学历",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "联系电话",
+            prop: "phone",
+            minWidth: 95,
+            display: false,
+          },
+          {
+            label: "健康状态",
+            prop: "healstats",
+            hide: true,
+            display: false,
+          },
+          {
+            label: "保安证编号",
+            prop: "securitynumber",
+            search: true,
+            searchLabelWidth: 90,
+            minWidth: 105,
+            searchSpan: 4,
+            addDisplay: false,
+            editDisplay: false,
+            // hide: true,
+          },
+          {
+            label: "入职时间",
+            prop: "rtime",
+            hide: true,
+            display: false,
+          },
+          // {
+          //     label: "是否派遣",
+          //     prop: "dispatch",
+          //     // hide: true,
+          //     type: 'select',
+          //     // display: false,
+          //     dicData: [
+          //         {
+          //             label: '未派遣',
+          //             value: 1
+          //         }, {
+          //             label: '已派遣',
+          //             value: 0
+          //         }
+          //     ]
+          // },
+          {
+            label: "是否派遣",
+            prop: "dispatch",
+            type: "select",
+            dicData: [
+              {
+                label: "未派遣",
+                value: "1",
+              },
+              {
+                label: "已派遣",
+                value: "0",
+              },
+            ],
+          },
+          {
+            label: "是否持证",
+            prop: "hold",
+            slot: true,
+            search: true,
+            searchSpan: 3,
+            width: 72,
+            display: false,
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=equipage",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            type: "select",
+            rules: [
+              {
+                required: true,
+                message: "请选择",
+                trigger: "blur",
+              },
+            ],
+          },
+
+          // {
+          //     label: "入职时间",
+          //     prop: "rtime",
+          //     type: "datetime",
+          //     format: "yyyy-MM-dd",
+          //     valueFormat: "yyyy-MM-dd",
+          //     searchRange: true,
+          //     searchSpan: 6,
+          //     hide: true,
+          //     addDisplay: false,
+          //     editDisplay: false,
+          //     viewDisplay: false,
+          //     search: true,
+          //     rules: [{
+          //         required: true,
+          //         message: "请输入时间",
+          //         trigger: "blur"
+          //     }]
+          // },
+          {
+            label: "在职状态",
+            prop: "status",
+            type: "select",
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=workerState",
+            props: {
+              label: "dictValue",
+              value: "dictKey",
+            },
+            dataType: "number",
+            display: false,
+            hide: true,
+            searchSpan: 3,
+            width: 80,
+            search: false,
+            rules: [
+              {
+                required: true,
+                message: "请选择在职状态",
+                trigger: "blur",
+              },
+            ],
+          },
+        ],
+      },
+      data: [],
+      platformQuery: {},
+      platformSelectionList: [],
+
+      excelForm: {},
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "模板上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "模板上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data",
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/blade-user/import-user",
+          },
+          {
+            label: "数据覆盖",
+            prop: "isCovered",
+            type: "switch",
+            align: "center",
+            width: 80,
+            dicData: [
+              {
+                label: "否",
+                value: 0,
+              },
+              {
+                label: "是",
+                value: 1,
+              },
+            ],
+            value: 0,
+            slot: true,
+            rules: [
+              {
+                required: true,
+                message: "请选择是否覆盖",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
+          },
+        ],
+      },
+    };
+  },
+  watch: {
+    "form.tenantId"() {
+      if (this.form.tenantId !== "" && this.initFlag) {
+        this.initData(this.form.tenantId);
+      }
+    },
+    "excelForm.isCovered"() {
+      if (this.excelForm.isCovered !== "") {
+        const column = this.findObject(this.excelOption.column, "excelFile");
+        column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`;
+      }
+    },
+  },
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.user_add, false),
+        viewBtn: this.vaildData(this.permission.user_view, false),
+        delBtn: this.vaildData(this.permission.user_delete, false),
+        editBtn: this.vaildData(this.permission.user_edit, false),
+      };
+    },
+
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  mounted() {
+    //重复菜单
+
+    var flag = false,
+      i = 0,
+      ind = null;
+    this.$store.state.tags.tagList.forEach((item, index) => {
+      if (item.label == "公司保安员详情") {
+        if (flag == false) {
+          ind = index;
+          flag = true;
+        }
+        i++;
+      }
+    });
+    if (i > 1) {
+      this.$store.state.tags.tagList.splice(ind, 1);
+    }
+
+    // 非租户模式默认加载管理组数据
+    if (!website.tenantMode) {
+      this.initData(website.tenantId);
+    }
+
+    // 判断是否从保安公司人数点击跳转
+    if (this.$route.query.departmentid) {
+      this.departmentid = this.$route.query.departmentid;
+      console.log(this.departmentid, "ddddddddddddd");
+      this.spanRight = 24;
+      this.spanLeft = 0;
+      var d = this.option.column;
+      d[1]["search"] = false;
+    } else {
+      console.log("正常点击");
+      this.spanRight = 21;
+      this.spanLeft = 3;
+      var d = this.option.column;
+      d[1]["search"] = true;
+    }
+    this.onLoad(this.page);
+  },
+  methods: {
+    rowClickSelf(row) {
+      console.log(row, "baoan");
+      this.$router.push({
+        path: "/securityCompany/index",
+        query: { fromSecunityGuardId: row },
+      });
+    },
+    Print() {
+      this.$Print(this.$refs.baoanzheng);
+    },
+    closePrint() {
+      this.dialogVisiblecertificates = false;
+    },
+    close(row) {
+      this.objf = {};
+      this.dialogVisible = false;
+    },
+    submitf(form, done) {
+      console.log(form);
+      // this.$message.success(JSON.stringify(form));
+      addhonor(form).then((res) => {
+        console.log(res);
+      });
+      this.objf = {};
+      this.dialogVisible = false;
+      done();
+    },
+    errorf(err) {
+      this.$message.success("请查看控制台");
+      console.log(err);
+    },
+    handleClose(done) {
+      this.objf = {};
+      done();
+    },
+    honor(row) {
+      this.objf = {};
+      //打开荣誉录入
+      console.log(this.objf);
+      this.objf = {
+        cardid: row.cardid,
+        name: row.name,
+        honor: "",
+        honortime: "",
+      };
+      this.dialogVisible = true;
+    },
+    nodeClick(data) {
+      //   this.treeDeptId = data.id;
+      // console.log(data, 55555);
+      if (data.title != "南昌市公安局") {
+        this.jurisdiction = data.id;
+      } else {
+        this.jurisdiction = "";
+      }
+      this.page.currentPage = 1;
+      this.onLoad(this.page);
+    },
+    initData(tenantId) {
+      getRoleTree(tenantId).then((res) => {
+        const column = this.findObject(this.option.group, "roleId");
+        column.dicData = res.data.data;
+      });
+      getDeptTree(tenantId).then((res) => {
+        const column = this.findObject(this.option.group, "deptId");
+        column.dicData = res.data.data;
+      });
+      getPostList(tenantId).then((res) => {
+        const column = this.findObject(this.option.group, "postId");
+        column.dicData = res.data.data;
+      });
+    },
+
+    rowSave(row, done, loading) {
+      row.deptId = row.deptId.join(",");
+      row.roleId = row.roleId.join(",");
+      row.postId = row.postId.join(",");
+      add(row).then(
+        () => {
+          this.initFlag = false;
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          window.console.log(error);
+          loading();
+        }
+      );
+    },
+    searchReset() {
+      this.query = {};
+      this.treeDeptId = "";
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      var deptId;
+      if (params.deptId) {
+        deptId = params.deptId;
+      }
+      this.onLoad(this.page, params, deptId);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    uploadAfter(res, done, loading, column) {
+      window.console.log(column);
+      this.excelBox = false;
+      this.refreshChange();
+      done();
+    },
+
+    handleTemplate() {
+      window.open(
+        `/api/blade-user/export-template?${
+          this.website.tokenHeader
+        }=${getToken()}`
+      );
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getUser(this.form.id).then((res) => {
+          this.form = res.data.data;
+          if (this.form.hasOwnProperty("deptId")) {
+            this.form.deptId = this.form.deptId.split(",");
+          }
+          if (this.form.hasOwnProperty("roleId")) {
+            this.form.roleId = this.form.roleId.split(",");
+          }
+          if (this.form.hasOwnProperty("postId")) {
+            this.form.postId = this.form.postId.split(",");
+          }
+        });
+      }
+      this.initFlag = true;
+      done();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}, deptId) {
+      this.loading = true;
+      params["jurisdiction"] = this.jurisdiction;
+      if (this.departmentid) {
+        deptId = this.departmentid;
+      }
+      getListSecurity(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query),
+        deptId
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        var d = data.records;
+        var date = new Date();
+        var datayear = date.getFullYear();
+        for (const key in d) {
+          var year = d[key].cardid.slice(6, 10);
+          d[key]["age"] = +datayear - +year;
+          // d[key].securitynumber = "赣洪202100009";
+        }
+        this.data = data.records;
+        console.log(this.data);
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+
+    platformSelectionClear() {
+      this.platformSelectionList = [];
+      this.$refs.platformCrud.toggleSelection();
+    },
+
+    // 行单击
+    handleRowClick(row) {
+      // delete (row["name"]);
+      var obj = row;
+      obj["name"] = "保安详细信息";
+      this.$router.push({
+        path: `/management/index`,
+        query: obj,
+      });
+
+      // var flag = false,
+      //   i = 0,
+      //   ind = null;
+
+      // this.$store.state.tags.tagList.forEach((item, index) => {
+      //   if (item.label == "保安详细信息") {
+      //     if (flag == false) {
+      //       ind = index;
+      //       flag = true;
+      //     }
+      //     i++;
+      //   }
+      // });
+      // if (i > 1) {
+      //   this.$store.state.tags.tagList.splice(ind, 1);
+      // }
+    },
+    //证件查看
+    handleViewCredentials(row) {
+      var obj = row;
+      // obj["name"] = "保安证件信息";
+      // this.$router.push({
+      //   path: `/management/idinformation`,
+      //   query: obj,
+      // });
+      this.dialogVisiblecertificates = true;
+      // // $("#certificatess").jqprint();
+      // console.log($);
+      // this.$Print("#certificatess");
+      this.objVisiblecertificates = obj;
+      console.log(this.objVisiblecertificates);
+    },
+    // 证件吊销事件
+    handleCredentials(row) {
+      if (row.hold == 1) {
+        this.$message({
+          type: "info",
+          message: "证件未拥有!",
+        });
+      } else if (row.hold == 2) {
+        this.$message({
+          type: "info",
+          message: "证件已吊销!",
+        });
+      } else {
+        this.$confirm("是否吊销该人员的证件?", "提示", {
+          confirmButtonText: "是",
+          cancelButtonText: "否",
+          type: "warning",
+        })
+          .then(() => {
+            updateHold(2, row.cardid).then((res) => {
+              console.log(res);
+              this.$message({
+                type: "success",
+                message: "删除成功!",
+              });
+            });
+          })
+          .catch(() => {
+            this.$message({
+              type: "info",
+              message: "已取消删除",
+            });
+          });
+      }
+    },
+  },
+};
+</script>
+
+<style lang='scss' scoped>
+.box {
+  height: 800px;
+}
+
+.el-scrollbar {
+  height: 100%;
+}
+
+.box .el-scrollbar__wrap {
+  overflow: scroll;
+}
+#certificatess {
+  width: 600px;
+  height: 300px;
+  background-color: #fff;
+  .certificates-main {
+    width: 100%;
+    height: 100%;
+    background-image: url("/img/register/bazbj.png");
+    background-size: 100% 100%;
+  }
+}
+
+.baoanzheng {
+  position: fixed;
+  top: 0;
+  left: -10%;
+  height: 0;
+  width: 120%;
+  height: 100%;
+  // background-color: rgba(0, 0, 0, 0.5);
+  background-color: #fff;
+  z-index: 9000;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.baz-main {
+  position: relative;
+  top: 15px;
+  // width: 441px;
+  // height: 358px;
+  width: 491px;
+  height: 468px;
+  // background-color: #004ca7;
+  background-color: #fff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+.baz-m-body {
+  width: 461px;
+  height: 308px;
+  background-image: url("/img/register/bazbj.png");
+  background-size: 100% 100%;
+  .bmb-heard {
+    font-size: 2rem;
+    width: 100%;
+    text-align: center;
+    letter-spacing: 1rem;
+    margin-bottom: 40px;
+    position: relative;
+    top: 20px;
+  }
+  img {
+    width: 130px;
+    height: 130px;
+    border-radius: 130px;
+    position: absolute;
+    top: 110px;
+    right: 60px;
+  }
+  .bmb-b {
+    padding-left: 20px;
+    box-sizing: border-box;
+    height: 50px;
+    margin-left: 10px;
+    width: 100%;
+    font-size: 1rem;
+    font-weight: 400;
+    .bmb-b-s {
+      display: inline-block;
+      width: 110px;
+      font-size: 1.1rem;
+      font-weight: 600;
+    }
+  }
+}
+.PrintBut {
+  margin-top: 15px;
+}
+.rowClickSelf {
+  &:hover {
+    cursor: pointer;
+  }
+}
+</style>
diff --git a/src/views/securityUnitOperation/economicAnalysis.vue b/src/views/securityUnitOperation/economicAnalysis.vue
index 23c01cc..be41faf 100644
--- a/src/views/securityUnitOperation/economicAnalysis.vue
+++ b/src/views/securityUnitOperation/economicAnalysis.vue
@@ -6,7 +6,7 @@
           <div class="rowTitle">
             <img src="../../../public/img/bajgxt/u1618.png" />
             <span>数据概览</span>
-            <el-select class="select0" v-model="value0" placeholder="请选择">
+            <!-- <el-select class="select0" v-model="value0" placeholder="请选择">
               <el-option
                 v-for="item in options0"
                 :key="item.value"
@@ -14,19 +14,22 @@
                 :value="item.value"
               >
               </el-option>
-            </el-select>
+            </el-select> -->
             <el-select
               class="select1"
-              v-model="value1"
+              ref="treeForm"
+              v-model="node.title"
               placeholder="请选择"
-              @change="fenjuChange"
             >
-              <el-option
-                v-for="item in options1"
-                :key="item.id"
-                :label="item.title"
-                :value="item.id"
-              >
+              <el-option style="height: auto;" :value="node">
+                <el-tree
+                  :data="options1"
+                  default-expand-all
+                  node-key="id"
+                  @node-click="handleNodeClick"
+                  :props="props"
+                >
+                </el-tree>
               </el-option>
             </el-select>
             <el-select
@@ -59,13 +62,13 @@
             </div>
             <div class="box-card">
               <span>公司派遣人数</span>
-              <span>1121</span>
-              <span>较上月增加13人</span>
+              <span>{{ socialSecurity.paiQ }}</span>
+              <span>较上月增加{{ socialSecurity.addPaiQ }}人</span>
             </div>
             <div class="box-card">
               <span>社保缴纳人数占比</span>
-              <span>85%</span>
-              <span>较上月上涨2%</span>
+              <span>{{ socialSecurity.sheBPerson }}</span>
+              <span>较上月上涨{{ socialSecurity.addSheBPerson }}</span>
             </div>
           </div>
         </div>
@@ -73,13 +76,13 @@
     </el-row>
     <el-row :gutter="20">
       <el-col :span="16">
-        <div class="rowContent">
+        <div class="rowContent" v-loading="loading1">
           <span class="span-title">社保缴纳</span>
           <div id="middleEchart1"></div>
         </div>
       </el-col>
       <el-col :span="8">
-        <div class="rowContent">
+        <div class="rowContent" v-loading="loading2">
           <span class="span-title">派遣人员占比</span>
           <div id="middleEchart2"></div>
         </div>
@@ -87,8 +90,8 @@
     </el-row>
     <el-row>
       <el-col :span="24">
-        <div class="rowContent">
-          <span class="span-title">公司经济运转趋势</span>
+        <div class="rowContent" v-loading="loading3">
+          <span class="span-title">服务客户数量</span>
           <div id="bottomEchart"></div>
         </div>
       </el-col>
@@ -99,13 +102,15 @@
 <script>
 import * as echarts from "echarts";
 import echartJs from "./securityEchart.js";
-import { lazyTreeJu } from "../../api/index/index";
+import { lazyTreeJu, lazyTrees } from "../../api/index/index";
 import {
   getCompanys,
   selectPCount,
   selectTo,
   queryYearSoil,
   queryYearAn,
+  queryYearPz,
+  queryYearKh
 } from "../../api/securityUnitOperation/securityUnitOperation";
 export default {
   data() {
@@ -116,28 +121,28 @@
       options0: [
         {
           value: "2012",
-          label: "2012年",
+          label: "2012年"
         },
         {
           value: "2011",
-          label: "2011年",
+          label: "2011年"
         },
         {
           value: "2010",
-          label: "2010年",
+          label: "2010年"
         },
         {
           value: "2009",
-          label: "2009年",
+          label: "2009年"
         },
         {
           value: "2008",
-          label: "2008年",
+          label: "2008年"
         },
         {
           value: "2007",
-          label: "2007年",
-        },
+          label: "2007年"
+        }
       ],
       options1: [],
       options2: [],
@@ -146,33 +151,64 @@
         addNum: 0,
         money: 0,
         addMoney: 0,
+        paiQ: 0,
+        addPaiQ: 0,
+        sheBPerson: 0,
+        addSheBPerson: 0
       },
+      loading1: true,
+      loading2: true,
+      loading3: true,
+      enterpriseName: "",
+      props: {
+        children: "children",
+        label: "title",
+        value: "id"
+      },
+      node: {} //选中的记录
     };
   },
   methods: {
+    //点击节点
+    handleNodeClick(data) {
+      this.node = data;
+      this.value1 = data.id;
+      this.$refs.treeForm.blur();
+      this.getCompanys();
+    },
     toEconomicTable() {
-      this.$router.push({ path: "/securityUnitOperation/economicTable" });
+      this.$router.push({
+        path:
+          "/securityUnitOperation/economicTable?jurisdiction=" +
+          this.value2 +
+          "&enterpriseName=" +
+          this.enterpriseName +
+          "&jurisdiction1=" +
+          this.value1
+      });
     },
     getFenju() {
-      lazyTreeJu().then((res) => {
+      this.options1 = [];
+      this.value1 = "";
+      this.node = {};
+      lazyTrees().then(res => {
         if (res.data.code === 200) {
           this.options1 = res.data.data;
           this.value1 = this.options1[0] ? this.options1[0].id : "";
+          this.node = this.options1[0];
           this.getCompanys();
         } else {
           this.$message.error(res.msg);
         }
       });
     },
-    fenjuChange() {
-      this.getCompanys();
-    },
     pieChange() {
+      this.loading2 = true;
       let params = {
         jurisdiction: this.value1,
-        deptid: this.value2,
+        deptid: this.value2
       };
-      selectPCount(params).then((res) => {
+      selectPCount(params).then(res => {
         if (res.data.code === 200) {
           let middleEchart2 = echarts.init(
             document.getElementById("middleEchart2")
@@ -181,10 +217,11 @@
         } else {
           this.$message.error(res.msg);
         }
+        this.loading2 = false;
       });
     },
     getCompanys() {
-      getCompanys({ jurisdiction: this.value1 }).then((res) => {
+      getCompanys({ jurisdiction: this.value1 }).then(res => {
         if (res.data.code === 200) {
           this.options2 = res.data.data;
           this.value2 = this.options2[0] ? this.options2[0].departmentid : "";
@@ -195,42 +232,70 @@
     getSocialSecurity() {
       let params = {
         jurisdiction: this.value1,
-        deptid: this.value2,
+        deptid: this.value2
       };
-      selectTo(params).then((res) => {
+      selectTo(params).then(res => {
         if (res.data.code === 200) {
           let data = res.data.data[0];
           this.socialSecurity.num = data.thismouth;
           this.socialSecurity.addNum = data.thismouth - data.lastmonth;
           this.socialSecurity.money = data.thisamount;
           this.socialSecurity.addMoney = data.thisamount - data.lastamount;
+          this.socialSecurity.paiQ = data.userpcthismouth;
+          this.socialSecurity.addPaiQ =
+            data.userpcthismouth - data.userpclastmouth;
+          this.socialSecurity.sheBPerson =
+            data.userthismouth && (data.thismouth / data.userthismouth) * 100
+              ? ((data.thismouth / data.userthismouth) * 100).toFixed(2) + "%"
+              : 0;
+          this.socialSecurity.addSheBPerson =
+            data.userthismouth &&
+            data.userlastmouth &&
+            (data.thismouth / data.userthismouth) * 100 &&
+            (data.lastmonth / data.userlastmouth) * 100 &&
+            (data.thismouth / data.userthismouth) * 100 -
+              (data.lastmonth / data.userlastmouth) * 100
+              ? (
+                  (data.thismouth / data.userthismouth) * 100 -
+                  (data.lastmonth / data.userlastmouth) * 100
+                ).toFixed(2) + "%"
+              : 0;
         } else {
           this.$message.error(res.msg);
         }
       });
     },
     getQueryYearSoil() {
+      this.loading1 = true;
       let params = {
         jurisdiction: this.value1,
-        deptid: this.value2,
+        deptid: this.value2
       };
-      queryYearSoil(params).then((res) => {
+      queryYearSoil(params).then(res => {
         if (res.data.code === 200) {
-          let middleEchart1 = echarts.init(
-            document.getElementById("middleEchart1")
-          );
-          middleEchart1.setOption(echartJs.economicMiddle(res.data.data));
+          queryYearPz(params).then(res1 => {
+            if (res1.data.code === 200) {
+              let middleEchart1 = echarts.init(
+                document.getElementById("middleEchart1")
+              );
+              middleEchart1.setOption(
+                echartJs.economicMiddle(res.data.data, res1.data.data)
+              );
+            }
+            this.loading1 = false;
+          });
         } else {
           this.$message.error(res.msg);
         }
       });
     },
     getQueryYearAn() {
+      this.loading3 = true;
       let params = {
         jurisdiction: this.value1,
-        deptid: this.value2,
+        deptid: this.value2
       };
-      queryYearAn(params).then((res) => {
+      queryYearKh(params).then(res => {
         if (res.data.code === 200) {
           let bottomEchart = echarts.init(
             document.getElementById("bottomEchart")
@@ -239,18 +304,24 @@
         } else {
           this.$message.error(res.msg);
         }
+        this.loading3 = false;
       });
     },
     changeCompanys() {
+      this.options2.forEach(item => {
+        if (item.departmentid === this.value2) {
+          this.enterpriseName = item.enterpriseName;
+        }
+      });
       this.pieChange();
       this.getSocialSecurity();
       this.getQueryYearSoil();
       this.getQueryYearAn();
-    },
+    }
   },
   mounted() {
     this.getFenju();
-  },
+  }
 };
 </script>
 <style lang="scss" scoped>
diff --git a/src/views/securityUnitOperation/economicTable.vue b/src/views/securityUnitOperation/economicTable.vue
index e3c7687..9fdd024 100644
--- a/src/views/securityUnitOperation/economicTable.vue
+++ b/src/views/securityUnitOperation/economicTable.vue
@@ -1,136 +1,73 @@
 <template>
   <basic-container>
-    <!-- <div class="operation-table"> -->
-    <!-- <el-row>
-        <el-col>
-          <span>时间范围:</span>
-          <el-date-picker
-            v-model="value2"
-            type="daterange"
-            align="right"
-            unlink-panels
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            :picker-options="pickerOptions"
-          >
-          </el-date-picker>
-          <span>类别:</span>
-          <el-select v-model="typeValue" placeholder="请选择">
-            <el-option
-              v-for="item in typeOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
-            </el-option>
-          </el-select>
-          <span>所属辖区:</span>
-          <el-select v-model="subofficeValue" placeholder="请选择">
-            <el-option
-              v-for="item in subofficeOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
-            </el-option>
-          </el-select>
-          <span>公司名称:</span>
-          <el-input v-model="companyName"></el-input>
-          <el-button>查询</el-button>
-          <el-button>重置</el-button>
-        </el-col>
-      </el-row> -->
-    <!-- <el-row>
-        <el-col>
-          <div class="table">
-            <el-button @click="downExcel">下载</el-button> -->
     <avue-crud
       :option="tableOption"
+      :table-loading="loading"
       :data="tableData"
-      :page.sync="tablePage"
+      :page.sync="page"
       :permission="permissionList"
-      :before-open="beforeOpen"
-      @date-change="dateChange"
+      ref="crud"
+      @row-update="rowUpdates"
+      @row-save="rowSave"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
     >
     </avue-crud>
-    <!-- <el-table id="table" :data="tableData" style="width: 100%">
-            <el-table-column type="index" label="序号" width="50">
-            </el-table-column>
-            <el-table-column prop="company" label="公司名称" width="180">
-            </el-table-column>
-            <el-table-column prop="subOffice" label="所属分局" width="180">
-            </el-table-column>
-            <el-table-column prop="time" label="时间"> </el-table-column>
-            <el-table-column prop="sbjnrs" label="社保缴纳人数">
-            </el-table-column>
-            <el-table-column prop="sbjnze" label="社保缴纳总额(万)">
-            </el-table-column>
-            <el-table-column prop="gspqrs" label="公司派遣人数">
-            </el-table-column>
-            <el-table-column prop="sbjnrszb" label="社保缴纳人数占比(%)">
-            </el-table-column>
-            <el-table-column prop="bz" label="备注"> </el-table-column>
-          </el-table> -->
-    <!-- <el-pagination
-              background
-              layout="prev, pager, next"
-              :total="tableData.length"
-            >
-            </el-pagination> -->
-    <!-- </div>
-        </el-col>
-      </el-row> -->
-    <!-- </div> -->
   </basic-container>
 </template>
 <script>
 import FileSaver from "file-saver";
 import XLSX from "xlsx";
 import { mapGetters } from "vuex";
+import { selectJj } from "../../api/securityUnitOperation/securityUnitOperation";
+import { lazyTreeJu,lazyTrees } from "../../api/index/index";
 export default {
   name: "公司经济情况智能分析详情表",
   data() {
     return {
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      query: {},
       value1: "",
       value2: "",
       tableData: [
-        {
-          company: "江西省永安保安服务有限公司",
-          subOffice: "南昌市公安局",
-          time: "2021-06-1",
-          sbjnrs: "2100",
-          sbjnze: "350",
-          gspqrs: "110",
-          sbjnrszb: "10",
-          bz: "",
-        },
-        {
-          company: "南昌市赣水保安服务有限公司",
-          subOffice: "东湖分局",
-          time: "2020-05-21",
-          sbjnrs: "1800",
-          sbjnze: "310",
-          gspqrs: "160",
-          sbjnrszb: "21",
-          bz: "",
-        },
-        {
-          company: "江西中业兴达保安服务有限公司",
-          subOffice: "西湖分局",
-          time: "2021-08-11",
-          sbjnrs: "2300",
-          sbjnze: "612",
-          gspqrs: "80",
-          sbjnrszb: "7",
-          bz: "",
-        },
+        // {
+        //   company: "江西省永安保安服务有限公司",
+        //   subOffice: "南昌市公安局",
+        //   time: "2021-06-1",
+        //   sbjnrs: "2100",
+        //   sbjnze: "350",
+        //   gspqrs: "110",
+        //   sbjnrszb: "10",
+        //   bz: ""
+        // },
+        // {
+        //   company: "南昌市赣水保安服务有限公司",
+        //   subOffice: "东湖分局",
+        //   time: "2020-05-21",
+        //   sbjnrs: "1800",
+        //   sbjnze: "310",
+        //   gspqrs: "160",
+        //   sbjnrszb: "21",
+        //   bz: ""
+        // },
+        // {
+        //   company: "江西中业兴达保安服务有限公司",
+        //   subOffice: "西湖分局",
+        //   time: "2021-08-11",
+        //   sbjnrs: "2300",
+        //   sbjnze: "612",
+        //   gspqrs: "80",
+        //   sbjnrszb: "7",
+        //   bz: ""
+        // }
       ],
-      tablePage: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
       tableOption: {
         excelBtn: true,
         delBtn: false,
@@ -150,185 +87,150 @@
         viewBtn: true,
         dialogClickModal: false,
         column: [
-          {
-            label: "类别",
-            hide: true,
-            prop: "",
-            search: true,
-            searchSpan: 4,
-            display: true,
-            type: "select",
-            props: {
-              label: "label",
-              value: "value",
-            },
-            // cascaderItem: ["city", "area"],
-            // dicUrl:subofficeOptions,
-            dicData: [
-              {
-                value: "0",
-                label: "全部",
-              },
-              {
-                value: "1",
-                label: "社保缴纳人数",
-              },
-              {
-                value: "2",
-                label: "社保缴纳总额",
-              },
-              {
-                value: "3",
-                label: "公司派遣人数",
-              },
-              {
-                value: "4",
-                label: "社保缴纳人数占比",
-              },
-            ],
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请选择类别",
-                trigger: "blur",
-              },
-            ],
-          },
+          // {
+          //   label: "类别",
+          //   hide: true,
+          //   prop: "",
+          //   search: true,
+          //   searchSpan: 4,
+          //   display: true,
+          //   type: "select",
+          //   props: {
+          //     label: "label",
+          //     value: "value"
+          //   },
+          //   // cascaderItem: ["city", "area"],
+          //   // dicUrl:subofficeOptions,
+          //   dicData: [
+          //     {
+          //       value: "0",
+          //       label: "全部"
+          //     },
+          //     {
+          //       value: "1",
+          //       label: "社保缴纳人数"
+          //     },
+          //     {
+          //       value: "2",
+          //       label: "社保缴纳总额"
+          //     },
+          //     {
+          //       value: "3",
+          //       label: "公司派遣人数"
+          //     },
+          //     {
+          //       value: "4",
+          //       label: "社保缴纳人数占比"
+          //     }
+          //   ],
+          //   search: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请选择类别",
+          //       trigger: "blur"
+          //     }
+          //   ]
+          // },
           {
             label: "公司名称",
-            prop: "company",
+            prop: "enterpriseName",
             search: true,
             searchSpan: 4,
-            display: false,
+            width:300,
+            display: false
           },
           {
             label: "所属辖区",
-            prop: "subOffice",
+            prop: "jurname",
             searchSpan: 4,
-            type: "select",
+            type: "tree",
             props: {
-              label: "label",
-              value: "value",
+              label: "title",
+              value: "id"
             },
             // cascaderItem: ["city", "area"],
             // dicUrl:subofficeOptions,
-            dicData: [
-              {
-                value: "0",
-                label: "南昌市公安局",
-              },
-              {
-                value: "2",
-                label: "东湖分局",
-              },
-              {
-                value: "3",
-                label: "西湖分局",
-              },
-              {
-                value: "4",
-                label: "青云谱分局",
-              },
-              {
-                value: "5",
-                label: "青山湖分局",
-              },
-            ],
+            dicData: [],
             search: true,
             rules: [
               {
                 required: true,
                 message: "请选择所属辖区",
-                trigger: "blur",
-              },
-            ],
+                trigger: "blur"
+              }
+            ]
           },
-          {
-            label: "时间",
-            prop: "time",
-            type: "date",
-            format: "yyyy-MM-dd hh:mm:ss",
-            valueFormat: "yyyy-MM-dd hh:mm:ss",
-            searchSpan: 6,
-            searchRange: true,
-            search: true,
-            display: false,
-          },
+          // {
+          //   label: "时间",
+          //   prop: "time",
+          //   type: "date",
+          //   format: "yyyy-MM-dd hh:mm:ss",
+          //   valueFormat: "yyyy-MM-dd hh:mm:ss",
+          //   searchSpan: 6,
+          //   searchRange: true,
+          //   search: true,
+          //   display: false
+          // },
           {
             label: "社保缴纳人数",
-            prop: "sbjnrs",
-            display: false,
+            prop: "sbnum",
+            display: false
           },
           {
             label: "社保缴纳总额(万)",
-            prop: "sbjnze",
+            prop: "sbcount",
             display: false,
+            formatter: function(row, value) {
+              return (value = value / 10000);
+            }
           },
           {
             label: "公司派遣人数",
-            prop: "gspqrs",
-            display: false,
+            prop: "pcnum",
+            display: false
           },
           {
-            label: "社保缴纳人数占比(%)",
-            prop: "sbjnrszb",
+            label: "社保缴纳人数占比",
+            prop: "zb",
             display: false,
+            formatter: function(row, value) {
+              return (value = value * 100 + "%");
+            }
           },
           {
             label: "备注",
             prop: "bz",
-            display: false,
-          },
-        ],
+            display: false
+          }
+        ]
       },
       typeValue: "0",
       typeOptions: [
         {
           value: "0",
-          label: "全部",
+          label: "全部"
         },
         {
           value: "1",
-          label: "社保缴纳人数",
+          label: "社保缴纳人数"
         },
         {
           value: "2",
-          label: "社保缴纳总额",
+          label: "社保缴纳总额"
         },
         {
           value: "3",
-          label: "公司派遣人数",
+          label: "公司派遣人数"
         },
         {
           value: "4",
-          label: "社保缴纳人数占比",
-        },
+          label: "社保缴纳人数占比"
+        }
       ],
       subofficeValue: "0",
-      subofficeOptions: [
-        {
-          value: "0",
-          label: "南昌市公安局",
-        },
-        {
-          value: "2",
-          label: "东湖分局",
-        },
-        {
-          value: "3",
-          label: "西湖分局",
-        },
-        {
-          value: "4",
-          label: "青云谱分局",
-        },
-        {
-          value: "5",
-          label: "青山湖分局",
-        },
-      ],
       companyName: "",
+      loading: true
     };
   },
   computed: {
@@ -338,33 +240,113 @@
         addBtn: this.vaildData(this.permission.post_add, false),
         viewBtn: this.vaildData(this.permission.post_view, false),
         delBtn: this.vaildData(this.permission.post_delete, false),
-        editBtn: this.vaildData(this.permission.post_edit, false),
+        editBtn: this.vaildData(this.permission.post_edit, false)
       };
-    },
+    }
   },
   methods: {
-    dateChange() {},
-    // downExcel() {
-    //   let et = XLSX.utils.table_to_book(document.getElementById("table"));
-    //   let etout = XLSX.write(et, {
-    //     bookType: "xlsx",
-    //     bookSST: true,
-    //     type: "array"
-    //   });
-    //   try {
-    //     FileSaver.saveAs(
-    //       new Blob([etout], {
-    //         type: "application/octet-stream"
-    //       }),
-    //       `表.xlsx`
-    //     ); //导出的文件名
-    //   } catch (e) {
-    //     console.log(e, etout);
-    //   }
-    //   return etout;
-    // }
+    rowSave(row, done, loading) {
+      adddata(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        },
+        error => {
+          window.console.log(error);
+          loading();
+        }
+      );
+    },
+    rowUpdates(row, index, done, loading) {
+      update(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        },
+        error => {
+          window.console.log(error);
+          loading();
+        }
+      );
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+      this.onLoad(this.page, this.query);
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+      this.onLoad(this.page, this.query);
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      let param = {};
+      param["jurisdiction"] = params["jurname"] || "";
+      param["enterpriseName"] = params["enterpriseName"] || "";
+      param["current"] = page.currentPage;
+      param["size"] = page.pageSize;
+      selectJj(param).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.tableData = data.records;
+        this.loading = false;
+      });
+    },
+    getSubOfficeData() {
+      lazyTrees().then(res => {
+        if (res.data.code === 200) {
+          this.tableOption.column.forEach(item => {
+            if (item.label == "所属辖区") {
+              item.dicData = res.data.data;
+            }
+          });
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
+    getLocationParams() {
+      let url = window.location.href;
+      let urlArr = url.split("?")[1].split("&");
+      var object = new Object();
+      for (var i = 0; i < urlArr.length; i++) {
+        let mm = urlArr[i].split("=");
+        object[decodeURIComponent(mm[0])] = decodeURIComponent(mm[1]);
+      }
+      let jurisdiction = object["jurisdiction1"] || "";
+      let enterpriseName = object["enterpriseName"] || "";
+      this.query = {
+        jurisdiction: jurisdiction,
+        enterpriseName: enterpriseName
+      };
+      this.onLoad(this.page, this.query);
+    }
   },
-  mounted() {},
+  mounted() {
+    this.getLocationParams();
+    this.getSubOfficeData();
+  }
 };
 </script>
 <style lang="scss" scoped>
diff --git a/src/views/securityUnitOperation/operationAnalysis.vue b/src/views/securityUnitOperation/operationAnalysis.vue
index 4aa5080..3da4c0b 100644
--- a/src/views/securityUnitOperation/operationAnalysis.vue
+++ b/src/views/securityUnitOperation/operationAnalysis.vue
@@ -7,23 +7,37 @@
             <img src="../../../public/img/bajgxt/u1618.png" />
             <span>数据概览</span>
 
-            <el-select class="select0" v-model="value0" placeholder="请选择">
+            <!-- <el-select class="select0" v-model="value0" placeholder="请选择">
               <el-option
                 v-for="item in options0"
                 :key="item.value"
                 :label="item.label"
                 :value="item.value"
               ></el-option>
+            </el-select> -->
+            <el-select
+              class="select1"
+              ref="treeForm"
+              v-model="node.title"
+              placeholder="请选择"
+            >
+              <el-option style="height: auto;" :value="node">
+                <el-tree
+                  :data="options1"
+                  default-expand-all
+                  node-key="id"
+                  @node-click="handleNodeClick"
+                  :props="props"
+                >
+                </el-tree>
+              </el-option>
             </el-select>
-            <el-select class="select1" v-model="value1" placeholder="请选择" @change="fenjuChange">
-              <el-option
-                v-for="item in options1"
-                :key="item.id"
-                :label="item.title"
-                :value="item.id"
-              ></el-option>
-            </el-select>
-            <el-select class="select2" v-model="value2" placeholder="请选择" @change="changeCompanys">
+            <el-select
+              class="select2"
+              v-model="value2"
+              placeholder="请选择"
+              @change="changeCompanys"
+            >
               <el-option
                 v-for="item in options2"
                 :key="item.departmentid"
@@ -37,38 +51,38 @@
           <div class="col-content">
             <div class="box-card">
               <span>总保安数</span>
-              <span>{{card.baoanTotal}}</span>
-              <span>较上月增加{{card.addbaoanTotal}}人</span>
+              <span>{{ card.baoanTotal }}</span>
+              <span>较上月增加{{ card.addbaoanTotal }}人</span>
             </div>
             <div class="box-card">
               <span>正常保安员</span>
-              <span>{{card.zcBaoan}}</span>
-              <span>较上月增加{{card.addzcBaoan}}人</span>
+              <span>{{ card.zcBaoan }}</span>
+              <span>较上月增加{{ card.addzcBaoan }}人</span>
             </div>
             <div class="box-card">
               <span>持证保安员</span>
-              <span>{{card.czBaoan}}</span>
-              <span>较上月增加{{card.addczBaoan}}人</span>
+              <span>{{ card.czBaoan }}</span>
+              <span>较上月增加{{ card.addczBaoan }}人</span>
             </div>
-            <div class="box-card">
+            <!-- <div class="box-card">
               <span>过考保安员</span>
-              <span>{{card.gkBaoan}}</span>
-              <span>较上月增加{{card.addgkBaoan}}人</span>
-            </div>
+              <span>{{ card.gkBaoan }}</span>
+              <span>较上月增加{{ card.addgkBaoan }}人</span>
+            </div> -->
             <div class="box-card">
               <span>服务客户</span>
-              <span>{{card.kh}}</span>
-              <span>较上月增加{{card.addkh}}家</span>
+              <span>{{ card.kh }}</span>
+              <span>较上月增加{{ card.addkh }}家</span>
             </div>
             <div class="box-card">
               <span>缴纳社保</span>
-              <span>{{card.sheb}}</span>
-              <span>较上月增加{{card.addsheb}}人</span>
+              <span>{{ card.sheb }}</span>
+              <span>较上月增加{{ card.addsheb }}人</span>
             </div>
             <div class="box-card">
               <span>保安派遣</span>
-              <span>{{card.baoanPq}}</span>
-              <span>较上月增加{{card.addbaoanPq}}人</span>
+              <span>{{ card.baoanPq }}</span>
+              <span>较上月增加{{ card.addbaoanPq }}人</span>
             </div>
           </div>
         </div>
@@ -76,23 +90,47 @@
     </el-row>
     <el-row :gutter="20">
       <el-col :span="16">
-        <div class="rowContent">
+        <div class="rowContent" v-loading="loading1">
           <span class="span-title">保安类数据统计</span>
           <div id="middleEchart1"></div>
         </div>
       </el-col>
       <el-col :span="8">
-        <div class="rowContent">
+        <div class="rowContent" v-loading="loading2">
           <span class="span-title">服务客户</span>
           <div id="middleEchart2"></div>
         </div>
       </el-col>
     </el-row>
-    <el-row>
-      <el-col :span="24">
-        <div class="rowContent">
+    <el-row :gutter="20">
+      <el-col :span="16">
+        <div class="rowContent" v-loading="loading3">
           <span class="span-title">公司运营趋势</span>
           <div id="bottomEchart"></div>
+        </div>
+      </el-col>
+      <el-col :span="8">
+        <div class="rowContent" v-loading="loading4">
+          <span class="span-title">年龄结构</span>
+          <div class="leftEchartTitle qing">
+            <div class="block1"></div>
+            <span>青年</span>
+            <span>{{ ageData.qing }}</span>
+            <span>人</span>
+          </div>
+          <div class="leftEchartTitle zhong">
+            <div class="block1"></div>
+            <span>中年</span>
+            <span>{{ ageData.zhong }}</span>
+            <span>人</span>
+          </div>
+          <div class="leftEchartTitle lao">
+            <div class="block1"></div>
+            <span>老年</span>
+            <span>{{ ageData.lao }}</span>
+            <span>人</span>
+          </div>
+          <div id="bottomEchart1"></div>
         </div>
       </el-col>
     </el-row>
@@ -102,12 +140,13 @@
 <script>
 import * as echarts from "echarts";
 import echartJs from "./securityEchart.js";
-import { lazyTreeJu } from "../../api/index/index";
+import { lazyTreeJu, lazyTrees } from "../../api/index/index";
 import {
   queryCounts,
   getCompanys,
   queryYearKh,
-  queryYearG
+  queryYearG,
+  selectAge
 } from "../../api/securityUnitOperation/securityUnitOperation";
 export default {
   data() {
@@ -158,39 +197,99 @@
         }
       ],
       options1: [],
-      options2: []
+      options2: [],
+      enterpriseName: "",
+      loading1: true,
+      loading2: true,
+      loading3: true,
+      loading4: false,
+      echartDom: {
+        middleEchart1: null,
+        middleEchart2: null,
+        bottomEchart: null,
+        bottomEchart1: null
+      },
+      ageData: {
+        qing: 0,
+        zhong: 0,
+        lao: 0
+      },
+      props: {
+        children: "children",
+        label: "title",
+        value: "id"
+      },
+      node: {} //选中的记录
     };
   },
   methods: {
-    setEchart() {
-      let data = [];
-      let bottomEchart = echarts.init(document.getElementById("bottomEchart"));
-      bottomEchart.setOption(echartJs.bottomOption1(data));
+    //点击节点
+    handleNodeClick(data) {
+      this.node = data;
+      this.value1 = data.id;
+      this.$refs.treeForm.blur();
+      this.getCompanys();
+    },
+    setAgeEchart() {
+      this.loading4 = true;
+      let params = {
+        jurisdiction: this.value1,
+        deptid: this.value2
+      };
+      selectAge(params).then(res => {
+        if (res.data.code === 200) {
+          if (!this.echartDom.bottomEchart1) {
+            this.echartDom.bottomEchart1 = echarts.init(
+              document.getElementById("bottomEchart1")
+            );
+          }
+          this.echartDom.bottomEchart1.setOption(
+            echartJs.bottomOption2(res.data.data)
+          );
+          this.ageData.qing = res.data.data.qcount;
+          this.ageData.zhong = res.data.data.zcount;
+          this.ageData.lao = res.data.data.lcount;
+        } else {
+          this.$message.error(res.data.msg);
+        }
+        this.loading4 = false;
+      });
     },
     toOperationTable() {
-      this.$router.push({ path: "/securityUnitOperation/operationTable" });
+      this.$router.push({
+        path:
+          "/securityUnitOperation/operationTable?jurisdiction=" +
+          this.value2 +
+          "&enterpriseName=" +
+          this.enterpriseName +
+          "&jurisdiction1=" +
+          this.value1
+      });
     },
     getFenju() {
       this.options1 = [];
       this.value1 = "";
-      lazyTreeJu().then(res => {
+      this.node = {};
+      lazyTrees().then(res => {
         if (res.data.code === 200) {
           this.options1 = res.data.data;
           this.value1 = this.options1[0] ? this.options1[0].id : "";
+          this.node = this.options1[0];
           this.getCompanys();
         } else {
           this.$message.error(res.msg);
         }
       });
     },
-    fenjuChange() {
-      this.getCompanys();
-    },
+
     getCompanys() {
       getCompanys({ jurisdiction: this.value1 }).then(res => {
         if (res.data.code === 200) {
           this.options2 = res.data.data;
           this.value2 = this.options2[0] ? this.options2[0].departmentid : "";
+          this.enterpriseName = this.options2[0]
+            ? this.options2[0].enterpriseName
+            : "";
           this.changeCompanys();
         }
       });
@@ -223,31 +322,53 @@
       });
     },
     getQueryYearKh() {
+      this.loading2 = true;
       let params = {
         jurisdiction: this.value1,
         deptid: this.value2
       };
       queryYearKh(params).then(res => {
         if (res.data.code === 200) {
-          let middleEchart2 = echarts.init(
-            document.getElementById("middleEchart2")
+          if (!this.echartDom.middleEchart2) {
+            this.echartDom.middleEchart2 = echarts.init(
+              document.getElementById("middleEchart2")
+            );
+          }
+          this.echartDom.middleEchart2.setOption(
+            echartJs.middleOption2(res.data.data)
           );
-          middleEchart2.setOption(echartJs.middleOption2(res.data.data));
         }
+        this.loading2 = false;
       });
     },
     getQueryYearG() {
+      this.loading1 = true;
+      this.loading3 = true;
       let params = {
         jurisdiction: this.value1,
         deptid: this.value2
       };
-      queryYearG().then(res => {
+      queryYearG(params).then(res => {
         if (res.data.code === 200) {
-          let middleEchart1 = echarts.init(
-            document.getElementById("middleEchart1")
+          if (!this.echartDom.middleEchart1) {
+            this.echartDom.middleEchart1 = echarts.init(
+              document.getElementById("middleEchart1")
+            );
+          }
+          this.echartDom.middleEchart1.setOption(
+            echartJs.middleOption1(res.data.data)
           );
-          middleEchart1.setOption(echartJs.middleOption1(res.data.data));
+          if (!this.echartDom.bottomEchart) {
+            this.echartDom.bottomEchart = echarts.init(
+              document.getElementById("bottomEchart")
+            );
+          }
+          this.echartDom.bottomEchart.setOption(
+            echartJs.bottomOption1(res.data.data)
+          );
         }
+        this.loading3 = false;
+        this.loading1 = false;
       });
     },
     // 清空之前的查询结果
@@ -268,16 +389,26 @@
         baoanPq: 0,
         addbaoanPq: 0
       };
+      this.ageData = {
+        qing: 0,
+        zhong: 0,
+        lao: 0
+      };
     },
     changeCompanys() {
+      this.options2.forEach(item => {
+        if (item.departmentid === this.value2) {
+          this.enterpriseName = item.enterpriseName;
+        }
+      });
       this.clear();
       this.getQueryCounts();
       this.getQueryYearKh();
       this.getQueryYearG();
+      this.setAgeEchart();
     }
   },
   mounted() {
-    this.setEchart();
     this.getFenju();
   }
 };
@@ -289,8 +420,9 @@
 }
 #bottomEchart,
 #middleEchart1,
-#middleEchart2 {
-  height: calc(100% - 40px);
+#middleEchart2,
+#bottomEchart1 {
+  height: calc(100% - 25px);
   width: 100%;
 }
 .el-row:first-child {
@@ -378,4 +510,102 @@
   margin-top: 15px;
   margin-left: 36px;
 }
+.leftEchartTitle {
+  height: 30px;
+  display: flex;
+  line-height: 30px;
+  margin-top: 10px;
+  margin-left: 28px;
+  position: absolute;
+  .block1 {
+    width: 23px;
+    height: 13px;
+    background: #2ec7c9;
+    border-radius: 3px;
+    margin-top: 9px;
+  }
+  span:nth-child(2) {
+    color: #fff;
+    font-size: 13px;
+    margin: 0px 10px 0px 3px;
+  }
+  span:nth-child(3) {
+    color: #2ec7c9;
+    font-size: 17px;
+    font-weight: 700;
+    display: block;
+    width: 65px;
+    text-align: center;
+  }
+  span:nth-child(4) {
+    font-size: 13px;
+    color: #2ec7c9;
+  }
+}
+.leftEchartTitle.qing {
+  right: 37px;
+  margin-top: 42px;
+  .block1 {
+    width: 30px;
+    height: 15px;
+    background: #73c0de;
+    margin-top: 7px;
+  }
+  span:nth-child(2) {
+    color: #fff;
+    font-size: 13px;
+  }
+  span:nth-child(3) {
+    color: #73c0de;
+    font-size: 17px;
+  }
+  span:nth-child(4) {
+    font-size: 13px;
+    color: #73c0de;
+  }
+}
+.leftEchartTitle.zhong {
+  right: 37px;
+  margin-top: 83px;
+  .block1 {
+    width: 30px;
+    height: 15px;
+    background: #fac858;
+    margin-top: 7px;
+  }
+  span:nth-child(2) {
+    color: #fff;
+    font-size: 13px;
+  }
+  span:nth-child(3) {
+    color: #fac858;
+    font-size: 17px;
+  }
+  span:nth-child(4) {
+    font-size: 13px;
+    color: #fac858;
+  }
+}
+.leftEchartTitle.lao {
+  right: 37px;
+  margin-top: 125px;
+  .block1 {
+    width: 30px;
+    height: 15px;
+    background: #91cc75;
+    margin-top: 7px;
+  }
+  span:nth-child(2) {
+    color: #fff;
+    font-size: 13px;
+  }
+  span:nth-child(3) {
+    color: #91cc75;
+    font-size: 17px;
+  }
+  span:nth-child(4) {
+    font-size: 13px;
+    color: #91cc75;
+  }
+}
 </style>
diff --git a/src/views/securityUnitOperation/operationTable.vue b/src/views/securityUnitOperation/operationTable.vue
index 8376223..0f45c52 100644
--- a/src/views/securityUnitOperation/operationTable.vue
+++ b/src/views/securityUnitOperation/operationTable.vue
@@ -2,148 +2,77 @@
   <basic-container>
     <avue-crud
       :option="tableOption"
+      :table-loading="loading"
       :data="tableData"
-      :page.sync="tablePage"
+      :page.sync="page"
       :permission="permissionList"
-      :before-open="beforeOpen"
-      @date-change="dateChange"
+      ref="crud"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
+      
     >
     </avue-crud>
   </basic-container>
-  <!-- <div class="operation-table">
-    <el-row>
-      <el-col>
-        <span>时间范围:</span>
-        <el-date-picker
-          v-model="value2"
-          type="daterange"
-          align="right"
-          unlink-panels
-          range-separator="至"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          :picker-options="pickerOptions"
-        >
-        </el-date-picker>
-        <span>类别:</span>
-        <el-select v-model="typeValue" placeholder="请选择">
-          <el-option
-            v-for="item in typeOptions"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          >
-          </el-option>
-        </el-select>
-        <span>所属辖区:</span>
-        <el-select v-model="subofficeValue" placeholder="请选择">
-          <el-option
-            v-for="item in subofficeOptions"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          >
-          </el-option>
-        </el-select>
-        <span>公司名称:</span>
-        <el-input v-model="companyName"></el-input>
-        <el-button>查询</el-button>
-        <el-button>重置</el-button>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col>
-        <div class="table">
-          <el-button @click="downExcel">下载</el-button>
-          <el-table id="table" :data="tableData" style="width: 100%">
-            <el-table-column type="index" label="序号" width="50">
-            </el-table-column>
-            <el-table-column prop="company" label="公司名称" width="180">
-            </el-table-column>
-            <el-table-column prop="subOffice" label="所属分局" width="180">
-            </el-table-column>
-            <el-table-column prop="time" label="时间"> </el-table-column>
-            <el-table-column prop="totalSec" label="总保安人数">
-            </el-table-column>
-            <el-table-column prop="normalSec" label="正常保安数">
-            </el-table-column>
-            <el-table-column prop="holderSec" label="持证保安数">
-            </el-table-column>
-            <el-table-column prop="sendSec" label="保安派遣数">
-            </el-table-column>
-            <el-table-column prop="passSec" label="过考保安数">
-            </el-table-column>
-            <el-table-column prop="unit" label="服务单位数"> </el-table-column>
-            <el-table-column prop="socialSec" label="缴纳社保保安数">
-            </el-table-column>
-            <el-table-column prop="bz" label="备注"> </el-table-column>
-          </el-table>
-          <el-pagination
-            background
-            layout="prev, pager, next"
-            :total="tableData.length"
-          >
-          </el-pagination>
-        </div>
-      </el-col>
-    </el-row>
-  </div> -->
 </template>
 <script>
-import FileSaver from "file-saver";
-import XLSX from "xlsx";
+import { selectTb } from "../../api/securityUnitOperation/securityUnitOperation";
+import { lazyTreeJu,lazyTrees } from "../../api/index/index";
 export default {
   name: "公司运营情况智能分析详情表",
   data() {
     return {
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      query:{},
       value1: "",
       value2: "",
       tableData: [
-        {
-          company: "江西省永安保安服务有限公司",
-          subOffice: "南昌市公安局",
-          time: "2020-07-21",
-          totalSec: "1200",
-          normalSec: "1150",
-          holderSec: "1160",
-          sendSec: "1000",
-          passSec: "1180",
-          unit: "52",
-          socialSec: "1160",
-          bz: "",
-        },
-        {
-          company: "南昌市赣水保安服务有限公司",
-          subOffice: "东湖分局",
-          time: "2021-06-11",
-          totalSec: "1360",
-          normalSec: "1250",
-          holderSec: "1258",
-          sendSec: "1210",
-          passSec: "1180",
-          unit: "48",
-          socialSec: "1200",
-          bz: "",
-        },
-        {
-          company: "江西中业兴达保安服务有限公司",
-          subOffice: "西湖分局",
-          time: "2020-01-21",
-          totalSec: "1269",
-          normalSec: "1250",
-          holderSec: "1042",
-          sendSec: "1040",
-          passSec: "1180",
-          unit: "41",
-          socialSec: "1025",
-          bz: "",
-        },
+        // {
+        //   company: "江西省永安保安服务有限公司",
+        //   subOffice: "南昌市公安局",
+        //   time: "2020-07-21",
+        //   totalSec: "1200",
+        //   normalSec: "1150",
+        //   holderSec: "1160",
+        //   sendSec: "1000",
+        //   passSec: "1180",
+        //   unit: "52",
+        //   socialSec: "1160",
+        //   bz: ""
+        // },
+        // {
+        //   company: "南昌市赣水保安服务有限公司",
+        //   subOffice: "东湖分局",
+        //   time: "2021-06-11",
+        //   totalSec: "1360",
+        //   normalSec: "1250",
+        //   holderSec: "1258",
+        //   sendSec: "1210",
+        //   passSec: "1180",
+        //   unit: "48",
+        //   socialSec: "1200",
+        //   bz: ""
+        // },
+        // {
+        //   company: "江西中业兴达保安服务有限公司",
+        //   subOffice: "西湖分局",
+        //   time: "2020-01-21",
+        //   totalSec: "1269",
+        //   normalSec: "1250",
+        //   holderSec: "1042",
+        //   sendSec: "1040",
+        //   passSec: "1180",
+        //   unit: "41",
+        //   socialSec: "1025",
+        //   bz: ""
+        // }
       ],
-      tablePage: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
       tableOption: {
         excelBtn: true,
         delBtn: false,
@@ -163,193 +92,222 @@
         viewBtn: true,
         dialogClickModal: false,
         column: [
-          {
-            label: "类别",
-            hide: true,
-            prop: "",
-            search: true,
-            searchSpan: 4,
-            display: true,
-            type: "select",
-            props: {
-              label: "label",
-              value: "value",
-            },
-            // cascaderItem: ["city", "area"],
-            // dicUrl:subofficeOptions,
-            dicData: [
-              {
-                value: "0",
-                label: "全部",
-              },
-              {
-                value: "1",
-                label: "总保安人数",
-              },
-              {
-                value: "2",
-                label: "正常保安数",
-              },
-              {
-                value: "3",
-                label: "持证保安数",
-              },
-              {
-                value: "4",
-                label: "保安派遣数",
-              },
-              {
-                value: "5",
-                label: "过考保安数",
-              },
-              {
-                value: "6",
-                label: "服务单位数",
-              },
-              {
-                value: "7",
-                label: "缴纳社保保安数",
-              },
-            ],
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请选择类别",
-                trigger: "blur",
-              },
-            ],
-          },
+          // {
+          //   label: "类别",
+          //   hide: true,
+          //   prop: "",
+          //   search: true,
+          //   searchSpan: 4,
+          //   display: true,
+          //   type: "select",
+          //   props: {
+          //     label: "label",
+          //     value: "value"
+          //   },
+          //   // cascaderItem: ["city", "area"],
+          //   // dicUrl:subofficeOptions,
+          //   dicData: [
+          //     {
+          //       value: "0",
+          //       label: "全部"
+          //     },
+          //     {
+          //       value: "1",
+          //       label: "总保安人数"
+          //     },
+          //     {
+          //       value: "2",
+          //       label: "正常保安数"
+          //     },
+          //     {
+          //       value: "3",
+          //       label: "持证保安数"
+          //     },
+          //     {
+          //       value: "4",
+          //       label: "保安派遣数"
+          //     },
+          //     {
+          //       value: "5",
+          //       label: "过考保安数"
+          //     },
+          //     {
+          //       value: "6",
+          //       label: "服务单位数"
+          //     },
+          //     {
+          //       value: "7",
+          //       label: "缴纳社保保安数"
+          //     }
+          //   ],
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请选择类别",
+          //       trigger: "blur"
+          //     }
+          //   ]
+          // },
           {
             label: "公司名称",
-            prop: "company",
+            prop: "enterpriseName",
             search: true,
             searchSpan: 4,
-            display: false,
+            width:300,
+            display: false
           },
           {
             label: "所属辖区",
-            prop: "subOffice",
+            prop: "jurisdiction",
             searchSpan: 4,
-            type: "select",
-            props: {
-              label: "label",
-              value: "value",
-            },
             // cascaderItem: ["city", "area"],
-            // dicUrl:subofficeOptions,
-            dicData: [
-              {
-                value: "0",
-                label: "南昌市公安局",
-              },
-              {
-                value: "2",
-                label: "东湖分局",
-              },
-              {
-                value: "3",
-                label: "西湖分局",
-              },
-              {
-                value: "4",
-                label: "青云谱分局",
-              },
-              {
-                value: "5",
-                label: "青山湖分局",
-              },
-            ],
+            // dicUrl: "/api/information/lazyTreeJu",
+            // dicMethod:'post',
+            props: {
+              label: "title",
+              value: "id"
+            },
+            dicData: [],
             search: true,
+            // overHidden: true,
+            type: "tree",
             rules: [
               {
                 required: true,
                 message: "请选择所属辖区",
-                trigger: "blur",
-              },
-            ],
+                trigger: "blur"
+              }
+            ]
           },
-          {
-            label: "时间",
-            prop: "time",
-            type: "date",
-            format: "yyyy-MM-dd hh:mm:ss",
-            valueFormat: "yyyy-MM-dd hh:mm:ss",
-            searchSpan: 6,
-            searchRange: true,
-            search: true,
-            display: false,
-          },
+          // {
+          //   label: "时间",
+          //   prop: "time",
+          //   type: "date",
+          //   format: "yyyy-MM-dd hh:mm:ss",
+          //   valueFormat: "yyyy-MM-dd hh:mm:ss",
+          //   searchSpan: 6,
+          //   searchRange: true,
+          //   search: true,
+          //   display: false
+          // },
 
           {
             label: "总保安人数",
-            prop: "totalSec",
-            display: false,
+            prop: "znum",
+            display: false
           },
           {
             label: "正常保安数",
-            prop: "normalSec",
-            display: false,
+            prop: "zcnum",
+            display: false
           },
           {
             label: "持证保安数",
-            prop: "holderSec",
-            display: false,
+            prop: "cznum",
+            display: false
           },
           {
             label: "保安派遣数",
-            prop: "sendSec",
-            display: false,
+            prop: "pcnum",
+            display: false
           },
-          {
-            label: "过考保安数",
-            prop: "passSec",
-            display: false,
-          },
+          // {
+          //   label: "过考保安数",
+          //   prop: "passSec",
+          //   display: false
+          // },
           {
             label: "服务单位数",
-            prop: "unit",
-            display: false,
+            prop: "ghnum",
+            display: false
           },
           {
             label: "缴纳社保保安数",
-            prop: "socialSec",
-            display: false,
+            prop: "sbnum",
+            display: false
           },
           {
             label: "备注",
             prop: "bz",
-            display: false,
-          },
-        ],
+            display: false
+          }
+        ]
       },
       typeValue: "0",
-      subofficeValue: "0",
       companyName: "",
+      subOfficeData: [],
+      subOfficeValue: "",
+      loading: true
     };
   },
   methods: {
-    downExcel() {
-      let et = XLSX.utils.table_to_book(document.getElementById("table"));
-      let etout = XLSX.write(et, {
-        bookType: "xlsx",
-        bookSST: true,
-        type: "array",
-      });
-      try {
-        FileSaver.saveAs(
-          new Blob([etout], {
-            type: "application/octet-stream",
-          }),
-          `表.xlsx`
-        ); //导出的文件名
-      } catch (e) {
-        console.log(e, etout);
-      }
-      return etout;
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
     },
+
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+      this.onLoad(this.page, this.query)
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+      this.onLoad(this.page, this.query)
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      let param = {};
+      param["jurisdiction"] = params["jurisdiction"] || "";
+      param["enterpriseName"] = params["enterpriseName"] || "";
+      param["current"] = page.currentPage;
+      param["size"] = page.pageSize;
+      selectTb(param).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.tableData = data.records;
+        this.loading = false;
+      });
+    },
+    getSubOfficeData() {
+      lazyTrees().then(res => {
+        if (res.data.code === 200) {
+          this.tableOption.column.forEach(item => {
+            if (item.label == "所属辖区") {
+              item.dicData = res.data.data;
+            }
+          });
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
+    getLocationParams() {
+      let url = window.location.href;
+      let urlArr = url.split("?")[1].split("&");
+      var object = new Object();
+      for (var i = 0; i < urlArr.length; i++) {
+        let mm = urlArr[i].split("=");
+        object[decodeURIComponent(mm[0])] = decodeURIComponent(mm[1]);
+      }
+      let jurisdiction = object["jurisdiction1"] || "";
+      let enterpriseName = object["enterpriseName"] || "";
+      this.query = { jurisdiction: jurisdiction, enterpriseName: enterpriseName };
+      this.onLoad(this.page, this.query);
+    }
   },
-  mounted() {},
+  mounted() {
+    this.getLocationParams();
+    this.getSubOfficeData();
+  }
 };
 </script>
 <style lang="scss" scoped>
diff --git a/src/views/securityUnitOperation/securityEchart.js b/src/views/securityUnitOperation/securityEchart.js
index 971c5e6..9184b69 100644
--- a/src/views/securityUnitOperation/securityEchart.js
+++ b/src/views/securityUnitOperation/securityEchart.js
@@ -1,7 +1,7 @@
 function bottomOption(alldata) {
   let data = [];
   for (var i in alldata) {
-    data.push(alldata[i])
+    data.push(alldata[i]);
   }
   let option = {
     // title: {
@@ -26,15 +26,15 @@
       "#96dee8"
     ],
     grid: {
-      top: "10%",
+      top: "15%",
       left: "3%",
       right: "4%",
-      bottom: "15%",
+      bottom: "0%",
       containLabel: true
     },
     legend: {
-      data: ["趋势"],
-      bottom: "0%",
+      data: ["服务客户数量"],
+      top: "0%",
       textStyle: {
         color: "#fff"
       }
@@ -47,7 +47,7 @@
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     xAxis: {
       type: "category",
@@ -71,7 +71,6 @@
       ]
     },
     yAxis: {
-      name: "(元)",
       type: "value",
       axisLabel: {
         color: "#fff"
@@ -79,7 +78,7 @@
     },
     series: [
       {
-        name: "趋势",
+        name: "服务对象数量",
         data: data,
         type: "line",
         smooth: true,
@@ -90,7 +89,22 @@
   return option;
 }
 function bottomOption1(alldata) {
-
+  let baoan = [];
+  let chiz = [];
+  let paiq = [];
+  alldata.forEach(item => {
+    for (var i in item) {
+      for (var j in item[i]) {
+        if (i === "baoan") {
+          baoan.push(item[i][j]);
+        } else if (i === "chiz") {
+          chiz.push(item[i][j]);
+        } else if (i === "paiq") {
+          paiq.push(item[i][j]);
+        }
+      }
+    }
+  });
   let option = {
     // title: {
     //   text: "公司运营趋势",
@@ -100,7 +114,6 @@
     // },
     color: [
       "#73c0de",
-
       "#fac858",
       "#91cc75",
       "#3ba272",
@@ -114,28 +127,28 @@
       "#96dee8"
     ],
     grid: {
-      top: "10%",
+      top: "15%",
       left: "3%",
       right: "4%",
-      bottom: "15%",
+      bottom: "0%",
       containLabel: true
     },
     legend: {
-      data: ["趋势"],
-      bottom: "0%",
+      data: ["保安员数量", "派遣数量", "持证数量"],
+      top: "0%",
       textStyle: {
         color: "#fff"
       }
     },
     tooltip: {
-      trigger: "item",
+      trigger: "axis",
       backgroundColor: "#031952",
       color: "#fff",
       borderWidth: "0", //边框宽度设置1
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     xAxis: {
       type: "category",
@@ -159,7 +172,7 @@
       ]
     },
     yAxis: {
-      name: "(元)",
+      // name: "(元)",
       type: "value",
       axisLabel: {
         color: "#fff"
@@ -167,11 +180,22 @@
     },
     series: [
       {
-        name: "趋势",
-        data: [10,20,14,15,16,17,24,15,3,7,11,23],
+        name: "保安员数量",
         type: "line",
-        smooth: true,
-        areaStyle: {}
+        stack: "总量",
+        data: baoan
+      },
+      {
+        name: "派遣数量",
+        type: "line",
+        stack: "总量",
+        data: paiq
+      },
+      {
+        name: "持证数量",
+        type: "line",
+        stack: "总量",
+        data: chiz
       }
     ]
   };
@@ -186,23 +210,20 @@
   alldata.forEach(item => {
     for (var i in item) {
       for (var j in item[i]) {
-        if (i === 'baoan') {
-          baoan.push(item[i][j])
-        } else if (i === 'zc') {
-          zc.push(item[i][j])
-        }
-        else if (i === 'chiz') {
-          chiz.push(item[i][j])
-        }
-        else if (i === 'sheb') {
-          sheb.push(item[i][j])
-        }
-        else if (i === 'paiq') {
-          paiq.push(item[i][j])
+        if (i === "baoan") {
+          baoan.push(item[i][j]);
+        } else if (i === "zc") {
+          zc.push(item[i][j]);
+        } else if (i === "chiz") {
+          chiz.push(item[i][j]);
+        } else if (i === "sheb") {
+          sheb.push(item[i][j]);
+        } else if (i === "paiq") {
+          paiq.push(item[i][j]);
         }
       }
     }
-  })
+  });
   let option = {
     // title: {
     //   text: "公司保安类数据对比",
@@ -218,7 +239,7 @@
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     legend: {
       data: [
@@ -302,12 +323,12 @@
         barWidth: 9,
         data: chiz
       },
-      {
-        name: "过考保安数",
-        type: "bar",
-        barWidth: 9,
-        data: []
-      },
+      // {
+      //   name: "过考保安数",
+      //   type: "bar",
+      //   barWidth: 9,
+      //   data: []
+      // },
       {
         name: "缴纳社保保安数",
         type: "bar",
@@ -327,7 +348,7 @@
 function middleOption2(alldata) {
   let data = [];
   for (var i in alldata) {
-    data.push(alldata[i])
+    data.push(alldata[i]);
   }
   let option = {
     // title: {
@@ -347,7 +368,7 @@
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     legend: {
       data: ["客户数"],
@@ -417,11 +438,97 @@
   };
   return option;
 }
+function bottomOption2(alldata) {
+  let data = [];
+  for (var key in alldata) {
+    let obj = null;
+    if (key === "lcount") {
+      obj = {
+        name: "老年",
+        value: alldata[key]
+      };
+    } else if (key === "zcount") {
+      obj = {
+        name: "中年",
+        value: alldata[key]
+      };
+    }
+    else if (key === "qcount") {
+      obj = {
+        name: "青年",
+        value: alldata[key]
+      };
+    }
+    data.push(obj);
+  }
+  let option = {
+    tooltip: {
+      trigger: "item",
+      formatter: "{a}<br>{b}:{c}({d}%)",
+      axisPointer: {
+        type: "shadow"
+      },
+      backgroundColor: "#031952", //设置背景图片 rgba格式
+      color: "#fff",
+      borderWidth: "0", //边框宽度设置1
+      // borderColor: "gray", //设置边框颜色
+      textStyle: {
+        color: "#fff" //设置文字颜色
+      }
+    },
+    // legend: {
+    //   data: ["青年", "中年", "老年"],
+    //   top: "0%",
+    //   itemHeight: 10,
+    //   textStyle: {
+    //     color: "#fff"
+    //   }
+    // },
+    color: [
+      "#73c0de",
+      "#fac858",
+      "#91cc75",
+      "#3ba272",
+      "#fc8452",
+      "#9a60b4",
+      "#3fb1e3",
+      "#6be6c1",
+      "#626c91",
+      "#a0a7e6",
+      "#c4ebad",
+      "#96dee8"
+    ],
+    grid: {
+      top: "10%",
+      left: "5%",
+      right: "30%",
+      bottom: "4%",
+      containLabel: true
+    },
+    series: [
+      {
+        name: "年龄结构",
+        type: "pie",
+        center: ["33%", "50%"],
+        radius: "70%",
+        data:data,
+        label: {
+          color: "#fff"
+        }
+      }
+    ]
+  };
+  return option;
+}
 
-function economicMiddle(data) {
-  let data1 = [];
-  for (var a in data) {
-    data1.push(data[a])
+function economicMiddle(data1, data2) {
+  let sbData = [];
+  let pqData = [];
+  for (var a in data1) {
+    sbData.push(data1[a]);
+  }
+  for (var b in data2) {
+    pqData.push(data2[b]);
   }
   let option = {
     tooltip: {
@@ -432,7 +539,7 @@
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     legend: {
       data: ["缴纳社保人数", "公司派遣人数"],
@@ -495,20 +602,19 @@
         name: "缴纳社保人数",
         type: "line",
         stack: "总量",
-        data: data1
+        data: sbData
       },
       {
         name: "公司派遣人数",
         type: "line",
         stack: "总量",
-        data: [220, 182, 191, 234, 290, 330, 310, 111, 222, 132, 143, 123]
+        data: pqData
       }
     ]
   };
   return option;
 }
 function economicPieOption(allData) {
-
   let title = "总";
   let total = Number(allData.PCount) + Number(allData.WPCount);
   let option = {
@@ -542,7 +648,7 @@
       // borderColor: "gray", //设置边框颜色
       textStyle: {
         color: "#fff" //设置文字颜色
-      },
+      }
     },
     legend: {
       bottom: "0%",
@@ -572,9 +678,12 @@
         name: "人员分布",
         type: "pie",
         radius: ["40%", "70%"],
+        label: {
+          color: "#fff"
+        },
         data: [
           { value: allData.PCount, name: "已派遣人数" },
-          { value: allData.WPCount, name: "未派遣人" }
+          { value: allData.WPCount, name: "未派遣人数" }
         ]
       }
     ]
@@ -588,5 +697,6 @@
   middleOption1,
   middleOption2,
   economicMiddle,
-  economicPieOption
+  economicPieOption,
+  bottomOption2
 };
diff --git a/src/views/statisticalQueryManagement/businessStatistics.vue b/src/views/statisticalQueryManagement/businessStatistics.vue
index 2b3db34..0919ab9 100644
--- a/src/views/statisticalQueryManagement/businessStatistics.vue
+++ b/src/views/statisticalQueryManagement/businessStatistics.vue
@@ -2,12 +2,22 @@
   <basic-container>
     <avue-crud
       :option="tableOption"
+      :table-loading="loading"
       :data="tableData"
-      :page.sync="tablePage"
+      :page.sync="page"
       :permission="permissionList"
-      :before-open="beforeOpen"
-      @date-change="dateChange"
-      @row-click="handleRowClick"
+      ref="crud"
+      @row-update="rowUpdates"
+      @row-save="rowSave"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
+      @on-load="onLoad"
+      @cell-click="handleRowClick"
+      :cell-style="cellStyle"
+      class="businessStatisticsStyle"
     >
     </avue-crud>
   </basic-container>
@@ -16,37 +26,42 @@
 import FileSaver from "file-saver";
 import XLSX from "xlsx";
 import { mapGetters } from "vuex";
+import {
+  selectYw,
+  dictionaryList
+} from "../../api/statisticalQueryManagement/statisticalQueryManagement";
+import { lazyTreeJu,lazyTrees } from "../../api/index/index";
 export default {
   name: "业务情况统计",
   data() {
     return {
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
       value1: "",
       value2: "",
       tableData: [
-        {
-          company: "江西省永安保安服务有限公司",
-          subOffice: "南昌市公安局",
-          customer: "76",
-          num: "1124",
-        },
-        {
-          company: "南昌市赣水保安服务有限公司",
-          subOffice: "东湖分局",
-          customer: "85",
-          num: "1428",
-        },
-        {
-          company: "江西中业兴达保安服务有限公司",
-          subOffice: "西湖分局",
-          customer: "46",
-          num: "974",
-        },
+        // {
+        //   company: "江西省永安保安服务有限公司",
+        //   subOffice: "南昌市公安局",
+        //   customer: "76",
+        //   num: "1124"
+        // },
+        // {
+        //   company: "南昌市赣水保安服务有限公司",
+        //   subOffice: "东湖分局",
+        //   customer: "85",
+        //   num: "1428"
+        // },
+        // {
+        //   company: "江西中业兴达保安服务有限公司",
+        //   subOffice: "西湖分局",
+        //   customer: "46",
+        //   num: "974"
+        // }
       ],
-      tablePage: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
       tableOption: {
         excelBtn: true,
         delBtn: false,
@@ -68,66 +83,56 @@
         column: [
           {
             label: "公司名称",
-            prop: "company",
+            prop: "enterpriseName",
+            search: true,
+            searchSpan: 4,
+            display: false
+          },
+          {
+            label: "单位类型",
+            prop: "stats",
             search: true,
             searchSpan: 4,
             display: false,
-          },
-
-          {
-            label: "所属辖区",
-            prop: "subOffice",
-            searchSpan: 4,
             type: "select",
             props: {
-              label: "label",
-              value: "value",
+              label: "dictValue",
+              value: "dictKey"
             },
-            // cascaderItem: ["city", "area"],
-            // dicUrl:subofficeOptions,
-            dicData: [
-              {
-                value: "0",
-                label: "南昌市公安局",
-              },
-              {
-                value: "2",
-                label: "东湖分局",
-              },
-              {
-                value: "3",
-                label: "西湖分局",
-              },
-              {
-                value: "4",
-                label: "青云谱分局",
-              },
-              {
-                value: "5",
-                label: "青山湖分局",
-              },
-            ],
+            dicData: []
+          },
+          {
+            label: "所属辖区",
+            prop: "jurname",
+            searchSpan: 4,
+            type: "tree",
+            props: {
+              label: "title",
+              value: "id"
+            },
+            dicData: [],
             search: true,
             rules: [
               {
                 required: true,
                 message: "请选择所属辖区",
-                trigger: "blur",
-              },
-            ],
+                trigger: "blur"
+              }
+            ]
           },
           {
             label: "服务对象数量",
-            prop: "customer",
-            display: false,
+            prop: "fwnum",
+            display: false
           },
           {
             label: "保安员人数",
-            prop: "num",
-            display: false,
-          },
-        ],
+            prop: "znum",
+            display: false
+          }
+        ]
       },
+      loading: true
     };
   },
   computed: {
@@ -137,37 +142,101 @@
         addBtn: this.vaildData(this.permission.post_add, false),
         viewBtn: this.vaildData(this.permission.post_view, false),
         delBtn: this.vaildData(this.permission.post_delete, false),
-        editBtn: this.vaildData(this.permission.post_edit, false),
+        editBtn: this.vaildData(this.permission.post_edit, false)
       };
-    },
+    }
   },
   methods: {
-    handleRowClick(row, event, column) {
-      this.$router.push({ path: "/statisticalQueryManagement/businessStatisticsDetail" });
+    getSubOfficeData() {
+      lazyTrees().then(res => {
+        if (res.data.code === 200) {
+          this.tableOption.column.forEach(item => {
+            if (item.label == "所属辖区") {
+              item.dicData = res.data.data;
+            }
+          });
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
     },
-    dateChange() {},
-    // downExcel() {
-    //   let et = XLSX.utils.table_to_book(document.getElementById("table"));
-    //   let etout = XLSX.write(et, {
-    //     bookType: "xlsx",
-    //     bookSST: true,
-    //     type: "array"
-    //   });
-    //   try {
-    //     FileSaver.saveAs(
-    //       new Blob([etout], {
-    //         type: "application/octet-stream"
-    //       }),
-    //       `表.xlsx`
-    //     ); //导出的文件名
-    //   } catch (e) {
-    //     console.log(e, etout);
-    //   }
-    //   return etout;
-    // }
+    getDictionaryList() {
+      dictionaryList().then(res => {
+        if (res.data.code === 200) {
+          this.tableOption.column.forEach(item => {
+            if (item.label == "单位类型") {
+              item.dicData = res.data.data;
+            }
+          });
+        }
+      });
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+      this.onLoad(this.page, this.query);
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+      this.onLoad(this.page, this.query);
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      let param = {};
+      param["jurisdiction"] = params["jurname"] || "";
+      param["deptid"] = params["enterpriseName"] || "";
+      param["stats"] = params["stats"] || "";
+      param["current"] = page.currentPage;
+      param["size"] = page.pageSize;
+      selectYw(param).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.tableData = data.records;
+        this.loading = false;
+      });
+    },
+    handleRowClick(row, column, cell, event) {
+      if (column.label == "服务对象数量") {
+        this.$router.push({
+          path:
+            "/statisticalQueryManagement/businessStatisticsDetail?&departmentid=" +
+            row.departmentid
+        });
+      } else if (column.label == "保安员人数") {
+        this.$router.push({
+          path:
+            "/statisticalQueryManagement/securityGuardDetail?departmentid=" +
+            row.departmentid
+        });
+      }
+    },
+    cellStyle(row, column, rowIndex, columnIndex) {
+      // if (columnIndex == 4 || columnIndex == 5) {
+      // }
+    }
   },
-  mounted() {},
+  mounted() {
+    this.getSubOfficeData();
+    this.getDictionaryList();
+  }
 };
 </script>
 <style lang="scss" scoped>
+/deep/ .businessStatisticsStyle .el-table__row:hover td:nth-child(7),
+/deep/ .businessStatisticsStyle .el-table__row:hover td:nth-child(6) {
+  cursor: pointer !important;
+}
 </style>
diff --git a/src/views/statisticalQueryManagement/businessStatisticsDetail.vue b/src/views/statisticalQueryManagement/businessStatisticsDetail.vue
index 7a19d18..b43d288 100644
--- a/src/views/statisticalQueryManagement/businessStatisticsDetail.vue
+++ b/src/views/statisticalQueryManagement/businessStatisticsDetail.vue
@@ -2,61 +2,78 @@
   <basic-container>
     <avue-crud
       :option="tableOption"
+      :table-loading="loading"
       :data="tableData"
-      :page.sync="tablePage"
+      :page.sync="page"
       :permission="permissionList"
-      :before-open="beforeOpen"
-      @date-change="dateChange"
+      ref="crud"
+      @row-update="rowUpdates"
+      @row-save="rowSave"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
     >
     </avue-crud>
   </basic-container>
 </template>
 <script>
-// import FileSaver from "file-saver";
-// import XLSX from "xlsx";
 import { mapGetters } from "vuex";
+import {
+  selectDis,
+  selectFw,
+  fwList
+} from "../../api/statisticalQueryManagement/statisticalQueryManagement";
+import { lazyTreeJu,lazyTrees } from "../../api/index/index";
 export default {
-  name: "业务情况统计",
+  name: "业务情况统计明细",
   data() {
     return {
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      query: {},
       value1: "",
       value2: "",
       tableData: [
-        {
-          company: "江西省永安保安服务有限公司",
-          subOffice: "南昌市公安局",
-          timeStart:'2020-07-14',
-          timeEnd:'2021-06-30',
-          customerName: "南昌市幼儿园",
-          num: "7",
-          // status: "正在服务",
-          bz:'',
-        },
-        {
-          company: "南昌市赣水保安服务有限公司",
-          subOffice: "东湖分局",
-          timeStart:'2020-01-23',
-          timeEnd:'2020-12-31',
-          customerName: "南昌市第一人民医院",
-          num: "32",
-          // status: "已完成",
-          bz:'',
-        },
-        {
-          company: "江西中业兴达保安服务有限公司",
-          subOffice: "西湖分局",
-          timeStart:'2020-03-16',
-          timeEnd:'2021-7-29',
-          customerName: "南昌市动物园",
-          num: "12",
-          // status: "未下单",
-          bz:'',
-        },
+        // {
+        //   company: "江西省永安保安服务有限公司",
+        //   subOffice: "南昌市公安局",
+        //   timeStart: "2020-07-14",
+        //   timeEnd: "2021-06-30",
+        //   customerName: "南昌市幼儿园",
+        //   num: "7",
+        //   // status: "正在服务",
+        //   bz: ""
+        // },
+        // {
+        //   company: "南昌市赣水保安服务有限公司",
+        //   subOffice: "东湖分局",
+        //   timeStart: "2020-01-23",
+        //   timeEnd: "2020-12-31",
+        //   customerName: "南昌市第一人民医院",
+        //   num: "32",
+        //   // status: "已完成",
+        //   bz: ""
+        // },
+        // {
+        //   company: "江西中业兴达保安服务有限公司",
+        //   subOffice: "西湖分局",
+        //   timeStart: "2020-03-16",
+        //   timeEnd: "2021-7-29",
+        //   customerName: "南昌市动物园",
+        //   num: "12",
+        //   // status: "未下单",
+        //   bz: ""
+        // }
       ],
       tablePage: {
         pageSize: 10,
         currentPage: 1,
-        total: 0,
+        total: 0
       },
       tableOption: {
         excelBtn: true,
@@ -77,167 +94,138 @@
         viewBtn: true,
         dialogClickModal: false,
         column: [
-          {
-            label: "公司名称",
-            prop: "company",
-            search: true,
-            searchSpan: 4,
-            display: false,
-          },
-
-          {
-            label: "所属辖区",
-            prop: "subOffice",
-            searchSpan: 4,
-            type: "select",
-            props: {
-              label: "label",
-              value: "value",
-            },
-            // cascaderItem: ["city", "area"],
-            // dicUrl:subofficeOptions,
-            dicData: [
-              {
-                value: "0",
-                label: "南昌市公安局",
-              },
-              {
-                value: "2",
-                label: "东湖分局",
-              },
-              {
-                value: "3",
-                label: "西湖分局",
-              },
-              {
-                value: "4",
-                label: "青云谱分局",
-              },
-              {
-                value: "5",
-                label: "青山湖分局",
-              },
-            ],
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请选择所属辖区",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "服务开始时间",
-            prop: "timeStart",
-            display: false,
-          },
-          {
-            label: "服务到期时间",
-            prop: "timeEnd",
-            display: false,
-          },
-          {
-            label: "服务单位名称",
-            prop: "customerName",
-            searchLabelWidth: 110,
-            search: true,
-            searchSpan: 4,
-            display: false,
-          },
-          {
-            label: "保安派遣人数",
-            prop: "num",
-            display: false,
-          },
-          {
-            label: "备注",
-            prop: "bz",
-            display: false,
-          },
           // {
-          //   label: "服务状态",
-          //   prop: "status",
+          //   label: "公司名称",
+          //   prop: "gsname",
+          //   // search: true,
+          //   // searchSpan: 4,
+          //   display: false
+          // },
+
+          // {
+          //   label: "所属辖区",
+          //   prop: "jurname",
           //   searchSpan: 4,
-          //   type: "select",
           //   props: {
-          //     label: "label",
-          //     value: "value",
+          //     label: "title",
+          //     value: "id"
           //   },
           //   // cascaderItem: ["city", "area"],
           //   // dicUrl:subofficeOptions,
-          //   dicData: [
-          //     {
-          //       value: "0",
-          //       label: "已完成",
-          //     },
-          //     {
-          //       value: "2",
-          //       label: "正在服务",
-          //     },
-          //     {
-          //       value: "3",
-          //       label: "未下单",
-          //     },
-          //   ],
+          //   dicData: [],
           //   search: true,
+          //   type: "tree",
           //   rules: [
           //     {
           //       required: true,
-          //       message: "请选择服务状态",
-          //       trigger: "blur",
-          //     },
-          //   ],
+          //       message: "请选择所属辖区",
+          //       trigger: "blur"
+          //     }
+          //   ]
           // },
-        ],
+          {
+            label: "服务单位名称",
+            prop: "name",
+            props: {
+              label: "name",
+              value: "id"
+            },
+            dicData: [],
+            searchLabelWidth: 110,
+            search: true,
+            type: "tree",
+            searchSpan: 4,
+            rules: [
+              {
+                required: true,
+                message: "请选择服务单位",
+                trigger: "blur"
+              }
+            ]
+            // display: false
+          },
+          {
+            label: "服务开始时间",
+            prop: "startTime",
+            display: false
+          },
+          {
+            label: "服务到期时间",
+            prop: "endTime",
+            display: false
+          },
+          // {
+          //   label: "保安派遣人数",
+          //   prop: "num",
+          //   display: false
+          // },
+          {
+            label: "联系人",
+            prop: "linkman",
+            display: false
+          },
+          {
+            label: "联系电话",
+            prop: "phone",
+            display: false
+          }
+          // {
+          //   label: "备注",
+          //   prop: "bz",
+          //   display: false
+          // }
+        ]
       },
       typeValue: "0",
       typeOptions: [
         {
           value: "0",
-          label: "全部",
+          label: "全部"
         },
         {
           value: "1",
-          label: "社保缴纳人数",
+          label: "社保缴纳人数"
         },
         {
           value: "2",
-          label: "社保缴纳总额",
+          label: "社保缴纳总额"
         },
         {
           value: "3",
-          label: "公司派遣人数",
+          label: "公司派遣人数"
         },
         {
           value: "4",
-          label: "社保缴纳人数占比",
-        },
+          label: "社保缴纳人数占比"
+        }
       ],
       subofficeValue: "0",
       subofficeOptions: [
         {
           value: "0",
-          label: "南昌市公安局",
+          label: "南昌市公安局"
         },
         {
           value: "2",
-          label: "东湖分局",
+          label: "东湖分局"
         },
         {
           value: "3",
-          label: "西湖分局",
+          label: "西湖分局"
         },
         {
           value: "4",
-          label: "青云谱分局",
+          label: "青云谱分局"
         },
         {
           value: "5",
-          label: "青山湖分局",
-        },
+          label: "青山湖分局"
+        }
       ],
+      servicesList: [],
       companyName: "",
+      loading: true,
+      deptid: ""
     };
   },
   computed: {
@@ -247,34 +235,94 @@
         addBtn: this.vaildData(this.permission.post_add, false),
         viewBtn: this.vaildData(this.permission.post_view, false),
         delBtn: this.vaildData(this.permission.post_delete, false),
-        editBtn: this.vaildData(this.permission.post_edit, false),
+        editBtn: this.vaildData(this.permission.post_edit, false)
       };
-    },
+    }
   },
   methods: {
-    dateChange() {},
-    // downExcel() {
-    //   let et = XLSX.utils.table_to_book(document.getElementById("table"));
-    //   let etout = XLSX.write(et, {
-    //     bookType: "xlsx",
-    //     bookSST: true,
-    //     type: "array"
-    //   });
-    //   try {
-    //     FileSaver.saveAs(
-    //       new Blob([etout], {
-    //         type: "application/octet-stream"
-    //       }),
-    //       `表.xlsx`
-    //     ); //导出的文件名
-    //   } catch (e) {
-    //     console.log(e, etout);
-    //   }
-    //   return etout;
-    // }
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+      this.onLoad(this.page, this.query);
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+      this.onLoad(this.page, this.query);
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      let param = {};
+      // param["jurisdiction"] = params["jurname"] || "";
+      param["id"] = params["name"] || "";
+      param["deptId"] = this.deptid;
+      param["current"] = page.currentPage;
+      param["size"] = page.pageSize;
+      fwList(param).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.tableData = data.records;
+        this.loading = false;
+      });
+    },
+    getFuWuList() {
+      selectFw().then(res => {
+        if (res.data.code === 200) {
+          this.tableOption.column.forEach(item => {
+            if (item.label == "服务单位名称") {
+              item.dicData = res.data.data;
+            }
+          });
+          // this.servicesList = res.data.data;
+        }
+      });
+    },
+    getSubOfficeData() {
+      lazyTrees().then(res => {
+        if (res.data.code === 200) {
+          this.tableOption.column.forEach(item => {
+            if (item.label == "所属辖区") {
+              item.dicData = res.data.data;
+            }
+          });
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
+    getLocationParams() {
+      let url = window.location.href;
+      let urlArr = url.split("?")[1].split("&");
+      var object = new Object();
+      for (var i = 0; i < urlArr.length; i++) {
+        let mm = urlArr[i].split("=");
+        object[decodeURIComponent(mm[0])] = decodeURIComponent(mm[1]);
+      }
+      this.deptid = object["departmentid"] || "";
+      // let jurisdiction = object["jurisdiction"] || "";
+      this.query = { deptid: this.deptid };
+      // this.onLoad(this.page, obj);
+      this.onLoad(this.page, this.query);
+    }
   },
-  mounted() {},
+  mounted() {
+    // this.getTableData();
+    this.getFuWuList();
+    this.getSubOfficeData();
+    this.getLocationParams();
+  }
 };
 </script>
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>
diff --git a/src/views/statisticalQueryManagement/companyDetails.vue b/src/views/statisticalQueryManagement/companyDetails.vue
index 8a6c739..fb8c354 100644
--- a/src/views/statisticalQueryManagement/companyDetails.vue
+++ b/src/views/statisticalQueryManagement/companyDetails.vue
@@ -2,11 +2,16 @@
   <basic-container>
     <avue-crud
       :option="tableOption"
+      :table-loading="loading"
       :data="tableData"
-      :page.sync="tablePage"
+      :page.sync="page"
       :permission="permissionList"
-      :before-open="beforeOpen"
-      @date-change="dateChange"
+      ref="crud"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
     >
     </avue-crud>
   </basic-container>
@@ -15,55 +20,57 @@
 import FileSaver from "file-saver";
 import XLSX from "xlsx";
 import { mapGetters } from "vuex";
+import { selectUIn } from "../../api/statisticalQueryManagement/statisticalQueryManagement";
 export default {
   name: "公司人员详情",
   data() {
     return {
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      query: {},
       value1: "",
       value2: "",
       tableData: [
-        {
-          name: "张强",
-          No: "NO.2143",
-          idNumber: "230229187623601221",
-          tel: "13728198762",
-          holder: "是",
-          socialSecurity: "是",
-          picture: "是",
-          qualification: "通过",
-          pass: "是",
-          send: "是",
-        },
-        {
-          name: "张强",
-          No: "NO.2143",
-          idNumber: "230229187623601221",
-          tel: "13728198762",
-          holder: "是",
-          socialSecurity: "是",
-          picture: "是",
-          qualification: "通过",
-          pass: "是",
-          send: "是",
-        },
-        {
-          name: "张强",
-          No: "NO.2143",
-          idNumber: "230229187623601221",
-          tel: "13728198762",
-          holder: "是",
-          socialSecurity: "是",
-          picture: "是",
-          qualification: "通过",
-          pass: "是",
-          send: "是",
-        },
+        // {
+        //   name: "张强",
+        //   No: "NO.2143",
+        //   idNumber: "230229187623601221",
+        //   tel: "13728198762",
+        //   holder: "是",
+        //   socialSecurity: "是",
+        //   picture: "是",
+        //   qualification: "通过",
+        //   pass: "是",
+        //   send: "是"
+        // },
+        // {
+        //   name: "张强",
+        //   No: "NO.2143",
+        //   idNumber: "230229187623601221",
+        //   tel: "13728198762",
+        //   holder: "是",
+        //   socialSecurity: "是",
+        //   picture: "是",
+        //   qualification: "通过",
+        //   pass: "是",
+        //   send: "是"
+        // },
+        // {
+        //   name: "张强",
+        //   No: "NO.2143",
+        //   idNumber: "230229187623601221",
+        //   tel: "13728198762",
+        //   holder: "是",
+        //   socialSecurity: "是",
+        //   picture: "是",
+        //   qualification: "通过",
+        //   pass: "是",
+        //   send: "是"
+        // }
       ],
-      tablePage: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
       tableOption: {
         excelBtn: true,
         delBtn: false,
@@ -74,218 +81,233 @@
         // dateBtn: true,
         align: "center",
         height: "auto",
-        calcHeight: 90,
+        calcHeight: 30,
         tip: false,
         searchShowBtn: false,
         searchShow: true,
-        searchMenuSpan: 6,
+        searchMenuSpan: 3,
         index: true,
         viewBtn: true,
         dialogClickModal: false,
         column: [
           {
-            label: "保安员姓名",
-            searchLabelWidth: 110,
-            prop: "name",
+            label: "保安姓名",
+            // searchLabelWidth: 90,
+            prop: "real_name",
             search: true,
-            searchSpan: 4,
-            display: false,
+            searchSpan: 3,
+            display: false
+          },
+          {
+            label: "所属保安公司",
+            prop: "enterpriseName",
+            width: 300,
+            display: false
           },
 
           {
-            label: "保安员编号",
-            prop: "No",
-            display: false,
+            label: "保安证编号",
+            prop: "securitynumber",
+            width: 180,
+            display: false
           },
           {
             label: "身份证号",
-            prop: "idNumber",
-            display: false,
+            prop: "cardid",
+            width: 180,
+            display: false
           },
           {
-            label: "联系电话",
-            prop: "tel",
-            display: false,
+            label: "联系方式",
+            prop: "phone",
+            width: 180,
+            display: false
           },
           {
             label: "是否持证",
-            prop: "holder",
-            searchSpan: 4,
+            prop: "hold",
+            searchSpan: 3,
             type: "select",
             props: {
               label: "label",
-              value: "value",
+              value: "value"
             },
             // cascaderItem: ["city", "area"],
             // dicUrl:subofficeOptions,
             dicData: [
               {
-                value: "0",
-                label: "是",
+                value: "1",
+                label: "是"
               },
               {
                 value: "2",
-                label: "否",
+                label: "否"
               },
+              {
+                value: "3",
+                label: "吊销"
+              }
             ],
             search: true,
             rules: [
               {
                 required: true,
                 message: "请选择是否持证",
-                trigger: "blur",
-              },
-            ],
+                trigger: "blur"
+              }
+            ]
           },
           {
             label: "是否缴纳社保",
             //  labelWidth: 120,
-            searchLabelWidth: 110,
-            prop: "socialSecurity",
+            searchLabelWidth: 100,
+            prop: "soil",
             searchSpan: 4,
             type: "select",
             props: {
               label: "label",
-              value: "value",
+              value: "value"
             },
             dicData: [
               {
                 value: "0",
-                label: "是",
+                label: "是"
               },
               {
-                value: "2",
-                label: "否",
-              },
+                value: "1",
+                label: "否"
+              }
             ],
             search: true,
             rules: [
               {
                 required: true,
                 message: "请选择是否缴纳社保",
-                trigger: "blur",
-              },
-            ],
+                trigger: "blur"
+              }
+            ]
           },
 
           {
             label: "是否已采集照片",
             searchLabelWidth: 120,
-            prop: "picture",
+            prop: "photo",
             searchSpan: 4,
             type: "select",
             props: {
               label: "label",
-              value: "value",
+              value: "value"
             },
             dicData: [
               {
                 value: "0",
-                label: "是",
+                label: "是"
               },
               {
-                value: "2",
-                label: "否",
-              },
+                value: "1",
+                label: "否"
+              }
             ],
             search: true,
             rules: [
               {
                 required: true,
                 message: "请选择是否已采集照片",
-                trigger: "blur",
-              },
-            ],
+                trigger: "blur"
+              }
+            ]
           },
           {
             label: "资格审查情况",
-            searchLabelWidth: 110,
-            prop: "qualification",
+            searchLabelWidth: 100,
+            prop: "examination_type",
             searchSpan: 4,
             type: "select",
             props: {
               label: "label",
-              value: "value",
+              value: "value"
             },
             dicData: [
               {
                 value: "0",
-                label: "通过",
+                label: "正常"
               },
               {
-                value: "2",
-                label: "异常",
-              },
+                value: "1",
+                label: "异常"
+              }
             ],
             search: true,
             rules: [
               {
                 required: true,
                 message: "请选择资格审查情况",
-                trigger: "blur",
-              },
-            ],
+                trigger: "blur"
+              }
+            ]
           },
-          {
-            label: "是否通过考试",
-            searchLabelWidth: 110,
-            prop: "pass",
-            searchSpan: 4,
-            type: "select",
-            props: {
-              label: "label",
-              value: "value",
-            },
-            dicData: [
-              {
-                value: "0",
-                label: "是",
-              },
-              {
-                value: "2",
-                label: "否",
-              },
-            ],
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请选择是否通过考试",
-                trigger: "blur",
-              },
-            ],
-          },
+          // {
+          //   label: "是否通过考试",
+          //   searchLabelWidth: 110,
+          //   prop: "pass",
+          //   searchSpan: 4,
+          //   type: "select",
+          //   props: {
+          //     label: "label",
+          //     value: "value"
+          //   },
+          //   dicData: [
+          //     {
+          //       value: "0",
+          //       label: "是"
+          //     },
+          //     {
+          //       value: "2",
+          //       label: "否"
+          //     }
+          //   ],
+          //   search: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请选择是否通过考试",
+          //       trigger: "blur"
+          //     }
+          //   ]
+          // },
           {
             label: "是否派遣",
-            prop: "send",
-            searchSpan: 4,
+            prop: "dispatch",
+            searchSpan: 3,
             type: "select",
             props: {
               label: "label",
-              value: "value",
+              value: "value"
             },
             dicData: [
               {
                 value: "0",
-                label: "是",
+                label: "是"
               },
               {
-                value: "2",
-                label: "否",
-              },
+                value: "1",
+                label: "否"
+              }
             ],
             search: true,
             rules: [
               {
                 required: true,
                 message: "请选择是否派遣",
-                trigger: "blur",
-              },
-            ],
-          },
-        ],
+                trigger: "blur"
+              }
+            ]
+          }
+        ]
       },
       companyName: "",
+      loading: true,
+      deptid: ""
     };
   },
   computed: {
@@ -295,37 +317,89 @@
         addBtn: this.vaildData(this.permission.post_add, false),
         viewBtn: this.vaildData(this.permission.post_view, false),
         delBtn: this.vaildData(this.permission.post_delete, false),
-        editBtn: this.vaildData(this.permission.post_edit, false),
+        editBtn: this.vaildData(this.permission.post_edit, false)
       };
-    },
+    }
   },
   methods: {
-    dateChange() {},
-    // downExcel() {
-    //   let et = XLSX.utils.table_to_book(document.getElementById("table"));
-    //   let etout = XLSX.write(et, {
-    //     bookType: "xlsx",
-    //     bookSST: true,
-    //     type: "array"
-    //   });
-    //   try {
-    //     FileSaver.saveAs(
-    //       new Blob([etout], {
-    //         type: "application/octet-stream"
-    //       }),
-    //       `表.xlsx`
-    //     ); //导出的文件名
-    //   } catch (e) {
-    //     console.log(e, etout);
-    //   }
-    //   return etout;
-    // }
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page, this.query);
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+      this.onLoad(this.page, this.query);
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+      this.onLoad(this.page, this.query);
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      // if (!params) {
+      //   params = { current: page.currentPage, size: page.pageSize };
+      // }
+      let param = {};
+      param["deptid"] = this.deptid;
+      param["name"] = params["real_name"] || "";
+      param["hold"] =
+        params["hold"] || params["hold"] == "0" ? Number(params["hold"]) : "";
+      param["photo"] =
+        params["photo"] || params["photo"] == "0"
+          ? Number(params["photo"])
+          : "";
+      param["examinationtype"] =
+        params["examination_type"] || params["examination_type"] == "0"
+          ? Number(params["examination_type"])
+          : "";
+      param["dispatch"] =
+        params["dispatch"] || params["dispatch"] == "0"
+          ? Number(params["dispatch"])
+          : "";
+      param["soil"] =
+        params["soil"] || params["soil"] == "0" ? Number(params["soil"]) : "";
+      param["current"] = page.currentPage;
+      param["size"] = page.pageSize;
+      selectUIn(param).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.tableData = data.records;
+        // this.data = data.records;
+        this.loading = false;
+      });
+    },
+
+    getLocationParams() {
+      let url = window.location.href;
+      let urlArr = url.split("?")[1].split("&");
+      var object = new Object();
+      for (var i = 0; i < urlArr.length; i++) {
+        let mm = urlArr[i].split("=");
+        object[decodeURIComponent(mm[0])] = decodeURIComponent(mm[1]);
+      }
+      this.deptid = object["deptid"] || "";
+      this.query = { deptid: this.deptid };
+      this.onLoad(this.page, this.query);
+    }
   },
-  mounted() {},
+  mounted() {
+    // this.getTableData();
+    this.getLocationParams();
+  }
 };
 </script>
 <style lang="scss" scoped>
-/deep/ .avue-crud__menu {
-  height: 130px !important;
-}
+// /deep/ .avue-crud__menu {
+//   height: 130px !important;
+// }
 </style>
diff --git a/src/views/statisticalQueryManagement/securityGuardDetail.vue b/src/views/statisticalQueryManagement/securityGuardDetail.vue
new file mode 100644
index 0000000..4f05081
--- /dev/null
+++ b/src/views/statisticalQueryManagement/securityGuardDetail.vue
@@ -0,0 +1,315 @@
+<template>
+  <basic-container>
+    <avue-crud
+      :option="tableOption"
+      :table-loading="loading"
+      :data="data"
+      ref="crud"
+      v-model="form"
+      :permission="permissionList"
+      :page.sync="page"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @selection-change="selectionChange"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
+      @row-click="handleRowClick"
+    >
+    </avue-crud>
+  </basic-container>
+</template>
+<script>
+import { mapGetters } from "vuex";
+import { pageSecurity } from "../../api/statisticalQueryManagement/statisticalQueryManagement";
+export default {
+  name: "保安员明细",
+  data() {
+    return {
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      query: {},
+      value1: "",
+      value2: "",
+      tableData: [
+        // {
+        //   company: "江西省永安保安服务有限公司",
+        //   subOffice: "南昌市公安局",
+        //   timeStart: "2020-07-14",
+        //   timeEnd: "2021-06-30",
+        //   customerName: "南昌市幼儿园",
+        //   num: "7",
+        //   // status: "正在服务",
+        //   bz: ""
+        // },
+        // {
+        //   company: "南昌市赣水保安服务有限公司",
+        //   subOffice: "东湖分局",
+        //   timeStart: "2020-01-23",
+        //   timeEnd: "2020-12-31",
+        //   customerName: "南昌市第一人民医院",
+        //   num: "32",
+        //   // status: "已完成",
+        //   bz: ""
+        // },
+        // {
+        //   company: "江西中业兴达保安服务有限公司",
+        //   subOffice: "西湖分局",
+        //   timeStart: "2020-03-16",
+        //   timeEnd: "2021-7-29",
+        //   customerName: "南昌市动物园",
+        //   num: "12",
+        //   // status: "未下单",
+        //   bz: ""
+        // }
+      ],
+      tablePage: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      tableOption: {
+        excelBtn: true,
+        delBtn: false,
+        editBtn: false,
+        addBtn: false,
+        selection: true,
+        menu: false,
+        // dateBtn: true,
+        align: "center",
+        height: "auto",
+        calcHeight: 30,
+        tip: false,
+        searchShowBtn: false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        index: true,
+        viewBtn: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "保安姓名",
+            prop: "realName",
+            search: true,
+            searchSpan: 4,
+            display: false
+          },
+          {
+            label: "性别",
+            prop: "sex",
+            type: "select",
+            // search: true,
+            searchSpan: 4,
+            searchLabelWidth: 50,
+            dicData: [
+              {
+                label: "女",
+                value: 2
+              },
+              {
+                label: "男",
+                value: 1
+              }
+            ],
+            slot: true,
+            display: false
+          },
+          {
+            label: "保安公司",
+            prop: "deptName",
+            width: 300,
+            // search: true,
+            // searchSpan: 4,
+            overHidden: true,
+            slot: true,
+            display: false
+          },
+          {
+            label: "保安证编号",
+            prop: "securitynumber",
+            display: false,
+            searchSpan: 5,
+            searchLabelWidth: 110,
+            width: 180
+            // search: true,
+          },
+          {
+            label: "身份证号",
+            prop: "cardid",
+            slot: true,
+            display: false,
+            width: 180
+          },
+          {
+            label: "联系方式",
+            prop: "phone",
+            slot: true,
+            display: false,
+            width: 180
+          },
+          // {
+          //   label: "联系地址",
+          //   prop: "address",
+          //   slot: true,
+          //   display: false,
+          //   hide: true
+          // },
+          {
+            label: "入职时间",
+            prop: "rtime",
+            slot: true,
+            display: false,
+            width: 180
+          },
+          // {
+          //   label: "所属角色",
+          //   prop: "roleName",
+          //   slot: true,
+          //   display: false,
+          //   width: 78,
+          //   hide: true
+          // },
+
+          // {
+          //   label: "所属辖区",
+          //   prop: "jurisdiction",
+          //   // multiple: true,
+          //   minWidth: 60,
+          //   type: "tree",
+          //   dicUrl: "/api/jurisdiction/lazy-tree?parentId=0",
+          //   props: {
+          //     label: "title",
+          //     value: "id",
+          //   },
+          //   checkStrictly: true,
+          //   slot: true,
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请选择所属辖区",
+          //       trigger: "click",
+          //     },
+          //   ],
+          // },
+          {
+            label: "是否在职",
+            prop: "status",
+            type: "select",
+            search: true,
+            searchSpan: 4,
+            dicData: [
+              {
+                label: "否",
+                value: 2
+              },
+              {
+                label: "是",
+                value: 1
+              }
+            ],
+            slot: true,
+            display: false,
+          },
+          {
+            label: "是否持证",
+            prop: "hold",
+            type: "select",
+            search: true,
+            searchSpan: 4,
+            dicData: [
+              {
+                label: "是",
+                value: "0"
+              },
+              {
+                label: "否",
+                value: "1"
+              },
+              {
+                label: "已吊销",
+                value: "2"
+              }
+            ],
+            slot: true,
+            display: false,
+          }
+        ]
+      },
+      typeValue: "0",
+      servicesList: [],
+      companyName: "",
+      loading: true
+    };
+  },
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.post_add, false),
+        viewBtn: this.vaildData(this.permission.post_view, false),
+        delBtn: this.vaildData(this.permission.post_delete, false),
+        editBtn: this.vaildData(this.permission.post_edit, false)
+      };
+    }
+  },
+  methods: {
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+      this.onLoad(this.page, this.query);
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+      this.onLoad(this.page, this.query);
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      let param = {};
+      param["realName"] = params["realName"] || "";
+      param["status"] = params["status"] || "";
+      param["deptId"] = this.deptid;
+      param["hold"] = params["hold"] || "";
+      param["current"] = page.currentPage;
+      param["size"] = page.pageSize;
+      pageSecurity(param).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+      });
+    },
+    getLocationParams() {
+      let url = window.location.href;
+      let urlArr = url.split("?")[1].split("&");
+      var object = new Object();
+      for (var i = 0; i < urlArr.length; i++) {
+        let mm = urlArr[i].split("=");
+        object[decodeURIComponent(mm[0])] = decodeURIComponent(mm[1]);
+      }
+      this.deptid = object["departmentid"] || "";
+      this.query = { deptid: this.deptid };
+      this.onLoad(this.page, this.query);
+      //   this.onLoad(this.page, this.query);
+    }
+  },
+  mounted() {
+    this.getLocationParams();
+  }
+};
+</script>
diff --git a/src/views/statisticalQueryManagement/securityGuardStatistics.vue b/src/views/statisticalQueryManagement/securityGuardStatistics.vue
index 3905288..589f184 100644
--- a/src/views/statisticalQueryManagement/securityGuardStatistics.vue
+++ b/src/views/statisticalQueryManagement/securityGuardStatistics.vue
@@ -2,18 +2,20 @@
   <basic-container>
     <avue-crud
       :option="tableOption"
+      :table-loading="loading"
       :data="tableData"
-      :page.sync="tablePage"
+      :page.sync="page"
       :permission="permissionList"
-      :before-open="beforeOpen"
-      @date-change="dateChange"
+      ref="crud"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
+      @on-load="onLoad"
       @row-click="handleRowClick"
+      class="rowClick"
     >
-      <template slot-scope="{ type, size }" slot="menu">
-        <el-button icon="el-icon-check" :size="size" :type="type"
-          >自定义菜单按钮</el-button
-        >
-      </template>
     </avue-crud>
   </basic-container>
 </template>
@@ -21,55 +23,61 @@
 import FileSaver from "file-saver";
 import XLSX from "xlsx";
 import { mapGetters } from "vuex";
+import {
+  selectLi,
+  dictionaryList
+} from "../../api/statisticalQueryManagement/statisticalQueryManagement";
+import { lazyTreeJu ,lazyTrees} from "../../api/index/index";
 export default {
   name: "业务情况统计",
   data() {
     return {
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      query: {},
       value1: "",
       value2: "",
       tableData: [
-        {
-          company: "江西省永安保安服务有限公司",
-          subOffice: "东湖分局",
-          total: "21540",
-          holder: "21520",
-          nosend: "10200",
-          send: "1320",
-          nopicture: "314",
-          qualification: "142",
-          pass: "21120",
-          socialSecurity: "21535",
-        },
-        {
-          company: "南昌市赣水保安服务有限公司",
-          subOffice: "东湖分局",
-          total: "21540",
-          holder: "21520",
-          nosend: "10200",
-          send: "1320",
-          nopicture: "314",
-          qualification: "142",
-          pass: "21120",
-          socialSecurity: "21535",
-        },
-        {
-          company: "江西中业兴达保安服务有限公司",
-          subOffice: "东湖分局",
-          total: "21540",
-          holder: "21520",
-          nosend: "10200",
-          send: "1320",
-          nopicture: "314",
-          qualification: "142",
-          pass: "21120",
-          socialSecurity: "21535",
-        },
+        // {
+        //   company: "江西省永安保安服务有限公司",
+        //   subOffice: "东湖分局",
+        //   total: "21540",
+        //   holder: "21520",
+        //   nosend: "10200",
+        //   send: "1320",
+        //   nopicture: "314",
+        //   qualification: "142",
+        //   pass: "21120",
+        //   socialSecurity: "21535",
+        // },
+        // {
+        //   company: "南昌市赣水保安服务有限公司",
+        //   subOffice: "东湖分局",
+        //   total: "21540",
+        //   holder: "21520",
+        //   nosend: "10200",
+        //   send: "1320",
+        //   nopicture: "314",
+        //   qualification: "142",
+        //   pass: "21120",
+        //   socialSecurity: "21535",
+        // },
+        // {
+        //   company: "江西中业兴达保安服务有限公司",
+        //   subOffice: "东湖分局",
+        //   total: "21540",
+        //   holder: "21520",
+        //   nosend: "10200",
+        //   send: "1320",
+        //   nopicture: "314",
+        //   qualification: "142",
+        //   pass: "21120",
+        //   socialSecurity: "21535",
+        // },
       ],
-      tablePage: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
       tableOption: {
         align: "center",
         viewBtn: true,
@@ -92,97 +100,111 @@
         column: [
           {
             label: "公司名称",
-            prop: "company",
+            prop: "deptname",
+            search: true,
+            searchSpan: 4,
+            width: 300,
+            display: false
+          },
+          {
+            label: "单位类型",
+            prop: "stats",
             search: true,
             searchSpan: 4,
             display: false,
-          },
-
-          {
-            label: "所属辖区",
-            prop: "subOffice",
-            searchSpan: 4,
             type: "select",
             props: {
-              label: "label",
-              value: "value",
+              label: "dictValue",
+              value: "dictKey"
             },
-            // cascaderItem: ["city", "area"],
-            // dicUrl:subofficeOptions,
+            dicData: []
+          },
+          {
+            label: "所属辖区",
+            prop: "jurname",
+            searchSpan: 4,
+            type: "tree",
+            props: {
+              label: "title",
+              value: "value"
+            },
+            // dicUrl: "/api/information/lazyTreeJu",
+            // dicMethod:'post',
             dicData: [
-              {
-                value: "0",
-                label: "南昌市公安局",
-              },
-              {
-                value: "2",
-                label: "东湖分局",
-              },
-              {
-                value: "3",
-                label: "西湖分局",
-              },
-              {
-                value: "4",
-                label: "青云谱分局",
-              },
-              {
-                value: "5",
-                label: "青山湖分局",
-              },
+              // {
+              //   value: "0",
+              //   label: "南昌市公安局"
+              // },
+              // {
+              //   value: "2",
+              //   label: "东湖分局"
+              // },
+              // {
+              //   value: "3",
+              //   label: "西湖分局"
+              // },
+              // {
+              //   value: "4",
+              //   label: "青云谱分局"
+              // },
+              // {
+              //   value: "5",
+              //   label: "青山湖分局"
+              // }
             ],
             search: true,
             rules: [
               {
                 required: true,
                 message: "请选择所属辖区",
-                trigger: "blur",
-              },
-            ],
+                trigger: "blur"
+              }
+            ]
           },
           {
             label: "保安员总数",
-            prop: "total",
-            display: false,
+            prop: "num",
+            display: false
           },
           {
             label: "持证上岗人数",
-            prop: "holder",
-            display: false,
+            prop: "cznum",
+            display: false
           },
           {
             label: "未派遣人数",
-            prop: "nosend",
-            display: false,
+            prop: "wpaiqnum",
+            display: false
           },
           {
             label: "派遣人数",
-            prop: "send",
-            display: false,
+            prop: "paiqnum",
+            display: false
           },
           {
             label: "未采集照片人数",
-            prop: "nopicture",
-            display: false,
+            prop: "wcaijnum",
+            display: false
           },
           {
             label: "资格审查异常人数",
-            prop: "qualification",
-            display: false,
+            prop: "yicnum",
+            display: false
           },
-          {
-            label: "过考保安人数",
-            prop: "pass",
-            display: false,
-          },
+          // {
+          //   label: "过考保安人数",
+          //   prop: "pass",
+          //   display: false,
+          // },
           {
             label: "缴纳社保人数",
-            prop: "socialSecurity",
-            display: false,
-          },
-        ],
+            prop: "sbnum",
+            display: false
+          }
+        ]
       },
       companyName: "",
+      loading: true
     };
   },
   computed: {
@@ -192,40 +214,97 @@
         addBtn: this.vaildData(this.permission.post_add, false),
         viewBtn: this.vaildData(this.permission.post_view, false),
         delBtn: this.vaildData(this.permission.post_delete, false),
-        editBtn: this.vaildData(this.permission.post_edit, false),
+        editBtn: this.vaildData(this.permission.post_edit, false)
       };
-    },
+    }
   },
   methods: {
-    toCompanyDetails() {
-      this.$router.push({ path: "/statisticalQueryManagement/companyDetails" });
+    getSubOfficeData() {
+      lazyTrees().then(res => {
+        if (res.data.code === 200) {
+          this.tableOption.column.forEach(item => {
+            if (item.label == "所属辖区") {
+              // let data = res.data.data;
+              item.dicData = res.data.data;
+            }
+          });
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
+    // searchChildren(data) {
+    //   data.forEach(item => {
+    //     if(item.hasChildren)(
+
+    //     )
+    //     else {
+    //       this.searchChildren()
+    //     }
+    //   });
+    // },
+    getDictionaryList() {
+      dictionaryList().then(res => {
+        if (res.data.code === 200) {
+          this.tableOption.column.forEach(item => {
+            if (item.label == "单位类型") {
+              item.dicData = res.data.data;
+            }
+          });
+        }
+      });
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+      this.onLoad(this.page, this.query);
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+      this.onLoad(this.page, this.query);
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      let param = {};
+      param["jurisdiction"] = params["jurname"] || "";
+      param["deptid"] = params["deptname"] || "";
+      param["stats"] = params["stats"] || "";
+      param["current"] = page.currentPage;
+      param["size"] = page.pageSize;
+      selectLi(param).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.tableData = data.records;
+        this.loading = false;
+      });
     },
     handleRowClick(row, event, column) {
-      this.$router.push({ path: "/statisticalQueryManagement/companyDetails" });
-    },
-    dateChange() {},
-    // downExcel() {
-    //   let et = XLSX.utils.table_to_book(document.getElementById("table"));
-    //   let etout = XLSX.write(et, {
-    //     bookType: "xlsx",
-    //     bookSST: true,
-    //     type: "array"
-    //   });
-    //   try {
-    //     FileSaver.saveAs(
-    //       new Blob([etout], {
-    //         type: "application/octet-stream"
-    //       }),
-    //       `表.xlsx`
-    //     ); //导出的文件名
-    //   } catch (e) {
-    //     console.log(e, etout);
-    //   }
-    //   return etout;
-    // }
+      this.$router.push({
+        path: "/statisticalQueryManagement/companyDetails?deptid=" + row.dept_id
+      });
+    }
   },
-  mounted() {},
+  mounted() {
+    this.getSubOfficeData();
+    this.getDictionaryList();
+  }
 };
 </script>
 <style lang="scss" scoped>
+/deep/ .rowClick .el-table__row:hover td {
+  cursor: pointer;
+}
 </style>
diff --git a/src/views/talk/talk.vue b/src/views/talk/talk.vue
new file mode 100644
index 0000000..6c1bc57
--- /dev/null
+++ b/src/views/talk/talk.vue
@@ -0,0 +1,340 @@
+<template>
+  <basic-container>
+    <avue-crud
+      :option="option"
+      :table-loading="loading"
+      :data="data"
+      :page.sync="page"
+      :permission="permissionList"
+      :before-open="beforeOpen"
+      :upload-preview="uploadPreview"
+      :upload-error="uploadError"
+      :upload-exceed="uploadExceed"
+      :upload-delete="uploadDelete"
+      :upload-before="uploadBefore"
+      :upload-after="uploadAfter"
+      v-model="form"
+      ref="crud"
+      @row-update="rowUpdate"
+      @row-save="rowSave"
+      @row-del="rowDel"
+      @search-change="searchChange"
+      @search-reset="searchReset"
+      @selection-change="selectionChange"
+      @current-change="currentChange"
+      @size-change="sizeChange"
+      @refresh-change="refreshChange"
+      @on-load="onLoad"
+    >
+      <!-- <template slot-scope="{ disabled, size }" slot="realNameSearch">
+        <el-input
+          placeholder="姓名"
+          :disabled="disabled"
+          :size="size"
+          style="width: 200px"
+          v-on:input="inputs(findName)"
+          v-model="findName"
+        ></el-input>
+      </template> -->
+      <template slot="menuLeft">
+        <el-button
+          type="danger"
+          size="small"
+          icon="el-icon-delete"
+          plain
+          v-if="permission.talk_delete"
+          @click="handleDelete"
+          >删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+import { getList, getDetail, add, update, remove } from "@/api/talk/talk";
+import { mapGetters } from "vuex";
+
+export default {
+  data() {
+    var id = this.$store.getters.userInfo.dept_id;
+    return {
+      findName: "",
+      form: {},
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+      },
+      selectionList: [],
+      option: {
+        height: "auto",
+        calcHeight: 30,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        border: true,
+        searchShowBtn: false,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "标题",
+            prop: "title",
+            search: true,
+            searchLabelWidth: 45,
+            rules: [
+              {
+                required: true,
+                message: "请输入标题",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "谈话对象",
+            prop: "realName",
+            search: true,
+            // type: "tree",
+            // searchslot: true,
+            // dicUrl: `/api/blade-user/selectInr?deptid=` + id,
+            // props: {
+            //   label: "realName",
+            //   value: "id",
+            // },
+            rules: [
+              {
+                required: true,
+                message: "请输入谈话对象",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "谈话内容",
+            prop: "talkcontent",
+            rules: [
+              {
+                required: true,
+                message: "请输入谈话内容",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "谈话时间",
+            prop: "talktime",
+            type: "date",
+            format: "yyyy-MM-dd hh:mm:ss",
+            valueFormat: "yyyy-MM-dd hh:mm:ss",
+            rules: [
+              {
+                required: true,
+                message: "请输入谈话时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "结论",
+            prop: "conclusion",
+            rules: [
+              {
+                required: true,
+                message: "请输入结论",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "评价",
+            prop: "evaluate",
+            rules: [
+              {
+                required: true,
+                message: "请输入评价",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "图片",
+            prop: "imgurl",
+            // dataType: 'string',
+            type: "upload",
+            propsHttp: {
+              res: "data",
+            },
+            span: 24,
+            listType: "picture-card",
+            tip: "只能上传jpg/png文件,且不超过500kb",
+            action: "/api/blade-resource/oss/endpoint/put-files-talk?file=",
+          },
+        ],
+      },
+      data: [],
+    };
+  },
+  computed: {
+    ...mapGetters(["permission", "userInfo"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.talk_add, false),
+        viewBtn: this.vaildData(this.permission.talk_view, false),
+        delBtn: this.vaildData(this.permission.talk_delete, false),
+        editBtn: this.vaildData(this.permission.talk_edit, false),
+      };
+    },
+    ids() {
+      let ids = [];
+      this.selectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  methods: {
+    searchChange(params, done) {
+      // console.log(params);
+      this.onLoad(this.page, params);
+      done();
+    },
+
+    rowSave(row, done, loading) {
+      var d = [];
+      for (var k in row.imgurl) {
+        d.push(row.imgurl[k].value);
+      }
+      row.imgurl = d.join(",");
+      row.deptid = this.$store.getters.userInfo.dept_id;
+      add(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          window.console.log(error);
+        }
+      );
+    },
+    rowUpdate(row, index, done, loading) {
+      update(row).then(
+        () => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          loading();
+          console.log(error);
+        }
+      );
+    },
+    rowDel(row) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(row.id);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+        });
+    },
+    handleDelete() {
+      if (this.selectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$refs.crud.toggleSelection();
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then((res) => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      // console.log(1);
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.query)
+      ).then((res) => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        console.log(this.data);
+        this.loading = false;
+        this.selectionClear();
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.avue-form__menu--center .el-button {
+  float: left !important;
+}
+
+.avue-form__menu--center .el-button:nth-child(1) {
+  margin-left: 30px !important;
+}
+</style>
diff --git a/src/views/workreport/data.js b/src/views/workreport/data.js
index 5a9fe2f..3584230 100644
--- a/src/views/workreport/data.js
+++ b/src/views/workreport/data.js
@@ -17,28 +17,30 @@
         message: "请输入时间",
         trigger: "blur"
     }]
-}, {
-    label: "汇报类别",
-    prop: "category",
-    type: "select",
-    dicUrl: "/api/blade-system/dict-biz/dictionary?code=workReportCategory",
-    props: {
-        label: "dictValue",
-        value: "dictKey"
-    },
-    dataType: "number",
-    // searchSpan: 4,
-    // search: true,
-    hide: true,
-    addDisplay: false,
-    editDisplay: false,
-    viewDisplay: false,
-    rules: [{
-        required: true,
-        message: "请选择汇报类别",
-        trigger: "blur"
-    }]
-}, {
+},
+//  {
+//     label: "汇报类别",
+//     prop: "category",
+//     type: "select",
+//     dicUrl: "/api/blade-system/dict-biz/dictionary?code=workReportCategory",
+//     props: {
+//         label: "dictValue",
+//         value: "dictKey"
+//     },
+//     dataType: "number",
+//     // searchSpan: 4,
+//     // search: true,
+//     hide: true,
+//     addDisplay: false,
+//     editDisplay: false,
+//     viewDisplay: false,
+//     rules: [{
+//         required: true,
+//         message: "请选择汇报类别",
+//         trigger: "blur"
+//     }]
+// }, 
+{
     label: "汇报类型",
     prop: "type",
     type: "select",
@@ -61,7 +63,7 @@
     prop: "receivedIds",
     // span: 12,
     type: "tree",
-    dicUrl: "/api/blade-system/dept/lazy-tree-user",
+    dicUrl: "/api/blade-system/dept/lazy-tree-users?type=3&deptId=" + this.deptId,
     hide: true,
     leafOnly: true,
     props: {
@@ -162,7 +164,8 @@
         message: "请输入时间",
         trigger: "blur"
     }]
-}, {
+},
+{
     label: "汇报类别",
     prop: "category",
     type: "select",
@@ -178,14 +181,13 @@
     addDisplay: false,
     editDisplay: false,
     viewDisplay: false,
-    hide: true,
-    editDisplay: false,
     rules: [{
         required: true,
         message: "请选择汇报类别",
         trigger: "blur"
     }]
-}, {
+},
+{
     label: "汇报类型",
     prop: "type",
     type: "select",
diff --git a/src/views/workreport/workreply.vue b/src/views/workreport/workreply.vue
index f92d0e5..f102e64 100644
--- a/src/views/workreport/workreply.vue
+++ b/src/views/workreport/workreply.vue
@@ -101,9 +101,9 @@
     permissionList() {
       return {
         addBtn: this.vaildData(null, false),
-        viewBtn: this.vaildData(this.permission.notice_view, false),
+        viewBtn: this.vaildData(this.permission.workreply_view, false),
         delBtn: this.vaildData(null, false),
-        editBtn: this.vaildData(this.permission.notice_edit, false),
+        editBtn: this.vaildData(this.permission.workreply_say, false),
       };
     },
     ids() {
diff --git a/src/views/workreport/workreport.vue b/src/views/workreport/workreport.vue
index da90e2b..09342f1 100644
--- a/src/views/workreport/workreport.vue
+++ b/src/views/workreport/workreport.vue
@@ -27,6 +27,7 @@
           size="small"
           icon="el-icon-delete"
           plain
+          v-if="permission.workreport_delete"
           @click="handleDelete"
           >删 除
         </el-button>
@@ -41,7 +42,6 @@
 </template>
 
 <script>
-import { workreportColumn } from "./data";
 import {
   getListPage,
   remove,
@@ -51,6 +51,8 @@
 } from "@/api/workreport/workreport";
 import { getDept } from "@/api/system/dept";
 import { mapGetters } from "vuex";
+import { mapState } from "vuex";
+import { workreportColumn } from "./data";
 
 export default {
   data() {
@@ -89,7 +91,7 @@
         excelBtn: false,
         menuWidth: 320,
         dialogClickModal: false,
-        column: workreportColumn,
+        column:workreportColumn,
       },
       data: [],
     };
@@ -98,10 +100,10 @@
     ...mapGetters(["permission"]),
     permissionList() {
       return {
-        addBtn: this.vaildData(this.permission.notice_add, false),
-        viewBtn: this.vaildData(this.permission.notice_view, false),
-        delBtn: this.vaildData(this.permission.notice_delete, false),
-        editBtn: this.vaildData(this.permission.notice_edit, false),
+        addBtn: this.vaildData(this.permission.workreport_add, false),
+        viewBtn: this.vaildData(this.permission.workreport_view, false),
+        delBtn: this.vaildData(this.permission.workreport_delete, false),
+        editBtn: this.vaildData(this.permission.workreport_edit, false),
       };
     },
     ids() {
@@ -111,6 +113,9 @@
       });
       return ids.join(",");
     },
+    ...mapState({
+      userInfo: (state) => state.user.userInfo,
+    }),
   },
   mounted() {},
   methods: {
@@ -139,6 +144,7 @@
     rowUpdate(row, index, done, loading) {
       row.deptId = this.deptId;
       row.userId = this.userId;
+      row.category = 3;
       // row.receivedIds = row.receivedIds.join(",");
       update(row).then(
         () => {
@@ -238,36 +244,22 @@
       ).content.user_id;
 
       var that = this;
-      getDept(this.deptId).then((res) => {
-        var deptCategory = res.data.data.deptCategory;
-        deptCategory == 1
-          ? (that.deptCategory = true)
-          : (that.deptCategory = false);
+      getDept(this.deptId).then(() => {
+        const columnReceivedIds = that.findObject(that.option.column, "receivedIds");
+        columnReceivedIds.dicUrl = "/api/blade-system/dept/lazy-tree-users?type=3&deptId="+that.deptId;
+        params["deptId"] = that.deptId;
+        params["userId"] = that.userId;
 
-        // const { releaseTimeRange } = this.query;
-        // if (that.deptCategory) {
-        params["deptId"] = this.deptId;
-        params["userId"] = this.userId;
-        // }
         let values = {
           ...params,
         };
-        // if (releaseTimeRange) {
-        //   values = {
-        //     ...params,
-        //     startTime: releaseTimeRange[0],
-        //     endTime: releaseTimeRange[1],
-        //     ...this.query,
-        //   };
-        //   values.releaseTimeRange = null;
-        // }
-        this.loading = true;
+        that.loading = true;
         getListPage(page.currentPage, page.pageSize, values).then((res) => {
           const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
+          that.page.total = data.total;
+          that.data = data.records;
+          that.loading = false;
+          that.selectionClear();
         });
       });
     },
diff --git a/vue.config.js b/vue.config.js
index 0e750f0..c82e3eb 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -30,10 +30,10 @@
         // target: 'http://192.168.0.109:1',
         //远程演示服务地址,可用于直接启动项目
         // target: 'http://2h3f861221.wicp.vip:58646',
-        target: 'http://s16s652780.51mypc.cn/api',
+        // target: 'http://s16s652780.51mypc.cn/api',
         // target: 'http://192.168.0.114:82',
         // target: 'http://192.168.0.109:82',
-        // target: 'http://s16s652780.51mypc.cn/api',
+        target: 'http://s16s652780.51mypc.cn/api',
         // 服务器使用
         // target: 'http://localhost:82',
         ws: true,

--
Gitblit v1.9.3