From bb71b47a43244e6db57cbc3cd0223bc5a64023d7 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 10 十一月 2023 10:40:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/zycrm' into zycrm

---
 src/main/java/com/zy/crm/manager/entity/ReimburseOnlineDetl.java             |   68 +
 src/main/java/com/zy/crm/manager/mapper/AllFollMapper.java                   |   12 
 src/main/java/com/zy/crm/manager/entity/PriOnline2Foll.java                  |   75 +++
 src/main/webapp/static/js/priOnline2/priOnline.js                            |  148 +++--
 src/main/webapp/views/plan/plan.html                                         |   12 
 src/main/java/com/zy/crm/manager/service/AllFollService.java                 |    8 
 src/main/java/com/zy/crm/manager/service/PriOnline2FollService.java          |    8 
 src/main/resources/mapper/PlanMapper.xml                                     |    4 
 src/main/java/com/zy/crm/manager/controller/PlanController.java              |  154 +++++
 src/main/java/com/zy/crm/manager/service/impl/PriOnline2FollServiceImpl.java |   12 
 src/main/resources/mapper/PriOnline2FollMapper.xml                           |   13 
 src/main/webapp/static/js/reimburseOnline/reimburseOnline.js                 |   12 
 src/main/resources/mapper/PriOnline2Mapper.xml                               |   45 +
 src/main/java/com/zy/crm/manager/controller/ReimburseOnlineController.java   |    8 
 src/main/java/com/zy/crm/manager/entity/Plan.java                            |  300 +++++++----
 src/main/java/com/zy/crm/manager/service/impl/PriOnline2ServiceImpl.java     |   11 
 src/main/webapp/views/priOnline2/priOnline.html                              |    7 
 src/main/java/com/zy/crm/manager/entity/PlanType.java                        |    5 
 src/main/java/com/zy/crm/manager/service/PriOnline2Service.java              |    3 
 src/main/java/com/zy/crm/manager/entity/PriOnline2.java                      |  102 +++
 src/main/java/com/zy/crm/manager/service/impl/AllFollServiceImpl.java        |   12 
 src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java        |  212 +++++--
 src/main/resources/mapper/AllFollMapper.xml                                  |   13 
 src/main/java/com/zy/crm/manager/mapper/PriOnline2FollMapper.java            |   12 
 src/main/java/com/zy/crm/manager/mapper/PriOnline2Mapper.java                |    2 
 src/main/webapp/static/js/plan/plan.js                                       |  145 +++++
 src/main/java/com/zy/crm/manager/entity/AllFoll.java                         |   82 +++
 27 files changed, 1,191 insertions(+), 294 deletions(-)

diff --git a/src/main/java/com/zy/crm/manager/controller/PlanController.java b/src/main/java/com/zy/crm/manager/controller/PlanController.java
index 0cd26b0..4e77bb0 100644
--- a/src/main/java/com/zy/crm/manager/controller/PlanController.java
+++ b/src/main/java/com/zy/crm/manager/controller/PlanController.java
@@ -6,10 +6,7 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
+import com.core.common.*;
 import com.core.domain.KeyValueVo;
 import com.core.exception.CoolException;
 import com.zy.crm.common.model.SettleDto;
@@ -118,6 +115,23 @@
         });
     }
 
+    @RequestMapping(value = "/plan/assistantPlan/view/auth")
+    @ManagerAuth(memo = "鏌ョ湅鍓鍒掔敵璇峰崟")
+    @Transactional
+    public R assistantPlanView(@RequestParam Long hostPlanId) {
+        Plan plan = planService.selectById(hostPlanId);
+        if (plan.getAssistantHostSign()==1){
+            EntityWrapper<Plan> wrapper = new EntityWrapper<>();
+            wrapper.eq("id",plan.getHostPlanId());
+            Page<Plan> planPage = planService.selectPage(new Page<>(1, 1), wrapper);
+            return R.ok(planPage);
+        }
+        EntityWrapper<Plan> wrapper = new EntityWrapper<>();
+        wrapper.eq("id",plan.getAssistantPlanId());
+        Page<Plan> planPage = planService.selectPage(new Page<>(1, 1), wrapper);
+        return R.ok(planPage);
+    }
+
     @RequestMapping(value = "/plan/add/auth")
     @ManagerAuth(memo = "娣诲姞瑙勫垝鐢宠鍗�")
     @Transactional
@@ -169,6 +183,11 @@
             manager = getUser();
         }
         PlanType planType = planTypeService.selectById(plan.getPlanType());
+        if (planType.getType().equals(2)) {
+            plan.setStatus2(0);
+        }else {
+            plan.setStatus2(10);
+        }
         User planLeader = planTypeService.findPlanLeader(planType);
         plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader)));
 
@@ -187,6 +206,91 @@
         }
 
         return R.ok();
+    }
+
+    @RequestMapping(value = "/plan/assistantPlan/add/auth")
+    @ManagerAuth(memo = "娣诲姞鍓鍒掔敵璇峰崟")
+    @Transactional
+    public R assistantPlanAdd(@RequestParam Long hostPlanId) {
+        Plan hostPlan = planService.selectById(hostPlanId);
+        if (hostPlan.getAssistantHostSign()!=0){
+            return R.error("姝よ鍒掑崟涓嶉渶瑕佸垱寤哄壇娴佺▼");
+        }
+        PlanType planType2 = planTypeService.selectById(hostPlan.getPlanType());
+        if (planType2.getType()!=2){
+            return R.error("姝よ鍒掑崟涓嶉渶瑕佸垱寤哄壇娴佺▼");
+        }
+        if (!Cools.isEmpty(hostPlan.getAssistantPlanId()) && hostPlan.getAssistantPlanId()!=0){
+            return R.error("姝よ鍒掑崟宸插瓨鍦ㄥ壇瑙勫垝鍗曪紝id涓�"+hostPlan.getAssistantPlanId());
+        }
+        // pre
+        Plan plan = new Plan(hostPlan);
+        // begin
+        Long hostId = getHostId();
+        if (planService.selectByUuid(hostId, plan.getUuid()) != null) {
+            throw new CoolException("瑙勫垝鍗曞凡瀛樺湪");
+        }
+
+        Order order = orderService.selectById(plan.getOrderId());
+        if (Cools.isEmpty(order)) {
+            throw new CoolException("璺熻釜椤圭洰涓嶅瓨鍦�");
+        }
+
+        if (!order.getDirector().equals(getUserId())){
+            throw new CoolException("鍙厑璁歌窡韪」鐩礋璐d汉娣诲姞鎵�閫夐」鐩鍒掔敵璇峰崟");
+        }
+
+        Date now = new Date();
+        plan.setHostId(hostId);
+        plan.setUuid(planService.getUuid(hostId));  // 瑙勫垝鍗曚唬鍙�
+        plan.setDeptId(getDeptId());               // 鎵�灞為儴闂�
+        plan.setUserId(getUserId());               // 鎵�灞炰汉鍛�
+
+        plan.setAppleTime(now);
+        plan.setCreateBy(getUserId());
+        plan.setCreateTime(now);
+        plan.setUpdateBy(getUserId());
+        plan.setUpdateTime(now);
+        plan.setStatus(0);
+        plan.setStatus2(0);
+        plan.setStep(1);
+        plan.setSettle(1);  // 1.寮�濮�
+        plan.setAssistantHostSign(1);//鍓鍒掑崟
+
+        User manager = new User();
+        try{
+            manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+        }catch (Exception e){
+            manager = getUser();
+        }
+        PlanType planType = new PlanType(hostPlan.getHostId(),1);//1:璐ф灦
+        User planLeader = planTypeService.findPlanLeader(planType);
+        plan.setSettleMsg(JSON.toJSONString(SettleDto.init(plan, manager, planLeader)));
+
+        plan.setDirector(planLeader.getId());
+
+        if (!planService.insert(plan)) {
+            throw new CoolException("淇濆瓨澶辫触锛岃閲嶈瘯");
+        }
+        plan.setAssistantPlanId(plan.getId());
+        plan.setHostPlanId(hostPlanId);
+        if (!planService.updateById(plan)) {
+            throw new CoolException("鏇存柊澶辫触锛岃閲嶈瘯");
+        }
+        // 鑷姩娣诲姞璺熻繘浜�
+        PlanFoll planFoll = new PlanFoll();
+        planFoll.setPlanId(plan.getId());
+        planFoll.setUserId(planLeader.getId());
+        if (!planFollService.insert(planFoll)) {
+            throw new CoolException("淇濆瓨澶辫触锛岃閲嶈瘯");
+        }
+
+        hostPlan.setAssistantPlanId(plan.getId());
+        hostPlan.setHostPlanId(hostPlanId);
+        if (!planService.updateById(hostPlan)) {
+            throw new CoolException("鏇存柊澶辫触锛岃閲嶈瘯");
+        }
+        return R.ok("淇濆瓨鎴愬姛");
     }
 
 	@RequestMapping(value = "/plan/update/auth")
@@ -249,6 +353,21 @@
              int priOnline2 = priOnline2Service.selectCount(new EntityWrapper<PriOnline2>().eq("item_id", id));
              if (priOnline2!=0){
                  return R.error("瀛樺湪鍏宠仈鐨勬牳浠峰崟锛岀姝㈠垹闄わ紒锛侊紒");
+             }
+             Plan planA = planService.selectById(id);
+             if (planA.getAssistantHostSign()==1){
+                 Plan planB = planService.selectById(planA.getHostPlanId());
+                 planB.setAssistantPlanId(0L);
+                 planB.setHostPlanId(0L);
+                 planB.setStatus2(0);
+                 planService.updateById(planB);
+             }else {
+                 if (!Cools.isEmpty(planA.getAssistantPlanId()) && planA.getAssistantPlanId()!=0){
+                     Plan planB = planService.selectById(planA.getAssistantPlanId());
+                     if (!Cools.isEmpty(planB)){
+                         return R.error("瀛樺湪鍏宠仈鐨勫壇瑙勫垝鍗曪紝绂佹鍒犻櫎锛侊紒锛� 鍓鍒掑崟ID锛�"+planB.getId());
+                     }
+                 }
              }
              planService.deleteById(id);
         }
@@ -419,8 +538,7 @@
 //                break;
             case 1:
                 // 鏌ユ壘瑙勫垝缁勯暱
-                PlanType planType = planTypeService.selectById(plan.getPlanType());
-                User planLeader = planTypeService.findPlanLeader(planType);
+                User planLeader = userService.selectById(plan.getDirector());
                 if (Cools.isEmpty(planLeader)) {
                     throw new CoolException("鏈煡鎵惧埌瑙勫垝缁勯暱锛岃鑱旂郴绠$悊鍛�");
                 }
@@ -562,6 +680,12 @@
                 plan.setUpdateBy(getUserId());
                 plan.setUpdateTime(new Date());
 
+                if (plan.getAssistantHostSign()==1){
+                    Plan planHost = planService.selectById(plan.getHostPlanId());
+                    planHost.setStatus2(1);
+                    planService.updateById(planHost);
+                }
+
                 if (!planService.updateById(plan)) {
                     throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
                 }
@@ -625,6 +749,9 @@
         }
         // 鏌ユ壘瑙勫垝缁勯暱
         PlanType planType = planTypeService.selectById(plan.getPlanType());
+        if (plan.getAssistantHostSign()==1){
+            planType.setType(1);
+        }
         User planLeader = planTypeService.findPlanLeader(planType);
         if (Cools.isEmpty(planLeader)) {
             throw new CoolException("鏈煡鎵惧埌瑙勫垝缁勯暱锛岃鑱旂郴绠$悊鍛�");
@@ -691,6 +818,7 @@
         EntityWrapper<Plan> wrapper = new EntityWrapper<>();
         wrapper.like("name", condition);
         wrapper.eq("status",1);
+        wrapper.eq("assistant_host_sign",0);
 
         List<ProcessPermissions> processPermissionsList = processPermissionsService.selectList(new EntityWrapper<ProcessPermissions>().eq("process_memo", 4).or().eq("process_memo", 5));//2锛氭牳浠锋祦绋�
         int type =0;
@@ -725,6 +853,20 @@
             map.put("value", plan.getName());
             result.add(map);
         }
