From ee00ca28898f7bc99b98fb8f8c1898058bb291de Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 21 二月 2023 18:32:08 +0800
Subject: [PATCH] 司机管理

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java            |  167 +++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java |  104 ++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderRefusalController.java |  118 ++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderRefusalService.java              |   16 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderRefusalMapper.java                    |   16 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java       |  285 +++++
 management/guns-admin/src/main/webapp/static/modular/system/tOrderRefusal/tOrderRefusal_info.js                       |   99 ++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal_edit.html                       |   32 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html                            |   38 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderRefusalMapper.xml             |   21 
 management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js                                          |    2 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java      |   20 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverStartAndStop.html                            |   30 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverDetail.html                                  |  168 +++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_edit.html                       |   38 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_add.html                        |   38 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal.html                            |   38 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBranchOfficeService.java              |   16 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TDriverResp.java                |   75 +
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverExceptionStartAndStop.html                   |   30 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal_add.html                        |   32 
 management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice.js                            |  109 ++
 management/guns-admin/src/main/webapp/static/modular/system/tOrderRefusal/tOrderRefusal.js                            |  101 ++
 management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js                                        |  212 ++++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java      |    2 
 management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice_info.js                       |  105 ++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverException.html                               |   61 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAppUser.java                             |    2 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBranchOfficeMapper.xml             |   27 
 management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriverException.js                               |  230 ++++
 management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js                                   |    4 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderRefusal.java                        |  127 ++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java                              |  110 ++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAudit.html                                   |  151 +++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverRechargeBalancePage.html                     |   24 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderRefusalServiceImpl.java      |   20 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBranchOfficeMapper.java                    |   18 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBranchOffice.java                        |  205 ++++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java                    |   26 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html                                        |    9 
 40 files changed, 2,901 insertions(+), 25 deletions(-)

diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java
index 73c26eb..db2eab3 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java
@@ -180,6 +180,7 @@
                           Integer id,
                           Integer status) {
         EntityWrapper<TAppUser> wrapper = tAppUserService.getUserListWrapper(createTime,nickname,phone,id,status);
+        wrapper.ne("is_exception",2);
         return tAppUserService.selectList(wrapper);
     }
 
@@ -270,6 +271,7 @@
             String[] title = new String[] {"用户ID","用户昵称","手机号","性别","头像","微信openid",
                     "微信unionid","紧急联系人","紧急联系电话","账户余额","用户标签id","状态","添加时间"};
             EntityWrapper<TAppUser> wrapper = tAppUserService.getUserListWrapper(createTime,nickname,phone,id,status);
