From 43febc1135430529aa1f573ea75a8c7dfa025d89 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 20 五月 2024 11:31:49 +0800
Subject: [PATCH] 接送机价格设置

---
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemPriceMapper.java                            |   13 
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/tSystemPrice_editTransfer.html                        |  182 ++++
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/tSystemPrice_addTransfer.html                         |  182 ++++
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java    |  140 +++
 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverFacialFail/tDriverFacialFail_info.js                      |  139 +++
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer_add.html                                  |   24 
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemPriceServiceImpl.java              |    5 
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverFacialFailController.java    |  152 +++
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverFacialFail.java                           |   12 
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_detail.html                    |    2 
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemPriceMapper.xml                     |   14 
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverFacialFailMapper.java                       |   14 
 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverFacialFail/tDriverFacialFail.js                           |  224 +++++
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarModelController.java            |    6 
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemPriceService.java                      |   13 
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer.html                                      |   49 +
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverFacialFailMapper.xml                |   18 
 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tSystemPrice/transfer.js                                         |  229 +++++
 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/transfer_info.js                                 |  131 +++
 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/transfer.js                                      |  205 +++++
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverFacialFailServiceImpl.java         |    8 
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer_edit.html                                 |   24 
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/transfer.html                                         |   52 +
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverFacialFailService.java                 |   14 
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail.html                           |    2 
 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tSystemPrice/transfer_info.js                                    |  477 +++++++++++
 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TServerCarmodelController.java |   70 +
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_add.html                       |   19 
 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_edit.html                      |   36 
 29 files changed, 2,408 insertions(+), 48 deletions(-)

diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarModelController.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarModelController.java
index 05263b5..549c3f2 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarModelController.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarModelController.java
@@ -45,7 +45,7 @@
      */
     @RequestMapping("")
     public String index() {
-        return PREFIX + "tCharteredService.html";
+        return PREFIX + "tCarModel.html";
     }
 
     /**
@@ -55,7 +55,7 @@
     public String tCarModelAdd(Model model) {
         List<TCarBrand> brandList = tCarBrandService.selectList(new EntityWrapper<TCarBrand>().eq("state", 1).orderBy("insertTime", false));
         model.addAttribute("brandList",brandList);
-        return PREFIX + "tCharteredService_add.html";
+        return PREFIX + "tCarModel_add.html";
     }
 
     /**
@@ -69,7 +69,7 @@
 
         List<TCarBrand> brandList = tCarBrandService.selectList(new EntityWrapper<TCarBrand>().eq("state", 1).orderBy("insertTime", false));
         model.addAttribute("brandList",brandList);
-        return PREFIX + "tCharteredService_edit.html";
+        return PREFIX + "tCarModel_edit.html";
     }
 
     /**
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverFacialFailController.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverFacialFailController.java
new file mode 100644
index 0000000..a653ba7
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverFacialFailController.java
@@ -0,0 +1,152 @@
+package com.stylefeng.guns.modular.system.controller.general;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.core.common.constant.factory.PageFactory;
+import com.stylefeng.guns.core.log.LogObjectHolder;
+import com.stylefeng.guns.core.util.SinataUtil;
+import com.stylefeng.guns.modular.system.model.TCarBrand;
+import com.stylefeng.guns.modular.system.model.TDriver;
+import com.stylefeng.guns.modular.system.model.TDriverFacialFail;
+import com.stylefeng.guns.modular.system.service.ITCarBrandService;
+import com.stylefeng.guns.modular.system.service.ITDriverFacialFailService;
+import com.stylefeng.guns.modular.system.service.ITDriverService;
+import com.stylefeng.guns.modular.system.util.ResultUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 司机人脸识别异常记录管理控制器
+ *
+ * @author fengshuonan
+ * @Date 2020-06-05 14:31:28
+ */
+@Controller
+@RequestMapping("/tDriverFacialFail")
+public class TDriverFacialFailController extends BaseController {
+
+    private String PREFIX = "/system/tDriverFacialFail/";
+
+    @Autowired
+    private ITDriverFacialFailService tDriverFacialFailService;
+    @Autowired
+    private ITDriverService driverService;
+
+    /**
+     * 跳转到司机人脸识别异常记录管理首页
+     */
+    @RequestMapping("")
+    public String index() {
+        return PREFIX + "tDriverFacialFail.html";
+    }
+
+    /**
+     * 跳转到添加司机人脸识别异常记录管理
+     */
+    @RequestMapping("/tDriverFacialFail_add")
+    public String tDriverFacialFailAdd(Model model) {
+        return PREFIX + "tDriverFacialFail_add.html";
+    }
+
+    /**
+     * 跳转到修改司机人脸识别异常记录管理
+     */
+    @RequestMapping("/tDriverFacialFail_update/{tDriverFacialFailId}")
+    public String tDriverFacialFailUpdate(@PathVariable Integer tDriverFacialFailId, Model model) {
+        TDriverFacialFail tDriverFacialFail = tDriverFacialFailService.selectById(tDriverFacialFailId);
+        TDriver driver = driverService.selectById(tDriverFacialFail.getDriverId());
+        model.addAttribute("item",tDriverFacialFail);
+        model.addAttribute("driverName",driver.getName());
+        model.addAttribute("driverPhone",driver.getPhone());
+        LogObjectHolder.me().set(tDriverFacialFail);
+        return PREFIX + "tDriverFacialFail_edit.html";
+    }
+
+    /**
+     * 获取司机人脸识别异常记录管理列表
+     */
+    @RequestMapping(value = "/list")
+    @ResponseBody
+    public Object list(String createTime,
+                       String name,
+                       String phone) {
+        String beginTime = null;
+        String endTime = null;
+        if (SinataUtil.isNotEmpty(createTime)){
+            String[] timeArray = createTime.split(" - ");
+            beginTime = timeArray[0];
+            endTime = timeArray[1];
+        }
+        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+        page.setRecords(tDriverFacialFailService.getDriverFacialFailList(page,beginTime,endTime,name,phone));
+        return super.packForBT(page);
+    }
+
+    /**
+     * 删除司机人脸识别异常记录管理
+     */
+    @RequestMapping(value = "/delete")
+    @ResponseBody
+    public Object delete(@RequestParam Integer tDriverFacialFailId) {
+        TDriverFacialFail tDriverFacialFail = tDriverFacialFailService.selectById(tDriverFacialFailId);
+        tDriverFacialFail.setIsDelete(2);
+        tDriverFacialFailService.updateById(tDriverFacialFail);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 删除司机人脸识别异常记录管理
+     */
+    @RequestMapping(value = "/deleteBatch")
+    @ResponseBody
+    public Object deleteBatch(@RequestParam String tDriverFacialFailIds) {
+
+        if(!StringUtils.hasLength(tDriverFacialFailIds)){
+            return ResultUtil.error("请选择要删除的数据");
+        }
+
+        String[] split = tDriverFacialFailIds.split(",");
+        List<Integer> driverFacialFailIds = new ArrayList<>();
+        for (String s : split) {
+            driverFacialFailIds.add(Integer.valueOf(s));
+        }
+
+        List<TDriverFacialFail> driverFacialFails = tDriverFacialFailService.selectList(new EntityWrapper<TDriverFacialFail>()
+                .in("id", driverFacialFailIds));
+        driverFacialFails.forEach(tDriverFacialFail -> {
+            tDriverFacialFail.setIsDelete(2);
+        });
+        tDriverFacialFailService.updateBatchById(driverFacialFails);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 解封司机人脸识别
+     */
+    @RequestMapping(value = "/unsealing")
+    @ResponseBody
+    public Object unsealing(@RequestParam Integer tDriverFacialFailId) {
+        TDriverFacialFail tDriverFacialFail = tDriverFacialFailService.selectById(tDriverFacialFailId);
+        // 重置司机失败次数,并且更新是否需要进行人脸识别和识别时间
+        TDriver driver = driverService.selectById(tDriverFacialFail.getDriverId());
+        driver.setFailCount(0);
+        driver.setIsNeedFacial(0);
+        driver.setLastFacialTime(new Date());
+        driverService.updateById(driver);
+        return SUCCESS_TIP;
+    }
+
+
+}
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TServerCarmodelController.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TServerCarmodelController.java
index 4844438..ddf7db3 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TServerCarmodelController.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TServerCarmodelController.java
@@ -60,6 +60,14 @@
     }
 
     /**
+     * 跳转到接送机车型设置首页
+     */
+    @RequestMapping("/transfer")
+    public String transfer() {
+        return PREFIX + "transfer.html";
+    }
+
+    /**
      * 跳转到添加专车车型设置
      */
     @RequestMapping("/tServerCarmodel_add")
@@ -119,6 +127,24 @@
         return PREFIX + "charter_edit.html";
     }
 
+    /**
+     * 跳转到添加接送机车型设置
+     */
+    @RequestMapping("/tServerCarmodel_addTransfer")
+    public String tServerCarmodel_addTransfer() {
+        return PREFIX + "transfer_add.html";
+    }
+
+
+    /**
+     * 跳转到添加接送机车型设置
+     */
+    @RequestMapping("/tServerCarmodel_editTransfer")
+    public String tServerCarmodel_editTransfer(Integer id, Model model) {
+        TServerCarmodel tServerCarmodel = tServerCarmodelService.selectById(id);
+        model.addAttribute("data", tServerCarmodel);
+        return PREFIX + "transfer_edit.html";
+    }
 
     /**
      * 获取专车车型设置列表
@@ -161,6 +187,21 @@
             page.setRecords(null);
         }else{
             page.setRecords(tServerCarmodelService.getServerCarModelList(page,3,name,state));
+        }
+        return super.packForBT(page);
+    }
+
+    /**
+     * 获取接送机车型设置列表
+     */
+    @RequestMapping(value = "/listTransfer")
+    @ResponseBody
+    public Object listTransfer(String name,Integer state) {
+        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+        if (ShiroKit.getUser().getRoleType() != 1){
+            page.setRecords(null);
+        }else{
+            page.setRecords(tServerCarmodelService.getServerCarModelList(page,7,name,state));
         }
         return super.packForBT(page);
     }