+        if (type==1){
+            EntityWrapper<Plan> wrapper2 = new EntityWrapper<>();
+            wrapper2.like("name", condition);
+            wrapper2.eq("status",1);
+            wrapper2.eq("assistant_host_sign",1);
+            List<Plan> plan2s = planService.selectList(wrapper2);
+            for (Plan plan : plan2s){
+                Map<String, Object> map = new HashMap<>();
+                map.put("id", plan.getId());
+//            map.put("value", plan.getName()+"---"+plan.getId());
+                map.put("value", plan.getName());
+                result.add(map);
+            }
+        }
         return R.ok(result);
     }
 
diff --git a/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java b/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java
index a78fcc4..84ae90d 100644
--- a/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java
+++ b/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java
@@ -57,6 +57,9 @@
     @Autowired
     private UserService userService;
 
+    @Autowired
+    private PriOnline2FollService priOnline2FollService;
+
     String PZH = " 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� ";
 
     @RequestMapping(value = "/priOnline2/{id}/auth")
@@ -86,12 +89,22 @@
                   @RequestParam(defaultValue = "10") Integer limit,
                   @RequestParam(required = false) String orderByField,
                   @RequestParam(required = false) String orderByType,
+                  @RequestParam(required = false) String allSwitch,
                   @RequestParam(required = false) String condition,
-                  @RequestParam Map<String, Object> param) {
+                  @RequestParam Map<String, Object> paramSou) {
         EntityWrapper<PriOnline2> wrapper = new EntityWrapper<>();
-        wrapper.setSqlSelect("id,title,create_time as createTime,filepath,settle,settle_size as settleSize,item_id as itemId,order_num as orderNum,template_name as templateName,user_id as userId,dept_id as deptId,status,update_time as updateTime,check_data as checkData,update_user_id as updateUserId,member_id as memberId");
+        wrapper.setSqlSelect("id,title,create_time as createTime,assistant_plan_id as assistantPlanId,host_plan_id as hostPlanId,assistant_host_sign as assistantHostSign,filepath,settle,settle_size as settleSize,item_id as itemId,order_num as orderNum,template_name as templateName,user_id as userId,dept_id as deptId,status,update_time as updateTime,check_data as checkData,update_user_id as updateUserId,member_id as memberId");
 //        wrapper.in("member_id", getUserRoleBelongsToUserId("allopen"));
-        excludeTrash(param);
+        excludeTrash(paramSou);
+        Map<String, Object> param = convertallSwitch(paramSou);
+
+        if (!Cools.isEmpty(allSwitch)){
+            List<PriOnline2> priOnline2List = priOnline2Service.listByAll(getUserId());
+            Page<PriOnline2> page1 = new Page<PriOnline2>(curr, limit).setRecords(priOnline2List);
+            page1.setTotal(priOnline2Service.listByAllTotal(getUserId()));
+            return R.ok(page1);
+        }
+
         convert(param, wrapper);
         allLike(PriOnline2.class, param.keySet(), wrapper, condition);
         wrapper.or().eq("member_id", getUserId());
@@ -101,6 +114,14 @@
         return R.ok(priOnline2Service.selectPage(new Page<>(curr, limit), wrapper));
     }
 
+    private Map<String, Object>  convertallSwitch(Map<String, Object> map) {
+        for (Map.Entry<String, Object> entry : map.entrySet()) {
+            if (entry.getKey().equals("allSwitch")) {
+                map.remove("allSwitch");
+            }
+        }
+        return map;
+    }
     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) {
         boolean signUserId = false;
         boolean signDeptId = false;
@@ -143,68 +164,68 @@
             wrapper.or().eq("host_id", 1);
         }
     }
-    @RequestMapping(value = "/priOnline2/HJ/add/auth")
-    @ManagerAuth(memo = "鎺ュ彇闆嗘垚鏍镐环浠诲姟")
-    public R addHJ(PriOnline2 priOnline2) {
-        PriOnline2 priOnline21 = priOnline2Service.selectById(priOnline2.getId());
-        if (priOnline21.getSettle()!=1 || !priOnline21.getMemberId().equals(0L)){
-            return R.error("姝ら泦鎴愭牳浠峰崟鐘舵�佸凡鏀瑰彉锛岃鍒锋柊椤甸潰閲嶆柊閫夋嫨锛�");
-        }
-        Date now = new Date();
-        priOnline21.setMemberId(getUserId());
+//    @RequestMapping(value = "/priOnline2/HJ/add/auth")
+//    @ManagerAuth(memo = "鎺ュ彇闆嗘垚鏍镐环浠诲姟")
+//    public R addHJ(PriOnline2 priOnline2) {
+//        PriOnline2 priOnline21 = priOnline2Service.selectById(priOnline2.getId());
+//        if (priOnline21.getSettle()!=1 || !priOnline21.getMemberId().equals(0L)){
+//            return R.error("姝ら泦鎴愭牳浠峰崟鐘舵�佸凡鏀瑰彉锛岃鍒锋柊椤甸潰閲嶆柊閫夋嫨锛�");
+//        }
+//        Date now = new Date();
+//        priOnline21.setMemberId(getUserId());
+//
+//
+//        List<SettleDto> planDtos = JSON.parseArray(priOnline21.getSettleMsg(), SettleDto.class);
+//        List<SettleDto> planDtoList = new ArrayList<>();
+//        for (SettleDto dto : planDtos) {
+//            if (dto.getStep().equals(2)) {
+//                dto.setUserId(getUserId());
+//                dto.setUsername(getUser().getNickname());
+//                if (Cools.isEmpty(dto.getMsg())) {
+//                    dto.setMsg(getUser().getNickname() + "鎺ュ彇鏍镐环");
+//                } else {
+//                    dto.setMsg(dto.getMsg() + PZH + DateUtils.convert(now) + " " + getUser().getNickname() + "鎺ュ彇鏍镐环");
+//                }
+//                dto.setTime(DateUtils.convert(new Date()));
+//            }
+//            planDtoList.add(dto);
+//        }
+//        priOnline21.setSettleMsg(JSON.toJSONString(planDtoList));
+//        priOnline21.setUpdateUserId(getUserId());
+//        priOnline21.setUpdateTime(now);
+//        priOnline2Service.updateById(priOnline21);
+//        return R.ok("鎺ュ彇鎴愬姛");
+//    }
 
-
-        List<SettleDto> planDtos = JSON.parseArray(priOnline21.getSettleMsg(), SettleDto.class);
-        List<SettleDto> planDtoList = new ArrayList<>();
-        for (SettleDto dto : planDtos) {
-            if (dto.getStep().equals(2)) {
-                dto.setUserId(getUserId());
-                dto.setUsername(getUser().getNickname());
-                if (Cools.isEmpty(dto.getMsg())) {
-                    dto.setMsg(getUser().getNickname() + "鎺ュ彇鏍镐环");
-                } else {
-                    dto.setMsg(dto.getMsg() + PZH + DateUtils.convert(now) + " " + getUser().getNickname() + "鎺ュ彇鏍镐环");
-                }
-                dto.setTime(DateUtils.convert(new Date()));
-            }
-            planDtoList.add(dto);
-        }
-        priOnline21.setSettleMsg(JSON.toJSONString(planDtoList));
-        priOnline21.setUpdateUserId(getUserId());
-        priOnline21.setUpdateTime(now);
-        priOnline2Service.updateById(priOnline21);
-        return R.ok("鎺ュ彇鎴愬姛");
-    }
-
-    @RequestMapping(value = "/priOnline2/HJ/search/auth")
-    @ManagerAuth
-    public R priOnline2Search(String condition) {
-        EntityWrapper<PriOnline2> wrapper = new EntityWrapper<>();
-        wrapper.like("template_name", condition);
-        wrapper.eq("member_id",0L);
-
-        List<ProcessPermissions> processPermissionsList = processPermissionsService.selectList(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5));//2锛氭牳浠锋祦绋�
-        int type =0;
-        for (ProcessPermissions processPermissions:processPermissionsList){
-            if (getUserId().equals(processPermissions.getUserId())){
-                type=1;
-                break;
-            }
-        }
-        if (type==0){
-            return R.error("浣犱笉鏄牳浠峰憳,鏃犳潈鎺ヤ换鍔�");
-        }
-        List<Map<String, Object>> result = new ArrayList<>();
-
-        List<PriOnline2> priOnline2s = priOnline2Service.selectList(wrapper);
-        for (PriOnline2 priOnline2 : priOnline2s){
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", priOnline2.getId());
-            map.put("name", priOnline2.getTemplateName()+" - ID:"+priOnline2.getId());
-            result.add(map);
-        }
-        return R.ok(result);
-    }
+//    @RequestMapping(value = "/priOnline2/HJ/search/auth")
+//    @ManagerAuth
+//    public R priOnline2Search(String condition) {
+//        EntityWrapper<PriOnline2> wrapper = new EntityWrapper<>();
+//        wrapper.like("template_name", condition);
+//        wrapper.eq("member_id",0L);
+//
+//        List<ProcessPermissions> processPermissionsList = processPermissionsService.selectList(new EntityWrapper<ProcessPermissions>().eq("process_memo", 5));//2锛氭牳浠锋祦绋�
+//        int type =0;
+//        for (ProcessPermissions processPermissions:processPermissionsList){
+//            if (getUserId().equals(processPermissions.getUserId())){
+//                type=1;
+//                break;
+//            }
+//        }
+//        if (type==0){
+//            return R.error("浣犱笉鏄牳浠峰憳,鏃犳潈鎺ヤ换鍔�");
+//        }
+//        List<Map<String, Object>> result = new ArrayList<>();
+//
+//        List<PriOnline2> priOnline2s = priOnline2Service.selectList(wrapper);
+//        for (PriOnline2 priOnline2 : priOnline2s){
+//            Map<String, Object> map = new HashMap<>();
+//            map.put("id", priOnline2.getId());
+//            map.put("name", priOnline2.getTemplateName()+" - ID:"+priOnline2.getId());
+//            result.add(map);
+//        }
+//        return R.ok(result);
+//    }
 
 
     @RequestMapping(value = "/priOnline2/add/auth")
@@ -223,6 +244,10 @@
 //        Item item = itemService.selectById(priOnline.getItemId());
         Plan plan = planService.selectById(priOnline2.getItemId());
         User userUp = userService.selectById(plan.getUserId());
+        priOnline2.setAssistantHostSign(plan.getAssistantHostSign());
+        priOnline2.setAssistantPlanId(plan.getAssistantPlanId());
+        priOnline2.setHostPlanId(plan.getHostPlanId());
+
 
         //涓氬姟鍛�
         priOnline2.setUserId(userUp.getId());
@@ -263,17 +288,11 @@
         List<String> initNames = new ArrayList<>();
         initNames.add("鎺ュ彇鏍镐环浠诲姟");
         initNames.add("瀹屾垚鏍镐环");
-        if (planType.getType().equals(2)) {
-            initNames.add("瀹屾垚鏍镐环");
-        }
 //        initNames.add("缁忕悊瀹℃牳");
         initNames.add("涓氬姟鍛樼‘璁�");
         List<User> users = new ArrayList<>();
         users.add(getUser());
         users.add(getUser());
-        if (planType.getType().equals(2)) {
-            users.add(new User());
-        }
         users.add(userUp);
         priOnline2.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPath(users, initNames, users.size())));
         priOnline2.setSettleSize(users.size());
@@ -285,12 +304,36 @@
         planService.updateById(plan);
 
         priOnline2Service.insert(priOnline2);
