xuhy
2024-05-15 7939ac40bc242bce6efb90970356ed977be6dd0e
后台包车,接送机改派
9个文件已修改
21个文件已添加
3604 ■■■■■ 已修改文件
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarModelController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCharteredServiceController.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCharteredServiceMapper.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTransferMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TReassignMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCharteredServiceMapper.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTransferMapper.xml 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TReassignMapper.xml 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCarModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCharteredService.java 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTransfer.java 870 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCharteredServiceService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTransferService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITReassignService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCharteredServiceServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TReassignServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel.html 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService.html 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_add.html 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_detail.html 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_edit.html 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tReassign/tReassign_reassignmentTransfer.html 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tReassign/transfer.html 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tCharteredService/tCharteredService.js 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tCharteredService/tCharteredService_info.js 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tReassign/selectTransferDriver.js 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tReassign/transfer.js 325 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java
@@ -119,7 +119,7 @@
        List<TCarBrand> brandList = tCarBrandService.selectList(new EntityWrapper<TCarBrand>().eq("state", 1));
        model.addAttribute("brandList",brandList);
        //车辆类型
        /*List<TCarModel> modelList = tCarModelService.selectList(new EntityWrapper<TCarModel>().eq("state", 1));
        /*List<TCharteredService> modelList = tCarModelService.selectList(new EntityWrapper<TCharteredService>().eq("state", 1));
        model.addAttribute("modelList",modelList);*/
        List<TServerCarmodel> zcModelList = itServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1));
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 + "tCarModel.html";
        return PREFIX + "tCharteredService.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 + "tCarModel_add.html";
        return PREFIX + "tCharteredService_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 + "tCarModel_edit.html";
        return PREFIX + "tCharteredService_edit.html";
    }
    /**
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCharteredServiceController.java
New file
@@ -0,0 +1,210 @@
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.TCarModel;
import com.stylefeng.guns.modular.system.model.TCharteredService;
import com.stylefeng.guns.modular.system.model.TServerCarmodel;
import com.stylefeng.guns.modular.system.service.ITCarBrandService;
import com.stylefeng.guns.modular.system.service.ITCarModelService;
import com.stylefeng.guns.modular.system.service.ITCharteredServiceService;
import com.stylefeng.guns.modular.system.service.ITServerCarmodelService;
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.math.BigDecimal;
import java.util.*;
/**
 * 包车管理管理控制器
 *
 * @author fengshuonan
 * @Date 2020-06-05 14:31:28
 */
@Controller
@RequestMapping("/tCharteredService")
public class TCharteredServiceController extends BaseController {
    private String PREFIX = "/system/tCharteredService/";
    @Autowired
    private ITCharteredServiceService charteredServiceService;
    @Autowired
    private ITServerCarmodelService serverCarmodelService;
    /**
     * 跳转到包车管理管理首页
     */
    @RequestMapping("")
    public String index(Model model) {
        // 查询类型
        List<TServerCarmodel> tServerCarmodels = serverCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 3).eq("state", 1));
        model.addAttribute("tServerCarmodels", tServerCarmodels);
        return PREFIX + "tCharteredService.html";
    }
    /**
     * 跳转到添加包车管理
     */
    @RequestMapping("/tCharteredService_add")
    public String tCharteredServiceAdd(Model model) {
        List<TServerCarmodel> tServerCarmodels = serverCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 3).eq("state", 1));
        model.addAttribute("tServerCarmodels", tServerCarmodels);
        return PREFIX + "tCharteredService_add.html";
    }
    /**
     * 跳转到修改包车管理详情
     */
    @RequestMapping("/tCharteredService_detail/{tCharteredServiceId}")
    public String tCharteredServiceDetail(@PathVariable Integer tCharteredServiceId, Model model) {
        TCharteredService charteredService = charteredServiceService.selectById(tCharteredServiceId);
        TServerCarmodel tServerCarmodel = serverCarmodelService.selectById(charteredService.getServerCarModelId());
        if(Objects.nonNull(tServerCarmodel)){
            charteredService.setServerCarModelName(tServerCarmodel.getName());
        }
        model.addAttribute("item",charteredService);
        //判断是手动挡和自动挡
        if (charteredService.getCarType() == 1){
            model.addAttribute("carType",1);
        }else{
            model.addAttribute("carType",2);
        }
        //判断状态
        if (charteredService.getStatus() == 1){
            model.addAttribute("status",1);
        }else{
            model.addAttribute("status",2);
        }
        LogObjectHolder.me().set(charteredService);
        List<TServerCarmodel> tServerCarmodels = serverCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 3).eq("state", 1));
        model.addAttribute("tServerCarmodels", tServerCarmodels);
        return PREFIX + "tCharteredService_detail.html";
    }
    /**
     * 跳转到修改包车管理
     */
    @RequestMapping("/tCharteredService_edit/{tCharteredServiceId}")
    public String tCharteredServiceEdit(@PathVariable Integer tCharteredServiceId, Model model) {
        TCharteredService charteredService = charteredServiceService.selectById(tCharteredServiceId);
        TServerCarmodel tServerCarmodel = serverCarmodelService.selectById(charteredService.getServerCarModelId());
        if(Objects.nonNull(tServerCarmodel)){
            charteredService.setServerCarModelName(tServerCarmodel.getName());
        }
        model.addAttribute("item",charteredService);
        //判断是手动挡和自动挡
        if (charteredService.getCarType() == 1){
            model.addAttribute("carType",1);
        }else{
            model.addAttribute("carType",2);
        }
        //判断状态
        if (charteredService.getStatus() == 1){
            model.addAttribute("status",1);
        }else{
            model.addAttribute("status",2);
        }
        LogObjectHolder.me().set(charteredService);
        List<TServerCarmodel> tServerCarmodels = serverCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 3).eq("state", 1));
        model.addAttribute("tServerCarmodels", tServerCarmodels);
        return PREFIX + "tCharteredService_edit.html";
    }
    /**
     * 获取包车管理管理列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String createTime,
                       String serviceName,
                       Integer serverCarModelId,
                       BigDecimal priceIntervalStart,
                       BigDecimal priceIntervalEnd,
                       Integer status) {
        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(charteredServiceService.getCharteredServiceList(page,beginTime,endTime,serviceName,serverCarModelId,priceIntervalStart,priceIntervalEnd,status));
        return super.packForBT(page);
    }
    /**
     * 新增包车管理管理
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TCharteredService charteredService) {
        charteredService.setInsertTime(new Date());
        charteredService.setStatus(1);
        charteredServiceService.insert(charteredService);
        return SUCCESS_TIP;
    }
    /**
     * 删除包车管理管理
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(Integer charteredServiceId) {
        TCharteredService charteredService = charteredServiceService.selectById(charteredServiceId);
        charteredService.setIsDelete(2);
        charteredServiceService.updateById(charteredService);
        return SUCCESS_TIP;
    }
    /**
     * 批量删除包车管理管理
     */
    @RequestMapping(value = "/deleteBatch")
    @ResponseBody
    public Object deleteBatch(@RequestParam String charteredServiceIds) {
        if(!StringUtils.hasLength(charteredServiceIds)){
            return ResultUtil.error("请选择要删除的数据");
        }
        String[] split = charteredServiceIds.split(",");
        List<Integer> charteredServiceId = new ArrayList<>();
        for (String s : split) {
            charteredServiceId.add(Integer.valueOf(s));
        }
        List<TCharteredService> charteredService = charteredServiceService.selectList(new EntityWrapper<TCharteredService>()
                .in("id", charteredServiceId));
        charteredService.forEach(tCharteredService -> {
            tCharteredService.setIsDelete(2);
        });
        charteredServiceService.updateBatchById(charteredService);
        return SUCCESS_TIP;
    }
    /**
     * 修改包车管理管理
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TCharteredService charteredService) {
        charteredServiceService.updateById(charteredService);
        return SUCCESS_TIP;
    }
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
@@ -45,6 +45,8 @@
    @Autowired
    private ITOrderPrivateCarService itOrderPrivateCarService;
    @Autowired
    private ITOrderTransferService orderTransferService;
    @Autowired
    private ITOrderCrossCityService itOrderCrossCityService;
@@ -109,6 +111,13 @@
        return PREFIX + "smallPieceLogistics.html";
    }
    /**
     * 跳转到接送机改派管理首页
     */
    @RequestMapping("/transfer")
    public String transfer() {
        return PREFIX + "transfer.html";
    }
    /**
     * 跳转到添加专车改派管理
@@ -154,6 +163,15 @@
    public String tReassign_reassignmentSmall(@PathVariable Integer tReassignId, Model model) {
        model.addAttribute("tReassignId",tReassignId);
        return PREFIX + "tReassign_reassignmentSmall.html";
    }
    /**
     * 跳转到修改专车改派管理
     */
    @RequestMapping("/tReassign_reassignmentTransfer/{transferId}")
    public String tReassign_reassignmentTransfer(@PathVariable Integer transferId, Model model) {
        model.addAttribute("transferId",transferId);
        return PREFIX + "tReassign_reassignmentTransfer.html";
    }
    /**
@@ -232,6 +250,31 @@
        return super.packForBT(page);
    }
    /**
     * 获取专车改派管理列表
     */
    @RequestMapping(value = "/listTransfer")
    @ResponseBody
    public Object listTransfer(String insertTime,
                       String originalDriverName,
                       String originalDriverPhone,
                       String orderNum,
                       String nowDriverName,
                       String nowDriverPhone,
                       Integer orderState,
                       Integer state) {
        String beginTime = null;
        String endTime = null;
        if (SinataUtil.isNotEmpty(insertTime)){
            String[] timeArray = insertTime.split(" - ");
            beginTime = timeArray[0];
            endTime = timeArray[1];
        }
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tReassignService.getTransferOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
        return super.packForBT(page);
    }
    /**
     * 选择司机列表
@@ -278,6 +321,21 @@
        TOrderLogistics tOrderLogistics = orderLogisticsService.selectById(reassign.getOrderId());
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tReassignService.getCanSelectSmallDriverList(page,tOrderLogistics.getCompanyId(), tOrderLogistics.getType(),name,phone));
        return super.packForBT(page);
    }
    /**
     * 选择司机列表
     */
    @RequestMapping(value = "/selectTransferDriver/{orderId}")
    @ResponseBody
    public Object selectTransferDriver(@PathVariable Integer orderId,
                               String name,
                               String phone) {
        TReassign reassign = tReassignService.selectById(orderId);
        TOrderTransfer orderTransfer = orderTransferService.selectById(reassign.getOrderId());
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tReassignService.getCanSelectTransferDriverList(page,orderTransfer.getCompanyId(),orderTransfer.getType(),name,phone));
        return super.packForBT(page);
    }
