liujie
5 天以前 60d755ccd24c740509562c59385578d601cd4e46
后台异常订单 车
15个文件已修改
833 ■■■■■ 已修改文件
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderCarController.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCar.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder_orderDetail.html 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_add.html 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_edit.html 223 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrder.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tCar/tCar_info.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderPrivateCar/tOrderPrivateCar.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCarController.java
@@ -1,6 +1,7 @@
package com.stylefeng.guns.modular.system.controller.general;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.base.tips.ErrorTip;
@@ -16,6 +17,7 @@
import com.stylefeng.guns.modular.system.util.ExcelExportUtil;
import com.stylefeng.guns.modular.system.util.PushMinistryOfTransportUtil;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import com.sun.org.apache.bcel.internal.generic.NEW;
import org.apache.commons.lang.time.DateUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
@@ -316,6 +318,9 @@
    }
    /**
     * 获取保险列表
     * @param carId
@@ -392,7 +397,7 @@
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel) {
    public Object add(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel,String bindDriverId) {
        if (1 == roleType){  //平台
            if (2 == companyType.intValue()){
                if (SinataUtil.isNotEmpty(oneId)){
@@ -432,6 +437,7 @@
        }
        tCar.setInsertTime(new Date());
        tCar.setState(1);
        tCar.setBindDriverId(bindDriverId);
        tCarService.insert(tCar);
        //添加经营业务
@@ -488,13 +494,26 @@
        }).start();
        return SUCCESS_TIP;
    }
    @ResponseBody
    @RequestMapping(value = "/selectDriverFromCompanyId", method = RequestMethod.POST)
    public Object selectDriverFromCompanyId(Integer companyId){
        Wrapper<TDriver> companyId1 = new EntityWrapper<TDriver>().eq("companyId", companyId).eq("authState", 2).ne("flag", 3);
        List<TDriver> tDrivers = tDriverService.selectList(companyId1);
        ArrayList<Map<String, Object>> list = new ArrayList<>();
        for (TDriver tDriver : tDrivers){
            HashMap<String, Object> map = new HashMap<>();
            map.put("id", tDriver.getId());
            map.put("name", tDriver.getName());
            list.add(map);
        }
        return list;
    }
    /**
     * 修改车辆管理
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel) {
    public Object update(TCar tCar,@RequestParam String serverBox,Integer roleType,Integer companyType,Integer oneId,Integer twoId,Integer franchiseeId,String zcModel,String kcModel,String bindDriverId) {
        if (1 == roleType){  //平台
            if (2 == companyType.intValue()){
                if (SinataUtil.isNotEmpty(oneId)){
@@ -577,6 +596,10 @@
        obj.setGPSModel(tCar.getGPSModel());
        obj.setRegisterDate(tCar.getRegisterDate());
        obj.setCommercialType(tCar.getCommercialType());
        if(bindDriverId==null){
            bindDriverId="";
        }
        obj.setBindDriverId(bindDriverId);
        tCarService.updateAllColumnById(obj);
        new Thread(new Runnable() {
            @Override
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderCarController.java
@@ -119,6 +119,7 @@
            }
            model.addAttribute("item",item);
            model.addAttribute("type",1);
            model.addAttribute("show",0);
            List<TOrderPrivateCar> tOrderPrivateCars = tOrderPrivateCarService.selectList(new EntityWrapper<TOrderPrivateCar>().eq("pid", tOrderPrivateCarId).eq("isDelete", 1));
            List<Map<String, Object>> maps = new ArrayList<>();
@@ -140,6 +141,7 @@
            }
            Object o2 = item.get("responsibilityType");
            model.addAttribute("money",0);
            model.addAttribute("show",0);
            if(o2!=null){
                if(Integer.valueOf(o2.toString())>2){
                    TAbnormalPayOrder tAbnormalPayOrder = tAbnormalPayOrderService.selectOne(new EntityWrapper<TAbnormalPayOrder>().eq("type", 2).eq("orderNum", item.get("orderNum")));
@@ -158,6 +160,85 @@
                model.addAttribute("abnormalImg",new String[]{});
            }
            model.addAttribute("money",0);
            model.addAttribute("show",0);
            Object o2 = item.get("responsibilityType");
            if(o2!=null){
                if(Integer.valueOf(o2.toString())>2){
                    TAbnormalPayOrder tAbnormalPayOrder = tAbnormalPayOrderService.selectOne(new EntityWrapper<TAbnormalPayOrder>().eq("type", 3).eq("orderNum", item.get("orderNum")));
                    model.addAttribute("money",tAbnormalPayOrder.getPayMoney());
                }
            }
            model.addAttribute("type",3);
            model.addAttribute("item",item);
        }
        return PREFIX + "tAbnormalOrder_orderDetail.html";
    }
    @RequestMapping("/tOrderPrivateCar_orderDetail1")
    public String tOrderPrivateCarUpdate1(Integer tOrderPrivateCarId,Integer type, Model model) {
        if(type==1){
            Map<String, Object> item = tOrderPrivateCarService.getPrivateCarOrderDetailById(tOrderPrivateCarId);
            Object o1 = item.get("abnormalImg");
            if(o1!=null){
                String[] split = o1.toString().split(",");
                model.addAttribute("abnormalImg",split);
            }else {
                model.addAttribute("abnormalImg",new String[]{});
            }
            // money是修改后的金额
            model.addAttribute("money",0);
            Object o2 = item.get("responsibilityType");
            if(o2!=null){
                if(Integer.valueOf(o2.toString())>2){
                    TAbnormalPayOrder tAbnormalPayOrder = tAbnormalPayOrderService.selectOne(new EntityWrapper<TAbnormalPayOrder>().eq("type", 1).eq("orderNum", item.get("orderNum")));
                    model.addAttribute("money",tAbnormalPayOrder.getPayMoney());
                }
            }
            model.addAttribute("item",item);
            model.addAttribute("type",1);
            model.addAttribute("show",1);
            List<TOrderPrivateCar> tOrderPrivateCars = tOrderPrivateCarService.selectList(new EntityWrapper<TOrderPrivateCar>().eq("pid", tOrderPrivateCarId).eq("isDelete", 1));
            List<Map<String, Object>> maps = new ArrayList<>();
            for (TOrderPrivateCar tOrderPrivateCar : tOrderPrivateCars) {
                item = tOrderPrivateCarService.getPrivateCarOrderDetailById(tOrderPrivateCar.getId());
                String phone = item.get("userPhone").toString();
                item.put("userPhone1", phone.substring(phone.length() - 4));
                maps.add(item);
            }
            model.addAttribute("maps",maps);
        }else if(type==2){
            Map<String, Object> item = tOrderCrossCityService.getCrossCityOrderDetailById(tOrderPrivateCarId);
            Object o1 = item.get("abnormalImg");
            if(o1!=null){
                String[] split = o1.toString().split(",");
                model.addAttribute("abnormalImg",split);
            }else {
                model.addAttribute("abnormalImg",new String[]{});
            }
            Object o2 = item.get("responsibilityType");
            model.addAttribute("money",0);
            model.addAttribute("show",1);
            if(o2!=null){
                if(Integer.valueOf(o2.toString())>2){
                    TAbnormalPayOrder tAbnormalPayOrder = tAbnormalPayOrderService.selectOne(new EntityWrapper<TAbnormalPayOrder>().eq("type", 2).eq("orderNum", item.get("orderNum")));
                    model.addAttribute("money",tAbnormalPayOrder.getPayMoney());
                }
            }
            model.addAttribute("type",2);
            model.addAttribute("item",item);
        }else if(type==3){
            Map<String, Object> item = tOrderTaxiService.getTaxiOrderDetailById(tOrderPrivateCarId);
            Object o1 = item.get("abnormalImg");
            if(o1!=null){
                String[] split = o1.toString().split(",");
                model.addAttribute("abnormalImg",split);
            }else {
                model.addAttribute("abnormalImg",new String[]{});
            }
            model.addAttribute("money",0);
            model.addAttribute("show",1);
            Object o2 = item.get("responsibilityType");
            if(o2!=null){
                if(Integer.valueOf(o2.toString())>2){
@@ -597,6 +678,26 @@
                tOrderPrivateCar.setResponsibilityMoney(tOrderPrivateCar.getPayMoney());
                tOrderPrivateCar.setPayMoney(new BigDecimal(money));
            }
            if(responsibilityTypeVal>2){
                // 追偿订单记录表
                TAbnormalPayOrder tAbnormalPayOrder = new TAbnormalPayOrder();
                tAbnormalPayOrder.setOrderNum(orderNum);
                tAbnormalPayOrder.setType(1);
                tAbnormalPayOrder.setUserId(tOrderPrivateCar.getUserId());
                tAbnormalPayOrder.setPayStatus(1);
                tAbnormalPayOrder.setPayTime(new Date());
                if(responsibilityTypeVal==3){
                    tAbnormalPayOrder.setPayMoney(tOrderPrivateCar.getPayMoney());
                }else {
                    tAbnormalPayOrder.setPayMoney(new BigDecimal( money));
                }
                tAbnormalPayOrder.setCompanyId(tOrderPrivateCar.getCompanyId());
                tAbnormalPayOrderService.insert(tAbnormalPayOrder);
            }
            if(responsibilityTypeVal<3){
                tOrderPrivateCar.setState(9);
            }
            tOrderPrivateCar.setAbnormalRemark(remark);
            tOrderPrivateCarService.updateById(tOrderPrivateCar);
        }
@@ -609,6 +710,25 @@
                tOrderCrossCity.setResponsibilityMoney(tOrderCrossCity.getPayMoney());
                tOrderCrossCity.setPayMoney(new BigDecimal(money));
            }
            if(responsibilityTypeVal>2){
                // 追偿订单记录表
                TAbnormalPayOrder tAbnormalPayOrder = new TAbnormalPayOrder();
                tAbnormalPayOrder.setOrderNum(orderNum);
                tAbnormalPayOrder.setType(2);
                tAbnormalPayOrder.setUserId(tOrderCrossCity.getUserId());
                tAbnormalPayOrder.setPayStatus(1);
                tAbnormalPayOrder.setPayTime(new Date());
                if(responsibilityTypeVal==3){
                    tAbnormalPayOrder.setPayMoney(tOrderCrossCity.getPayMoney());
                }else {
                    tAbnormalPayOrder.setPayMoney(new BigDecimal(money));
                }
                tAbnormalPayOrder.setCompanyId(tOrderCrossCity.getCompanyId());
                tAbnormalPayOrderService.insert(tAbnormalPayOrder);
            }
            if(responsibilityTypeVal<3){
                tOrderCrossCity.setState(9);
            }
            tOrderCrossCity.setAbnormalRemark(remark);
            tOrderCrossCityService.updateById(tOrderCrossCity);
@@ -621,6 +741,26 @@
                tOrderTaxi.setResponsibilityMoney(tOrderTaxi.getPayMoney());
                tOrderTaxi.setPayMoney(new BigDecimal(money));
            }
            if(responsibilityTypeVal>2){
                // 追偿订单记录表
                TAbnormalPayOrder tAbnormalPayOrder = new TAbnormalPayOrder();
                tAbnormalPayOrder.setOrderNum(orderNum);
                tAbnormalPayOrder.setType(3);
                tAbnormalPayOrder.setUserId(tOrderTaxi.getUserId());
                tAbnormalPayOrder.setPayStatus(1);
                tAbnormalPayOrder.setPayTime(new Date());
                if(responsibilityTypeVal==3){
                    tAbnormalPayOrder.setPayMoney(tOrderTaxi.getPayMoney());
                }else {
                    tAbnormalPayOrder.setPayMoney(new BigDecimal( money));
                }
                tAbnormalPayOrder.setCompanyId(tOrderTaxi.getCompanyId());
                tAbnormalPayOrderService.insert(tAbnormalPayOrder);
            }
            if(responsibilityTypeVal<3){
                tOrderTaxi.setState(9);
            }
            tOrderTaxi.setAbnormalRemark(remark);
            tOrderTaxiService.updateById(tOrderTaxi);
        }
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCar.java
@@ -184,6 +184,17 @@
    private Integer addObjectId;
    private String bindDriverId;
    public String getBindDriverId() {
        return bindDriverId;
    }
    public void setBindDriverId(String bindDriverId) {
        this.bindDriverId = bindDriverId;
    }
    public Integer getId() {
        return id;
    }
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java
@@ -1,10 +1,13 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.modular.system.model.TCompany;
import com.stylefeng.guns.modular.system.model.TOrderCrossCity;
import com.stylefeng.guns.modular.system.dao.TOrderCrossCityMapper;
import com.stylefeng.guns.modular.system.service.ITCompanyService;
import com.stylefeng.guns.modular.system.service.ITOrderCrossCityService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -26,19 +29,42 @@
    @Resource
    private TOrderCrossCityMapper orderCrossCityMapper;
    @Autowired
    private ITCompanyService companyService;
    @Override
    public List<Map<String, Object>> getCrossCityOrderList(Page<Map<String, Object>> page, String beginTime, String endTime, Integer roleType, Integer nowUserId, String orderNum, Integer orderSource, String userName, String userPhone, String passengers, String passengersPhone, Integer serverCarModelId, String driver, Integer lineId, Integer state, Integer abnormal,
                                                           Integer promotion,
                                                           String promotionUser,
                                                           Integer abnormalStatus) {
        return this.baseMapper.getCrossCityOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state, abnormal, promotion, promotionUser,abnormalStatus);
        List<Map<String, Object>> crossCityOrderList = this.baseMapper.getCrossCityOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state, abnormal, promotion, promotionUser, abnormalStatus);
        for (Map<String, Object> map : crossCityOrderList) {
            if(null != map.get("companyId")){
                TCompany company = companyService.selectById(map.get("companyId").toString());
                if(company!=null){
                    map.put("companyName", company.getName());
                }
            }
        }
        return crossCityOrderList;
    }
    @Override
    public List<Map<String, Object>> getCrossCityOrderListExport(Page<Map<String, Object>> page, String beginTime, String endTime, Integer roleType, Integer nowUserId, String orderNum, Integer orderSource, String userName, String userPhone, String passengers, String passengersPhone, Integer serverCarModelId, String driver, Integer lineId, Integer state, Integer abnormal,
                                                           Integer promotion,
                                                           String promotionUser,
                                                           Integer abnormalStatus) {
        return this.baseMapper.getCrossCityOrderListExport( beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state, abnormal, promotion, promotionUser,abnormalStatus);
        List<Map<String, Object>> crossCityOrderListExport = this.baseMapper.getCrossCityOrderListExport(beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state, abnormal, promotion, promotionUser, abnormalStatus);
        for (Map<String, Object> stringObjectMap : crossCityOrderListExport) {
            if(null != stringObjectMap.get("companyId")){
                TCompany company = companyService.selectById(stringObjectMap.get("companyId").toString());
                if(company!=null){
                    stringObjectMap.put("companyName", company.getName());
                }
            }
        }
        return crossCityOrderListExport;
    }
    @Override
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java
@@ -5,9 +5,11 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.model.TCompany;
import com.stylefeng.guns.modular.system.model.TOrderPrivateCar;
import com.stylefeng.guns.modular.system.dao.TOrderPrivateCarMapper;
import com.stylefeng.guns.modular.system.model.TServerCarmodel;
import com.stylefeng.guns.modular.system.service.ITCompanyService;
import com.stylefeng.guns.modular.system.service.ITOrderPrivateCarService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.service.ITServerCarmodelService;
@@ -30,6 +32,9 @@
    @Autowired
    private ITServerCarmodelService serverCarmodelService;
    @Autowired
    private ITCompanyService companyService;
@@ -56,6 +61,13 @@
                }
                map.put("serverCarModelName", collect);
            }
            if(null != map.get("companyId")){
                TCompany company = companyService.selectById(map.get("companyId").toString());
                if(company!=null){
                    map.put("companyName", company.getName());
                }
            }
        }
        return privateCarOrderList;
    }
@@ -81,6 +93,13 @@
                }
                map.put("serverCarModelName", collect);
            }
            if(null != map.get("companyId")){
                TCompany company = companyService.selectById(map.get("companyId").toString());
                if(company!=null){
                    map.put("companyName", company.getName());
                }
            }
        }
        return privateCarOrderList;
    }
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java
@@ -7,10 +7,7 @@
import com.stylefeng.guns.core.util.ExcelUtil;
import com.stylefeng.guns.modular.system.dao.OrderCancelMapper;
import com.stylefeng.guns.modular.system.dao.TOrderTaxiMapper;
import com.stylefeng.guns.modular.system.model.Income;
import com.stylefeng.guns.modular.system.model.OrderCancel;
import com.stylefeng.guns.modular.system.model.TOrderTaxi;
import com.stylefeng.guns.modular.system.model.TReassign;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
@@ -44,9 +41,7 @@
    @Autowired
    private ITCompanyService companyService;
    
    @Autowired
    private ITLineService lineService;
    @Autowired
    private IIncomeService incomeService;
    
@@ -58,14 +53,33 @@
    public List<Map<String, Object>> getTaxiOrderList(Page<Map<String, Object>> page, String beginTime, String endTime, Integer roleType, Integer nowUserId, String orderNum, Integer orderSource, String userName, String userPhone, String passengers, String passengersPhone, String driver, Integer state,Integer abnormal,
                                                      Integer promotion,
                                                      String promotionUser,Integer abnormalStatus) {
        return this.baseMapper.getTaxiOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser,abnormalStatus);
        List<Map<String, Object>> taxiOrderList = this.baseMapper.getTaxiOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser, abnormalStatus);
        for (Map<String, Object> map : taxiOrderList) {
            if(null != map.get("companyId")){
                TCompany company = companyService.selectById(map.get("companyId").toString());
                if(company!=null){
                    map.put("companyName", company.getName());
                }
            }
        }
        return taxiOrderList;
    }
    
    @Override
    public List<Map<String, Object>> getTaxiOrderListExport(Page<Map<String, Object>> page, String beginTime, String endTime, Integer roleType, Integer nowUserId, String orderNum, Integer orderSource, String userName, String userPhone, String passengers, String passengersPhone, String driver, Integer state,Integer abnormal,
                                                      Integer promotion,
                                                      String promotionUser,Integer abnormalStatus) {
        return this.baseMapper.getTaxiOrderListExport( beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser,abnormalStatus);
        List<Map<String, Object>> taxiOrderListExport = this.baseMapper.getTaxiOrderListExport(beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser, abnormalStatus);
        for (Map<String, Object> map : taxiOrderListExport) {
            if(null != map.get("companyId")){
                TCompany company = companyService.selectById(map.get("companyId").toString());
                if(company!=null){
                    map.put("companyName", company.getName());
                }
            }
        }
        return taxiOrderListExport;
    }
    @Override
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder.html
@@ -70,7 +70,7 @@
                        </div>
                        <div class="hidden-xs" id="TOrderPrivateCarTableToolbar" role="group">
                            <#button name="处理详情" icon="fa-search" clickFun="TAbnormalOrder.orderDetail()"/>
                            <#button name="处理异常订单" icon="fa-edit" clickFun="TAbnormalOrder.cancelOrder()" space="true"/>
                            <#button name="处理异常订单" icon="fa-edit" clickFun="TAbnormalOrder.orderDetail1()" space="true"/>
                            <#button name="导出Excel" icon="" clickFun="TAbnormalOrder.exportExcel()" space="true"/>
                        </div>
                        <#table id="TOrderPrivateCarTable"/>
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder_orderDetail.html
@@ -160,7 +160,11 @@
<body>
     <input type="hidden" id="orderNum"  name ="orderNum" value="${item.orderNum}"/>
     <input type="hidden" id="state"  name ="state" value="${item.abnormalStatus}"/>
     <input type="hidden" id="show"  name ="show" value="${show}"/>
     <input type="hidden" id="type" name ="type" value="${type}"/>
     <input type="hidden" id="orderId" name ="orderId" value="${item.id}"/>
     <input type="hidden" id="payMoney" name ="payMoney" value="${item.payMoney}"/>
     <div class="ibox float-e-margins">
        <div class="title">处理异常订单</div>
        <div class="section-title">订单信息</div>
@@ -231,7 +235,7 @@
                        未知
                        @}
                    </td>
                    <td><a class="order-link" href="#">查看订单详情</a></td>
                    <td><a class="order-link" onclick="viewOrderInfo()">查看订单详情</a></td>
                </tr>
            </tbody>
        </table>
@@ -248,8 +252,15 @@
            @}
        </div>
        <!-- 你可以根据实际图片地址替换上面src -->
         <div class="section-title" id="s1">处理状态:
            @if(item.abnormalStatus==1){
             未处理  <button id="saveBtn1" class="action-btn" onclick="saveBtn1()">立即处理</button>
             @}else{
             已处理
             @}
         </div>
        <!-- 其他内容可根据实际需求继续补充 -->
         <div id="s2">
        <div class="section-title">选择责任方</div>
        <div id="duty-selector">
            <button type="button" class="duty-btn active" data-type="platformAll">平台全责</button>
@@ -270,10 +281,10 @@
        <div id="action-btns">
            <button id="saveBtn" class="action-btn" onclick="save()" style="display:none;">确认处理</button>
            <button id="closeBtn" class="action-btn" style="display:none;">关闭</button>
          </div>
        </div>
         </div>
    </div>
</body>
<script>
    const dutyContent = document.getElementById('duty-content');
@@ -294,8 +305,8 @@
                        <label><input type="radio" name="ybj" disabled>否</label>
                    </div>
                    <div class="radio-group">超时是否生成追偿支付单:
                          <label><input type="radio" name="zcpay" checked disabled>是</label>
                         <label><input type="radio" name="zcpay" disabled>否</label>
                          <label><input type="radio" name="zcpay"  disabled>是</label>
                         <label><input type="radio" name="zcpay" checked disabled>否</label>
                        </div>
                </div>
            `;
@@ -325,7 +336,7 @@
                    <label><input type="radio" name="zcpay" disabled>否</label>
                </div>
                <div style="margin-top:10px;">
                    新增修改订单金额为:<input type="number" id="money" name="money" style="width:100px;"  value="${money}"> 元
                    修改订单金额为:<input type="number" id="money" name="money" style="width:100px;"  value="${money}"> 元(需小于等于原订单金额)
                </div>
            `;
        }
@@ -338,6 +349,8 @@
        btn.disabled = true;
        if (btn.dataset.type === typeMap[responsibilityType]) {
          btn.classList.add('active');
        }else {
            btn.style.display = 'none';
        }
      });
      renderContent(typeMap[responsibilityType], true);
@@ -356,6 +369,10 @@
      document.getElementById('closeBtn').style.display = 'none';
    }
    function saveBtn1() {
        $("#s1").hide();
        $("#s2").show();
    }
    window.onload = function() {
      if (isReadonly) {
        setReadonlyMode();
@@ -380,14 +397,30 @@
         let remark = document.querySelector('textarea[name=handleRemark]').value;
        // 取money
         let money = $("#money").val();
         let payMoney = $("#payMoney").val();
         let type = document.querySelector('input[name=type]').value;
         let orderNum = document.querySelector('input[name=orderNum]').value;
        console.log(type,orderNum)
         console.log(responsibilityTypeVal,money,payMoney)
         if(responsibilityTypeVal>3 && money>payMoney){
             Feng.error("需小于等于原订单金额!");
             return;
         }
        //提交信息
        var ajax = new $ax(Feng.ctxPath + "/abnormal/save", function(data){
            Feng.success("操作成功!");
                // 尝试关闭当前窗口或弹窗
                if(window.parent && window.parent !== window && window.parent.layer) {
                    // layer弹窗
                    var index = window.parent.layer.getFrameIndex(window.name);
                    window.parent.layer.close(index);
                } else if(window.opener) {
                    window.close();
                } else if(window.top && window.top.closeDialog) {
                    window.top.closeDialog();
                } else {
                    window.close();
                }
        },function(data){
            Feng.error("操作失败!");
        });
@@ -414,6 +447,64 @@
        window.close();
      }
    };
//     进来就加载
    $(function() {
        var state = $("#state").val();
        var show = $("#show").val();
        if(state==1 && show==0){
            $("#s2").hide();
        }
        if(show==1){
            $("#s2").show();
            $("#s1").hide();
        }
    })
    function viewOrderInfo(){
        var type = $("#type").val();
        var orderId = $("#orderId").val();
        if(type==1){
            var index = layer.open({
                type: 2,
                title: '快车订单详情',
                area: ['100%', '100%'], //宽高
                fix: false, //不固定
                maxmin: true,
                content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_orderDetail/' +orderId
            });
            this.layerIndex = index;
        }
        if(type==2){
            var index = layer.open({
                type: 2,
                title: '跨城出行订单详情',
                area: ['100%', '100%'], //宽高
                fix: false, //不固定
                maxmin: true,
                content: Feng.ctxPath + '/tOrderCrossCity/tOrderCrossCity_detail/' + orderId
            });
            this.layerIndex = index;
        }
        if(type==3){
            var index = layer.open({
                type: 2,
                title: '出租车订单详情',
                area: ['100%', '100%'], //宽高
                fix: false, //不固定
                maxmin: true,
                content: Feng.ctxPath + '/tOrderTaxi/tOrderTaxi_update/' + orderId
            });
            this.layerIndex = index;
        }
    }
</script>
</html>
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_add.html
@@ -3,6 +3,7 @@
    <div class="ibox-content">
        <div class="form-horizontal" id="carInfoForm">
            <input type="hidden" id="roleType" name="roleType" value="${roleType}">
            <input type="hidden" name="driverIds" id="driverIdsHidden">
            <div class="row">
                <div class="col-sm-11">
                    <div class="form-group">
@@ -94,25 +95,55 @@
                            </select>
                        </div>
                    </div>
                    <#select id="carBrandId" name="车辆品牌:" onchange="TCarInfoDlg.brandChange(this)">
                        <option value="">选择车辆品牌</option>
                        @for(obj in brandList){
                        <option value="${obj.id}">${obj.name}</option>
                        @}
                    </#select>
                    <#select id="carModelId" name="车辆类型:">
                        <option value="">选择车辆类型</option>
                    </#select>
                    <#select id="carColor" name="车辆颜色:">
                        <option value="">选择车辆颜色</option>
                        <option value="黑色">黑色</option>
                        <option value="银色">银色</option>
                        <option value="白色">白色</option>
                        <option value="红色">红色</option>
                        <option value="黄色">黄色</option>
                        <option value="橙色">橙色</option>
                        <option value="蓝色">蓝色</option>
                    </#select>
                    <div class="form-group" style="display: flex; align-items: center;">
                        <label class="col-sm-3 control-label">车辆品牌:</label>
                        <div class="col-sm-3" style="padding-right:0;">
                            <select class="form-control" id="carBrandId" name="carBrandId" onchange="TCarInfoDlg.brandChange(this)">
                                <option value="">选择车辆品牌</option>
                                @for(obj in brandList){
                                <option value="${obj.id}">${obj.name}</option>
                                @}
                            </select>
                        </div>
                        <label class="col-sm-2 control-label">授权司机:</label>
                        <div class="col-sm-3">
                            <div id="driverMultiSelect" class="driver-multiselect" tabindex="0" style="position:relative; width:320px;">
                                <div id="driverTags" class="driver-tags" style="min-height:38px; border:1px solid #d9d9d9; border-radius:4px; padding:4px 8px; display:flex; align-items:center; flex-wrap:wrap; cursor:pointer; background:#fff;"></div>
                                <input type="text" id="driverSearchInput" class="form-control" placeholder="搜索司机" style="margin-top:2px; display:none; position:absolute; left:0; top:40px; width:100%; z-index:2;" autocomplete="off">
                                <div id="driverDropdown" class="driver-dropdown" style="display:none; position:absolute; left:0; top:40px; width:100%; max-height:220px; overflow:auto; border:1px solid #d9d9d9; background:#fff; border-radius:0 0 4px 4px; z-index:10;"></div>
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">车辆类型:</label>
                        <div class="col-sm-3">
                            <select class="form-control" id="carModelId" name="carModelId">
                                <option value="">选择车辆类型</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-group has-feedback">
                        <label class="col-sm-3 control-label">车辆颜色:</label>
                        <div class="col-sm-3">
                            <select class="form-control" id="carColor" name="carColor" data-bv-field="carColor">
                                <option value="">选择车辆颜色</option>
                                <option value="黑色">黑色</option>
                                <option value="银色">银色</option>
                                <option value="白色">白色</option>
                                <option value="红色">红色</option>
                                <option value="黄色">黄色</option>
                                <option value="橙色">橙色</option>
                                <option value="蓝色">蓝色</option>
                            </select><i class="form-control-feedback" data-bv-icon-for="carColor" style="display: none;"></i>
                            <small class="help-block" data-bv-validator="notEmpty" data-bv-for="carColor" data-bv-result="NOT_VALIDATED" style="display: none;">车辆颜色不能为空</small></div>
                    </div>
                    <#input id="carLicensePlate" name="车牌号" />
                    <#avatar id="carPhoto" name="车辆照片:" />
                    <#input id="drivingLicenseNumber" name="行驶证编号" />
@@ -156,7 +187,7 @@
            <div class="row btn-group-m-t">
                <div class="col-sm-10 col-sm-offset-5">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCarInfoDlg.addSubmit()"/>
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/>
                </div>
            </div>
@@ -165,6 +196,7 @@
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCar/tCar_info.js"></script>
<script>
    laydate.render({
        elem: '#annualInspectionTime'
@@ -193,5 +225,137 @@
    laydate.render({
        elem: '#registerDate'
    });
    var allDrivers = [];
var selectedDrivers = []; // 选中司机id数组
var driverMap = {}; // id->name
// 监听分公司选择,拉取司机
$('#oneId').on('change', function() {
    var companyId = $(this).val();
    if (!companyId) {
        allDrivers = [];
        selectedDrivers = [];
        driverMap = {};
        renderDriverTags();
        renderDriverDropdown();
        return;
    }
    selectDriverFromCompanyId(companyId, function(driverList) {
        allDrivers = driverList || [];
        driverMap = {};
        allDrivers.forEach(function(d) { driverMap[d.id] = d.name; });
        selectedDrivers = [];
        renderDriverTags();
        renderDriverDropdown();
    });
});
// 渲染下拉选项
function renderDriverDropdown(keyword) {
    var $dropdown = $('#driverDropdown');
    $dropdown.empty();
    var filter = (keyword || '').trim();
    var filtered = allDrivers.filter(function(driver) {
        return !filter || driver.name.indexOf(filter) !== -1;
    });
    if (filtered.length === 0) {
        $dropdown.append('<div style="padding:8px;color:#aaa;">无匹配司机</div>');
        return;
    }
    filtered.forEach(function(driver) {
        var checked = selectedDrivers.indexOf(driver.id+'') !== -1;
        $dropdown.append('<div class="driver-option" data-id="'+driver.id+'" style="padding:6px 12px;cursor:pointer;display:flex;align-items:center;'+(checked?'background:#f5f5f5;':'')+'">'
            +'<span style="flex:1;'+(checked?'color:#1890ff;':'')+'">'+driver.name+'</span>'
            +(checked?'<span style="color:#1890ff;">✔</span>':'')
            +'</div>');
    });
}
// 渲染已选标签
function renderDriverTags() {
    var $tags = $('#driverTags');
    $tags.empty();
    if (selectedDrivers.length === 0) {
        $tags.append('<span style="color:#aaa;">请选择司机</span>');
        return;
    }
    var firstId = selectedDrivers[0];
    var firstName = driverMap[firstId] || '';
    $tags.append('<span class="driver-tag" style="background:#f0f0f0;border-radius:2px;padding:2px 8px;margin-right:4px;display:flex;align-items:center;">'
        +firstName+'<span class="remove-tag" data-id="'+firstId+'" style="margin-left:4px;cursor:pointer;">×</span></span>');
    if (selectedDrivers.length > 1) {
        $tags.append('<span class="driver-tag" style="background:#f0f0f0;border-radius:2px;padding:2px 8px;">+'
            +(selectedDrivers.length-1)+'</span>');
    }
}
// 展示/隐藏下拉和搜索
function showDriverDropdown() {
    $('#driverDropdown').show();
    $('#driverSearchInput').show().val('').focus();
    renderDriverDropdown('');
}
function hideDriverDropdown() {
    $('#driverDropdown').hide();
    $('#driverSearchInput').hide();
}
// 点击tags区域显示下拉
$('#driverTags').on('click', function() {
    if (allDrivers.length === 0) return;
    showDriverDropdown();
});
// 输入搜索
$('#driverSearchInput').on('input', function() {
    renderDriverDropdown($(this).val());
});
// 选中/取消选中
$('#driverDropdown').on('click', '.driver-option', function() {
    var id = $(this).data('id').toString();
    var idx = selectedDrivers.indexOf(id);
    if (idx === -1) {
        selectedDrivers.push(id);
    } else {
        selectedDrivers.splice(idx,1);
    }
    renderDriverTags();
    renderDriverDropdown($('#driverSearchInput').val());
});
// 删除标签
$('#driverTags').on('click', '.remove-tag', function(e) {
    var id = $(this).data('id').toString();
    selectedDrivers = selectedDrivers.filter(function(did) { return did !== id; });
    renderDriverTags();
    renderDriverDropdown($('#driverSearchInput').val());
    e.stopPropagation();
});
// 失焦隐藏
$('#driverSearchInput').on('blur', function() {
    setTimeout(hideDriverDropdown, 200);
});
// 保证点击下拉不失焦
$('#driverDropdown').on('mousedown', function(e) { e.preventDefault(); });
// 初始化时禁用
$(function(){
    renderDriverTags();
    renderDriverDropdown();
});
// 你需要实现的接口调用方法
function selectDriverFromCompanyId(companyId, callback) {
    // 这里你自己实现ajax
    var ajax = new $ax(Feng.ctxPath + "/tCar/selectDriverFromCompanyId", function(data){
        callback(data)
    });
    ajax.set("companyId",companyId);
    ajax.start();
}
function addSubmit(){
    $('#driverIdsHidden').val(selectedDrivers.join(','));
    TCarInfoDlg.addSubmit()
}
</script>
@}
ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_edit.html
@@ -4,6 +4,7 @@
        <div class="form-horizontal" id="carInfoForm">
            <input type="hidden" id="id" name="id" value="${item.id}">
            <input type="hidden" id="roleType" name="roleType" value="${roleType}">
            <input type="hidden" id="bindDriverId" name="bindDriverId" value="${item.bindDriverId}">
            <div class="row">
                <div class="col-sm-11">
                    <div class="form-group">
@@ -96,28 +97,58 @@
                            </select>
                        </div>
                    </div>
                    <#select id="carBrandId" name="车辆品牌:" onchange="TCarInfoDlg.brandChange(this)">
                        <option value="">选择车辆品牌</option>
                        @for(obj in brandList){
                        <option value="${obj.id}" ${obj.id == item.carBrandId ? 'selected=selected' : ''}>${obj.name}</option>
                        @}
                    </#select>
                    <#select id="carModelId" name="车辆类型:">
                        <option value="">选择车辆类型</option>
                        @for(obj in modelList){
                        <option value="${obj.id}" ${obj.id == item.carModelId ? 'selected=selected' : ''}>${obj.name}</option>
                        @}
                    </#select>
                    <#select id="carColor" name="车辆颜色:">
                        <option value="">选择车辆颜色</option>
                        <option value="黑色" ${'黑色' == item.carColor ? 'selected=selected' : ''}>黑色</option>
                        <option value="银色" ${'银色' == item.carColor ? 'selected=selected' : ''}>银色</option>
                        <option value="白色" ${'白色' == item.carColor ? 'selected=selected' : ''}>白色</option>
                        <option value="红色" ${'红色' == item.carColor ? 'selected=selected' : ''}>红色</option>
                        <option value="黄色" ${'黄色' == item.carColor ? 'selected=selected' : ''}>黄色</option>
                        <option value="橙色" ${'橙色' == item.carColor ? 'selected=selected' : ''}>橙色</option>
                        <option value="蓝色" ${'蓝色' == item.carColor ? 'selected=selected' : ''}>蓝色</option>
                    </#select>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">车辆品牌:</label>
                        <div class="col-sm-3">
                            <select class="form-control" id="carBrandId" name="carBrandId" onchange="TCarInfoDlg.brandChange(this)">
                                <option value="">选择车辆品牌</option>
                                @for(obj in brandList){
                                <option value="${obj.id}" ${obj.id == item.carBrandId ? 'selected=selected' : ''}>${obj.name}</option>
                                @}
                            </select>
                        </div>
                        <label class="col-sm-2 control-label">授权司机:</label>
                        <div class="col-sm-3">
                            <div id="driverMultiSelect" class="driver-multiselect" tabindex="0" style="position:relative; width:320px;">
                                <div id="driverTags" class="driver-tags" style="min-height:38px; border:1px solid #d9d9d9; border-radius:4px; padding:4px 8px; display:flex; align-items:center; flex-wrap:wrap; cursor:pointer; background:#fff;"></div>
                                <input type="text" id="driverSearchInput" class="form-control" placeholder="搜索司机" style="margin-top:2px; display:none; position:absolute; left:0; top:40px; width:100%; z-index:2;" autocomplete="off">
                                <div id="driverDropdown" class="driver-dropdown" style="display:none; position:absolute; left:0; top:40px; width:100%; max-height:220px; overflow:auto; border:1px solid #d9d9d9; background:#fff; border-radius:0 0 4px 4px; z-index:10;"></div>
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">车辆类型:</label>
                        <div class="col-sm-3">
                            <select class="form-control" id="carModelId" name="carModelId">
                                <option value="">选择车辆类型</option>
                                @for(obj in modelList){
                                <option value="${obj.id}" ${obj.id == item.carModelId ? 'selected=selected' : ''}>${obj.name}</option>
                                @}
                            </select>
                        </div>
                    </div>
                    <div class="form-group has-feedback">
                        <label class="col-sm-3 control-label">车辆颜色:</label>
                        <div class="col-sm-3">
                            <select class="form-control" id="carColor" name="carColor" data-bv-field="carColor">
                                <option value="黑色" ${'黑色' == item.carColor ? 'selected=selected' : ''}>黑色</option>
                                <option value="银色" ${'银色' == item.carColor ? 'selected=selected' : ''}>银色</option>
                                <option value="白色" ${'白色' == item.carColor ? 'selected=selected' : ''}>白色</option>
                                <option value="红色" ${'红色' == item.carColor ? 'selected=selected' : ''}>红色</option>
                                <option value="黄色" ${'黄色' == item.carColor ? 'selected=selected' : ''}>黄色</option>
                                <option value="橙色" ${'橙色' == item.carColor ? 'selected=selected' : ''}>橙色</option>
                                <option value="蓝色" ${'蓝色' == item.carColor ? 'selected=selected' : ''}>蓝色</option>
                            </select><i class="form-control-feedback" data-bv-icon-for="carColor" style="display: none;"></i>
                            <small class="help-block" data-bv-validator="notEmpty" data-bv-for="carColor" data-bv-result="NOT_VALIDATED" style="display: none;">车辆颜色不能为空</small></div>
                    </div>
                    <#input id="carLicensePlate" name="车牌号" value="${item.carLicensePlate}"/>
                    <#avatar id="carPhoto" name="车辆照片:" avatarImg="${item.carPhoto}"/>
                    <#input id="drivingLicenseNumber" name="行驶证编号" value="${item.drivingLicenseNumber}"/>
@@ -161,7 +192,7 @@
            <div class="row btn-group-m-t">
                <div class="col-sm-10 col-sm-offset-5">
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCarInfoDlg.editSubmit()"/>
                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/>
                </div>
            </div>
@@ -208,9 +239,153 @@
            $(".companyDiv").show();
        }
        // 1. 初始化 selectedDrivers
        let bindDriverId = $("#bindDriverId").val();
        selectedDrivers = bindDriverId ? bindDriverId.split(",").filter(Boolean) : [];
        // 2. 触发 change 拉取司机
        $('#oneId').trigger('change');
        TCarInfoDlg.zcServerClick();
        TCarInfoDlg.kcServerClick();
    });
    var allDrivers = [];
    var selectedDrivers = []; // 选中司机id数组
    var driverMap = {}; // id->name
    // 监听分公司选择,拉取司机
    $('#oneId').on('change', function() {
        var companyId = $(this).val();
        if (!companyId) {
            allDrivers = [];
            selectedDrivers = [];
            driverMap = {};
            renderDriverTags();
            renderDriverDropdown();
            return;
        }
        selectDriverFromCompanyId(companyId, function(driverList) {
            allDrivers = driverList || [];
            driverMap = {};
            allDrivers.forEach(function(d) { driverMap[d.id] = d.name; });
            // 只保留当前司机列表中存在的已选司机
            selectedDrivers = selectedDrivers.filter(function(id) {
                return allDrivers.some(function(d) { return d.id == id; });
            });
            renderDriverTags();
            renderDriverDropdown();
        });
    });
    // 渲染下拉选项
    function renderDriverDropdown(keyword) {
        var $dropdown = $('#driverDropdown');
        $dropdown.empty();
        var filter = (keyword || '').trim();
        var filtered = allDrivers.filter(function(driver) {
            return !filter || driver.name.indexOf(filter) !== -1;
        });
        if (filtered.length === 0) {
            $dropdown.append('<div style="padding:8px;color:#aaa;">无匹配司机</div>');
            return;
        }
        filtered.forEach(function(driver) {
            var checked = selectedDrivers.indexOf(driver.id+'') !== -1;
            $dropdown.append('<div class="driver-option" data-id="'+driver.id+'" style="padding:6px 12px;cursor:pointer;display:flex;align-items:center;'+(checked?'background:#f5f5f5;':'')+'">'
                +'<span style="flex:1;'+(checked?'color:#1890ff;':'')+'">'+driver.name+'</span>'
                +(checked?'<span style="color:#1890ff;">✔</span>':'')
                +'</div>');
        });
    }
    // 渲染已选标签
    function renderDriverTags() {
        var $tags = $('#driverTags');
        $tags.empty();
        if (selectedDrivers.length === 0) {
            $tags.append('<span style="color:#aaa;">请选择司机</span>');
            return;
        }
        var firstId = selectedDrivers[0];
        var firstName = driverMap[firstId] || '';
        $tags.append('<span class="driver-tag" style="background:#f0f0f0;border-radius:2px;padding:2px 8px;margin-right:4px;display:flex;align-items:center;">'
            +firstName+'<span class="remove-tag" data-id="'+firstId+'" style="margin-left:4px;cursor:pointer;">×</span></span>');
        if (selectedDrivers.length > 1) {
            $tags.append('<span class="driver-tag" style="background:#f0f0f0;border-radius:2px;padding:2px 8px;">+'
                +(selectedDrivers.length-1)+'</span>');
        }
    }
    // 展示/隐藏下拉和搜索
    function showDriverDropdown() {
        $('#driverDropdown').show();
        $('#driverSearchInput').show().val('').focus();
        renderDriverDropdown('');
    }
    function hideDriverDropdown() {
        $('#driverDropdown').hide();
        $('#driverSearchInput').hide();
    }
    // 点击tags区域显示下拉
    $('#driverTags').on('click', function() {
        if (allDrivers.length === 0) return;
        showDriverDropdown();
    });
    // 输入搜索
    $('#driverSearchInput').on('input', function() {
        renderDriverDropdown($(this).val());
    });
    // 选中/取消选中
    $('#driverDropdown').on('click', '.driver-option', function() {
        var id = $(this).data('id').toString();
        var idx = selectedDrivers.indexOf(id);
        if (idx === -1) {
            selectedDrivers.push(id);
        } else {
            selectedDrivers.splice(idx,1);
        }
        renderDriverTags();
        renderDriverDropdown($('#driverSearchInput').val());
    });
    // 删除标签
    $('#driverTags').on('click', '.remove-tag', function(e) {
        var id = $(this).data('id').toString();
        selectedDrivers = selectedDrivers.filter(function(did) { return did !== id; });
        renderDriverTags();
        renderDriverDropdown($('#driverSearchInput').val());
        e.stopPropagation();
    });
    // 失焦隐藏
    $('#driverSearchInput').on('blur', function() {
        setTimeout(hideDriverDropdown, 200);
    });
    // 保证点击下拉不失焦
    $('#driverDropdown').on('mousedown', function(e) { e.preventDefault(); });
    // 初始化时禁用
    $(function(){
        renderDriverTags();
        renderDriverDropdown();
    });
    // 你需要实现的接口调用方法
    function selectDriverFromCompanyId(companyId, callback) {
        // 这里你自己实现ajax
        var ajax = new $ax(Feng.ctxPath + "/tCar/selectDriverFromCompanyId", function(data){
            callback(data)
        });
        ajax.set("companyId",companyId);
        ajax.start();
    }
    function editSubmit(){
        TCarInfoDlg.editSubmit(selectedDrivers.join(','))
    }
</script>
@}
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrder.js
@@ -229,6 +229,7 @@
                return {1:"否",2:"是"}[value];
            }
        },
        {title: '是否推广订单', field: 'promotion', visible: true, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                return {1:"否",2:"是"}[value];
@@ -289,6 +290,25 @@
        this.layerIndex = index;
    }
};
TAbnormalOrder.orderDetail1 = function () {
    if (this.check()) {
        let abnormalStatus = TAbnormalOrder.seItem.abnormalStatus
        if(abnormalStatus==2){
            Feng.info("此异常订单已处理")
            return;
        }
        console.log(abnormalStatus)
        var index = layer.open({
            type: 2,
            title: '异常订单详情',
            area: ['100%', '100%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/abnormal/tOrderPrivateCar_orderDetail1?tOrderPrivateCarId=' + TAbnormalOrder.seItem.id+'&type='+$("#type").val()
        });
        this.layerIndex = index;
    }
};
/**
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tCar/tCar_info.js
@@ -338,6 +338,8 @@
 */