+
+        // 鑷姩娣诲姞璺熻繘浜�
+        for (User user:users){
+            List<PriOnline2Foll> priOnline2Folls = priOnline2FollService.selectList(new EntityWrapper<PriOnline2Foll>().eq("pri_online2_id", plan.getId()).eq("user_id", user.getId()));
+            if (Cools.isEmpty(priOnline2Folls) || priOnline2Folls.size()==0){
+                PriOnline2Foll priOnline2Foll = new PriOnline2Foll();
+                priOnline2Foll.setPriOnline2Id(plan.getId());
+                priOnline2Foll.setUserId(user.getId());
+                if (!priOnline2FollService.insert(priOnline2Foll)) {
+                    throw new CoolException("淇濆瓨澶辫触锛岃閲嶈瘯");
+                }
+            }
+        }
+
+
+        if (plan.getAssistantHostSign()==1){
+            Plan plan1 = planService.selectById(plan.getHostPlanId());
+            plan1.setStatus2(2);
+            planService.updateById(plan1);
+        }
+
         return R.ok();
     }
 
     @RequestMapping(value = "/priOnline2/addOther/auth")
     @ManagerAuth(memo = "鍙﹀瓨鏍镐环绠$悊")
     public R addOther(@RequestBody Map<String, Object> map) {
+        if (true){
+            return R.error("绂佹锛�");
+        }
         PriOnline2 online = priOnline2Service.selectById(Long.parseLong(map.get("id").toString()));
 
         PriOnline2 priOnline2 = new PriOnline2();
@@ -441,6 +484,11 @@
                 Plan plan = planService.selectById(priOnline2.getItemId());
                 plan.setStatus(1);
                 planService.updateById(plan);
+                if (plan.getAssistantHostSign()==1){
+                    Plan planHost = planService.selectById(priOnline2.getHostPlanId());
+                    planHost.setStatus2(1);
+                    planService.updateById(planHost);
+                }
             }
 
             priOnline2Service.deleteBatchIds(Arrays.asList(ids));
@@ -614,12 +662,28 @@
         if (!priOnline2Service.updateById(priOnline2)) {
             throw new CoolException("纭澶辫触锛岃鑱旂郴绠$悊鍛�");
         }
+
+        Plan plan = planService.selectById(priOnline2.getItemId());
+        plan.setStatus(3);
+        planService.selectById(plan);
+
         if (user.getId().equals(priOnline2.getUserId())) {
-            try {
-                priQuoteAdd(priOnline2.getId(), plannerId);
-            } catch (Exception e) {
-                return R.error("鑷姩鐢熸垚鎶ヤ环鍗曞け璐�");
+            if (priOnline2.getAssistantHostSign()==0){
+                try {
+                    priQuoteAdd(priOnline2.getId(), plannerId);
+                } catch (Exception e) {
+                    return R.error("鑷姩鐢熸垚鎶ヤ环鍗曞け璐�");
+                }
+            }else {
+                try {
+                    Plan planHost = planService.selectById(priOnline2.getHostPlanId());
+                    planHost.setStatus2(3);
+                    planService.selectById(planHost);
+                } catch (Exception e) {
+                    return R.error("鏇存柊涓昏〃澶辫触");
+                }
             }
+
         }
 
         return R.ok("瀹℃壒鎴愬姛");
diff --git a/src/main/java/com/zy/crm/manager/controller/ReimburseOnlineController.java b/src/main/java/com/zy/crm/manager/controller/ReimburseOnlineController.java
index 80b0e9e..60b6511 100644
--- a/src/main/java/com/zy/crm/manager/controller/ReimburseOnlineController.java
+++ b/src/main/java/com/zy/crm/manager/controller/ReimburseOnlineController.java
@@ -188,16 +188,16 @@
         }
 
         ProcessPermissions processPermissions3 = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 3).eq("process", param.getCheckData().equals("鍚�")? "3-1" : "3-2"));//3锛氭姤閿�娴佺▼
-        User president3 = userService.selectById(processPermissions3.getUserId());       // 鑾峰彇鎶ヤ环娴佺▼鑺傜偣3纭浜�
+        User president3 = userService.selectById(processPermissions3.getUserId());       // 鑾峰彇娴佺▼鑺傜偣3纭浜�
 
         ProcessPermissions processPermissions4 = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 3).eq("process", "4-1"));//3锛氭姤閿�娴佺▼
-        User president4 = userService.selectById(processPermissions4.getUserId());       // 鑾峰彇鎶ヤ环娴佺▼鑺傜偣4纭浜�
+        User president4 = userService.selectById(processPermissions4.getUserId());       // 鑾峰彇娴佺▼鑺傜偣4纭浜�
 
         ProcessPermissions processPermissions5 = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 3).eq("process", "5-1"));//3锛氭姤閿�娴佺▼
-        User president5 = userService.selectById(processPermissions5.getUserId());       // 鑾峰彇鎶ヤ环娴佺▼鑺傜偣5纭浜�
+        User president5 = userService.selectById(processPermissions5.getUserId());       // 鑾峰彇娴佺▼鑺傜偣5纭浜�
 
         ProcessPermissions processPermissions6 = processPermissionsService.selectOne(new EntityWrapper<ProcessPermissions>().eq("process_memo", 3).eq("process", "6-1"));//3锛氭姤閿�娴佺▼
-        User president6 = userService.selectById(processPermissions6.getUserId());       // 鑾峰彇鎶ヤ环娴佺▼鑺傜偣6纭浜�
+        User president6 = userService.selectById(processPermissions6.getUserId());       // 鑾峰彇娴佺▼鑺傜偣6纭浜�
 
         reimburseOnline.setSettleMsg(JSON.toJSONString(SettleDto.initPriQuote(reimburseOnline, manager,president3,president4,president5,president6,getUser())));
         reimburseOnline.setMemberId(manager.getId());
diff --git a/src/main/java/com/zy/crm/manager/entity/AllFoll.java b/src/main/java/com/zy/crm/manager/entity/AllFoll.java
new file mode 100644
index 0000000..415104f
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/entity/AllFoll.java
@@ -0,0 +1,82 @@
+package com.zy.crm.manager.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.crm.manager.service.PlanService;
+import com.zy.crm.system.entity.User;
+import com.zy.crm.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@TableName("man_all_foll")
+public class AllFoll implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 瑙勫垝鍗�
+     */
+    @ApiModelProperty(value= "瑙勫垝鍗�")
+    @TableField("plan_id")
+    private Long planId;
+
+    /**
+     * 璺熻繘浜�
+     */
+    @ApiModelProperty(value= "璺熻繘浜�")
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * memo
+     */
+    @ApiModelProperty(value= "琛ㄧ被")
+    @TableField("memo")
+    private Long memo;
+
+    public AllFoll() {}
+
+    public AllFoll(Long planId, Long userId) {
+        this.planId = planId;
+        this.userId = userId;
+    }
+
+//    PlanFoll planFoll = new PlanFoll(
+//            null,    // 瑙勫垝鍗�
+//            null    // 璺熻繘浜篬闈炵┖]
+//    );
+
+    public String getPlanId$(){
+        PlanService service = SpringUtils.getBean(PlanService.class);
+        Plan plan = service.selectById(this.planId);
+        if (!Cools.isEmpty(plan)){
+            return String.valueOf(plan.getName());
+        }
+        return null;
+    }
+
+    public String getUserId$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.userId);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+
+}
diff --git a/src/main/java/com/zy/crm/manager/entity/Plan.java b/src/main/java/com/zy/crm/manager/entity/Plan.java
index 4e02dbf..069b34f 100644
--- a/src/main/java/com/zy/crm/manager/entity/Plan.java
+++ b/src/main/java/com/zy/crm/manager/entity/Plan.java
@@ -33,327 +33,421 @@
     /**
      * ID
      */
-    @ApiModelProperty(value= "ID")
+    @ApiModelProperty(value = "ID")
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
      * 鎵�灞炲晢鎴�
      */
-    @ApiModelProperty(value= "鎵�灞炲晢鎴�")
+    @ApiModelProperty(value = "鎵�灞炲晢鎴�")
     @TableField("host_id")
     private Long hostId;
 
     /**
      * 鎵�灞為儴闂�
      */
-    @ApiModelProperty(value= "鎵�灞為儴闂�")
+    @ApiModelProperty(value = "鎵�灞為儴闂�")
     @TableField("dept_id")
     private Long deptId;
 
     /**
      * 涓氬姟绫诲瀷
      */
-    @ApiModelProperty(value= "涓氬姟绫诲瀷")
+    @ApiModelProperty(value = "涓氬姟绫诲瀷")
     @TableField("plan_type")
     private Long planType;
 
     /**
      * 涓氬姟鍛�
      */
-    @ApiModelProperty(value= "涓氬姟鍛�")
+    @ApiModelProperty(value = "涓氬姟鍛�")
     @TableField("user_id")
     private Long userId;
 
     /**
      * 璺熻釜椤圭洰
      */
-    @ApiModelProperty(value= "璺熻釜椤圭洰")
+    @ApiModelProperty(value = "璺熻釜椤圭洰")
     @TableField("order_id")
     private Long orderId;
 
     /**
      * 鐢叉柟鍗曚綅
      */
-    @ApiModelProperty(value= "鐢叉柟鍗曚綅")
+    @ApiModelProperty(value = "鐢叉柟鍗曚綅")
     @TableField("cstmr_id")
     private Long cstmrId;
 
     /**
      * 瑙勫垝鍗曚唬鍙�
      */
-    @ApiModelProperty(value= "瑙勫垝鍗曚唬鍙�")
+    @ApiModelProperty(value = "瑙勫垝鍗曚唬鍙�")
     private String uuid;
 
     /**
      * 瑙勫垝鍗曞悕绉�
      */
-    @ApiModelProperty(value= "瑙勫垝鍗曞悕绉�")
+    @ApiModelProperty(value = "瑙勫垝鍗曞悕绉�")
     private String name;
 
     /**
      * 鐢宠鏃ユ湡
      */