+            wrapper.ne("is_exception",2);
             // 是否异常
             List<TAppUser> list = tAppUserService.selectList(wrapper);
 
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java
new file mode 100644
index 0000000..bebefe7
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBranchOfficeController.java
@@ -0,0 +1,104 @@
+package com.stylefeng.guns.modular.system.controller.general;
+
+import com.stylefeng.guns.core.base.controller.BaseController;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.stylefeng.guns.core.log.LogObjectHolder;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.stylefeng.guns.modular.system.model.TBranchOffice;
+import com.stylefeng.guns.modular.system.service.ITBranchOfficeService;
+
+/**
+ * 控制器
+ *
+ * @author fengshuonan
+ * @Date 2023-02-21 11:17:18
+ */
+@Controller
+@RequestMapping("/tBranchOffice")
+public class TBranchOfficeController extends BaseController {
+
+    private String PREFIX = "/system/tBranchOffice/";
+
+    @Autowired
+    private ITBranchOfficeService tBranchOfficeService;
+
+    /**
+     * 跳转到首页
+     */
+    @RequestMapping("")
+    public String index() {
+        return PREFIX + "tBranchOffice.html";
+    }
+
+    /**
+     * 跳转到添加
+     */
+    @RequestMapping("/tBranchOffice_add")
+    public String tBranchOfficeAdd() {
+        return PREFIX + "tBranchOffice_add.html";
+    }
+
+    /**
+     * 跳转到修改
+     */
+    @RequestMapping("/tBranchOffice_update/{tBranchOfficeId}")
+    public String tBranchOfficeUpdate(@PathVariable Integer tBranchOfficeId, Model model) {
+        TBranchOffice tBranchOffice = tBranchOfficeService.selectById(tBranchOfficeId);
+        model.addAttribute("item",tBranchOffice);
+        LogObjectHolder.me().set(tBranchOffice);
+        return PREFIX + "tBranchOffice_edit.html";
+    }
+
+    /**
+     * 获取列表
+     */
+    @RequestMapping(value = "/list")
+    @ResponseBody
+    public Object list(String condition) {
+        return tBranchOfficeService.selectList(null);
+    }
+
+    /**
+     * 新增
+     */
+    @RequestMapping(value = "/add")
+    @ResponseBody
+    public Object add(TBranchOffice tBranchOffice) {
+        tBranchOfficeService.insert(tBranchOffice);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping(value = "/delete")
+    @ResponseBody
+    public Object delete(@RequestParam Integer tBranchOfficeId) {
+        tBranchOfficeService.deleteById(tBranchOfficeId);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping(value = "/update")
+    @ResponseBody
+    public Object update(TBranchOffice tBranchOffice) {
+        tBranchOfficeService.updateById(tBranchOffice);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 详情
+     */
+    @RequestMapping(value = "/detail/{tBranchOfficeId}")
+    @ResponseBody
+    public Object detail(@PathVariable("tBranchOfficeId") Integer tBranchOfficeId) {
+        return tBranchOfficeService.selectById(tBranchOfficeId);
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
index 04dc568..d49eb15 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
@@ -2,7 +2,20 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.core.shiro.ShiroKit;
+import com.stylefeng.guns.core.shiro.ShiroUser;
+import com.stylefeng.guns.modular.system.controller.resp.TDriverResp;
+import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
+import com.stylefeng.guns.modular.system.model.TAgent;
+import com.stylefeng.guns.modular.system.model.TAppUser;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.shiro.subject.Subject;
 import org.springframework.stereotype.Controller;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.ui.Model;
@@ -12,6 +25,15 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import com.stylefeng.guns.modular.system.model.TDriver;
 import com.stylefeng.guns.modular.system.service.ITDriverService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * 控制器
@@ -56,13 +78,93 @@
     }
 
     /**
+     * 跳转冻结页面
+     * @return
+     */
+    @RequestMapping("/tDriver_start_and_stop")
+    public String tAppUserStartAndStop( Integer id,
+                                        Model model) {
+        TDriver tDriver = tDriverService.selectById(id);
+
+        model.addAttribute("id",id);
+        model.addAttribute("status",tDriver.getStatus());
+        return PREFIX + "tDriverStartAndStop.html";
+    }
+
+    /**
+     * 跳转充值页面
+     * @return
+     */
+    @RequestMapping("/rechargeBalancePage")
+    public String rechargeBalancePage( Integer id,
+                                        Model model) {
+        model.addAttribute("id",id);
+        return PREFIX + "tDriverRechargeBalancePage.html";
+    }
+
+    /**
+     * 跳转异常页面
+     * @return
+     */
+    @RequestMapping("/tDriver_exception")
+    public String tDriverException(Model model) {
+        model.addAttribute("isException",2);
+        return PREFIX + "tDriverException.html";
+    }
+    /**
+     * 跳转异常启用冻结页面
+     * @return
+     */
+    @RequestMapping("/tDriverException_start_and_stop")
+    public String tDriverExceptionStartAndStop(Integer id,Model model) {
+        TDriver tDriver = tDriverService.selectById(id);
+        model.addAttribute("id",id);
+        model.addAttribute("status",tDriver.getStatus());
+        return PREFIX + "tDriverExceptionStartAndStop.html";
+    }
+
+    /**
+     * 跳转审核页面
+     * @return
+     */
+    @RequestMapping("/auditPage")
+    public String auditPage( Integer id,
+                                       Model model) {
+        tDriverService.auditPage(id,model);
+        return PREFIX + "tDriverAudit.html";
+    }
+
+    /**
+     * 跳转详情页面
+     */
+    @RequestMapping("/driverDetail")
+    public String driverDetail(Integer tDriverId, Model model) {
+        tDriverService.detail(tDriverId,model);
+
+        return PREFIX + "tDriverDetail.html";
+    }
+
+    /**
      * 获取列表
      */
     @RequestMapping(value = "/list")
     @ResponseBody
     public Object list(String createTime,String phone,Integer status) {
         EntityWrapper<TDriver> wrapper = tDriverService.getPageList(createTime,phone,status);
-        return tDriverService.selectList(wrapper);
+        wrapper.ne("isException",2);
+        List<TDriver> tDrivers = tDriverService.selectList(wrapper);
+        return tDriverService.getTDriverResp(tDrivers);
+    }
+    /**
+     * 获取异常列表
+     */
+    @RequestMapping(value = "/exceptionList")
+    @ResponseBody
+    public Object exceptionList(String createTime,String phone,Integer status) {
+        EntityWrapper<TDriver> wrapper = tDriverService.getPageList(createTime,phone,status);
+        wrapper.eq("isException",2);
+        List<TDriver> tDrivers = tDriverService.selectList(wrapper);
+        return tDriverService.getTDriverResp(tDrivers);
     }
 
     /**
@@ -72,6 +174,24 @@
     @ResponseBody
     public Object listBack(String condition) {
         return tDriverService.selectList(null);
+    }
+
+    /**
+     * 审核
+     */
+    @RequestMapping(value = "/auditSubmit")
+    @ResponseBody
+    public Object auditSubmit(Integer id,Integer approvalStatus,String approvalNotes) {
+        TDriver tDriver = tDriverService.selectById(id);
+        tDriver.setApprovalStatus(approvalStatus);
+        tDriver.setApprovalNotes(approvalNotes);
+        // 审核用户id
+        Subject subject = ShiroKit.getSubject();
+        ShiroUser shiroUser = (ShiroUser)subject.getPrincipal();
+        tDriver.setApprovalUserId(shiroUser.getId());
+        tDriver.setApprovalTime(new Date());
+        tDriverService.updateById(tDriver);
+        return SUCCESS_TIP;
     }
 
     /**
@@ -95,6 +215,38 @@
     }
 
     /**
+     * 修改司机状态
+     */
+    @RequestMapping(value = "/update-status")
+    @ResponseBody
+    public Object updateStatus(Integer id,Integer status,
+                               String remark) {
+        TDriver tDriver = tDriverService.selectById(id);
+        if(1 == status){
+            tDriver.setStatus(2);
+        }
+        if(2 == status){
+            tDriver.setStatus(1);
+        }
+        tDriver.setRemark(remark);
+        tDriverService.updateById(tDriver);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 充值余额
+     */
+    @ApiOperation(value = "充值余额")
+    @RequestMapping(value = "/recharge-balance")
+    @ResponseBody
+    public Object rechargeBalance(Integer id, String money) {
+        TDriver tDriver = tDriverService.selectById(id);
+        tDriver.setBackgroundBalance(new BigDecimal(money).add(tDriver.getBackgroundBalance()));
+        tDriverService.updateById(tDriver);
+        return SUCCESS_TIP;
+    }
+
+    /**
      * 修改
      */
     @RequestMapping(value = "/update")
@@ -112,4 +264,135 @@
     public Object detail(@PathVariable("tDriverId") Integer tDriverId) {
         return tDriverService.selectById(tDriverId);
     }
+
+    @ApiOperation(value = "导出司机列表",notes="导出司机列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+    })
+    @RequestMapping(value = "/export")
+    @ResponseBody
+    public void export(String createTime,String phone,Integer status,HttpServletResponse response) {
+        try {
+            Date date = new Date();
+            DateFormat format = new SimpleDateFormat("yyyyMMdd");
+            String time1 = format.format(date);
+            String fileName = "DriverInfo"+time1+".xls";
+            String[] title = new String[] {"编号","姓名","手机号","性别","驾驶证号码","身份证号码",
+                    "身份证","所属代理商","所属分公司","钱包余额","累计订单量","当月订单量","积分","拒单次数","状态","添加时间"};
+            EntityWrapper<TDriver> wrapper = tDriverService.getPageList(createTime,phone,status);
+            // 是否异常
+            List<TDriver> list = tDriverService.selectList(wrapper);
+
+            List<TDriverResp> tDriverResp = tDriverService.getTDriverResp(list);
+
+            String[][] values = new String[tDriverResp.size()][];
+            for (int i = 0; i < tDriverResp.size(); i++) {
+                TDriverResp d = tDriverResp.get(i);
+                values[i] = new String[title.length];
+                values[i][0] = d.getCode();
+                values[i][1] = d.getName();
+                values[i][2] = d.getPhone();
+                Integer sex = d.getSex();
+                if(Objects.isNull(sex)){
+                    values[i][3] = "未知";
+                }else if(1 == sex){
+                    values[i][3] = "男";
+                }else if(2 == sex){
+                    values[i][3] = "女";
+                }
+                values[i][4] = d.getDriverLicenseNumber();
+                values[i][5] = d.getIdcard();
+                if(StringUtils.hasLength(d.getIdcardFront())){
+                    values[i][6] = "已上传";
+                }else {
+                    values[i][6] = "未上传";
+                }
+                values[i][7] = d.getAgentName();
+                values[i][8] = d.getBranchName();
+                values[i][9] = String.valueOf(d.getBalance());
+                values[i][10] = String.valueOf(d.getCumulativeOrderCount());
+                values[i][11] = String.valueOf(d.getMonthOrderCount());
+                values[i][12] = String.valueOf(d.getIntegral());
+                values[i][13] = String.valueOf(d.getRefusalCount());
+                Integer status1 = d.getStatus();
+                if(1 == status1){
+                    values[i][14] = "正常";
+                }else if(2 == status1){
+                    values[i][14] = "冻结";
+                }else {
+                    values[i][14] = "删除";
+                }
+                values[i][15] = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(d.getCreateTime());
+            }
+            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
+            ExcelUtil.setResponseHeader(response, fileName);
+            OutputStream os = response.getOutputStream();
+            wb.write(os);
+            os.flush();
+            os.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation(value = "导出司机异常列表",notes="导出司机异常列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+    })
+    @RequestMapping(value = "/export-exception")
+    @ResponseBody
+    public void exportException(String createTime,String phone,Integer status,HttpServletResponse response) {
+        try {
+            Date date = new Date();
+            DateFormat format = new SimpleDateFormat("yyyyMMdd");
+            String time1 = format.format(date);
+            String fileName = "DriverExceptionInfo"+time1+".xls";
+            String[] title = new String[] {"编号","姓名","手机号","性别","驾驶证号码","身份证号码",
+                    "身份证","累计订单量","当月订单量","积分","连续未上线(天)","状态","添加时间"};
+            EntityWrapper<TDriver> wrapper = tDriverService.getPageList(createTime,phone,status);
+            wrapper.eq("isException",2);
+            // 是否异常
+            List<TDriver> list = tDriverService.selectList(wrapper);
+
+            List<TDriverResp> tDriverResp = tDriverService.getTDriverResp(list);
+
+            String[][] values = new String[tDriverResp.size()][];
+            for (int i = 0; i < tDriverResp.size(); i++) {
+                TDriverResp d = tDriverResp.get(i);
+                values[i] = new String[title.length];
+                values[i][0] = d.getCode();
+                values[i][1] = d.getName();
+                values[i][2] = d.getPhone();
+                Integer sex = d.getSex();
+                if(Objects.isNull(sex)){
+                    values[i][3] = "未知";
+                }else if(1 == sex){
+                    values[i][3] = "男";
+                }else if(2 == sex){
+                    values[i][3] = "女";
+                }
+                values[i][4] = d.getDriverLicenseNumber();
+                values[i][5] = d.getIdcard();
+                if(StringUtils.hasLength(d.getIdcardFront())){
+                    values[i][6] = "已上传";
+                }else {
+                    values[i][6] = "未上传";
+                }
+                values[i][7] = String.valueOf(d.getCumulativeOrderCount());
+                values[i][8] = String.valueOf(d.getMonthOrderCount());
+                values[i][9] = String.valueOf(d.getIntegral());
+                values[i][10] = String.valueOf(Objects.isNull(d.getNotOnlineCount())?0:d.getNotOnlineCount());
+                values[i][11] = "异常";
+                values[i][12] = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(d.getCreateTime());
+            }
+            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
+            ExcelUtil.setResponseHeader(response, fileName);
+            OutputStream os = response.getOutputStream();
+            wb.write(os);
+            os.flush();
+            os.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderRefusalController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderRefusalController.java
new file mode 100644
index 0000000..54abb53
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderRefusalController.java
@@ -0,0 +1,118 @@
+package com.stylefeng.guns.modular.system.controller.general;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.core.base.controller.BaseController;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.stylefeng.guns.core.log.LogObjectHolder;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.stylefeng.guns.modular.system.model.TOrderRefusal;
+import com.stylefeng.guns.modular.system.service.ITOrderRefusalService;
+
+/**
+ * 控制器
+ *
+ * @author fengshuonan
+ * @Date 2023-02-21 17:54:07
+ */
+@Controller
+@RequestMapping("/tOrderRefusal")
+public class TOrderRefusalController extends BaseController {
+
+    private String PREFIX = "/system/tOrderRefusal/";
+
+    @Autowired
+    private ITOrderRefusalService tOrderRefusalService;
+
+    /**
+     * 跳转到首页
+     */
+    @RequestMapping("")
+    public String index() {
+        return PREFIX + "tOrderRefusal.html";
+    }
+
+    /**
+     * 跳转到添加
+     */
+    @RequestMapping("/tOrderRefusal_add")
+    public String tOrderRefusalAdd() {
+        return PREFIX + "tOrderRefusal_add.html";
+    }
+
+    /**
+     * 跳转到修改
+     */
+    @RequestMapping("/tOrderRefusal_update/{tOrderRefusalId}")
+    public String tOrderRefusalUpdate(@PathVariable Integer tOrderRefusalId, Model model) {
+        TOrderRefusal tOrderRefusal = tOrderRefusalService.selectById(tOrderRefusalId);
+        model.addAttribute("item",tOrderRefusal);
+        LogObjectHolder.me().set(tOrderRefusal);
+        return PREFIX + "tOrderRefusal_edit.html";
+    }
+
+    /**
+     * 获取列表
+     */
+    @RequestMapping(value = "/list")
+    @ResponseBody
+    public Object list(String condition) {
+        EntityWrapper<TOrderRefusal> wrapper = new EntityWrapper<>();
+        if(StringUtils.hasLength(condition)){
+            wrapper.eq("order_id",condition);
+        }
+        return tOrderRefusalService.selectList(wrapper);
+    }
+    /**
+     * 获取列表
+     */
+    @RequestMapping(value = "/list-back")
+    @ResponseBody
+    public Object listBack(String condition) {
+        return tOrderRefusalService.selectList(null);
+    }
+
+    /**
+     * 新增
+     */
+    @RequestMapping(value = "/add")
+    @ResponseBody
+    public Object add(TOrderRefusal tOrderRefusal) {
+        tOrderRefusalService.insert(tOrderRefusal);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping(value = "/delete")
+    @ResponseBody
+    public Object delete(@RequestParam Integer tOrderRefusalId) {
+        tOrderRefusalService.deleteById(tOrderRefusalId);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping(value = "/update")
+    @ResponseBody
+    public Object update(TOrderRefusal tOrderRefusal) {
+        tOrderRefusalService.updateById(tOrderRefusal);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 详情
+     */
+    @RequestMapping(value = "/detail/{tOrderRefusalId}")
+    @ResponseBody
+    public Object detail(@PathVariable("tOrderRefusalId") Integer tOrderRefusalId) {
+        return tOrderRefusalService.selectById(tOrderRefusalId);
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TDriverResp.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TDriverResp.java
new file mode 100644
index 0000000..cc7c340
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TDriverResp.java
@@ -0,0 +1,75 @@
+package com.stylefeng.guns.modular.system.controller.resp;
+
+import com.stylefeng.guns.modular.system.model.TDriver;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+
+public class TDriverResp extends TDriver {
+
+    //所属代理商
+    @ApiModelProperty(value = "所属代理商")
+    private String agentName;
+    //所属分公司
+    @ApiModelProperty(value = "所属分公司")
+    private String branchName;
+    //累计订单量
+    @ApiModelProperty(value = "累计订单量")
+    private Integer cumulativeOrderCount;
+    //当月订单量
+    @ApiModelProperty(value = "当月订单量")
+    private Integer monthOrderCount;
+    //拒单次数
+    @ApiModelProperty(value = "拒单次数")
+    private Integer refusalCount;
+
+    @ApiModelProperty(value = "连续未上线天数")
+    private Integer notOnlineCount;
+
+    public Integer getNotOnlineCount() {
+        return notOnlineCount;
+    }
+
+    public void setNotOnlineCount(Integer notOnlineCount) {
+        this.notOnlineCount = notOnlineCount;
+    }
+
+    public String getAgentName() {
+        return agentName;
+    }
+
+    public void setAgentName(String agentName) {
+        this.agentName = agentName;
+    }
+
+    public String getBranchName() {
+        return branchName;
+    }
+
+    public void setBranchName(String branchName) {
+        this.branchName = branchName;
+    }
+
+    public Integer getCumulativeOrderCount() {
+        return cumulativeOrderCount;
+    }
+
+    public void setCumulativeOrderCount(Integer cumulativeOrderCount) {
+        this.cumulativeOrderCount = cumulativeOrderCount;
+    }
+
+    public Integer getMonthOrderCount() {
+        return monthOrderCount;
+    }
+
+    public void setMonthOrderCount(Integer monthOrderCount) {
+        this.monthOrderCount = monthOrderCount;
+    }
+
+    public Integer getRefusalCount() {
+        return refusalCount;
+    }
+
+    public void setRefusalCount(Integer refusalCount) {
+        this.refusalCount = refusalCount;
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBranchOfficeMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBranchOfficeMapper.java
new file mode 100644
index 0000000..21b9c3a
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBranchOfficeMapper.java
@@ -0,0 +1,18 @@
+package com.stylefeng.guns.modular.system.dao;
+
+import com.stylefeng.guns.modular.system.model.TBranchOffice;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 分公司 Mapper 接口
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-02-21
+ */
+@Mapper
+public interface TBranchOfficeMapper extends BaseMapper<TBranchOffice> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderRefusalMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderRefusalMapper.java
new file mode 100644
index 0000000..2cbe428
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderRefusalMapper.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.dao;
+
+import com.stylefeng.guns.modular.system.model.TOrderRefusal;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 拒单记录 Mapper 接口
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-02-21
+ */
+public interface TOrderRefusalMapper extends BaseMapper<TOrderRefusal> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBranchOfficeMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBranchOfficeMapper.xml
new file mode 100644
index 0000000..7f3eef2
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBranchOfficeMapper.xml
@@ -0,0 +1,27 @@
+<?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.stylefeng.guns.modular.system.dao.TBranchOfficeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TBranchOffice">
+        <id column="id" property="id" />
+        <result column="agentId" property="agentId" />
+        <result column="principal" property="principal" />
+        <result column="principalPhone" property="principalPhone" />
+        <result column="email" property="email" />
+        <result column="provinceCode" property="provinceCode" />
+        <result column="provinceName" property="provinceName" />
+        <result column="cityCode" property="cityCode" />
+        <result column="cityName" property="cityName" />
+        <result column="districtCode" property="districtCode" />
+        <result column="districtName" property="districtName" />
+        <result column="status" property="status" />
+        <result column="createTime" property="createTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, agentId, principal, principalPhone, email, provinceCode, provinceName, cityCode, cityName, districtCode, districtName, status, createTime
+    </sql>
+
+</mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderRefusalMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderRefusalMapper.xml
new file mode 100644
index 0000000..d840a27
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderRefusalMapper.xml
@@ -0,0 +1,21 @@
+<?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.stylefeng.guns.modular.system.dao.TOrderRefusalMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TOrderRefusal">
+        <id column="id" property="id" />
+        <result column="order_id" property="orderId" />
+        <result column="driver_id" property="driverId" />
+        <result column="startAddress" property="startAddress" />
+        <result column="endAddress" property="endAddress" />
+        <result column="code" property="code" />
+        <result column="createTime" property="createTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, order_id, driver_id, startAddress, endAddress, code, createTime
+    </sql>
+
+</mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAppUser.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAppUser.java
index 1a8df42..a53ccae 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAppUser.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAppUser.java
@@ -78,7 +78,7 @@
     private Date createTime;
 
     /**
-     * 是否异常 1正常 0异常
+     * 是否异常 1正常 2异常
      */
     @TableField(value = "is_exception")
     private Integer isException;
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBranchOffice.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBranchOffice.java
new file mode 100644
index 0000000..324c224
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBranchOffice.java
@@ -0,0 +1,205 @@
+package com.stylefeng.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 分公司
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-02-21
+ */
+@TableName("t_branch_office")
+public class TBranchOffice extends Model<TBranchOffice> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 代理商id
+     */
+    private Integer agentId;
+    /**
+     * 负责人姓名
+     */
+    private String principal;
+    /**
+     * 负责人电话
+     */
+    private String principalPhone;
+    /**
+     * 邮箱
+     */
+    private String email;
+    /**
+     * 代理区域省编号
+     */
+    private String provinceCode;
+    /**
+     * 代理区域省名称
+     */
+    private String provinceName;
+    /**
+     * 代理区域市编号
+     */
+    private String cityCode;
+    /**
+     * 代理区域市名称
+     */
+    private String cityName;
+    /**
+     * 代理区域区编号
+     */
+    private String districtCode;
+    /**
+     * 代理区域区名称
+     */
+    private String districtName;
+    /**
+     * 状态(1=正常,2=冻结,3=删除)
+     */
+    private Integer status;
+    /**
+     * 添加时间
+     */
+    private Date createTime;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getAgentId() {
+        return agentId;
+    }
+
+    public void setAgentId(Integer agentId) {
+        this.agentId = agentId;
+    }
+
+    public String getPrincipal() {
+        return principal;
+    }
+
+    public void setPrincipal(String principal) {
+        this.principal = principal;
+    }
+
+    public String getPrincipalPhone() {
+        return principalPhone;
+    }
+
+    public void setPrincipalPhone(String principalPhone) {
+        this.principalPhone = principalPhone;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getProvinceCode() {
+        return provinceCode;
+    }
+
+    public void setProvinceCode(String provinceCode) {
+        this.provinceCode = provinceCode;
+    }
+
+    public String getProvinceName() {
+        return provinceName;
+    }
+
+    public void setProvinceName(String provinceName) {
+        this.provinceName = provinceName;
+    }
+
+    public String getCityCode() {
+        return cityCode;
+    }
+
+    public void setCityCode(String cityCode) {
+        this.cityCode = cityCode;
+    }
+
+    public String getCityName() {
+        return cityName;
+    }
+
+    public void setCityName(String cityName) {
+        this.cityName = cityName;
+    }
+
+    public String getDistrictCode() {
+        return districtCode;
+    }
+
+    public void setDistrictCode(String districtCode) {
+        this.districtCode = districtCode;
+    }
+
+    public String getDistrictName() {
+        return districtName;
+    }
+
+    public void setDistrictName(String districtName) {
+        this.districtName = districtName;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "TBranchOffice{" +
+        "id=" + id +
+        ", agentId=" + agentId +
+        ", principal=" + principal +
+        ", principalPhone=" + principalPhone +
+        ", email=" + email +
+        ", provinceCode=" + provinceCode +
+        ", provinceName=" + provinceName +
+        ", cityCode=" + cityCode +
+        ", cityName=" + cityName +
+        ", districtCode=" + districtCode +
+        ", districtName=" + districtName +
+        ", status=" + status +
+        ", createTime=" + createTime +
+        "}";
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java
index 635f7bc..778bd4f 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java
@@ -1,11 +1,15 @@
 package com.stylefeng.guns.modular.system.model;
 
+import com.baomidou.mybatisplus.annotations.TableField;
 import com.baomidou.mybatisplus.enums.IdType;
 import java.math.BigDecimal;
 import java.util.Date;
 import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.activerecord.Model;
 import com.baomidou.mybatisplus.annotations.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.beans.factory.annotation.Value;
+
 import java.io.Serializable;
 
 /**
@@ -135,6 +139,112 @@
      */
     private Date createTime;
 
+    @ApiModelProperty(value = "后台充值余额")
+    private BigDecimal backgroundBalance;
+    @ApiModelProperty(value = "启用冻结理由")
+    private String remark;
+
+    /**
+     * 是否异常 1正常 2异常
+     */
+    @TableField(value = "isException")
+    private Integer isException;
+
+    @ApiModelProperty(value = "加盟区域省编号")
+    private String provinceCode;
+    @ApiModelProperty(value = "加盟区域省名称")
+    private String provinceName;
+    @ApiModelProperty(value = "加盟区域市编号")
+    private String cityCode;
+    @ApiModelProperty(value = "加盟区域市名称")
+    private String cityName;
+    @ApiModelProperty(value = "加盟区域区编号")
+    private String areaCode;
+    @ApiModelProperty(value = "加盟区域区名称")
+    private String areaName;
+
+    @ApiModelProperty(value = "驾驶证初次领证时间")
+    private Date firstCertificateTime;
+
+    public Date getFirstCertificateTime() {
+        return firstCertificateTime;
+    }
+
+    public void setFirstCertificateTime(Date firstCertificateTime) {
+        this.firstCertificateTime = firstCertificateTime;
+    }
+
+    public String getProvinceCode() {
+        return provinceCode;
+    }
+
+    public void setProvinceCode(String provinceCode) {
+        this.provinceCode = provinceCode;
+    }
+
+    public String getProvinceName() {
+        return provinceName;
+    }
+
+    public void setProvinceName(String provinceName) {
+        this.provinceName = provinceName;
+    }
+
+    public String getCityCode() {
+        return cityCode;
+    }
+
+    public void setCityCode(String cityCode) {
+        this.cityCode = cityCode;
+    }
+
+    public String getCityName() {
+        return cityName;
+    }
+
+    public void setCityName(String cityName) {
+        this.cityName = cityName;
+    }
+
+    public String getAreaCode() {
+        return areaCode;
+    }
+
+    public void setAreaCode(String areaCode) {
+        this.areaCode = areaCode;
+    }
+
+    public String getAreaName() {
+        return areaName;
+    }
+
+    public void setAreaName(String areaName) {
+        this.areaName = areaName;
+    }
+
+    public Integer getIsException() {
+        return isException;
+    }
+
+    public void setIsException(Integer isException) {
+        this.isException = isException;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public BigDecimal getBackgroundBalance() {
+        return backgroundBalance;
+    }
+
+    public void setBackgroundBalance(BigDecimal backgroundBalance) {
+        this.backgroundBalance = backgroundBalance;
+    }
 
     public Integer getId() {
         return id;
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderRefusal.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderRefusal.java
new file mode 100644
index 0000000..ad3fa85
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderRefusal.java
@@ -0,0 +1,127 @@
+package com.stylefeng.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 拒单记录
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-02-21
+ */
+@TableName("t_order_refusal")
+public class TOrderRefusal extends Model<TOrderRefusal> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 订单id
+     */
+    @TableField("order_id")
+    private Integer orderId;
+    /**
+     * 司机id
+     */
+    @TableField("driver_id")
+    private Integer driverId;
+    /**
+     * 起点地址
+     */
+    private String startAddress;
+    /**
+     * 终点地址
+     */
+    private String endAddress;
+    /**
+     * 编号
+     */
+    private String code;
+    /**
+     * 添加时间
+     */
+    private Date createTime;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    public Integer getDriverId() {
+        return driverId;
+    }
+
+    public void setDriverId(Integer driverId) {
+        this.driverId = driverId;
+    }
+
+    public String getStartAddress() {
+        return startAddress;
+    }
+
+    public void setStartAddress(String startAddress) {
+        this.startAddress = startAddress;
+    }
+
+    public String getEndAddress() {
+        return endAddress;
+    }
+
+    public void setEndAddress(String endAddress) {
+        this.endAddress = endAddress;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "TOrderRefusal{" +
+        "id=" + id +
+        ", orderId=" + orderId +
+        ", driverId=" + driverId +
+        ", startAddress=" + startAddress +
+        ", endAddress=" + endAddress +
+        ", code=" + code +
+        ", createTime=" + createTime +
+        "}";
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBranchOfficeService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBranchOfficeService.java
new file mode 100644
index 0000000..d07d5fc
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBranchOfficeService.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.service;
+
+import com.stylefeng.guns.modular.system.model.TBranchOffice;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 分公司 服务类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-02-21
+ */
+public interface ITBranchOfficeService extends IService<TBranchOffice> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java
index c1309ad..0da500f 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java
@@ -1,8 +1,12 @@
 package com.stylefeng.guns.modular.system.service;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.modular.system.controller.resp.TDriverResp;
 import com.stylefeng.guns.modular.system.model.TDriver;
 import com.baomidou.mybatisplus.service.IService;
+import org.springframework.ui.Model;
+
+import java.util.List;
 
 /**
  * <p>
@@ -22,4 +26,26 @@
      * @return
      */
     EntityWrapper<TDriver> getPageList(String createTime, String phone, Integer status);
+
+    /**
+     * 封装司机放回resp
+     * @param tDrivers
+     * @return
+     */
+    List<TDriverResp> getTDriverResp(List<TDriver> tDrivers);
+
+    /**
+     * 跳转审核页面
+     * @param id
+     * @param model
+     */
+    void auditPage(Integer id, Model model);
+
+    /**
+     * 跳转详情页面
+     * @param tDriverId
+     * @param model
+     */
+    void detail(Integer tDriverId, Model model);
+
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderRefusalService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderRefusalService.java
new file mode 100644
index 0000000..4200f88
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderRefusalService.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.service;
+
+import com.stylefeng.guns.modular.system.model.TOrderRefusal;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 拒单记录 服务类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-02-21
+ */
+public interface ITOrderRefusalService extends IService<TOrderRefusal> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java
new file mode 100644
index 0000000..98aed9f
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.stylefeng.guns.modular.system.service.impl;
+
+import com.stylefeng.guns.modular.system.model.TBranchOffice;
+import com.stylefeng.guns.modular.system.dao.TBranchOfficeMapper;
+import com.stylefeng.guns.modular.system.service.ITBranchOfficeService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 分公司 服务实现类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-02-21
+ */
+@Service
+public class TBranchOfficeServiceImpl extends ServiceImpl<TBranchOfficeMapper, TBranchOffice> implements ITBranchOfficeService {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
index 2a7b2a3..9d0bbb6 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
@@ -2,15 +2,28 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.util.DateUtil;
-import com.stylefeng.guns.modular.system.model.TDriver;
-import com.stylefeng.guns.modular.system.dao.TDriverMapper;
+import com.stylefeng.guns.modular.system.controller.resp.TDriverResp;
+import com.stylefeng.guns.modular.system.dao.*;
+import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
+import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.ITDriverService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.ui.Model;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -22,6 +35,18 @@
  */
 @Service
 public class TDriverServiceImpl extends ServiceImpl<TDriverMapper, TDriver> implements ITDriverService {
+
+
+    @Autowired
+    private TAgentMapper tAgentMapper;
+    @Autowired
+    private TBranchOfficeMapper tBranchOfficeMapper;
+    @Autowired
+    private TOrderMapper tOrderMapper;
+    @Autowired
+    private TDriverMapper tDriverMapper;
+    @Autowired
+    private TAppUserMapper tAppUserMapper;
 
     @Override
     public EntityWrapper<TDriver> getPageList(String createTime, String phone, Integer status) {
@@ -41,6 +66,144 @@
             Date endTime = DateUtil.getDate_str4(split[1]);
             wrapper.between("createTime",startTime,endTime);
         }
+        wrapper.orderBy(true,"approvalStatus");
         return wrapper;
     }
+
+    @Override
+    public List<TDriverResp> getTDriverResp(List<TDriver> tDrivers) {
+        List<TDriverResp> tDriverRespList = new ArrayList<>(tDrivers.size());
+
+        List<TOrder> tOrders = tOrderMapper.selectList(new EntityWrapper<TOrder>());
+
+        String monthDate = new SimpleDateFormat("yyyyMM").format(new Date());
+
+        for (TDriver tDriver : tDrivers) {
+            TDriverResp tDriverResp = new TDriverResp();
+            BeanUtils.copyProperties(tDriver,tDriverResp);
+
+            // 设置余额
+            tDriverResp.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance()));
+
+            // 所属代理商
+            TAgent tAgent = tAgentMapper.selectById(tDriver.getAgentId());
+            if(Objects.nonNull(tAgent)){
+                tDriverResp.setAgentName(tAgent.getPrincipal());
+            }
+            //所属分公司
+            TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tDriver.getBranchOfficeId());
+            if(Objects.nonNull(tBranchOffice)){
+                tDriverResp.setBranchName(tBranchOffice.getPrincipal());
+            }
+            //累计订单量
+            List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
+                    && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())).collect(Collectors.toList());
+            tDriverResp.setCumulativeOrderCount(cumulativeOrderCount.size());
+            //当月订单量
+            List<TOrder> monthOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
+                    && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())
+            && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList());
+            tDriverResp.setMonthOrderCount(monthOrderCount.size());
+            // TODO 拒单次数
+            List<TOrder> refusalCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
+                    && order.getState().equals(OrderStateEnum.CANCELED.getCode())).collect(Collectors.toList());
+            tDriverResp.setRefusalCount(refusalCount.size());
+
+            tDriverRespList.add(tDriverResp);
+        }
+        return tDriverRespList;
+    }
+
+    @Override
+    public void auditPage(Integer id, Model model) {
+
+        TDriver tDriver = tDriverMapper.selectById(id);
+
+        model.addAttribute("id",tDriver.getId());
+        model.addAttribute("code",tDriver.getCode());
+        model.addAttribute("name",tDriver.getName());
+        model.addAttribute("phone",tDriver.getPhone());
+        model.addAttribute("sex",tDriver.getSex());
+        model.addAttribute("driverLicenseNumber",tDriver.getDriverLicenseNumber());
+        model.addAttribute("driverLicense",tDriver.getDriverLicense());
+        model.addAttribute("idcard",tDriver.getIdcard());
+        model.addAttribute("idcardFront",tDriver.getIdcardFront());
+        model.addAttribute("idcardBack",tDriver.getIdcardBack());
+        model.addAttribute("emergencyContact",tDriver.getEmergencyContact());
+        model.addAttribute("emergencyPhone",tDriver.getEmergencyPhone());
+        model.addAttribute("provinceName",tDriver.getProvinceName());
+        model.addAttribute("cityName",tDriver.getCityName());
+        model.addAttribute("areaName",tDriver.getAreaName());
+        model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tDriver.getCreateTime()));
+
+        // 计算驾龄
+        ZoneId zoneId = ZoneId.systemDefault();
+        LocalDate firstTime = tDriver.getFirstCertificateTime().toInstant().atZone(zoneId).toLocalDate();
+        LocalDate now = tDriver.getFirstCertificateTime().toInstant().atZone(zoneId).toLocalDate();
+        Period period = Period.between(firstTime, now);
+        model.addAttribute("drivingExperience",period.getYears());
+
+        List<TOrder> tOrders = tOrderMapper.selectList(new EntityWrapper<TOrder>());
+
+        String monthDate = new SimpleDateFormat("yyyyMM").format(new Date());
+
+        // 设置余额
+        tDriver.setBalance(tDriver.getBackgroundBalance().add(tDriver.getBalance()));
+
+        // 所属代理商
+        TAgent tAgent = tAgentMapper.selectById(tDriver.getAgentId());
+        if(Objects.nonNull(tAgent)){
+            model.addAttribute("agentName",tAgent.getPrincipal());
+        }else {
+            model.addAttribute("agentName","");
+        }
+        //所属分公司
+        TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tDriver.getBranchOfficeId());
+        if(Objects.nonNull(tBranchOffice)){
+            model.addAttribute("principal",tBranchOffice.getPrincipal());
+        }else {
+            model.addAttribute("principal","");
+        }
+
+        // 查询邀请人
+        if(1 == tDriver.getInviterType()){
+            TAppUser tAppUser = tAppUserMapper.selectById(tDriver.getInviterId());
+            model.addAttribute("inviterName",tAppUser.getNickname());
+            model.addAttribute("inviterPhone",tAppUser.getPhone());
+        }else if(2 == tDriver.getInviterType()){
+            TDriver tDriver1 = tDriverMapper.selectById(tDriver.getInviterId());
+            model.addAttribute("inviterName",tDriver1.getName());
+            model.addAttribute("inviterPhone",tDriver1.getPhone());
+        }else {
+            model.addAttribute("inviterName","");
+            model.addAttribute("inviterPhone","");
+        }
+
+        if(!CollectionUtils.isEmpty(tOrders)){
+            //累计订单量
+            List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
+                    && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())).collect(Collectors.toList());
+            model.addAttribute("cumulativeOrderCount",cumulativeOrderCount.size());
+            //当月订单量
+            List<TOrder> monthOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
+                    && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())
+                    && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList());
+            model.addAttribute("monthOrderCount",monthOrderCount.size());
+            // TODO 拒单次数
+            List<TOrder> refusalCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
+                    && order.getState().equals(OrderStateEnum.CANCELED.getCode())).collect(Collectors.toList());
+            model.addAttribute("refusalCount",refusalCount.size());
+        }else {
+            model.addAttribute("cumulativeOrderCount","");
+            model.addAttribute("monthOrderCount","");
+            model.addAttribute("refusalCount","");
+        }
+    }
+
+    @Override
+    public void detail(Integer tDriverId, Model model) {
+        auditPage(tDriverId,model);
+        // TODO 查询司机
+        TDriver tDriver = tDriverMapper.selectById(tDriverId);
+    }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderRefusalServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderRefusalServiceImpl.java
new file mode 100644
index 0000000..45cdda5
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderRefusalServiceImpl.java
@@ -0,0 +1,20 @@
+package com.stylefeng.guns.modular.system.service.impl;
+
+import com.stylefeng.guns.modular.system.model.TOrderRefusal;
+import com.stylefeng.guns.modular.system.dao.TOrderRefusalMapper;
+import com.stylefeng.guns.modular.system.service.ITOrderRefusalService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 拒单记录 服务实现类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-02-21
+ */
+@Service
+public class TOrderRefusalServiceImpl extends ServiceImpl<TOrderRefusalMapper, TOrderRefusal> implements ITOrderRefusalService {
+
+}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html
new file mode 100644
index 0000000..532cb64
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html
@@ -0,0 +1,38 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-title">
+                <h5>管理</h5>
+            </div>
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <div class="row">
+                            <div class="col-sm-3">
+                                <#NameCon id="condition" name="名称" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#button name="搜索" icon="fa-search" clickFun="TBranchOffice.search()"/>
+                            </div>
+                        </div>
+                        <div class="hidden-xs" id="TBranchOfficeTableToolbar" role="group">
+                            @if(shiro.hasPermission("/tBranchOffice/add")){
+                                <#button name="添加" icon="fa-plus" clickFun="TBranchOffice.openAddTBranchOffice()"/>
+                            @}
+                            @if(shiro.hasPermission("/tBranchOffice/update")){
+                                <#button name="修改" icon="fa-edit" clickFun="TBranchOffice.openTBranchOfficeDetail()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tBranchOffice/delete")){
+                                <#button name="删除" icon="fa-remove" clickFun="TBranchOffice.delete()" space="true"/>
+                            @}
+                        </div>
+                        <#table id="TBranchOfficeTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_add.html
new file mode 100644
index 0000000..c0a72b0
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_add.html
@@ -0,0 +1,38 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="主键" underline="true"/>
+                            <#input id="agentId" name="代理商id" underline="true"/>
+                            <#input id="principal" name="负责人姓名" underline="true"/>
+                            <#input id="principalPhone" name="负责人电话" underline="true"/>
+                            <#input id="email" name="邮箱" underline="true"/>
+                            <#input id="provinceCode" name="代理区域省编号" underline="true"/>
+                            <#input id="provinceName" name="代理区域省名称"/>
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="cityCode" name="代理区域市编号" underline="true"/>
+                            <#input id="cityName" name="代理区域市名称" underline="true"/>
+                            <#input id="districtCode" name="代理区域区编号" underline="true"/>
+                            <#input id="districtName" name="代理区域区名称" underline="true"/>
+                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" underline="true"/>
+                            <#input id="createTime" name="添加时间" underline="true"/>
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TBranchOfficeInfoDlg.addSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBranchOfficeInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_edit.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_edit.html
new file mode 100644
index 0000000..37e8aa5
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice_edit.html
@@ -0,0 +1,38 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
+                            <#input id="agentId" name="代理商id" value="${item.agentId}" underline="true"/>
+                            <#input id="principal" name="负责人姓名" value="${item.principal}" underline="true"/>
+                            <#input id="principalPhone" name="负责人电话" value="${item.principalPhone}" underline="true"/>
+                            <#input id="email" name="邮箱" value="${item.email}" underline="true"/>
+                            <#input id="provinceCode" name="代理区域省编号" value="${item.provinceCode}" underline="true"/>
+                            <#input id="provinceName" name="代理区域省名称" value="${item.provinceName}" />
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="cityCode" name="代理区域市编号" value="${item.cityCode}" underline="true"/>
+                            <#input id="cityName" name="代理区域市名称" value="${item.cityName}" underline="true"/>
+                            <#input id="districtCode" name="代理区域区编号" value="${item.districtCode}" underline="true"/>
+                            <#input id="districtName" name="代理区域区名称" value="${item.districtName}" underline="true"/>
+                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" value="${item.status}" underline="true"/>
+                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TBranchOfficeInfoDlg.editSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBranchOfficeInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tBranchOffice/tBranchOffice_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html
index 4d7e25c..188d0cd 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html
@@ -27,16 +27,16 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TDriver.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-3">
-                                <button type="button" class="btn btn-primary " onclick="TAgent.export()" id="audit">
+                                <button type="button" class="btn btn-primary " onclick="TDriver.auditPage()" id="audit">
                                     <i class="fa "></i>&nbsp;立即审核
                                 </button>
-                                <button type="button" class="btn btn-primary " onclick="TAgent.export()" id="export">
+                                <button type="button" class="btn btn-primary " onclick="TDriver.export()" id="export">
                                     <i class="fa "></i>&nbsp;导出
                                 </button>
-                                <button type="button" class="btn btn-primary " onclick="TAgent.export()" id="driverException">
+                                <button type="button" class="btn btn-primary " onclick="TDriverException.tDriverException()" id="driverException">
                                     <i class="fa "></i>&nbsp;异常
                                 </button>
-                                <button type="button" class="btn btn-primary " onclick="TAgent.export()" id="recharge">
+                                <button type="button" class="btn btn-primary " onclick="TDriver.rechargeBalancePage()" id="recharge">
                                     <i class="fa "></i>&nbsp;充值
                                 </button>
                                 @if(shiro.hasPermission("/tAgent/add")){
@@ -63,6 +63,7 @@
     </div>
 </div>
 <script src="${ctxPath}/static/modular/system/tDriver/tDriver.js"></script>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriverException.js"></script>
 <script type="text/javascript">
     laydate.render({
         elem: '#createTime',
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAudit.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAudit.html
new file mode 100644
index 0000000..161689d
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverAudit.html
@@ -0,0 +1,151 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-title">
+                <h5>管理</h5>
+            </div>
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <input hidden id="id" value="${id}">
+
+                        <hr/>
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div style="background-color: gray;height: 35px;line-height: 35px">
+                                <label style="color: #0C0C0C">司机资料</label>
+                            </div>
+                        </div>
+                        <hr/>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >姓名:</label>
+                                <label>${name}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">头像:</label>
+                                <img src="https://lmg.jj20.com/up/allimg/1114/040221103339/210402103339-7-1200.jpg" />
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group" >
+                                <label class="control-label">紧急联系人:</label>
+                                <label>${emergencyContact}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >手机号:</label>
+                                <label>${phone}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">紧急联系人电话:</label>
+                                <label>${emergencyPhone}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >性别:</label>
+                                @if(sex==1){
+                                <label>男</label>
+                                @}
+                                @if(sex==2){
+                                <label>女</label>
+                                @}
+                                @if(sex==3){
+                                <label>未知</label>
+                                @}
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">邀请人:</label>
+                                <label>${phone}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group" >
+                                <label class="control-label">电话:</label>
+                                <label>${phone}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >驾驶证号码:</label>
+                                <label>${driverLicenseNumber}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">驾龄:</label>
+                                <label>${driverLicenseNumber}</label>
+                            </div>
+                        </div>
+
+                        <hr/>
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div style="background-color: gray;height: 35px;line-height: 35px">
+                                <label style="color: #0C0C0C">认证资料</label>
+                            </div>
+                        </div>
+                        <hr/>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >驾驶证照片:</label>
+                                <img src="https://lmg.jj20.com/up/allimg/1114/040221103339/210402103339-7-1200.jpg" />
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">身份证照片:</label>
+                                <img src="https://lmg.jj20.com/up/allimg/1114/040221103339/210402103339-7-1200.jpg" />
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >身份证号码:</label>
+                                <label>${idcard}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">加盟城市:</label>
+                                <label>${cityName}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">服务区域:</label>
+                                <label>${areaName}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >审核结果:</label>
+                                <select class="input-group col-sm-6" id="approvalStatus" style="width: 180px;height: 30px" name="approvalStatus">
+                                    <option value="">请选择审核结果</option>
+                                    <option value="2">审核通过</option>
+                                    <option value="3">审核不通过</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <textarea id="approvalNotes" placeholder="请输入原因" class="control-label" style="width: 280px;height: 100px"></textarea>
+                            </div>
+                        </div>
+
+                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
+                            <#button name="取消" icon="fa-plus" clickFun="TDriverInfoDlg.close()" />
+                            <#button name="确定" icon="fa-plus" clickFun="TDriver.auditSubmit()"/>
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriver.js"></script>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriver_info.js"></script>
+<script type="text/javascript">
+    laydate.render({
+        elem: '#createTime',
+        type: 'date',
+        range: true
+    });
+</script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverDetail.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverDetail.html
new file mode 100644
index 0000000..a4a6e19
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverDetail.html
@@ -0,0 +1,168 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-title">
+                <h5>管理</h5>
+            </div>
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <input hidden id="driverId" value="${id}">
+
+                        <hr/>
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div style="background-color: gray;height: 35px;line-height: 35px">
+                                <label style="color: #0C0C0C">司机详情</label>
+                            </div>
+                        </div>
+                        <hr/>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >注册时间:</label>
+                                <label>${createTime}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >姓名:</label>
+                                <label>${name}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >手机号:</label>
+                                <label>${phone}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group" >
+                                <label class="control-label">紧急联系人姓名:</label>
+                                <label>${emergencyContact}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">紧急联系人电话:</label>
+                                <label>${emergencyPhone}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">服务区域:</label>
+                                <label>${cityName}</label>
+                                <label>${areaName}</label>
+                            </div>
+                        </div>
+
+                        <hr/>
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div style="background-color: gray;height: 35px;line-height: 35px">
+                                <label style="color: #0C0C0C">认证资料</label>
+                            </div>
+                        </div>
+                        <hr/>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >身份证正面照:</label>
+                                <img src="https://lmg.jj20.com/up/allimg/1114/040221103339/210402103339-7-1200.jpg" />
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">身份证背面照:</label>
+                                <img src="https://lmg.jj20.com/up/allimg/1114/040221103339/210402103339-7-1200.jpg" />
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >姓名:</label>
+                                <label>${name}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >身份证号码:</label>
+                                <label>${idcard}</label>
+                            </div>
+                        </div>
+
+                        <hr/>
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div style="background-color: gray;height: 35px;line-height: 35px">
+                                <label style="color: #0C0C0C">历史记录</label>
+                            </div>
+                        </div>
+                        <hr/>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-2 control-label form-group"  >
+                                <label class="control-label" >累计订单:</label>
+                                <label>${name}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >邀约用户人数:</label>
+                                <label>${idcard}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >累计获得佣金:</label>
+                                <label>${idcard}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group"  >
+                                <label class="control-label" >当前积分:</label>
+                                <label>${idcard}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group"  >
+                                <label class="control-label" >代驾次数:</label>
+                                <label>${idcard}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-2 control-label form-group"  >
+                                <label class="control-label" >累计获得收入:</label>
+                                <label>${name}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >钱包余额:</label>
+                                <label>${idcard}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >评论分数:</label>
+                                <label>${idcard}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div style="background-color: gray;height: 35px;line-height: 35px">
+                                <label style="color: #0C0C0C">拒单记录</label>
+                            </div>
+                        </div>
+                        <hr/>
+
+                        <!--拒单记录表-->
+                        <#table id="TOrderRefusalTable"/>
+                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
+                            <#button name="取消" icon="fa-plus" clickFun="TDriverInfoDlg.close()" />
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriver.js"></script>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriver_info.js"></script>
+<script src="${ctxPath}/static/modular/system/tOrderRefusal/tOrderRefusal.js"></script>
+<script type="text/javascript">
+    /*$(function () {
+        var queryData = {};
+        queryData['condition'] = $("#driverId").val();;
+        TOrderRefusal.table.refresh({query: queryData});
+    });*/
+    laydate.render({
+        elem: '#createTime',
+        type: 'date',
+        range: true
+    });
+</script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverException.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverException.html
new file mode 100644
index 0000000..ee34855
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverException.html
@@ -0,0 +1,61 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-title">
+                <h5>管理</h5>
+            </div>
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <div class="row">
+                            <div class="col-sm-3">
+                                <#TimeCon id="createTime" name="时间" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#NameCon id="phone" name="手机号" />
+                            </div>
+                            <div class="col-sm-1">
+                                <select class="input-group" id="status" style="width: 80px;height: 33px" name="status">
+                                    <option value="">状态</option>
+                                    <option value="1">正常</option>
+                                    <option value="2">冻结</option>
+                                </select>
+                            </div>
+                            <div class="col-sm-3">
+                                <#button name="搜索" icon="fa-search" clickFun="TDriverException.search()"/>
+                                <#button name="重置" icon="fa-trash" clickFun="TDriverException.resetSearch()" space="true"/>
+                            </div>
+                            <div class="col-sm-3">
+                                <button type="button" class="btn btn-primary " onclick="TDriverException.export()" id="export">
+                                    <i class="fa "></i>&nbsp;导出
+                                </button>
+                            </div>
+                        </div>
+                        <!--<div class="hidden-xs" id="TDriverTableToolbar" role="group">
+                            @if(shiro.hasPermission("/tDriver/add")){
+                                <#button name="添加" icon="fa-plus" clickFun="TDriver.openAddTDriver()"/>
+                            @}
+                            @if(shiro.hasPermission("/tDriver/update")){
+                                <#button name="修改" icon="fa-edit" clickFun="TDriver.openTDriverDetail()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tDriver/delete")){
+                                <#button name="删除" icon="fa-remove" clickFun="TDriver.delete()" space="true"/>
+                            @}
+                        </div>-->
+                        <#table id="TDriverExceptionTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriverException.js"></script>
+<script type="text/javascript">
+    laydate.render({
+        elem: '#createTime',
+        type: 'date',
+        range: true
+    });
+</script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverExceptionStartAndStop.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverExceptionStartAndStop.html
new file mode 100644
index 0000000..d78c074
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverExceptionStartAndStop.html
@@ -0,0 +1,30 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <input hidden id="id" value="${id}">
+                        <input hidden id="status" value="${status}">
+                        <div class="col-lg-3">
+                            @if(status==1){
+                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" style="width: 681px; height: 249px;"></textarea>
+                            @}
+                            @if(status==2){
+                                解冻理由:<textarea id="startRemark" placeholder="请输入解冻理由" style="width: 681px; height: 249px;"></textarea>
+                            @}
+                        </div>
+                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="margin-left:300px">
+                            <#button name="取消" icon="fa-plus" clickFun="TDriverInfoDlg.closeException()" />
+                            <#button name="确定" icon="fa-plus" clickFun="TDriverException.updateStatus()"/>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriverException.js"></script>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriver_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverRechargeBalancePage.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverRechargeBalancePage.html
new file mode 100644
index 0000000..a99393e
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverRechargeBalancePage.html
@@ -0,0 +1,24 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <input hidden id="id" value="${id}">
+                        <div class="col-sm-12" style="text-align: center;height: 60px">
+                            充值余额:<input id="backgroundBalance" placeholder="请输入充值金额" style="width: 300px; height: 30px;" required/>
+                        </div>
+                        <div class="hidden-xs" id="TAppUserTableToolbar" role="group" style="text-align: center">
+                            <#button name="取消" icon="fa-plus" clickFun="TDriverInfoDlg.close()" />
+                            <#button name="确定" icon="fa-plus" clickFun="TDriver.rechargeBalance()"/>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriver.js"></script>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriver_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverStartAndStop.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverStartAndStop.html
new file mode 100644
index 0000000..818fdfb
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverStartAndStop.html
@@ -0,0 +1,30 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <input hidden id="id" value="${id}">
+                        <input hidden id="status" value="${status}">
+                        <div class="col-lg-3">
+                            @if(status==1){
+                                冻结理由:<textarea id="stopRemark" placeholder="请输入冻结理由" style="width: 681px; height: 249px;"></textarea>
+                            @}
+                            @if(status==2){
+                                解冻理由:<textarea id="startRemark" placeholder="请输入解冻理由" style="width: 681px; height: 249px;"></textarea>
+                            @}
+                        </div>
+                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="margin-left:300px">
+                            <#button name="取消" icon="fa-plus" clickFun="TDriverInfoDlg.close()" />
+                            <#button name="确定" icon="fa-plus" clickFun="TDriver.updateStatus()"/>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriver.js"></script>
+<script src="${ctxPath}/static/modular/system/tDriver/tDriver_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal.html
new file mode 100644
index 0000000..19642c0
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal.html
@@ -0,0 +1,38 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-title">
+                <h5>管理</h5>
+            </div>
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <div class="row">
+                            <div class="col-sm-3">
+                                <#NameCon id="condition" name="名称" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#button name="搜索" icon="fa-search" clickFun="TOrderRefusal.search()"/>
+                            </div>
+                        </div>
+                        <div class="hidden-xs" id="TOrderRefusalTableToolbar" role="group">
+                            @if(shiro.hasPermission("/tOrderRefusal/add")){
+                                <#button name="添加" icon="fa-plus" clickFun="TOrderRefusal.openAddTOrderRefusal()"/>
+                            @}
+                            @if(shiro.hasPermission("/tOrderRefusal/update")){
+                                <#button name="修改" icon="fa-edit" clickFun="TOrderRefusal.openTOrderRefusalDetail()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tOrderRefusal/delete")){
+                                <#button name="删除" icon="fa-remove" clickFun="TOrderRefusal.delete()" space="true"/>
+                            @}
+                        </div>
+                        <#table id="TOrderRefusalTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tOrderRefusal/tOrderRefusal.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal_add.html
new file mode 100644
index 0000000..d498b73
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal_add.html
@@ -0,0 +1,32 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="" underline="true"/>
+                            <#input id="orderId" name="订单id" underline="true"/>
+                            <#input id="driverId" name="司机id" underline="true"/>
+                            <#input id="startAddress" name="起点地址"/>
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="endAddress" name="终点地址" underline="true"/>
+                            <#input id="code" name="编号" underline="true"/>
+                            <#input id="createTime" name="添加时间" underline="true"/>
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TOrderRefusalInfoDlg.addSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TOrderRefusalInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tOrderRefusal/tOrderRefusal_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal_edit.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal_edit.html
new file mode 100644
index 0000000..bcfea24
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderRefusal/tOrderRefusal_edit.html
@@ -0,0 +1,32 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="" value="${item.id}" underline="true"/>
+                            <#input id="orderId" name="订单id" value="${item.orderId}" underline="true"/>
+                            <#input id="driverId" name="司机id" value="${item.driverId}" underline="true"/>
+                            <#input id="startAddress" name="起点地址" value="${item.startAddress}" />
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="endAddress" name="终点地址" value="${item.endAddress}" underline="true"/>
+                            <#input id="code" name="编号" value="${item.code}" underline="true"/>
+                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TOrderRefusalInfoDlg.editSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TOrderRefusalInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tOrderRefusal/tOrderRefusal_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js b/management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js
index 3788337..da37990 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js
@@ -153,8 +153,6 @@
         opts.length=0;// 这一句是清空原有列表项
         for(var i=0,n=data.length;i<n;i++){
             var data1=data[i];
-            console.log(data1.name)
-            console.log(data1.id)
             var opt=new Option(data1.name,data1.id,true,true);
             opts.add(opt);
         }
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice.js b/management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice.js
new file mode 100644
index 0000000..5914920
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice.js
@@ -0,0 +1,109 @@
+/**
+ * 管理初始化
+ */
+var TBranchOffice = {
+    id: "TBranchOfficeTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TBranchOffice.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
+            {title: '代理商id', field: 'agentId', visible: true, align: 'center', valign: 'middle'},
+            {title: '负责人姓名', field: 'principal', visible: true, align: 'center', valign: 'middle'},
+            {title: '负责人电话', field: 'principalPhone', visible: true, align: 'center', valign: 'middle'},
+            {title: '邮箱', field: 'email', visible: true, align: 'center', valign: 'middle'},
+            {title: '代理区域省编号', field: 'provinceCode', visible: true, align: 'center', valign: 'middle'},
+            {title: '代理区域省名称', field: 'provinceName', visible: true, align: 'center', valign: 'middle'},
+            {title: '代理区域市编号', field: 'cityCode', visible: true, align: 'center', valign: 'middle'},
+            {title: '代理区域市名称', field: 'cityName', visible: true, align: 'center', valign: 'middle'},
+            {title: '代理区域区编号', field: 'districtCode', visible: true, align: 'center', valign: 'middle'},
+            {title: '代理区域区名称', field: 'districtName', visible: true, align: 'center', valign: 'middle'},
+            {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: true, align: 'center', valign: 'middle'},
+            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'}
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+TBranchOffice.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        TBranchOffice.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加
+ */
+TBranchOffice.openAddTBranchOffice = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tBranchOffice/tBranchOffice_add'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 打开查看详情
+ */
+TBranchOffice.openTBranchOfficeDetail = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '详情',
+            area: ['800px', '420px'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tBranchOffice/tBranchOffice_update/' + TBranchOffice.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 删除
+ */
+TBranchOffice.delete = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/delete", function (data) {
+            Feng.success("删除成功!");
+            TBranchOffice.table.refresh();
+        }, function (data) {
+            Feng.error("删除失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("tBranchOfficeId",this.seItem.id);
+        ajax.start();
+    }
+};
+
+/**
+ * 查询列表
+ */
+TBranchOffice.search = function () {
+    var queryData = {};
+    queryData['condition'] = $("#condition").val();
+    TBranchOffice.table.refresh({query: queryData});
+};
+
+$(function () {
+    var defaultColunms = TBranchOffice.initColumn();
+    var table = new BSTable(TBranchOffice.id, "/tBranchOffice/list", defaultColunms);
+    table.setPaginationType("client");
+    TBranchOffice.table = table.init();
+});
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice_info.js
new file mode 100644
index 0000000..86c4666
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tBranchOffice/tBranchOffice_info.js
@@ -0,0 +1,105 @@
+/**
+ * 初始化详情对话框
+ */
+var TBranchOfficeInfoDlg = {
+    tBranchOfficeInfoData : {}
+};
+
+/**
+ * 清除数据
+ */
+TBranchOfficeInfoDlg.clearData = function() {
+    this.tBranchOfficeInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TBranchOfficeInfoDlg.set = function(key, val) {
+    this.tBranchOfficeInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TBranchOfficeInfoDlg.get = function(key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+TBranchOfficeInfoDlg.close = function() {
+    parent.layer.close(window.parent.TBranchOffice.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+TBranchOfficeInfoDlg.collectData = function() {
+    this
+    .set('id')
+    .set('agentId')
+    .set('principal')
+    .set('principalPhone')
+    .set('email')
+    .set('provinceCode')
+    .set('provinceName')
+    .set('cityCode')
+    .set('cityName')
+    .set('districtCode')
+    .set('districtName')
+    .set('status')
+    .set('createTime');
+}
+
+/**
+ * 提交添加
+ */
+TBranchOfficeInfoDlg.addSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/add", function(data){
+        Feng.success("添加成功!");
+        window.parent.TBranchOffice.table.refresh();
+        TBranchOfficeInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tBranchOfficeInfoData);
+    ajax.start();
+}
+
+/**
+ * 提交修改
+ */
+TBranchOfficeInfoDlg.editSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tBranchOffice/update", function(data){
+        Feng.success("修改成功!");
+        window.parent.TBranchOffice.table.refresh();
+        TBranchOfficeInfoDlg.close();
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tBranchOfficeInfoData);
+    ajax.start();
+}
+
+$(function() {
+
+});
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js
index 47f89ba..4a3d3a5 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js
@@ -30,27 +30,51 @@
                 }},
         {title: '驾驶证号码', field: 'driverLicenseNumber', visible: true, align: 'center', valign: 'middle'},
         {title: '身份证号码', field: 'idcard', visible: true, align: 'center', valign: 'middle'},
-        {title: '身份证', field: 'source', visible: true, align: 'center', valign: 'middle'},
-            {title: '所属代理商', field: 'agentId', visible: true, align: 'center', valign: 'middle'},
-            {title: '所属分公司', field: 'branchOfficeId', visible: true, align: 'center', valign: 'middle'},
+        {title: '身份证', field: 'source', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (null != row.idcardFront){
+                    return '<span>已上传</span>'
+                }else{
+                    return '<span>未上传</span>'
+                }
+            }},
+            {title: '所属代理商', field: 'agentName', visible: true, align: 'center', valign: 'middle'},
+            {title: '所属分公司', field: 'branchName', visible: true, align: 'center', valign: 'middle'},
             {title: '钱包余额', field: 'balance', visible: true, align: 'center', valign: 'middle'},
-            {title: '累计订单量', field: 'approvalStatus', visible: true, align: 'center', valign: 'middle'},
-            {title: '当月订单量', field: 'approvalNotes', visible: true, align: 'center', valign: 'middle'},
+            {title: '累计订单量', field: 'cumulativeOrderCount', visible: true, align: 'center', valign: 'middle'},
+            {title: '当月订单量', field: 'monthOrderCount', visible: true, align: 'center', valign: 'middle'},
             {title: '积分', field: 'integral', visible: true, align: 'center', valign: 'middle'},
-        {title: '拒单次数', field: 'approvalUserId', visible: true, align: 'center', valign: 'middle'},
-        {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle'},
+        {title: '拒单次数', field: 'refusalCount', visible: true, align: 'center', valign: 'middle'},
+        {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.status === 1){
+                    return '<span>正常</span>'
+                }else if (row.status === 2){
+                    return '<span>冻结</span>'
+                }else if (row.status === 3){
+                    return '<span>已删除</span>'
+                }
+            }},
+        {title: '审核状态', field: 'approvalStatus', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.approvalStatus === 1){
+                    return '<span>待审核</span>'
+                }else if (row.approvalStatus === 2){
+                    return '<span>审核通过</span>'
+                }else if (row.approvalStatus === 3){
+                    return '<span>审核不通过</span>'
+                }
+            }},
             {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
         {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
             formatter: function (value, row) {
-                /*if(row.approvalStatus === 1){
-                    return '<a href="#" onclick="TDriver.stop('+row.id+','+row.status+')" style="color:red">驳回</a>' +'&nbsp;' +
-                        '<a href="#" onclick="TDriver.searchTAppUserDetail('+row.id+','+row.status+')" style="color:green">详情</a>'
-                }else */if (row.status === 1){
-                    return '<a href="#" onclick="TDriver.stop('+row.id+','+row.status+')" style="color:red">停用</a>' +'&nbsp;' +
-                        '<a href="#" onclick="TDriver.searchTAppUserDetail('+row.id+','+row.status+')" style="color:green">详情</a>'
+                if (row.status === 1){
+                    return '<a href="#" onclick="TDriver.searchTDriverDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
+                        '<a href="#" onclick="TDriver.stop('+row.id+','+row.status+')" style="color:red">冻结</a>' +'&nbsp;' +
+                        '<a href="#" onclick="TDriver.updateInfo('+row.id+')" style="color:green">编辑</a>'
                 }else if (row.status === 2){
-                    return '<a href="#" onclick="TDriver.start('+row.id+','+row.status+')" style="color:green">启用</a>' +'&nbsp;' +
-                        '<a href="#" onclick="TDriver.searchTAppUserDetail('+row.id+','+row.status+')" style="color:green">详情</a>'
+                    return '<a href="#" onclick="TDriver.searchTDriverDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
+                        '<a href="#" onclick="TDriver.start('+row.id+','+row.status+')" style="color:green">解冻</a>'
                 }
             }
         }
@@ -104,6 +128,21 @@
 };
 
 /**
+ * 打开查看详情(使用中)
+ */
+TDriver.searchTDriverDetail = function (id) {
+    var index = layer.open({
+        type: 2,
+        title: '详情',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriver/driverDetail?tDriverId=' + id
+    });
+    this.layerIndex = index;
+};
+
+/**
  * 删除
  */
 TDriver.delete = function () {
@@ -120,6 +159,149 @@
 };
 
 /**
+ * 停用页面
+ */
+TDriver.stop = function (id) {
+    var index = layer.open({
+        type: 2,
+        title: '停用',
+        area: ['45%', '50%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriver/tDriver_start_and_stop?id='+id
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 启动页面
+ */
+TDriver.start = function (id) {
+    var index = layer.open({
+        type: 2,
+        title: '启用',
+        area: ['45%', '50%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriver/tDriver_start_and_stop?id='+id
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 提交启用冻结
+ */
+TDriver.updateStatus = function () {
+    var ajax = new $ax(Feng.ctxPath + "/tDriver/update-status", function (data) {
+        Feng.success("修改成功!");
+        TDriverInfoDlg.close();
+        parent.TDriver.table.refresh();
+    }, function (data) {
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("id",$("#id").val());
+    ajax.set("status",$("#status").val());
+    if($("#status").val() == 1){
+        ajax.set("remark",$("#stopRemark").val());
+    }
+    if($("#status").val() == 2){
+        ajax.set("remark",$("#startRemark").val());
+    }
+    ajax.start();
+};
+
+/**
+ * 跳转充值余额页面
+ * @param id
+ */
+TDriver.rechargeBalancePage = function () {
+    if (this.check()) {
+        var selected = $('#' + this.id).bootstrapTable('getSelections');
+        var id = selected[0].id;
+        var index = layer.open({
+            type: 2,
+            title: '充值余额',
+            area: ['45%', '20%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tDriver/rechargeBalancePage?id=' + id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 提交充值
+ */
+TDriver.rechargeBalance = function () {
+    var ajax = new $ax(Feng.ctxPath + "/tDriver/recharge-balance", function (data) {
+        Feng.success("修改成功!");
+        TDriverInfoDlg.close();
+        parent.TDriver.table.refresh();
+    }, function (data) {
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("id",$("#id").val());
+    ajax.set("money",$("#backgroundBalance").val());
+    ajax.start();
+};
+
+/**
+ * 司机信息导出
+ */
+TDriver.export=function(){
+    var createTime=$("#createTime").val()
+    var phone=$("#phone").val()
+    var status=$("#status").val()
+    window.location.href=Feng.ctxPath + "/tDriver/export?createTime="+createTime
+        +"&status="+status
+        +"&phone="+phone
+    ;
+}
+
+/**
+ * 跳转审核页面
+ * @param id
+ */
+TDriver.auditPage = function () {
+    if (this.check()) {
+        var selected = $('#' + this.id).bootstrapTable('getSelections');
+        var id = selected[0].id;
+        var approvalStatus = selected[0].approvalStatus;
+        if(approvalStatus != 1){
+            Feng.info("该条数据已审核!");
+            return false;
+        }
+        var index = layer.open({
+            type: 2,
+            title: '审核详情',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tDriver/auditPage?id=' + id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 提交审核
+ */
+TDriver.auditSubmit = function () {
+    var ajax = new $ax(Feng.ctxPath + "/tDriver/auditSubmit", function (data) {
+        Feng.success("修改成功!");
+        TDriverInfoDlg.close();
+        parent.TDriver.table.refresh();
+    }, function (data) {
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("id",$("#id").val());
+    ajax.set("approvalStatus",$("#approvalStatus").val());
+    ajax.set("approvalNotes",$("#approvalNotes").val());
+    ajax.start();
+};
+
+/**
  * 查询列表
  */
 TDriver.search = function () {
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriverException.js b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriverException.js
new file mode 100644
index 0000000..dfeb8aa
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriverException.js
@@ -0,0 +1,230 @@
+/**
+ * 管理初始化
+ */
+var TDriverException = {
+    id: "TDriverExceptionTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TDriverException.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
+            {title: '编号', field: 'code', visible: true, align: 'center', valign: 'middle'},
+            {title: '姓名', field: 'name', visible: true, align: 'center', valign: 'middle'},
+            {title: '手机号', field: 'phone', visible: true, align: 'center', valign: 'middle'},
+            {title: '性别', field: 'sex', visible: true, align: 'center', valign: 'middle',
+                formatter: function (value, row) {
+                    if (row.sex === 1){
+                        return '<span>男</span>'
+                    }else if (row.sex === 2){
+                        return '<span>女</span>'
+                    }else {
+                        return '<span>未知</span>'
+                    }
+                }},
+        {title: '驾驶证号码', field: 'driverLicenseNumber', visible: true, align: 'center', valign: 'middle'},
+        {title: '身份证号码', field: 'idcard', visible: true, align: 'center', valign: 'middle'},
+        {title: '身份证', field: 'source', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (null != row.idcardFront){
+                    return '<span>已上传</span>'
+                }else{
+                    return '<span>未上传</span>'
+                }
+            }},
+            {title: '累计订单量', field: 'cumulativeOrderCount', visible: true, align: 'center', valign: 'middle'},
+            {title: '当月订单量', field: 'monthOrderCount', visible: true, align: 'center', valign: 'middle'},
+            {title: '积分', field: 'integral', visible: true, align: 'center', valign: 'middle'},
+        {title: '连续未上线(天)', field: 'refusalCount', visible: true, align: 'center', valign: 'middle'},
+        {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                    return '<span>异常</span>'
+            }},
+            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
+        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
+            formatter: function (value, row) {
+                if (row.status === 1){
+                    return '<a href="#" onclick="TDriverException.stop('+row.id+','+row.status+')" style="color:red">冻结</a>'
+                }else if (row.status === 2){
+                    return '<a href="#" onclick="TDriverException.start('+row.id+','+row.status+')" style="color:green">解冻</a>'
+                }
+            }
+        }
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+TDriverException.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        TDriverException.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加
+ */
+TDriverException.openAddTDriver = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriver/tDriver_add'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 打开查看详情
+ */
+TDriverException.openTDriverDetail = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '详情',
+            area: ['800px', '420px'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tDriver/tDriver_update/' + TDriver.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 删除
+ */
+TDriverException.delete = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tDriver/delete", function (data) {
+            Feng.success("删除成功!");
+            TDriver.table.refresh();
+        }, function (data) {
+            Feng.error("删除失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("tDriverId",this.seItem.id);
+        ajax.start();
+    }
+};
+
+/**
+ * 停用页面
+ */
+TDriverException.stop = function (id) {
+    var index = layer.open({
+        type: 2,
+        title: '停用',
+        area: ['45%', '50%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriver/tDriverException_start_and_stop?id='+id
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 启动页面
+ */
+TDriverException.start = function (id) {
+    var index = layer.open({
+        type: 2,
+        title: '启用',
+        area: ['45%', '50%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriver/tDriverException_start_and_stop?id='+id
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 提交启用冻结
+ */
+TDriverException.updateStatus = function () {
+    var ajax = new $ax(Feng.ctxPath + "/tDriver/update-status", function (data) {
+        Feng.success("修改成功!");
+        TDriverInfoDlg.closeException();
+        parent.TDriverException.table.refresh();
+    }, function (data) {
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("id",$("#id").val());
+    ajax.set("status",$("#status").val());
+    if($("#status").val() == 1){
+        ajax.set("remark",$("#stopRemark").val());
+    }
+    if($("#status").val() == 2){
+        ajax.set("remark",$("#startRemark").val());
+    }
+    ajax.start();
+};
+
+/**
+ * 司机异常信息导出
+ */
+TDriverException.export=function(){
+    var createTime=$("#createTime").val()
+    var phone=$("#phone").val()
+    var status=$("#status").val()
+    window.location.href=Feng.ctxPath + "/tDriver/export-exception?createTime="+createTime
+        +"&status="+status
+        +"&phone="+phone
+    ;
+}
+
+/**
+ * 司机异常列表
+ */
+TDriverException.tDriverException = function () {
+    var index = layer.open({
+        type: 2,
+        title: '司机异常列表',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriver/tDriver_exception'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 查询列表
+ */
+TDriverException.search = function () {
+    var queryData = {};
+    queryData['createTime'] = $("#createTime").val();
+    queryData['phone'] = $("#phone").val();
+    queryData['status'] = $("#status").val();
+    TDriverException.table.refresh({query: queryData});
+};
+
+/**
+ * 重置
+ */
+TDriverException.resetSearch = function (){
+    $("#createTime").val('');
+    $("#phone").val('');
+    $("#status").val('');
+    TDriverException.search();
+}
+
+$(function () {
+    var defaultColunms = TDriverException.initColumn();
+    var table = new BSTable(TDriverException.id, "/tDriver/exceptionList", defaultColunms);
+    table.setPaginationType("client");
+    TDriverException.table = table.init();
+});
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js
index fd5ba96..f7c9bf5 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js
@@ -40,6 +40,10 @@
     parent.layer.close(window.parent.TDriver.layerIndex);
 }
 
+TDriverInfoDlg.closeException = function() {
+    parent.layer.close(window.parent.TDriverException.layerIndex);
+}
+
 /**
  * 收集数据
  */
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tOrderRefusal/tOrderRefusal.js b/management/guns-admin/src/main/webapp/static/modular/system/tOrderRefusal/tOrderRefusal.js
new file mode 100644
index 0000000..96a107c
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tOrderRefusal/tOrderRefusal.js
@@ -0,0 +1,101 @@
+/**
+ * 管理初始化
+ */
+var TOrderRefusal = {
+    id: "TOrderRefusalTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TOrderRefusal.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
+        {title: '拒单时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
+        {title: '订单编号', field: 'code', visible: true, align: 'center', valign: 'middle'},
+        {title: '起点地址', field: 'startAddress', visible: true, align: 'center', valign: 'middle'},
+        {title: '终点地址', field: 'endAddress', visible: true, align: 'center', valign: 'middle'}
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+TOrderRefusal.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        TOrderRefusal.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加
+ */
+TOrderRefusal.openAddTOrderRefusal = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tOrderRefusal/tOrderRefusal_add'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 打开查看详情
+ */
+TOrderRefusal.openTOrderRefusalDetail = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '详情',
+            area: ['800px', '420px'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tOrderRefusal/tOrderRefusal_update/' + TOrderRefusal.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 删除
+ */
+TOrderRefusal.delete = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tOrderRefusal/delete", function (data) {
+            Feng.success("删除成功!");
+            TOrderRefusal.table.refresh();
+        }, function (data) {
+            Feng.error("删除失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("tOrderRefusalId",this.seItem.id);
+        ajax.start();
+    }
+};
+
+/**
+ * 查询列表
+ */
+TOrderRefusal.search = function () {
+    var queryData = {};
+    queryData['condition'] = $("#condition").val();
+    TOrderRefusal.table.refresh({query: queryData});
+};
+
+$(function () {
+    var defaultColunms = TOrderRefusal.initColumn();
+    var table = new BSTable(TOrderRefusal.id, "/tOrderRefusal/list", defaultColunms);
+    table.setPaginationType("client");
+    TOrderRefusal.table = table.init();
+});
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tOrderRefusal/tOrderRefusal_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tOrderRefusal/tOrderRefusal_info.js
new file mode 100644
index 0000000..3974b61
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tOrderRefusal/tOrderRefusal_info.js
@@ -0,0 +1,99 @@
+/**
+ * 初始化详情对话框
+ */
+var TOrderRefusalInfoDlg = {
+    tOrderRefusalInfoData : {}
+};
+
+/**
+ * 清除数据
+ */
+TOrderRefusalInfoDlg.clearData = function() {
+    this.tOrderRefusalInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TOrderRefusalInfoDlg.set = function(key, val) {
+    this.tOrderRefusalInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TOrderRefusalInfoDlg.get = function(key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+TOrderRefusalInfoDlg.close = function() {
+    parent.layer.close(window.parent.TOrderRefusal.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+TOrderRefusalInfoDlg.collectData = function() {
+    this
+    .set('id')
+    .set('orderId')
+    .set('driverId')
+    .set('startAddress')
+    .set('endAddress')
+    .set('code')
+    .set('createTime');
+}
+
+/**
+ * 提交添加
+ */
+TOrderRefusalInfoDlg.addSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tOrderRefusal/add", function(data){
+        Feng.success("添加成功!");
+        window.parent.TOrderRefusal.table.refresh();
+        TOrderRefusalInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tOrderRefusalInfoData);
+    ajax.start();
+}
+
+/**
+ * 提交修改
+ */
+TOrderRefusalInfoDlg.editSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tOrderRefusal/update", function(data){
+        Feng.success("修改成功!");
+        window.parent.TOrderRefusal.table.refresh();
+        TOrderRefusalInfoDlg.close();
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tOrderRefusalInfoData);
+    ajax.start();
+}
+
+$(function() {
+
+});

--
Gitblit v1.7.1