From c6e9227208dc46f2f46f046fea0b21bea398a16c Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期六, 07 十月 2023 09:40:15 +0800
Subject: [PATCH] #报销相关

---
 src/main/java/com/zy/crm/manager/service/BusinessTripOtherService.java          |    8 
 src/main/java/com/zy/crm/manager/controller/DashboardController.java            |    6 
 src/main/java/com/zy/crm/manager/controller/BusinessTripController.java         |   14 
 src/main/webapp/views/plan/plan.html                                            |    2 
 src/main/webapp/static/js/businessTrip/businessTrip.js                          |    1 
 src/main/java/com/zy/crm/manager/entity/BusinessTripOther.java                  |  693 ++++++++++++++++++++++
 src/main/java/com/zy/crm/manager/controller/BusinessTripOtherController.java    |  247 +++++++
 src/main/webapp/views/businessTrip/businessTrip.html                            |   14 
 src/main/webapp/static/js/businessTrip/businessTripOther.js                     |  418 +++++++++++++
 src/main/java/com/zy/crm/manager/entity/BusinessTrip.java                       |    7 
 src/main/webapp/views/businessTrip/businessTripOther_more.html                  |  187 ++++++
 src/main/webapp/views/businessTrip/businessTripOther.html                       |  159 +++++
 src/main/java/com/zy/crm/manager/mapper/BusinessTripOtherMapper.java            |   12 
 src/main/java/com/zy/crm/manager/service/impl/BusinessTripOtherServiceImpl.java |   12 
 src/main/resources/mapper/BusinessTripOtherMapper.xml                           |   48 +
 15 files changed, 1,825 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/crm/manager/controller/BusinessTripController.java b/src/main/java/com/zy/crm/manager/controller/BusinessTripController.java
index 1578ccc..697d224 100644
--- a/src/main/java/com/zy/crm/manager/controller/BusinessTripController.java
+++ b/src/main/java/com/zy/crm/manager/controller/BusinessTripController.java
@@ -142,7 +142,12 @@
         businessTrip.setStatus(0);
         businessTrip.setSettle(1);
 
-        User manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+        User manager = new User();
+        try{
+            manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+        }catch (Exception e){
+            manager = getUser();
+        }
 
         businessTrip.setSettleMsg(JSON.toJSONString(SettleDto.initBusiness(manager,getUser())));
 
@@ -245,7 +250,12 @@
             case 1:
                 // 鏈儴闂ㄧ粡鐞嗗鏍�
                 User user = userService.selectById(businessTrip.getUserId());