-    @ApiModelProperty(value= "鐢宠鏃ユ湡")
+    @ApiModelProperty(value = "鐢宠鏃ユ湡")
     @TableField("apple_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date appleTime;
 
     /**
      * 鏂规鎵�闇�
      */
-    @ApiModelProperty(value= "鏂规鎵�闇�")
+    @ApiModelProperty(value = "鏂规鎵�闇�")
     @TableField("plan_need")
     private String planNeed;
 
     /**
      * 绔嬮」 1: 鏄�  0: 鍚�
      */
-    @ApiModelProperty(value= "绔嬮」 1: 鏄�  0: 鍚�  ")
+    @ApiModelProperty(value = "绔嬮」 1: 鏄�  0: 鍚�  ")
     @TableField("be_item")
     private Integer beItem;
 
     /**
      * 琛ㄥ崟鍐呭
      */
-    @ApiModelProperty(value= "琛ㄥ崟鍐呭")
+    @ApiModelProperty(value = "琛ㄥ崟鍐呭")
     private String form;
 
     /**
      * 瑙勫垝鍛�
      */
-    @ApiModelProperty(value= "瑙勫垝鍛�")
+    @ApiModelProperty(value = "瑙勫垝鍛�")
     private Long planner;
 
     /**
      * 瀹屾垚鏃堕棿
      */
-    @ApiModelProperty(value= "瀹屾垚鏃堕棿")
+    @ApiModelProperty(value = "瀹屾垚鏃堕棿")
     @TableField("finish_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date finishTime;
 
     /**
      * 鏇存敼鏂规 1: 鏄�  0: 鍚�
      */
-    @ApiModelProperty(value= "鏇存敼鏂规 1: 鏄�  0: 鍚�  ")
+    @ApiModelProperty(value = "鏇存敼鏂规 1: 鏄�  0: 鍚�  ")
     private Integer change;
 
     /**
      * 鏇存敼娆℃暟
      */
-    @ApiModelProperty(value= "鏇存敼娆℃暟")
+    @ApiModelProperty(value = "鏇存敼娆℃暟")
     @TableField("change_time")
     private Integer changeTime;
 
     /**
      * 鏇存敼鏂规鍘熷洜
      */
-    @ApiModelProperty(value= "鏇存敼鏂规鍘熷洜")
+    @ApiModelProperty(value = "鏇存敼鏂规鍘熷洜")
     @TableField("change_reason")
     private String changeReason;
 
     /**
      * 瑙勬牸濂栭噾
      */
-    @ApiModelProperty(value= "瑙勬牸濂栭噾")
+    @ApiModelProperty(value = "瑙勬牸濂栭噾")
     @TableField("plan_bonus")
     private Double planBonus;
 
     /**
      * 瑙勬牸缁勯暱濂栭噾
      */
-    @ApiModelProperty(value= "瑙勬牸缁勯暱濂栭噾")
+    @ApiModelProperty(value = "瑙勬牸缁勯暱濂栭噾")
     @TableField("plan_leader_bonus")
     private Double planLeaderBonus;
 
     /**
      * 闄勪欢
      */
-    @ApiModelProperty(value= "闄勪欢")
+    @ApiModelProperty(value = "闄勪欢")
     private String files;
 
     /**
      * 杩涘害 1: 寮�濮�  2: 缁勯暱瀹℃牳  3: 鍞墠缁勯暱瀹℃牳  4: 瑙勫垝鍛樺鏍�  5: 瀹℃壒閫氳繃
      */
-    @ApiModelProperty(value= "杩涘害 1: 寮�濮�  2: 缁勯暱瀹℃牳  3: 鍞墠瀹℃牳  4: 瑙勫垝鍛樺鏍�  5: 瀹℃壒閫氳繃  ")
+    @ApiModelProperty(value = "杩涘害 1: 寮�濮�  2: 缁勯暱瀹℃牳  3: 鍞墠瀹℃牳  4: 瑙勫垝鍛樺鏍�  5: 瀹℃壒閫氳繃  ")
     private Integer settle;
 
     /**
      * 瀹℃牳杩涘害
      */
-    @ApiModelProperty(value= "瀹℃牳杩涘害")
+    @ApiModelProperty(value = "瀹℃牳杩涘害")
     @TableField("settle_msg")
     private String settleMsg;
 
     /**
      * 璇勮
      */
-    @ApiModelProperty(value= "璇勮")
+    @ApiModelProperty(value = "璇勮")
     private String comment;
 
     /**
      * 鐘舵�� 1: 姝e父  0: 绂佺敤
      */
-    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    @ApiModelProperty(value = "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
     private Integer status;
 
     /**
      * 娣诲姞浜哄憳
      */
-    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @ApiModelProperty(value = "娣诲姞浜哄憳")
     @TableField("create_by")
     private Long createBy;
 
     /**
      * 娣诲姞鏃堕棿
      */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @ApiModelProperty(value = "娣诲姞鏃堕棿")
     @TableField("create_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /**
      * 淇敼浜哄憳
      */
-    @ApiModelProperty(value= "淇敼浜哄憳")
+    @ApiModelProperty(value = "淇敼浜哄憳")
     @TableField("update_by")
     private Long updateBy;
 
     /**
      * 淇敼鏃堕棿
      */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @ApiModelProperty(value = "淇敼鏃堕棿")
     @TableField("update_time")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /**
      * 娉ㄩ噴
      */
-    @ApiModelProperty(value= "娉ㄩ噴")
+    @ApiModelProperty(value = "娉ㄩ噴")
     private String memo;
 
     /**
      * 椤圭洰杩涘害娴佺▼{1锛氶」鐩垱寤猴紝2锛氭牳浠峰鐞嗭紝3锛氫骇鍝佽垂鐢ㄦ槑缁嗭紝4锛氭姤浠烽绠楀崟锛�5锛氭姤浠峰崟}
      */
-    @ApiModelProperty(value= "椤圭洰杩涘害娴佺▼{1锛氶」鐩垱寤猴紝2锛氭牳浠峰鐞嗭紝3锛氫骇鍝佽垂鐢ㄦ槑缁嗭紝4锛氭姤浠烽绠楀崟锛�5锛氭姤浠峰崟}")
+    @ApiModelProperty(value = "椤圭洰杩涘害娴佺▼{1锛氶」鐩垱寤猴紝2锛氭牳浠峰鐞嗭紝3锛氫骇鍝佽垂鐢ㄦ槑缁嗭紝4锛氭姤浠烽绠楀崟锛�5锛氭姤浠峰崟}")
     private Integer step;
 
     /**
      * 涓氬姟鍛樿仈绯绘柟寮�
      */
-    @ApiModelProperty(value= "涓氬姟鍛樿仈绯绘柟寮�")
+    @ApiModelProperty(value = "涓氬姟鍛樿仈绯绘柟寮�")
     private String userXmlSelPhone;
 
     /**
      * 鑺傜偣璐熻矗浜�
      */
-    @ApiModelProperty(value= "鑺傜偣璐熻矗浜�")
+    @ApiModelProperty(value = "鑺傜偣璐熻矗浜�")
     private Long director;
 
-    public Plan() {}
+    /**
+     * 闆嗘垚椤圭洰璐ф灦鏍镐环鐘舵��
+     */
+    @ApiModelProperty(value = "鐘舵�� 3: 瀹屾垚鏍镐环 2: 寮�濮嬫牳浠� 1: 绛夊緟鏍镐环  0: 鍒濆  ")
+    private Integer status2;
 
-    public String getHostId$(){
+    /**
+     * 鑺傜偣璐熻矗浜�
+     */
+    @ApiModelProperty(value = "鍓痯lanId")
+    @TableField("assistant_plan_id")
+    private Long assistantPlanId;
+
+    /**
+     * 鑺傜偣璐熻矗浜�
+     */
+    @ApiModelProperty(value = "涓籶lanId")
+    @TableField("host_plan_id")
+    private Long hostPlanId;
+
+    /**
+     * 鑺傜偣璐熻矗浜�
+     */
+    @ApiModelProperty(value = "涓籶lanId")
+    @TableField("assistant_host_sign")
+    private Integer assistantHostSign;
+
+    public Plan() {
+    }
+
+    public Plan(Plan plan) {
+        this.hostId = plan.getHostId();
+        this.deptId = plan.getDeptId();
+        this.planType = plan.getPlanType();
+        this.userId = plan.getUserId();
+        this.orderId = plan.getOrderId();
+        this.cstmrId = plan.getCstmrId();
+        this.name = plan.getName();
+        this.planNeed = plan.getPlanNeed();
+        this.beItem = plan.getBeItem();
+        this.form = plan.getForm();
+        this.finishTime = plan.getFinishTime();
+        this.change = plan.getChange();
+        this.changeTime = plan.getChangeTime();
+        this.changeReason = plan.getChangeReason();
+        this.planBonus = plan.getPlanBonus();
+        this.planLeaderBonus = plan.getPlanLeaderBonus();
+        this.files = plan.getFiles();
+        this.comment = plan.getComment();
+        this.memo = plan.getMemo();
+        this.userXmlSelPhone = plan.getUserXmlSelPhone();
+    }
+
+    public String getHostId$() {
         HostService service = SpringUtils.getBean(HostService.class);
         Host host = service.selectById(this.hostId);
-        if (!Cools.isEmpty(host)){
+        if (!Cools.isEmpty(host)) {
             return String.valueOf(host.getName());
         }
         return null;
     }
 
-    public String getDirector$(){
-        if (this.director==null) return "";
+    public String getDirector$() {
+        if (this.director == null) return "";
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.director);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getNickname());
         }
         return null;
     }
 
-    public String getDeptId$(){
+    public String getDeptId$() {
         DeptService service = SpringUtils.getBean(DeptService.class);
         Dept dept = service.selectById(this.deptId);
-        if (!Cools.isEmpty(dept)){
+        if (!Cools.isEmpty(dept)) {
             return String.valueOf(dept.getName());
         }
         return null;
     }
 
-    public String getPlanType$(){
+    public String getPlanType$() {
         PlanTypeService service = SpringUtils.getBean(PlanTypeService.class);
         PlanType planType = service.selectById(this.planType);
-        if (!Cools.isEmpty(planType)){
+        if (!Cools.isEmpty(planType)) {
             return String.valueOf(planType.getName());
         }
         return null;
     }
 
-    public Integer getPLType$(){
+    public Integer getPLType$() {
         PlanTypeService service = SpringUtils.getBean(PlanTypeService.class);
         PlanType planType = service.selectById(this.planType);
-        if (!Cools.isEmpty(planType)){
+        if (!Cools.isEmpty(planType)) {
             return planType.getType();
         }
         return null;
     }
 
-    public String getUserId$(){
+    public String getStatusAll$(){
+        if (this.status2>3 || this.getAssistantHostSign()==1){
+            return getStatus$();
+        }else {
+            return "闆嗘垚"+getStatus$()+"/"+"璐ф灦"+getStatus2$();
+        }
+
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 3:
+                return "瀹屾垚鏍镐环";
+            case 2:
+                return "寮�濮嬫牳浠�";
+            case 1:
+                return "绛夊緟鏍镐环";
+            case 0:
+                return "鍒濆";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getStatus2$(){
+        if (null == this.status2){ return null; }
+        switch (this.status2){
+            case 3:
+                return "瀹屾垚鏍镐环";
+            case 2:
+                return "寮�濮嬫牳浠�";
+            case 1:
+                return "绛夊緟鏍镐环";
+            case 0:
+                return "鍒濆";
+            default:
+                return String.valueOf(this.status2);
+        }
+    }
+
+    public String getUserId$() {
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.userId);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getNickname());
         }
         return null;
     }
 
-    public String getOrderId$(){
+    public String getOrderId$() {
         OrderService service = SpringUtils.getBean(OrderService.class);
         Order order = service.selectById(this.orderId);
-        if (!Cools.isEmpty(order)){
+        if (!Cools.isEmpty(order)) {
             return String.valueOf(order.getName());
         }
         return null;
     }
 
-    public String getCstmrId$(){
+    public String getCstmrId$() {
         CstmrService service = SpringUtils.getBean(CstmrService.class);
         Cstmr cstmr = service.selectById(this.cstmrId);
-        if (!Cools.isEmpty(cstmr)){
+        if (!Cools.isEmpty(cstmr)) {
             return String.valueOf(cstmr.getName());
         }
         return null;
     }
 
-    public String getAppleTime$(){
-        if (Cools.isEmpty(this.appleTime)){
+    public String getAppleTime$() {
+        if (Cools.isEmpty(this.appleTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd").format(this.appleTime);
     }
 
-    public String getPlanNeed$(){
-        if (Cools.isEmpty(this.planNeed)){
+    public String getPlanNeed$() {
+        if (Cools.isEmpty(this.planNeed)) {
             return null;
         }
         PlanNeedService service = SpringUtils.getBean(PlanNeedService.class);
         String[] planNeeds = this.planNeed.split("-");
-        String name="";
-        for (String planNeeda : planNeeds){
+        String name = "";
+        for (String planNeeda : planNeeds) {
             PlanNeed planNeed = service.selectById(Integer.parseInt(planNeeda));
-            if (!Cools.isEmpty(planNeed)){
+            if (!Cools.isEmpty(planNeed)) {
 //                return String.valueOf(planNeed.getName());
-                name = name+planNeed.getName()+";";
+                name = name + planNeed.getName() + ";";
             }
         }
         return name;
     }
 
-    public String getBeItem$(){
-        if (null == this.beItem){ return null; }
-        switch (this.beItem){
+    public String getBeItem$() {
+        if (null == this.beItem) {
+            return null;
+        }
+        switch (this.beItem) {
             case 1:
                 return "鏄�";
             case 0:
@@ -363,16 +457,32 @@
         }
     }
 
-    public String getFinishTime$(){
-        if (Cools.isEmpty(this.finishTime)){
+    public String getAssistantHostSign$() {
+        if (null == this.assistantHostSign) {
+            return null;
+        }
+        switch (this.assistantHostSign) {
+            case 1:
+                return "鍓祦绋�";
+            case 0:
+                return "涓绘祦绋�";
+            default:
+                return String.valueOf(this.assistantHostSign);
+        }
+    }
+
+    public String getFinishTime$() {
+        if (Cools.isEmpty(this.finishTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd").format(this.finishTime);
     }
 
-    public String getChange$(){
-        if (null == this.change){ return null; }
-        switch (this.change){
+    public String getChange$() {
+        if (null == this.change) {
+            return null;
+        }
+        switch (this.change) {
             case 1:
                 return "鏄�";
             case 0:
@@ -382,9 +492,11 @@
         }
     }
 
-    public String getSettle$(){
-        if (null == this.settle){ return null; }
-        switch (this.settle){
+    public String getSettle$() {
+        if (null == this.settle) {
+            return null;
+        }
+        switch (this.settle) {
 //            case 1:
 //                return "绛夊緟缁勯暱瀹℃牳";
             case 1:
@@ -400,67 +512,53 @@
         }
     }
 
-    public String getPlanner$(){
-        if (this.planner==null) return "鏈垎閰�";
+    public String getPlanner$() {
+        if (this.planner == null) return "鏈垎閰�";
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.planner);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getNickname());
         }
         return "";
     }
 
-    public String getNowHeadman$(){
+    public String getNowHeadman$() {
         PlanTypeService planTypeService = SpringUtils.getBean(PlanTypeService.class);
         PlanType planType = planTypeService.selectById(this.planType);
         User user = planTypeService.findPlanLeader(planType);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getNickname());
         }
         return null;
     }
 
-    public String getStatus$(){
-        if (null == this.status){ return null; }
-        switch (this.status){
-            case 2:
-                return "寮�濮嬫牳浠�";
-            case 1:
-                return "绛夊緟鏍镐环";
-            case 0:
-                return "鏈畬鎴�";
-            default:
-                return String.valueOf(this.status);
-        }
-    }
-
-    public String getCreateBy$(){
+    public String getCreateBy$() {
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.createBy);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getNickname());
         }
         return null;
     }
 
-    public String getCreateTime$(){
-        if (Cools.isEmpty(this.createTime)){
+    public String getCreateTime$() {
+        if (Cools.isEmpty(this.createTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
     }
 
-    public String getUpdateBy$(){
+    public String getUpdateBy$() {
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.selectById(this.updateBy);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getNickname());
         }
         return null;
     }
 
-    public String getUpdateTime$(){
-        if (Cools.isEmpty(this.updateTime)){
+    public String getUpdateTime$() {
+        if (Cools.isEmpty(this.updateTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
diff --git a/src/main/java/com/zy/crm/manager/entity/PlanType.java b/src/main/java/com/zy/crm/manager/entity/PlanType.java
index aa2a22c..6b18800 100644
--- a/src/main/java/com/zy/crm/manager/entity/PlanType.java
+++ b/src/main/java/com/zy/crm/manager/entity/PlanType.java
@@ -122,6 +122,11 @@
 
     public PlanType() {}
 
+    public PlanType(Long hostId,Integer type) {
+        this.hostId = hostId;
+        this.type = type;
+    }
+
     public PlanType(Long hostId,String name,String flag,String formId,String data,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
         this.hostId = hostId;
         this.name = name;
diff --git a/src/main/java/com/zy/crm/manager/entity/PriOnline2.java b/src/main/java/com/zy/crm/manager/entity/PriOnline2.java
index 715860a..4c9f42d 100644
--- a/src/main/java/com/zy/crm/manager/entity/PriOnline2.java
+++ b/src/main/java/com/zy/crm/manager/entity/PriOnline2.java
@@ -150,6 +150,47 @@
     @ApiModelProperty(value= "")
     private String form;
 
+    /**
+     * 闆嗘垚椤圭洰璐ф灦鏍镐环鐘舵��
+     */
+    @ApiModelProperty(value = "鐘舵�� 3: 瀹屾垚鏍镐环 2: 寮�濮嬫牳浠� 1: 绛夊緟鏍镐环  0: 鍒濆  ")
+    private Integer status2;
+
+    /**
+     * 鑺傜偣璐熻矗浜�
+     */
+    @ApiModelProperty(value = "鍓痯lanId")
+    @TableField("assistant_plan_id")
+    private Long assistantPlanId;
+
+    /**
+     * 鑺傜偣璐熻矗浜�
+     */
+    @ApiModelProperty(value = "涓籶lanId")
+    @TableField("host_plan_id")
+    private Long hostPlanId;
+
+    /**
+     * 鑺傜偣璐熻矗浜�
+     */
+    @ApiModelProperty(value = "鍓痯lanId")
+    @TableField("assistant_pri_id")
+    private Long assistantPriId;
+
+    /**
+     * 鑺傜偣璐熻矗浜�
+     */
+    @ApiModelProperty(value = "涓籶lanId")
+    @TableField("host_pri_id")
+    private Long hostPriId;
+
+    /**
+     * 鑺傜偣璐熻矗浜�
+     */
+    @ApiModelProperty(value = "涓籶lanId")
+    @TableField("assistant_host_sign")
+    private Integer assistantHostSign;
+
     public PriOnline2() {}
 
     public PriOnline2(String title, String sheetData, Date createTime, String filepath,Integer settle,Integer settleSize) {
@@ -180,6 +221,20 @@
                 return "瀹℃壒閫氳繃";
             default:
                 return String.valueOf(this.settle);
+        }
+    }
+
+    public String getAssistantHostSign$() {
+        if (null == this.assistantHostSign) {
+            return null;
+        }
+        switch (this.assistantHostSign) {
+            case 1:
+                return "鍓祦绋�";
+            case 0:
+                return "涓绘祦绋�";
+            default:
+                return String.valueOf(this.assistantHostSign);
         }
     }
 
@@ -262,15 +317,50 @@
         return null;
     }
 
-    public String getStatus$() {
-        if (null == this.status){ return null; }
-        switch (this.status){
+    public String getStatusAll$(){
+        PlanService planService = SpringUtils.getBean(PlanService.class);
+        Plan plan = planService.selectById(this.itemId);
+        if (plan.getStatus2()>3 || (!Cools.isEmpty(this.getAssistantHostSign()) && this.getAssistantHostSign()==1)){
+            return getStatus$();
+        }else {
+            return "闆嗘垚"+getStatus$()+"/"+"璐ф灦"+getStatus2$();
+        }
+
+    }
+
+    public String getStatus$(){
+        PlanService planService = SpringUtils.getBean(PlanService.class);
+        Plan plan = planService.selectById(this.itemId);
+        if (null == plan.getStatus()){ return null; }
+        switch (plan.getStatus()){
+            case 3:
+                return "瀹屾垚鏍镐环";
+            case 2:
+                return "寮�濮嬫牳浠�";
             case 1:
-                return "宸插畬鎴�";
+                return "绛夊緟鏍镐环";
             case 0:
-                return "鏈畬鎴�";
+                return "鍒濆";
             default:
-                return String.valueOf(this.status);
+                return String.valueOf(plan.getStatus());
+        }
+    }
+
+    public String getStatus2$(){
+        PlanService planService = SpringUtils.getBean(PlanService.class);
+        Plan plan = planService.selectById(this.itemId);
+        if (null == plan.getStatus2()){ return null; }
+        switch (plan.getStatus2()){
+            case 3:
+                return "瀹屾垚鏍镐环";
+            case 2:
+                return "寮�濮嬫牳浠�";
+            case 1:
+                return "绛夊緟鏍镐环";
+            case 0:
+                return "鍒濆";
+            default:
+                return String.valueOf(plan.getStatus2());
         }
     }
 
diff --git a/src/main/java/com/zy/crm/manager/entity/PriOnline2Foll.java b/src/main/java/com/zy/crm/manager/entity/PriOnline2Foll.java
new file mode 100644
index 0000000..eadc8b9
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/entity/PriOnline2Foll.java
@@ -0,0 +1,75 @@
+package com.zy.crm.manager.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.crm.manager.service.PriOnline2Service;
+import com.zy.crm.system.entity.User;
+import com.zy.crm.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@TableName("man_pri_online2_foll")
+public class PriOnline2Foll implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 瑙勫垝鍗�
+     */
+    @ApiModelProperty(value= "瑙勫垝鍗�")
+    @TableField("pri_online2_id")
+    private Long priOnline2Id;
+
+    /**
+     * 璺熻繘浜�
+     */
+    @ApiModelProperty(value= "璺熻繘浜�")
+    @TableField("user_id")
+    private Long userId;
+
+    public PriOnline2Foll() {}
+
+    public PriOnline2Foll(Long priOnline2Id, Long userId) {
+        this.priOnline2Id = priOnline2Id;
+        this.userId = userId;
+    }
+
+//    PlanFoll planFoll = new PlanFoll(
+//            null,    // 瑙勫垝鍗�
+//            null    // 璺熻繘浜篬闈炵┖]
+//    );
+
+    public String getPriOnline2Id$(){
+        PriOnline2Service service = SpringUtils.getBean(PriOnline2Service.class);
+        PriOnline2 priOnline2 = service.selectById(this.priOnline2Id);
+        if (!Cools.isEmpty(priOnline2)){
+            return String.valueOf(priOnline2.getTemplateName());
+        }
+        return null;
+    }
+
+    public String getUserId$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.userId);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+
+}
diff --git a/src/main/java/com/zy/crm/manager/entity/ReimburseOnlineDetl.java b/src/main/java/com/zy/crm/manager/entity/ReimburseOnlineDetl.java
index e73a8f9..3ddc816 100644
--- a/src/main/java/com/zy/crm/manager/entity/ReimburseOnlineDetl.java
+++ b/src/main/java/com/zy/crm/manager/entity/ReimburseOnlineDetl.java
@@ -68,70 +68,70 @@
      */
     @ApiModelProperty(value= "绋庣巼")
     @TableField("tax_rate")
-    private Long taxRate;
+    private Double taxRate;
 
     /**
      * 鏈◣鏈竵閲戦
      */
     @ApiModelProperty(value= "鏈◣鏈竵閲戦")
     @TableField("untaxed_amount_in_local_currency")
-    private Long untaxedAmountInLocalCurrency;
+    private Double untaxedAmountInLocalCurrency;
 
     /**
      * 鏈◣閲戦
      */
     @ApiModelProperty(value= "鏈◣閲戦")
     @TableField("untaxed_amount")
-    private Long untaxedAmount;
+    private Double untaxedAmount;
 
     /**
      * 绋庨
      */
     @ApiModelProperty(value= "绋庨")
     @TableField("tax_amount")
-    private Long taxAmount;
+    private Double taxAmount;
 
     /**
      * 鍙戠エ閲戦
      */
     @ApiModelProperty(value= "鍙戠エ閲戦")
     @TableField("invoice_value")
-    private Long invoiceValue;
+    private Double invoiceValue;
 
     /**
      * 鍙戠エ鏈竵閲戦
      */
     @ApiModelProperty(value= "鍙戠エ鏈竵閲戦")
     @TableField("invoice_amount_in_local_currency")
-    private Long invoiceAmountInLocalCurrency;
+    private Double invoiceAmountInLocalCurrency;
 
     /**
      * 鎶ラ攢姣斾緥
      */
     @ApiModelProperty(value= "鎶ラ攢姣斾緥")
     @TableField("reimbursement_ratio")
-    private Long reimbursementRatio;
+    private Double reimbursementRatio;
 
     /**
      * 鎶ラ攢閲戦
      */
     @ApiModelProperty(value= "鎶ラ攢閲戦")
     @TableField("reimbursement_amount")
-    private Long reimbursementAmount;
+    private Double reimbursementAmount;
 
     /**
      * 鎶ラ攢鏈竵閲戦
      */
     @ApiModelProperty(value= "鎶ラ攢鏈竵閲戦")
     @TableField("reimbursement_amount_in_local_currency")
-    private Long reimbursementAmountInLocalCurrency;
+    private Double reimbursementAmountInLocalCurrency;
 
     /**
      * 鍑虹撼纭閲戦
      */
     @ApiModelProperty(value= "鍑虹撼纭閲戦")
     @TableField("cashier_confirmation_amount")
-    private Long cashierConfirmationAmount;
+    private Double cashierConfirmationAmount;
 
     /**
      * 鍑虹撼甯佺
@@ -201,7 +201,7 @@
 
     public ReimburseOnlineDetl() {}
 
-    public ReimburseOnlineDetl(String occupation,Integer expenseType,Integer userId,Integer deptId,Integer hostId,Long orderId,Long taxRate,Long untaxedAmountInLocalCurrency,Long untaxedAmount,Long taxAmount,Long invoiceValue,Long invoiceAmountInLocalCurrency,Long reimbursementRatio,Long reimbursementAmount,Long reimbursementAmountInLocalCurrency,Long cashierConfirmationAmount,Integer cashierCurrency,Date departureTime,Date updateTime,Integer updateUserId,String updateUserName,Date creationTime,Integer creationUserId,String creationUserName,Integer reimburseId) {
+    public ReimburseOnlineDetl(String occupation,Integer expenseType,Integer userId,Integer deptId,Integer hostId,Long orderId,Double taxRate,Double untaxedAmountInLocalCurrency,Double untaxedAmount,Double taxAmount,Double invoiceValue,Double invoiceAmountInLocalCurrency,Double reimbursementRatio,Double reimbursementAmount,Double reimbursementAmountInLocalCurrency,Double cashierConfirmationAmount,Integer cashierCurrency,Date departureTime,Date updateTime,Integer updateUserId,String updateUserName,Date creationTime,Integer creationUserId,String creationUserName,Integer reimburseId) {
         this.occupation = occupation;
         this.expenseType = expenseType;
         this.userId = userId;
@@ -231,16 +231,16 @@
     public ReimburseOnlineDetl(Integer reminburseCostTypeId) {
         this.occupation = "";
         this.expenseType = reminburseCostTypeId;
-        this.taxRate = (long)0.0;
-        this.untaxedAmountInLocalCurrency = (long)0.0;
-        this.untaxedAmount = (long)0.0;
-        this.taxAmount = (long)0.0;
-        this.invoiceValue = (long)0.0;
-        this.invoiceAmountInLocalCurrency = (long)0.0;
-        this.reimbursementRatio = (long)0.0;
-        this.reimbursementAmount = (long)0.0;
-        this.reimbursementAmountInLocalCurrency = (long)0.0;
-        this.cashierConfirmationAmount = (long)0.0;
+        this.taxRate = 0.0;
+        this.untaxedAmountInLocalCurrency = 0.0;
+        this.untaxedAmount = 0.0;
+        this.taxAmount = 0.0;
+        this.invoiceValue = 0.0;
+        this.invoiceAmountInLocalCurrency = 0.0;
+        this.reimbursementRatio = 0.0;
+        this.reimbursementAmount = 0.0;
+        this.reimbursementAmountInLocalCurrency = 0.0;
+        this.cashierConfirmationAmount = 0.0;
     }
 
 
@@ -274,4 +274,30 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.creationTime);
     }
 
+    public void setTaxRate(String taxRate){
+        String[] splitTaxRate = taxRate.split("%");
+        this.taxRate=Double.parseDouble(splitTaxRate[0]);
+    }
+
+    public void setTaxRate(Double taxRate){
+        this.taxRate=taxRate;
+    }
+
+    public String getTaxRate$(){
+        return taxRate.toString()+"%";
+    }
+
+    public void setReimbursementRatio(String reimbursementRatio){
+        String[] splitReimbursementRatio = reimbursementRatio.split("%");
+        this.reimbursementRatio=Double.parseDouble(splitReimbursementRatio[0]);
+    }
+
+    public void setReimbursementRatio(Double reimbursementRatio){
+        this.reimbursementRatio=reimbursementRatio;
+    }
+
+    public String getReimbursementRatio$(){
+        return reimbursementRatio.toString()+"%";
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/zy/crm/manager/mapper/AllFollMapper.java b/src/main/java/com/zy/crm/manager/mapper/AllFollMapper.java
new file mode 100644
index 0000000..38d39c4
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/mapper/AllFollMapper.java
@@ -0,0 +1,12 @@
+package com.zy.crm.manager.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.crm.manager.entity.AllFoll;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface AllFollMapper extends BaseMapper<AllFoll> {
+
+}
diff --git a/src/main/java/com/zy/crm/manager/mapper/PriOnline2FollMapper.java b/src/main/java/com/zy/crm/manager/mapper/PriOnline2FollMapper.java
new file mode 100644
index 0000000..bc0e0aa
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/mapper/PriOnline2FollMapper.java
@@ -0,0 +1,12 @@
+package com.zy.crm.manager.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.crm.manager.entity.PriOnline2Foll;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface PriOnline2FollMapper extends BaseMapper<PriOnline2Foll> {
+
+}
diff --git a/src/main/java/com/zy/crm/manager/mapper/PriOnline2Mapper.java b/src/main/java/com/zy/crm/manager/mapper/PriOnline2Mapper.java
index 13c70af..6749dbf 100644
--- a/src/main/java/com/zy/crm/manager/mapper/PriOnline2Mapper.java
+++ b/src/main/java/com/zy/crm/manager/mapper/PriOnline2Mapper.java
@@ -15,5 +15,7 @@
 public interface PriOnline2Mapper extends BaseMapper<PriOnline2> {
 
     List<PriOnline2> listByPage(Page<PriOnline2> page, @Param("userIds") ArrayList<Long> userIds , @Param("condition") String condition);
+    List<PriOnline2> listByAll( @Param("userId") Long userId );
+    Integer listByAllTotal( @Param("userId") Long userId );
 
 }
diff --git a/src/main/java/com/zy/crm/manager/service/AllFollService.java b/src/main/java/com/zy/crm/manager/service/AllFollService.java
new file mode 100644
index 0000000..91f158d
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/service/AllFollService.java
@@ -0,0 +1,8 @@
+package com.zy.crm.manager.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.crm.manager.entity.AllFoll;
+
+public interface AllFollService extends IService<AllFoll> {
+
+}
diff --git a/src/main/java/com/zy/crm/manager/service/PriOnline2FollService.java b/src/main/java/com/zy/crm/manager/service/PriOnline2FollService.java
new file mode 100644
index 0000000..99fa2d7
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/service/PriOnline2FollService.java
@@ -0,0 +1,8 @@
+package com.zy.crm.manager.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.crm.manager.entity.PriOnline2Foll;
+
+public interface PriOnline2FollService extends IService<PriOnline2Foll> {
+
+}
diff --git a/src/main/java/com/zy/crm/manager/service/PriOnline2Service.java b/src/main/java/com/zy/crm/manager/service/PriOnline2Service.java
index 86ba431..f2e9126 100644
--- a/src/main/java/com/zy/crm/manager/service/PriOnline2Service.java
+++ b/src/main/java/com/zy/crm/manager/service/PriOnline2Service.java
@@ -5,9 +5,12 @@
 import com.zy.crm.manager.entity.PriOnline2;
 
 import java.util.ArrayList;
+import java.util.List;
 
 public interface PriOnline2Service extends IService<PriOnline2> {
 
     Page<PriOnline2> listByPage(Page<PriOnline2> page, ArrayList<Long> userIds , String condition);
+    List<PriOnline2> listByAll(Long userId);
+    Integer listByAllTotal(Long userId);
 
 }
diff --git a/src/main/java/com/zy/crm/manager/service/impl/AllFollServiceImpl.java b/src/main/java/com/zy/crm/manager/service/impl/AllFollServiceImpl.java
new file mode 100644
index 0000000..9c93189
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/service/impl/AllFollServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.crm.manager.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.crm.manager.entity.AllFoll;
+import com.zy.crm.manager.mapper.AllFollMapper;
+import com.zy.crm.manager.service.AllFollService;
+import org.springframework.stereotype.Service;
+
+@Service("allFollService")
+public class AllFollServiceImpl extends ServiceImpl<AllFollMapper, AllFoll> implements AllFollService {
+
+}
diff --git a/src/main/java/com/zy/crm/manager/service/impl/PriOnline2FollServiceImpl.java b/src/main/java/com/zy/crm/manager/service/impl/PriOnline2FollServiceImpl.java
new file mode 100644
index 0000000..ba1bdeb
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/service/impl/PriOnline2FollServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.crm.manager.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.crm.manager.entity.PriOnline2Foll;
+import com.zy.crm.manager.mapper.PriOnline2FollMapper;
+import com.zy.crm.manager.service.PriOnline2FollService;
+import org.springframework.stereotype.Service;
+
+@Service("priOnline2FollService")
+public class PriOnline2FollServiceImpl extends ServiceImpl<PriOnline2FollMapper, PriOnline2Foll> implements PriOnline2FollService {
+
+}
diff --git a/src/main/java/com/zy/crm/manager/service/impl/PriOnline2ServiceImpl.java b/src/main/java/com/zy/crm/manager/service/impl/PriOnline2ServiceImpl.java
index c1bf5d8..b9e4276 100644
--- a/src/main/java/com/zy/crm/manager/service/impl/PriOnline2ServiceImpl.java
+++ b/src/main/java/com/zy/crm/manager/service/impl/PriOnline2ServiceImpl.java
@@ -8,6 +8,7 @@
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.List;
 
 @Service("priOnline2Service")
 public class PriOnline2ServiceImpl extends ServiceImpl<PriOnline2Mapper, PriOnline2> implements PriOnline2Service {
@@ -16,4 +17,14 @@
     public Page<PriOnline2> listByPage(Page<PriOnline2> page, ArrayList<Long> userIds, String condition) {
         return page.setRecords(this.baseMapper.listByPage(page, userIds, condition));
     }
+
+    @Override
+    public List<PriOnline2> listByAll(Long userId) {
+        return this.baseMapper.listByAll(userId);
+    }
+
+    @Override
+    public Integer listByAllTotal(Long userId) {
+        return this.baseMapper.listByAllTotal(userId);
+    }
 }
diff --git a/src/main/resources/mapper/AllFollMapper.xml b/src/main/resources/mapper/AllFollMapper.xml
new file mode 100644
index 0000000..9e6a7b3
--- /dev/null
+++ b/src/main/resources/mapper/AllFollMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.crm.manager.mapper.AllFollMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.crm.manager.entity.AllFoll">
+        <id column="id" property="id" />
+        <result column="plan_id" property="planId" />
+        <result column="user_id" property="userId" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/PlanMapper.xml b/src/main/resources/mapper/PlanMapper.xml
index 0d63880..631763e 100644
--- a/src/main/resources/mapper/PlanMapper.xml
+++ b/src/main/resources/mapper/PlanMapper.xml
@@ -36,6 +36,10 @@
         <result column="memo" property="memo" />
         <result column="user_xml_sel_phone" property="userXmlSelPhone" />
         <result column="director" property="director" />
+        <result column="status2" property="status2" />
+        <result column="assistant_plan_id" property="assistantPlanId" />
+        <result column="host_plan_id" property="hostPlanId" />
+        <result column="assistant_host_sign" property="assistantHostSign" />
 
     </resultMap>
 
diff --git a/src/main/resources/mapper/PriOnline2FollMapper.xml b/src/main/resources/mapper/PriOnline2FollMapper.xml
new file mode 100644
index 0000000..8bf3b61
--- /dev/null
+++ b/src/main/resources/mapper/PriOnline2FollMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.crm.manager.mapper.PriOnline2FollMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.crm.manager.entity.PriOnline2Foll">
+        <id column="id" property="id" />
+        <result column="pri_online2_id" property="priOnline2Id" />
+        <result column="user_id" property="userId" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/PriOnline2Mapper.xml b/src/main/resources/mapper/PriOnline2Mapper.xml
index d1a7bd1..dee724a 100644
--- a/src/main/resources/mapper/PriOnline2Mapper.xml
+++ b/src/main/resources/mapper/PriOnline2Mapper.xml
@@ -19,6 +19,11 @@
         <result column="check_data" property="checkData" />
         <result column="settle" property="settle" />
         <result column="settle_size" property="settleSize" />
+        <result column="assistant_plan_id" property="assistantPlanId" />
+        <result column="host_plan_id" property="hostPlanId" />
+        <result column="assistant_pri_id" property="assistantPriId" />
+        <result column="host_pri_id" property="hostPriId" />
+        <result column="assistant_host_sign" property="assistantHostSign" />
     </resultMap>
 
     <!-- 鏌ヨ缁撴灉涓嶅寘鍚玡xcel鏁版嵁data锛屼互鍏嶇粨鏋滈泦杩囧ぇ -->
@@ -36,6 +41,14 @@
         <result column="update_time" property="updateTime" />
         <result column="settle" property="settle" />
         <result column="settle_size" property="settleSize" />
+        <result column="assistant_plan_id" property="assistantPlanId" />
+        <result column="host_plan_id" property="hostPlanId" />
+        <result column="assistant_host_sign" property="assistantHostSign" />
+        <result column="assistant_plan_id" property="assistantPlanId" />
+        <result column="host_plan_id" property="hostPlanId" />
+        <result column="assistant_pri_id" property="assistantPriId" />
+        <result column="host_pri_id" property="hostPriId" />
+        <result column="assistant_host_sign" property="assistantHostSign" />
     </resultMap>
 
     <select id="listByPage" resultMap="NoDataResultMap">
@@ -62,4 +75,36 @@
         ORDER BY id DESC
     </select>
 
+    <select id="listByAll" resultMap="NoDataResultMap">
+        SELECT
+        *
+        FROM man_pri_online2 mp
+        WHERE 1=1
+        and
+            mp.id in
+            (
+            select
+            pri_online2_id
+            from man_pri_online2_foll
+            where 1=1
+            and user_id = #{userId}
+            )
+        ORDER BY id DESC
+    </select>
+
+    <select id="listByAllTotal" resultType="java.lang.Integer">
+        SELECT
+        count (1)
+        FROM man_pri_online2 mp
+        WHERE 1=1
+        and
+            mp.id in
+            (
+            select
+            pri_online2_id
+            from man_pri_online2_foll
+            where 1=1
+            and user_id = #{userId}
+            )
+    </select>
 </mapper>
diff --git a/src/main/webapp/static/js/plan/plan.js b/src/main/webapp/static/js/plan/plan.js
index ce7b0d1..eb46181 100644
--- a/src/main/webapp/static/js/plan/plan.js
+++ b/src/main/webapp/static/js/plan/plan.js
@@ -139,7 +139,7 @@
         skin: 'line',
         cols: [[
             {type: 'checkbox'}
-            // ,{field: 'id', align: 'center',title: 'ID'}
+            ,{field: 'id', align: 'center',title: 'ID'}
             // ,{field: 'hostId$', align: 'center',title: '鎵�灞炲晢鎴�'}
             ,{field: 'userId$', align: 'left',title: '涓氬姟鍛�',hide: false, width: 100}
             ,{field: 'planType$', align: 'left',title: '涓氬姟绫诲瀷', width: 150,hide: false}
@@ -196,12 +196,17 @@
             ,{field: 'settle$', align: 'center',title: '杩涘害', width: 150}
             // ,{field: 'settleMsg', align: 'center',title: '瀹℃牳杩涘害'}
             // ,{field: 'comment', align: 'center',title: '璇勮'}
-            ,{field: 'status$', align: 'center',title: '鐘舵��'}
+            ,{field: 'statusAll$', align: 'center',title: '鐘舵��'}
             ,{field: 'createTime$', align: 'left',title: '娣诲姞鏃ユ湡', width: 160, hide: true}
             ,{field: 'updateBy$', align: 'left',title: '淇敼浜�', width: 100}
             ,{field: 'updateTime$', align: 'left',title: '淇敼鏃堕棿', hide: true}
             ,{field: 'memo', align: 'left',title: '娉ㄩ噴', hide: true}
-
+            ,{field: 'center', align: 'left',title: '鍏宠仈娴佺▼', toolbar: '#tbLook', minWidth: 160, hide: false}
+            ,{field: 'assistantHostSign$', align: 'left',title: '涓诲壇鏍囪', hide: false}
+            ,{field: 'assistantHostSign', align: 'left',title: '涓诲壇鏍囪', hide: true}
+            ,{field: 'hostPlanId', align: 'left',title: '涓籌D', hide: true}
+            ,{field: 'assistantPlanId', align: 'left',title: '鍓疘D', hide: true}
+            // ,{field: 'assistantPlanIdSignType', align: 'left',title: '闆嗘垚璐ф灦鏍囧織', hide: true}
             ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 340}
         ]],
         request: {
@@ -597,6 +602,9 @@
                     approvalEnd(data.id);
                 });
                 break;
+            case 'assistantPlan':
+                assistantPlan(data);
+                break;
             case 'edit':
                 showEditModel(data);
                 break;
@@ -604,18 +612,22 @@
                 del([data.id]);
                 break;
             case "uploadLink":
+                var planIdSign = data.id;
+                if (data.assistantHostSign==1){
+                    planIdSign = data.hostPlanId;
+                }
                 // 鎵撳紑寮圭獥
                 // 鏋勫缓甯﹀弬鏁扮殑鍐呭
                 layer.open({
                     type: 1,
-                    title: '涓婁紶鏂囦欢-'+data.id,
+                    title: '涓婁紶鏂囦欢-'+planIdSign,
                     content: $('#myModal')
                 });
                 // 鑾峰彇璺緞涓嬬殑鏂囦欢鍒楄〃锛屼娇鐢� jQuery 鐨� ajax 鏂规硶
                 $.ajax({
                     url: '/plan/view/file/auth',
                     data:{
-                        planId:data.id
+                        planId:planIdSign
                     },
                     success: function(response) {
                         if (response.code==200){
@@ -648,6 +660,99 @@
                     },
                     error: function() {
                         console.log('Failed to get file list.');
+                    }
+                });
+                break;
+            case "look":
+                var $a = $(obj.tr).find('a[lay-event="look"]');
+                var offset = $a.offset();
+                var top2 = offset.top;
+                var left = offset.left;
+                layer.open({
+                    type: 1,
+                    title: false,
+                    area: '2100px',
+                    offset: [top2 + 'px', (left - 1430 + $a.outerWidth()) + 'px'],
+                    shade: .01,
+                    shadeClose: true,
+                    fixed: false,
+                    content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>',
+                    success: function (layero) {
+                        table.render({
+                            elem: '#lookSSXMTable',
+                            headers: {token: localStorage.getItem('token')},
+                            url: baseUrl+'/plan/assistantPlan/view/auth',
+                            where: {
+                                hostPlanId: data.id
+                            },
+                            page: true,
+                            cellMinWidth: 100,
+                            cols: [[
+                                {field: 'id', align: 'center',title: 'ID'}
+                                ,{field: 'userId$', align: 'left',title: '涓氬姟鍛�',hide: false, width: 100}
+                                ,{field: 'planType$', align: 'left',title: '涓氬姟绫诲瀷', width: 150,hide: false}
+                                ,{
+                                    field: 'name',
+                                    align: 'left',
+                                    title: '鍞墠瑙勫垝鐢宠鍗曞悕绉�',
+                                    width: 220,
+                                    style: 'cursor:pointer',
+                                    event: 'more',
+                                    hide: false
+                                }
+                                ,{field: 'uuid', align: 'left',title: '瑙勫垝鍗曞彿', width: 100,hide: false}
+                                ,{
+                                    field: 'planNeed$',
+                                    align: 'left',
+                                    title: '鎵�闇�',
+                                    templet:function(d){
+                                        return emptyShow(d.planNeed$)
+                                    },
+                                    hide: false
+                                }
+                                ,{field: 'deptId$', align: 'left',title: '鎵�灞為儴闂�',hide: true}
+                                ,{field: 'planner$', align: 'left',title: '瑙勫垝鍛�',hide: false, width: 100}
+                                ,{
+                                    field: 'orderId$',
+                                    align: 'left',
+                                    title: '璺熻釜椤圭洰',
+                                    width: 220,
+                                    style: 'cursor:pointer',
+                                    event: 'orderMore',hide: false
+                                }
+                                ,{field: 'appleTime$', align: 'left',title: '鐢宠鏃ユ湡', hide: false}
+                                ,{field: 'settle$', align: 'center',title: '杩涘害', width: 150}
+                                ,{field: 'statusAll$', align: 'center',title: '鐘舵��'}
+                                ,{field: 'createTime$', align: 'left',title: '娣诲姞鏃ユ湡', width: 160, hide: true}
+                                ,{field: 'updateBy$', align: 'left',title: '淇敼浜�', width: 100}
+                                ,{field: 'updateTime$', align: 'left',title: '淇敼鏃堕棿', hide: true}
+                                ,{field: 'memo', align: 'left',title: '娉ㄩ噴', hide: true}
+                                ,{field: 'assistantHostSign', align: 'left',title: '涓诲壇鏍囪', hide: true}
+                                ,{field: 'hostPlanId', align: 'left',title: '涓籌D', hide: true}
+                                ,{field: 'assistantPlanId', align: 'left',title: '鍓疘D', hide: true}
+                                ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 340}
+                            ]],
+                            request: {
+                                pageName: 'curr',
+                                pageSize: 'limit'
+                            },
+                            parseData: function (res) {
+                                console.log(res)
+                                return {
+                                    'code': res.code,
+                                    'msg': res.msg,
+                                    'count': res.data.total,
+                                    'data': res.data.records
+                                }
+                            },
+                            response: {
+                                statusCode: 200
+                            },
+                            done: function () {
+                                $(layero).find('.layui-table-view').css('margin', '0');
+                            },
+                            size: ''
+                        });
                     }
                 });
                 break;
@@ -811,6 +916,36 @@
         });
     }
 
+    /* 鏂板缓 */
+    function assistantPlan(data) {
+        layer.confirm('纭畾瑕佹柊寤鸿揣鏋惰鍒掑鎵瑰悧锛�', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/plan/assistantPlan/add/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {
+                    hostPlanId: data.id
+                },
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
     /* 鍒犻櫎 */
     function del(ids) {
         layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
diff --git a/src/main/webapp/static/js/priOnline2/priOnline.js b/src/main/webapp/static/js/priOnline2/priOnline.js
index de4daa2..0a90cb0 100644
--- a/src/main/webapp/static/js/priOnline2/priOnline.js
+++ b/src/main/webapp/static/js/priOnline2/priOnline.js
@@ -29,13 +29,14 @@
 
     // 鏍戝舰鍥�
     var organizationTree;
-    window.loadTree = function (condition) {
+    window.loadTree = function (condition,allSwitch) {
         var loadIndex = layer.load(2);
         $.ajax({
             url: baseUrl + "/dept/user/tree/auth",
             headers: {'token': localStorage.getItem('token')},
             data: {
-                'condition': condition
+                'condition': condition,
+                'allSwitch': allSwitch
             },
             method: 'POST',
             success: function (res) {
@@ -104,7 +105,7 @@
                 hide: false
             }
             , {field: 'itemId', align: 'center', title: '瑙勫垝鍗曞彿', hide: true}
-            , {field: 'status$', align: 'center', title: '鐘舵��', hide: false}
+            , {field: 'statusAll$', align: 'center',title: '鐘舵��'}
             // ,{field: 'memberId$', align: 'center',title: ''}
             , {
                 field: 'settle$',
@@ -121,6 +122,10 @@
             , {field: 'createTime$', align: 'center', title: '鍒涘缓鏃堕棿', hide: true}
             , {field: 'updateUserId$', align: 'center', title: '鏇存柊浜哄憳', hide: false}
             , {field: 'updateTime$', align: 'center', title: '鏇存柊鏃堕棿', hide: false}
+            ,{field: 'assistantHostSign$', align: 'left',title: '涓诲壇鏍囪', hide: false}
+            ,{field: 'assistantHostSign', align: 'left',title: '涓诲壇鏍囪', hide: true}
+            ,{field: 'hostPlanId', align: 'left',title: '涓籌D', hide: true}
+            ,{field: 'assistantPlanId', align: 'left',title: '鍓疘D', hide: true}
             , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 350}
         ]],
         request: {
@@ -375,7 +380,7 @@
                     console.log(data)
                     layer.close(i);
                     // 鎸囧畾妯℃澘
-                    if ((data.settle === 1 && data.settleSize===3) || (data.settle===2 && data.settleSize===4)) {
+                    if (((data.settle === 1 && data.settleSize===3) || (data.settle===2 && data.settleSize===4)) && data.assistantHostSign==0) {
                         admin.open({
                             type: 1,
                             area: '300px',
@@ -600,17 +605,20 @@
             case "uploadLink":
                 // 鎵撳紑寮圭獥
                 // 鏋勫缓甯﹀弬鏁扮殑鍐呭
-                console.log(data)
+                var planIdSign = data.id;
+                if (data.assistantHostSign==1){
+                    planIdSign = data.hostPlanId;
+                }
                 layer.open({
                     type: 1,
-                    title: '涓婁紶鏂囦欢-'+data.itemId,
+                    title: '涓婁紶鏂囦欢-'+planIdSign,
                     content: $('#myModal')
                 });
                 // 鑾峰彇璺緞涓嬬殑鏂囦欢鍒楄〃锛屼娇鐢� jQuery 鐨� ajax 鏂规硶
                 $.ajax({
                     url: '/plan/view/file/auth',
                     data:{
-                        planId:data.itemId
+                        planId:planIdSign
                     },
                     success: function(response) {
                         if (response.code==200){
@@ -695,41 +703,41 @@
         });
     }
 
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel2(mData) {
-        admin.open({
-            type: 1,
-            area: '800px',
-            title: '鎺ュ彇' + '鏍镐环',
-            content: $('#editDialogHJ').html(),
-            success: function (layero, dIndex) {
-                let loadNameXml = loadNameXmlSel()
-                form.val('detailHJ', mData);
-                form.on('submit(editSubmitHJ)', function (data) {
-                    data.field.id = loadNameXml.getValue()[0] ? loadNameXml.getValue()[0].id : null;
-                    $.ajax({
-                        url: baseUrl+"/priOnline2/HJ/add/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload()
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
+    // /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    // function showEditModel2(mData) {
+    //     admin.open({
+    //         type: 1,
+    //         area: '800px',
+    //         title: '鎺ュ彇' + '鏍镐环',
+    //         content: $('#editDialogHJ').html(),
+    //         success: function (layero, dIndex) {
+    //             let loadNameXml = loadNameXmlSel()
+    //             form.val('detailHJ', mData);
+    //             form.on('submit(editSubmitHJ)', function (data) {
+    //                 data.field.id = loadNameXml.getValue()[0] ? loadNameXml.getValue()[0].id : null;
+    //                 $.ajax({
+    //                     url: baseUrl+"/priOnline2/HJ/add/auth",
+    //                     headers: {'token': localStorage.getItem('token')},
+    //                     data: data.field,
+    //                     method: 'POST',
+    //                     success: function (res) {
+    //                         if (res.code === 200){
+    //                             layer.close(dIndex);
+    //                             layer.msg(res.msg, {icon: 1});
+    //                             tableReload()
+    //                         } else if (res.code === 403){
+    //                             top.location.href = baseUrl+"/";
+    //                         }else {
+    //                             layer.msg(res.msg, {icon: 2});
+    //                         }
+    //                     }
+    //                 })
+    //             });
+    //             $(layero).children('.layui-layer-content').css('overflow', 'visible');
+    //             layui.form.render('select');
+    //         }
+    //     });
+    // }
 
     //鏇存柊form
     function showEditForm(mData) {
@@ -824,34 +832,34 @@
         })
     }
 
-    window.loadNameXmlSel = function () {
-        return xmSelect.render({
-            el: '#nameXmlSel',
-            autoRow: true,
-            filterable: true,
-            remoteSearch: true,
-            clickClose: true,
-            radio: true,
-            remoteMethod: function (val, cb, show) {
-                $.ajax({
-                    url: baseUrl + "/priOnline2/HJ/search/auth",
-                    headers: {'token': localStorage.getItem('token')},
-                    data: {
-                        condition: val
-                    },
-                    method: 'POST',
-                    success: function (res) {
-                        if (res.code === 200) {
-                            cb(res.data)
-                        } else {
-                            cb([]);
-                            layer.msg(res.msg, {icon: 2});
-                        }
-                    }
-                });
-            }
-        });
-    }
+    // window.loadNameXmlSel = function () {
+    //     return xmSelect.render({
+    //         el: '#nameXmlSel',
+    //         autoRow: true,
+    //         filterable: true,
+    //         remoteSearch: true,
+    //         clickClose: true,
+    //         radio: true,
+    //         remoteMethod: function (val, cb, show) {
+    //             $.ajax({
+    //                 url: baseUrl + "/priOnline2/HJ/search/auth",
+    //                 headers: {'token': localStorage.getItem('token')},
+    //                 data: {
+    //                     condition: val
+    //                 },
+    //                 method: 'POST',
+    //                 success: function (res) {
+    //                     if (res.code === 200) {
+    //                         cb(res.data)
+    //                     } else {
+    //                         cb([]);
+    //                         layer.msg(res.msg, {icon: 2});
+    //                     }
+    //                 }
+    //             });
+    //         }
+    //     });
+    // }
 
 });
 
diff --git a/src/main/webapp/static/js/reimburseOnline/reimburseOnline.js b/src/main/webapp/static/js/reimburseOnline/reimburseOnline.js
index 8ce8423..b0f1f28 100644
--- a/src/main/webapp/static/js/reimburseOnline/reimburseOnline.js
+++ b/src/main/webapp/static/js/reimburseOnline/reimburseOnline.js
@@ -330,18 +330,18 @@
                                 {field: 'occupation', title: '浜嬬敱', width: 200},
                                 // {field: 'expenseType', title: '璐圭敤绫诲瀷', width: 100},
                                 {field: 'expenseType$', title: '璐圭敤绫诲瀷', width: 100},
-                                {field: 'taxRate', title: '绋庣巼', width: 60},
+                                {field: 'taxRate$', title: '绋庣巼', width: 60},
                                 {field: 'untaxedAmountInLocalCurrency', title: '鏈◣鏈竵閲戦', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
                                 {field: 'untaxedAmount', title: '鏈◣閲戦', width: 100},
                                 {field: 'taxAmount', title: '绋庨', width: 60},
                                 {field: 'invoiceValue', title: '鍙戠エ閲戦',  style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
                                 {field: 'invoiceAmountInLocalCurrency', title: '鍙戠エ鏈竵閲戦',  style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
-                                {field: 'reimbursementRatio', title: '鎶ラ攢姣斾緥', width: 100},
+                                {field: 'reimbursementRatio$', title: '鎶ラ攢姣斾緥', width: 100},
                                 {field: 'reimbursementAmount', title: '鎶ラ攢閲戦', width: 100},
                                 {field: 'reimbursementAmountInLocalCurrency', title: '鎶ラ攢鏈竵閲戦', width: 120},
                                 {field: 'cashierConfirmationAmount', title: '鍑虹撼纭閲戦', width: 120},
-                                {field: 'cashierCurrency', title: '鍑虹撼甯佺', width: 100},
-                                {field: 'departureTime', title: '鍑哄彂鏃ユ湡', width: 100},
+                                // {field: 'cashierCurrency', title: '鍑虹撼甯佺', width: 100},
+                                // {field: 'departureTime', title: '鍑哄彂鏃ユ湡', width: 100},
                                 {field: 'cashierConfirmationAmount', title: '鍑虹撼纭閲戦', width: 120},
                                 {field: 'userId', title: '鍒楁敮浜哄憳', width: 120},
                                 {field: 'deptId', title: '鍒楁敮閮ㄩ棬', width: 120},
@@ -467,8 +467,8 @@
                         {field: 'reimbursementAmount', title: '鎶ラ攢閲戦', width: 100, edit: true},
                         {field: 'reimbursementAmountInLocalCurrency', title: '鎶ラ攢鏈竵閲戦', width: 120, edit: true},
                         {field: 'cashierConfirmationAmount', title: '鍑虹撼纭閲戦', width: 120, edit: true},
-                        {field: 'cashierCurrency', title: '鍑虹撼甯佺', width: 100, edit: true},
-                        {field: 'departureTime', title: '鍑哄彂鏃ユ湡', width: 100},
+                        // {field: 'cashierCurrency', title: '鍑虹撼甯佺', width: 100, edit: true},
+                        // {field: 'departureTime', title: '鍑哄彂鏃ユ湡', width: 100},
                         {field: 'cashierConfirmationAmount', title: '鍑虹撼纭閲戦', width: 120, edit: true},
                         {field: 'userId', title: '鍒楁敮浜哄憳', width: 120},
                         {field: 'deptId', title: '鍒楁敮閮ㄩ棬', width: 120},
diff --git a/src/main/webapp/views/plan/plan.html b/src/main/webapp/views/plan/plan.html
index e7e832b..ef58192 100644
--- a/src/main/webapp/views/plan/plan.html
+++ b/src/main/webapp/views/plan/plan.html
@@ -106,6 +106,15 @@
     </div>
 </div>
 
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="tbLook">
+    <span class="layui-text">
+        <a href="javascript:;" lay-event="look">
+            <i class="layui-icon" style="font-size: 12px;">&#xe61a;</i> 鏌ョ湅鍏宠仈娴佺▼
+        </a>
+    </span>
+</script>
+
 <div id="myModal"  style="display: none;">
     <div style="padding: 10px">
         <div class="layui-upload">
@@ -144,6 +153,9 @@
         <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
         <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
     {{# } }}
+    {{# if (d.assistantHostSign == 0 && d.assistantPlanId==0) { }}
+        <a class="layui-btn layui-btn-xs btn-edit" lay-event="assistantPlan">鍒涘缓璐ф灦瑙勫垝浠诲姟</a>
+    {{# } }}
 
 </script>
 
diff --git a/src/main/webapp/views/priOnline2/priOnline.html b/src/main/webapp/views/priOnline2/priOnline.html
index 3bee7d9..5f0b8b2 100644
--- a/src/main/webapp/views/priOnline2/priOnline.html
+++ b/src/main/webapp/views/priOnline2/priOnline.html
@@ -45,10 +45,15 @@
                     </div>
                 </div>
                 <div class="layui-form-item">
+
                     <div class="layui-inline">
                         <div class="layui-input-inline">
                             <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off"
                                    style="border-color: #e1e1e1">
+                        </div>
+                        <label class="layui-form-label">ALL锛�</label>
+                        <div class="layui-input-inline" style="text-align: left">
+                            <input id="allSwitch" name="allSwitch" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
                         </div>
                     </div>
                     <div class="layui-inline">&emsp;
@@ -66,7 +71,7 @@
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
         <button class="layui-btn layui-btn-sm" lay-event="addBlank">鏂板鏍镐环</button>
-        <button class="layui-btn layui-btn-sm" lay-event="addBlank2">鎺ュ彇闆嗘垚鏍镐环浠诲姟</button>
+<!--        <button class="layui-btn layui-btn-sm" lay-event="addBlank2">鎺ュ彇闆嗘垚鏍镐环浠诲姟</button>-->
         <button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="deleteData">鍒犻櫎</button>
     </div>
 </script>

--
Gitblit v1.9.1