@@ -715,6 +773,125 @@
        return SUCCESS_TIP;
    }
    /**
     * 操作专车改派管理
     * optType 1=拒绝 2=取消
     */
    @RequestMapping(value = "/optTransfer")
    @ResponseBody
    public Object optTransfer(@RequestParam Integer transferId,@RequestParam Integer optType) {
        try {
            ShiroUser user = ShiroKit.getUser();
            TReassign tReassign = tReassignService.selectById(transferId);
            Integer state = tReassign.getState();
            if(state == 3){//已改派
                return "不能重复操作";
            }
            if(state == 4){//已改派
                return "不能重复操作";
            }
            if(state == 5){//已改派
                return "不能重复操作";
            }
            if (1 == optType){
                tReassign.setState(5);
                tReassignService.updateById(tReassign);
                //还原订单状态
                TOrderTransfer orderTransfer = orderTransferService.selectById(tReassign.getOrderId());
                orderTransfer.setState(orderTransfer.getOldState());
                orderTransferService.updateById(orderTransfer);
            }else if (2 == optType){
                tReassign.setState(4);
                tReassignService.updateById(tReassign);
                //修改订单状态"已取消"
                TOrderTransfer orderTransfer = orderTransferService.selectById(tReassign.getOrderId());
                orderTransfer.setState(10);
                orderTransferService.updateById(orderTransfer);
                //修改司机状态"空闲"
                TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId());
                driver.setState(2);
                itDriverService.updateById(driver);
                //添加取消记录
                OrderCancel orderCancel = new OrderCancel();
                orderCancel.setOrderId(tReassign.getOrderId());
                orderCancel.setOrderType(tReassign.getOrderType());
                orderCancel.setReason("调度端取消订单");
                orderCancel.setRemark("调度“" + user.getName() + "-" + user.getId() + "”执行取消操作");
                orderCancel.setState(2);
                orderCancel.setInsertTime(new Date());
                orderCancel.setUserType(3);
                orderCancel.setUserId(user.getId());
                orderCancelMapper.insert(orderCancel);
                //调用推送
                Map<String,String> map = new HashMap<>();
                map.put("id", orderTransfer.getId().toString());
                map.put("orderType", "7");
                String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
                System.out.println("接送机取消:【orderId="+orderTransfer.getId().toString()+"】,调用接口:"+result);
            }
            if(state == 2){//退款操作
                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
                String out_refund_no = sdf.format(new Date()) + "_" + tReassign.getId();
                Double money = tReassign.getMoney();
                if(tReassign.getPayType() == 1){//微信
                    Map<String, String> map = payMoneyUtil.wxRefund(tReassign.getPayOrder(), out_refund_no, money.toString(), money.toString(), "/dispatch/base/order/reassignRefundCallback");
                    if(null == map || !"SUCCESS".equals(map.get("return_code"))){
                        System.err.println(map.get("return_msg"));
                        return ResultUtil.error(map.get("return_msg"));
                    }
                    tReassign.setReviewer(ShiroKit.getUser().getId());
                    tReassign.setReviewerType(2);
                    tReassignService.updateById(tReassign);
                    //添加交易明细
                    transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "接送机改派拒绝退款", money, 1, 1, 2, 7, tReassign.getOrderId());
                }
                if(tReassign.getPayType() == 2){//支付宝
                    Map<String, String> map = payMoneyUtil.aliRefund(tReassign.getPayOrder(), money.toString());
                    if(null != map && "10000".equals(map.get("code"))){
                        tReassign.setReviewer(ShiroKit.getUser().getId());
                        tReassign.setReviewerType(2);
                        tReassignService.updateById(tReassign);
                        //添加交易明细
                        transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "接送机改派拒绝退款", money, 1, 1, 2, 7, tReassign.getOrderId());
                    }
                    if(null == map || !"10000".equals(map.get("code"))){
                        System.err.println(map.get("msg"));
                        return ResultUtil.error(map.get("msg"));
                    }
                }
                if(tReassign.getPayType() == 3){//余额
                    TDriver tDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
                    tDriver.setBalance(tDriver.getBalance().add(new BigDecimal(money)));
                    tDriver.setLaveBusinessMoney(tDriver.getLaveBusinessMoney() + money);
                    itDriverService.updateById(tDriver);
                }
            }
            //增加交易明细
            TPubTransactionDetails details = new TPubTransactionDetails();
            details.setUserId(tReassign.getOriginalDriverId());
            details.setInsertTime(new Date());
            details.setRemark("【接送改派】:改派失败或订单取消");
            details.setMoney(new BigDecimal(tReassign.getMoney()));
            details.setState(1);
            details.setType(1);
            details.setUserType(2);
            details.setOrderType(3);
            details.setOrderId(tReassign.getOrderId());
            itPubTransactionDetailsService.insert(details);
            return SUCCESS_TIP;
        }catch (Exception e){
            e.printStackTrace();
            return "ERROR";
        }
    }
    /**
     * 专车订单改派司机
@@ -922,4 +1099,65 @@
        System.out.println("小件物流改派:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result);
        return SUCCESS_TIP;
    }
    /**
     * 接送机订单改派司机
     */
    @RequestMapping(value = "/selectTransferDriver")
    @ResponseBody
    public Object selectTransferDriver(@RequestParam Integer orderId,@RequestParam Integer driverId) {
        //修改订单
        TReassign tReassign = tReassignService.selectById(orderId);
        TOrderTransfer orderTransfer = orderTransferService.selectById(tReassign.getOrderId());
        //修改之前司机状态 -- 空闲
        TDriver oldDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
        oldDriver.setState(2);
        itDriverService.updateById(oldDriver);
        //查找司机对象
        TDriver nowDriver = itDriverService.selectById(driverId);
        nowDriver.setState(3);
        itDriverService.updateById(nowDriver);
        //修改专车订单
        orderTransfer.setState(orderTransfer.getOldState());
        orderTransfer.setDriverId(driverId);
        orderTransfer.setCarId(nowDriver.getCarId());
        orderTransferService.updateById(orderTransfer);
        //修改专车改派订单
        tReassign.setNowDriverId(driverId);
        tReassign.setNowCarId(nowDriver.getCarId());
        tReassign.setState(3);
        tReassign.setCompleteTime(new Date());
        tReassignService.updateById(tReassign);
        List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("userType", 2).eq("type", 2).eq("incomeId", orderTransfer.getId()).eq("orderType", orderTransfer.getType()));
        for(Income income : incomes){
            income.setObjectId(driverId);
            incomeService.updateById(income);
            TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId());
            driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney())));
            driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney());
            driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney());
            itDriverService.updateById(driver);
            driver = itDriverService.selectById(driverId);
            driver.setBalance(driver.getBalance().add(new BigDecimal(income.getMoney())));
            driver.setBusinessMoney(driver.getBusinessMoney() + income.getMoney());
            driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() + income.getMoney());
            itDriverService.updateById(driver);
        }
        //增加推送
        Map<String,String> map = new HashMap<>();
        map.put("orderId", orderTransfer.getId().toString());
        map.put("orderType", "7");
        String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map);
        System.out.println("接送机改派:【orderId="+orderTransfer.getId().toString()+"】,调用接口:"+result);
        return SUCCESS_TIP;
    }
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCharteredServiceMapper.java
New file
@@ -0,0 +1,44 @@
package com.stylefeng.guns.modular.system.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.modular.system.model.TCarModel;
import com.stylefeng.guns.modular.system.model.TCharteredService;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 包车服务 Mapper 接口
 * </p>
 *
 * @author 吕雪
 * @since 2020-06-05
 */