@@ -263,7 +304,36 @@
         return SUCCESS_TIP;
     }
 
+    /**
+     * 新增接送机车型设置
+     */
+    @RequestMapping(value = "/addTransfer")
+    @ResponseBody
+    public Object addTransfer(TServerCarmodel tServerCarmodel) {
+        int count = tServerCarmodelService.selectCount(new EntityWrapper<TServerCarmodel>().eq("type", 7)
+                .eq("name", tServerCarmodel.getName()).last(" and not FIND_IN_SET(state,'3')"));
+        if (count > 0){
+            return new ErrorTip(500, "【"+tServerCarmodel.getName()+"】已存在,请重新输入");
+        }
+        tServerCarmodel.setInsertTime(new Date());
+        tServerCarmodel.setState(1);
+        tServerCarmodel.setType(7);
+        tServerCarmodelService.insert(tServerCarmodel);
+        return SUCCESS_TIP;
+    }
 
+    /**
+     * 修改接送机车型设置
+     */
+    @RequestMapping(value = "/updateTransfer")
+    @ResponseBody
+    public Object updateTransfer(TServerCarmodel tServerCarmodel) {
+        tServerCarmodel.setInsertTime(new Date());
+        tServerCarmodel.setState(1);
+        tServerCarmodel.setType(7);
+        tServerCarmodelService.updateById(tServerCarmodel);
+        return SUCCESS_TIP;
+    }
 
     /**
      * 禁用/启用
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java
index 1591e31..89cb7d8 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSystemPriceController.java
@@ -88,6 +88,14 @@
     }
 
     /**
+     * 跳转到接送机价格设置首页
+     */
+    @RequestMapping("/transfer")
+    public String transfer() {
+        return PREFIX + "transfer.html";
+    }
+
+    /**
      * 跳转到添加专车价格设置
      */
     @RequestMapping("/tSystemPrice_add")
@@ -110,6 +118,31 @@
         }
         model.addAttribute("modelList",serverCarmodels);
         return PREFIX + "tSystemPrice_add.html";
+    }
+
+    /**
+     * 跳转到添加专车价格设置
+     */
+    @RequestMapping("/tSystemPrice_addTransfer")
+    public String tSystemPrice_addTransfer(Model model) {
+        //查询所有专车车型
+        List<TSystemPrice> tSystemPrices = tSystemPriceService.selectList(new EntityWrapper<TSystemPrice>().eq("type", 7).eq("companyId", ShiroKit.getUser().getObjectId()).ne("state", 3));
+        List<TServerCarmodel> modelList = tServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 7).eq("state", 1));
+        List<TServerCarmodel> serverCarmodels = new ArrayList<>();
+        for(TServerCarmodel tsc : modelList){
+            boolean b = true;
+            for(TSystemPrice tsp : tSystemPrices){
+                if(tsc.getId().compareTo(tsp.getServerCarModelId()) == 0){
+                    b = false;
+                    break;
+                }
+            }
+            if(b){
+                serverCarmodels.add(tsc);
+            }
+        }
+        model.addAttribute("modelList",serverCarmodels);
+        return PREFIX + "tSystemPrice_addTransfer.html";
     }
 
     /**
@@ -147,6 +180,40 @@
     }
 
     /**
+     * 跳转到修改接送机价格设置
+     */
+    @RequestMapping("/tSystemPrice_updateTransfer/{tSystemPriceId}")
+    public String tSystemPrice_updateTransfer(@PathVariable Integer tSystemPriceId, Model model) {
+        TSystemPrice tSystemPrice = tSystemPriceService.selectById(tSystemPriceId);
+        model.addAttribute("item",tSystemPrice);
+        LogObjectHolder.me().set(tSystemPrice);
+
+        JSONObject json = JSONObject.fromObject(tSystemPrice.getContent());
+        model.addAttribute("json",json);
+
+        //查询所有专车车型
+        List<TSystemPrice> tSystemPrices = tSystemPriceService.selectList(new EntityWrapper<TSystemPrice>().eq("type", 7).eq("companyId", ShiroKit.getUser().getObjectId()).ne("state", 3));
+        List<TServerCarmodel> modelList = tServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 7).eq("state", 1));
+        List<TServerCarmodel> serverCarmodels = new ArrayList<>();
+        for(TServerCarmodel tsc : modelList){
+            boolean b = true;
+            for(TSystemPrice tsp : tSystemPrices){
+                if(tsc.getId().compareTo(tsp.getServerCarModelId()) == 0){
+                    b = false;
+                    break;
+                }
+            }
+            if(b){
+                serverCarmodels.add(tsc);
+            }
+        }
+        serverCarmodels.add(tServerCarmodelService.selectById(tSystemPrice.getServerCarModelId()));
+        model.addAttribute("modelList",serverCarmodels);
+
+        return PREFIX + "tSystemPrice_editTransfer.html";
+    }
+
+    /**
      * 获取专车价格设置列表
      */
     @RequestMapping(value = "/listSpecial")
@@ -154,6 +221,17 @@
     public Object list(String name,Integer state) {
         Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
         page.setRecords(tSystemPriceService.getSpecialPriceList(page,ShiroKit.getUser().getObjectId(),name,state));
+        return super.packForBT(page);
+    }
+
+    /**
+     * 获取接送机价格设置列表
+     */
+    @RequestMapping(value = "/listTransfer")
+    @ResponseBody
+    public Object listTransfer(String name,Integer state) {
+        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+        page.setRecords(tSystemPriceService.getTransferPriceList(page,ShiroKit.getUser().getObjectId(),name,state));
         return super.packForBT(page);
     }
 
@@ -189,6 +267,37 @@
     }
 
     /**
+     * 新增接送机价格设置
+     */
+    @RequestMapping(value = "/addTransfer")
+    @ResponseBody
+    public Object addTransfer(TSystemPrice tSystemPrice) {
+        //判断当前公司是否添加过该专车车型价格配置
+        int count = tSystemPriceService.selectCount(new EntityWrapper<TSystemPrice>()
+                .eq("type", 7)
+                .eq("serverCarModelId", tSystemPrice.getServerCarModelId())
+                .eq("companyId",ShiroKit.getUser().getObjectId())
+                .last(" and not FIND_IN_SET(state,'3')"));
+        if (count > 0){
+            TServerCarmodel one = tServerCarmodelService.selectById(tSystemPrice.getServerCarModelId());
+            return new ErrorTip(500, "【"+one.getName()+"】已存在,请重新选择");
+        }
+        tSystemPrice.setCompanyId(ShiroKit.getUser().getObjectId());
+        tSystemPrice.setType(7);
+        tSystemPrice.setState(1);
+        tSystemPriceService.insert(tSystemPrice);
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                if(pushMinistryOfTransport){//上传数据
+                    pushMinistryOfTransportUtil.baseInfoCompanyFare(tSystemPrice.getId());
+                }
+            }
+        }).start();
+        return SUCCESS_TIP;
+    }
+
+    /**
      * 修改专车价格设置
      */
     @RequestMapping(value = "/update")
@@ -220,6 +329,37 @@
     }
 
     /**
+     * 修改专车价格设置
+     */
+    @RequestMapping(value = "/updateTransfer")
+    @ResponseBody
+    public Object updateTransfer(TSystemPrice tSystemPrice) {
+        TSystemPrice obj = tSystemPriceService.selectById(tSystemPrice.getId());
+        if (obj.getServerCarModelId() != tSystemPrice.getServerCarModelId()){
+            //判断当前公司是否添加过该专车车型价格配置
+            int count = tSystemPriceService.selectCount(new EntityWrapper<TSystemPrice>()
+                    .eq("type", 7)
+                    .eq("serverCarModelId", tSystemPrice.getServerCarModelId())
+                    .eq("companyId",ShiroKit.getUser().getObjectId())
+                    .last(" and not FIND_IN_SET(state,'3')"));
+            if (count > 0){
+                TServerCarmodel one = tServerCarmodelService.selectById(tSystemPrice.getServerCarModelId());
+                return new ErrorTip(500, "【"+one.getName()+"】已存在,请重新选择");
+            }
+        }
+        tSystemPriceService.updateById(tSystemPrice);
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                if(pushMinistryOfTransport) {//上传数据
+                    pushMinistryOfTransportUtil.baseInfoCompanyFare(tSystemPrice.getId());
+                }
+            }
+        }).start();
+        return SUCCESS_TIP;
+    }
+
+    /**
      * 修改状态
      */
     @RequestMapping(value = "/opt")
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverFacialFailMapper.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverFacialFailMapper.java
index b458103..25969cd 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverFacialFailMapper.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverFacialFailMapper.java
@@ -19,4 +19,18 @@
  */
 public interface TDriverFacialFailMapper extends BaseMapper<TDriverFacialFail> {
 
+    /**
+     * 查询人脸识别异常记录列表
+     * @param page
+     * @param beginTime
+     * @param endTime
+     * @param name
+     * @param phone
+     * @return
+     */
+    List<Map<String, Object>> getDriverFacialFailList(@Param("page") Page<Map<String, Object>> page,
+                                                      @Param("beginTime") String beginTime,
+                                                      @Param("endTime") String endTime,
+                                                      @Param("name") String name,
+                                                      @Param("phone") String phone);
 }
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemPriceMapper.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemPriceMapper.java
index af7ac0e..f8dc725 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemPriceMapper.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TSystemPriceMapper.java
@@ -25,4 +25,17 @@
                                                  @Param("companyId") Integer companyId,
                                                  @Param("name") String name,
                                                  @Param("state") Integer state);