TCarInfoDlg.addSubmit = function() {
    console.log($("#driverIdsHidden").val())
    this.clearData();
    this.collectData();
    if(!this.validate()){
@@ -384,6 +386,7 @@
    ajax.set(this.tCarInfoData);
    ajax.set("serverBox",serverBox.toString());
    ajax.set("zcModel",$("#zcModel").val());
    ajax.set("bindDriverId",$("#driverIdsHidden").val());
    ajax.set("kcModel",$("#kcModel").val());
    ajax.set("roleType",roleType);
    if (1 == roleType){
@@ -408,7 +411,7 @@
/**
 * 提交修改
 */
TCarInfoDlg.editSubmit = function() {
TCarInfoDlg.editSubmit = function(e) {
    this.clearData();
    this.collectData();
@@ -456,6 +459,7 @@
    ajax.set("serverBox",serverBox.toString());
    ajax.set("zcModel",$("#zcModel").val());
    ajax.set("kcModel",$("#kcModel").val());
    ajax.set("bindDriverId",e);
    ajax.set("roleType",roleType);
    if (1 == roleType){
        ajax.set("companyType",companyType);
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js
@@ -53,6 +53,8 @@
                return btn;
            }
        },
        {title: '所属公司', field: 'companyName', visible: true, align: 'center', valign: 'middle',
        },
        {title: '乘车时间', field: 'travelTime', visible: true, align: 'center', valign: 'middle',width:'10%',
            formatter: function (value, row) {
                var btn = "";
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderPrivateCar/tOrderPrivateCar.js
@@ -53,7 +53,7 @@
                return btn;
            }
        },
        {title: '订单类型', field: 'rideType', visible: true, align: 'center', valign: 'middle',
        {title: '订单类型', field: 'rideType', visible: false, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                var btn = "";
                if(row.rideType != '' && row.rideType != null) {
@@ -68,6 +68,8 @@
                return btn;
            }
        },
        {title: '所属公司', field: 'companyName', visible: true, align: 'center', valign: 'middle',
        },
        {title: '乘车时间', field: 'travelTime', visible: true, align: 'center', valign: 'middle',width:'10%',
            formatter: function (value, row) {
                var btn = "";
ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi.js
@@ -55,6 +55,8 @@
                return btn;
            }
        },
        {title: '所属公司', field: 'companyName', visible: true, align: 'center', valign: 'middle',
        },
        {title: '乘车时间', field: 'travelTime', visible: true, align: 'center', valign: 'middle',width:'10%',
            formatter: function (value, row) {
                var btn = "";