public interface TCharteredServiceMapper extends BaseMapper<TCharteredService> {
    /**
     * 获取包车管理管理列表
     * @param page
     * @param beginTime
     * @param endTime
     * @param serviceName
     * @param serverCarModelId
     * @param startPrice
     * @param endPrice
     * @param status
     * @return
     */
    List<Map<String, Object>> getCharteredServiceList(@Param("page") Page<Map<String, Object>> page,
                                                      @Param("beginTime")String beginTime,
                                                      @Param("endTime")String endTime,
                                                      @Param("serviceName")String serviceName,
                                                      @Param("serverCarModelId")Integer serverCarModelId,
                                                      @Param("startPrice")BigDecimal startPrice,
                                                      @Param("endPrice")BigDecimal endPrice,
                                                      @Param("status")Integer status);
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTransferMapper.java
New file
@@ -0,0 +1,22 @@
package com.stylefeng.guns.modular.system.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.modular.system.model.TOrderPrivateCar;
import com.stylefeng.guns.modular.system.model.TOrderTransfer;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 订单-专车 Mapper 接口
 * </p>
 *
 * @author 吕雪
 * @since 2020-09-02
 */
public interface TOrderTransferMapper extends BaseMapper<TOrderTransfer> {
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TReassignMapper.java
@@ -104,4 +104,39 @@
                                                         @Param("name") String name,
                                                         @Param("phone") String phone,
                                                         @Param("driverId") Integer driverId);
    /**
     * 接送机改派列表
     * @param page
     * @param roleType
     * @param nowUserId
     * @param beginTime
     * @param endTime
     * @param originalDriverName
     * @param originalDriverPhone
     * @param orderNum
     * @param nowDriverName
     * @param nowDriverPhone
     * @param orderState
     * @param state
     * @return
     */
    List<Map<String, Object>> getTransferOrderList(@Param("page") Page<Map<String, Object>> page,
                                                   @Param("roleType") Integer roleType,
                                                   @Param("nowUserId") Integer nowUserId,
                                                   @Param("beginTime") String beginTime,
                                                   @Param("endTime") String endTime,
                                                   @Param("originalDriverName") String originalDriverName,
                                                   @Param("originalDriverPhone") String originalDriverPhone,
                                                   @Param("orderNum") String orderNum,
                                                   @Param("nowDriverName") String nowDriverName,
                                                   @Param("nowDriverPhone") String nowDriverPhone,
                                                   @Param("orderState") Integer orderState,
                                                   @Param("state") Integer state);
    List<Map<String, Object>> getCanSelectTransferDriverList(@Param("page") Page<Map<String, Object>> page,
                                                             @Param("companyId") Integer companyId,
                                                             @Param("type") Integer type,
                                                             @Param("name") String name,
                                                             @Param("phone") String phone);
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCharteredServiceMapper.xml
New file
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.TCharteredServiceMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TCharteredService">
        <id column="id" property="id" />
        <result column="serviceName" property="serviceName" />
        <result column="themePicture" property="themePicture" />
        <result column="serverCarModelId" property="serverCarModelId" />
        <result column="serviceMoney" property="serviceMoney" />
        <result column="carType" property="carType" />
        <result column="status" property="status" />
        <result column="isDelete" property="isDelete" />
        <result column="insertTime" property="insertTime" />
        <result column="priceRule" property="priceRule" />
        <result column="priceRulePicture" property="priceRulePicture" />
        <result column="cancelRule" property="cancelRule" />
        <result column="cancelRulePicture" property="cancelRulePicture" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, serviceName, themePicture, serverCarModelId, serviceMoney, carType, status,isDelete,insertTime,priceRule,priceRulePicture,cancelRule,cancelRulePicture
    </sql>
    <select id="getCharteredServiceList" resultType="java.util.Map">
        select
        tcs.id, tcs.serviceName, tcs.themePicture, tcs.serverCarModelId, tcs.serviceMoney, tcs.carType, tcs.status,
        tcs.isDelete,tcs.insertTime,tcs.priceRule,tcs.priceRulePicture,tcs.cancelRule,tcs.cancelRulePicture,tsc.name serverCarModelName
        from t_chartered_service tcs
        left join t_server_carmodel tsc on tcs.serverCarModelId = tsc.id
        where tcs.isDelete=1
        <if test="beginTime!=null and endTime!=null and beginTime!='' and endTime!=''">
            and tcs.insertTime between CONCAT('',#{beginTime},' 00:00:00') and CONCAT('',#{endTime},' 23:59:59')
        </if>
        <if test="serviceName!=null and serviceName!=''">
            and tcs.serviceName like concat('%',#{serviceName},'%')
        </if>
        <if test="serverCarModelId!=null">
            and tcs.serverCarModelId=#{serverCarModelId}
        </if>
        <if test="startPrice != null and endPrice != null">
            and tcs.serviceMoney &gt;= #{startPrice}
            and tcs.serviceMoney &lt;= #{endPrice}
        </if>
        <if test="serverCarModelId!=null">
            and tcs.serverCarModelId=#{serverCarModelId}
        </if>
        <if test="status!=null">
            and tcs.status=#{status}
        </if>
        order by tcs.insertTime desc
    </select>
</mapper>
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTransferMapper.xml
New file
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.TOrderTransferMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TOrderTransfer">
        <id column="id" property="id" />
        <result column="type" property="type" />
        <result column="userId" property="userId" />
        <result column="driverId" property="driverId" />
        <result column="carId" property="carId" />
        <result column="orderNum" property="orderNum" />
        <result column="placementLon" property="placementLon" />
        <result column="placementLat" property="placementLat" />
        <result column="placementAddress" property="placementAddress" />
        <result column="startLon" property="startLon" />
        <result column="startLat" property="startLat" />
        <result column="endLon" property="endLon" />
        <result column="startAddress" property="startAddress" />
        <result column="endLat" property="endLat" />
        <result column="endAddress" property="endAddress" />
        <result column="boardingLon" property="boardingLon" />
        <result column="boardingLat" property="boardingLat" />
        <result column="boardingAddress" property="boardingAddress" />
        <result column="boardingTime" property="boardingTime" />
        <result column="getoffLon" property="getoffLon" />
        <result column="getoffLat" property="getoffLat" />
        <result column="getoffAddress" property="getoffAddress" />
        <result column="getoffTime" property="getoffTime" />
        <result column="mileage" property="mileage" />
        <result column="payManner" property="payManner" />
        <result column="payType" property="payType" />
        <result column="orderMoney" property="orderMoney" />
        <result column="startMoney" property="startMoney" />
        <result column="mileageMoney" property="mileageMoney" />
        <result column="durationMoney" property="durationMoney" />
        <result column="longDistanceMoney" property="longDistanceMoney" />
        <result column="parkMoney" property="parkMoney" />
        <result column="roadTollMoney" property="roadTollMoney" />
        <result column="redPacketMoney" property="redPacketMoney" />
        <result column="couponMoney" property="couponMoney" />
        <result column="redPacketId" property="redPacketId" />
        <result column="couponId" property="couponId" />
        <result column="discount" property="discount" />
        <result column="discountMoney" property="discountMoney" />
        <result column="activityId" property="activityId" />
        <result column="companyId" property="companyId" />
        <result column="payMoney" property="payMoney" />
        <result column="substitute" property="substitute" />
        <result column="passengers" property="passengers" />
        <result column="passengersPhone" property="passengersPhone" />
        <result column="state" property="state" />
        <result column="insertTime" property="insertTime" />
        <result column="travelTime" property="travelTime" />
        <result column="snatchOrderTime" property="snatchOrderTime" />
        <result column="setOutTime" property="setOutTime" />
        <result column="arriveTime" property="arriveTime" />
        <result column="startServiceTime" property="startServiceTime" />
        <result column="endServiceTime" property="endServiceTime" />
        <result column="orderType" property="orderType" />
        <result column="orderSource" property="orderSource" />
        <result column="invoiceId" property="invoiceId" />
        <result column="isReassign" property="isReassign" />
        <result column="reassignNotice" property="reassignNotice" />
        <result column="trackId" property="trackId" />
        <result column="isDelete" property="isDelete" />
        <result column="oldState" property="oldState" />
        <result column="telX" property="telX" />
        <result column="bindId" property="bindId" />
        <result column="serverCarModelId" property="serverCarModelId" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, type, userId, driverId, carId, orderNum, placementLon, placementLat, placementAddress, startLon, startLat, endLon, startAddress, endLat, endAddress, boardingLon, boardingLat, boardingAddress, boardingTime, getoffLon, getoffLat, getoffAddress, getoffTime, mileage, payManner, payType, orderMoney, startMoney, mileageMoney, durationMoney, longDistanceMoney, parkMoney, roadTollMoney, redPacketMoney, couponMoney, redPacketId, couponId, discount, discountMoney, activityId, companyId, payMoney, substitute, passengers, passengersPhone, state, insertTime, travelTime, snatchOrderTime, setOutTime, arriveTime, startServiceTime, endServiceTime, orderType, orderSource, invoiceId, isReassign, reassignNotice, trackId, isDelete, oldState, telX, bindId, serverCarModelId
    </sql>
</mapper>
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TReassignMapper.xml
@@ -260,5 +260,73 @@
        </if>
        order by a.id desc
    </select>
    <select id="getTransferOrderList" resultType="java.util.Map">
        SELECT * FROM (SELECT rr.id,rr.insertTime,
        dd1.name as originalDriverName,dd1.phone as originalDriverPhone,
        CONCAT(dd1.name,'-',dd1.phone) as originalDriver,rr.reason,opc.orderNum,
        CONCAT(uu1.nickName,'-',uu1.phone) as addOrderUser,opc.travelTime,opc.startAddress,opc.endAddress,
        CONCAT(cb1.`name`,'-',cc1.carLicensePlate) as originalCar,rr.money,opc.state as orderState,
        dd2.name as nowDriverName,dd2.phone as nowDriverPhone,
        CONCAT(dd2.name,'-',dd2.phone) as nowDriver,CONCAT(cb2.`name`,'-',cc2.carLicensePlate) as nowCar,
        opc.companyId,rr.state,rr.orderType FROM t_reassign as rr
        LEFT JOIN t_driver as dd1 on dd1.id = rr.originalDriverId
        LEFT JOIN t_order_transfer as opc on opc.id = rr.orderId
        LEFT JOIN t_user as uu1 on uu1.id = opc.userId
        LEFT JOIN t_car as cc1 on cc1.id= rr.originalCarId
        LEFT JOIN t_car_brand as cb1 on cb1.id = cc1.carBrandId
        LEFT JOIN t_driver as dd2 on dd2.id = rr.nowDriverId
        LEFT JOIN t_car as cc2 on cc2.id= rr.nowCarId
        LEFT JOIN t_car_brand as cb2 on cb2.id = cc2.carBrandId) as o
        <where>
            o.orderType = 7 and o.state != 6
            <if test="beginTime != null and beginTime != '' and endTime != null and endTime != ''">
                AND (o.insertTime between CONCAT(#{beginTime},' 00:00:00') and CONCAT(#{endTime},' 23:59:59'))
            </if>
            <if test="originalDriverName != null and originalDriverName != ''">
                and o.originalDriverName  LIKE CONCAT('%',#{originalDriverName},'%')
            </if>
            <if test="originalDriverPhone != null and originalDriverPhone != ''">
                and o.originalDriverPhone  LIKE CONCAT('%',#{originalDriverPhone},'%')
            </if>
            <if test="orderNum != null and orderNum != ''">
                and o.orderNum  LIKE CONCAT('%',#{orderNum},'%')
            </if>
            <if test="nowDriverName != null and nowDriverName != ''">
                and o.nowDriverName = #{nowDriverName}
            </if>
            <if test="nowDriverPhone != null and nowDriverPhone != ''">
                and o.nowDriverPhone  LIKE CONCAT('%',#{nowDriverPhone},'%')
            </if>
            <if test="orderState != null and orderState != ''">
                and o.orderState = #{orderState}
            </if>
            <if test="state != null and state != ''">
                and o.state = #{state}
            </if>
            <if test="roleType != null and roleType != '' and roleType == 2">
                and (o.companyId = #{nowUserId} or FIND_IN_SET(o.companyId,(SELECT GROUP_CONCAT(id) as ids FROM t_company where superiorId = #{nowUserId} GROUP BY superiorId)))
            </if>
            <if test="roleType != null and roleType != '' and roleType == 3">
                and o.companyId = #{nowUserId}
            </if>
        </where>
        order by o.id desc
    </select>
    <select id="getCanSelectTransferDriverList" resultType="java.util.Map">
        SELECT dd.*,c1.name as companyName,c2.name as franchiseeName from t_driver AS dd
        LEFT JOIN t_company as c1 on c1.id = dd.companyId
        LEFT JOIN t_company as c2 on c2.id = dd.franchiseeId
        LEFT JOIN (SELECT * from t_driver_service where type = #{type}) as ds on ds.driverId = dd.id
        <where>
            (dd.companyId = #{companyId} or dd.franchiseeId = #{companyId}) and dd.authState = 2 and dd.state = 2 and (ds.id is not null ) and (dd.carId is not null)
            <if test="name != null and name != ''">
                and dd.name LIKE CONCAT('%',#{name},'%')
            </if>
            <if test="phone != null and phone != ''">
                and dd.phone LIKE CONCAT('%',#{phone},'%')
            </if>
        </where>
        order by dd.id desc
    </select>
</mapper>
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCarModel.java
@@ -114,7 +114,7 @@
    @Override
    public String toString() {
        return "TCarModel{" +
        return "TCharteredService{" +
        "id=" + id +
        ", name=" + name +
        ", remark=" + remark +
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCharteredService.java
New file
@@ -0,0 +1,229 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 包车服务管理
 * </p>
 *
 * @author stylefeng
 * @since 2017-07-11
 */
@TableName("t_chartered_service")
public class TCharteredService extends Model<TCharteredService> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value="id", type= IdType.AUTO)
    private Integer id;
    /**
     * 服务名称
     */
    private String serviceName;
    /**
     * 封面图
     */
    private String themePicture;
    /**
     * 车型id
     */
    private Integer serverCarModelId;
    /**
     * 服务金额
     */
    private BigDecimal serviceMoney;
    /**
     * 车辆类型 1=自动 2=手动
     */
    private Integer carType;
    /**
     * 状态 1=启用 0=禁用
     */
    private Integer status;
    /**
     * 删除状态(1=否,2=是)
     */
    private Integer isDelete;
    /**
     * 添加时间
     */
    private Date insertTime;
    /**
     * 计价规则
     */
    private String priceRule;
    /**
     * 计价规则图片
     */
    private String priceRulePicture;
    /**
     * 取消规则
     */
    private String cancelRule;
    /**
     * 取消规则图片
     */
    private String cancelRulePicture;
    /**
     * 取消规则图片
     */
    @TableField(exist = false)
    private String serverCarModelName;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getServiceName() {
        return serviceName;
    }
    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }
    public String getThemePicture() {
        return themePicture;
    }
    public void setThemePicture(String themePicture) {
        this.themePicture = themePicture;
    }
    public Integer getServerCarModelId() {
        return serverCarModelId;
    }
    public void setServerCarModelId(Integer serverCarModelId) {
        this.serverCarModelId = serverCarModelId;
    }
    public BigDecimal getServiceMoney() {
        return serviceMoney;
    }
    public void setServiceMoney(BigDecimal serviceMoney) {
        this.serviceMoney = serviceMoney;
    }
    public Integer getCarType() {
        return carType;
    }
    public void setCarType(Integer carType) {
        this.carType = carType;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Integer getIsDelete() {
        return isDelete;
    }
    public void setIsDelete(Integer isDelete) {
        this.isDelete = isDelete;
    }
    public Date getInsertTime() {
        return insertTime;
    }
    public void setInsertTime(Date insertTime) {
        this.insertTime = insertTime;
    }
    public String getPriceRule() {
        return priceRule;
    }
    public void setPriceRule(String priceRule) {
        this.priceRule = priceRule;
    }
    public String getPriceRulePicture() {
        return priceRulePicture;
    }
    public void setPriceRulePicture(String priceRulePicture) {
        this.priceRulePicture = priceRulePicture;
    }
    public String getCancelRule() {
        return cancelRule;
    }
    public void setCancelRule(String cancelRule) {
        this.cancelRule = cancelRule;
    }
    public String getCancelRulePicture() {
        return cancelRulePicture;
    }
    public void setCancelRulePicture(String cancelRulePicture) {
        this.cancelRulePicture = cancelRulePicture;
    }
    public String getServerCarModelName() {
        return serverCarModelName;
    }
    public void setServerCarModelName(String serverCarModelName) {
        this.serverCarModelName = serverCarModelName;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "TCharteredService{" +
                "id=" + id +
                ", serviceName='" + serviceName + '\'' +
                ", themePicture='" + themePicture + '\'' +
                ", serverCarModelId=" + serverCarModelId +
                ", serviceMoney=" + serviceMoney +
                ", carType=" + carType +
                ", status=" + status +
                ", isDelete=" + isDelete +
                ", insertTime=" + insertTime +
                ", priceRule='" + priceRule + '\'' +
                ", priceRulePicture='" + priceRulePicture + '\'' +
                ", cancelRule='" + cancelRule + '\'' +
                ", cancelRulePicture='" + cancelRulePicture + '\'' +
                '}';
    }
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTransfer.java
New file
@@ -0,0 +1,870 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 订单-接送机
 * </p>
 *
 * @author 吕雪
 * @since 2020-09-02
 */
@TableName("t_order_transfer")
public class TOrderTransfer extends Model<TOrderTransfer> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 类型(1=普通订单,2=摆渡订单)
     */
    private Integer type;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 接单司机ID
     */
    private Integer driverId;
    /**
     * 车辆id
     */
    private Integer carId;
    /**
     * 订单号
     */
    private String orderNum;
    /**
     * 下单地点经度
     */
    private Double placementLon;
    /**
     * 下单地点纬度
     */
    private Double placementLat;
    /**
     * 下单地点
     */
    private String placementAddress;
    /**
     * 出发地经度值
     */
    private Double startLon;
    /**
     * 出发地纬度值
     */
    private Double startLat;
    /**
     * 目的地经度
     */
    private Double endLon;
    /**
     * 出发地地点
     */
    private String startAddress;
    /**
     * 目的地纬度
     */
    private Double endLat;
    /**
     * 目的地地点
     */
    private String endAddress;
    /**
     * 上车点经度
     */
    private Double boardingLon;
    /**
     * 上车点纬度
     */
    private Double boardingLat;
    /**
     * 上车点
     */
    private String boardingAddress;
    /**
     * 上车时间
     */
    private Date boardingTime;
    /**
     * 下车点经度
     */
    private Double getoffLon;
    /**
     * 下车点纬度
     */
    private Double getoffLat;
    /**
     * 下车地点
     */
    private String getoffAddress;
    /**
     * 下车时间
     */
    private Date getoffTime;
    /**
     * 行驶里程数(米)
     */
    private Double mileage;
    /**
     * 支付方式(1=OK平台支付,2=其他方式支付)
     */
    private Integer payManner;
    /**
     * 支付方式(1=微信,2=支付宝,3=其他)
     */
    private Integer payType;
    /**
     * 订单金额
     */
    private BigDecimal orderMoney;
    /**
     * 起步价
     */
    private BigDecimal startMoney;
    /**
     * 里程费
     */
    private BigDecimal mileageMoney;
    /**
     * 时长费
     */
    private BigDecimal durationMoney;
    /**
     * 远途费
     */
    private BigDecimal longDistanceMoney;
    /**
     * 停车费
     */
    private BigDecimal parkMoney;
    /**
     * 过路费
     */
    private BigDecimal roadTollMoney;
    /**
     * 红包抵扣金额
     */
    private BigDecimal redPacketMoney;
    /**
     * 优惠券抵扣金额
     */
    private BigDecimal couponMoney;
    /**
     * 红包记录id
     */
    private Integer redPacketId;
    /**
     * 优惠券id
     */
    private Integer couponId;
    /**
     * 折扣
     */
    private Double discount;
    /**
     * 折扣优惠金额
     */
    private Double discountMoney;
    /**
     * 折扣活动id
     */
    private Integer activityId;
    /**
     * 公司id
     */
    private Integer companyId;
    /**
     * 支付金额
     */
    private BigDecimal payMoney;
    /**
     * 是否是代下单(0:否,1:是)
     */
    private Integer substitute;
    /**
     * 乘车人
     */
    private String passengers;
    /**
     * 乘车人电话
     */
    private String passengersPhone;
    /**
     * 状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付)
     */
    private Integer state;
    /**
     * 下单时间
     */
    private Date insertTime;
    /**
     * 出行时间
     */
    private Date travelTime;
    /**
     * 抢单时间
     */
    private Date snatchOrderTime;
    /**
     * 司机点出发时间
     */
    private Date setOutTime;
    /**
     * 司机到达预约地点时间
     */
    private Date arriveTime;
    /**
     * 开始服务时间
     */
    private Date startServiceTime;
    /**
     * 结束服务时间
     */
    private Date endServiceTime;
    /**
     * 订单类型(1=普通,2=预约)
     */
    private Integer orderType;
    /**
     * 下单方式(1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单)
     */
    private Integer orderSource;
    /**
     * 发票id
     */
    private Integer invoiceId;
    /**
     * 是否是改派单(1=否,2=是)
     */
    private Integer isReassign;
    /**
     * 改派通知(0=没有改派,1=改派中,2=已改派)
     */
    private Integer reassignNotice;
    /**
     * 高德猎鹰上的轨迹id
     */
    private String trackId;
    /**
     * 是否删除  1=否 2=是
     */
    private Integer isDelete;
    /**
     * 状态(改派前订单状态)
     */
    private Integer oldState;
    /**
     * 移动小号
     */
    private String telX;
    /**
     * 移动小号绑定关系id
     */
    private String bindId;
    /**
     * 专车车型ID  关联t_server_carmodel表
     */
    private Integer serverCarModelId;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public Integer getDriverId() {
        return driverId;
    }
    public void setDriverId(Integer driverId) {
        this.driverId = driverId;
    }
    public Integer getCarId() {
        return carId;
    }
    public void setCarId(Integer carId) {
        this.carId = carId;
    }
    public String getOrderNum() {
        return orderNum;
    }
    public void setOrderNum(String orderNum) {
        this.orderNum = orderNum;
    }
    public Double getPlacementLon() {
        return placementLon;
    }
    public void setPlacementLon(Double placementLon) {
        this.placementLon = placementLon;
    }
    public Double getPlacementLat() {
        return placementLat;
    }
    public void setPlacementLat(Double placementLat) {
        this.placementLat = placementLat;
    }
    public String getPlacementAddress() {
        return placementAddress;
    }
    public void setPlacementAddress(String placementAddress) {
        this.placementAddress = placementAddress;
    }
    public Double getStartLon() {
        return startLon;
    }
    public void setStartLon(Double startLon) {
        this.startLon = startLon;
    }
    public Double getStartLat() {
        return startLat;
    }
    public void setStartLat(Double startLat) {
        this.startLat = startLat;
    }
    public Double getEndLon() {
        return endLon;
    }
    public void setEndLon(Double endLon) {
        this.endLon = endLon;
    }
    public String getStartAddress() {
        return startAddress;
    }
    public void setStartAddress(String startAddress) {
        this.startAddress = startAddress;
    }
    public Double getEndLat() {
        return endLat;
    }
    public void setEndLat(Double endLat) {
        this.endLat = endLat;
    }
    public String getEndAddress() {
        return endAddress;
    }
    public void setEndAddress(String endAddress) {
        this.endAddress = endAddress;
    }
    public Double getBoardingLon() {
        return boardingLon;
    }
    public void setBoardingLon(Double boardingLon) {
        this.boardingLon = boardingLon;
    }
    public Double getBoardingLat() {
        return boardingLat;
    }
    public void setBoardingLat(Double boardingLat) {
        this.boardingLat = boardingLat;
    }
    public String getBoardingAddress() {
        return boardingAddress;
    }
    public void setBoardingAddress(String boardingAddress) {
        this.boardingAddress = boardingAddress;
    }
    public Date getBoardingTime() {
        return boardingTime;
    }
    public void setBoardingTime(Date boardingTime) {
        this.boardingTime = boardingTime;
    }
    public Double getGetoffLon() {
        return getoffLon;
    }
    public void setGetoffLon(Double getoffLon) {
        this.getoffLon = getoffLon;
    }
    public Double getGetoffLat() {
        return getoffLat;
    }
    public void setGetoffLat(Double getoffLat) {
        this.getoffLat = getoffLat;
    }
    public String getGetoffAddress() {
        return getoffAddress;
    }
    public void setGetoffAddress(String getoffAddress) {
        this.getoffAddress = getoffAddress;
    }
    public Date getGetoffTime() {
        return getoffTime;
    }
    public void setGetoffTime(Date getoffTime) {
        this.getoffTime = getoffTime;
    }
    public Double getMileage() {
        return mileage;
    }
    public void setMileage(Double mileage) {
        this.mileage = mileage;
    }
    public Integer getPayManner() {
        return payManner;
    }
    public void setPayManner(Integer payManner) {
        this.payManner = payManner;
    }
    public Integer getPayType() {
        return payType;
    }
    public void setPayType(Integer payType) {
        this.payType = payType;
    }
    public BigDecimal getOrderMoney() {
        return orderMoney;
    }
    public void setOrderMoney(BigDecimal orderMoney) {
        this.orderMoney = orderMoney;
    }
    public BigDecimal getStartMoney() {
        return startMoney;
    }
    public void setStartMoney(BigDecimal startMoney) {
        this.startMoney = startMoney;
    }
    public BigDecimal getMileageMoney() {
        return mileageMoney;
    }
    public void setMileageMoney(BigDecimal mileageMoney) {
        this.mileageMoney = mileageMoney;
    }
    public BigDecimal getDurationMoney() {
        return durationMoney;
    }
    public void setDurationMoney(BigDecimal durationMoney) {
        this.durationMoney = durationMoney;
    }
    public BigDecimal getLongDistanceMoney() {
        return longDistanceMoney;
    }
    public void setLongDistanceMoney(BigDecimal longDistanceMoney) {
        this.longDistanceMoney = longDistanceMoney;
    }
    public BigDecimal getParkMoney() {
        return parkMoney;
    }
    public void setParkMoney(BigDecimal parkMoney) {
        this.parkMoney = parkMoney;
    }
    public BigDecimal getRoadTollMoney() {
        return roadTollMoney;
    }
    public void setRoadTollMoney(BigDecimal roadTollMoney) {
        this.roadTollMoney = roadTollMoney;
    }
    public BigDecimal getRedPacketMoney() {
        return redPacketMoney;
    }
    public void setRedPacketMoney(BigDecimal redPacketMoney) {
        this.redPacketMoney = redPacketMoney;
    }
    public BigDecimal getCouponMoney() {
        return couponMoney;
    }
    public void setCouponMoney(BigDecimal couponMoney) {
        this.couponMoney = couponMoney;
    }
    public Integer getRedPacketId() {
        return redPacketId;
    }
    public void setRedPacketId(Integer redPacketId) {
        this.redPacketId = redPacketId;
    }
    public Integer getCouponId() {
        return couponId;
    }
    public void setCouponId(Integer couponId) {
        this.couponId = couponId;
    }
    public Double getDiscount() {
        return discount;
    }
    public void setDiscount(Double discount) {
        this.discount = discount;
    }
    public Double getDiscountMoney() {
        return discountMoney;
    }
    public void setDiscountMoney(Double discountMoney) {
        this.discountMoney = discountMoney;
    }
    public Integer getActivityId() {
        return activityId;
    }
    public void setActivityId(Integer activityId) {
        this.activityId = activityId;
    }
    public Integer getCompanyId() {
        return companyId;
    }
    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }
    public BigDecimal getPayMoney() {
        return payMoney;
    }
    public void setPayMoney(BigDecimal payMoney) {
        this.payMoney = payMoney;
    }
    public Integer getSubstitute() {
        return substitute;
    }
    public void setSubstitute(Integer substitute) {
        this.substitute = substitute;
    }
    public String getPassengers() {
        return passengers;
    }
    public void setPassengers(String passengers) {
        this.passengers = passengers;
    }
    public String getPassengersPhone() {
        return passengersPhone;
    }
    public void setPassengersPhone(String passengersPhone) {
        this.passengersPhone = passengersPhone;
    }
    public Integer getState() {
        return state;
    }
    public void setState(Integer state) {
        this.state = state;
    }
    public Date getInsertTime() {
        return insertTime;
    }
    public void setInsertTime(Date insertTime) {
        this.insertTime = insertTime;
    }
    public Date getTravelTime() {
        return travelTime;
    }
    public void setTravelTime(Date travelTime) {
        this.travelTime = travelTime;
    }
    public Date getSnatchOrderTime() {
        return snatchOrderTime;
    }
    public void setSnatchOrderTime(Date snatchOrderTime) {
        this.snatchOrderTime = snatchOrderTime;
    }
    public Date getSetOutTime() {
        return setOutTime;
    }
    public void setSetOutTime(Date setOutTime) {
        this.setOutTime = setOutTime;
    }
    public Date getArriveTime() {
        return arriveTime;
    }
    public void setArriveTime(Date arriveTime) {
        this.arriveTime = arriveTime;
    }
    public Date getStartServiceTime() {
        return startServiceTime;
    }
    public void setStartServiceTime(Date startServiceTime) {
        this.startServiceTime = startServiceTime;
    }
    public Date getEndServiceTime() {
        return endServiceTime;
    }
    public void setEndServiceTime(Date endServiceTime) {
        this.endServiceTime = endServiceTime;
    }
    public Integer getOrderType() {
        return orderType;
    }
    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }
    public Integer getOrderSource() {
        return orderSource;
    }
    public void setOrderSource(Integer orderSource) {
        this.orderSource = orderSource;
    }
    public Integer getInvoiceId() {
        return invoiceId;
    }
    public void setInvoiceId(Integer invoiceId) {
        this.invoiceId = invoiceId;
    }
    public Integer getIsReassign() {
        return isReassign;
    }
    public void setIsReassign(Integer isReassign) {
        this.isReassign = isReassign;
    }
    public Integer getReassignNotice() {
        return reassignNotice;
    }
    public void setReassignNotice(Integer reassignNotice) {
        this.reassignNotice = reassignNotice;
    }
    public String getTrackId() {
        return trackId;
    }
    public void setTrackId(String trackId) {
        this.trackId = trackId;
    }
    public Integer getIsDelete() {
        return isDelete;
    }
    public void setIsDelete(Integer isDelete) {
        this.isDelete = isDelete;
    }
    public Integer getOldState() {
        return oldState;
    }
    public void setOldState(Integer oldState) {
        this.oldState = oldState;
    }
    public String getTelX() {
        return telX;
    }
    public void setTelX(String telX) {
        this.telX = telX;
    }
    public String getBindId() {
        return bindId;
    }
    public void setBindId(String bindId) {
        this.bindId = bindId;
    }
    public Integer getServerCarModelId() {
        return serverCarModelId;
    }
    public void setServerCarModelId(Integer serverCarModelId) {
        this.serverCarModelId = serverCarModelId;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "TOrderPrivateCar{" +
        "id=" + id +
        ", type=" + type +
        ", userId=" + userId +
        ", driverId=" + driverId +
        ", carId=" + carId +
        ", orderNum=" + orderNum +
        ", placementLon=" + placementLon +
        ", placementLat=" + placementLat +
        ", placementAddress=" + placementAddress +
        ", startLon=" + startLon +
        ", startLat=" + startLat +
        ", endLon=" + endLon +
        ", startAddress=" + startAddress +
        ", endLat=" + endLat +
        ", endAddress=" + endAddress +
        ", boardingLon=" + boardingLon +
        ", boardingLat=" + boardingLat +
        ", boardingAddress=" + boardingAddress +
        ", boardingTime=" + boardingTime +
        ", getoffLon=" + getoffLon +
        ", getoffLat=" + getoffLat +
        ", getoffAddress=" + getoffAddress +
        ", getoffTime=" + getoffTime +
        ", mileage=" + mileage +
        ", payManner=" + payManner +
        ", payType=" + payType +
        ", orderMoney=" + orderMoney +
        ", startMoney=" + startMoney +
        ", mileageMoney=" + mileageMoney +
        ", durationMoney=" + durationMoney +
        ", longDistanceMoney=" + longDistanceMoney +
        ", parkMoney=" + parkMoney +
        ", roadTollMoney=" + roadTollMoney +
        ", redPacketMoney=" + redPacketMoney +
        ", couponMoney=" + couponMoney +
        ", redPacketId=" + redPacketId +
        ", couponId=" + couponId +
        ", discount=" + discount +
        ", discountMoney=" + discountMoney +
        ", activityId=" + activityId +
        ", companyId=" + companyId +
        ", payMoney=" + payMoney +
        ", substitute=" + substitute +
        ", passengers=" + passengers +
        ", passengersPhone=" + passengersPhone +
        ", state=" + state +
        ", insertTime=" + insertTime +
        ", travelTime=" + travelTime +
        ", snatchOrderTime=" + snatchOrderTime +
        ", setOutTime=" + setOutTime +
        ", arriveTime=" + arriveTime +
        ", startServiceTime=" + startServiceTime +
        ", endServiceTime=" + endServiceTime +
        ", orderType=" + orderType +
        ", orderSource=" + orderSource +
        ", invoiceId=" + invoiceId +
        ", isReassign=" + isReassign +
        ", reassignNotice=" + reassignNotice +
        ", trackId=" + trackId +
        ", isDelete=" + isDelete +
        ", oldState=" + oldState +
        ", telX=" + telX +
        ", bindId=" + bindId +
        ", serverCarModelId=" + serverCarModelId +
        "}";
    }
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCharteredServiceService.java
New file
@@ -0,0 +1,35 @@
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.TCharteredService;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 包车管理 服务类
 * </p>
 *
 * @author 吕雪
 * @since 2020-06-05
 */
public interface ITCharteredServiceService extends IService<TCharteredService> {
    /**
     * 获取包车管理管理列表
     * @param page
     * @param beginTime
     * @param endTime
     * @param serviceName
     * @param serverCarModelId
     * @param startPrice
     * @param endPrice
     * @param status
     * @return
     */
    List<Map<String, Object>> getCharteredServiceList(Page<Map<String, Object>> page, String beginTime, String endTime, String serviceName, Integer serverCarModelId, BigDecimal startPrice, BigDecimal endPrice, Integer status);
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTransferService.java
New file
@@ -0,0 +1,17 @@
package com.stylefeng.guns.modular.system.service;
import com.baomidou.mybatisplus.service.IService;
import com.stylefeng.guns.modular.system.model.TOrderPrivateCar;
import com.stylefeng.guns.modular.system.model.TOrderTransfer;
/**
 * <p>
 * 订单-专车 服务类
 * </p>
 *
 * @author 吕雪
 * @since 2020-09-02
 */
public interface ITOrderTransferService extends IService<TOrderTransfer> {
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITReassignService.java
@@ -105,4 +105,38 @@
                                                       @Param("orderState") Integer orderState,
                                                       @Param("state") Integer state);
    /**
     * 接送机改派列表
     * @param page
     * @param roleType
     * @param nowUserId
     * @param beginTime
     * @param endTime
     * @param originalDriverName
     * @param originalDriverPhone
     * @param orderNum
     * @param nowDriverName
     * @param nowDriverPhone
     * @param orderState
     * @param state
     * @return
     */
    List<Map<String, Object>> getTransferOrderList(@Param("page") Page<Map<String, Object>> page,
                                                   @Param("roleType") Integer roleType,
                                                   @Param("nowUserId") Integer nowUserId,
                                                   @Param("beginTime") String beginTime,
                                                   @Param("endTime") String endTime,
                                                   @Param("originalDriverName") String originalDriverName,
                                                   @Param("originalDriverPhone") String originalDriverPhone,
                                                   @Param("orderNum") String orderNum,
                                                   @Param("nowDriverName") String nowDriverName,
                                                   @Param("nowDriverPhone") String nowDriverPhone,
                                                   @Param("orderState") Integer orderState,
                                                   @Param("state") Integer state);
    List<Map<String, Object>> getCanSelectTransferDriverList(@Param("page") Page<Map<String, Object>> page,
                                                             @Param("companyId") Integer companyId,
                                                             @Param("type") Integer type,
                                                             @Param("name") String name,
                                                             @Param("phone") String phone);
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCharteredServiceServiceImpl.java
New file
@@ -0,0 +1,29 @@
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.TCharteredServiceMapper;
import com.stylefeng.guns.modular.system.model.TCharteredService;
import com.stylefeng.guns.modular.system.service.ITCharteredServiceService;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 包车管理 服务实现类
 * </p>
 *
 * @author 吕雪
 * @since 2020-06-05
 */
@Service
public class TCharteredServiceServiceImpl extends ServiceImpl<TCharteredServiceMapper, TCharteredService> implements ITCharteredServiceService {
    @Override
    public List<Map<String, Object>> getCharteredServiceList(Page<Map<String, Object>> page, String beginTime, String endTime, String serviceName, Integer serverCarModelId, BigDecimal startPrice, BigDecimal endPrice, Integer status) {
        return this.baseMapper.getCharteredServiceList(page, beginTime, endTime, serviceName, serverCarModelId, startPrice, endPrice, status);
    }
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.dao.TOrderTransferMapper;
import com.stylefeng.guns.modular.system.model.TOrderTransfer;
import com.stylefeng.guns.modular.system.service.ITOrderTransferService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 订单-接送机 服务实现类
 * </p>
 *
 * @author 吕雪
 * @since 2020-09-02
 */
@Service
public class TOrderTransferServiceImpl extends ServiceImpl<TOrderTransferMapper, TOrderTransfer> implements ITOrderTransferService {
}
ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TReassignServiceImpl.java
@@ -52,4 +52,14 @@
    public List<Map<String, Object>> getSmallPieceLogisticsList(Page<Map<String, Object>> page, Integer roleType, Integer nowUserId, String beginTime, String endTime, String originalDriverName, String originalDriverPhone, String orderNum, String nowDriverName, String nowDriverPhone, Integer orderState, Integer state) {
        return this.baseMapper.getSmallPieceLogisticsList(page, roleType, nowUserId, beginTime, endTime, originalDriverName, originalDriverPhone, orderNum, nowDriverName, nowDriverPhone, orderState, state);
    }
    @Override
    public List<Map<String, Object>> getTransferOrderList(Page<Map<String, Object>> page, Integer roleType, Integer nowUserId, String beginTime, String endTime, String originalDriverName, String originalDriverPhone, String orderNum, String nowDriverName, String nowDriverPhone, Integer orderState, Integer state) {
        return this.baseMapper.getTransferOrderList(page, roleType, nowUserId, beginTime, endTime, originalDriverName, originalDriverPhone, orderNum, nowDriverName, nowDriverPhone, orderState, state);
    }
    @Override
    public List<Map<String, Object>> getCanSelectTransferDriverList(Page<Map<String, Object>> page, Integer companyId, Integer type, String name, String phone) {
        return this.baseMapper.getCanSelectTransferDriverList(page, companyId, type, name, phone);
    }
}
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel.html
@@ -16,19 +16,19 @@
                                <#NameCon id="name" name="名称" />
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TCarModel.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TCarModel.resetSearch()" space="true"/>
                                <#button name="搜索" icon="fa-search" clickFun="TCharteredService.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TCharteredService.resetSearch()" space="true"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TCarModelTableToolbar" role="group">
                            @if(shiro.hasPermission("/tCarModel/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TCarModel.openAddTCarModel()"/>
                                <#button name="添加" icon="fa-plus" clickFun="TCharteredService.openAddTCarModel()"/>
                            @}
                            @if(shiro.hasPermission("/tCarModel/update")){
                                <#button name="编辑" icon="fa-edit" clickFun="TCarModel.openTCarModelDetail()" space="true"/>
                                <#button name="编辑" icon="fa-edit" clickFun="TCharteredService.openTCarModelDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tCarModel/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TCarModel.delete()" space="true"/>
                                <#button name="删除" icon="fa-remove" clickFun="TCharteredService.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TCarModelTable"/>
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService.html
New file
@@ -0,0 +1,75 @@
@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-4">
                                <#TimeCon id="createTime" name="添加时间" isTime="false"/>
                            </div>
                            <div class="col-sm-4">
                                <#NameCon id="serviceName" name="服务名称" />
                            </div>
                            <div class="col-sm-4">
                                <#SelectCon id="serverCarModelId" name="所属分类" >
                                <option value="">全部</option>
                                @if(isNotEmpty(tServerCarmodels)){
                                    @for(carModel in tServerCarmodels){
                                        <option value="${carModel.id}">${carModel.name}</option>
                                    @}
                                @}
                            </#SelectCon>
                            </div>
                            <div class="col-sm-2">
                                <#NameCon id="priceIntervalStart" name="价格区间" />
                            </div>
                            <div class="col-sm-3">
                                <div class="col-sm-2">
                                    <span>___</span>
                                </div>
                                <div class="col-sm-10">
                                    <div class="input-group">
                                        <input type="text" class="form-control" id="priceIntervalEnd" placeholder="">
                                    </div>
                                </div>
                            </div>
                            <div class="col-sm-3">
                                <#SelectCon id="status" name="状态" >
                                <option value="">全部</option>
                                <option value="1">启用</option>
                                <option value="0">禁用</option>
                            </#SelectCon>
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TCharteredService.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TCharteredService.resetSearch()" space="true"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TCharteredServiceTableToolbar" role="group">
                            @if(shiro.hasPermission("/tCharteredService/add")){
                                <#button name="添加包车服务" icon="fa-plus" clickFun="TCharteredService.openAddTCharteredService()"/>
                            @}
                            @if(shiro.hasPermission("/tCharteredService/deleteBatch")){
                                <#button name="批量删除" icon="fa-remove" clickFun="TCharteredService.deleteBatch()" space="true"/>
                            @}
                        </div>
                        <#table id="TCharteredServiceTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCharteredService/tCharteredService.js"></script>
<script>
    laydate.render({
        elem: '#createTime'
        ,range: true
    });
</script>
@}
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_add.html
New file
@@ -0,0 +1,156 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="ibox-title">
            <h5>添加</h5>
        </div>
        <div class="ibox-content" id="charteredServiceInfoForm">
            <div class="row row-lg">
                <div class="col-sm-12">
                    <input hidden id="areaId" value="">
                    <div class="col-sm-12" style="cursor: pointer;text-align: right;">
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >服务名称:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <input id="serviceName" name="serviceName" type="text" maxlength="20" style="height: 30px;width: 300px" placeholder="请输入服务名称" required="required">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >所属分类:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <select class="form-control" id="serverCarModelId" name="serverCarModelId" style="height: 30px;width: 300px">
                                        <option value="">请选择分类</option>
                                        @if(isNotEmpty(tServerCarmodels)){
                                            @for(carModel in tServerCarmodels){
                                            <option value="${carModel.id}">${carModel.name}</option>
                                            @}
                                        @}
                                    </select>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >封面图:</label>
                                </div>
                                <div class="initialLevel col-sm-6 control-label form-group"  >
                                    <#avatar id="themePicture" name=" "/>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >车辆类型:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <div class="radio radio-info radio-inline">
                                        <input type="radio" id="companyType1" value="1" name="carType" checked="" >
                                        <label for="companyType1"> 自动挡 </label>
                                    </div>
                                    <div class="radio radio-success radio-inline">
                                        <input type="radio" id="companyType2" value="2" name="carType" >
                                        <label for="companyType2"> 手动挡 </label>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >价格:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <input id="serviceMoney" name="serviceMoney" type="text" maxlength="20" style="height: 30px;width: 300px" placeholder="请输入价格" required="required">
                                </div>
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >(元/天)</label>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >计价规则:</label>
                                </div>
                                <div class="initialLevel col-sm-9 control-label form-group"  >
                                    <textarea type="text/plain" name="priceRule" id="priceRule" style="width:100%;height:150px;"></textarea>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-6 control-label form-group"  >
                                    <#avatar id="priceRulePicture" name=" "/>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >取消规则:</label>
                                </div>
                                <div class="initialLevel col-sm-9 control-label form-group"  >
                                    <textarea type="text/plain" name="cancelRule" id="cancelRule" style="width:100%;height:150px;"></textarea>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-6 control-label form-group"  >
                                    <#avatar id="cancelRulePicture" name=" "/>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >状态:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <div class="radio radio-info radio-inline">
                                        <input type="radio" id="status1" value="1" name="status" checked="" >
                                        <label for="status1"> 启用 </label>
                                    </div>
                                    <div class="radio radio-success radio-inline">
                                        <input type="radio" id="status2" value="2" name="status" >
                                        <label for="status2"> 禁用 </label>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10" style="text-align: center">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCharteredServiceInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCharteredServiceInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCharteredService/tCharteredService_info.js"></script>
<script type="text/javascript">
    $(function () {
    });
    var elem1 = document.querySelector(".js-switch1");
    var init1 = new Switchery(elem1);
</script>
@}
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_detail.html
New file
@@ -0,0 +1,161 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="ibox-title">
            <h5>编辑</h5>
        </div>
        <div class="ibox-content" id="charteredServiceInfoForm">
            <div class="row row-lg">
                <div class="col-sm-12">
                    <input hidden id="id" value="${item.id}">
                    <div class="col-sm-12" style="cursor: pointer;text-align: right;">
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >服务名称:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <input id="serviceName" name="serviceName" value="${item.serviceName}" type="text" maxlength="20" style="height: 30px;width: 300px" placeholder="请输入服务名称" required="required" disabled readonly>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >所属分类:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <select class="form-control" id="serverCarModelId" name="serverCarModelId" disabled="disabled" style="height: 30px;width: 300px">
                                        <option value="">全部</option>
                                        @if(isNotEmpty(tServerCarmodels)){
                                            @for(carModel in tServerCarmodels){
                                                <option value="${carModel.id}" ${carModel.id == item.serverCarModelId ? 'selected=selected' : ''}>${carModel.name}</option>
                                            @}
                                        @}
                                    </select>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >封面图:</label>
                                </div>
                                <div class="initialLevel col-sm-3 control-label form-group"  >
                                    <img src="${item.themePicture}" style="height: 100px;width: 100px" disabled="disabled"/>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >车辆类型:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <div class="radio radio-info radio-inline">
                                        <input type="radio" id="carType1" value="1" name="carType" checked disabled="disabled" ${1 == carType ? 'checked=checked' : ''}>
                                        <label for="carType1"> 自动挡 </label>
                                    </div>
                                    <div class="radio radio-success radio-inline">
                                        <input type="radio" id="carType2" value="2" name="carType"  disabled="disabled" ${2 == carType ? 'checked=checked' : ''}>
                                        <label for="carType2"> 手动挡 </label>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >价格:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <input id="serviceMoney" name="serviceMoney" value="${item.serviceMoney}" type="number" style="height: 30px;width: 300px" placeholder="请输入价格" required="required" disabled="disabled">
                                </div>
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >(元/天)</label>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >计价规则:</label>
                                </div>
                                <div class="initialLevel col-sm-9 control-label form-group"  >
                                    <textarea type="text/plain" name="priceRule" id="priceRule" style="width:100%;height:150px;" disabled="disabled">${item.priceRule}</textarea>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <img src="${item.priceRulePicture}" style="height: 100px;width: 100px" disabled="disabled"/>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >取消规则:</label>
                                </div>
                                <div class="initialLevel col-sm-9 control-label form-group"  >
                                    <textarea type="text/plain" name="cancelRule" id="cancelRule" style="width:100%;height:150px;" disabled="disabled">${item.cancelRule}</textarea>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <img src="${item.cancelRulePicture}" style="height: 100px;width: 100px" disabled="disabled"/>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >状态:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <div class="radio radio-info radio-inline">
                                        <input type="radio" id="status1" value="1" name="status" disabled="disabled" checked="" ${1 == status ? 'checked=checked' : ''}>
                                        <label for="status1"> 启用 </label>
                                    </div>
                                    <div class="radio radio-success radio-inline">
                                        <input type="radio" id="status2" value="2" name="status" disabled="disabled" ${2 == status ? 'checked=checked' : ''}>
                                        <label for="status2"> 禁用 </label>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10" style="text-align: center">
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCharteredServiceInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCharteredService/tCharteredService_info.js"></script>
<script type="application/javascript">
    $(function() {
    });
    var elem1 = document.querySelector(".js-switch1");
    var init1 = new Switchery(elem1);
    // function isOpen(value){
    //     if(value){
    //         $('#isOpen').val(1)
    //     }else {
    //         $('#isOpen').val(0)
    //     }
    // }
</script>
@}
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCharteredService/tCharteredService_edit.html
New file
@@ -0,0 +1,163 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="ibox-title">
            <h5>编辑</h5>
        </div>
        <div class="ibox-content" id="charteredServiceInfoForm">
            <div class="row row-lg">
                <div class="col-sm-12">
                    <input hidden id="id" value="${item.id}">
                    <div class="col-sm-12" style="cursor: pointer;text-align: right;">
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >服务名称:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <input id="serviceName" name="serviceName" value="${item.serviceName}" type="text" maxlength="20" style="height: 30px;width: 300px" placeholder="请输入服务名称" required="required">
                                </div>
                            </div>
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >所属分类:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <select class="form-control" id="serverCarModelId" name="serverCarModelId" style="height: 30px;width: 300px">
                                        <option value="">全部</option>
                                        @if(isNotEmpty(tServerCarmodels)){
                                            @for(carModel in tServerCarmodels){
                                                <option value="${carModel.id}" ${carModel.id == item.serverCarModelId ? 'selected=selected' : ''}>${carModel.name}</option>
                                            @}
                                        @}
                                    </select>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >封面图:</label>
                                </div>
                                <div class="initialLevel col-sm-6 control-label form-group"  >
                                    <#avatar id="themePicture" name=" " avatarImg="${item.themePicture}"/>
                                </div>
                            </div>
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >车辆类型:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <div class="radio radio-info radio-inline">
                                        <input type="radio" id="carType1" value="1" name="carType" checked ${1 == carType ? 'checked=checked' : ''} >
                                        <label for="carType1"> 自动挡 </label>
                                    </div>
                                    <div class="radio radio-success radio-inline">
                                        <input type="radio" id="carType2" value="2" name="carType" ${2 == carType ? 'checked=checked' : ''} >
                                        <label for="carType2"> 手动挡 </label>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >价格:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <input id="serviceMoney" name="serviceMoney" value="${item.serviceMoney}" type="text" style="height: 30px;width: 300px" placeholder="请输入价格" required="required">
                                </div>
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >(元/天)</label>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >计价规则:</label>
                                </div>
                                <div class="initialLevel col-sm-9 control-label form-group"  >
                                    <textarea type="text/plain" name="priceRule" id="priceRule" style="width:100%;height:150px;">${item.priceRule}</textarea>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-6 control-label form-group"  >
                                    <#avatar id="priceRulePicture" name=" " avatarImg="${item.priceRulePicture}"/>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >取消规则:</label>
                                </div>
                                <div class="initialLevel col-sm-9 control-label form-group"  >
                                    <textarea type="text/plain" name="cancelRule" id="cancelRule" style="width:100%;height:150px;">${item.cancelRule}</textarea>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-6 control-label form-group"  >
                                    <#avatar id="cancelRulePicture" name=" " avatarImg="${item.cancelRulePicture}"/>
                                </div>
                            </div>
                        </div>
                        <div class="initialLevel col-sm-12 control-label form-group"  >
                            <div class="initialLevel col-sm-6 control-label form-group"  >
                                <div class="initialLevel col-sm-2 control-label form-group"  >
                                    <label class="control-label" >状态:</label>
                                </div>
                                <div class="initialLevel col-sm-4 control-label form-group"  >
                                    <div class="radio radio-info radio-inline">
                                        <input type="radio" id="status1" value="1" name="status" checked="" ${1 == status ? 'checked=checked' : ''}>
                                        <label for="status1"> 启用 </label>
                                    </div>
                                    <div class="radio radio-success radio-inline">
                                        <input type="radio" id="status2" value="2" name="status" ${2 == status ? 'checked=checked' : ''}>
                                        <label for="status2"> 禁用 </label>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row btn-group-m-t">
                <div class="col-sm-10" style="text-align: center">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCharteredServiceInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCharteredServiceInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCharteredService/tCharteredService_info.js"></script>
<script type="application/javascript">
    $(function() {
    });
    var elem1 = document.querySelector(".js-switch1");
    var init1 = new Switchery(elem1);
    // function isOpen(value){
    //     if(value){
    //         $('#isOpen').val(1)
    //     }else {
    //         $('#isOpen').val(0)
    //     }
    // }
</script>
@}
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tReassign/tReassign_reassignmentTransfer.html
New file
@@ -0,0 +1,34 @@
@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>
            <input type="hidden" id="id" name="id" value="${transferId}">
            <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">
                                <#NameCon id="phone" name="司机手机号" />
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="SelectTransferDriver.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="SelectTransferDriver.resetSearch()" space="true"/>
                                <#button btnCss="info" name="确定" id="ensure" icon="fa-check" clickFun="SelectTransferDriver.selectDriver()" space="true"/>
                                <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="SelectTransferDriver.close()" space="true"/>
                            </div>
                        </div>
                        <#table id="SelectTransferDriverTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tReassign/selectTransferDriver.js"></script>
@}
ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tReassign/transfer.html
New file
@@ -0,0 +1,87 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>接送机改派管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#TimeCon id="insertTime" name="申请改派时间" isTime="false"/>
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="originalDriverName" name="申请司机姓名" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="originalDriverPhone" name="申请司机手机号" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="orderNum" name="订单编号" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="nowDriverName" name="改派服务司机姓名" />
                            </div>
                            <div class="col-sm-3">
                                <#NameCon id="nowDriverPhone" name="改派服务司机手机号" />
                            </div>
                            <div class="col-sm-3">
                                <#SelectCon id="orderState" name="订单当前状态" >
                                    <option value="">全部</option>
                                    <option value="1">待接单</option>
                                    <option value="2">待出发</option>
                                    <option value="3">待到达预约地点</option>
                                    <option value="4">待乘客上车</option>
                                    <option value="5">服务中</option>
                                    <option value="6">完成服务</option>
                                    <option value="7">待支付</option>
                                    <option value="8">待评价</option>
                                    <option value="9">已完成</option>
                                    <option value="10">已取消</option>
                                    <option value="11">改派中</option>
                                    <option value="12">取消待支付</option>
                                </#SelectCon>
                            </div>
                            <div class="col-sm-3">
                                <#SelectCon id="state" name="改派状态" >
                                    <option value="">全部</option>
                                    <option value="1">提交申请</option>
                                    <option value="2">已支付</option>
                                    <option value="3">已改派</option>
                                    <option value="4">已取消</option>
                                    <option value="5">已拒绝</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("/tReassign/refusedTransfer")){
                                <#button name="拒绝改派" icon="fa-plus" clickFun="Transfer.opt(1)"/>
                            @}
                            @if(shiro.hasPermission("/tReassign/reassignmentTransfer")){
                                <#button name="立即改派" icon="fa-edit" clickFun="Transfer.reassignment()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tReassign/cancelTransfer")){
                                <#button name="取消订单" icon="fa-remove" clickFun="Transfer.opt(2)" space="true"/>
                            @}
                        </div>
                        <#table id="TransferTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tReassign/transfer.js"></script>
<script>
    laydate.render({
        elem: '#insertTime'
        ,range: true
    });
</script>
@}
ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tCharteredService/tCharteredService.js
New file
@@ -0,0 +1,253 @@
/**
 * 车辆类型管理管理初始化
 */
var TCharteredService = {
    id: "TCharteredServiceTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TCharteredService.initColumn = function () {
    return [
        {field: 'selectItem', radio: false},
        {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '服务名称', field: 'serviceName', visible: true, align: 'center', valign: 'middle',width:'12%',
            formatter: function (value, row) {
                var btn = "";
                if(row.serviceName != '' && row.serviceName != null) {
                    var time = row.serviceName.replace(" ",'<br>');
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.serviceName + '" onfocus="TUser.tooltip()">' + time + '</p>']
                }
                return btn;
            }
        },
        {title: '封面图', field: 'themePicture', visible: true, align: 'center', valign: 'middle',width:'12%',
            formatter: function (value, row) {
                if (row.themePicture == null || row.themePicture == '') {
                    return '<a class = "view"  href="javascript:void(0)"><img style="width: 50px;height:50px;" src="/static/img/NoPIC.png" /></a>';
                } else {
                    return '<a class = "view"  href="javascript:void(0)"><img style="width: 90px;height:50px;" src="' + row.themePicture + '" /></a>';
                }
            },
            events: 'operateEvents'
        },
        {title: '所属分类', field: 'serverCarModelName', visible: true, align: 'center', valign: 'middle',width:'12%'},
        {title: '价格', field: 'serviceMoney', visible: true, align: 'center', valign: 'middle',width:'12%',
            formatter: function (value, row) {
                var btn = "";
                if(row.serviceMoney != '' && row.serviceMoney != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.serviceMoney + '" onfocus="TUser.tooltip()">'+"¥"+row.serviceMoney+"/天"+'</p>']
                }
                return btn;
            }
        },
        {title: '车辆类型', field: 'carType', visible: true, align: 'center', valign: 'middle',width:'12%',
            formatter: function (value, row) {
                var btn = "";
                if(row.carType != '' && row.carType != null) {
                    if(row.carType == 1) {
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.carType + '" onfocus="TUser.tooltip()">自动</p>']
                    }else {
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.carType + '" onfocus="TUser.tooltip()">手动</p>']
                    }
                }
                return btn;
            }
        },
        {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle',width:'12%',
            formatter: function (value, row) {
                var btn = "";
                if(row.status != '' && row.status != null) {
                    if(row.status == 1) {
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.status + '" onfocus="TUser.tooltip()">启用</p>']
                    }else {
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.status + '" onfocus="TUser.tooltip()">禁用</p>']
                    }
                }
                return btn;
            }
        },
        {title: '添加时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle',width:'12%',
            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()">' + time + '</p>']
                }
                return btn;
            }
        },
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:'16%',
            formatter: function (value, row) {
                return '<a href="#" onclick="TCharteredService.openTCharteredServiceDetails('+row.id+')" style="color:cornflowerblue">详情</a>' +'&nbsp;' +
                    '<a href="#" onclick="TCharteredService.openTCharteredServiceDetail('+row.id+')" style="color:cornflowerblue">编辑</a>' +'&nbsp;' +
                    '<a href="#" onclick="TCharteredService.delete('+row.id+')" style="color:cornflowerblue">删除</a>'
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TCharteredService.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TCharteredService.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加车辆类型管理
 */
TCharteredService.openAddTCharteredService = function () {
    var index = layer.open({
        type: 2,
        title: '添加包车服务',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCharteredService/tCharteredService_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看车辆类型管理详情
 */
TCharteredService.openTCharteredServiceDetail = function (tCharteredServiceId) {
    var index = layer.open({
        type: 2,
        title: '编辑包车服务',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCharteredService/tCharteredService_edit/' + tCharteredServiceId
    });
    this.layerIndex = index;
};
/**
 * 打开查看车辆类型管理详情
 */
TCharteredService.openTCharteredServiceDetails = function (tCharteredServiceId) {
    var index = layer.open({
        type: 2,
        title: '包车服务详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCharteredService/tCharteredService_detail/' + tCharteredServiceId
    });
    this.layerIndex = index;
};
/**
 * 删除车辆类型管理
 */
TCharteredService.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 + "/tCharteredService/delete", function (data) {
            swal("删除成功", "您已经删除了" + nickname + "。", "success");
            TCharteredService.table.refresh();
        }, function (data) {
            swal("删除失败", data.responseJSON.message + "!", "warning");
        });
        ajax.set("charteredServiceId", id);
        ajax.start();
    });
};
/**
 * 批量删除车辆类型管理
 */
TCharteredService.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 = TCharteredService.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 + "/tCharteredService/deleteBatch", function (data) {
                swal("删除成功", "您已经删除了" + nickname + "。", "success");
                TCharteredService.table.refresh();
            }, function (data) {
                swal("删除失败", data.responseJSON.message + "!", "warning");
            });
            ajax.set("charteredServiceIds", ids);
            ajax.start();
        });
    }
};
/**
 * 查询车辆类型管理列表
 */
