diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/CompanyController.java b/src/main/java/com/supwisdom/dlpay/system/controller/CompanyController.java
index bf49a73..fe30c3c 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/CompanyController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/CompanyController.java
@@ -71,6 +71,7 @@
                 page = companyService.getOperCompanyList(companyName, pageNo, pageSize, operUser.getOperid());
             }
             map.put("PageResult", page);
+            map.put("opertype", operUser.getOpertype());
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -206,10 +207,17 @@
      */
     @RequestMapping("/deleteCompany")
     @ResponseBody
-    public Map deleteCompany(@RequestParam(value = "companyId") String companyId) {
+    public Map deleteCompany(@RequestParam(value = "companyId") String companyId,
+                             @AuthenticationPrincipal TOperator operUser) {
         Map map = new HashMap();
         String message = "";
         try {
+            if (operUser.getOpertype().equals("L") || operUser.getOpertype().equals("H")){
+                message="权限不足，请联系管理员！";
+                map.put("message", message);
+                return map;
+            }
+
             List<TOperator> operByCompanyId = companyService.getOperByCompanyId(companyId);
             if (operByCompanyId != null && operByCompanyId.size() > 0) {
                 message = "此公司已被绑定!";
@@ -246,12 +254,18 @@
     public Map loadCompanyForUpdate(@RequestParam(value = "companyId") String companyId,
                                     @AuthenticationPrincipal TOperator operUser) {
         Map map = new HashMap();
+        String message="";
         try {
+            if (operUser.getOpertype().equals("L") || operUser.getOpertype().equals("H")){
+                message="权限不足，请联系管理员！";
+                map.put("message", message);
+                return map;
+            }
             TCompany company = companyService.getCompanyAllStatusById(companyId);
             map.put("company", company);
             List<TDictionaryId> dicts = systemService.findTDictionaryByType(30);//法定代表人证件类型
             map.put("dicts", dicts);
-
+            map.put("message", message);
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 577d695..3bc48fc 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -32,6 +32,17 @@
 INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (6, '区域级别', '3', '三级');
 INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (1, 'operator', 'L', '楼栋管理员');
 INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (13, '抓拍服务地址', 'http://172.28.43.158:8088/door', '抓拍服务地址');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'idcard', '身份证');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'military_idcard', '军官证');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'soldier_idcard', '士兵证');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'driving_license', '驾驶证');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'stuempno_idcard', '学工证');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'passport', '护照');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'residence_booklet', '户口本');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'taiwan_pass', '台湾同胞来往内地通行证');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'hk_macau_pass', '港澳居民来往内地通行证');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'foreigner_residence_permit', '外国人居留证');
+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (30, '证件类型', 'unknown_idcard', '其他');
 
 -- ----------------------------
 -- Records of t_keys