-                User manager = userService.getDeptManager(getHostId(), user.getDeptId());
+                User manager = new User();
+                try{
+                    manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+                }catch (Exception e){
+                    manager = user;
+                }
                 if (manager.getId().equals(getUserId())) {
 
                     // 淇敼 settle 姝ラ鏁版嵁
diff --git a/src/main/java/com/zy/crm/manager/controller/BusinessTripOtherController.java b/src/main/java/com/zy/crm/manager/controller/BusinessTripOtherController.java
new file mode 100644
index 0000000..8b1f0a0
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/controller/BusinessTripOtherController.java
@@ -0,0 +1,247 @@
+package com.zy.crm.manager.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+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.exception.CoolException;
+import com.zy.crm.common.model.SettleDto;
+import com.zy.crm.common.web.BaseController;
+import com.zy.crm.manager.entity.BusinessTripOther;
+import com.zy.crm.manager.service.BusinessTripOtherService;
+import com.zy.crm.manager.utils.CarNumberUtils;
+import com.zy.crm.manager.utils.TimeCalculatorUtils;
+import com.zy.crm.system.entity.User;
+import com.zy.crm.system.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class BusinessTripOtherController extends BaseController {
+
+    @Autowired
+    private BusinessTripOtherService businessTripOtherService;
+    @Autowired
+    private UserService userService;
+
+    @RequestMapping(value = "/businessTripOther/{id}/auth2")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        BusinessTripOther businessTripOther = businessTripOtherService.selectById(String.valueOf(id));
+        assert businessTripOther != null;
+        JSONObject resultObj = JSON.parseObject(JSON.toJSONString(businessTripOther));
+        // 姝ラ鏉$浉鍏�
+        resultObj.put("step", businessTripOther.getSettle() == 3 ? 0 : businessTripOther.getSettle() + 1);
+        return R.ok().add(resultObj);
+    }
+
+    @RequestMapping(value = "/businessTripOther/list/auth")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<BusinessTripOther> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+//        wrapper.or().eq("member_id",getUserId());
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(businessTripOtherService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+        Long deptId = getDeptId();
+        boolean signUserId = false;
+        boolean signDeptId = false;
+        boolean signHostId = false;
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            if (entry.getKey().equals("dept_id")){
+                signDeptId = true;
+                if (String.valueOf(entry.getValue()).equals("19")){
+                    signHostId = true;
+                }
+            }
+        }
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (val.contains(RANGE_TIME_LINK)){
+                String[] dates = val.split(RANGE_TIME_LINK);
+                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else if (entry.getKey().equals("dept_id")){
+                if (!val.equals("19")){
+                    wrapper.eq(entry.getKey(), val);
+                }
+            } else if (entry.getKey().equals("user_id") && !signDeptId){
+                signUserId = true;
+                wrapper.eq(entry.getKey(), val);
+            } else {
+                wrapper.like(entry.getKey(), val);
+            }
+        }
+        if (!signUserId && !signDeptId){
+            wrapper.eq("user_id", getUserId());
+        }
+        if (signHostId){
+            wrapper.or().eq("host_id",1);
+        }
+    }
+
+    @RequestMapping(value = "/businessTripOther/add/auth")
+    @ManagerAuth(memo = "娣诲姞鍑哄樊鐢宠")
+    public R add(BusinessTripOther businessTripOther) {
+        if (Cools.isEmpty(businessTripOther)){
+            return R.error();
+        }
+        Date now = new Date();
+        businessTripOther.setCarNumber("鏃�");
+        businessTripOther.setKilometers("鏃�");
+        businessTripOther.setBusinessPeersId(System.currentTimeMillis());
+
+        businessTripOther.setBusinessDuration(0.0);
+        businessTripOther.setBusinessTripDays(0);
+        businessTripOther.setUserId(getUserId());
+        businessTripOther.setDeptId(getDeptId());
+        businessTripOther.setCreateTime(now);
+        businessTripOther.setUserId(getUserId());
+        businessTripOther.setUpdateTime(now);
+        businessTripOther.setUpdateId(getUserId());
+        businessTripOther.setStatus(0);
+        businessTripOther.setSettle(1);
+
+        User manager = new User();
+        try{
+            manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+        }catch (Exception e){
+            manager = getUser();
+        }
+        businessTripOther.setSettleMsg(JSON.toJSONString(SettleDto.initBusiness(manager,getUser())));
+
+        businessTripOtherService.insert(businessTripOther);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/businessTripOther/update/auth")
+	@ManagerAuth(memo = "鏇存柊鍑哄樊鐢宠")
+    public R update(BusinessTripOther businessTripOther){
+        if (Cools.isEmpty(businessTripOther) || null==businessTripOther.getId()){
+            return R.error();
+        }
+        Date now = new Date();
+        businessTripOther.setUpdateTime(now);
+        businessTripOther.setUpdateId(getUserId());
+        businessTripOtherService.updateById(businessTripOther);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/businessTripOther/delete/auth")
+    @ManagerAuth(memo = "鍒犻櫎鍑哄樊鐢宠")
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+             businessTripOtherService.deleteById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/businessTripOther/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<BusinessTripOther> wrapper = new EntityWrapper<>();
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("businessTrip"));
+        convert(map, wrapper);
+        List<BusinessTripOther> list = businessTripOtherService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/businessTripOtherQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<BusinessTripOther> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        Page<BusinessTripOther> page = businessTripOtherService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (BusinessTripOther businessTripOther : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", businessTripOther.getId());
+            map.put("value", businessTripOther.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/businessTripOther/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<BusinessTripOther> wrapper = new EntityWrapper<BusinessTripOther>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != businessTripOtherService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(BusinessTripOther.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+    @PostMapping(value = "/businessTripOther/approval/auth")
+    @ManagerAuth
+    public R approvalBusinessTrip(@RequestParam Long planId,
+                                     @RequestParam(required = false) Long plannerId){
+        BusinessTripOther businessTripOther = businessTripOtherService.selectById(planId);
+        assert businessTripOther != null;
+        Date now = new Date();
+        switch (businessTripOther.getSettle()) {
+            case 1:
+                // 鏈儴闂ㄧ粡鐞嗗鏍�
+                User user = userService.selectById(businessTripOther.getUserId());
+                User manager = new User();
+                try{
+                    manager = userService.getDeptManager(getHostId(), getUser().getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+                }catch (Exception e){
+                    manager = user;
+                }
+                if (manager.getId().equals(getUserId())) {
+
+                    // 淇敼 settle 姝ラ鏁版嵁
+                    List<SettleDto> list = JSON.parseArray(businessTripOther.getSettleMsg(), SettleDto.class);
+                    for (SettleDto dto : list) {
+                        switch (dto.getStep()) {
+                            case 1:
+                                dto.setCurr(Boolean.FALSE);
+                                break;
+                            case 2:
+                                dto.setCurr(Boolean.TRUE);
+                                dto.setMsg("閮ㄩ棬缁忕悊" + manager.getNickname() + "瀹℃壒閫氳繃");
+                                dto.setTime(DateUtils.convert(now));
+                                break;
+                            default:
+                                break;
+                        }
+                    }
+                    businessTripOther.setSettleMsg(JSON.toJSONString(list));
+
+                    // 淇敼瑙勫垝鍗曠姸鎬�
+                    businessTripOther.setSettle(2);  // 鐢宠閫氳繃
+                    businessTripOther.setStatus(1);
+                    businessTripOther.setUpdateId(getUserId());
+                    businessTripOther.setUpdateTime(now);
+                    if (!businessTripOtherService.updateById(businessTripOther)) {
+                        throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�");
+                    }
+                } else {
+                    return R.error("鎶辨瓑锛屾偍娌℃湁鎵瑰噯鐨勬潈闄愶紒锛侊紒");
+                }
+                break;
+            default:
+                return R.error();
+        }
+        return R.ok("瀹℃壒鎴愬姛");
+    }
+
+}
diff --git a/src/main/java/com/zy/crm/manager/controller/DashboardController.java b/src/main/java/com/zy/crm/manager/controller/DashboardController.java
index 599402d..633cf6e 100644
--- a/src/main/java/com/zy/crm/manager/controller/DashboardController.java
+++ b/src/main/java/com/zy/crm/manager/controller/DashboardController.java
@@ -137,7 +137,13 @@
     @RequestMapping("/dashboard/popup/auth")
     public R popup(String token) {
         String item = "false";
+        if (Cools.isEmpty(token)){
+            return R.ok(item);
+        }
         User user = getUser(token);
+        if (Cools.isEmpty(user) || Cools.isEmpty(user.getRoleId())){
+            return R.ok(item);
+        }
         if (user.getRoleId()<3){
             item="true";
         }
diff --git a/src/main/java/com/zy/crm/manager/entity/BusinessTrip.java b/src/main/java/com/zy/crm/manager/entity/BusinessTrip.java
index 5ff25c8..4573f0a 100644
--- a/src/main/java/com/zy/crm/manager/entity/BusinessTrip.java
+++ b/src/main/java/com/zy/crm/manager/entity/BusinessTrip.java
@@ -214,6 +214,13 @@
     private Long hostId;
 
     /**
+     * 璺熻釜椤圭洰ID
+     */
+    @ApiModelProperty(value= "璺熻釜椤圭洰ID")
+    @TableField("order_id")
+    private Long orderId;
+
+    /**
      * 鍒涘缓鏃堕棿
      */
     @ApiModelProperty(value= "鍒涘缓鏃堕棿")
diff --git a/src/main/java/com/zy/crm/manager/entity/BusinessTripOther.java b/src/main/java/com/zy/crm/manager/entity/BusinessTripOther.java
new file mode 100644
index 0000000..b2713ce
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/entity/BusinessTripOther.java
@@ -0,0 +1,693 @@
+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.fasterxml.jackson.annotation.JsonFormat;
+import com.zy.crm.manager.utils.TimeCalculatorUtils;
+import com.zy.crm.system.entity.Dept;
+import com.zy.crm.system.entity.Dic;
+import com.zy.crm.system.entity.User;
+import com.zy.crm.system.service.DeptService;
+import com.zy.crm.system.service.DicService;
+import com.zy.crm.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("man_business_trip_other")
+public class BusinessTripOther implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鍑哄樊浜嬬敱
+     */
+    @ApiModelProperty(value= "鍑哄樊浜嬬敱")
+    @TableField("business_trip_reasons")
+    private String businessTripReasons;
+
+    /**
+     * 浜ら�氬伐鍏�
+     */
+    @ApiModelProperty(value= "浜ら�氬伐鍏�")
+    @TableField("business_transportation")
+    private Integer businessTransportation;
+
+    /**
+     * 鍗曠▼寰�杩�
+     */
+    @ApiModelProperty(value= "鍗曠▼寰�杩�")
+    @TableField("business_return")
+    private Integer businessReturn;
+
+    /**
+     * 鍑哄彂鐪�
+     */
+    @ApiModelProperty(value= "鍑哄彂鐪�")
+    @TableField("business_start_province")
+    private String businessStartProvince;
+
+    /**
+     * 鍑哄彂甯�
+     */
+    @ApiModelProperty(value= "鍑哄彂甯�")
+    @TableField("business_start_city")
+    private String businessStartCity;
+
+    /**
+     * 鍑哄彂鍘�
+     */
+    @ApiModelProperty(value= "鍑哄彂鍘�")
+    @TableField("business_start_district")
+    private String businessStartDistrict;
+
+    /**
+     * 鍑哄彂闀�
+     */
+    @ApiModelProperty(value= "鍑哄彂闀�")
+    @TableField("business_start_town")
+    private String businessStartTown;
+
+    /**
+     * 鍑哄彂鍦�
+     */
+    @ApiModelProperty(value= "鍑哄彂鍦�")
+    @TableField("business_start_addr")
+    private String businessStartAddr;
+
+    /**
+     * 鐩殑鐪�
+     */
+    @ApiModelProperty(value= "鐩殑鐪�")
+    @TableField("business_end_province")
+    private String businessEndProvince;
+
+    /**
+     * 鐩殑甯�
+     */
+    @ApiModelProperty(value= "鐩殑甯�")
+    @TableField("business_end_city")
+    private String businessEndCity;
+
+    /**
+     * 鐩殑鍘�
+     */
+    @ApiModelProperty(value= "鐩殑鍘�")
+    @TableField("business_end_district")
+    private String businessEndDistrict;
+
+    /**
+     * 鐩殑闀�
+     */
+    @ApiModelProperty(value= "鐩殑闀�")
+    @TableField("business_end_town")
+    private String businessEndTown;
+
+    /**
+     * 鐩殑鍦�
+     */
+    @ApiModelProperty(value= "鐩殑鍦�")
+    @TableField("business_end_addr")
+    private String businessEndAddr;
+
+    /**
+     * 鍑哄彂鏃ユ湡
+     */
+    @ApiModelProperty(value= "鍑哄彂鏃ユ湡")
+    @TableField("business_start_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date businessStartTime;
+
+    /**
+     * 缁撴潫鏃ユ湡
+     */
+    @ApiModelProperty(value= "缁撴潫鏃ユ湡")
+    @TableField("business_end_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date businessEndTime;
+
+    /**
+     * 鍑哄樊鏃堕暱
+     */
+    @ApiModelProperty(value= "鍑哄樊鏃堕暱")
+    @TableField("business_duration")
+    private Double businessDuration;
+
+    /**
+     * 鍑哄樊澶╂暟
+     */
+    @ApiModelProperty(value= "鍑哄樊澶╂暟")
+    @TableField("business_trip_days")
+    private Integer businessTripDays;
+
+    /**
+     * 鍑哄樊澶囨敞
+     */
+    @ApiModelProperty(value= "鍑哄樊澶囨敞")
+    @TableField("business_notes")
+    private String businessNotes;
+
+    /**
+     * 鍑鸿浜恒�佸悓琛屼汉
+     */
+    @ApiModelProperty(value= "鍑鸿浜恒�佸悓琛屼汉")
+    @TableField("business_peers")
+    private String businessPeers;
+
+    /**
+     * 鍚岃浜篒D
+     */
+    @ApiModelProperty(value= "鍚岃浜篒D")
+    @TableField("business_peers_id")
+    private Long businessPeersId;
+
+    /**
+     * 鑷┚绉佸杞﹁溅鐗屽彿
+     */
+    @ApiModelProperty(value= "鑷┚绉佸杞﹁溅鐗屽彿")
+    @TableField("car_number")
+    private String carNumber;
+
+    /**
+     * 鑷┚绉佸杞﹁绋嬫槑缁嗗強鍏噷鏁�
+     */
+    @ApiModelProperty(value= "鑷┚绉佸杞﹁绋嬫槑缁嗗強鍏噷鏁�")
+    private String kilometers;
+
+    /**
+     * 鍒涘缓浜�
+     */
+    @ApiModelProperty(value= "鍒涘缓浜�")
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * 鎵�灞為儴闂�
+     */
+    @ApiModelProperty(value= "鎵�灞為儴闂�")
+    @TableField("dept_id")
+    private Long deptId;
+
+    /**
+     * hostId
+     */
+    @ApiModelProperty(value= "hostId")
+    @TableField("host_id")
+    private Long hostId;
+
+    /**
+     * 璺熻釜椤圭洰ID
+     */
+    @ApiModelProperty(value= "璺熻釜椤圭洰ID")
+    @TableField("order_id")
+    private Long orderId;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+    @TableField("create_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @ApiModelProperty(value= "鏇存柊鏃堕棿")
+    @TableField("update_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 鏇存柊浜哄憳ID
+     */
+    @ApiModelProperty(value= "鏇存柊浜哄憳ID")
+    @TableField("update_id")
+    private Long updateId;
+
+    @ApiModelProperty(value= "")
+    private String form;
+
+    /**
+     * 杩涘害
+     */
+    @ApiModelProperty(value= "杩涘害")
+    private Integer settle;
+
+    /**
+     * 娴佺▼杩涘害
+     */
+    @ApiModelProperty(value= "娴佺▼杩涘害")
+    @TableField("settle_msg")
+    private String settleMsg;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 绂佺敤
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 宸插畬鎴�  0: 鏈畬鎴�  ")
+    private Integer status;
+
+    /**
+     * 绫诲瀷
+     */
+    @ApiModelProperty(value= "绫诲瀷")
+    @TableField("business_trip_type")
+    private Integer businessTripType;
+
+    /**
+     * 绫诲瀷
+     */
+    @ApiModelProperty(value= "寮�濮嬫椂杈�")
+    @TableField("business_start_time_day")
+    private Integer businessStartTimeDay;
+
+    /**
+     * 绫诲瀷
+     */
+    @ApiModelProperty(value= "缁撴潫鏃惰景")
+    @TableField("business_end_time_day")
+    private Integer businessEndTimeDay;
+
+    @TableField(exist = false)
+    private String pcdStart;
+
+    @TableField(exist = false)
+    private String pcdEnd;
+
+    /**
+     * 鍑哄樊鏃堕暱
+     */
+    @ApiModelProperty(value= "閲戦")
+    @TableField("amount_of_money")
+    private Double amountOfMoney;
+
+    public BusinessTripOther() {}
+
+    public BusinessTripOther(String businessTripReasons, Integer businessTransportation, Integer businessReturn, String businessStartProvince, String businessStartCity, String businessStartDistrict, String businessStartTown, String businessStartAddr, String businessEndProvince, String businessEndCity, String businessEndDistrict, String businessEndTown, String businessEndAddr, Date businessStartTime, Date businessEndTime, Double businessDuration, Integer businessTripDays, String businessNotes, String businessPeers, Long businessPeersId, String carNumber, String kilometers, Long userId, Long deptId, Long hostId, Date createTime, Date updateTime, Long updateId, String form, Integer settle, String settleMsg, Integer status, Integer businessTripType, Integer businessStartTimeDay, Integer businessEndTimeDay,Double amountOfMoney) {
+        this.businessTripReasons = businessTripReasons;
+        this.businessTransportation = businessTransportation;
+        this.businessReturn = businessReturn;
+        this.businessStartProvince = businessStartProvince;
+        this.businessStartCity = businessStartCity;
+        this.businessStartDistrict = businessStartDistrict;
+        this.businessStartTown = businessStartTown;
+        this.businessStartAddr = businessStartAddr;
+        this.businessEndProvince = businessEndProvince;
+        this.businessEndCity = businessEndCity;
+        this.businessEndDistrict = businessEndDistrict;
+        this.businessEndTown = businessEndTown;
+        this.businessEndAddr = businessEndAddr;
+        this.businessStartTime = businessStartTime;
+        this.businessEndTime = businessEndTime;
+        this.businessDuration = businessDuration;
+        this.businessTripDays = businessTripDays;
+        this.businessNotes = businessNotes;
+        this.businessPeers = businessPeers;
+        this.businessPeersId = businessPeersId;
+        this.carNumber = carNumber;
+        this.kilometers = kilometers;
+        this.userId = userId;
+        this.deptId = deptId;
+        this.hostId = hostId;
+        this.createTime = createTime;
+        this.updateTime = updateTime;
+        this.updateId = updateId;
+        this.form = form;
+        this.settle = settle;
+        this.settleMsg = settleMsg;
+        this.status = status;
+        this.businessTripType = businessTripType;
+        this.businessStartTimeDay = businessStartTimeDay;
+        this.businessEndTimeDay = businessEndTimeDay;
+        this.amountOfMoney = amountOfMoney;
+    }
+
+//    BusinessTrip businessTrip = new BusinessTrip(
+//            null,    // 鍑哄樊浜嬬敱[闈炵┖]
+//            null,    // 浜ら�氬伐鍏穂闈炵┖]
+//            null,    // 鍗曠▼寰�杩擺闈炵┖]
+//            null,    // 鍑哄彂鐪�
+//            null,    // 鍑哄彂甯�
+//            null,    // 鍑哄彂鍘�
+//            null,    // 鍑哄彂闀�
+//            null,    // 鍑哄彂鍦癧闈炵┖]
+//            null,    // 鐩殑鐪�
+//            null,    // 鐩殑甯�
+//            null,    // 鐩殑鍘�
+//            null,    // 鐩殑闀�
+//            null,    // 鐩殑鍦癧闈炵┖]
+//            null,    // 鍑哄彂鏃ユ湡[闈炵┖]
+//            null,    // 缁撴潫鏃ユ湡[闈炵┖]
+//            null,    // 鍑哄樊鏃堕暱
+//            null,    // 鍑哄樊澶╂暟
+//            null,    // 鍑哄樊澶囨敞
+//            null,    // 鍑鸿浜恒�佸悓琛屼汉[闈炵┖]
+//            null,    // 鍚岃浜篒D
+//            null,    // 鑷┚绉佸杞﹁溅鐗屽彿[闈炵┖]
+//            null,    // 鑷┚绉佸杞﹁绋嬫槑缁嗗強鍏噷鏁癧闈炵┖]
+//            null,    // 鍒涘缓浜�
+//            null,    // 鎵�灞為儴闂�
+//            null,    // hostId
+//            null,    // 鍒涘缓鏃堕棿
+//            null,    // 鏇存柊鏃堕棿
+//            null,    // 鏇存柊浜哄憳ID
+//            null,    // 
+//            null,    // 杩涘害
+//            null,    // 娴佺▼杩涘害
+//            null,    // 鐘舵��
+//            null    // 绫诲瀷
+//    );
+
+    public String getBusinessStartTime$(){
+        if (Cools.isEmpty(this.businessStartTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.businessStartTime);
+    }
+
+    public String getBusinessEndTime$(){
+        if (Cools.isEmpty(this.businessEndTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.businessEndTime);
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getUpdateId$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.updateId);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        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;
+    }
+
+    public String getDeptId$(){
+        DeptService service = SpringUtils.getBean(DeptService.class);
+        Dept dept = service.selectById(this.deptId);
+        if (!Cools.isEmpty(dept)){
+            return String.valueOf(dept.getName());
+        }
+        return null;
+    }
+
+    public String getSettle$(){
+        if (null == this.settle){ return null; }
+        switch (this.settle){
+            case 1:
+                return "绛夊緟鎵瑰噯";
+            case 2:
+                return "鐢宠閫氳繃";
+            default:
+                return String.valueOf(this.settle);
+        }
+    }
+
+
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "宸插畬鎴�";
+            case 0:
+                return "鏈畬鎴�";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getBusinessTransportation$(){
+        if (null == this.businessTransportation){ return null; }
+        switch (this.businessTransportation){
+            case 1:
+                return "椋炴満";
+            case 2:
+                return "楂橀搧";
+            case 3:
+                return "鐏溅";
+            case 4:
+                return "姹借溅";
+            case 5:
+                return "鎽╂墭";
+            case 6:
+                return "鐢佃溅";
+            default:
+//                return String.valueOf(this.status);
+                return "鍏跺畠";
+        }
+    }
+
+    public String getBusinessReturn$(){
+        if (null == this.businessTransportation){ return null; }
+        switch (this.businessTransportation){
+            case 1:
+                return "鍗曠▼";
+            case 2:
+                return "寰�杩�";
+            default:
+//                return String.valueOf(this.status);
+                return "鍏跺畠";
+        }
+    }
+
+    public String getBusinessStartTimeDay$(){
+        if (null == this.businessStartTimeDay){ return null; }
+        switch (this.businessStartTimeDay){
+            case 1:
+                return TimeCalculatorUtils.timeYestMonthDay(this.businessStartTime)+ "涓婂崍";
+            case 2:
+                return TimeCalculatorUtils.timeYestMonthDay(this.businessStartTime)+ "涓嬪崍";
+            default:
+//                return String.valueOf(this.status);
+                return "鏈煡";
+        }
+    }
+
+    public String getBusinessEndTimeDay$(){
+        if (null == this.businessEndTimeDay){ return null; }
+        switch (this.businessTransportation){
+            case 1:
+                return TimeCalculatorUtils.timeYestMonthDay(this.businessEndTime)+ "涓婂崍";
+            case 2:
+                return TimeCalculatorUtils.timeYestMonthDay(this.businessEndTime)+ "涓嬪崍";
+            default:
+//                return String.valueOf(this.status);
+                return "鏈煡";
+        }
+    }
+
+    public String getBusinessDuration$(){
+        if (null == this.businessDuration) return null;
+        return this.businessDuration+"\t澶�";
+    }
+
+    public String getBusinessTripDays$(){
+        if (null == this.businessTripDays) return null;
+        return this.businessTripDays+"\t澶�";
+    }
+
+    public String getPcdStart() {
+        StringBuilder sb = new StringBuilder();
+        if (!Cools.isEmpty(businessStartProvince)) {
+            sb.append(businessStartProvince).append(",");
+        }
+        if (!Cools.isEmpty(businessStartCity)) {
+            sb.append(businessStartCity).append(",");
+        }
+        if (!Cools.isEmpty(businessStartDistrict)) {
+            sb.append(businessStartDistrict).append(",");
+        }
+        String s = sb.toString();
+        if (s.endsWith(",")) {
+            s = s.substring(0, s.length() - 1);
+        }
+        return s;
+    }
+
+    public String getPcdStart$() {
+        StringBuilder sb = new StringBuilder();
+        DicService service = SpringUtils.getBean(DicService.class);
+        if (!Cools.isEmpty(businessStartProvince)) {
+            Dic provinceDic = service.selectById(businessStartProvince);
+            if (!Cools.isEmpty(provinceDic)) {
+                sb.append(provinceDic.getName()).append(",");
+            }
+        }
+        if (!Cools.isEmpty(businessStartCity)) {
+            Dic cityDic = service.selectById(businessStartCity);
+            if (!Cools.isEmpty(cityDic)) {
+                sb.append(cityDic.getName()).append(",");
+            }
+        }
+        if (!Cools.isEmpty(businessStartDistrict)) {
+            Dic districtDic = service.selectById(businessStartDistrict);
+            if (!Cools.isEmpty(districtDic)) {
+                sb.append(districtDic.getName()).append(",");
+            }
+        }
+        String s = sb.toString();
+        if (s.endsWith(",")) {
+            s = s.substring(0, s.length() - 1);
+        }
+        return s;
+    }
+
+    public void setPcdStart(String pcdStart) {
+        this.pcdStart = pcdStart;
+        if (!Cools.isEmpty(pcdStart)) {
+            String[] split = this.pcdStart.split(",");
+            for (int i = 0;i< split.length; i++) {
+                switch (i) {
+                    case 0:
+                        this.businessStartProvince = split[0];
+                        break;
+                    case 1:
+                        this.businessStartCity = split[1];
+                        break;
+                    case 2:
+                        this.businessStartDistrict = split[2];
+                        break;
+                    default:
+                        break;
+                }
+            }
+        } else {
+            this.businessStartProvince = "";
+            this.businessStartCity = "";
+            this.businessStartDistrict = "";
+        }
+    }
+
+    public String getPcdEnd() {
+        StringBuilder sb = new StringBuilder();
+        if (!Cools.isEmpty(businessEndProvince)) {
+            sb.append(businessEndProvince).append(",");
+        }
+        if (!Cools.isEmpty(businessEndCity)) {
+            sb.append(businessEndCity).append(",");
+        }
+        if (!Cools.isEmpty(businessEndDistrict)) {
+            sb.append(businessEndDistrict).append(",");
+        }
+        String s = sb.toString();
+        if (s.endsWith(",")) {
+            s = s.substring(0, s.length() - 1);
+        }
+        return s;
+    }
+
+    public String getPcdEnd$() {
+        StringBuilder sb = new StringBuilder();
+        DicService service = SpringUtils.getBean(DicService.class);
+        if (!Cools.isEmpty(businessEndProvince)) {
+            Dic provinceDic = service.selectById(businessEndProvince);
+            if (!Cools.isEmpty(provinceDic)) {
+                sb.append(provinceDic.getName()).append(",");
+            }
+        }
+        if (!Cools.isEmpty(businessEndCity)) {
+            Dic cityDic = service.selectById(businessEndCity);
+            if (!Cools.isEmpty(cityDic)) {
+                sb.append(cityDic.getName()).append(",");
+            }
+        }
+        if (!Cools.isEmpty(businessEndDistrict)) {
+            Dic districtDic = service.selectById(businessEndDistrict);
+            if (!Cools.isEmpty(districtDic)) {
+                sb.append(districtDic.getName()).append(",");
+            }
+        }
+        String s = sb.toString();
+        if (s.endsWith(",")) {
+            s = s.substring(0, s.length() - 1);
+        }
+        return s;
+    }
+
+    public void setPcdEnd(String pcdEnd) {
+        this.pcdEnd = pcdEnd;
+        if (!Cools.isEmpty(pcdEnd)) {
+            String[] split = this.pcdEnd.split(",");
+            for (int i = 0;i< split.length; i++) {
+                switch (i) {
+                    case 0:
+                        this.businessEndProvince = split[0];
+                        break;
+                    case 1:
+                        this.businessEndCity = split[1];
+                        break;
+                    case 2:
+                        this.businessEndDistrict = split[2];
+                        break;
+                    default:
+                        break;
+                }
+            }
+        } else {
+            this.businessEndProvince = "";
+            this.businessEndCity = "";
+            this.businessEndDistrict = "";
+        }
+    }
+
+    public String getBusinessStartAddr$(){
+        if (!Cools.isEmpty(businessStartAddr)){
+            return getPcdStart$()+"--"+businessStartAddr;
+        }
+        return getPcdStart$();
+    }
+
+    public String getBusinessEndAddr$(){
+        if (!Cools.isEmpty(businessEndAddr)){
+            return getPcdEnd$()+"--"+businessEndAddr;
+        }
+        return getPcdStart$();
+    }
+
+    public String getAmountOfMoney$(){
+        if (null == this.amountOfMoney) return "0\t鍏�";
+        return this.amountOfMoney+"\t鍏�";
+    }
+
+}
diff --git a/src/main/java/com/zy/crm/manager/mapper/BusinessTripOtherMapper.java b/src/main/java/com/zy/crm/manager/mapper/BusinessTripOtherMapper.java
new file mode 100644
index 0000000..98edc85
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/mapper/BusinessTripOtherMapper.java
@@ -0,0 +1,12 @@
+package com.zy.crm.manager.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.crm.manager.entity.BusinessTripOther;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BusinessTripOtherMapper extends BaseMapper<BusinessTripOther> {
+
+}
diff --git a/src/main/java/com/zy/crm/manager/service/BusinessTripOtherService.java b/src/main/java/com/zy/crm/manager/service/BusinessTripOtherService.java
new file mode 100644
index 0000000..2030469
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/service/BusinessTripOtherService.java
@@ -0,0 +1,8 @@
+package com.zy.crm.manager.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.crm.manager.entity.BusinessTripOther;
+
+public interface BusinessTripOtherService extends IService<BusinessTripOther> {
+
+}
diff --git a/src/main/java/com/zy/crm/manager/service/impl/BusinessTripOtherServiceImpl.java b/src/main/java/com/zy/crm/manager/service/impl/BusinessTripOtherServiceImpl.java
new file mode 100644
index 0000000..f461121
--- /dev/null
+++ b/src/main/java/com/zy/crm/manager/service/impl/BusinessTripOtherServiceImpl.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.BusinessTripOther;
+import com.zy.crm.manager.mapper.BusinessTripOtherMapper;
+import com.zy.crm.manager.service.BusinessTripOtherService;
+import org.springframework.stereotype.Service;
+
+@Service("businessTripOtherService")
+public class BusinessTripOtherServiceImpl extends ServiceImpl<BusinessTripOtherMapper, BusinessTripOther> implements BusinessTripOtherService {
+
+}
diff --git a/src/main/resources/mapper/BusinessTripOtherMapper.xml b/src/main/resources/mapper/BusinessTripOtherMapper.xml
new file mode 100644
index 0000000..94d3085
--- /dev/null
+++ b/src/main/resources/mapper/BusinessTripOtherMapper.xml
@@ -0,0 +1,48 @@
+<?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.BusinessTripOtherMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.crm.manager.entity.BusinessTripOther">
+        <id column="id" property="id" />
+        <result column="business_trip_reasons" property="businessTripReasons" />
+        <result column="business_transportation" property="businessTransportation" />
+        <result column="business_return" property="businessReturn" />
+        <result column="business_start_province" property="businessStartProvince" />
+        <result column="business_start_city" property="businessStartCity" />
+        <result column="business_start_district" property="businessStartDistrict" />
+        <result column="business_start_town" property="businessStartTown" />
+        <result column="business_start_addr" property="businessStartAddr" />
+        <result column="business_end_province" property="businessEndProvince" />
+        <result column="business_end_city" property="businessEndCity" />
+        <result column="business_end_district" property="businessEndDistrict" />
+        <result column="business_end_town" property="businessEndTown" />
+        <result column="business_end_addr" property="businessEndAddr" />
+        <result column="business_start_time" property="businessStartTime" />
+        <result column="business_end_time" property="businessEndTime" />
+        <result column="business_duration" property="businessDuration" />
+        <result column="business_trip_days" property="businessTripDays" />
+        <result column="business_notes" property="businessNotes" />
+        <result column="business_peers" property="businessPeers" />
+        <result column="business_peers_id" property="businessPeersId" />
+        <result column="car_number" property="carNumber" />
+        <result column="kilometers" property="kilometers" />
+        <result column="user_id" property="userId" />
+        <result column="dept_id" property="deptId" />
+        <result column="host_id" property="hostId" />
+        <result column="order_id" property="orderId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_id" property="updateId" />
+        <result column="form" property="form" />
+        <result column="settle" property="settle" />
+        <result column="settle_msg" property="settleMsg" />
+        <result column="status" property="status" />
+        <result column="business_trip_type" property="businessTripType" />
+        <result column="business_start_time_day" property="businessStartTimeDay" />
+        <result column="business_end_time_day" property="businessEndTimeDay" />
+        <result column="amount_of_money" property="amountOfMoney" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/webapp/static/js/businessTrip/businessTrip.js b/src/main/webapp/static/js/businessTrip/businessTrip.js
index e9096f7..9d7bd64 100644
--- a/src/main/webapp/static/js/businessTrip/businessTrip.js
+++ b/src/main/webapp/static/js/businessTrip/businessTrip.js
@@ -102,6 +102,7 @@
             ,{field: 'userId$', align: 'center',title: '鐢宠浜�',hide: false}
             ,{field: 'deptId$', align: 'center',title: '鎵�灞為儴闂�',hide: false}
             ,{field: 'hostId', align: 'center',title: 'hostId',hide: true}
+            ,{field: 'orderId', align: 'center',title: '璺熻釜椤圭洰',hide: false}
             ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿',hide: false,width: 125}
             ,{field: 'updateTime$', align: 'center',title: '鏇存柊鏃堕棿',hide: false,width: 125}
             ,{field: 'updateId$', align: 'center',title: '鏇存柊浜哄憳',hide: false}
diff --git a/src/main/webapp/static/js/businessTrip/businessTripOther.js b/src/main/webapp/static/js/businessTrip/businessTripOther.js
new file mode 100644
index 0000000..76607ee
--- /dev/null
+++ b/src/main/webapp/static/js/businessTrip/businessTripOther.js
@@ -0,0 +1,418 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).extend({
+    cascader: 'cascader/cascader',
+}).use(['table','laydate', 'form', 'admin', 'cascader', 'tree', 'dropdown'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var cascader = layui.cascader;
+    var tree = layui.tree;
+    var dropdown = layui.dropdown;
+
+    $('#organization').html(localStorage.getItem('nickname') + ' <i class="layui-icon">&#xe61a;</i>');
+
+    // 閮ㄩ棬浜哄憳 绛涢��
+    dropdown.render({
+        elem: '#organization'
+        ,content: ['<div id="organizationTree" style="height: calc(100vh - 525px);border: none"></div>'].join('')
+        ,style: 'width: 370px; height: 350px; padding: 0 15px; box-shadow: 1px 1px 30px rgb(0 0 0 / 12%);'
+        ,ready: function(){
+            loadTree();
+        }
+    });
+
+    // 鏍戝舰鍥�
+    var organizationTree;
+    window.loadTree = function(condition){
+        var loadIndex = layer.load(2);
+        $.ajax({
+            url: baseUrl+"/dept/user/tree/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {
+                'condition': condition
+            },
+            method: 'POST',
+            success: function (res) {
+                layer.close(loadIndex);
+                if (res.code === 200){
+                    organizationTree = tree.render({
+                        elem: '#organizationTree',
+                        id: 'organizationTree',
+                        onlyIconControl: true,
+                        data: res.data,
+                        click: function (obj) {
+                            treeCond = {
+                                key: obj.data.key,
+                                val: obj.data.id
+                            }
+                            $('#organization').html(obj.data.title + ' <i class="layui-icon">&#xe61a;</i>');
+                            $('#organizationTree').find('.ew-tree-click').removeClass('ew-tree-click');
+                            $(obj.elem).children('.layui-tree-entry').addClass('ew-tree-click');
+                            clearFormVal($('#search-box'));
+                            tableIns.reload({
+                                where: {[obj.data.key]: obj.data.id},
+                                page: {curr: 1}
+                            });
+                        }
+                    });
+                    treeData = res.data;
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg)
+                }
+            }
+        })
+    }
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#businessTripOther',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/businessTripOther/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            // {type: 'checkbox'},
+            {field: 'id', align: 'center',title: 'ID',hide: true}
+            ,{field: 'businessTripReasons', align: 'center',title: '鍑哄樊浜嬬敱',hide: false}
+            ,{field: 'amountOfMoney$', align: 'center',title: '閲戦',hide: false}
+            ,{field: 'userId$', align: 'center',title: '鐢宠浜�',hide: false}
+            ,{field: 'deptId$', align: 'center',title: '鎵�灞為儴闂�',hide: true}
+            ,{field: 'hostId', align: 'center',title: 'hostId',hide: true}
+            ,{field: 'orderId', align: 'center',title: '璺熻釜椤圭洰',hide: false}
+            ,{field: 'settle$', align: 'center',title: '杩涘害', style: 'color: #1890ff;cursor:pointer', event: 'more',hide: false}
+            ,{field: 'status$', align: 'center',title: '鐘舵��',hide: false}
+            ,{field: 'businessTripType', align: 'center',title: '绫诲瀷',hide: true}
+            ,{field: 'businessNotes', align: 'center',title: '鍑哄樊澶囨敞',hide: false}
+            ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿',hide: false,width: 125}
+            ,{field: 'updateTime$', align: 'center',title: '鏇存柊鏃堕棿',hide: false,width: 125}
+            ,{field: 'updateId$', align: 'center',title: '鏇存柊浜哄憳',hide: false}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:180}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(businessTripOther)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(businessTripOther)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+                if (checkStatus.length === 0) {
+                    layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                    return;
+                }
+                del(checkStatus.map(function (d) {
+                    return d.id;
+                }));
+                break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'businessTripOther': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/businessTripOther/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(businessTripOther)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'approval':
+                layer.confirm('瀹℃壒閫氳繃锛�', {
+                    skin: 'layui-layer-admin',
+                    shade: .1,
+                    offset: '200px',
+                    title: data.name
+                }, function (i) {
+                    layer.close(i);
+                    approval(data.id);
+                });
+                break;
+            case 'more':
+                top.businessTripByMore = data.id;
+                admin.popupRight({
+                    type: 1,
+                    window: "top",
+                    area: "1250px",
+                    url: "businessTripOther_more.html",
+                    end: function () {
+                        // $(".layui-laypage-btn")[0].click();
+                    }
+                })
+                break;
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: ["95%", "75%"],
+            title: (mData ? '淇敼' : '娣诲姞') + '鍑哄樊鐢宠',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                if (mData) {
+                    $('#cascaderValStart').val(mData.pcdStart);
+                }
+                if (mData) {
+                    $('#cascaderValEnd').val(mData.pcdEnd);
+                }
+                layDateRender(mData);
+                cascaderRenderStart();
+                cascaderRenderEnd();
+                form.val('detail', mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/businessTripOther/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            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});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/businessTripOther/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                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});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '#businessStartTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['businessStartTime\\$']:null
+            });
+            layDate.render({
+                elem: '#businessEndTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['businessEndTime\\$']:null
+            });
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime\\$']:null
+            });
+            layDate.render({
+                elem: '#updateTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['updateTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+    // 鐪佸競鍖洪�夋嫨
+    function cascaderRenderStart() {
+        cascader.render({
+            elem: '#cascaderValStart',
+            data: citysData,
+            itemHeight: '250px',
+            filterable: true,
+            onChange: function (values, data) {
+                // console.log(values);console.log(data);
+            }
+        });
+    }
+
+    // 鐪佸競鍖洪�夋嫨
+    function cascaderRenderEnd() {
+        cascader.render({
+            elem: '#cascaderValEnd',
+            data: citysData,
+            itemHeight: '250px',
+            filterable: true,
+            onChange: function (values, data) {
+                // console.log(values);console.log(data);
+            }
+        });
+    }
+
+    function approval(planId, plannerId, dIdx) {
+        let loadIndex = layer.load(2);
+        $.ajax({
+            url: baseUrl+"/businessTripOther/approval/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {
+                planId: planId,
+                plannerId: plannerId
+            },
+            method: 'POST',
+            success: function (res) {
+                if (dIdx) {
+                    layer.close(dIdx);
+                }
+                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});
+                }
+            }
+        })
+    }
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+    });
+}
diff --git a/src/main/webapp/views/businessTrip/businessTrip.html b/src/main/webapp/views/businessTrip/businessTrip.html
index 5efc4c0..c1fbd1d 100644
--- a/src/main/webapp/views/businessTrip/businessTrip.html
+++ b/src/main/webapp/views/businessTrip/businessTrip.html
@@ -104,6 +104,20 @@
             <div class="layui layui-row">
                 <div class="layui-col-md12">
                     <div class="layui-form-item">