TCharteredService.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['serviceName'] = $("#serviceName").val();
    queryData['serverCarModelId'] = $("#serverCarModelId").val();
    queryData['priceIntervalStart'] = $("#priceIntervalStart").val();
    queryData['priceIntervalEnd'] = $("#priceIntervalEnd").val();
    queryData['status'] = $("#status").val();
    TCharteredService.table.refresh({query: queryData});
};
TCharteredService.resetSearch = function () {
    $("#createTime").val("");
    $("#serviceName").val("");
    $("#serverCarModelId").val("");
    $("#priceIntervalStart").val("");
    $("#priceIntervalEnd").val("");
    $("#status").val("");
    TCharteredService.search();
};
$(function () {
    var defaultColunms = TCharteredService.initColumn();
    var table = new BSTable(TCharteredService.id, "/tCharteredService/list", defaultColunms);
    table.setPaginationType("server");
    TCharteredService.table = table.init();
});
ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tCharteredService/tCharteredService_info.js
New file
@@ -0,0 +1,179 @@
/**
 * 初始化车辆类型管理详情对话框
 */
var TCharteredServiceInfoDlg = {
    tCharteredServiceInfoData : {},
    validateFields: {
        serviceName: {
            validators: {
                notEmpty: {
                    message: '服务名称不能为空'
                }
            }
        },
        serverCarModelId: {
            validators: {
                notEmpty: {
                    message: '请选择所属分类'
                },
            }
        },
        themePicture: {
            validators: {
                notEmpty: {
                    message: '请上传封面图'
                }
            }
        },
        serviceMoney: {
            validators: {
                notEmpty: {
                    message: '请填写价格'
                },
                regexp: {
                    regexp: /^(0|[1-9]\d{0,6})(\.\d{1,2})?$/,
                    message: '【元】输入框不能超过7位数,保留两位小数'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TCharteredServiceInfoDlg.validate = function () {
    $('#charteredServiceInfoForm').data("bootstrapValidator").resetForm();
    $('#charteredServiceInfoForm').bootstrapValidator('validate');
    return $("#charteredServiceInfoForm").data('bootstrapValidator').isValid();
};
/**
 * 清除数据
 */
TCharteredServiceInfoDlg.clearData = function() {
    this.tCharteredServiceInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TCharteredServiceInfoDlg.set = function(key, val) {
    this.tCharteredServiceInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TCharteredServiceInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TCharteredServiceInfoDlg.close = function() {
    parent.layer.close(window.parent.TCharteredService.layerIndex);
}
/**
 * 收集数据
 */
TCharteredServiceInfoDlg.collectData = function() {
    this
    .set('id')
    .set('serviceName')
    .set('themePicture')
    .set('serverCarModelId')
    .set('serviceMoney')
    .set('carType')
    .set('priceRule')
    .set('priceRulePicture')
    .set('cancelRule')
    .set('cancelRulePicture');
}
/**
 * 提交添加
 */
TCharteredServiceInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    var carType = $("input[name='carType']:checked").val();
    var status = $("input[name='status']:checked").val();
    var serverCarModelId = $('#serverCarModelId').val();
    if(serverCarModelId == null || serverCarModelId == ''){
        Feng.error("请选择所属分类");
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tCharteredService/add", function(data){
        Feng.success("添加成功!");
        window.parent.TCharteredService.table.refresh();
        TCharteredServiceInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    this.set('status',status);
    this.set('carType',carType);
    ajax.set(this.tCharteredServiceInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TCharteredServiceInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    var carType = $("input[name='carType']:checked").val();
    var status = $("input[name='status']:checked").val();
    var serverCarModelId = $('#serverCarModelId').val();
    if(serverCarModelId == null || serverCarModelId == ''){
        Feng.error("请选择所属分类");
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tCharteredService/update", function(data){
        Feng.success("修改成功!");
        window.parent.TCharteredService.table.refresh();
        TCharteredServiceInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    this.set('status',status);
    this.set('carType',carType);
    ajax.set(this.tCharteredServiceInfoData);
    ajax.start();
}
$(function() {
    Feng.initValidator("charteredServiceInfoForm", TCharteredServiceInfoDlg.validateFields);
    //初始化编辑器
    TCharteredServiceInfoDlg.editor = UE.getEditor('editor');
    // 初始化图片上传
    var themePicture = new $WebUpload("themePicture");
    themePicture.setUploadBarId("progressBar");
    themePicture.init();
    // 初始化图片上传
    var priceRulePicture = new $WebUpload("priceRulePicture");
    priceRulePicture.setUploadBarId("progressBar");
    priceRulePicture.init();
    // 初始化图片上传
    var cancelRulePicture = new $WebUpload("cancelRulePicture");
    cancelRulePicture.setUploadBarId("progressBar");
    cancelRulePicture.init();
});
ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tReassign/selectTransferDriver.js
New file
@@ -0,0 +1,156 @@
/**
 * 选择司机
 */
var SelectTansferDriver = {
    id: "SelectTansferDriverTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
SelectTansferDriver.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
        {title: '主键ID', field: 'id', visible: false, align: 'center', valign: 'middle',width:'10%'},
        {title: '姓名', field: 'name', visible: true, align: 'center', valign: 'middle',width:'15%',
            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: 'headImgUrl', visible: true, align: 'center', valign: 'middle',width:'15%',
            formatter: function (value, row) {
                if (row.headImgUrl == null || row.headImgUrl == '') {
                    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.headImgUrl + '" /></a>';
                }
            },
            events: 'operateEvents'
        },
        {title: '手机号', field: 'phone', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.phone != '' && row.phone != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.phone + '" onfocus="TUser.tooltip()">' + row.phone + '</p>']
                }
                return btn;
            }
        },
        {title: '性别', field: 'sex', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.sex != '' && row.sex != null) {
                    if (row.sex == 1) {
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="男" onfocus="TUser.tooltip()">男</p>']
                    }else if (row.sex == 2){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="女" onfocus="TUser.tooltip()">女</p>']
                    }
                }
                return btn;
            }
        },
        {title: '所属<br/>分公司', field: 'companyName', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.companyName != '' && row.companyName != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.companyName + '" onfocus="TUser.tooltip()">' + row.companyName + '</p>']
                }else{
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="-" onfocus="TUser.tooltip()">-</p>']
                }
                return btn;
            }
        },
        {title: '所属<br/>加盟商', field: 'franchiseeName', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.franchiseeName != '' && row.franchiseeName != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.franchiseeName + '" onfocus="TUser.tooltip()">' + row.franchiseeName + '</p>']
                }else{
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="-" onfocus="TUser.tooltip()">-</p>']
                }
                return btn;
            }
        }
    ];
};
/**
 * 检查是否选中
 */