@@ -72,28 +83,28 @@
 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (2, NULL, 1, NULL, 'layui-icon-home', '/home/console', '控制台', 2, 1,3);
 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (3, NULL, 0, NULL, 'layui-icon-set', '#', '系统中心', 10, -1,2);
 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (4, NULL, 1, NULL, 'layui-icon-set', '/role/index', '角色管理', 11, 3,2);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (5, NULL, 1, NULL, 'layui-icon-set', '/operator/operatorindex', '操作员管理', 12, 3,2);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (5, NULL, 1, NULL, 'layui-icon-set', '/company/companyindex', '公司管理', 12, 3,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (6, NULL, 1, NULL, 'layui-icon-set', '/company/companycheckindex', '公司审核', 13, 3,1);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (7, NULL, 1, NULL, 'layui-icon-set', '/operator/operatorindex', '操作员管理', 14, 3,2);
 /*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (6, NULL, 1, NULL, 'layui-icon-username', '/function/index', '功能管理', 13, 3,1);*/
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (7, NULL, 1, NULL, 'layui-icon-app', '/system/regionindex', '区域管理', 14, 3,2);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (8, NULL, 1, NULL, 'layui-icon-app', '/system/buildingindex', '楼栋管理', 15, 3,2);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (9, NULL, 0, NULL, 'layui-icon-engine', '#', '门控中心', 20, -1,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (10, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devindex', '设备管理', 21, 9,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (11, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timeindex', '时间段管理', 22, 9,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (12, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timegrpindex', '时间组管理', 23, 9,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (13, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/weektimeindex', '时间周管理', 24, 9,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (14, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devweek', '设备时间周管理', 25, 9,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (15, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/impdevindex', '设备导入', 26, 9,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (16, NULL, 0, NULL, 'layui-icon-app', '#', '集控中心', 30, -1,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (17, NULL, 1, NULL, 'layui-icon-app', '/system/remoteCtrlindex', '远程管理', 31, 16,3);
-/*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (16, NULL, 1, NULL, 'layui-icon-app', '/system/dictionary', '数据字典管理', 31, 15,1);*/
-/*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (17, NULL, 1, NULL, 'layui-icon-app', '/system/queue', '任务调度管理', 32, 15,1);*/
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (18, NULL, 0, NULL, 'layui-icon-username', '#', '人员中心', 40, -1,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (19, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/impCustomerlistindex', '导入人员名单', 41, 18,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (20, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/downDoorList', '下发门禁名单', 42, 18,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (21, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/deleteDoorList', '删除门禁名单', 43, 18,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (22, NULL, 0, NULL, 'layui-icon-chart-screen', '#', '数据中心', 50, -1,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (23, NULL, 1, NULL, 'layui-icon-chart-screen', '/doorlistMgr/searchDoorlist', '设备名单查询', 51, 22,3);
-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (24, NULL, 1, NULL, 'layui-icon-chart-screen', '/query/tdoorstream', '流水信息查询', 52, 22,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (8, NULL, 1, NULL, 'layui-icon-app', '/system/regionindex', '区域管理', 15, 3,2);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (9, NULL, 1, NULL, 'layui-icon-app', '/system/buildingindex', '楼栋管理', 16, 3,2);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (10, NULL, 0, NULL, 'layui-icon-engine', '#', '门控中心', 20, -1,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (11, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devindex', '设备管理', 21, 10,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (12, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timeindex', '时间段管理', 22, 10,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (13, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timegrpindex', '时间组管理', 23, 10,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (14, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/weektimeindex', '时间周管理', 24, 10,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (15, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devweek', '设备时间周管理', 25, 10,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (16, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/impdevindex', '设备导入', 26, 10,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (17, NULL, 0, NULL, 'layui-icon-app', '#', '集控中心', 30, -1,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (18, NULL, 1, NULL, 'layui-icon-app', '/system/remoteCtrlindex', '远程管理', 31, 17,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (19, NULL, 0, NULL, 'layui-icon-username', '#', '人员中心', 40, -1,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (20, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/impCustomerlistindex', '导入人员名单', 41, 19,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (21, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/downDoorList', '下发门禁名单', 42, 19,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (22, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/deleteDoorList', '删除门禁名单', 43, 19,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (23, NULL, 0, NULL, 'layui-icon-chart-screen', '#', '数据中心', 50, -1,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (24, NULL, 1, NULL, 'layui-icon-chart-screen', '/doorlistMgr/searchDoorlist', '设备名单查询', 51, 23,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (25, NULL, 1, NULL, 'layui-icon-chart-screen', '/query/tdoorstream', '流水信息查询', 52, 23,3);
 
 
 
@@ -124,6 +135,7 @@
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('4', 4, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('5', 5, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 /*INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23860008', 6, NULL, 'abcdefghijklmnopqrstuvwxyz012345');*/
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('6', 6, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('7', 7, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('8', 8, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('9', 9, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
@@ -142,6 +154,7 @@
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('22', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('23', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('24', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('25', 25, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890001', 1, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890002', 2, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890003', 3, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
@@ -165,6 +178,7 @@
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890022', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890023', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890024', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890025', 25, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
 
 -- ----------------------------
 -- Records of tb_systemparam
diff --git a/src/main/resources/templates/system/company.html b/src/main/resources/templates/system/company.html
index 3c55712..0d38cc4 100644
--- a/src/main/resources/templates/system/company.html
+++ b/src/main/resources/templates/system/company.html
@@ -22,7 +22,7 @@
                 <div class="col-md-6">
                     <div class="form-group">
                         <button type="button" class="btn btn-info" @click="query" id="company_qrybtn">查 询</button>
-                        <button class="btn btn-primary" type="button" @click="addCompany">注册公司</button>
+                        <button class="btn btn-primary" type="button" @click="addCompany" id="addCompany" >注册公司</button>
                     </div>
                 </div>
             </el-form>
@@ -121,10 +121,10 @@
                     </el-table-column>
                     <el-table-column
                             label="操作"
-                            width="130">
+                            width="130" >
                         <template scope="scope">
-                            <button type="button" class="btn btn-info btn-xs" title="编辑" @click="editCompany(scope.row.companyId)" v-if="scope.row.checkStatus!='待审核'">编辑</button>
-                            <button type="button" class="btn btn-danger btn-xs" title="删除" @click="delCompany(scope.row.companyId)" v-if="(scope.row.checkStatus=='审核通过' || scope.row.checkStatus=='审核驳回' || scope.row.status=='有效') && scope.row.status!='注销' ">删除</button>
+                            <button type="button" class="btn btn-info btn-xs" title="编辑" @click="editCompany(scope.row.companyId)" v-if="scope.row.checkStatus!='待审核'" >编辑</button>
+                            <button type="button" class="btn btn-danger btn-xs" title="删除"  @click="delCompany(scope.row.companyId)" v-if="(scope.row.checkStatus=='审核通过' || scope.row.checkStatus=='审核驳回' || scope.row.status=='有效') && scope.row.status!='注销' && scope.row.checkStatus!='待审核' " >删除</button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -308,7 +308,7 @@
             },
             editCompany:function(companyId){
                 company_getFillData(this,companyId);
-                this.dialogFormVisible = true;
+
                 this.companytitile="修改公司"
             },
             resetForm: function (formName) {
@@ -390,6 +390,15 @@
                     //console.log(ret);
                     _self.totSize=ret.PageResult.totalCount;
                     _self.tableData=ret.PageResult.list;
+
+                    if (ret.opertype != null || ret.opertype!= undefined){
+                        if (ret.opertype=='H' || ret.opertype=='L'){
+                            var button = document.getElementById("addCompany");
+                            button.parentNode.removeChild(button);
+
+                        }
+                    }
+
                 }
             })
         }
@@ -444,29 +453,35 @@
             dataType: "json",
             url: encodeURI("[[@{/company/loadCompanyForUpdate?companyId=}]]" + id),
             success: function (ret) {
-                var dictlist = [];
-                var dict = ret.dicts;
-                for (var i = 0; i < dict.length; i++) {
-                    dictlist.push({
-                        value: dict[i]["dictval"],
-                        label: dict[i]["dictcaption"]
+                if (ret.message != undefined && ret.message !=""){
+                    layer.msg(ret.message, {icon: 2, time: 2000});
+                    return;
+                }else {
+                    _self.dialogFormVisible = true;
+                    var dictlist = [];
+                    var dict = ret.dicts;
+                    for (var i = 0; i < dict.length; i++) {
+                        dictlist.push({
+                            value: dict[i]["dictval"],
+                            label: dict[i]["dictcaption"]
 
-                    });
-                }
-                _self.legalPeopleCardTypes = dictlist;
+                        });
+                    }
+                    _self.legalPeopleCardTypes = dictlist;
 
 
-                if (ret.company != null) {
-                    _self.companyDiaForm.companyId = ret.company.companyId;
-                    _self.companyDiaForm.companyName = ret.company.companyName;
-                    _self.companyDiaForm.licenseId = ret.company.licenseId;
-                    _self.companyDiaForm.companyAddress = ret.company.companyAddress;
-                    _self.companyDiaForm.legalPeople = ret.company.legalPeople;
-                    _self.companyDiaForm.legalPeopleCardType = ret.company.legalPeopleCardType;
-                    _self.companyDiaForm.legalPeopleCardId = ret.company.legalPeopleCardId;
-                    _self.companyDiaForm.companyPhone = ret.company.companyPhone;
-                    _self.companyDiaForm.remarks = ret.company.remarks;
+                    if (ret.company != null) {
+                        _self.companyDiaForm.companyId = ret.company.companyId;
+                        _self.companyDiaForm.companyName = ret.company.companyName;
+                        _self.companyDiaForm.licenseId = ret.company.licenseId;
+                        _self.companyDiaForm.companyAddress = ret.company.companyAddress;
+                        _self.companyDiaForm.legalPeople = ret.company.legalPeople;
+                        _self.companyDiaForm.legalPeopleCardType = ret.company.legalPeopleCardType;
+                        _self.companyDiaForm.legalPeopleCardId = ret.company.legalPeopleCardId;
+                        _self.companyDiaForm.companyPhone = ret.company.companyPhone;
+                        _self.companyDiaForm.remarks = ret.company.remarks;
 
+                    }
                 }
 
 