+
+    /**
+     * 获取接送机价格设置列表
+     * @param page
+     * @param companyId
+     * @param name
+     * @param state
+     * @return
+     */
+    List<Map<String, Object>> getTransferPriceList(@Param("page") Page<Map<String, Object>> page,
+                                                   @Param("companyId") Integer companyId,
+                                                   @Param("name") String name,
+                                                   @Param("state") Integer state);
 }
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverFacialFailMapper.xml b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverFacialFailMapper.xml
index 74f84f9..6428c3a 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverFacialFailMapper.xml
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverFacialFailMapper.xml
@@ -17,5 +17,23 @@
     <sql id="Base_Column_List">
         id, driverId, city, cityCode, facialPicture, createTime, isDelete
     </sql>
+    <select id="getDriverFacialFailList" resultType="java.util.Map">
+        SELECT tdff.id, tdff.driverId, tdff.city, tdff.cityCode, tdff.facialPicture, tdff.createTime, tdff.isDelete ,td.`name` AS driverName,td.phone AS driverPhone
+        FROM t_driver_facial_fail tdff
+        left join t_driver td on td.id = tdff.driverId
+        <where>
+            <if test="beginTime != null and beginTime != '' and endTime != null and endTime != ''">
+                AND (tdff.createTime between CONCAT(#{beginTime},' 00:00:00') and CONCAT(#{endTime},' 23:59:59'))
+            </if>
+            <if test="name != null and name != ''">
+                AND td.name  LIKE CONCAT('%',#{name},'%')
+            </if>
+            <if test="phone != null and phone != ''">
+                AND td.phone  LIKE CONCAT('%',#{phone},'%')
+            </if>
+            AND tdff.isDelete = 1
+        </where>
+        order by tdff.createTime desc
+    </select>
 
 </mapper>
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemPriceMapper.xml b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemPriceMapper.xml
index 08d30cb..2ec887d 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemPriceMapper.xml
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TSystemPriceMapper.xml
@@ -33,5 +33,19 @@
         </where>
         order by o.id desc
     </select>
+    <select id="getTransferPriceList" resultType="java.util.Map" parameterType="com.baomidou.mybatisplus.plugins.Page">
+        SELECT * FROM (SELECT sp.id,sp.type,sp.companyId,sc.`name`,sc.img,sp.state from t_system_price as sp
+        LEFT JOIN t_server_carmodel as sc on sc.id = sp.serverCarModelId) as o
+        <where>
+            o.type = 7 and o.state != 3 and o.companyId = #{companyId}
+            <if test="name != null and name != ''">
+                and o.name LIKE CONCAT('%',#{name},'%')
+            </if>
+            <if test="state != null and state != ''">
+                and o.state = #{state}
+            </if>
+        </where>
+        order by o.id desc
+    </select>
 
 </mapper>
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverFacialFail.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverFacialFail.java
index 43db96f..6669b87 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverFacialFail.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverFacialFail.java
@@ -46,11 +46,11 @@
     /**
      * 识别时间
      */
-    private String createTime;
+    private Date createTime;
     /**
      * 是否删除  1=否 2=是
      */
-    private String isDelete;
+    private Integer isDelete;
 
     public Integer getId() {
         return id;
@@ -92,19 +92,19 @@
         this.facialPicture = facialPicture;
     }
 
-    public String getCreateTime() {
+    public Date getCreateTime() {
         return createTime;
     }
 
-    public void setCreateTime(String createTime) {
+    public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
 
-    public String getIsDelete() {
+    public Integer getIsDelete() {
         return isDelete;
     }
 
-    public void setIsDelete(String isDelete) {
+    public void setIsDelete(Integer isDelete) {
         this.isDelete = isDelete;
     }
 
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverFacialFailService.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverFacialFailService.java
index 871eaa4..d6bd290 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverFacialFailService.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverFacialFailService.java
@@ -1,7 +1,11 @@
 package com.stylefeng.guns.modular.system.service;
 
+import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.IService;
 import com.stylefeng.guns.modular.system.model.TDriverFacialFail;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +17,14 @@
  */
 public interface ITDriverFacialFailService extends IService<TDriverFacialFail> {
 
+    /**
+     * 查询人脸识别失败记录列表
+     * @param page
+     * @param beginTime
+     * @param endTime
+     * @param name
+     * @param phone
+     * @return
+     */
+    List<Map<String, Object>> getDriverFacialFailList(Page<Map<String, Object>> page, String beginTime, String endTime, String name, String phone);
 }
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemPriceService.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemPriceService.java
index 03fdca8..90cd34f 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemPriceService.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITSystemPriceService.java
@@ -25,4 +25,17 @@
                                                  @Param("companyId") Integer companyId,
                                                  @Param("name") String name,
                                                  @Param("state") Integer state);
+
+    /**
+     * 获取接送机价格设置列表
+     * @param page
+     * @param companyId
+     * @param name
+     * @param state
+     * @return
+     */
+    List<Map<String, Object>> getTransferPriceList(@Param("page") Page<Map<String, Object>> page,
+                                                   @Param("companyId") Integer companyId,
+                                                   @Param("name") String name,
+                                                   @Param("state") Integer state);
 }
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverFacialFailServiceImpl.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverFacialFailServiceImpl.java
index 37710c4..7c05af1 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverFacialFailServiceImpl.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverFacialFailServiceImpl.java
@@ -1,10 +1,14 @@
 package com.stylefeng.guns.modular.system.service.impl;
 
+import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.stylefeng.guns.modular.system.dao.TDriverFacialFailMapper;
 import com.stylefeng.guns.modular.system.model.TDriverFacialFail;
 import com.stylefeng.guns.modular.system.service.ITDriverFacialFailService;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -17,4 +21,8 @@
 @Service
 public class TDriverFacialFailServiceImpl extends ServiceImpl<TDriverFacialFailMapper, TDriverFacialFail> implements ITDriverFacialFailService {
 
+    @Override
+    public List<Map<String, Object>> getDriverFacialFailList(Page<Map<String, Object>> page, String beginTime, String endTime, String name, String phone) {
+        return this.baseMapper.getDriverFacialFailList(page, beginTime, endTime, name,phone);
+    }
 }
diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemPriceServiceImpl.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemPriceServiceImpl.java
index 06c8caa..a0de9af 100644
--- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemPriceServiceImpl.java
+++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSystemPriceServiceImpl.java
@@ -25,4 +25,9 @@
     public List<Map<String, Object>> getSpecialPriceList(Page<Map<String, Object>> page, Integer companyId, String name, Integer state) {
         return this.baseMapper.getSpecialPriceList(page, companyId, name, state);
     }
+
+    @Override
+    public List<Map<String, Object>> getTransferPriceList(Page<Map<String, Object>> page, Integer companyId, String name, Integer state) {
+        return this.baseMapper.getTransferPriceList(page, companyId, name, state);
+    }
 }
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_detail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_detail.html
index e8c0d5f..2293562 100644
--- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_detail.html
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_detail.html
@@ -2,7 +2,7 @@
 <div class="ibox float-e-margins">
     <div class="ibox-content">
         <div class="ibox-title">
-            <h5>编辑</h5>
+            <h5>详情</h5>
         </div>
         <div class="ibox-content" id="charteredServiceInfoForm">
             <div class="row row-lg">
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail.html
index 1030241..82c4938 100644
--- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail.html
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail.html
@@ -16,7 +16,7 @@
                                 <#NameCon id="phone" name="手机号"/>
                             </div>
                             <div class="col-sm-3">
-                                <#NameCon id="name" name="名称" />
+                                <#NameCon id="name" name="司机姓名" />
                             </div>
                             <div class="col-sm-3">
                                 <#button name="搜索" icon="fa-search" clickFun="TDriverFacialFail.search()"/>
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_add.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_add.html
index 5866855..bfd0655 100644
--- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_add.html
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_add.html
@@ -3,25 +3,6 @@
     <div class="ibox-content">
         <div class="form-horizontal" id="driverFacialFailInfoForm">
             <div class="row">
-                <div class="col-sm-11">
-                    <#input id="name" name="类型名称" />
-                    <#select id="seat" name="座位数:">
-                        <option value="5">5座</option>
-                        <option value="7">7座</option>
-                    </#select>
-                    <#select id="brandId" name="所属车辆品牌:" >
-                        <option value="">选择所属车辆品牌</option>
-                        @for(obj in brandList){
-                        <option value="${obj.id}">${obj.name}</option>
-                        @}
-                    </#select>
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">备注:</label>
-                        <div class="col-sm-9">
-                            <textarea type="text/plain" class="form-control" name="remark" id="remark" style="width:100%;height:150px;"></textarea>
-                        </div>
-                    </div>
-                </div>
             </div>
 
             <div class="row btn-group-m-t">
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_edit.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_edit.html
index 4ed26f3..22795d0 100644
--- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_edit.html
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_edit.html
@@ -4,30 +4,30 @@
         <div class="form-horizontal" id="driverFacialFailInfoForm">
             <input type="hidden" id="id" name="id" value="${item.id}">
             <div class="row">
-                <div class="col-sm-11">
-                    <#input id="name" name="类型名称" value="${item.name}"/>
-                    <#select id="seat" name="座位数:">
-                        <option value="5" ${5 == item.seat ? 'selected=selected' : ''}>5座</option>
-                        <option value="7" ${7 == item.seat ? 'selected=selected' : ''}>7座</option>
-                    </#select>
-                    <#select id="brandId" name="所属车辆品牌:" >
-                        <option value="">选择所属车辆品牌</option>
-                        @for(obj in brandList){
-                        <option value="${obj.id}" ${obj.id == item.brandId ? 'selected=selected' : ''}>${obj.name}</option>
-                        @}
-                    </#select>
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">备注:</label>
-                        <div class="col-sm-9">
-                            <textarea type="text/plain" class="form-control" name="remark" id="remark" style="width:100%;height:150px;">${item.remark}</textarea>
+                <div class="row">
+                    <div class="col-sm-6 b-r">
+                        <#label id="createTime" name="记录时间" value="${item.createTime}"/>
+                        <#label id="driverName" name="司机姓名" value="${driverName}"/>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label head-scu-label">认证截图:</label>
+                            <div class="col-sm-4">
+                                <div id="facialPicturePreId">
+                                    <div><img width="100px" height="100px" src="${item.facialPicture}"></div>
+                                </div>
+                            </div>
                         </div>
+                        <#label id="result" name="认证结果" value="认证失败"/>
+                    </div>
+
+                    <div class="col-sm-6">
+                        <#label id="city" name="所属城市" value="${item.city}"/>
+                        <#label id="driverPhone" name="司机手机号" value="${driverPhone}"/>
                     </div>
                 </div>
             </div>
 
             <div class="row btn-group-m-t">
-                <div class="col-sm-10 col-sm-offset-5">
-                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TDriverFacialFailInfoDlg.editSubmit()"/>
+                <div class="col-sm-11 col-sm-offset-5">
                     <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TDriverFacialFailInfoDlg.close()"/>
                 </div>
             </div>
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer.html
new file mode 100644
index 0000000..ebd49d4
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer.html
@@ -0,0 +1,49 @@
+@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="name" name="车型名称" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#SelectCon id="state" name="状态" >
+                                    <option value="">全部</option>
+                                    <option value="1">正常</option>
+                                    <option value="2">禁用</option>
+                                </#SelectCon>
+                            </div>
+                            <div class="col-sm-3">
+                                <#button name="搜索" icon="fa-search" clickFun="Transfer.search()"/>
+                                <#button name="重置" icon="fa-trash" clickFun="Transfer.resetSearch()" space="true"/>
+                            </div>
+                        </div>
+                        <div class="hidden-xs" id="TransferTableToolbar" role="group">
+                            @if(shiro.hasPermission("/tServerCarmodel/addTransfer")){
+                                <#button name="添加" icon="fa-plus" clickFun="Transfer.openAddTransfer()"/>
+                            @}
+                            @if(shiro.hasPermission("/tServerCarmodel/updateTransfer")){
+                            <#button name="修改" icon="fa-edit" clickFun="Transfer.updateTOrderEvaluateDetail()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tServerCarmodel/noTransfer")){
+                                <#button name="禁用" icon="fa-edit" clickFun="Transfer.no()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tServerCarmodel/yesTransfer")){
+                                <#button name="启用" icon="fa-remove" clickFun="Transfer.yes()" space="true"/>
+                            @}
+                        </div>
+                        <#table id="TransferTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tServerCarmodel/transfer.js"></script>
+@}
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer_add.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer_add.html
new file mode 100644
index 0000000..8a64edd
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer_add.html
@@ -0,0 +1,24 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="transferInfoForm">
+
+            <div class="row">
+                <div class="col-sm-11">
+                    <#input id="name" name="车型名称"/>
+                    <#avatar id="img" name="车型图片:" />
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10 col-sm-offset-5">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TransferInfoDlg.addSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TransferInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tServerCarmodel/transfer_info.js"></script>
+@}
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer_edit.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer_edit.html
new file mode 100644
index 0000000..3498ffa
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tServerCarmodel/transfer_edit.html
@@ -0,0 +1,24 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="serverCarModelInfoForm">
+            <input type="hidden" id="id" value="${data.id}">
+            <div class="row">
+                <div class="col-sm-11">
+                    <#input id="name" name="车型名称" value="${data.name}"/>
+                    <#avatar id="img" name="车型图片:"  avatarImg="${data.img}"/>
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10 col-sm-offset-5">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TransferInfoDlg.editSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TransferInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tServerCarmodel/transfer_info.js"></script>
+@}
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/tSystemPrice_addTransfer.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/tSystemPrice_addTransfer.html
new file mode 100644
index 0000000..b674194
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/tSystemPrice_addTransfer.html
@@ -0,0 +1,182 @@
+@layout("/common/_container.html"){
+<style>
+    .newWidth, .single-line{
+        max-width:150px !important;display: initial !important;
+    }
+</style>
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="transferPriceInfoForm">
+
+            <div class="row">
+                <div class="col-sm-11">
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">选择车型:</label>
+                        <div class="col-sm-10">
+                            <select class="form-control" id="serverCarModelId" name="serverCarModelId"  style="width: 200px;">
+                                <option value="">选择车型</option>
+                                @for(obj in modelList!){
+                                <option value="${obj.id}">${obj.name}</option>
+                                @}
+                            </select>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">运价类型说明:</label>
+                        <div class="col-sm-10">
+                            <textarea class="form-control" id="fareTypeNote" name="fareTypeNote" style="height: 100px;"></textarea>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">起步价设置:</label>
+                        <div class="col-sm-10">
+                            起步价为&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num1" id="num1" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元,
+                            起步包含&nbsp;<input type="text" oninput="checkIsGongLi(this)" name="num2" id="num2" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里,
+                            &nbsp;<input type="text" oninput="checkIsMinute(this)" name="num3" id="num3" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;分钟
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">里程费设置:</label>
+                        <div class="col-sm-10">
+                            超过起步里程后每公里&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num4" id="num4" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">时长费设置:</label>
+                        <div class="col-sm-10">
+                            超过起步时长后每分钟&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num5" id="num5" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">等待费设置:</label>
+                        <div class="col-sm-10">
+                            司机到达预约地点&nbsp;<input type="text" oninput="checkIsMinute(this)" name="num6" id="num6" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;分钟过后开始收取等待费,
+                            为&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num7" id="num7" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元/分,不足一分钟按照一分钟计算
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">远途费设置:</label>
+                        <div class="col-sm-10">
+                            总里程超过&nbsp;<input type="text" oninput="checkIsGongLi(this)" name="num8" id="num8" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里
+                            不足&nbsp;<input type="text" oninput="checkIsGongLi(this)" name="num9" id="num9" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里,
+                            超出部分每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num10" id="num10" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            超过&nbsp;<input type="text" disabled oninput="checkIsGongLi(this)" name="num11" id="num11" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里
+                            不足&nbsp;<input type="text" oninput="checkIsGongLi(this)" name="num12" id="num12" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里时,
+                            超出部分每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num13" id="num13" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                            <br>
+                            超过&nbsp;<input type="text" disabled oninput="checkIsGongLi(this)" name="num14" id="num14" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里以后,
+                            超出部分每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num15" id="num15" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">夜间行驶费用设置:</label>
+                        <div class="col-sm-10">
+                            <input type="text" name="num16" id="num16" class="form-control newWidth" placeholder="选择时间"/>&nbsp;点为夜间行驶时间,
+                            起步价变为&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num17" id="num17" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            里程费为每公里&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num18" id="num18" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元,
+                            时长费为每分钟&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num19" id="num19" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            远途费为每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num20" id="num20" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;
+                            、&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num21" id="num21" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;
+                            、&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num22" id="num22" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">高峰期费用设置:</label>
+                        <div class="col-sm-10">
+                            <input type="text" name="num23" id="num23" class="form-control newWidth" placeholder="选择时间段"/>&nbsp;
+                            和&nbsp;&nbsp;<input type="text" name="num24" id="num24" class="form-control newWidth" placeholder="选择时间段"/>&nbsp;为高峰期行车时间,
+                            起步价变为&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num25" id="num25" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            里程费为每公里&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num26" id="num26" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元,
+                            时长费为每分钟&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num27" id="num27" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            远途费为每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num28" id="num28" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;
+                            、&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num29" id="num29" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;
+                            、&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num30" id="num30" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10 col-sm-offset-5">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TransferInfoDlg.addSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TransferInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tSystemPrice/transfer_info.js"></script>
+<script type="text/javascript">
+    laydate.render({
+        elem: '#num16'
+        ,type: 'time'
+        ,range: '-'
+        ,format: 'HH:mm'
+    });
+    laydate.render({
+        elem: '#num23'
+        ,type: 'time'
+        ,range: '-'
+        ,format: 'HH:mm'
+    });
+    laydate.render({
+        elem: '#num24'
+        ,type: 'time'
+        ,range: '-'
+        ,format: 'HH:mm'
+    });
+
+    var regDouble = /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/;
+    var regInt = /^[0-9]{0,3}$/;
+    function checkIsYuan(obj){
+        var num = $(obj).val();
+        if(!regDouble.test(num)){
+            layer.msg("【元】输入框不能超过3位数,保留两位小数");
+        }
+    }
+    function checkIsGongLi(obj){
+        var num = $(obj).val();
+        if(!regDouble.test(num)){
+            layer.msg("【公里】输入框不能超过3位数,保留两位小数");
+        }
+        if (obj.id == "num9"){
+            $("#num11").val(num);
+        }else if (obj.id == "num12"){
+            $("#num14").val(num);
+        }
+    }
+    function checkIsMinute(obj){
+        var num = $(obj).val();
+        if(!regInt.test(num)){
+            layer.msg("【分钟】输入框不能超过3位数");
+        }
+    }
+
+</script>
+@}
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/tSystemPrice_editTransfer.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/tSystemPrice_editTransfer.html
new file mode 100644
index 0000000..9cca7f4
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/tSystemPrice_editTransfer.html
@@ -0,0 +1,182 @@
+@layout("/common/_container.html"){
+<style>
+    .newWidth, .single-line{
+        max-width:150px !important;display: initial !important;
+    }
+</style>
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal" id="transferPriceInfoForm">
+            <label style="display: none;" id="id">${item.id}</label>
+            <div class="row">
+                <div class="col-sm-111">
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">选择车型:</label>
+                        <div class="col-sm-10">
+                            <select class="form-control" id="serverCarModelId" name="serverCarModelId"  style="width: 200px;">
+                                <option value="">选择车型</option>
+                                @for(obj in modelList!){
+                                <option value="${obj.id}" ${obj.id == item.serverCarModelId ? 'selected=selected' : ''}>${obj.name}</option>
+                                @}
+                            </select>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">运价类型说明:</label>
+                        <div class="col-sm-10">
+                            <textarea class="form-control" id="fareTypeNote" name="fareTypeNote" style="height: 100px;">${item.fareTypeNote}</textarea>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">起步价设置:</label>
+                        <div class="col-sm-10">
+                            起步价为&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num1" id="num1" value="${json.num1}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元,
+                            起步包含&nbsp;<input type="text" oninput="checkIsGongLi(this)" name="num2" id="num2" value="${json.num2}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里,
+                            &nbsp;<input type="text" oninput="checkIsMinute(this)" name="num3" id="num3" value="${json.num3}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;分钟
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">里程费设置:</label>
+                        <div class="col-sm-10">
+                            超过起步里程后每公里&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num4" id="num4" value="${json.num4}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">时长费设置:</label>
+                        <div class="col-sm-10">
+                            超过起步时长后每分钟&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num5" id="num5" value="${json.num5}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">等待费设置:</label>
+                        <div class="col-sm-10">
+                            司机到达预约地点&nbsp;<input type="text" oninput="checkIsMinute(this)" name="num6" id="num6" value="${json.num6}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;分钟过后开始收取等待费,
+                            为&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num7" id="num7" value="${json.num7}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元/分,不足一分钟按照一分钟计算
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">远途费设置:</label>
+                        <div class="col-sm-10">
+                            总里程超过&nbsp;<input type="text" oninput="checkIsGongLi(this)" name="num8" id="num8" value="${json.num8}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里
+                            不足&nbsp;<input type="text" oninput="checkIsGongLi(this)" name="num9" id="num9" value="${json.num9}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里,
+                            超出部分每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num10" id="num10" value="${json.num10}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            超过&nbsp;<input type="text" disabled oninput="checkIsGongLi(this)" name="num11" id="num11" value="${json.num11}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里
+                            不足&nbsp;<input type="text" oninput="checkIsGongLi(this)" name="num12" id="num12" value="${json.num12}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里时,
+                            超出部分每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num13" value="${json.num13}" id="num13" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                            <br>
+                            超过&nbsp;<input type="text" disabled oninput="checkIsGongLi(this)" name="num14" id="num14" value="${json.num14}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;公里以后,
+                            超出部分每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num15" id="num15" value="${json.num15}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">夜间行驶费用设置:</label>
+                        <div class="col-sm-10">
+                            <input type="text" name="num16" id="num16" value="${json.num16}" class="form-control newWidth" placeholder="选择时间"/>&nbsp;点为夜间行驶时间,
+                            起步价变为&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num17" id="num17" value="${json.num17}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            里程费为每公里&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num18" id="num18" value="${json.num18}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元,
+                            时长费为每分钟&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num19" id="num19" value="${json.num19}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            远途费为每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num20" id="num20" value="${json.num20}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;
+                            、&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num21" id="num21" value="${json.num21}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;
+                            、&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num22" id="num22" value="${json.num22}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">高峰期费用设置:</label>
+                        <div class="col-sm-10">
+                            <input type="text" name="num23" id="num23" value="${json.num23}" class="form-control newWidth" placeholder="选择时间段"/>&nbsp;
+                            和&nbsp;&nbsp;<input type="text" name="num24" id="num24" value="${json.num24}" class="form-control newWidth" placeholder="选择时间段"/>&nbsp;为高峰期行车时间,
+                            起步价变为&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num25" id="num25" value="${json.num25}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            里程费为每公里&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num26" id="num26" value="${json.num26}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元,
+                            时长费为每分钟&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num27" id="num27" value="${json.num27}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br>
+                            <br>
+                            远途费为每公里加收&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num28" id="num28" value="${json.num28}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;
+                            、&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num29" id="num29" value="${json.num29}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;
+                            、&nbsp;<input type="text" oninput="checkIsYuan(this)" name="num30" id="num30" value="${json.num30}" class="form-control newWidth" placeholder="最多3位数"/>&nbsp;元
+                            <br/>
+                        </div>
+                    </div>
+
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10 col-sm-offset-5">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TransferInfoDlg.editSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TransferInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tSystemPrice/transfer_info.js"></script>
+<script type="text/javascript">
+    laydate.render({
+        elem: '#num16'
+        ,type: 'time'
+        ,range: '-'
+        ,format: 'HH:mm'
+    });
+    laydate.render({
+        elem: '#num23'
+        ,type: 'time'
+        ,range: '-'
+        ,format: 'HH:mm'
+    });
+    laydate.render({
+        elem: '#num24'
+        ,type: 'time'
+        ,range: '-'
+        ,format: 'HH:mm'
+    });
+
+    var regDouble = /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/;
+    var regInt = /^[0-9]{0,3}$/;
+    function checkIsYuan(obj){
+        var num = $(obj).val();
+        if(!regDouble.test(num)){
+            layer.msg("【元】输入框不能超过3位数,保留两位小数");
+        }
+    }
+    function checkIsGongLi(obj){
+        var num = $(obj).val();
+        if(!regDouble.test(num)){
+            layer.msg("【公里】输入框不能超过3位数,保留两位小数");
+        }
+        if (obj.id == "num9"){
+            $("#num11").val(num);
+        }else if (obj.id == "num12"){
+            $("#num14").val(num);
+        }
+    }
+    function checkIsMinute(obj){
+        var num = $(obj).val();
+        if(!regInt.test(num)){
+            layer.msg("【分钟】输入框不能超过3位数");
+        }
+    }
+
+</script>
+@}
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/transfer.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/transfer.html
new file mode 100644
index 0000000..522f586
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemPrice/transfer.html
@@ -0,0 +1,52 @@
+@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="name" name="车型名称" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#SelectCon id="state" name="状态" >
+                                    <option value="">全部</option>
+                                    <option value="1">正常</option>
+                                    <option value="2">冻结</option>
+                                </#SelectCon>
+                            </div>
+                            <div class="col-sm-3">
+                                <#button name="搜索" icon="fa-search" clickFun="Transfer.search()"/>
+                                <#button name="重置" icon="fa-trash" clickFun="Transfer.resetSearch()" space="true"/>
+                            </div>
+                        </div>
+                        <div class="hidden-xs" id="TSystemPriceTableToolbar" role="group">
+                            @if(shiro.hasPermission("/tSystemPrice/addTransfer")){
+                                <#button name="添加" icon="fa-plus" clickFun="Transfer.addTransfer()"/>
+                            @}
+                            @if(shiro.hasPermission("/tSystemPrice/updateTransfer")){
+                                <#button name="修改" icon="fa-edit" clickFun="Transfer.updateTransfer()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tSystemPrice/deleteTransfer")){
+                                <#button name="删除" icon="fa-remove" clickFun="Transfer.deleteTransfer()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tSystemPrice/freezeTransfer")){
+                                <#button name="冻结" icon="fa-remove" clickFun="Transfer.freezeTransfer()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tSystemPrice/thawTransfer")){
+                                <#button name="解冻" icon="fa-remove" clickFun="Transfer.thawTransfer()" space="true"/>
+                            @}
+                        </div>
+                        <#table id="TransferTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tSystemPrice/transfer.js"></script>
+@}
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverFacialFail/tDriverFacialFail.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverFacialFail/tDriverFacialFail.js
new file mode 100644
index 0000000..cc90738
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverFacialFail/tDriverFacialFail.js
@@ -0,0 +1,224 @@
+/**
+ * 人脸识别记录管理初始化
+ */
+var TDriverFacialFail = {
+    id: "TDriverFacialFailTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TDriverFacialFail.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: false},
+        {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle'},
+        {title: '异常记录时间', field: 'createTime', visible: true, align: 'center', valign: 'middle',width:'10%',
+            formatter: function (value, row) {
+                var btn = "";
+                if(row.createTime != '' && row.createTime != null) {
+                    var time = row.createTime.replace(" ",'<br>');
+                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.createTime + '" onfocus="TUser.tooltip()">' + time + '</p>']
+                }
+                return btn;
+            }
+        },
+        {title: '司机姓名', field: 'driverName', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                var btn = "";
+                if(row.driverName != '' && row.driverName != null) {
+                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.driverName + '" onfocus="TUser.tooltip()">' + row.driverName + '</p>']
+                }
+                return btn;
+            }
+        },
+        {title: '手机号', field: 'driverPhone', visible: true, align: 'center', valign: 'middle',width:'10%',
+            formatter: function (value, row) {
+                var btn = "";
+                if(row.driverPhone != '' && row.driverPhone != null) {
+                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.driverPhone + '" onfocus="TUser.tooltip()">' + row.driverPhone + '</p>']
+                }
+                return btn;
+            }
+        },
+        {title: '所属城市', field: 'city', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                var btn = "";
+                if(row.city != '' && row.city != null) {
+                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.city + '" onfocus="TUser.tooltip()">' + row.city + '</p>']
+                }
+                return btn;
+            }
+        },
+        {title: '识别结果', field: 'city', visible: true, align: 'center', valign: 'middle',width:'10%',
+            formatter: function (value, row) {
+                var btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.carNum + '" onfocus="TUser.tooltip()">人脸认证失败</p>'];
+                return btn;
+            }
+        },
+        {title: '操作', visible: true, align: 'center', valign: 'middle',width:'16%',
+            formatter: function (value, row) {
+                return '<a href="#" onclick="TDriverFacialFail.openTDriverFacialFailDetail('+row.id+')" style="color:cornflowerblue">详情</a>' +'&nbsp;' +
+                    '<a href="#" onclick="TDriverFacialFail.delete('+row.id+')" style="color:cornflowerblue">删除</a>' +'&nbsp;' +
+                    '<a href="#" onclick="TDriverFacialFail.unsealing('+row.id+')" style="color:cornflowerblue">解封</a>'
+            }
+        }
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+TDriverFacialFail.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        TDriverFacialFail.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 打开查看人脸识别记录详情
+ */
+TDriverFacialFail.openTDriverFacialFailDetail = function (tDriverFacialFailId) {
+    var index = layer.open({
+        type: 2,
+        title: '异常记录详情',
+        area: ['70%', '50%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriverFacialFail/tDriverFacialFail_update/' + tDriverFacialFailId
+    });
+    this.layerIndex = index;
+};
+
+
+
+/**
+ * 删除人脸识别记录
+ */
+TDriverFacialFail.delete = function (id, nickname) {
+    if (nickname == "" || nickname == null || nickname == undefined){
+        nickname = "该记录";
+    }else{
+        nickname = "【"+nickname+"】";
+    }
+    swal({
+        title: "您是否确认删除"+ nickname + "?",
+        text: "请谨慎操作,删除后数据无法恢复!",
+        type: "warning",
+        showCancelButton: true,
+        confirmButtonColor: "#DD6B55",
+        confirmButtonText: "删除",
+        closeOnConfirm: true
+    }, function () {
+        var ajax = new $ax(Feng.ctxPath + "/tDriverFacialFail/delete", function (data) {
+            swal("删除成功", "您已经删除了" + nickname + "。", "success");
+            TDriverFacialFail.table.refresh();
+        }, function (data) {
+            swal("删除失败", data.responseJSON.message + "!", "warning");
+        });
+        ajax.set("tDriverFacialFailId", id);
+        ajax.start();
+    });
+};
+
+/**
+ * 批量删除人脸识别记录
+ */
+TDriverFacialFail.deleteBatch = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    var ids = '';
+    if (selected.length > 0) {
+        for (var i = 0; i < selected.length; i++) {
+            ids += selected[i]['id'] + ",";
+        }
+        ids = ids.substring(0, ids.length - 1);
+    }
+    console.log(ids);
+    if(this.check()){
+        var nickname = TDriverFacialFail.seItem.name;
+        if (nickname == "" || nickname == null || nickname == undefined){
+            nickname = "该记录";
+        }else{
+            nickname = "【"+nickname+"】";
+        }
+        swal({
+            title: "您是否确认删除"+ nickname + "?",
+            text: "请谨慎操作,删除后数据无法恢复!",
+            type: "warning",
+            showCancelButton: true,
+            confirmButtonColor: "#DD6B55",
+            confirmButtonText: "删除",
+            closeOnConfirm: true
+        }, function () {
+            var ajax = new $ax(Feng.ctxPath + "/tDriverFacialFail/deleteBatch", function (data) {
+                swal("删除成功", "您已经删除了" + nickname + "。", "success");
+                TDriverFacialFail.table.refresh();
+            }, function (data) {
+                swal("删除失败", data.responseJSON.message + "!", "warning");
+            });
+            ajax.set("tDriverFacialFailIds", ids);
+            ajax.start();
+        });
+    }
+};
+
+/**
+ * 解封司机人脸认证
+ */
+TDriverFacialFail.unsealing = function (id,nickname) {
+        if (nickname == "" || nickname == null || nickname == undefined){
+            nickname = "该记录";
+        }else{
+            nickname = "【"+nickname+"】";
+        }
+        swal({
+            title: "您是否确认解封"+ nickname + "?",
+            text: "操作解封后,司机该轮人脸认证即可通过,可继续接单是否确认解封!",
+            type: "warning",
+            showCancelButton: true,
+            confirmButtonColor: "#DD6B55",
+            confirmButtonText: "解封",
+            closeOnConfirm: true
+        }, function () {
+            var ajax = new $ax(Feng.ctxPath + "/tDriverFacialFail/unsealing", function (data) {
+                swal("操作成功", "您已经解封了" + nickname + "。", "success");
+                TDriverFacialFail.table.refresh();
+            }, function (data) {
+                swal("操作失败", data.responseJSON.message + "!", "warning");
+            });
+            ajax.set("tDriverFacialFailId", id);
+            ajax.start();
+        });
+};
+
+/**
+ * 查询人脸识别记录列表
+ */
+TDriverFacialFail.search = function () {
+    var queryData = {};
+    queryData['createTime'] = $("#createTime").val();
+    queryData['name'] = $("#name").val();
+    queryData['phone'] = $("#phone").val();
+    TDriverFacialFail.table.refresh({query: queryData});
+};
+
+TDriverFacialFail.resetSearch = function () {
+    $("#createTime").val("");
+    $("#name").val("");
+    $("#phone").val("");
+    TDriverFacialFail.search();
+};
+
+$(function () {
+    var defaultColunms = TDriverFacialFail.initColumn();
+    var table = new BSTable(TDriverFacialFail.id, "/tDriverFacialFail/list", defaultColunms);
+    table.setPaginationType("server");
+    TDriverFacialFail.table = table.init();
+});
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverFacialFail/tDriverFacialFail_info.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverFacialFail/tDriverFacialFail_info.js
new file mode 100644
index 0000000..c79bafb
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverFacialFail/tDriverFacialFail_info.js
@@ -0,0 +1,139 @@
+/**
+ * 初始化车辆类型管理详情对话框
+ */
+var TDriverFacialFailInfoDlg = {
+    tDriverFacialFailInfoData : {},
+    validateFields: {
+        name: {
+            validators: {
+                notEmpty: {
+                    message: '类型名称不能为空'
+                }
+            }
+        },
+        seat: {
+            validators: {
+                notEmpty: {
+                    message: '座位数不能为空'
+                },
+                regexp: {
+                    regexp: /^[1-9]\d*$/,
+                    message: '座位数不正确'
+                }
+            }
+        },
+        brandId: {
+            validators: {
+                notEmpty: {
+                    message: '请选择所属车辆品牌'
+                }
+            }
+        },
+    }
+};
+
+/**
+ * 验证数据是否为空
+ */
+TDriverFacialFailInfoDlg.validate = function () {
+    $('#driverFacialFailInfoForm').data("bootstrapValidator").resetForm();
+    $('#driverFacialFailInfoForm').bootstrapValidator('validate');
+    return $("#driverFacialFailInfoForm").data('bootstrapValidator').isValid();
+};
+
+/**
+ * 清除数据
+ */
+TDriverFacialFailInfoDlg.clearData = function() {
+    this.tDriverFacialFailInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TDriverFacialFailInfoDlg.set = function(key, val) {
+    this.tDriverFacialFailInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TDriverFacialFailInfoDlg.get = function(key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+TDriverFacialFailInfoDlg.close = function() {
+    parent.layer.close(window.parent.TDriverFacialFail.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+TDriverFacialFailInfoDlg.collectData = function() {
+    this
+    .set('id')
+    .set('name')
+    .set('remark')
+    .set('createTime')
+    .set('state')
+    .set('seat')
+    .set('brandId');
+}
+
+/**
+ * 提交添加
+ */
+TDriverFacialFailInfoDlg.addSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+    if(!this.validate()){
+        return ;
+    }
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tDriverFacialFail/add", function(data){
+        Feng.success("添加成功!");
+        window.parent.TDriverFacialFail.table.refresh();
+        TDriverFacialFailInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tDriverFacialFailInfoData);
+    ajax.start();
+}
+
+/**
+ * 提交修改
+ */
+TDriverFacialFailInfoDlg.editSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+    if(!this.validate()){
+        return ;
+    }
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tDriverFacialFail/update", function(data){
+        Feng.success("修改成功!");
+        window.parent.TDriverFacialFail.table.refresh();
+        TDriverFacialFailInfoDlg.close();
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tDriverFacialFailInfoData);
+    ajax.start();
+}
+
+$(function() {
+    Feng.initValidator("DriverFacialFailInfoForm", TDriverFacialFailInfoDlg.validateFields);
+});
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/transfer.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/transfer.js
new file mode 100644
index 0000000..a023aa1
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/transfer.js
@@ -0,0 +1,205 @@
+/**
+ * 专车车型设置管理初始化
+ */
+var Transfer = {
+    id: "TransferTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+Transfer.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+        {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
+        {title: '添加时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle',width:'20%',
+            formatter: function (value, row) {
+                var btn = "";
+                if(row.insertTime != '' && row.insertTime != null) {
+                    // var time = row.insertTime.replace(" ",'<br>');
+                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.insertTime + '" onfocus="TUser.tooltip()">' + row.insertTime + '</p>']
+                }
+                return btn;
+            }
+        },
+        {title: '车型名称', field: 'name', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                var btn = "";
+                if(row.name != '' && row.name != null) {
+                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.name + '" onfocus="TUser.tooltip()">' + row.name + '</p>']
+                }
+                return btn;
+            }
+        },
+        {title: '车型图片', field: 'img', visible: true, align: 'center', valign: 'middle',width:'20%',
+            formatter: function (value, row) {
+                if (row.img == null || row.img == '') {
+                    return '<a class = "view"  href="javascript:void(0)"><img style="width: 50px;height:50px;" src="' + Feng.ctxPath + '/static/img/NoPIC.png" /></a>';
+                } else {
+                    return '<a class = "view"  href="javascript:void(0)"><img style="width: 90px;height:50px;" src="' + row.img + '" /></a>';
+                }
+            },
+            events: 'operateEvents'
+        },
+        {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                var btn = "";
+                if(row.state != '' && row.state != null) {
+                    if(row.state == 1){
+                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="正常" onfocus="TUser.tooltip()">正常</p>']
+                    }else if(row.state == 2){
+                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color: red;" title="禁用" onfocus="TUser.tooltip()">禁用</p>']
+                    }
+                }
+                return btn;
+            }
+        }
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+Transfer.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        Transfer.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加专车车型设置
+ */
+Transfer.openAddTransfer = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加专车车型设置',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tServerCarmodel/tServerCarmodel_addTransfer'
+    });
+    this.layerIndex = index;
+};
+
+Transfer.updateTOrderEvaluateDetail = function(){
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '修改专车车型设置',
+            area: ['800px', '420px'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tServerCarmodel/tServerCarmodel_editTransfer?id=' + Transfer.seItem.id
+        });
+        this.layerIndex = index;
+    }
+}
+
+
+
+/**
+ * 禁用
+ */
+Transfer.no = function () {
+    if (this.check()) {
+        var name = Transfer.seItem.name;
+        if (name == "" || name == null || name == undefined) {
+            name = "该车型";
+        } else {
+            name = "【" + name + "】";
+        }
+        if (Transfer.seItem.state != 1) {
+            swal("禁用失败", "【正常】状态下才能执行此操作", "warning");
+            return;
+        } else {
+            swal({
+                title: "您是否确认禁用"+ name + "?",
+                text: "请谨慎操作!",
+                type: "warning",
+                showCancelButton: true,
+                confirmButtonColor: "#DD6B55",
+                confirmButtonText: "禁用",
+                closeOnConfirm: true
+            }, function () {
+                var ajax = new $ax(Feng.ctxPath + "/tServerCarmodel/opt", function (data) {
+                    swal("禁用成功", "您已经禁用了" + name + "。", "success");
+                    Transfer.table.refresh();
+                }, function (data) {
+                    swal("禁用失败", data.responseJSON.message + "!", "warning");
+                });
+                ajax.set("tServerCarmodelId", Transfer.seItem.id);
+                ajax.set("optType", 1);
+                ajax.start();
+            });
+        }
+    }
+};
+
+/**
+ * 启用
+ */
+Transfer.yes = function () {
+    if (this.check()) {
+        var name = Transfer.seItem.name;
+        if (name == "" || name == null || name == undefined) {
+            name = "该车型";
+        } else {
+            name = "【" + name + "】";
+        }
+        if (Transfer.seItem.state != 2) {
+            swal("启用失败", "【禁用】状态下才能执行此操作", "warning");
+            return;
+        } else {
+            swal({
+                title: "您是否确认启用"+ name + "?",
+                text: "请谨慎操作!",
+                type: "warning",
+                showCancelButton: true,
+                confirmButtonColor: "#DD6B55",
+                confirmButtonText: "启用",
+                closeOnConfirm: true
+            }, function () {
+                var ajax = new $ax(Feng.ctxPath + "/tServerCarmodel/opt", function (data) {
+                    swal("启用成功", "您已经启用了" + name + "。", "success");
+                    Transfer.table.refresh();
+                }, function (data) {
+                    swal("启用失败", data.responseJSON.message + "!", "warning");
+                });
+                ajax.set("tServerCarmodelId", Transfer.seItem.id);
+                ajax.set("optType", 2);
+                ajax.start();
+            });
+        }
+    }
+};
+
+/**
+ * 查询专车车型设置列表
+ */
+Transfer.search = function () {
+    var queryData = {};
+    queryData['name'] = $("#name").val();
+    queryData['state'] = $("#state").val();
+    Transfer.table.refresh({query: queryData});
+};
+
+Transfer.resetSearch = function () {
+    $("#name").val("");
+    $("#state").val("");
+    Transfer.search();
+};
+
+$(function () {
+    var defaultColunms = Transfer.initColumn();
+    var table = new BSTable(Transfer.id, "/tServerCarmodel/listTransfer", defaultColunms);
+    table.setPaginationType("server");
+    Transfer.table = table.init();
+});
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/transfer_info.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/transfer_info.js
new file mode 100644
index 0000000..ca979ad
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tServerCarmodel/transfer_info.js
@@ -0,0 +1,131 @@
+/**
+ * 初始化专车车型设置详情对话框
+ */
+var TransferInfoDlg = {
+    transferInfoData : {},
+    validateFields: {
+        name: {
+            validators: {
+                notEmpty: {
+                    message: '车型名称不能为空'
+                },
+                regexp: {
+                    regexp: /^.{1,15}$/,
+                    message: '车型名称不能超过15个字'
+                }
+            }
+        },
+    }
+};
+
+/**
+ * 验证数据是否为空
+ */
+TransferInfoDlg.validate = function () {
+    $('#transferInfoForm').data("bootstrapValidator").resetForm();
+    $('#transferInfoForm').bootstrapValidator('validate');
+    return $("#transferInfoForm").data('bootstrapValidator').isValid();
+};
+
+/**
+ * 清除数据
+ */
+TransferInfoDlg.clearData = function() {
+    this.transferInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TransferInfoDlg.set = function(key, val) {
+    this.transferInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TransferInfoDlg.get = function(key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+TransferInfoDlg.close = function() {
+    parent.layer.close(window.parent.Transfer.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+TransferInfoDlg.collectData = function() {
+    this
+    .set('id')
+    .set('type')
+    .set('name')
+    .set('img')
+    .set('state')
+    .set('insertTime');
+}
+
+/**
+ * 提交添加
+ */
+TransferInfoDlg.addSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+    if(!this.validate()){
+        return ;
+    }
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tServerCarmodel/addTransfer", function(data){
+        if (500 == data.code){
+            Feng.error(data.message);
+            return;
+        }else{
+            Feng.success("添加成功!");
+            window.parent.Transfer.table.refresh();
+            TransferInfoDlg.close();
+        }
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.transferInfoData);
+    ajax.start();
+}
+
+/**
+ * 提交修改
+ */
+TransferInfoDlg.editSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tServerCarmodel/updateTransfer", function(data){
+        Feng.success("修改成功!");
+        window.parent.Transfer.table.refresh();
+        TransferInfoDlg.close();
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.transferInfoData);
+    ajax.start();
+}
+
+$(function() {
+    Feng.initValidator("transferInfoForm", TransferInfoDlg.validateFields);
+    // 初始化图片上传
+    var img = new $WebUpload("img");
+    img.setUploadBarId("progressBar");
+    img.init();
+});
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tSystemPrice/transfer.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tSystemPrice/transfer.js
new file mode 100644
index 0000000..fc715f1
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tSystemPrice/transfer.js
@@ -0,0 +1,229 @@
+/**
+ * 接送机价格设置管理初始化
+ */
+var Transfer = {
+    id: "TransferTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+Transfer.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+        {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
+        {title: '车型名称', field: 'name', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                var btn = "";
+                if(row.name != '' && row.name != null) {
+                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.name + '" onfocus="TUser.tooltip()">' + row.name + '</p>']
+                }
+                return btn;
+            }
+        },
+        {title: '车型图片', field: 'img', visible: true, align: 'center', valign: 'middle',width:'20%',
+            formatter: function (value, row) {
+                if (row.img == null || row.img == '') {
+                    return '<a class = "view"  href="javascript:void(0)"><img style="width: 50px;height:50px;" src="' + Feng.ctxPath + '/static/img/NoPIC.png" /></a>';
+                } else {
+                    return '<a class = "view"  href="javascript:void(0)"><img style="width: 90px;height:50px;" src="' + row.img + '" /></a>';
+                }
+            },
+            events: 'operateEvents'
+        },
+        {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                var btn = "";
+                if(row.state != '' && row.state != null) {
+                    if(row.state == 1){
+                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="正常" onfocus="TUser.tooltip()">正常</p>']
+                    }else if(row.state == 2){
+                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color: red;" title="冻结" onfocus="TUser.tooltip()">冻结</p>']
+                    }
+                }
+                return btn;
+            }
+        }
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+Transfer.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        Transfer.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加接送机价格设置
+ */
+Transfer.addTransfer = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加接送机价格设置',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tSystemPrice/tSystemPrice_addTransfer'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 打开查看接送机价格设置详情
+ */
+Transfer.updateTransfer = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '接送机价格设置详情',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tSystemPrice/tSystemPrice_updateTransfer/' + Transfer.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 删除接送机价格设置
+ */
+Transfer.deleteTransfer = function () {
+    if (this.check()) {
+        var name = Transfer.seItem.name;
+        if (name == "" || name == null || name == undefined){
+            name = "该接送机车型价格配置";
+        }else{
+            name = "【"+name+"】价格配置";
+        }
+        swal({
+            title: "您是否确认删除"+ name + "?",
+            text: "请谨慎操作,删除后数据无法恢复!",
+            type: "warning",
+            showCancelButton: true,
+            confirmButtonColor: "#DD6B55",
+            confirmButtonText: "删除",
+            closeOnConfirm: true
+        }, function () {
+            var ajax = new $ax(Feng.ctxPath + "/tSystemPrice/opt", function (data) {
+                swal("删除成功", "您已经删除了" + name + "。", "success");
+                Transfer.table.refresh();
+            }, function (data) {
+                swal("删除失败", data.responseJSON.message + "!", "warning");
+            });
+            ajax.set("tSystemPriceId",Transfer.seItem.id);
+            ajax.set("optType",3);
+            ajax.start();
+        });
+    }
+};
+
+/**
+ * 冻结
+ */
+Transfer.freezeTransfer = function(){
+    if (this.check()) {
+        var name = Transfer.seItem.name;
+        if (name == "" || name == null || name == undefined) {
+            name = "该接送机车型价格配置";
+        } else {
+            name = "【" + name + "】价格配置";
+        }
+        if (Transfer.seItem.state != 1) {
+            swal("冻结失败", "【正常】状态下才能执行此操作", "warning");
+            return;
+        } else {
+            swal({
+                title: "您是否确认冻结"+ name + "?",
+                text: "请谨慎操作,删除后数据无法恢复!",
+                type: "warning",
+                showCancelButton: true,
+                confirmButtonColor: "#DD6B55",
+                confirmButtonText: "冻结",
+                closeOnConfirm: true
+            }, function () {
+                var ajax = new $ax(Feng.ctxPath + "/tSystemPrice/opt", function (data) {
+                    swal("冻结成功", "您已经冻结了" + name + "。", "success");
+                    Transfer.table.refresh();
+                }, function (data) {
+                    swal("冻结失败", data.responseJSON.message + "!", "warning");
+                });
+                ajax.set("tSystemPriceId",Transfer.seItem.id);
+                ajax.set("optType", 1);
+                ajax.start();
+            });
+        }
+    }
+}
+
+/**
+ * 解冻
+ */
+Transfer.thawTransfer = function(){
+    if (this.check()) {
+        var name = Transfer.seItem.name;
+        if (name == "" || name == null || name == undefined) {
+            name = "该接送机车型价格配置";
+        } else {
+            name = "【" + name + "】价格配置";
+        }
+        if (Transfer.seItem.state != 2) {
+            swal("解冻失败", "【冻结】状态下才能执行此操作", "warning");
+            return;
+        } else {
+            swal({
+                title: "您是否确认解冻"+ name + "?",
+                text: "请谨慎操作,删除后数据无法恢复!",
+                type: "warning",
+                showCancelButton: true,
+                confirmButtonColor: "#DD6B55",
+                confirmButtonText: "解冻",
+                closeOnConfirm: true
+            }, function () {
+                var ajax = new $ax(Feng.ctxPath + "/tSystemPrice/opt", function (data) {
+                    swal("解冻成功", "您已经解冻了" + name + "。", "success");
+                    Transfer.table.refresh();
+                }, function (data) {
+                    swal("解冻失败", data.responseJSON.message + "!", "warning");
+                });
+                ajax.set("tSystemPriceId",Transfer.seItem.id);
+                ajax.set("optType", 2);
+                ajax.start();
+            });
+        }
+    }
+}
+
+/**
+ * 查询接送机价格设置列表
+ */
+Transfer.search = function () {
+    var queryData = {};
+    queryData['name'] = $("#name").val();
+    queryData['state'] = $("#state").val();
+    Transfer.table.refresh({query: queryData});
+};
+
+Transfer.resetSearch = function () {
+    $("#name").val("");
+    $("#state").val("");
+    Transfer.search();
+};
+
+$(function () {
+    var defaultColunms = Transfer.initColumn();
+    var table = new BSTable(Transfer.id, "/tSystemPrice/listTransfer", defaultColunms);
+    table.setPaginationType("server");
+    Transfer.table = table.init();
+});
diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tSystemPrice/transfer_info.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tSystemPrice/transfer_info.js
new file mode 100644
index 0000000..6a7c51d
--- /dev/null
+++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tSystemPrice/transfer_info.js
@@ -0,0 +1,477 @@
+/**
+ * 初始化接送机价格设置详情对话框
+ */
+var TransferInfoDlg = {
+    transferInfoData : {},
+    validateFields: {
+        serverCarModelId: {
+            validators: {
+                notEmpty: {
+                    message: '请选择车型'
+                }
+            }
+        },
+        fareTypeNote: {
+            validators: {
+                notEmpty: {
+                    message: '运价类型说明不能为空'
+                }
+            }
+        },
+        num1: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num2: {
+            validators: {
+                notEmpty: {
+                    message: '【公里】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【公里】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num3: {
+            validators: {
+                notEmpty: {
+                    message: '【分钟】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^[0-9]{0,3}$/,
+                    message: '【分钟】输入框不能超过3位数'
+                }
+            }
+        },
+        num4: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num5: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num6: {
+            validators: {
+                notEmpty: {
+                    message: '【分钟】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^[0-9]{0,3}$/,
+                    message: '【分钟】输入框不能超过3位数'
+                }
+            }
+        },
+        num7: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num8: {
+            validators: {
+                notEmpty: {
+                    message: '【公里】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【公里】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num9: {
+            validators: {
+                notEmpty: {
+                    message: '【公里】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【公里】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num10: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num11: {
+            validators: {
+                notEmpty: {
+                    message: '【公里】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【公里】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num12: {
+            validators: {
+                notEmpty: {
+                    message: '【公里】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【公里】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num13: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num14: {
+            validators: {
+                notEmpty: {
+                    message: '【公里】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【公里】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num15: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num16: {
+            validators: {
+                notEmpty: {
+                    message: '【时间】输入框不能为空'
+                }
+            }
+        },
+        num17: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num18: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num19: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num20: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num21: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num22: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num23: {
+            validators: {
+                notEmpty: {
+                    message: '【时间】输入框不能为空'
+                }
+            }
+        },
+        num24: {
+            validators: {
+                notEmpty: {
+                    message: '【时间】输入框不能为空'
+                }
+            }
+        },
+        num25: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num26: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num27: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num28: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num29: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        },
+        num30: {
+            validators: {
+                notEmpty: {
+                    message: '【元】输入框不能为空'
+                },
+                regexp: {
+                    regexp: /^(0|[1-9]\d{0,2})(\.\d{1,2})?$/,
+                    message: '【元】输入框不能超过3位数,保留两位小数'
+                }
+            }
+        }
+    }
+};
+
+/**
+ * 验证数据是否为空
+ */
+TransferInfoDlg.validate = function () {
+    $('#transferPriceInfoForm').data("bootstrapValidator").resetForm();
+    $('#transferPriceInfoForm').bootstrapValidator('validate');
+    return $("#transferPriceInfoForm").data('bootstrapValidator').isValid();
+};
+
+/**
+ * 清除数据
+ */
+TransferInfoDlg.clearData = function() {
+    this.transferInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TransferInfoDlg.set = function(key, val) {
+    this.transferInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TransferInfoDlg.get = function(key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+TransferInfoDlg.close = function() {
+    parent.layer.close(window.parent.Transfer.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+TransferInfoDlg.collectData = function() {
+    this
+    .set('id')
+    .set('type')
+    .set('companyId')
+    .set('serverCarModelId')
+    .set('fareTypeNote')
+    .set('content');
+}
+
+/**
+ * 提交添加
+ */
+TransferInfoDlg.addSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+    if(!this.validate()){
+        return ;
+    }
+    var content = '{';
+    //拼接数据
+    $("input").each(function(){
+        var value = $(this).val();
+        content = content + '"'+$(this)[0].name+'":"'+value+'",';
+    });
+    content = content.substring(0,content.length-1);
+    content += '}';
+    console.log(content);
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tSystemPrice/addTransfer", function(data){
+        if (500 == data.code){
+            Feng.error(data.message);
+            return;
+        }else{
+            Feng.success("添加成功!");
+            window.parent.Transfer.table.refresh();
+            TransferInfoDlg.close();
+        }
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.transferInfoData);
+    ajax.set("content",content);
+    ajax.start();
+}
+
+/**
+ * 提交修改
+ */
+TransferInfoDlg.editSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+    if(!this.validate()){
+        return ;
+    }
+    var content = '{';
+    //拼接数据
+    $("input").each(function(){
+        var value = $(this).val();
+        content = content + '"'+$(this)[0].name+'":"'+value+'",';
+    });
+    content = content.substring(0,content.length-1);
+    content += '}';
+    console.log(content);
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tSystemPrice/updateTransfer", function(data){
+        if (500 == data.code){
+            Feng.error(data.message);
+            return;
+        }else {
+            Feng.success("修改成功!");
+            window.parent.Transfer.table.refresh();
+            TransferInfoDlg.close();
+        }
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.transferInfoData);
+    ajax.set("id",$("#id").html());
+    ajax.set("content",content);
+    ajax.start();
+}
+
+$(function() {
+    Feng.initValidator("transferPriceInfoForm", TransferInfoDlg.validateFields);
+});

--
Gitblit v1.7.1