SelectTansferDriver.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        SelectTansferDriver.seItem = selected[0];
        return true;
    }
};
/**
 * 查询司机审核列表列表
 */
SelectTansferDriver.search = function () {
    var queryData = {};
    queryData['name'] = $("#name").val();
    queryData['phone'] = $("#phone").val();
    SelectTansferDriver.table.refresh({query: queryData});
};
SelectTansferDriver.resetSearch = function () {
    $("#name").val("");
    $("#phone").val("");
    SelectTansferDriver.search();
};
$(function () {
    var orderId = $("#id").val();
    var defaultColunms = SelectTansferDriver.initColumn();
    var table = new BSTable(SelectTansferDriver.id, "/tReassign/selectTransferDriver/"+orderId, defaultColunms);
    table.setPaginationType("server");
    SelectTansferDriver.table = table.init();
});
/**
 * 关闭此对话框
 */
SelectTansferDriver.close = function() {
    parent.layer.close(window.parent.TReassign.layerIndex);
}
/**
 * 选择司机
 */
SelectTansferDriver.selectDriver = function () {
    /* var selected = $("#"+ this.id).bootstrapTable('getSelections');
     if (selected.length== 0) {
         Feng.info("请选择司机!");
         return ;
     }*/
    if (this.check()) {
        //提交信息
        layer.msg("加载中...",{
            icon:16,
            time:-1
        });
        var ajax = new $ax(Feng.ctxPath + "/tReassign/selectTransferDriver", function(data){
            Feng.success("改派成功!");
            window.parent.TReassign.table.refresh();
            SelectTansferDriver.close();
            layer.closeAll()
        },function(data){
            Feng.error("修改失败!" + data.responseJSON.message + "!");
            layer.closeAll()
        });
        ajax.set("orderId",$("#id").val());
        ajax.set("driverId",SelectTansferDriver.seItem.id);
        ajax.start();
    }
}
ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tReassign/transfer.js
New file
@@ -0,0 +1,325 @@
/**
 * 专车改派管理管理初始化
 */