+                        <label class="layui-form-label layui-form-required">椤圭洰鍚�: </label>
+                        <div class="layui-input-block cool-auto-complete">
+                            <input class="layui-input" name="orderId" placeholder="璇疯緭鍏ラ」鐩悕" style="display: none" lay-verify="required">
+                            <input id="orderId$" name="orderId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ラ」鐩悕" onfocus=this.blur()>
+                            <div class="cool-auto-complete-window">
+                                <input class="cool-auto-complete-window-input" data-key="planQueryNameBydirector" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                                <select class="cool-auto-complete-window-select" data-key="planQueryNameBydirectorSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                                </select>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-col-md12">
+                    <div class="layui-form-item">
                         <label class="layui-form-label layui-form-required">鍑哄樊浜嬬敱: </label>
                         <div class="layui-input-block">
                             <textarea class="layui-textarea" name="businessTripReasons" placeholder="璇疯緭鍏ュ娉�" maxlength="1024" autocomplete="off" lay-verify="required"></textarea>
diff --git a/src/main/webapp/views/businessTrip/businessTripOther.html b/src/main/webapp/views/businessTrip/businessTripOther.html
new file mode 100644
index 0000000..9c34d64
--- /dev/null
+++ b/src/main/webapp/views/businessTrip/businessTripOther.html
@@ -0,0 +1,159 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/tree.css" media="all">
+    <link rel="stylesheet" href="../../static/layui/lay/modules/formDesigner/coolForm.css" />
+    <style>
+        .nav-box {
+            position: absolute;
+            top: 1px;
+            left: 5px;
+        }
+        .nav-box-item {
+            display: inline-block;
+            vertical-align: middle;
+            margin-right: 5px;
+        }
+
+        .layui-menu li {
+            width: inherit;
+        }
+
+        .layui-form-radio:hover *, .layui-form-radioed, .layui-form-radioed>i {
+            color: #2d8cf0;
+        }
+    </style>
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card" style="margin-bottom: 5px">
+        <div class="layui-card-body" style="padding-top: 5px;padding-bottom: 5px ">
+            <div class="layui-form toolbar" id="search-box" style="display: flex;justify-content: flex-end;position: relative">
+                <div class="nav-box">
+                    <div class="nav-box-item">
+                        <i class="layui-icon" style="color: #1890ff;font-weight: bold">&#xe613;</i>
+                    </div>
+                    <div class="nav-box-item">
+                        <button id="organization" style="border: none;padding-right: 35px;" class="layui-btn layui-btn-primary icon-btn">
+                            鏈煡
+                        </button>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+<!--                    <div class="layui-inline">-->
+<!--                        <label class="layui-form-label">缂栧彿:</label>-->
+<!--                        <div class="layui-input-inline">-->
+<!--                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">-->
+<!--                        </div>-->
+<!--                    </div>-->
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="businessTripOther" lay-filter="businessTripOther"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鍑哄樊鐢宠</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    {{# if (d.settle == 1) { }}
+        <a class="layui-btn layui-btn-xs btn-edit" lay-event="approval">瀹℃壒</a>
+        <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>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/layui/lay/modules/cascader/citys-data.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/businessTrip/businessTripOther.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form" style="height: 100%;overflow-y: hidden;">
+        <div class="model-form" style="height: 87%;overflow-x: hidden;overflow-y: scroll">
+            <input name="id" type="hidden">
+            <!--鍩烘湰淇℃伅-->
+            <blockquote class="layui-elem-quote" style="margin-left: 30px;padding: 8px 15px;">鍩烘湰淇℃伅</blockquote>
+            <div class="layui layui-row">
+                <div class="layui-col-md12">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label layui-form-required">椤圭洰鍚�: </label>
+                        <div class="layui-input-block cool-auto-complete">
+                            <input class="layui-input" name="orderId" placeholder="璇疯緭鍏ラ」鐩悕" style="display: none" lay-verify="required">
+                            <input id="orderId$" name="orderId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ラ」鐩悕" onfocus=this.blur()>
+                            <div class="cool-auto-complete-window">
+                                <input class="cool-auto-complete-window-input" data-key="planQueryNameBydirector" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                                <select class="cool-auto-complete-window-select" data-key="planQueryNameBydirectorSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                                </select>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-col-md12">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label layui-form-required">鍑哄樊浜嬬敱: </label>
+                        <div class="layui-input-block">
+                            <textarea class="layui-textarea" name="businessTripReasons" placeholder="璇疯緭鍏ュ娉�" maxlength="1024" autocomplete="off" lay-verify="required"></textarea>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-col-md12">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label layui-form-required">棰勪及閲戦: </label>
+                        <div class="layui-input-block">
+                            <input class="layui-input" name="amountOfMoney" placeholder="璇疯緭鍏ラ噾棰濓紙鍏冿級" lay-vertype="tips" lay-verify="required">
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <!--鍏跺畠-->
+            <blockquote class="layui-elem-quote" style="margin-left: 30px;padding: 8px 15px;">鍏跺畠淇℃伅</blockquote>
+            <div class="layui layui-row">
+                <div class="layui-col-md12">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">澶囨敞: </label>
+                        <div class="layui-input-block">
+                            <textarea class="layui-textarea" name="businessNotes" placeholder="璇疯緭鍏ュ娉�" maxlength="1024" autocomplete="off"></textarea>
+                        </div>
+                    </div>
+                 </div>
+            </div>
+        </div>
+        <div style="height: 10%">
+            <hr class="layui-bg-gray">
+            <div class="layui-form-item text-right" style="padding-right: 30px">
+                <button class="layui-btn" lay-filter="editSubmit" lay-submit="">鎻愪氦</button>
+                <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+            </div>
+        </div>
+    </form>
+</script>
+</html>
+
diff --git a/src/main/webapp/views/businessTrip/businessTripOther_more.html b/src/main/webapp/views/businessTrip/businessTripOther_more.html
new file mode 100644
index 0000000..954d7a8
--- /dev/null
+++ b/src/main/webapp/views/businessTrip/businessTripOther_more.html
@@ -0,0 +1,187 @@
+<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
+<style>
+    #formAdvForm {
+        background-color: #f3f3f3;
+    }
+    #formAdvForm .layui-form-item {
+        margin-top: 20px;
+        margin-bottom: 0;
+    }
+
+    #formAdvForm .layui-form-item .layui-inline {
+        margin-bottom: 25px;
+        margin-right: 0;
+    }
+
+    .form-group-bottom {
+        position: fixed;
+        left: 0;
+        right: 0;
+        bottom: 0;
+        padding: 10px 20px;
+        background-color: #fff;
+        box-shadow: 0 -1px 2px 0 rgba(0, 0, 0, .05);
+    }
+</style>
+<!-- 姝f枃寮�濮� -->
+<form class="layui-form" id="formAdvForm" lay-filter="formAdvForm" style="height: 100%">
+    <div class="layui-fluid" style="padding-bottom: 75px;height: 100%; overflow: scroll;box-sizing: border-box">
+        <!-- 鏍囬 -->
+        <div class="layui-card">
+            <div class="layui-card-header" style="padding-top: 5px; padding-bottom: 5px">
+                <div>
+                    <i class="layui-icon" style="font-size: 20px;color: #1890ff;font-weight: bold">&#xe656;</i>
+                    <span id="form-name" style="margin: 0 6px;font-size: 18px;font-weight: bold;letter-spacing: 1px"></span>
+                    <span style="opacity: .5;font-size: small;margin-left: 5px">鍑哄樊鐢宠</span>
+                </div>
+            </div>
+            <div class="layui-card-body" style="padding: 30px 20px">
+
+                <div class="layui-tab layui-steps">
+                    <ul class="layui-tab-title" id="stepBox">
+                    </ul>
+                </div>
+
+            </div>
+        </div>
+        <div class="layui-row">
+            <!-- 鏁版嵁 -->
+            <!--            <div class="layui-col-md9">-->
+            <!--                <div class="layui-card">-->
+            <!--                    <div class="layui-card-header">-->
+            <!--                        鍩烘湰淇℃伅-->
+            <!--                    </div>-->
+            <!--                    <div class="layui-card-body">-->
+
+            <!--                    </div>-->
+            <!--                </div>-->
+            <!--            </div>-->
+            <!-- 鍔ㄦ�� -->
+            <!--            <div class="layui-col-md3" style="width: 24%;margin-left: 1%">-->
+            <div class="layui-col-md3" style="width: 100%;">
+                <!-- 鏃堕棿绾� -->
+                <div class="layui-card">
+                    <div class="layui-card-header">
+                        <span>娴佺▼鍔ㄦ��</span>
+                    </div>
+                    <div class="layui-card-body">
+                        <ul class="layui-timeline" id="timelineBox">
+                        </ul>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="form-group-bottom text-right">
+        <button class="layui-btn" lay-filter="refresh" lay-submit><i class="layui-icon">&#xe666;</i>&emsp;鍒锋柊&emsp;</button>
+    </div>
+
+</form>
+
+<script type="text/html" id="followerTabOperate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/template" id="stepTpl">
+    {{#each list}}
+    <li id="step-{{step}}" style="pointer-events: none">
+        <i class="layui-icon layui-icon-ok">{{step}}</i>
+        <span class="layui-steps-title">{{title}}</span>
+        {{# if username}}
+        <span class="layui-steps-content">{{username}}</span>
+        {{ else }}
+        <span class="layui-steps-content">&nbsp;</span>
+        {{/if}}
+    </li>
+    {{/each}}
+</script>
+
+<script type="text/template" id="timelineTpl">
+    {{#each list}}
+    <li class="layui-timeline-item">
+        <i class="layui-icon layui-timeline-axis">&#xe63f;</i>
+        <div class="layui-timeline-content layui-text">
+            <h4 class="layui-timeline-title" style="display: inline;margin-right: 10px;">{{title}}</h4>
+            <span>{{time}}</span>
+            <p>
+                {{msg}}
+            </p>
+        </div>
+    </li>
+    {{/each}}
+</script>
+
+<script>
+    var businessTripId = top.businessTripByMore;
+    $('.layui-layer-close').hide();
+    layui.config({
+        base: baseUrl + "/static/layui/lay/modules/"
+    }).extend({
+        notice: 'notice/notice',
+        steps: 'steps/steps',
+    }).use(['form', 'table', 'laydate', 'notice', 'xmSelect', 'steps'], function () {
+        var $ = layui.jquery;
+        var form = layui.form;
+        var table = layui.table;
+        var laydate = layui.laydate;
+        var notice = layui.notice;
+        var xmSelect = layui.xmSelect;
+        var steps = layui.steps;
+
+        form.render('select');
+
+        init();
+        function init(){
+            notice.msg('姝e湪杞藉叆鏁版嵁......', {icon: 4, position: "topRight"});
+            $.ajax({
+                url: baseUrl + "/businessTripOther/" + businessTripId + "/auth2",
+                headers: {'token': localStorage.getItem('token')},
+                method: 'GET',
+                success: function (res) {
+                    notice.destroy();
+                    if (res.code === 200) {
+                        let businessTrip = res.data;
+                        top.businessTripByMore = null;
+                        $("#form-name").html(businessTrip.name);
+                        // 杩涘害姝ラ鍥�
+                        let template0 = Handlebars.compile($('#stepTpl').html());
+                        $('#stepBox').html(template0({list: JSON.parse(businessTrip.settleMsg)}));
+                        $('#step-' + Number(businessTrip.step)).addClass("layui-this");
+
+                        let template1 = Handlebars.compile($('#timelineTpl').html());
+                        $('#timelineBox').html(template1({list: JSON.parse(businessTrip.settleMsg)}));
+                        // 琛ュ厖html
+                        $('#customizeBox').html(businessTrip.formHtml);
+                        // 璁惧鏄庣粏
+                        // form.val('formAdvForm', businessTrip);
+                        // top.convertDisabled($('#formAdvForm :input'), true);
+                        // 璺熻繘浜�
+                        // initFollowers(businessTrip.id);
+                        layDateRender();
+                    } else if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2})
+                    }
+                }
+            })
+        }
+
+        /* 娓叉煋laydate */
+        function layDateRender() {
+            laydate.render({
+                elem: '#endTime',
+                type: 'datetime'
+            });
+        }
+        layDateRender();
+
+        /* 鐩戝惉琛ㄥ崟鎻愪氦 */
+        form.on('submit(refresh)', function (data) {
+            init();
+            return false;
+        });
+
+    })
+</script>
diff --git a/src/main/webapp/views/plan/plan.html b/src/main/webapp/views/plan/plan.html
index b195bce..668522f 100644
--- a/src/main/webapp/views/plan/plan.html
+++ b/src/main/webapp/views/plan/plan.html
@@ -307,7 +307,7 @@
                     <div class="layui-form-item">
                         <label class="layui-form-label">瀹屾垚鏃堕棿: </label>
                         <div class="layui-input-block">
-                            <input class="layui-input" name="finishTime" id="finishTime$" placeholder="璇疯緭鍏ュ畬鎴愭椂闂�">
+                            <input class="layui-input" name="finishTime" id="finishTime$" placeholder="璇疯緭鍏ュ畬鎴愭椂闂�"  readonly="readonly">
                         </div>
                     </div>
                     <div class="layui-form-item">

--
Gitblit v1.9.1