var Transfer = {
    id: "TransferTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
Transfer.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
        {title: '主键ID', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '申请改<br/>派时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle',width:'8%',
            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()">' + time + '</p>']
                }
                return btn;
            }
        },
        {title: '申请司机id', field: 'originalDriverId', visible: false, align: 'center', valign: 'middle'},
        {title: '申请司机', field: 'originalDriver', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.originalDriver != '' && row.originalDriver != null) {
                    var driverName1 = row.originalDriver.replace("-","<br>");
                    var driverName2 = row.originalDriver.replace("-","&#10;");
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + driverName2 + '" onfocus="TUser.tooltip()">' + driverName1 + '</p>']
                }
                return btn;
            }
        },
        {title: '申请原因', field: 'reason', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.reason != '' && row.reason != null) {
                    var str = row.reason;
                    if (str.length > 20){
                        str = str.substring(0,20)+'...<br><button class="btn btn-outline btn-primary" onclick="Transfer.buttonClick(' +  row.id + ',1)">查看更多</button>';
                    }
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.reason + '" onfocus="TUser.tooltip()">' + str + '</p>']
                }
                return btn;
            }
        },
        {title: '订单id', field: 'orderId', visible: false, align: 'center', valign: 'middle'},
        {title: '订单编号', field: 'orderNum', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.orderNum != '' && row.orderNum != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.orderNum + '" onfocus="TUser.tooltip()">' + row.orderNum + '</p>']
                }
                return btn;
            }
        },
        {title: '下单用户', field: 'addOrderUser', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.addOrderUser != '' && row.addOrderUser != null) {
                    var name1 = row.addOrderUser.replace("-","<br>");
                    var name2 = row.addOrderUser.replace("-","&#10;");
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + name2 + '" onfocus="TUser.tooltip()">' + name1 + '</p>']
                }
                return btn;
            }
        },
        {title: '出发时间', field: 'travelTime', visible: true, align: 'center', valign: 'middle',width:'10%',
            formatter: function (value, row) {
                var btn = "";
                if(row.travelTime != '' && row.travelTime != null) {
                    var time = row.travelTime.replace(" ",'<br>');
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.travelTime + '" onfocus="TUser.tooltip()">' + time + '</p>']
                }
                return btn;
            }
        },
        {title: '出发地', field: 'startAddress', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.startAddress != '' && row.startAddress != null) {
                    var str = row.startAddress;
                    var str1 = "";
                    var arr = "";
                    for(var i=0,len=str.length/15;i<len;i++) {
                        str1 = str.substr(0,15);
                        str = str.replace(str1,'');
                        arr += str1 + "<br>";
                    }
                    arr = arr.substring(0,arr.length-4);
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.startAddress + '" onfocus="TUser.tooltip()">' + arr + '</p>']
                }
                return btn;
            }
        },
        {title: '目的地', field: 'endAddress', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.endAddress != '' && row.endAddress != null) {
                    var str = row.endAddress;
                    var str1 = "";
                    var arr = "";
                    for(var i=0,len=str.length/15;i<len;i++) {
                        str1 = str.substr(0,15);
                        str = str.replace(str1,'');
                        arr += str1 + "<br>";
                    }
                    arr = arr.substring(0,arr.length-4);
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.endAddress + '" onfocus="TUser.tooltip()">' + arr + '</p>']
                }
                return btn;
            }
        },
        {title: '原始车辆id', field: 'originalCarId', visible: false, align: 'center', valign: 'middle'},
        {title: '原服务<br/>车辆', field: 'originalCar', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.originalCar != '' && row.originalCar != null) {
                    var car1 = row.originalCar.replace("-","<br>");
                    var car2 = row.originalCar.replace("-","&#10;");
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + car2 + '" onfocus="TUser.tooltip()">' + car1 + '</p>']
                }
                return btn;
            }
        },
        {title: '改派<br/>处罚金', field: 'money', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.money != '' && row.money != null) {
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.money + '" onfocus="TUser.tooltip()">' + row.money + '</p>']
                }
                return btn;
            }
        },
        {title: '改派后的司机id', field: 'nowDriverId', visible: false, align: 'center', valign: 'middle'},
        {title: '改派服<br/>务司机', field: 'nowDriver', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.nowDriver != '' && row.nowDriver != null) {
                    var driverName1 = row.nowDriver.replace("-","<br>");
                    var driverName2 = row.nowDriver.replace("-","&#10;");
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + driverName2 + '" onfocus="TUser.tooltip()">' + driverName1 + '</p>']
                }
                return btn;
            }
        },
        {title: '改派后的车辆id', field: 'nowCarId', visible: false, align: 'center', valign: 'middle'},
        {title: '改派服<br/>务车辆', field: 'nowCar', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.nowCar != '' && row.nowCar != null) {
                    var car1 = row.nowCar.replace("-","<br>");
                    var car2 = row.nowCar.replace("-","&#10;");
                    btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + car2 + '" onfocus="TUser.tooltip()">' + car1 + '</p>']
                }
                return btn;
            }
        },
        {title: '订单当<br/>前状态', field: 'orderState', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.orderState != '' && row.orderState != null) {
                    if (row.orderState == 1){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待接单" onfocus="TUser.tooltip()">待接单</p>']
                    } else if (row.orderState == 2){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待出发" onfocus="TUser.tooltip()">待出发</p>']
                    } else if (row.orderState == 3){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待到达预约地点" onfocus="TUser.tooltip()">待到达预约地点</p>']
                    } else if (row.orderState == 4){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待乘客上车" onfocus="TUser.tooltip()">待乘客上车</p>']
                    } else if (row.orderState == 5){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="服务中" onfocus="TUser.tooltip()">服务中</p>']
                    } else if (row.orderState == 6){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="完成服务" onfocus="TUser.tooltip()">完成服务</p>']
                    } else if (row.orderState == 7){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待支付" onfocus="TUser.tooltip()">待支付</p>']
                    } else if (row.orderState == 8){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待评价" onfocus="TUser.tooltip()">待评价</p>']
                    } else if (row.orderState == 9){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已完成" onfocus="TUser.tooltip()">已完成</p>']
                    } else if (row.orderState == 10){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已取消" onfocus="TUser.tooltip()">已取消</p>']
                    } else if (row.orderState == 11){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="改派中" onfocus="TUser.tooltip()">改派中</p>']
                    } else if (row.orderState == 12){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="取消待支付" onfocus="TUser.tooltip()">取消待支付</p>']
                    }
                }
                return btn;
            }
        },
        {title: '改派<br/>状态', 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;" title="已支付" onfocus="TUser.tooltip()">已支付</p>']
                    } else if (row.state == 3){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已改派" onfocus="TUser.tooltip()">已改派</p>']
                    } else if (row.state == 4){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已取消" onfocus="TUser.tooltip()">已取消</p>']
                    } else if (row.state == 5){
                        btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" 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.reassignment = function () {
    if (this.check()) {
        if (Transfer.seItem.orderState != 11) {
            swal("改派失败", "【改派中】状态下才能执行此操作", "warning");
            return;
        }
        var index = layer.open({
            type: 2,
            title: '立即改派',
            area: ['100%', '100%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/transfer/tReassign_reassignmentTransfer/' + Transfer.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 操作  1=拒绝 2=取消
 */
Transfer.opt = function (type) {
    if (this.check()) {
        var confirm = "";
        if (1 == type){
            confirm = "拒绝改派";
        }else if (2 == type){
            confirm = "取消订单";
        }
        if (Transfer.seItem.orderState != 11) {
            swal("操作失败", "【改派中】状态下才能执行此操作", "warning");
            return;
        }
        swal({
            title: "您是否确定" + confirm + "?",
            text: "请谨慎操作,操作后数据无法恢复!",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: confirm,
            closeOnConfirm: false
        }, function () {
            var ajax = new $ax(Feng.ctxPath + "/tReassign/optTransfer", function (data) {
                swal(confirm+"成功", "您已经成功" + confirm + "。", "success");
                Transfer.table.refresh();
            }, function (data) {
                swal(confirm+"失败", data.responseJSON.message + "!", "warning");
            });
            ajax.set("transferId", Transfer.seItem.id);
            ajax.set("optType", type);
            ajax.start();
        });
    }
};
/**
 * 查询专车改派管理列表
 */
Transfer.search = function () {
    var queryData = {};
    queryData['insertTime'] = $("#insertTime").val();
    queryData['originalDriverName'] = $("#originalDriverName").val();
    queryData['originalDriverPhone'] = $("#originalDriverPhone").val();
    queryData['orderNum'] = $("#orderNum").val();
    queryData['nowDriverName'] = $("#nowDriverName").val();
    queryData['nowDriverPhone'] = $("#nowDriverPhone").val();
    queryData['orderState'] = $("#orderState").val();
    queryData['state'] = $("#state").val();
    Transfer.table.refresh({query: queryData});
};
Transfer.resetSearch = function () {
    $("#insertTime").val("");
    $("#originalDriverName").val("");
    $("#originalDriverPhone").val("");
    $("#orderNum").val("");
    $("#nowDriverName").val("");
    $("#nowDriverPhone").val("");
    $("#orderState").val("");
    $("#state").val("");
    Transfer.search();
};
$(function () {
    var defaultColunms = Transfer.initColumn();
    var table = new BSTable(Transfer.id, "/tReassign/listTransfer", defaultColunms);
    table.setPaginationType("server");
    Transfer.table = table.init();
});