From 60eb2f18aaf48a15d2af07918ceadff9cb650626 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期一, 21 七月 2025 18:46:36 +0800 Subject: [PATCH] 后台异常订单模块 --- ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/CellType.java | 45 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TAbnormalPayOrderMapper.java | 23 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi.js | 85 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder.html | 90 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderCarController.java | 720 +++++ ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html | 23 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java | 41 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java | 24 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java | 25 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java | 13 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java | 41 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tOrderPrivateCar_add.html | 487 +++ ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tOrderPrivateCar_trajectory.html | 57 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder_orderDetail.html | 421 +++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java | 40 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tAbnormalOrder_orderDetail.html | 271 ++ ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi.html | 22 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java | 25 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tOrderPrivateCar_trajectory.html | 57 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalPayOrderCar/tAbnormalOrder.js | 264 ++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml | 85 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js | 91 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/trPrivateOrdeCar/tOrderPrivateCar_info.js | 287 ++ ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrderCar_info.js | 312 ++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java | 25 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TAbnormalPayOrderMapper.xml | 39 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tAbnormalOrder.html | 60 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml | 83 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ExcelUtil.java | 351 ++ ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tOrderPrivateCar_add.html | 487 +++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java | 25 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderPayCarController.java | 183 + ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAbnormalPayOrderServiceImpl.java | 35 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java | 286 ++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java | 32 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalPayOrderCar/tAbnormalOrderCar_info.js | 287 ++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java | 40 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAbnormalPayOrder.java | 82 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html | 20 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java | 14 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html | 67 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrder.js | 478 +++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java | 269 ++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RoleMapper.xml | 2 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderPrivateCar/tOrderPrivateCar.js | 92 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TAbnormalPayOrderService.java | 24 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html | 65 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/trPrivateOrdeCar/tOrderPrivateCar.js | 434 +++ ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html | 67 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml | 73 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java | 307 ++ 51 files changed, 7,426 insertions(+), 50 deletions(-) diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderCarController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderCarController.java new file mode 100644 index 0000000..5b32716 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderCarController.java @@ -0,0 +1,720 @@ +package com.stylefeng.guns.modular.system.controller.specialTrain; + +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.beetl.ShiroExtUtil; +import com.stylefeng.guns.core.common.constant.factory.PageFactory; +import com.stylefeng.guns.core.util.DateUtil; +import com.stylefeng.guns.core.util.SinataUtil; +import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.dao.OrderCancelMapper; +import com.stylefeng.guns.modular.system.model.*; +import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.util.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.*; + +/** + * 快车订单控制器 + * + * @author fengshuonan + * @Date 2020-09-02 17:28:59 + */ +@Controller +@RequestMapping("/abnormal") +public class TAbnormalOrderCarController extends BaseController { + + private String PREFIX = "/system/tAbnormalOrderCar/"; + + @Autowired + private ITOrderPrivateCarService tOrderPrivateCarService; + + @Autowired + private ITServerCarmodelService tServerCarmodelService; + + @Autowired + private ITOrderPositionService tOrderPositionService; + + @Autowired + private ITServerCarmodelService serverCarmodelService; + + @Autowired + private ITDriverService tDriverService; + + @Autowired + private PushMinistryOfTransportUtil pushMinistryOfTransportUtil; + @Autowired + private ITUserService userService; + @Resource + private OrderCancelMapper orderCancelMapper; + @Autowired + private ITOrderCrossCityService tOrderCrossCityService; + + @Autowired + private ITOrderTaxiService tOrderTaxiService; + + + @Value("${pushMinistryOfTransport}") + private boolean pushMinistryOfTransport; + + @Resource + private MongoTemplate mongoTemplate; + + @Autowired + private ShiroExtUtil shiroExtUtil; + + @Autowired + private TAbnormalPayOrderService tAbnormalPayOrderService; + + + /** + * 跳转到快车订单首页 + */ + @RequestMapping("") + public String index(Model model) { + //服务快车车型 + List<TServerCarmodel> carmodelList = tServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1)); + model.addAttribute("carmodelList", carmodelList); + return PREFIX + "tAbnormalOrder.html"; + } + + /** + * 跳转到修改快车订单 + */ + @RequestMapping("/tOrderPrivateCar_orderDetail") + public String tOrderPrivateCarUpdate(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); + + 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); + 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); + 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_trajectory/{tOrderPrivateCarId}") + public String tOrderTaxi_trajectory(@PathVariable Integer tOrderPrivateCarId, Model model) { + model.addAttribute("tOrderPrivateCarId",tOrderPrivateCarId); + return PREFIX + "tOrderPrivateCar_trajectory.html"; + } + + /** + * 获取快车订单列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String insertTime, + String orderNum, + Integer orderSource, + String userName, + String userPhone, + String passengers, + String passengersPhone, + Integer serverCarModelId, + String driver, + Integer state, + Integer rideType, + Integer abnormal, + Integer promotion, + String promotionUser,Integer type,Integer abnormalStatus + ) { + String beginTime = null; + String endTime = null; + if (SinataUtil.isNotEmpty(insertTime)) { + String[] timeArray = insertTime.split(" - "); + beginTime = timeArray[0]; + endTime = timeArray[1]; + } + abnormal = 2; + Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); + // 快车 + if(type==1){ + page.setRecords(tOrderPrivateCarService.getPrivateCarOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), + orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state, rideType, abnormal, promotion, promotionUser,abnormalStatus)); + return super.packForBT(page); + // 跨城 + }else if(type==2){ + page.setRecords(tOrderCrossCityService.getCrossCityOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, null, state, abnormal, promotion, promotionUser,abnormalStatus)); + return super.packForBT(page); + // 出租车 + }else if(type==3){ + page.setRecords(tOrderTaxiService.getTaxiOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser,abnormalStatus)); + return super.packForBT(page); + } + return super.packForBT(page); + } + + + + @GetMapping("/export") + @ResponseBody + public void export(String insertTime, + String orderNum, + Integer orderSource, + String userName, + String userPhone, + String passengers, + String passengersPhone, + Integer serverCarModelId, + String driver, + Integer state, + Integer rideType, + Integer abnormal, + Integer promotion, + String promotionUser,Integer type,Integer abnormalStatus, HttpServletRequest request, HttpServletResponse response) { + try { + String beginTime = null; + String endTime = null; + if (SinataUtil.isNotEmpty(insertTime)) { + String[] timeArray = insertTime.split(" - "); + beginTime = timeArray[0]; + endTime = timeArray[1]; + } + abnormal = 2; + List<Map<String, Object>> list=new ArrayList<>(); + if(type==1){ + list = tOrderPrivateCarService.getPrivateCarOrderListExport(null, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), + orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state, rideType, abnormal, promotion, promotionUser,abnormalStatus); + }else if(type==2){ + list = tOrderCrossCityService.getCrossCityOrderListExport(null, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, null, state, abnormal, promotion, promotionUser,abnormalStatus); + }else if(type==3){ + list = tOrderTaxiService.getTaxiOrderListExport(null, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser,abnormalStatus); + } + + + // 表格数据【封装】 + List<List<String>> dataList = new ArrayList<>(); + + //第一行显示【封装】 + List<String> twoList = new ArrayList<String>(); + twoList.add("总计:"); + twoList.add(String.valueOf(list.size())+"条"); + dataList.add(twoList); + + // 列【封装】 + List<String> shellList = new ArrayList<String>(); + shellList.add("下单时间"); + shellList.add("订单编号"); + shellList.add("订单来源"); + shellList.add("乘车时间"); + shellList.add("下单用户昵称"); + shellList.add("下单用户手机"); + shellList.add("乘车用户姓名"); + shellList.add("乘车用户手机"); + shellList.add("起点"); + shellList.add("终点"); + shellList.add("线路名称"); + shellList.add("选择车型"); + shellList.add("接单司机"); + shellList.add("接单车辆"); + shellList.add("订单金额"); + shellList.add("状态"); + shellList.add("是否异常订单"); + shellList.add("是否推广订单"); + shellList.add("推广员姓名"); + shellList.add("推广员电话"); + dataList.add(shellList); + + for (Map<String,Object> object : list){ + // 详细数据列【封装】 + shellList = new ArrayList<String>(); + if(SinataUtil.isNotEmpty(object.get("insertTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("insertTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("orderNum"))){ + shellList.add(object.get("orderNum").toString()); + }else{ + shellList.add("-"); + } + + // 1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单 + if(SinataUtil.isNotEmpty(object.get("orderSource"))){ + switch (object.get("orderSource").toString()){ + case "1": + shellList.add("APP下单"); + break; + case "2": + shellList.add("扫码下单"); + break; + case "3": + shellList.add("小程序下单"); + break; + case "4": + shellList.add("司机下单"); + break; + case "5": + shellList.add("调度下单"); + break; + case "6": + shellList.add("道行龙城下单"); + break; + default: + shellList.add("-"); + break; + } + + } + + if(SinataUtil.isNotEmpty(object.get("travelTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("travelTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("userName"))){ + shellList.add(object.get("userName").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("userPhone"))){ + shellList.add(object.get("userPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("passengers"))){ + shellList.add(object.get("passengers").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("passengersPhone"))){ + shellList.add(object.get("passengersPhone").toString()); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("startAddress"))){ + shellList.add(object.get("startAddress").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("endAddress"))){ + shellList.add(object.get("endAddress").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("lineName"))){ + shellList.add(object.get("lineName").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("serverCarModelName"))){ + shellList.add(object.get("serverCarModelName").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("driver"))){ + shellList.add(object.get("driver").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("car"))){ + shellList.add(object.get("car").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("orderMoney"))){ + shellList.add(object.get("orderMoney").toString()); + }else{ + shellList.add("-"); + } + + // 1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付 + if(SinataUtil.isNotEmpty(object.get("state"))){ + switch (object.get("state").toString()){ + case "1": + shellList.add("待接单"); + break; + case "2": + shellList.add("待出发"); + break; + case "3": + shellList.add("待到达预约地点"); + break; + case "4": + shellList.add("待乘客上车"); + break; + case "5": + shellList.add("服务中"); + break; + case "6": + shellList.add("完成服务"); + break; + case "7": + shellList.add("待支付"); + break; + case "8": + shellList.add("待评价"); + break; + case "9": + shellList.add("已完成"); + break; + case "10": + shellList.add("已取消"); + break; + case "11": + shellList.add("改派中"); + break; + case "12": + shellList.add("取消待支付"); + break; + default: + shellList.add("-"); + break; + } + } + + + if(SinataUtil.isNotEmpty(object.get("abnormal"))){ + shellList.add(object.get("abnormal").toString().equals("1")?"否":"是"); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("promotion"))){ + shellList.add(object.get("promotion").toString().equals("1")?"否":"是"); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("promotionUser"))){ + shellList.add(object.get("promotionUser").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("promotionPhone"))){ + shellList.add(object.get("promotionPhone").toString()); + }else{ + shellList.add("-"); + } + + + dataList.add(shellList); + } + try { + // 调用工具类进行导出 + ExcelExportUtil.easySheet("订单导出记录"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "订单导出记录", dataList,request, response); + } catch (Exception e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + private ResultUtil resultUtil; + + /** + * 获取订单轨迹 + * + * @param orderDetailId + * @return + */ + @ResponseBody + @RequestMapping(value = "/getOrderTrack", method = RequestMethod.POST) + public ResultUtil getOrderTrack(Integer orderDetailId) { + if (ToolUtil.isNotEmpty(orderDetailId)) { + try { + Query query = new Query() + .addCriteria(Criteria.where("orderId").is(orderDetailId).and("orderType").is(1)) + .with(new Sort(Sort.Direction.ASC, "insertTime")); + List<TOrderPosition> positions = mongoTemplate.find(query, TOrderPosition.class); + resultUtil = ResultUtil.success(positions); + } catch (Exception e) { + e.printStackTrace(); + resultUtil = ResultUtil.runErr(); + } + } else { + resultUtil = ResultUtil.paranErr(); + } + return resultUtil; + } + + /** + * 取消快车订单 + */ + @RequestMapping(value = "/cancel") + @ResponseBody + public Object cancel(@RequestParam Integer tOrderPrivateCarId) { + TOrderPrivateCar tOrderPrivateCar = tOrderPrivateCarService.selectById(tOrderPrivateCarId); + + //修改之前司机状态 -- 空闲 + if(null != tOrderPrivateCar.getDriverId()){ + TDriver driver = tDriverService.selectById(tOrderPrivateCar.getDriverId()); + driver.setState(2); + tDriverService.updateById(driver); + } + + tOrderPrivateCar.setState(10); + tOrderPrivateCarService.updateById(tOrderPrivateCar); + + OrderCancel orderCancel = new OrderCancel(); + orderCancel.setOrderId(tOrderPrivateCarId); + orderCancel.setOrderType(1); + orderCancel.setReason("平台取消订单"); + orderCancel.setRemark("平台取消订单"); + orderCancel.setUserType(2); + orderCancel.setState(2); + orderCancel.setInsertTime(new Date()); + orderCancelMapper.insert(orderCancel); + + //增加推送 + Map<String,String> map = new HashMap<>(); + map.put("id", tOrderPrivateCar.getId().toString()); + map.put("orderType", "1"); + String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map); + System.out.println("快车取消:【orderId="+tOrderPrivateCar.getId().toString()+"】,调用接口:"+result); + + new Thread(new Runnable() { + @Override + public void run() { + if(pushMinistryOfTransport){//上传数据 + pushMinistryOfTransportUtil.orderCancel(tOrderPrivateCarId); + } + } + }).start(); + + return SUCCESS_TIP; + } + + /** + * 删除快车订单 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam Integer tOrderPrivateCarId) { + TOrderPrivateCar tOrderPrivateCar = tOrderPrivateCarService.selectById(tOrderPrivateCarId); + tOrderPrivateCar.setIsDelete(2); + tOrderPrivateCarService.updateById(tOrderPrivateCar); + return SUCCESS_TIP; + } + + + @RequestMapping(value = "/save") + @ResponseBody + public Object save(Integer responsibilityTypeVal,String remark,String money,Integer type,String orderNum) { + if(type==1){ + TOrderPrivateCar tOrderPrivateCar = tOrderPrivateCarService.selectOne(new EntityWrapper<TOrderPrivateCar>().eq("orderNum",orderNum)); + tOrderPrivateCar.setResponsibilityType(responsibilityTypeVal); + tOrderPrivateCar.setAbnormalStatus(2); + if(responsibilityTypeVal>3){ + tOrderPrivateCar.setResponsibilityMoney(new BigDecimal(money)); + } + tOrderPrivateCar.setAbnormalRemark(remark); + tOrderPrivateCarService.updateById(tOrderPrivateCar); + } + + if(type==2){ + TOrderCrossCity tOrderCrossCity = tOrderCrossCityService.selectOne(new EntityWrapper<TOrderCrossCity>().eq("orderNum", orderNum)); + tOrderCrossCity.setResponsibilityType(responsibilityTypeVal); + tOrderCrossCity.setAbnormalStatus(2); + if(responsibilityTypeVal>3) { + tOrderCrossCity.setResponsibilityMoney(new BigDecimal(money)); + } + tOrderCrossCity.setAbnormalRemark(remark); + tOrderCrossCityService.updateById(tOrderCrossCity); + + } + if(type==3){ + TOrderTaxi tOrderTaxi = tOrderTaxiService.selectOne(new EntityWrapper<TOrderTaxi>().eq("orderNum", orderNum)); + tOrderTaxi.setResponsibilityType(responsibilityTypeVal); + tOrderTaxi.setAbnormalStatus(2); + if(responsibilityTypeVal>3) { + tOrderTaxi.setResponsibilityMoney(new BigDecimal(money)); + } + tOrderTaxi.setAbnormalRemark(remark); + tOrderTaxiService.updateById(tOrderTaxi); + } + return SUCCESS_TIP; + } + + + + /** + * 跳转添加快车订单 + * + * @return + */ + @RequestMapping("/tOrderPrivateCar_addOrder") + public String addOrderIndex(Model model) { + + /*获取车型*/ + Wrapper<TServerCarmodel> wrapper = new EntityWrapper<>(); + wrapper.eq("state", 1); + List<TServerCarmodel> models = serverCarmodelService.selectList(wrapper); + model.addAttribute("carModelList", models); + + return PREFIX + "tOrderPrivateCar_add.html"; + } + + + @RequestMapping("/add") + @ResponseBody + public Object add(TOrderPrivateCar privateCar) { + TUser user = userService.selectOne(new EntityWrapper<TUser>().eq("phone", privateCar.getPassengersPhone())); + if (ToolUtil.isNotEmpty(user)) {/// 用户是平台用户 + privateCar.setOrderNum("PRIVATE" + String.valueOf(1000000 + privateCar.selectList(null).size() + 1).substring(1)); + privateCar.setUserId(user.getId()); + privateCar.setState(1); + privateCar.setInsertTime(DateUtil.parseTime(DateUtil.getTime())); + privateCar.setOrderType(1); + privateCar.setType(1); + privateCar.setIsReassign(1); + privateCar.setReassignNotice(0); + privateCar.setSubstitute(0); + privateCar.setOrderSource(5); + privateCar.setPlacementAddress(ToolUtil.formatting(privateCar.getStartAddress())); + privateCar.setPlacementLat(privateCar.getStartLat()); + privateCar.setPlacementLon(privateCar.getStartLon()); + privateCar.setStartAddress(ToolUtil.formatting(privateCar.getStartAddress())); + privateCar.setEndAddress(ToolUtil.formatting(privateCar.getEndAddress())); + /// 判断是否为预约单 + long travelTime = privateCar.getTravelTime().getTime(); + long momengtTime = new Date().getTime(); + if ((travelTime - momengtTime) > 10 * 60 * 1000) { + privateCar.setOrderType(2); + } else { + privateCar.setOrderType(1); + } + tOrderPrivateCarService.insert(privateCar); + } else {/// 用户不是平台用户时 + TUser tUser = new TUser(); + tUser.setInsertTime(DateUtil.parseTime(DateUtil.getTime())); + tUser.setPhone(privateCar.getPassengersPhone()); + tUser.setName(privateCar.getPassengers()); + tUser.setNickName("PRIVATE" + String.valueOf(1000000 + userService.selectList(null).size() + 1).substring(1)); + userService.insert(tUser); + + /// 存入订单信息 + privateCar.setOrderNum("PRIVATE" + String.valueOf(1000000 + tOrderPrivateCarService.selectList(null).size() + 1).substring(1)); + privateCar.setUserId(tUser.getId()); + privateCar.setState(1); + privateCar.setInsertTime(DateUtil.parseTime(DateUtil.getTime())); + privateCar.setOrderType(1); + privateCar.setType(1); + privateCar.setIsReassign(1); + privateCar.setReassignNotice(0); + privateCar.setSubstitute(0); + privateCar.setOrderSource(5); + privateCar.setPlacementAddress(ToolUtil.formatting(privateCar.getStartAddress())); + privateCar.setPlacementLat(privateCar.getStartLat()); + privateCar.setPlacementLon(privateCar.getStartLon()); + privateCar.setStartAddress(ToolUtil.formatting(privateCar.getStartAddress())); + privateCar.setEndAddress(ToolUtil.formatting(privateCar.getEndAddress())); + + /// 判断是否为预约单 + long travelTime = privateCar.getTravelTime().getTime(); + long momengtTime = new Date().getTime(); + if ((travelTime - momengtTime) > 10 * 60 * 1000) { + privateCar.setOrderType(2); + } else { + privateCar.setOrderType(1); + } + tOrderPrivateCarService.insert(privateCar); + } + + //增加推送 + Map<String, String> map = new HashMap<>(); + map.put("orderId", privateCar.getId().toString()); + map.put("orderType", "1"); + String result = HttpRequestUtil.postRequest(PushURL.push_order, map); + System.out.println("添加订单推单调用结果:" + result); + return SUCCESS_TIP; + } +} diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderPayCarController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderPayCarController.java new file mode 100644 index 0000000..85f12bc --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TAbnormalOrderPayCarController.java @@ -0,0 +1,183 @@ +package com.stylefeng.guns.modular.system.controller.specialTrain; + +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.beetl.ShiroExtUtil; +import com.stylefeng.guns.core.common.constant.factory.PageFactory; +import com.stylefeng.guns.core.util.DateUtil; +import com.stylefeng.guns.core.util.SinataUtil; +import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.dao.OrderCancelMapper; +import com.stylefeng.guns.modular.system.model.*; +import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.util.*; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.*; + +/** + * 快车订单控制器 + * + * @author fengshuonan + * @Date 2020-09-02 17:28:59 + */ +@Controller +@RequestMapping("/abnormalPay") +public class TAbnormalOrderPayCarController extends BaseController { + + private String PREFIX = "/system/tAbnormalPayOrderCar/"; + + + @Autowired + private TAbnormalPayOrderService tAbnormalPayOrderService; + + @Autowired + private ShiroExtUtil shiroExtUtil; + + + /** + * 跳转到快车订单首页 + */ + @RequestMapping("") + public String index(Model model) { + return PREFIX + "tAbnormalOrder.html"; + } + + /** + * 获取快车订单列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String insertTime, + String orderNum, + String userName, + String userPhone, + String passengers, + String passengersPhone, + Integer abnormalStatus + ) { + 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(tAbnormalPayOrderService.list(beginTime,endTime,orderNum,userName,userPhone,passengers,passengersPhone,abnormalStatus,shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId())); + return super.packForBT(page); + } + + + @GetMapping("/export") + @ResponseBody + public void export(String insertTime, + String orderNum, + String userName, + String userPhone, + String passengers, + String passengersPhone, + Integer abnormalStatus, HttpServletRequest request, HttpServletResponse response) { + try { + String beginTime = null; + String endTime = null; + if (SinataUtil.isNotEmpty(insertTime)) { + String[] timeArray = insertTime.split(" - "); + beginTime = timeArray[0]; + endTime = timeArray[1]; + } + List<Map<String, Object>> list = tAbnormalPayOrderService.list(beginTime, endTime, orderNum, userName, userPhone, passengers, passengersPhone, abnormalStatus, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId()); + + // 表格数据【封装】 + List<List<String>> dataList = new ArrayList<>(); + + //第一行显示【封装】 + List<String> twoList = new ArrayList<String>(); + twoList.add("总计:"); + twoList.add(String.valueOf(list.size())+"条"); + dataList.add(twoList); + + // 列【封装】 + List<String> shellList = new ArrayList<String>(); + shellList.add("生成时间"); + shellList.add("关联订单号"); + shellList.add("支付金额"); + shellList.add("支付状态"); + shellList.add("支付时间"); + shellList.add("用户昵称"); + shellList.add("联系电话"); + dataList.add(shellList); + + for (Map<String,Object> object : list){ + // 详细数据列【封装】 + shellList = new ArrayList<String>(); + if(SinataUtil.isNotEmpty(object.get("insertTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("insertTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("orderNum"))){ + shellList.add(object.get("orderNum").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("payMoney"))){ + shellList.add(object.get("payMoney").toString()); + }else { + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("payStatus"))){ + shellList.add(object.get("payStatus").toString().equals("1")?"未支付":"已支付"); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("payTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("payTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("userName"))){ + shellList.add(object.get("userName").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("userPhone"))){ + shellList.add(object.get("userPhone").toString()); + }else{ + shellList.add("-"); + } + + dataList.add(shellList); + } + try { + // 调用工具类进行导出 + ExcelExportUtil.easySheet("追偿支付单导出记录"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "追偿支付单导出记录", dataList,request, response); + } catch (Exception e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java index c6bb2fa..f5fde46 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java @@ -7,6 +7,7 @@ import com.stylefeng.guns.core.beetl.ShiroExtUtil; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.shiro.ShiroUser; +import com.stylefeng.guns.core.util.DateUtil; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.controller.general.TDriverController; @@ -15,10 +16,7 @@ import com.stylefeng.guns.modular.system.dao.OrderCancelMapper; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; -import com.stylefeng.guns.modular.system.util.HttpRequestUtil; -import com.stylefeng.guns.modular.system.util.PayMoneyUtil; -import com.stylefeng.guns.modular.system.util.PushURL; -import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.system.util.*; import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -31,11 +29,10 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 跨城出行订单控制器 @@ -146,7 +143,10 @@ Integer serverCarModelId, String driver, Integer lineId, - Integer state) { + Integer state, + Integer abnormal, + Integer promotion, + String promotionUser) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ @@ -155,10 +155,276 @@ endTime = timeArray[1]; } Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); - page.setRecords(tOrderCrossCityService.getCrossCityOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state)); + page.setRecords(tOrderCrossCityService.getCrossCityOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state, abnormal, promotion, promotionUser,null)); return super.packForBT(page); } + + + @GetMapping("/export") + @ResponseBody + public void export(String insertTime, + 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, HttpServletRequest request, HttpServletResponse response) { + try { + String beginTime = null; + String endTime = null; + if (SinataUtil.isNotEmpty(insertTime)) { + String[] timeArray = insertTime.split(" - "); + beginTime = timeArray[0]; + endTime = timeArray[1]; + } + List<Map<String, Object>> list = tOrderCrossCityService.getCrossCityOrderListExport(null, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state, abnormal, promotion, promotionUser,null); + + // 表格数据【封装】 + List<List<String>> dataList = new ArrayList<>(); + + //第一行显示【封装】 + List<String> twoList = new ArrayList<String>(); + twoList.add("总计:"); + twoList.add(String.valueOf(list.size())+"条"); + dataList.add(twoList); + + // 列【封装】 + List<String> shellList = new ArrayList<String>(); + shellList.add("下单时间"); + shellList.add("订单编号"); + shellList.add("订单来源"); + shellList.add("乘车时间"); + shellList.add("下单用户昵称"); + shellList.add("下单用户手机"); + shellList.add("乘车用户姓名"); + shellList.add("乘车用户手机"); + shellList.add("起点"); + shellList.add("终点"); + shellList.add("线路名称"); + shellList.add("选择车型"); + shellList.add("接单司机"); + shellList.add("接单车辆"); + shellList.add("订单金额"); + shellList.add("状态"); + shellList.add("是否异常订单"); + shellList.add("是否推广订单"); + shellList.add("推广员姓名"); + shellList.add("推广员电话"); + dataList.add(shellList); + + for (Map<String,Object> object : list){ + // 详细数据列【封装】 + shellList = new ArrayList<String>(); + if(SinataUtil.isNotEmpty(object.get("insertTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("insertTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("orderNum"))){ + shellList.add(object.get("orderNum").toString()); + }else{ + shellList.add("-"); + } + + // 1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单 + if(SinataUtil.isNotEmpty(object.get("orderSource"))){ + switch (object.get("orderSource").toString()){ + case "1": + shellList.add("APP下单"); + break; + case "2": + shellList.add("扫码下单"); + break; + case "3": + shellList.add("小程序下单"); + break; + case "4": + shellList.add("司机下单"); + break; + case "5": + shellList.add("调度下单"); + break; + case "6": + shellList.add("道行龙城下单"); + break; + default: + shellList.add("-"); + break; + } + + } + + if(SinataUtil.isNotEmpty(object.get("travelTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("travelTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("userName"))){ + shellList.add(object.get("userName").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("userPhone"))){ + shellList.add(object.get("userPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("passengers"))){ + shellList.add(object.get("passengers").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("passengersPhone"))){ + shellList.add(object.get("passengersPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("contactPersonPhone"))){ + shellList.add(object.get("contactPersonPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("startAddress"))){ + shellList.add(object.get("startAddress").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("endAddress"))){ + shellList.add(object.get("endAddress").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("lineName"))){ + shellList.add(object.get("lineName").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("serverCarModelName"))){ + shellList.add(object.get("serverCarModelName").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("driver"))){ + shellList.add(object.get("driver").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("car"))){ + shellList.add(object.get("car").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("orderMoney"))){ + shellList.add(object.get("orderMoney").toString()); + }else{ + shellList.add("-"); + } + + // 1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付 + if(SinataUtil.isNotEmpty(object.get("state"))){ + switch (object.get("state").toString()){ + case "1": + shellList.add("待接单"); + break; + case "2": + shellList.add("待出发"); + break; + case "3": + shellList.add("待到达预约地点"); + break; + case "4": + shellList.add("待乘客上车"); + break; + case "5": + shellList.add("服务中"); + break; + case "6": + shellList.add("完成服务"); + break; + case "7": + shellList.add("待支付"); + break; + case "8": + shellList.add("待评价"); + break; + case "9": + shellList.add("已完成"); + break; + case "10": + shellList.add("已取消"); + break; + case "11": + shellList.add("改派中"); + break; + case "12": + shellList.add("取消待支付"); + break; + default: + shellList.add("-"); + break; + } + } + + + if(SinataUtil.isNotEmpty(object.get("abnormal"))){ + shellList.add(object.get("abnormal").toString().equals("1")?"否":"是"); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("promotion"))){ + shellList.add(object.get("promotion").toString().equals("1")?"否":"是"); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("promotionUser"))){ + shellList.add(object.get("promotionUser").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("promotionPhone"))){ + shellList.add(object.get("promotionPhone").toString()); + }else{ + shellList.add("-"); + } + + + dataList.add(shellList); + } + try { + // 调用工具类进行导出 + ExcelExportUtil.easySheet("订单导出记录"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "订单导出记录", dataList,request, response); + } catch (Exception e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Autowired private ITDriverService tDriverService; diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java index 6fc6664..63bf04a 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java @@ -12,10 +12,7 @@ import com.stylefeng.guns.modular.system.dao.OrderCancelMapper; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; -import com.stylefeng.guns.modular.system.util.HttpRequestUtil; -import com.stylefeng.guns.modular.system.util.PushMinistryOfTransportUtil; -import com.stylefeng.guns.modular.system.util.PushURL; -import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.system.util.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Sort; @@ -27,6 +24,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.*; /** @@ -127,7 +126,11 @@ Integer serverCarModelId, String driver, Integer state, - Integer rideType) { + Integer rideType, + Integer abnormal, + Integer promotion, + String promotionUser + ) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)) { @@ -137,10 +140,300 @@ } Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); page.setRecords(tOrderPrivateCarService.getPrivateCarOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), - orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state, rideType)); + orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state, rideType, abnormal, promotion, promotionUser,null)); return super.packForBT(page); } - + + + @GetMapping("/export") + @ResponseBody + public void export(String insertTime, + String orderNum, + Integer orderSource, + String userName, + String userPhone, + String passengers, + String passengersPhone, + Integer serverCarModelId, + String driver, + Integer state, + Integer rideType, + Integer abnormal, + Integer promotion, + String promotionUser, HttpServletRequest request, HttpServletResponse response) { + try { + String beginTime = null; + String endTime = null; + if (SinataUtil.isNotEmpty(insertTime)) { + String[] timeArray = insertTime.split(" - "); + beginTime = timeArray[0]; + endTime = timeArray[1]; + } + List<Map<String, Object>> list = tOrderPrivateCarService.getPrivateCarOrderListExport(null, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), + orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state, rideType, abnormal, promotion, promotionUser,null); + + // 表格数据【封装】 + List<List<String>> dataList = new ArrayList<>(); + + //第一行显示【封装】 + List<String> twoList = new ArrayList<String>(); + twoList.add("总计:"); + twoList.add(String.valueOf(list.size())+"条"); + dataList.add(twoList); + + // 列【封装】 + List<String> shellList = new ArrayList<String>(); + shellList.add("下单时间"); + shellList.add("订单编号"); + shellList.add("订单来源"); + shellList.add("订单类型"); + shellList.add("乘车时间"); + shellList.add("下单用户昵称"); + shellList.add("下单用户手机"); + shellList.add("乘车用户姓名"); + shellList.add("乘车用户手机"); + shellList.add("起点"); + shellList.add("终点"); + shellList.add("选择车型"); + shellList.add("接单司机"); + shellList.add("接单车辆"); + shellList.add("订单金额"); + shellList.add("状态"); + shellList.add("是否异常订单"); + shellList.add("是否推广订单"); + shellList.add("推广员姓名"); + shellList.add("推广员电话"); + dataList.add(shellList); + + for (Map<String,Object> object : list){ + // 详细数据列【封装】 + shellList = new ArrayList<String>(); + if(SinataUtil.isNotEmpty(object.get("insertTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("insertTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("orderNum"))){ + shellList.add(object.get("orderNum").toString()); + }else{ + shellList.add("-"); + } + + // 1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单 + if(SinataUtil.isNotEmpty(object.get("orderSource"))){ + switch (object.get("orderSource").toString()){ + case "1": + shellList.add("APP下单"); + break; + case "2": + shellList.add("扫码下单"); + break; + case "3": + shellList.add("小程序下单"); + break; + case "4": + shellList.add("司机下单"); + break; + case "5": + shellList.add("调度下单"); + break; + case "6": + shellList.add("道行龙城下单"); + break; + default: + shellList.add("-"); + break; + } + + } + if(SinataUtil.isNotEmpty(object.get("rideType"))){ + switch (object.get("rideType").toString()){ + case "1": + shellList.add("独享订单"); + break; + case "2": + shellList.add("一口价订单"); + break; + case "3": + shellList.add("拼车订单"); + break; + default: + shellList.add("-"); + break; + } + + } + + if(SinataUtil.isNotEmpty(object.get("travelTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("travelTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("userName"))){ + shellList.add(object.get("userName").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("userPhone"))){ + shellList.add(object.get("userPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("passengers"))){ + shellList.add(object.get("passengers").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("passengersPhone"))){ + shellList.add(object.get("passengersPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("contactPersonPhone"))){ + shellList.add(object.get("contactPersonPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("startAddress"))){ + shellList.add(object.get("startAddress").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("endAddress"))){ + shellList.add(object.get("endAddress").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("serverCarModelName"))){ + shellList.add(object.get("serverCarModelName").toString()); + }else{ + shellList.add("-"); + } + + + + if(SinataUtil.isNotEmpty(object.get("driver"))){ + shellList.add(object.get("driver").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("car"))){ + shellList.add(object.get("car").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("orderMoney"))){ + shellList.add(object.get("orderMoney").toString()); + }else{ + shellList.add("-"); + } + + // 1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付 + if(SinataUtil.isNotEmpty(object.get("state"))){ + switch (object.get("state").toString()){ + case "1": + shellList.add("待接单"); + break; + case "2": + shellList.add("待出发"); + break; + case "3": + shellList.add("待到达预约地点"); + break; + case "4": + shellList.add("待乘客上车"); + break; + case "5": + shellList.add("服务中"); + break; + case "6": + shellList.add("完成服务"); + break; + case "7": + shellList.add("待支付"); + break; + case "8": + shellList.add("待评价"); + break; + case "9": + shellList.add("已完成"); + break; + case "10": + shellList.add("已取消"); + break; + case "11": + shellList.add("改派中"); + break; + case "12": + shellList.add("取消待支付"); + break; + default: + shellList.add("-"); + break; + } + } + + + if(SinataUtil.isNotEmpty(object.get("abnormal"))){ + shellList.add(object.get("abnormal").toString().equals("1")?"否":"是"); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("promotion"))){ + shellList.add(object.get("promotion").toString().equals("1")?"否":"是"); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("promotionUser"))){ + shellList.add(object.get("promotionUser").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("promotionPhone"))){ + shellList.add(object.get("promotionPhone").toString()); + }else{ + shellList.add("-"); + } + + + dataList.add(shellList); + } + try { + // 调用工具类进行导出 + ExcelExportUtil.easySheet("订单导出记录"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "订单导出记录", dataList,request, response); + } catch (Exception e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + + + + + + + + + private ResultUtil resultUtil; /** diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java index c7d26e2..4cb9062 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java @@ -14,6 +14,7 @@ import com.stylefeng.guns.modular.system.model.TOrderTaxi; import com.stylefeng.guns.modular.system.model.TUser; import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.util.ExcelExportUtil; import com.stylefeng.guns.modular.system.util.HttpRequestUtil; import com.stylefeng.guns.modular.system.util.PushURL; import com.stylefeng.guns.modular.system.util.ResultUtil; @@ -28,6 +29,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.*; /** @@ -141,7 +144,10 @@ String passengers, String passengersPhone, String driver, - Integer state) { + Integer state, + Integer abnormal, + Integer promotion, + String promotionUser) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)) { @@ -150,10 +156,269 @@ endTime = timeArray[1]; } Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); - page.setRecords(tOrderTaxiService.getTaxiOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state)); + page.setRecords(tOrderTaxiService.getTaxiOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser,null)); return super.packForBT(page); } + + + @GetMapping("/export") + @ResponseBody + public void export(String insertTime, + String orderNum, + Integer orderSource, + String userName, + String userPhone, + String passengers, + String passengersPhone, + String driver, + Integer state, + Integer abnormal, + Integer promotion, + String promotionUser, HttpServletRequest request, HttpServletResponse response) { + try { + String beginTime = null; + String endTime = null; + if (SinataUtil.isNotEmpty(insertTime)) { + String[] timeArray = insertTime.split(" - "); + beginTime = timeArray[0]; + endTime = timeArray[1]; + } + + List<Map<String, Object>> list = tOrderTaxiService.getTaxiOrderListExport(null, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state, abnormal, promotion, promotionUser,null); + + // 表格数据【封装】 + List<List<String>> dataList = new ArrayList<>(); + + //第一行显示【封装】 + List<String> twoList = new ArrayList<String>(); + twoList.add("总计:"); + twoList.add(String.valueOf(list.size())+"条"); + dataList.add(twoList); + + // 列【封装】 + List<String> shellList = new ArrayList<String>(); + shellList.add("下单时间"); + shellList.add("订单编号"); + shellList.add("订单来源"); + shellList.add("乘车时间"); + shellList.add("下单用户昵称"); + shellList.add("下单用户手机"); + shellList.add("乘车用户姓名"); + shellList.add("乘车用户手机"); + shellList.add("联系人手机"); + shellList.add("起点"); + shellList.add("终点"); + shellList.add("接单司机"); + shellList.add("接单车辆"); + shellList.add("订单金额"); + shellList.add("状态"); + shellList.add("是否异常订单"); + shellList.add("是否推广订单"); + shellList.add("推广员姓名"); + shellList.add("推广员电话"); + dataList.add(shellList); + + for (Map<String,Object> object : list){ + // 详细数据列【封装】 + shellList = new ArrayList<String>(); + if(SinataUtil.isNotEmpty(object.get("insertTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("insertTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("orderNum"))){ + shellList.add(object.get("orderNum").toString()); + }else{ + shellList.add("-"); + } + + // 1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单 + if(SinataUtil.isNotEmpty(object.get("orderSource"))){ + switch (object.get("orderSource").toString()){ + case "1": + shellList.add("APP下单"); + break; + case "2": + shellList.add("扫码下单"); + break; + case "3": + shellList.add("小程序下单"); + break; + case "4": + shellList.add("司机下单"); + break; + case "5": + shellList.add("调度下单"); + break; + case "6": + shellList.add("道行龙城下单"); + break; + default: + shellList.add("-"); + break; + } + + } + + if(SinataUtil.isNotEmpty(object.get("travelTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("travelTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss")); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("userName"))){ + shellList.add(object.get("userName").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("userPhone"))){ + shellList.add(object.get("userPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("passengers"))){ + shellList.add(object.get("passengers").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("passengersPhone"))){ + shellList.add(object.get("passengersPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("contactPersonPhone"))){ + shellList.add(object.get("contactPersonPhone").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("startAddress"))){ + shellList.add(object.get("startAddress").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("endAddress"))){ + shellList.add(object.get("endAddress").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("driver"))){ + shellList.add(object.get("driver").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("car"))){ + shellList.add(object.get("car").toString()); + }else{ + shellList.add("-"); + } + + if(SinataUtil.isNotEmpty(object.get("orderMoney"))){ + shellList.add(object.get("orderMoney").toString()); + }else{ + shellList.add("-"); + } + + // 1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付 + if(SinataUtil.isNotEmpty(object.get("state"))){ + switch (object.get("state").toString()){ + case "1": + shellList.add("待接单"); + break; + case "2": + shellList.add("待出发"); + break; + case "3": + shellList.add("待到达预约地点"); + break; + case "4": + shellList.add("待乘客上车"); + break; + case "5": + shellList.add("服务中"); + break; + case "6": + shellList.add("完成服务"); + break; + case "7": + shellList.add("待支付"); + break; + case "8": + shellList.add("待评价"); + break; + case "9": + shellList.add("已完成"); + break; + case "10": + shellList.add("已取消"); + break; + case "11": + shellList.add("改派中"); + break; + case "12": + shellList.add("取消待支付"); + break; + default: + shellList.add("-"); + break; + } + } + + + if(SinataUtil.isNotEmpty(object.get("abnormal"))){ + shellList.add(object.get("abnormal").toString().equals("1")?"否":"是"); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("promotion"))){ + shellList.add(object.get("promotion").toString().equals("1")?"否":"是"); + }else{ + shellList.add("-"); + } + + + if(SinataUtil.isNotEmpty(object.get("promotionUser"))){ + shellList.add(object.get("promotionUser").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("promotionPhone"))){ + shellList.add(object.get("promotionPhone").toString()); + }else{ + shellList.add("-"); + } + + + dataList.add(shellList); + } + try { + // 调用工具类进行导出 + ExcelExportUtil.easySheet("订单导出记录"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "订单导出记录", dataList,request, response); + } catch (Exception e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + + + + + /** * 选择司机列表 */ diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TAbnormalPayOrderMapper.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TAbnormalPayOrderMapper.java new file mode 100644 index 0000000..109819f --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TAbnormalPayOrderMapper.java @@ -0,0 +1,23 @@ +package com.stylefeng.guns.modular.system.dao; + + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.stylefeng.guns.modular.system.model.TAbnormalPayOrder; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * <p> + * 追偿订单 Mapper 接口 + * </p> + * + * @author administrator + * @since 2025-07-21 + */ +public interface TAbnormalPayOrderMapper extends BaseMapper<TAbnormalPayOrder> { + + List<Map<String, Object>> list(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("orderNum") String orderNum, @Param("userName") String userName, @Param("userPhone") String userPhone, @Param("passengers") String passengers, @Param("passengersPhone") String passengersPhone, @Param("abnormalStatus") Integer abnormalStatus, @Param("roleType") Integer roleType, @Param("objectId") Integer objectId); + +} diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java index ab327bb..5a249f3 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java @@ -36,7 +36,30 @@ @Param("serverCarModelId") Integer serverCarModelId, @Param("driver") String driver, @Param("lineId") Integer lineId, - @Param("state") Integer state); + @Param("state") Integer state, + @Param("abnormal") Integer abnormal, + @Param("promotion") Integer promotion, + @Param("promotionUser") String promotionUser, + @Param("abnormalStatus") Integer abnormalStatus); + List<Map<String,Object>> getCrossCityOrderListExport( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("roleType") Integer roleType, + @Param("nowUserId") Integer nowUserId, + @Param("orderNum") String orderNum, + @Param("orderSource") Integer orderSource, + @Param("userName") String userName, + @Param("userPhone") String userPhone, + @Param("passengers") String passengers, + @Param("passengersPhone") String passengersPhone, + @Param("serverCarModelId") Integer serverCarModelId, + @Param("driver") String driver, + @Param("lineId") Integer lineId, + @Param("state") Integer state, + @Param("abnormal") Integer abnormal, + @Param("promotion") Integer promotion, + @Param("promotionUser") String promotionUser, + @Param("abnormalStatus") Integer abnormalStatus); /** * 根据跨城出行订单ID获取跨城出行订单详情 diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java index bcc1290..9d1908d 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java @@ -36,7 +36,30 @@ @Param("serverCarModelId") Integer serverCarModelId, @Param("driver") String driver, @Param("state") Integer state, - @Param("rideType") Integer rideType); + @Param("rideType") Integer rideType, + @Param("abnormal") Integer abnormal, + @Param("promotion") Integer promotion, + @Param("promotionUser") String promotionUser, + @Param("abnormalStatus") Integer abnormalStatus); + List<Map<String,Object>> getPrivateCarOrderListExport( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("roleType") Integer roleType, + @Param("nowUserId") Integer nowUserId, + @Param("orderNum") String orderNum, + @Param("orderSource") Integer orderSource, + @Param("userName") String userName, + @Param("userPhone") String userPhone, + @Param("passengers") String passengers, + @Param("passengersPhone") String passengersPhone, + @Param("serverCarModelId") Integer serverCarModelId, + @Param("driver") String driver, + @Param("state") Integer state, + @Param("rideType") Integer rideType, + @Param("abnormal") Integer abnormal, + @Param("promotion") Integer promotion, + @Param("promotionUser") String promotionUser, + @Param("abnormalStatus") Integer abnormalStatus); /** * 根据快车订单ID获取快车订单详情 diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java index 6ff48cd..1b09375 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTaxiMapper.java @@ -23,18 +23,39 @@ * @return */ List<Map<String,Object>> getTaxiOrderList(@Param("page") Page<Map<String, Object>> page, - @Param("beginTime") String beginTime, - @Param("endTime") String endTime, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, @Param("roleType") Integer roleType, @Param("nowUserId") Integer nowUserId, - @Param("orderNum") String orderNum, - @Param("orderSource") Integer orderSource, - @Param("userName") String userName, - @Param("userPhone") String userPhone, - @Param("passengers") String passengers, - @Param("passengersPhone") String passengersPhone, - @Param("driver") String driver, - @Param("state") Integer state); + @Param("orderNum") String orderNum, + @Param("orderSource") Integer orderSource, + @Param("userName") String userName, + @Param("userPhone") String userPhone, + @Param("passengers") String passengers, + @Param("passengersPhone") String passengersPhone, + @Param("driver") String driver, + @Param("state") Integer state, + @Param("abnormal") Integer abnormal, + @Param("promotion") Integer promotion, + @Param("promotionUser") String promotionUser, + @Param("abnormalStatus") Integer abnormalStatus); + List<Map<String,Object>> getTaxiOrderListExport( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("roleType") Integer roleType, + @Param("nowUserId") Integer nowUserId, + @Param("orderNum") String orderNum, + @Param("orderSource") Integer orderSource, + @Param("userName") String userName, + @Param("userPhone") String userPhone, + @Param("passengers") String passengers, + @Param("passengersPhone") String passengersPhone, + @Param("driver") String driver, + @Param("state") Integer state, + @Param("abnormal") Integer abnormal, + @Param("promotion") Integer promotion, + @Param("promotionUser") String promotionUser, + @Param("abnormalStatus") Integer abnormalStatus); /** * 根据出租车订单ID获取出租车订单详情 diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RoleMapper.xml b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RoleMapper.xml index b514734..14aa1cb 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RoleMapper.xml +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/RoleMapper.xml @@ -20,7 +20,7 @@ <select id="selectRoles" resultType="map"> select rr.*,(SELECT COUNT(id) from sys_user where FIND_IN_SET(rr.id,roleid)) as userCount from sys_role as rr where 1 = 1 - <if test="condition != null"> + <if test="condition != null and condition !=''"> and rr.name like CONCAT('%',#{condition},'%') </if> <if test="null != objectId"> diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TAbnormalPayOrderMapper.xml b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TAbnormalPayOrderMapper.xml new file mode 100644 index 0000000..132fdf1 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TAbnormalPayOrderMapper.xml @@ -0,0 +1,39 @@ +<?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.TAbnormalPayOrderMapper"> + + + <select id="list" resultType="java.util.Map"> + select o.id,o.createTime, o.orderNum, t2.nickName userName, t2.phone userPhone, o.passengers, o.passengersPhone, o.payStatus, o.payTime, o.payMoney, o.insertTime, o.companyId + from t_abnormal_pay_order o left join t_user t2 on o.userId = t2.id + where 1=1 + <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="orderNum != null and orderNum != ''"> + and o.orderNum LIKE CONCAT('%',#{orderNum},'%') + </if> + <if test="userName != null and userName != ''"> + and t2.nickName LIKE CONCAT('%',#{userName},'%') + </if> + <if test="userPhone != null and userPhone != ''"> + and t2.phone LIKE CONCAT('%',#{userPhone},'%') + </if> + <if test="passengers != null and passengers != ''"> + and o.passengers LIKE CONCAT('%',#{passengers},'%') + </if> + <if test="passengersPhone != null and passengersPhone != ''"> + and o.passengersPhone LIKE CONCAT('%',#{passengersPhone},'%') + </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> + <if test="null != abnormalStatus"> + and o.payStatus = #{abnormalStatus} + </if> + </select> + +</mapper> diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml index 5b182e3..3176efc 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml @@ -69,7 +69,73 @@ <sql id="Base_Column_List"> id, userId, driverId, lineId, carId, serverCarModelId, orderNum, placementLon, placementLat, placementAddress, startLon, startLat, endLon, startAddress, endLat, endAddress, boardingLon, boardingLat, boardingAddress, boardingTime, getoffLon, getoffLat, getoffAddress, getoffTime, mileage, payManner, payType, orderMoney, redPacketMoney, couponMoney, redPacketId, couponId, discount, discountMoney, activityId, companyId, payMoney, passengers, passengersPhone, sort, insertTime, travelTime, snatchOrderTime, setOutTime, arriveTime, startServiceTime, endServiceTime, travelMode, orderSource, invoiceId, trackId, state, isDelete, telX, bindId </sql> - + <select id="getCrossCityOrderListExport" resultType="java.util.Map"> + SELECT * FROM ( + SELECT ui.nickName as userName,ui.phone as userPhone,CONCAT(di.`name`,'-',di.phone) as driver,CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, + sc.`name` as serverCarModel,ll.`name` as lineName,ot.* FROM t_order_cross_city as ot + LEFT JOIN t_user as ui on ui.id = ot.userId + LEFT JOIN t_driver as di on di.id = ot.driverId + LEFT JOIN t_car as ci on ci.id= ot.carId + LEFT JOIN t_car_brand as cb on cb.id = ci.carBrandId + LEFT JOIN t_server_carmodel as sc on sc.id = ot.serverCarModelId + LEFT JOIN t_line as ll on ll.id = ot.lineId + ) as o + <where> + o.isDelete = 1 + <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="orderNum != null and orderNum != ''"> + and o.orderNum LIKE CONCAT('%',#{orderNum},'%') + </if> + <if test="orderSource != null and orderSource != ''"> + and o.orderSource = #{orderSource} + </if> + <if test="userName != null and userName != ''"> + and o.userName LIKE CONCAT('%',#{userName},'%') + </if> + <if test="userPhone != null and userPhone != ''"> + and o.userPhone LIKE CONCAT('%',#{userPhone},'%') + </if> + <if test="passengers != null and passengers != ''"> + and o.passengers LIKE CONCAT('%',#{passengers},'%') + </if> + <if test="passengersPhone != null and passengersPhone != ''"> + and o.passengersPhone LIKE CONCAT('%',#{passengersPhone},'%') + </if> + <if test="serverCarModelId != null and serverCarModelId != ''"> + and o.serverCarModelId = #{serverCarModelId} + </if> + <if test="driver != null and driver != ''"> + and o.driver LIKE CONCAT('%',#{driver},'%') + </if> + <if test="lineId != null and lineId != ''"> + and o.lineId = #{lineId} + </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> + <if test="null != abnormal"> + and o.abnormal = #{abnormal} + </if> + <if test="null != promotion"> + and o.promotion = #{promotion} + </if> + <if test="null != promotionUser and promotionUser!='' "> + and o.promotionUser =#{promotionUser} + </if> + <if test="null != abnormalStatus"> + and o.abnormalStatus = #{abnormalStatus} + </if> + </where> + order by o.id desc + </select> <!--根据条件查询跨城出行订单列表--> <select id="getCrossCityOrderList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> SELECT * FROM ( @@ -123,6 +189,18 @@ <if test="roleType != null and roleType != '' and roleType == 3"> and o.companyId = #{nowUserId} </if> + <if test="null != abnormal"> + and o.abnormal = #{abnormal} + </if> + <if test="null != promotion"> + and o.promotion = #{promotion} + </if> + <if test="null != promotionUser and promotionUser!='' "> + and o.promotionUser =#{promotionUser} + </if> + <if test="null != abnormalStatus"> + and o.abnormalStatus = #{abnormalStatus} + </if> </where> order by o.id desc </select> @@ -142,7 +220,9 @@ ui.nickName as userName,ui.phone as userPhone, case when ot.payType = 1 then '微信' when ot.payType = 2 then '支付宝' - when ot.payType = 3 then '余额' else '云闪付' end as payTypeStr, + when ot.payType = 3 then '余额' + when ot.payType = 4 then '云闪付' + else '预备金' end as payTypeStr, sc.`name` as serverCarModel, CONCAT(di.`name`,'-',di.phone) as driver, CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, @@ -237,4 +317,5 @@ </foreach> </if> </select> + </mapper> diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml index 7b0b63f..f0b5ae9 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml @@ -80,7 +80,71 @@ <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> - + <select id="getPrivateCarOrderListExport" resultType="java.util.Map"> + SELECT * FROM (SELECT ui.nickName as userName,ui.phone as userPhone,CONCAT(di.`name`,'-',di.phone) as driver,CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, + sc.`name` as serverCarModelName,ot.* FROM t_order_private_car as ot + LEFT JOIN t_user as ui on ui.id = ot.userId + LEFT JOIN t_driver as di on di.id = ot.driverId + LEFT JOIN t_car as ci on ci.id= ot.carId + LEFT JOIN t_car_brand as cb on cb.id = ci.carBrandId + LEFT JOIN t_server_carmodel as sc on sc.id = ot.serverCarModelId + ) as o + <where> + o.isDelete = 1 + <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="orderNum != null and orderNum != ''"> + and o.orderNum LIKE CONCAT('%',#{orderNum},'%') + </if> + <if test="orderSource != null and orderSource != ''"> + and o.orderSource = #{orderSource} + </if> + <if test="userName != null and userName != ''"> + and o.userName LIKE CONCAT('%',#{userName},'%') + </if> + <if test="userPhone != null and userPhone != ''"> + and o.userPhone LIKE CONCAT('%',#{userPhone},'%') + </if> + <if test="passengers != null and passengers != ''"> + and o.passengers LIKE CONCAT('%',#{passengers},'%') + </if> + <if test="passengersPhone != null and passengersPhone != ''"> + and o.passengersPhone LIKE CONCAT('%',#{passengersPhone},'%') + </if> + <if test="serverCarModelId != null and serverCarModelId != ''"> + and o.serverCarModelId = #{serverCarModelId} + </if> + <if test="driver != null and driver != ''"> + and o.driver LIKE CONCAT('%',#{driver},'%') + </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> + <if test="null != rideType"> + and o.rideType = #{rideType} + </if> + <if test="null != abnormal"> + and o.abnormal = #{abnormal} + </if> + <if test="null != promotion"> + and o.promotion = #{promotion} + </if> + <if test="null != promotionUser and promotionUser!='' "> + and o.promotionUser =#{promotionUser} + </if> + <if test="null != abnormalStatus"> + and o.abnormalStatus = #{abnormalStatus} + </if> + </where> + order by o.id desc + </select> <!--根据条件查询快车订单列表--> <select id="getPrivateCarOrderList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> SELECT * FROM (SELECT ui.nickName as userName,ui.phone as userPhone,CONCAT(di.`name`,'-',di.phone) as driver,CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, @@ -132,6 +196,18 @@ <if test="null != rideType"> and o.rideType = #{rideType} </if> + <if test="null != abnormal"> + and o.abnormal = #{abnormal} + </if> + <if test="null != promotion"> + and o.promotion = #{promotion} + </if> + <if test="null != promotionUser and promotionUser!='' "> + and o.promotionUser =#{promotionUser} + </if> + <if test="null != abnormalStatus"> + and o.abnormalStatus = #{abnormalStatus} + </if> </where> order by o.id desc </select> @@ -151,7 +227,9 @@ ui.nickName as userName,ui.phone as userPhone, case when ot.payType = 1 then '微信' when ot.payType = 2 then '支付宝' - when ot.payType = 3 then '余额' else '云闪付' end as payTypeStr, + when ot.payType = 3 then '余额' + when ot.payType = 4 then '云闪付' + else '预备金' end as payTypeStr, sc.`name` as serverCarModel, case when income1.type = 1 then income1.money else 0 end as platIncome, case when income1.type = 2 then income1.money else 0 end as companyIncome, @@ -180,4 +258,5 @@ UNION ALL SELECT IFNULL(amount,0) amount,b.`name` FROM t_order_additional_fee a LEFT JOIN t_additional_fee b ON a.additionalFeeId=b.id WHERE a.orderId=#{id} AND a.orderType=#{orderType} AND a.id>1 AND amount>0 </select> + </mapper> diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml index f5b36f8..32b7886 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTaxiMapper.xml @@ -61,7 +61,64 @@ <sql id="Base_Column_List"> id, 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, travelMoney, parkMoney, roadTollMoney, tipMoney, redPacketMoney, couponMoney, redPacketId, couponId, companyId, payMoney, substitute, passengers, passengersPhone, state, insertTime, travelTime, snatchOrderTime, setOutTime, arriveTime, startServiceTime, endServiceTime, orderType, orderSource, invoiceId, isReassign </sql> + <select id="getTaxiOrderListExport" resultType="java.util.Map"> + SELECT * FROM (SELECT ui.nickName as userName,ui.phone as userPhone,CONCAT(di.`name`,'-',di.phone) as driver,CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, + ot.* FROM t_order_taxi as ot + LEFT JOIN t_user as ui on ui.id = ot.userId + LEFT JOIN t_driver as di on di.id = ot.driverId + LEFT JOIN t_car as ci on ci.id= ot.carId + LEFT JOIN t_car_brand as cb on cb.id = ci.carBrandId) as o + <where> + o.isDelete = 1 and o.type = 1 + <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="orderNum != null and orderNum != ''"> + and o.orderNum LIKE CONCAT('%',#{orderNum},'%') + </if> + <if test="orderSource != null and orderSource != ''"> + and o.orderSource = #{orderSource} + </if> + <if test="userName != null and userName != ''"> + and o.userName LIKE CONCAT('%',#{userName},'%') + </if> + <if test="userPhone != null and userPhone != ''"> + and o.userPhone LIKE CONCAT('%',#{userPhone},'%') + </if> + <if test="passengers != null and passengers != ''"> + and o.passengers LIKE CONCAT('%',#{passengers},'%') + </if> + <if test="passengersPhone != null and passengersPhone != ''"> + and o.passengersPhone LIKE CONCAT('%',#{passengersPhone},'%') + </if> + <if test="driver != null and driver != ''"> + and o.driver LIKE CONCAT('%',#{driver},'%') + </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> + <if test="null != abnormal"> + and o.abnormal = #{abnormal} + </if> + <if test="null != promotion"> + and o.promotion = #{promotion} + </if> + <if test="null != promotionUser and promotionUser!='' "> + and o.promotionUser =#{promotionUser} + </if> + <if test="null != abnormalStatus"> + and o.abnormalStatus = #{abnormalStatus} + </if> + </where> + order by o.id desc + </select> <!--根据条件查询出租车订单列表--> <select id="getTaxiOrderList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> SELECT * FROM (SELECT ui.nickName as userName,ui.phone as userPhone,CONCAT(di.`name`,'-',di.phone) as driver,CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, @@ -105,6 +162,19 @@ <if test="roleType != null and roleType != '' and roleType == 3"> and o.companyId = #{nowUserId} </if> + + <if test="null != abnormal"> + and o.abnormal = #{abnormal} + </if> + <if test="null != promotion"> + and o.promotion = #{promotion} + </if> + <if test="null != promotionUser and promotionUser!='' "> + and o.promotionUser =#{promotionUser} + </if> + <if test="null != abnormalStatus"> + and o.abnormalStatus = #{abnormalStatus} + </if> </where> order by o.id desc </select> @@ -127,7 +197,7 @@ when ot.payType = 2 then '支付宝' when ot.payType = 3 then '余额' when ot.payType = 4 then '云闪付' - else '' end as payTypeStr, + else '预备金' end as payTypeStr, CONCAT(di.`name`,'-',di.phone) as driver, CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, cc.`name` as companyName,ot.* @@ -1135,4 +1205,5 @@ </if> ) as aa where aa.thankYouFee != 0 order by aa.insertTime desc </select> + </mapper> diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAbnormalPayOrder.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAbnormalPayOrder.java new file mode 100644 index 0000000..8f76ca3 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAbnormalPayOrder.java @@ -0,0 +1,82 @@ +package com.stylefeng.guns.modular.system.model; + +import com.baomidou.mybatisplus.enums.IdType; +import java.math.BigDecimal; +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.Version; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * <p> + * 追偿订单 + * </p> + * + * @author administrator + * @since 2025-07-21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_abnormal_pay_order") +public class TAbnormalPayOrder extends Model<TAbnormalPayOrder> { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 1快车 2跨城 3出租车 4顺风车 + */ + private Integer type; + /** + * 订单号 + */ + private String orderNum; + private Date createTime; + /** + * 下单人id + */ + private Integer userId; + /** + * 1未支付 2已支付 + */ + private Integer payStatus; + /** + * 支付时间 + */ + private Date payTime; + /** + * 支付金额 + */ + private BigDecimal payMoney; + /** + * 乘车人 + */ + private String passengers; + /** + * 乘车人手机 + */ + private String passengersPhone; + private Date insertTime; + /** + * 公司id + */ + private Integer companyId; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java index 63a9feb..f4e1444 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java @@ -298,6 +298,47 @@ private String billNo; + + private Integer abnormalStatus; + + private Integer responsibilityType; + + private BigDecimal responsibilityMoney; + + private String abnormalRemark; + + public Integer getAbnormalStatus() { + return abnormalStatus; + } + + public void setAbnormalStatus(Integer abnormalStatus) { + this.abnormalStatus = abnormalStatus; + } + + public String getAbnormalRemark() { + return abnormalRemark; + } + + public void setAbnormalRemark(String abnormalRemark) { + this.abnormalRemark = abnormalRemark; + } + + public BigDecimal getResponsibilityMoney() { + return responsibilityMoney; + } + + public void setResponsibilityMoney(BigDecimal responsibilityMoney) { + this.responsibilityMoney = responsibilityMoney; + } + + public Integer getResponsibilityType() { + return responsibilityType; + } + + public void setResponsibilityType(Integer responsibilityType) { + this.responsibilityType = responsibilityType; + } + public String getBillNo() { return billNo; } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java index 97194c2..018d71a 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java @@ -336,6 +336,46 @@ private String bindId; + private Integer abnormalStatus; + + private Integer responsibilityType; + + private BigDecimal responsibilityMoney; + + private String abnormalRemark; + + public Integer getAbnormalStatus() { + return abnormalStatus; + } + + public void setAbnormalStatus(Integer abnormalStatus) { + this.abnormalStatus = abnormalStatus; + } + + public Integer getResponsibilityType() { + return responsibilityType; + } + + public void setResponsibilityType(Integer responsibilityType) { + this.responsibilityType = responsibilityType; + } + + public BigDecimal getResponsibilityMoney() { + return responsibilityMoney; + } + + public void setResponsibilityMoney(BigDecimal responsibilityMoney) { + this.responsibilityMoney = responsibilityMoney; + } + + public String getAbnormalRemark() { + return abnormalRemark; + } + + public void setAbnormalRemark(String abnormalRemark) { + this.abnormalRemark = abnormalRemark; + } + public Integer getId() { return id; } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java index 5ed74e6..d9648b9 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java @@ -304,6 +304,46 @@ private String bindId; + private Integer abnormalStatus; + + private Integer responsibilityType; + + private BigDecimal responsibilityMoney; + + public Integer getAbnormalStatus() { + return abnormalStatus; + } + + public void setAbnormalStatus(Integer abnormalStatus) { + this.abnormalStatus = abnormalStatus; + } + + public Integer getResponsibilityType() { + return responsibilityType; + } + + public void setResponsibilityType(Integer responsibilityType) { + this.responsibilityType = responsibilityType; + } + + public BigDecimal getResponsibilityMoney() { + return responsibilityMoney; + } + + public void setResponsibilityMoney(BigDecimal responsibilityMoney) { + this.responsibilityMoney = responsibilityMoney; + } + + public String getAbnormalRemark() { + return abnormalRemark; + } + + public void setAbnormalRemark(String abnormalRemark) { + this.abnormalRemark = abnormalRemark; + } + + private String abnormalRemark; + public Integer getId() { return id; } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java index 668551f..c1c7129 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java @@ -36,7 +36,30 @@ @Param("serverCarModelId") Integer serverCarModelId, @Param("driver") String driver, @Param("lineId") Integer lineId, - @Param("state") Integer state); + @Param("state") Integer state, + Integer abnormal, + Integer promotion, + String promotionUser, + Integer abnormalStatus); + List<Map<String,Object>> getCrossCityOrderListExport(@Param("page") Page<Map<String, Object>> page, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("roleType") Integer roleType, + @Param("nowUserId") Integer nowUserId, + @Param("orderNum") String orderNum, + @Param("orderSource") Integer orderSource, + @Param("userName") String userName, + @Param("userPhone") String userPhone, + @Param("passengers") String passengers, + @Param("passengersPhone") String passengersPhone, + @Param("serverCarModelId") Integer serverCarModelId, + @Param("driver") String driver, + @Param("lineId") Integer lineId, + @Param("state") Integer state, + Integer abnormal, + Integer promotion, + String promotionUser, + Integer abnormalStatus); /** * 根据跨城出行订单ID获取跨城出行订单详情 diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java index 7477f5f..19f3cc3 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java @@ -36,7 +36,30 @@ @Param("serverCarModelId") Integer serverCarModelId, @Param("driver") String driver, @Param("state") Integer state, - @Param("rideType") Integer rideType); + @Param("rideType") Integer rideType, + Integer abnormal, + Integer promotion, + String promotionUser, + Integer abnormalStatus); + List<Map<String,Object>> getPrivateCarOrderListExport(@Param("page") Page<Map<String, Object>> page, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("roleType") Integer roleType, + @Param("nowUserId") Integer nowUserId, + @Param("orderNum") String orderNum, + @Param("orderSource") Integer orderSource, + @Param("userName") String userName, + @Param("userPhone") String userPhone, + @Param("passengers") String passengers, + @Param("passengersPhone") String passengersPhone, + @Param("serverCarModelId") Integer serverCarModelId, + @Param("driver") String driver, + @Param("state") Integer state, + @Param("rideType") Integer rideType, + Integer abnormal, + Integer promotion, + String promotionUser, + Integer abnormalStatus); /** * 根据快车订单ID获取快车订单详情 diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java index ac0eed8..1abd81a 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTaxiService.java @@ -36,7 +36,29 @@ @Param("passengers") String passengers, @Param("passengersPhone") String passengersPhone, @Param("driver") String driver, - @Param("state") Integer state); + @Param("state") Integer state, + Integer abnormal, + Integer promotion, + String promotionUser, + Integer abnormalStatus); + + List<Map<String,Object>> getTaxiOrderListExport(@Param("page") Page<Map<String, Object>> page, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("roleType") Integer roleType, + @Param("nowUserId") Integer nowUserId, + @Param("orderNum") String orderNum, + @Param("orderSource") Integer orderSource, + @Param("userName") String userName, + @Param("userPhone") String userPhone, + @Param("passengers") String passengers, + @Param("passengersPhone") String passengersPhone, + @Param("driver") String driver, + @Param("state") Integer state, + Integer abnormal, + Integer promotion, + String promotionUser, + Integer abnormalStatus); /** * 根据出租车订单ID获取出租车订单详情 diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TAbnormalPayOrderService.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TAbnormalPayOrderService.java new file mode 100644 index 0000000..bc625f0 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TAbnormalPayOrderService.java @@ -0,0 +1,24 @@ +package com.stylefeng.guns.modular.system.service; + + +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.TAbnormalPayOrder; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import java.util.List; +import java.util.Map; + +/** + * <p> + * 追偿订单 服务类 + * </p> + * + * @author administrator + * @since 2025-07-21 + */ +public interface TAbnormalPayOrderService extends IService<TAbnormalPayOrder> { + + List<Map<String, Object>> list(String beginTime, String endTime, String orderNum, String userName, String userPhone, String passengers, String passengersPhone, Integer abnormalStatus, Integer roleType, Integer objectId); + + +} diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAbnormalPayOrderServiceImpl.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAbnormalPayOrderServiceImpl.java new file mode 100644 index 0000000..cf2b6d5 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAbnormalPayOrderServiceImpl.java @@ -0,0 +1,35 @@ +package com.stylefeng.guns.modular.system.service.impl; + + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.TAbnormalPayOrderMapper; +import com.stylefeng.guns.modular.system.model.TAbnormalPayOrder; +import com.stylefeng.guns.modular.system.service.TAbnormalPayOrderService; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 追偿订单 服务实现类 + * </p> + * + * @author administrator + * @since 2025-07-21 + */ +@Service +public class TAbnormalPayOrderServiceImpl extends ServiceImpl<TAbnormalPayOrderMapper, TAbnormalPayOrder> implements TAbnormalPayOrderService { + + @Override + public List<Map<String, Object>> list(String beginTime, String endTime, String orderNum, String userName, String userPhone, String passengers, String passengersPhone, Integer abnormalStatus, Integer roleType, Integer objectId) { + + return this.baseMapper.list(beginTime,endTime,orderNum,userName,userPhone,passengers,passengersPhone,abnormalStatus,roleType,objectId); + } + +} diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java index 248b9bb..8e6a715 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java @@ -27,8 +27,18 @@ private TOrderCrossCityMapper orderCrossCityMapper; @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) { - return this.baseMapper.getCrossCityOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state); + 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); + } + @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); } @Override diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java index 12d3306..2db46d2 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java @@ -36,8 +36,36 @@ @Override public List<Map<String, Object>> getPrivateCarOrderList(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 state, Integer rideType) { - List<Map<String, Object>> privateCarOrderList = this.baseMapper.getPrivateCarOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state, rideType); + String userPhone, String passengers, String passengersPhone, Integer serverCarModelId, String driver, Integer state, Integer rideType, Integer abnormal, + Integer promotion, + String promotionUser, + Integer abnormalStatus) { + List<Map<String, Object>> privateCarOrderList = this.baseMapper.getPrivateCarOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state, rideType, abnormal, promotion, promotionUser,abnormalStatus); + for (Map<String, Object> map : privateCarOrderList) { + if(null == map.get("serverCarModelName")){ + JSONArray jsonArray = JSON.parseArray(map.get("serverCarModel").toString()); + Set<Integer> ids = new HashSet<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + ids.add(jsonObject.getInteger("serverCarModelId")); + } + List<TServerCarmodel> serverCarmodels = serverCarmodelService.selectBatchIds(ids); + String collect = serverCarmodels.stream().map(TServerCarmodel::getName).collect(Collectors.joining("<br/>")); + if(ids.contains(0)){ + collect += ToolUtil.isNotEmpty(collect) ? "<br/>出租车" : "出租车"; + } + map.put("serverCarModelName", collect); + } + } + return privateCarOrderList; + } + @Override + public List<Map<String, Object>> getPrivateCarOrderListExport(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 state, Integer rideType, Integer abnormal, + Integer promotion, + String promotionUser, + Integer abnormalStatus) { + List<Map<String, Object>> privateCarOrderList = this.baseMapper.getPrivateCarOrderListExport(beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state, rideType, abnormal, promotion, promotionUser,abnormalStatus); for (Map<String, Object> map : privateCarOrderList) { if(null == map.get("serverCarModelName")){ JSONArray jsonArray = JSON.parseArray(map.get("serverCarModel").toString()); diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java index 98a6e69..a7cbce9 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTaxiServiceImpl.java @@ -55,11 +55,20 @@ @Override - 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) { - return this.baseMapper.getTaxiOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state); + 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); } @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); + } + + @Override public Map<String, Object> getTaxiOrderDetailById(Integer orderId) { return this.baseMapper.getTaxiOrderDetailById(orderId); } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/CellType.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/CellType.java new file mode 100644 index 0000000..7e094bd --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/CellType.java @@ -0,0 +1,45 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package com.stylefeng.guns.modular.system.util; + + +public enum CellType { + _NONE(-1), + NUMERIC(0), + STRING(1), + FORMULA(2), + BLANK(3), + BOOLEAN(4), + ERROR(5); + + /** @deprecated */ + private final int code; + + /** @deprecated */ + private CellType(int code) { + this.code = code; + } + + /** @deprecated */ + public static CellType forInt(int code) { + CellType[] var1 = values(); + int var2 = var1.length; + + for(int var3 = 0; var3 < var2; ++var3) { + CellType type = var1[var3]; + if (type.code == code) { + return type; + } + } + + throw new IllegalArgumentException("Invalid CellType code: " + code); + } + + /** @deprecated */ + public int getCode() { + return this.code; + } +} diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ExcelUtil.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ExcelUtil.java new file mode 100644 index 0000000..9dc809e --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ExcelUtil.java @@ -0,0 +1,351 @@ +//package com.stylefeng.guns.modular.system.util; +// +//import org.apache.poi.hssf.usermodel.*; +//import org.apache.poi.ss.usermodel.*; +//import org.apache.poi.ss.usermodel.DateUtil; +//import org.apache.poi.xssf.usermodel.XSSFWorkbook; +//import org.springframework.stereotype.Component; +//import org.springframework.web.multipart.MultipartFile; +// +//import java.io.IOException; +//import java.io.InputStream; +//import java.util.ArrayList; +//import java.util.Date; +//import java.util.List; +// +///** +// * 定义Excel工具类 +// */ +//@Component +//public class ExcelUtil { +// +// +// public List<List<List<String>>> upload(String s,MultipartFile file){ +// InputStream inputStream = null; +// try { +// inputStream = file.getInputStream(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// //获取文件名 +// String fileName=s; +// List<List<List<String>>> list = null; +// if(validateExcel(fileName)) { +// // 根据版本选择创建Workbook的方式 +// Workbook wb = null; +// // 根据文件名判断文件是2003版本还是2007版本 +// if (isExcel2007(fileName)) { +// try { +// wb = new XSSFWorkbook(inputStream); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } else { +// try { +// wb = new HSSFWorkbook(inputStream); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// int num = wb.getNumberOfSheets();//获取页数 +// list = new ArrayList<>(); +// for (int i = 0; i < num; i++) { +// List<List<String>> sheetList = new ArrayList<>(); +// //获取每一页对象 +// Sheet sheet = wb.getSheetAt(i); +// // 得到Excel的行数 +// int totalRows = sheet.getPhysicalNumberOfRows(); +// for (int j = 0; j < totalRows; j++) { +// if (j == 0) { +// continue;// 标题行 +// } +// Row row = sheet.getRow(j);// 获取索引为i的行数据 +// if(null == row){ +// continue; +// } +// int index = sheet.getRow(0).getPhysicalNumberOfCells();//获取标题的列数用于遍历 +// List<String> strings = new ArrayList<>(); +// int in = 0;//用于遍历单元格判断该行是否全为空值 +// for (int k = 0; k < index; k++) {//遍历获取每个单元格的数据 +// String str = null; +// Cell cell = row.getCell(k); +// if(cell == null) { +// str = ""; +// in++; +// }else { +// switch (cell.getCellType()) {//判断数据类型取值 +// case NUMERIC : +// if (DateUtil.isCellDateFormatted(cell)) { +// Date theDate = cell.getDateCellValue(); +// str = String.valueOf(theDate.getTime()); +// }else{ +// String string = String.valueOf(cell.getNumericCellValue()); +// str = string.substring(0, string.indexOf(".")); +// } +// +// break; +// case STRING : +// str = cell.getStringCellValue(); +// if(str == null) { +// str = ""; +// in++; +// } +// break; +// case _NONE : +// System.err.println("_NONE"); +// break; +// case FORMULA : +// System.err.println("FORMULA"); +// break; +// case BLANK : +// str = cell.getStringCellValue(); +// if(str.equals("")) { +// str = ""; +// in++; +// } +// break; +// case BOOLEAN : +// System.err.println("BOOLEAN"); +// break; +// case ERROR : +// System.err.println("ERROR"); +// break; +// default: +// break; +// } +// } +// strings.add(String.valueOf(str).trim()); +// } +// +// if(in != index) {//判断如果每个单元格都为null则不需要添加到集合中 +// sheetList.add(strings); +// } +// } +// list.add(sheetList); +// } +// +// +// } +// +// return list; +// } +// +// public List<List<List<String>>> upload(MultipartFile file){ +// InputStream inputStream = null; +// try { +// inputStream = file.getInputStream(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// //获取文件名 +// String fileName=file.getOriginalFilename(); +// List<List<List<String>>> list = null; +// if(validateExcel(fileName)) { +// // 根据版本选择创建Workbook的方式 +// Workbook wb = null; +// // 根据文件名判断文件是2003版本还是2007版本 +// if (isExcel2007(fileName)) { +// try { +// wb = new XSSFWorkbook(inputStream); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } else { +// try { +// wb = new HSSFWorkbook(inputStream); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// int num = wb.getNumberOfSheets();//获取页数 +// list = new ArrayList<>(); +// for (int i = 0; i < num; i++) { +// List<List<String>> sheetList = new ArrayList<>(); +// //获取每一页对象 +// Sheet sheet = wb.getSheetAt(i); +// // 得到Excel的行数 +// int totalRows = sheet.getPhysicalNumberOfRows(); +// for (int j = 0; j < totalRows; j++) { +// if (j == 0) { +// continue;// 标题行 +// } +// Row row = sheet.getRow(j);// 获取索引为i的行数据 +// if(null == row){ +// continue; +// } +// int index = sheet.getRow(0).getPhysicalNumberOfCells();//获取标题的列数用于遍历 +// List<String> strings = new ArrayList<>(); +// int in = 0;//用于遍历单元格判断该行是否全为空值 +// for (int k = 0; k < index; k++) {//遍历获取每个单元格的数据 +// String str = null; +// Cell cell = row.getCell(k); +// if(cell == null) { +// str = ""; +// in++; +// }else { +// switch (cell.getCellType()) {//判断数据类型取值 +// case NUMERIC : +// if (DateUtil.isCellDateFormatted(cell)) { +// Date theDate = cell.getDateCellValue(); +// str = String.valueOf(theDate.getTime()); +// }else{ +// String string = String.valueOf(cell.getNumericCellValue()); +// str = string.substring(0, string.indexOf(".")); +// } +// +// break; +// case STRING : +// str = cell.getStringCellValue(); +// if(str == null) { +// str = ""; +// in++; +// } +// break; +// case _NONE : +// System.err.println("_NONE"); +// break; +// case FORMULA : +// System.err.println("FORMULA"); +// break; +// case BLANK : +// str = cell.getStringCellValue(); +// if(str.equals("")) { +// str = ""; +// in++; +// } +// break; +// case BOOLEAN : +// System.err.println("BOOLEAN"); +// break; +// case ERROR : +// System.err.println("ERROR"); +// break; +// default: +// break; +// } +// } +// strings.add(String.valueOf(str).trim()); +// } +// +// if(in != index) {//判断如果每个单元格都为null则不需要添加到集合中 +// sheetList.add(strings); +// } +// } +// list.add(sheetList); +// } +// +// +// } +// +// return list; +// } +// +// +// +// // @描述:是否是2003的excel,返回true是2003 +// public static boolean isExcel2003(String filePath) { +// return filePath.matches("^.+\\.(?i)(xls)$"); +// } +// +// +// //@描述:是否是2007的excel,返回true是2007 +// public static boolean isExcel2007(String filePath) { +// return filePath.matches("^.+\\.(?i)(xlsx)$"); +// } +// +// +// /** +// * 验证EXCEL文件 +// * @param filePath +// * @return +// */ +// public static boolean validateExcel(String filePath){ +// if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))){ +// return false; +// } +// return true; +// } +// +// +// /** +// * 将数据写入Excel中 +// * @param titles 标题 +// * @param datas 数据 +// * @return +// */ +// public HSSFWorkbook writeDataToExcel(List<List<String>> titles, List<List<List<String>>> datas) { +// HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); +// +// for(int i = 0; i < titles.size(); i++){ +// HSSFSheet hssfSheet = hssfWorkbook.createSheet(); +// hssfSheet.setColumnWidth(0, 6 * 256); +// hssfSheet.setDefaultRowHeightInPoints(20f); +// +// HSSFRow hssfRow = hssfSheet.createRow(0);//设置第一行数据(标题) +// HSSFCellStyle style = hssfWorkbook.createCellStyle(); +// HSSFFont font = hssfWorkbook.createFont(); +// font.setBold(true); +// style.setFont(font); +// style.setAlignment(HorizontalAlignment.CENTER); +// for (int l = 0; l < titles.get(i).size(); l++) { +// HSSFCell hssfCell = hssfRow.createCell(l); +// hssfCell.setCellType(CellType.STRING);//设置表格类型 +// hssfCell.setCellValue(titles.get(i).get(l)); +// hssfCell.setCellStyle(style); +// hssfSheet.setColumnWidth(l , 20 * 256); +// } +// +// //将数据添加到表格中 +// List<String> data = null; +// for (int l = 0; l < datas.get(i).size(); l++) { +// hssfRow = hssfSheet.createRow(l + 1); +// data = datas.get(i).get(l); +// for (int j = 0; j < data.size(); j++) { +// HSSFCell hssfCell = hssfRow.createCell(j); +// hssfCell.setCellType(CellType.STRING);//设置表格类型 +// hssfCell.setCellValue(data.get(j)); +// } +// } +// } +// return hssfWorkbook; +// } +// +// public static HSSFWorkbook getHSSFWorkbook(String sheetName, String[] title, String[][] values, HSSFWorkbook wb) { +// // 第一步,创建一个webbook,对应一个Excel文件 +// if (wb == null) { +// wb = new HSSFWorkbook(); +// } +// // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet +// HSSFSheet sheet = wb.createSheet(sheetName); +// // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short +// HSSFRow row = sheet.createRow(0); +// // 第四步,创建单元格,并设置值表头 设置表头居中 +// HSSFCellStyle style = wb.createCellStyle(); +// style.setLocked(true); +// style.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式 +// +// HSSFCell cell = null; +// // 创建标题 +// for (int i = 0; i < title.length; i++) { +// cell = row.createCell(i); +// cell.setCellValue(title[i]); +// cell.setCellStyle(style); +// } +// // 创建内容 +// for (int i = 0; i < values.length; i++) { +// row = sheet.createRow(i + 1); +// for (int j = 0; j < values[i].length; j++) { +// cell = row.createCell(j); +// cell.setCellValue(values[i][j]); +// cell.setCellStyle(style); +// } +// } +// +// return wb; +// } +// +//} diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder.html new file mode 100644 index 0000000..c0d35ad --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder.html @@ -0,0 +1,90 @@ +@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="orderNum" name="订单编号" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="orderSource" name="订单来源" > + <option value="">全部</option> + <option value="1">APP下单</option> + <option value="2">扫码下单</option> + <option value="3">小程序下单</option> + <option value="4">司机下单</option> + <option value="5">调度下单</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#NameCon id="userName" name="下单用户昵称" /> + </div> + <div class="col-sm-3"> + <#NameCon id="userPhone" name="下单用户手机" /> + </div> + <div class="col-sm-3"> + <#NameCon id="passengers" name="乘车用户姓名" /> + </div> + <div class="col-sm-3"> + <#NameCon id="passengersPhone" name="乘车用户手机" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="serverCarModelId" name="车型" > + <option value="">全部</option> + @for(obj in carmodelList){ + <option value="${obj.id}">${obj.name}</option> + @} + </#SelectCon> + </div> + <div class="col-sm-3"> + <#NameCon id="driver" name="接单司机" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="abnormalStatus" name="处理状态" > + <option value="">全部</option> + <option value="1">待处理</option> + <option value="2">已处理</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#SelectCon id="type" name="订单类型" > + <option value="1" selected>快车</option> + <option value="2">跨城</option> + <option value="3">出租车</option> + </#SelectCon> + </div> + + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="TAbnormalOrder.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TAbnormalOrder.resetSearch()" space="true"/> + </div> + </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="导出Excel" icon="" clickFun="TAbnormalOrder.exportExcel()" space="true"/> + </div> + <#table id="TOrderPrivateCarTable"/> + </div> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/static/modular/system/tAbnormalOrderCar/tAbnormalOrder.js"></script> +<script> + laydate.render({ + elem: '#insertTime' + ,range: true + }); +</script> +@} diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder_orderDetail.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder_orderDetail.html new file mode 100644 index 0000000..2b0fc21 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tAbnormalOrder_orderDetail.html @@ -0,0 +1,421 @@ +@layout("/common/_container.html"){ +<!DOCTYPE html> + +<html lang="zh-CN"> + +<head> + <meta charset="UTF-8"> + <title>处理异常订单</title> + <style> + body { + background: #888; + margin: 0; + padding: 0; + } + + .container { + background: #fff; + margin: 20px auto; + padding: 20px 30px; + border-radius: 10px; + max-width: 98vw; + min-width: 1200px; + } + + .title { + font-size: 20px; + font-weight: bold; + margin-bottom: 20px; + } + + .order-table { + width: 100%; + border-collapse: collapse; + margin-bottom: 30px; + } + + .order-table th, + .order-table td { + border: 1px solid #e0e0e0; + padding: 8px 6px; + text-align: center; + font-size: 13px; + } + + .order-table th { + background: #f8f8f8; + font-weight: 600; + } + + .section-title { + font-size: 16px; + font-weight: bold; + margin: 30px 0 10px 0; + } + + .desc-row { + margin-bottom: 10px; + } + + .desc-label { + font-weight: bold; + margin-right: 10px; + } + + .img-list { + display: flex; + gap: 20px; + margin: 10px 0 20px 0; + } + + .img-list img { + width: 120px; + height: 80px; + object-fit: cover; + border-radius: 6px; + border: 1px solid #ccc; + } + + .order-link { + color: #1976d2; + text-decoration: underline; + cursor: pointer; + } + + input[type="radio"] { + accent-color: #1976d2; + width: 18px; + height: 18px; + vertical-align: middle; + margin-right: 4px; +} + +.radio-group label { + margin-right: 18px; + font-size: 15px; + cursor: pointer; +} +#duty-selector { + display: flex; + margin-bottom: 18px; + border: 1px solid #ccc; + border-radius: 4px; + overflow: hidden; + width: fit-content; +} + + + +.duty-btn { + flex: 1 1 0; + padding: 12px 32px; + border: none; + background: #fff; + color: #222; + font-size: 16px; + cursor: pointer; + outline: none; + border-right: 1px solid #ccc; + transition: background 0.2s, color 0.2s; + height: 62px; + line-height: 24px; +} + +.duty-btn:last-child { + border-right: none; +} + +.duty-btn.active { + background: #1976d2; + color: #fff; + font-weight: bold; +} + .action-btn { + min-width: 140px; + height: 48px; + background: #1976d2; + color: #fff; + border: none; + border-radius: 5px; + font-size: 16px; + font-weight: bold; + margin-right: 18px; + cursor: pointer; + transition: background 0.2s, box-shadow 0.2s; + box-shadow: 0 2px 6px rgba(25, 118, 210, 0.08); + } + .action-btn:last-child { + margin-right: 0; + } + .action-btn:hover { + background: #1565c0; + } + #action-btns { + margin-top: 32px; + display: flex; + align-items: center; + } + </style> +</head> + +<body> + <input type="hidden" id="orderNum" name ="orderNum" value="${item.orderNum}"/> + <input type="hidden" id="type" name ="type" value="${type}"/> + <div class="ibox float-e-margins"> + <div class="title">处理异常订单</div> + <div class="section-title">订单信息</div> + <table class="order-table"> + <thead> + <tr> + <th>下单时间</th> + <th>订单编号</th> + <th>订单来源</th> + <th>乘车时间</th> + <th>下单用户昵称</th> + <th>下单用户手机</th> + <th>乘车用户姓名</th> + <th>乘车用户手机</th> + <th>起点</th> + <th>终点</th> + <th>选择车型</th> + <th>接单司机</th> + <th>接单车辆</th> + <th>订单金额</th> + <th>状态</th> + <th>操作</th> + </tr> + </thead> + <tbody> + <tr> + <td>${item.insertTimeStr}</td> + <td>${item.orderNum}</td> + <td>${item.orderSource}</td> + <td>${item.travelTimeStr}</td> + <td>${item.userName}</td> + <td>${item.userPhone}</td> + <td>${item.passengers}</td> + <td>${item.passengersPhone}</td> + <td>${item.boardingAddress}</td> + <td>${item.getoffAddress}</td> + <td>${item.serverCarModel}</td> + <td>${item.driver}</td> + <td>${item.car}</td> + <td>${item.orderMoney}</td> + <!-- 1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付--> + <td> + @if(item.state==1) { + 待接单 + @}else if(item.state==2){ + 待出发 + @}else if(item.state==3){ + 待到达预约地点 + @}else if(item.state==4){ + 待乘客上车 + @}else if(item.state==5){ + 服务中 + @}else if(item.state==6){ + 完成服务 + @}else if(item.state==7){ + 待支付 + @}else if(item.state==8){ + 待评价 + @}else if(item.state==9){ + 已完成 + @}else if(item.state==10){ + 已取消 + @}else if(item.state==11){ + 改派中 + @}else if(item.state==12){ + 取消待支付 + @}else{ + 未知 + @} + </td> + <td><a class="order-link" href="#">查看订单详情</a></td> + </tr> + </tbody> + </table> + + <div class="section-title">乘客反馈情况</div> + <div class="desc-row"> + <span class="desc-label"> ${item.abnormalIntro}</span> + + </div> + <div class="img-list"> + <!-- 逗号拼接的图片 --> + @for(item in abnormalImg) { + <img src="${item}" alt="图片" /> + @} + </div> + <!-- 你可以根据实际图片地址替换上面src --> + + <!-- 其他内容可根据实际需求继续补充 --> + <div class="section-title">选择责任方</div> + <div id="duty-selector"> + <button type="button" class="duty-btn active" data-type="platformAll">平台全责</button> + <button type="button" class="duty-btn" data-type="driverAll">司机全责</button> + <button type="button" class="duty-btn" data-type="passengerAll">乘客全责</button> + <button type="button" class="duty-btn" data-type="platformPart">平台部分责任</button> + <button type="button" class="duty-btn" data-type="driverPart">司机部分责任</button> + </div> + + <div id="duty-content" style="margin-top:20px;"> + <!-- 内容区域,JS填充 --> + </div> + + <!-- 处理备注区域 --> + <div class="section-title" style="margin-top:32px;">处理备注</div> + <textarea name="handleRemark" rows="4" style="width:90%;max-width:900px;min-width:300px;padding:10px;font-size:15px;border:1px solid #ccc;border-radius:4px;resize:vertical;"></textarea> + + <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> +</body> + + +<script> + const dutyContent = document.getElementById('duty-content'); + const btns = document.querySelectorAll('.duty-btn'); + const responsibilityType = '${item.responsibilityType}'; + const orderNum = '${item.orderNum}'; + const isReadonly = responsibilityType && responsibilityType !== 'null' && responsibilityType !== ''; + const typeMap = {1:'platformAll',2:'driverAll',3:'passengerAll',4:'platformPart',5:'driverPart'}; + const reverseTypeMap = {'platformAll':1,'driverAll':2,'passengerAll':3,'platformPart':4,'driverPart':5}; + + function renderContent(type, readonly) { + let html = ''; + if (type === 'platformAll') { + html = ` + <div> + <div class="radio-group">超时是否启用备用金支付: + <label><input type="radio" name="ybj" checked disabled>是</label> + <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> + </div> + </div> + `; + } else if (type === 'driverAll') { + html = ` + <div style="margin-top:10px;">修改订单金额为: 0</div> + `; + } else if (type === 'passengerAll') { + html = ` + <div>超时是否启用备用金支付: + <label><input type="radio" name="ybj" checked disabled>是</label> + <label><input type="radio" name="ybj" disabled>否</label> + </div> + <div>超时是否生成追偿支付单: + <label><input type="radio" name="zcpay" checked disabled>是</label> + <label><input type="radio" name="zcpay" disabled>否</label> + </div> + `; + } else if (type === 'platformPart' || type === 'driverPart') { + html = ` + <div>超时是否启用备用金支付: + <label><input type="radio" name="ybj" checked disabled>是</label> + <label><input type="radio" name="ybj" disabled>否</label> + </div> + <div>超时是否生成追偿支付单: + <label><input type="radio" name="zcpay" checked disabled>是</label> + <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}"> 元 + </div> + `; + } + dutyContent.innerHTML = html; + } + + function setReadonlyMode() { + btns.forEach(btn => { + btn.classList.remove('active'); + btn.disabled = true; + if (btn.dataset.type === typeMap[responsibilityType]) { + btn.classList.add('active'); + } + }); + renderContent(typeMap[responsibilityType], true); + document.querySelector('textarea[name=handleRemark]').disabled = true; + document.getElementById('saveBtn').style.display = 'none'; + document.getElementById('closeBtn').style.display = ''; + } + + function setEditMode() { + btns.forEach(btn => btn.disabled = false); + btns.forEach(btn => btn.classList.remove('active')); + btns[0].classList.add('active'); + renderContent('platformAll', false); + document.querySelector('textarea[name=handleRemark]').disabled = false; + document.getElementById('saveBtn').style.display = ''; + document.getElementById('closeBtn').style.display = 'none'; + } + + window.onload = function() { + if (isReadonly) { + setReadonlyMode(); + } else { + setEditMode(); + } + }; + + btns.forEach(btn => { + btn.onclick = function () { + if (isReadonly) return; + btns.forEach(b => b.classList.remove('active')); + btn.classList.add('active'); + renderContent(btn.dataset.type, false); + } + }); + + function save() { + + let selectedBtn = document.querySelector('.duty-btn.active'); + let responsibilityTypeVal = reverseTypeMap[selectedBtn.dataset.type]; + let remark = document.querySelector('textarea[name=handleRemark]').value; + // 取money + let money = $("#money").val(); + let type = document.querySelector('input[name=type]').value; + let orderNum = document.querySelector('input[name=orderNum]').value; + + console.log(type,orderNum) + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/abnormal/save", function(data){ + Feng.success("操作成功!"); + },function(data){ + Feng.error("操作失败!"); + }); + ajax.set("responsibilityTypeVal",responsibilityTypeVal); + ajax.set("remark",remark); + ajax.set("money",money); + ajax.set("type",type); + ajax.set("orderNum",orderNum); + ajax.start(); + + }; + + document.getElementById('closeBtn').onclick = function() { + // 尝试关闭当前窗口或弹窗 + 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(); + } + }; +</script> + +</html> + +@} \ No newline at end of file diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tOrderPrivateCar_add.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tOrderPrivateCar_add.html new file mode 100644 index 0000000..e4d7b56 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tOrderPrivateCar_add.html @@ -0,0 +1,487 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + <input type="hidden" id="html" value="2"> + <input type="hidden" id="type" value="2"> + + <div class="row"> + <div class="form-group"> + <label class="control-label col-sm-2">起点:</label> + <div class="col-sm-3"> + <input class="form-control" id="startAddress" autocomplete="off" onclick="TOrderPrivateCarInfoDlg.startAddress()"> + <input type="hidden" id="startLon"> + <input type="hidden" id="startLat"> + </div> + </div> + <div class="form-group" id="startAddressModel" hidden> + <label class="control-label col-sm-2"></label> + <div class="col-sm-6" style="margin-left: 15px;height: 500px" id="startAddressBody"> + + </div> + </div> + <div class="form-group"> + <label class="control-label col-sm-2">终点:</label> + <div class="col-sm-3"> + <input class="form-control" id="endAddress" autocomplete="off" onclick="TOrderPrivateCarInfoDlg.endAddress()"> + <input type="hidden" id="endLon"> + <input type="hidden" id="endLat"> + </div> + </div> + <div class="form-group" id="endAddressModel" hidden> + <label class="control-label col-sm-2"></label> + <div class="col-sm-6" style="margin-left: 15px;height: 500px" id="endAddressBody"> + + </div> + </div> + <div class="form-group"> + <label class="control-label col-sm-2">用车时间:</label> + <div class="col-sm-3"> + <input class="form-control" autocomplete="off" id="travelTime"> + </div> + </div> + <div class="form-group"> + <label class="control-label col-sm-2">乘车人姓名:</label> + <div class="col-sm-3"> + <input class="form-control" id="passengers"> + </div> + </div> + <div class="form-group"> + <label class="control-label col-sm-2">乘车人手机号:</label> + <div class="col-sm-3"> + <input class="form-control" id="passengersPhone"> + </div> + </div> + + + <div class="form-group"> + <label class="control-label col-sm-2">车型:</label> + <div class="col-sm-3"> + <select class="form-control " id="serverCarModelId"> + @for(carModel in carModelList){ + <option value="${carModel.id}">${carModel.name}</option> + @} + </select> + </div> + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-10"> + <#button btnCss="info" name="保存" id="ensure" icon="fa-check" + clickFun="TOrderPrivateCarInfoDlg.addSubmit()"/> + </div> + </div> + </div> + + </div> +</div> + +<script src="${ctxPath}/static/modular/system/tOrderPrivateCar/tOrderPrivateCar_info.js"></script> +<script type="text/javascript"> + window._AMapSecurityConfig = { + securityJsCode: '44c5ee9ad584605d91ca69bfac32c761', + } +</script> +<script type="text/javascript" + src="https://webapi.amap.com/maps?v=1.4.10&key=d3bde6afb050067e1a765a8d1d1f4c54&plugin=AMap.Autocomplete,AMap.PlaceSearch"></script> +<script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script> + +<script> + laydate.render({ + elem: '#travelTime' + , type: 'datetime' + ,trigger: 'click' //采用click弹出 + , min: new Date().toString() + }); +</script> + +<script type="text/javascript"> + //起点地图加载 + var marker, map = new AMap.Map("startAddressBody", { + resizeEnable: true, + zoom: 15, + zooms: [3, 20] + }); //定位标注当前位置 + map.plugin('AMap.Geolocation', function () { + geolocation = new AMap.Geolocation({ + enableHighAccuracy: true, //是否使用高精度定位,默认:true + timeout: 10000, //超过10秒后停止定位,默认:无穷大 + maximumAge: 0, //定位结果缓存0毫秒,默认:0 + convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true + showButton: true, //显示定位按钮,默认:true + showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true + showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true + panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true + buttonPosition: 'LB', //定位按钮的停靠位置 LB左下角、 RB右下角 + buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20) + zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false + }); + map.addControl(geolocation); + geolocation.getCurrentPosition(); + AMap.event.addListener(geolocation, 'complete', onComplete); + //返回定位信息 + AMap.event.addListener(geolocation, 'error', onError); + //返回定位出错信息 + }); //解析定位结果 + var city; + + + map.on('click', function (e) { + if (marker != null) { + marker.setMap(null); + } + //添加标记点 + $("#startLon").val(e.lnglat.getLng()); + $("#startLat").val(e.lnglat.getLat()); + marker = new AMap.Marker({ + map: map, + position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat()), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] + }); + regeoCode(e.lnglat.getLng(),e.lnglat.getLat()); + }); + + + var infoWindow = new AMap.InfoWindow({ + autoMove: true, + offset: { + x: 0, + y: -30 + } + }); //回调函数 + + + //根据经纬度获取详细地址 + function regeoCode(lon,lat) { + + var lnglat = []; + lnglat.push(lon); + lnglat.push(lat); + map.add(marker); + marker.setPosition(lnglat); + + AMap.service('AMap.Geocoder', function() { + geocoder = new AMap.Geocoder({}); + geocoder.getAddress(lnglat, function (status, result) { + if (status === 'complete' && result.regeocode) { + var address = result.regeocode.formattedAddress; + $("#startAddress").val(address); + } else { + Feng.error('根据经纬度查询地址失败【' + result + '】') + return + } + var data={ + "name":result.regeocode.addressComponent.neighborhood, + "location":{ + "lat":lat, + "lng":lon + }, + "address":address, + "tel":"", + "type":result.regeocode.addressComponent.neighborhoodType + }; + infoWindow.setContent(createContent(data)); + infoWindow.open(map, marker.getPosition()); + }); + }) + } + + + + function onComplete(data) { + var str = []; + city = data.addressComponent.citycode; + str.push('定位结果:' + data.position); + str.push('定位类别:' + data.location_type); + if (data.accuracy) { + str.push('精度:' + data.accuracy + ' 米'); + } + //如为IP精确定位结果则没有精度信息 + str.push('是否经过偏移:' + (data.isConverted ? '是' : '否')); + var lnglatXY = [data.position.getLng(), data.position.getLat()]; + //地图上所标点的坐标 + AMap.service('AMap.Geocoder', function () { + //回调函数 + geocoder = new AMap.Geocoder({}); + geocoder.getAddress(lnglatXY, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + //获得了有效的地址信息: //即,result.regeocode.formattedAddress +// console.log(result.regeocode.formattedAddress); + var address = result.regeocode.formattedAddress; + str.push('详细地址:' + address); + // todo 不弹出信息框 + // alert(str.join(' | ')); + } else { + // alert(str.join(' | ')); //获取地址失败 + } + }); + }) + } //解析定位错误信息 + function onError(data) { + alert('定位失败,原因:' + data.message); + } + + //输入搜索点信息 + var autoOptions = { + city: city, //在规定城市搜索、默认全国 + input: "startAddress" + }; + + var auto = new AMap.Autocomplete(autoOptions); + var placeSearch = new AMap.PlaceSearch({ + pageSize: 5, // 单页显示结果条数 + pageIndex: 1, // 页码 + children: 0, //不展示子节点数据 + city: city, // 兴趣点城市 + citylimit: true, //是否强制限制在设置的城市内搜索 + panel: "panel", // 结果列表将在此容器中进行展示。 + autoFitView: true, // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围 + extensions: 'base', //返回基本地址信息 */ + map: map // 展现结果的地图实例 + }); //构造地点查询类 + + AMap.event.addListener(auto, "select", select); //注册监听,当选中某条记录时会触发 + function select(e) { + placeSearch.setCity(e.poi.adcode); + placeSearch.search(e.poi.name); //关键字查询查询 //设置搜索位置定点标注 + if (e.poi && e.poi.location) { + map.setZoom(15); + map.setCenter(e.poi.location); + var id = e.poi.id; //详情查询 + placeSearch.getDetails(id, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + placeSearch_CallBack(result); + } + }); + } + } + + function placeSearch_CallBack(data) { + if (marker != null) { + marker.setMap(null); + } + var poiArr = data.poiList.pois; //添加marker + marker = new AMap.Marker({ + map: map, + position: poiArr[0].location + }); + + map.add(marker); + marker.setPosition(marker.getPosition()); + + infoWindow.setContent(createContent(poiArr[0])); + infoWindow.open(map, marker.getPosition()); + } + + function createContent(poi) { + console.log(poi); + //信息窗体内容 + $("#startAddress").val(poi.address); + $("#startLon").val(poi.location.lng); + $("#startLat").val(poi.location.lat); + $("#areaCode").val(poi.adcode); + + var s = []; + s.push("<b>名称:" + poi.name + "</b>"); + s.push("地址:" + poi.address); + s.push("电话:" + poi.tel); + s.push("类型:" + poi.type); + return s.join("<br>"); + } +</script> + +<script> + //终点地图加载 + var marker1, mapp = new AMap.Map("endAddressBody", { + resizeEnable: true, + zoom: 15, + zooms: [3, 20] + }); //定位标注当前位置 + mapp.plugin('AMap.Geolocation', function () { + geolocation = new AMap.Geolocation({ + enableHighAccuracy: true, //是否使用高精度定位,默认:true + timeout: 10000, //超过10秒后停止定位,默认:无穷大 + maximumAge: 0, //定位结果缓存0毫秒,默认:0 + convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true + showButton: true, //显示定位按钮,默认:true + showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true + showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true + panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true + buttonPosition: 'LB', //定位按钮的停靠位置 LB左下角、 RB右下角 + buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20) + zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false + }); + mapp.addControl(geolocation); + geolocation.getCurrentPosition(); + AMap.event.addListener(geolocation, 'complete', onComplete); + //返回定位信息 + AMap.event.addListener(geolocation, 'error', onError); + //返回定位出错信息 + }); //解析定位结果 + var cityy; + + mapp.on('click', function (e) { + if (marker1 != null) { + marker1.setMap(null); + } + //添加标记点 + $("#startLon").val(e.lnglat.getLng()); + $("#startLat").val(e.lnglat.getLat()); + marker1 = new AMap.Marker({ + map: mapp, + position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat()), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] + }); + regeoCode1(e.lnglat.getLng(),e.lnglat.getLat()); + }); + + + var infoWindow = new AMap.InfoWindow({ + autoMove: true, + offset: { + x: 0, + y: -30 + } + }); //回调函数 + + + //根据经纬度获取详细地址 + function regeoCode1(lon,lat) { + + var lnglat = []; + lnglat.push(lon); + lnglat.push(lat); + mapp.add(marker1); + marker1.setPosition(lnglat); + + AMap.service('AMap.Geocoder', function() { + geocoder = new AMap.Geocoder({}); + geocoder.getAddress(lnglat, function (status, result) { + if (status === 'complete' && result.regeocode) { + var address = result.regeocode.formattedAddress; + $("#endAddress").val(address); + } else { + Feng.error('根据经纬度查询地址失败【' + result + '】') + return + } + var data={ + "name":result.regeocode.addressComponent.neighborhood, + "location":{ + "lat":lat, + "lng":lon + }, + "address":address, + "tel":"", + "type":result.regeocode.addressComponent.neighborhoodType + }; + + infoWindow.setContent(createContentt(data)); + infoWindow.open(mapp, marker1.getPosition()); + }); + }) + } + + + + + + function onComplete(data) { + var str = []; + cityy = data.addressComponent.citycode; + str.push('定位结果:' + data.position); + str.push('定位类别:' + data.location_type); + if (data.accuracy) { + str.push('精度:' + data.accuracy + ' 米'); + } + //如为IP精确定位结果则没有精度信息 + str.push('是否经过偏移:' + (data.isConverted ? '是' : '否')); + var lnglatXY = [data.position.getLng(), data.position.getLat()]; + //地图上所标点的坐标 + AMap.service('AMap.Geocoder', function () { + //回调函数 + geocoder = new AMap.Geocoder({}); + geocoder.getAddress(lnglatXY, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + //获得了有效的地址信息: //即,result.regeocode.formattedAddress + // console.log(result.regeocode.formattedAddress); + var address = result.regeocode.formattedAddress; + str.push('详细地址:' + address); +// todo 不弹出信息框 +// alert(str.join(' | ')); + } else { +// alert(str.join(' | ')); //获取地址失败 + } + }); + }) + } //解析定位错误信息 + function onError(data) { + alert('定位失败,原因:' + data.message); + } + + //输入搜索点信息 + var autoOptionss = { + city: cityy, //在规定城市搜索、默认全国 + input: "endAddress" + }; + var autoo = new AMap.Autocomplete(autoOptionss); + var placeSearchh = new AMap.PlaceSearch({ + pageSize: 5, // 单页显示结果条数 + pageIndex: 1, // 页码 + children: 0, //不展示子节点数据 + city: city, // 兴趣点城市 + citylimit: true, //是否强制限制在设置的城市内搜索 + panel: "panel", // 结果列表将在此容器中进行展示。 + autoFitView: true, // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围 + extensions: 'base', //返回基本地址信息 */ + map: mapp // 展现结果的地图实例 + }); //构造地点查询类 + AMap.event.addListener(autoo, "select", selectt); //注册监听,当选中某条记录时会触发 + + function selectt(e) { + placeSearchh.setCity(e.poi.adcode); + placeSearchh.search(e.poi.name); //关键字查询查询 //设置搜索位置定点标注 + if (e.poi && e.poi.location) { + mapp.setZoom(15); + mapp.setCenter(e.poi.location); + var id = e.poi.id; //详情查询 + placeSearchh.getDetails(id, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + placeSearch_CallBackk(result); + } + }); + } + } + + function placeSearch_CallBackk(data) { + if (marker1 != null) { + marker1.setMap(null); + } + var poiArr = data.poiList.pois; //添加marker + marker1 = new AMap.Marker({ + map: mapp, + position: poiArr[0].location + }); + + mapp.add(marker1); + marker1.setPosition(marker1.getPosition()); + + infoWindow.setContent(createContentt(poiArr[0])); + infoWindow.open(mapp, marker1.getPosition()); + } + + function createContentt(poi) { + console.log(poi); + //信息窗体内容 + $("#endAddress").val(poi.address); + $("#endLon").val(poi.location.lng); + $("#endLat").val(poi.location.lat); + $("#areaCode").val(poi.adcode); + + var ss = []; + ss.push("<b>名称:" + poi.name + "</b>"); + ss.push("地址:" + poi.address); + ss.push("电话:" + poi.tel); + ss.push("类型:" + poi.type); + return ss.join("<br>"); + } +</script> +@} diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tOrderPrivateCar_trajectory.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tOrderPrivateCar_trajectory.html new file mode 100644 index 0000000..a2465eb --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalOrderCar/tOrderPrivateCar_trajectory.html @@ -0,0 +1,57 @@ +@layout("/common/_container.html"){ +<style type="text/css"> + html, body, #container { + height: 100%; + width: 100%; + } + + .input-card .btn{ + margin-right: 1.2rem; + width: 9rem; + } + + .input-card .btn:last-child{ + margin-right: 0; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + <input type="hidden" id="id" name="id" value="${tOrderPrivateCarId}"> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-4"> + <h2 class="h3Class" style="font-weight: 700;">线路轨迹</h2> + </div> + </div> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-10"> + <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> + <div class="input-card" style="margin-left: 50px;"> + <h4>轨迹回放控制</h4> + <div class="input-item"> + <input type="button" class="btn" value="开始动画" id="start" onclick="startAnimation()"/> + <input type="button" class="btn" value="暂停动画" id="pause" onclick="pauseAnimation()"/> + <input type="button" class="btn" value="继续动画" id="resume" onclick="resumeAnimation()"/> + <input type="button" class="btn" value="停止动画" id="stop" onclick="stopAnimation()"/> + </div> + <div class="input-item"> + + </div> + </div> + </div> + </div> + + </div> + + </div> +</div> +<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> +<script type="text/javascript"> + window._AMapSecurityConfig = { + securityJsCode: '44c5ee9ad584605d91ca69bfac32c761', + } +</script> +<script src="https://webapi.amap.com/maps?v=1.4.8&key=d3bde6afb050067e1a765a8d1d1f4c54"></script> +<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> +<script src="${ctxPath}/static/modular/system/tOrderPrivateCar/tOrderPrivateCar_info.js"></script> +@} diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tAbnormalOrder.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tAbnormalOrder.html new file mode 100644 index 0000000..31961ef --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tAbnormalOrder.html @@ -0,0 +1,60 @@ +@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="orderNum" name="订单编号" /> + </div> + <div class="col-sm-3"> + <#NameCon id="userName" name="下单用户昵称" /> + </div> + <div class="col-sm-3"> + <#NameCon id="userPhone" name="下单用户手机" /> + </div> + <div class="col-sm-3"> + <#NameCon id="passengers" name="乘车用户姓名" /> + </div> + <div class="col-sm-3"> + <#NameCon id="passengersPhone" name="乘车用户手机" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="abnormalStatus" name="状态" > + <option value="" selected>全部</option> + <option value="1">未支付</option> + <option value="2">已支付</option> + </#SelectCon> + </div> + + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="TAbnormalOrder.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TAbnormalOrder.resetSearch()" space="true"/> + </div> + </div> + <div class="hidden-xs" id="TOrderPrivateCarTableToolbar" role="group"> + <#button name="导出Excel" icon="" clickFun="TAbnormalOrder.excelExport()"/> + </div> + <#table id="TOrderPrivateCarTable"/> + </div> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/static/modular/system/tAbnormalPayOrderCar/tAbnormalOrder.js"></script> +<script> + laydate.render({ + elem: '#insertTime' + ,range: true + }); +</script> +@} diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tAbnormalOrder_orderDetail.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tAbnormalOrder_orderDetail.html new file mode 100644 index 0000000..601a472 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tAbnormalOrder_orderDetail.html @@ -0,0 +1,271 @@ +@layout("/common/_container.html"){ +<style type="text/css"> + html, body, #container { + height: 100%; + width: 100%; + } + + .input-card .btn{ + margin-right: 1.2rem; + width: 9rem; + } + + .input-card .btn:last-child{ + margin-right: 0; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + <input type="hidden" id="id" name="id" value="${item.id}"> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-4"> + <h2 class="h3Class" style="font-weight: 700;">订单详情</h2> + </div> + </div> + <div class="row"> + <div class="col-sm-6"> + <#label id="insertTimeStr" name="下单时间" value="${item.insertTimeStr}"/> + <#label id="orderSourceStr" name="订单来源" value="${item.orderSourceStr}"/> + </div> + + <div class="col-sm-6"> + <#label id="orderNum" name="订单编号" value="${item.orderNum}"/> + <#label id="travelTimeStr" name="乘车时间" value="${item.travelTimeStr}"/> + </div> + </div> + @for(m in maps){ + <div class="childOrders" style="border: 1px solid;"> + <div class="row"> + <div class="col-sm-6"> + <div class="form-group"> + <label class="col-sm-3 control-label">尾号${m.userPhone1}:</label> + <div class="col-sm-9"> + <label class="control-label">上车地点:${m.boardingAddress}</label> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label"></label> + <div class="col-sm-9"> + <label class="control-label">下车地点:${m.getoffAddress}</label> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">下单用户昵称:</label> + <div class="col-sm-9"> + <label class="control-label">${m.userName}</label> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">乘车用户昵称:</label> + <div class="col-sm-9"> + <label class="control-label">${m.passengers}</label> + </div> + </div> + </div> + <div class="col-sm-6"> + <div class="col-sm-6"> + <div class="form-group"> + <label class="col-sm-5 control-label">${m.peopleNum}人</label> + <div class="col-sm-7"> + <label class="control-label"></label> + </div> + </div> + <div class="form-group"> + <label class="col-sm-5 control-label"></label> + <div class="col-sm-7"> + <label class="control-label"></label> + </div> + </div> + <div class="form-group"> + <label class="col-sm-5 control-label">下单用户手机号:</label> + <div class="col-sm-7"> + <label class="control-label">${m.userPhone}</label> + </div> + </div> + <div class="form-group"> + <label class="col-sm-5 control-label">乘车用户手机号:</label> + <div class="col-sm-7"> + <label class="control-label">${m.passengersPhone}</label> + </div> + </div> + </div> + <div class="col-sm-6"> + <div class="form-group"> + <label class="col-sm-5 control-label"></label> + <div class="col-sm-7"> + <label class="control-label"></label> + </div> + </div> + <div class="form-group"> + <label class="col-sm-5 control-label"></label> + <div class="col-sm-7"> + <label class="control-label"></label> + </div> + </div> + <div class="form-group"> + <label class="col-sm-5 control-label">上车时间:</label> + <div class="col-sm-7"> + <label class="control-label">${m.boardingTimeStr}</label> + </div> + </div> + <div class="form-group"> + <label class="col-sm-5 control-label">下车时间:</label> + <div class="col-sm-7"> + <label class="control-label">${m.getoffTimeStr}</label> + </div> + </div> + </div> + </div> + </div> + </div> + @} + <div class="row"> + <div class="col-sm-6"> + <#label id="serverCarModel" name="选择车型" value="${item.serverCarModel}"/> + <#label id="car" name="接单车辆" value="${item.car}"/> + </div> + + <div class="col-sm-6"> + <#label id="driver" name="接单司机" value="${item.driver}"/> + <#label id="companyName" name="车辆所属机构" value="${item.companyName}"/> + </div> + </div> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-4"> + <h2 class="h3Class" style="font-weight: 700;">费用明细</h2> + </div> + </div> + <div class="row"> + @if(isNotEmpty(item.orderMoney) && item.orderMoney > 0){ + <div class="col-sm-6 b-r"> + <#label id="orderMoney" name="订单总价" value="${item.orderMoney}元"/> + <#label id="travelMoney" name="行程费" value="${item.travelMoney}元"/> + <#label id="parkMoney" name="停车费" value="${item.parkMoney}元"/> + <#label id="roadTollMoney" name="过路费" value="${item.roadTollMoney}元"/> + <#label id="tipMoney" name="小费" value="${item.tipMoney}元"/> + + @if(isNotEmpty(item.payMoney)){ + <#label id="payMoney" name="实际支付费用" value="${item.payMoney}元"/> + @}else{ + <#label id="payMoney" name="实际支付费用" value="0.00元"/> + @} + + <#label id="payTypeStr" name="支付方式" value="${item.payTypeStr}"/> + <#label id="couponMoney" name="优惠券抵扣费用" value="${item.couponMoney}元"/> + <#label id="redPacketMoney" name="红包抵扣金额" value="${item.redPacketMoney}元"/> + @if(isNotEmpty(item.discountAmount)){ + <#label id="discountAmount" name="打车卡优惠金额" value="${item.discountAmount}元"/> + @} + </div> + <div class="col-sm-6"> + <#label id="platIncome" name="平台收益" value="${item.platIncome}元"/> + <#label id="companyIncome" name="分公司收益" value="${item.companyIncome}元"/> + <#label id="franchiseeIncome" name="加盟商收益" value="${item.franchiseeIncome}元"/> + <#label id="driverIncome" name="司机收益" value="${item.driverIncome}元"/> + </div> + @}else{ + <h4 style="margin-left: 10%">暂无费用明细</h4> + @} + </div> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-4"> + <h2 class="h3Class" style="font-weight: 700;">线路轨迹</h2> + </div> + </div> + <div class="row"> + <div class="col-sm-10"> + <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> + <div class="input-card" style="margin-left: 50px;"> + <h4>轨迹回放控制</h4> + <div class="input-item"> + <input type="button" class="btn" value="开始动画" id="start" onclick="startAnimation()"/> + <input type="button" class="btn" value="暂停动画" id="pause" onclick="pauseAnimation()"/> + <input type="button" class="btn" value="继续动画" id="resume" onclick="resumeAnimation()"/> + <input type="button" class="btn" value="停止动画" id="stop" onclick="stopAnimation()"/> + </div> + <div class="input-item"> + + </div> + </div> + </div> + </div> + + + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-8"> + <div class="form-group"> + <label class="col-sm-2 control-label">行程录音:</label> + <div class="col-sm-10"> + <audio src="${item.voice}" controls="controls"> + 您的浏览器不支持 audio 标签。 + </audio> + </div> + </div> + </div> + </div> + <!-- 是否异常订单--> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">是否异常订单</h6> + </div> + <div class="col-sm-1"> + @if(item.abnormal == 2){ + <h6 class="h3Class" style="margin-left: 10%">是</h4> + @}else{ + <h6 class="h3Class" style="margin-left: 10%">否</h4> + @} + </div> + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">处理结果</h6> + </div> + <div class="col-sm-1"> + @if(item.responsibilityType == 1){ + <h6 class="h3Class" style="margin-left: 10%">平台全责</h4> + @}else if(item.responsibilityType == 2){ + <h6 class="h3Class" style="margin-left: 10%">司机全责</h4> + @}else if(item.responsibilityType == 3){ + <h6 class="h3Class" style="margin-left: 10%">乘客全责</h4> + @}else if( item.responsibilityType == 4){ + <h6 class="h3Class" style="margin-left: 10%">平台部分</h4> + @} else if( item.responsibilityType == 5){ + <h6 class="h3Class" style="margin-left: 10%">司机部分</h4> + @} + </div> + + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">修改订单价格为:</h6> + </div> + <div class="col-sm-1"> + <h6 class="h3Class" style="margin-left: 10%">${item.responsibilityMoney}</h4> + </div> + + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">是否推广订单</h6> + </div> + <div class="col-sm-1"> + @if(item.promotion == 2){ + <h6 class="h3Class" style="margin-left: 10%">是</h4> + @}else{ + <h6 class="h3Class" style="margin-left: 10%">否</h4> + @} + </div> + </div> + + + </div> + </div> +</div> +<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> +<script type="text/javascript"> + window._AMapSecurityConfig = { + securityJsCode: '44c5ee9ad584605d91ca69bfac32c761', + } +</script> +<script src="https://webapi.amap.com/maps?v=1.4.8&key=d3bde6afb050067e1a765a8d1d1f4c54"></script> +<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> +<script src="${ctxPath}/static/modular/system/tOrderPrivateCar/tOrderPrivateCar_info.js"></script> +@} diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tOrderPrivateCar_add.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tOrderPrivateCar_add.html new file mode 100644 index 0000000..e4d7b56 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tOrderPrivateCar_add.html @@ -0,0 +1,487 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + <input type="hidden" id="html" value="2"> + <input type="hidden" id="type" value="2"> + + <div class="row"> + <div class="form-group"> + <label class="control-label col-sm-2">起点:</label> + <div class="col-sm-3"> + <input class="form-control" id="startAddress" autocomplete="off" onclick="TOrderPrivateCarInfoDlg.startAddress()"> + <input type="hidden" id="startLon"> + <input type="hidden" id="startLat"> + </div> + </div> + <div class="form-group" id="startAddressModel" hidden> + <label class="control-label col-sm-2"></label> + <div class="col-sm-6" style="margin-left: 15px;height: 500px" id="startAddressBody"> + + </div> + </div> + <div class="form-group"> + <label class="control-label col-sm-2">终点:</label> + <div class="col-sm-3"> + <input class="form-control" id="endAddress" autocomplete="off" onclick="TOrderPrivateCarInfoDlg.endAddress()"> + <input type="hidden" id="endLon"> + <input type="hidden" id="endLat"> + </div> + </div> + <div class="form-group" id="endAddressModel" hidden> + <label class="control-label col-sm-2"></label> + <div class="col-sm-6" style="margin-left: 15px;height: 500px" id="endAddressBody"> + + </div> + </div> + <div class="form-group"> + <label class="control-label col-sm-2">用车时间:</label> + <div class="col-sm-3"> + <input class="form-control" autocomplete="off" id="travelTime"> + </div> + </div> + <div class="form-group"> + <label class="control-label col-sm-2">乘车人姓名:</label> + <div class="col-sm-3"> + <input class="form-control" id="passengers"> + </div> + </div> + <div class="form-group"> + <label class="control-label col-sm-2">乘车人手机号:</label> + <div class="col-sm-3"> + <input class="form-control" id="passengersPhone"> + </div> + </div> + + + <div class="form-group"> + <label class="control-label col-sm-2">车型:</label> + <div class="col-sm-3"> + <select class="form-control " id="serverCarModelId"> + @for(carModel in carModelList){ + <option value="${carModel.id}">${carModel.name}</option> + @} + </select> + </div> + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-10"> + <#button btnCss="info" name="保存" id="ensure" icon="fa-check" + clickFun="TOrderPrivateCarInfoDlg.addSubmit()"/> + </div> + </div> + </div> + + </div> +</div> + +<script src="${ctxPath}/static/modular/system/tOrderPrivateCar/tOrderPrivateCar_info.js"></script> +<script type="text/javascript"> + window._AMapSecurityConfig = { + securityJsCode: '44c5ee9ad584605d91ca69bfac32c761', + } +</script> +<script type="text/javascript" + src="https://webapi.amap.com/maps?v=1.4.10&key=d3bde6afb050067e1a765a8d1d1f4c54&plugin=AMap.Autocomplete,AMap.PlaceSearch"></script> +<script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script> + +<script> + laydate.render({ + elem: '#travelTime' + , type: 'datetime' + ,trigger: 'click' //采用click弹出 + , min: new Date().toString() + }); +</script> + +<script type="text/javascript"> + //起点地图加载 + var marker, map = new AMap.Map("startAddressBody", { + resizeEnable: true, + zoom: 15, + zooms: [3, 20] + }); //定位标注当前位置 + map.plugin('AMap.Geolocation', function () { + geolocation = new AMap.Geolocation({ + enableHighAccuracy: true, //是否使用高精度定位,默认:true + timeout: 10000, //超过10秒后停止定位,默认:无穷大 + maximumAge: 0, //定位结果缓存0毫秒,默认:0 + convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true + showButton: true, //显示定位按钮,默认:true + showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true + showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true + panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true + buttonPosition: 'LB', //定位按钮的停靠位置 LB左下角、 RB右下角 + buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20) + zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false + }); + map.addControl(geolocation); + geolocation.getCurrentPosition(); + AMap.event.addListener(geolocation, 'complete', onComplete); + //返回定位信息 + AMap.event.addListener(geolocation, 'error', onError); + //返回定位出错信息 + }); //解析定位结果 + var city; + + + map.on('click', function (e) { + if (marker != null) { + marker.setMap(null); + } + //添加标记点 + $("#startLon").val(e.lnglat.getLng()); + $("#startLat").val(e.lnglat.getLat()); + marker = new AMap.Marker({ + map: map, + position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat()), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] + }); + regeoCode(e.lnglat.getLng(),e.lnglat.getLat()); + }); + + + var infoWindow = new AMap.InfoWindow({ + autoMove: true, + offset: { + x: 0, + y: -30 + } + }); //回调函数 + + + //根据经纬度获取详细地址 + function regeoCode(lon,lat) { + + var lnglat = []; + lnglat.push(lon); + lnglat.push(lat); + map.add(marker); + marker.setPosition(lnglat); + + AMap.service('AMap.Geocoder', function() { + geocoder = new AMap.Geocoder({}); + geocoder.getAddress(lnglat, function (status, result) { + if (status === 'complete' && result.regeocode) { + var address = result.regeocode.formattedAddress; + $("#startAddress").val(address); + } else { + Feng.error('根据经纬度查询地址失败【' + result + '】') + return + } + var data={ + "name":result.regeocode.addressComponent.neighborhood, + "location":{ + "lat":lat, + "lng":lon + }, + "address":address, + "tel":"", + "type":result.regeocode.addressComponent.neighborhoodType + }; + infoWindow.setContent(createContent(data)); + infoWindow.open(map, marker.getPosition()); + }); + }) + } + + + + function onComplete(data) { + var str = []; + city = data.addressComponent.citycode; + str.push('定位结果:' + data.position); + str.push('定位类别:' + data.location_type); + if (data.accuracy) { + str.push('精度:' + data.accuracy + ' 米'); + } + //如为IP精确定位结果则没有精度信息 + str.push('是否经过偏移:' + (data.isConverted ? '是' : '否')); + var lnglatXY = [data.position.getLng(), data.position.getLat()]; + //地图上所标点的坐标 + AMap.service('AMap.Geocoder', function () { + //回调函数 + geocoder = new AMap.Geocoder({}); + geocoder.getAddress(lnglatXY, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + //获得了有效的地址信息: //即,result.regeocode.formattedAddress +// console.log(result.regeocode.formattedAddress); + var address = result.regeocode.formattedAddress; + str.push('详细地址:' + address); + // todo 不弹出信息框 + // alert(str.join(' | ')); + } else { + // alert(str.join(' | ')); //获取地址失败 + } + }); + }) + } //解析定位错误信息 + function onError(data) { + alert('定位失败,原因:' + data.message); + } + + //输入搜索点信息 + var autoOptions = { + city: city, //在规定城市搜索、默认全国 + input: "startAddress" + }; + + var auto = new AMap.Autocomplete(autoOptions); + var placeSearch = new AMap.PlaceSearch({ + pageSize: 5, // 单页显示结果条数 + pageIndex: 1, // 页码 + children: 0, //不展示子节点数据 + city: city, // 兴趣点城市 + citylimit: true, //是否强制限制在设置的城市内搜索 + panel: "panel", // 结果列表将在此容器中进行展示。 + autoFitView: true, // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围 + extensions: 'base', //返回基本地址信息 */ + map: map // 展现结果的地图实例 + }); //构造地点查询类 + + AMap.event.addListener(auto, "select", select); //注册监听,当选中某条记录时会触发 + function select(e) { + placeSearch.setCity(e.poi.adcode); + placeSearch.search(e.poi.name); //关键字查询查询 //设置搜索位置定点标注 + if (e.poi && e.poi.location) { + map.setZoom(15); + map.setCenter(e.poi.location); + var id = e.poi.id; //详情查询 + placeSearch.getDetails(id, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + placeSearch_CallBack(result); + } + }); + } + } + + function placeSearch_CallBack(data) { + if (marker != null) { + marker.setMap(null); + } + var poiArr = data.poiList.pois; //添加marker + marker = new AMap.Marker({ + map: map, + position: poiArr[0].location + }); + + map.add(marker); + marker.setPosition(marker.getPosition()); + + infoWindow.setContent(createContent(poiArr[0])); + infoWindow.open(map, marker.getPosition()); + } + + function createContent(poi) { + console.log(poi); + //信息窗体内容 + $("#startAddress").val(poi.address); + $("#startLon").val(poi.location.lng); + $("#startLat").val(poi.location.lat); + $("#areaCode").val(poi.adcode); + + var s = []; + s.push("<b>名称:" + poi.name + "</b>"); + s.push("地址:" + poi.address); + s.push("电话:" + poi.tel); + s.push("类型:" + poi.type); + return s.join("<br>"); + } +</script> + +<script> + //终点地图加载 + var marker1, mapp = new AMap.Map("endAddressBody", { + resizeEnable: true, + zoom: 15, + zooms: [3, 20] + }); //定位标注当前位置 + mapp.plugin('AMap.Geolocation', function () { + geolocation = new AMap.Geolocation({ + enableHighAccuracy: true, //是否使用高精度定位,默认:true + timeout: 10000, //超过10秒后停止定位,默认:无穷大 + maximumAge: 0, //定位结果缓存0毫秒,默认:0 + convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true + showButton: true, //显示定位按钮,默认:true + showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true + showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true + panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true + buttonPosition: 'LB', //定位按钮的停靠位置 LB左下角、 RB右下角 + buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20) + zoomToAccuracy: true, //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false + }); + mapp.addControl(geolocation); + geolocation.getCurrentPosition(); + AMap.event.addListener(geolocation, 'complete', onComplete); + //返回定位信息 + AMap.event.addListener(geolocation, 'error', onError); + //返回定位出错信息 + }); //解析定位结果 + var cityy; + + mapp.on('click', function (e) { + if (marker1 != null) { + marker1.setMap(null); + } + //添加标记点 + $("#startLon").val(e.lnglat.getLng()); + $("#startLat").val(e.lnglat.getLat()); + marker1 = new AMap.Marker({ + map: mapp, + position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat()), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] + }); + regeoCode1(e.lnglat.getLng(),e.lnglat.getLat()); + }); + + + var infoWindow = new AMap.InfoWindow({ + autoMove: true, + offset: { + x: 0, + y: -30 + } + }); //回调函数 + + + //根据经纬度获取详细地址 + function regeoCode1(lon,lat) { + + var lnglat = []; + lnglat.push(lon); + lnglat.push(lat); + mapp.add(marker1); + marker1.setPosition(lnglat); + + AMap.service('AMap.Geocoder', function() { + geocoder = new AMap.Geocoder({}); + geocoder.getAddress(lnglat, function (status, result) { + if (status === 'complete' && result.regeocode) { + var address = result.regeocode.formattedAddress; + $("#endAddress").val(address); + } else { + Feng.error('根据经纬度查询地址失败【' + result + '】') + return + } + var data={ + "name":result.regeocode.addressComponent.neighborhood, + "location":{ + "lat":lat, + "lng":lon + }, + "address":address, + "tel":"", + "type":result.regeocode.addressComponent.neighborhoodType + }; + + infoWindow.setContent(createContentt(data)); + infoWindow.open(mapp, marker1.getPosition()); + }); + }) + } + + + + + + function onComplete(data) { + var str = []; + cityy = data.addressComponent.citycode; + str.push('定位结果:' + data.position); + str.push('定位类别:' + data.location_type); + if (data.accuracy) { + str.push('精度:' + data.accuracy + ' 米'); + } + //如为IP精确定位结果则没有精度信息 + str.push('是否经过偏移:' + (data.isConverted ? '是' : '否')); + var lnglatXY = [data.position.getLng(), data.position.getLat()]; + //地图上所标点的坐标 + AMap.service('AMap.Geocoder', function () { + //回调函数 + geocoder = new AMap.Geocoder({}); + geocoder.getAddress(lnglatXY, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + //获得了有效的地址信息: //即,result.regeocode.formattedAddress + // console.log(result.regeocode.formattedAddress); + var address = result.regeocode.formattedAddress; + str.push('详细地址:' + address); +// todo 不弹出信息框 +// alert(str.join(' | ')); + } else { +// alert(str.join(' | ')); //获取地址失败 + } + }); + }) + } //解析定位错误信息 + function onError(data) { + alert('定位失败,原因:' + data.message); + } + + //输入搜索点信息 + var autoOptionss = { + city: cityy, //在规定城市搜索、默认全国 + input: "endAddress" + }; + var autoo = new AMap.Autocomplete(autoOptionss); + var placeSearchh = new AMap.PlaceSearch({ + pageSize: 5, // 单页显示结果条数 + pageIndex: 1, // 页码 + children: 0, //不展示子节点数据 + city: city, // 兴趣点城市 + citylimit: true, //是否强制限制在设置的城市内搜索 + panel: "panel", // 结果列表将在此容器中进行展示。 + autoFitView: true, // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围 + extensions: 'base', //返回基本地址信息 */ + map: mapp // 展现结果的地图实例 + }); //构造地点查询类 + AMap.event.addListener(autoo, "select", selectt); //注册监听,当选中某条记录时会触发 + + function selectt(e) { + placeSearchh.setCity(e.poi.adcode); + placeSearchh.search(e.poi.name); //关键字查询查询 //设置搜索位置定点标注 + if (e.poi && e.poi.location) { + mapp.setZoom(15); + mapp.setCenter(e.poi.location); + var id = e.poi.id; //详情查询 + placeSearchh.getDetails(id, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + placeSearch_CallBackk(result); + } + }); + } + } + + function placeSearch_CallBackk(data) { + if (marker1 != null) { + marker1.setMap(null); + } + var poiArr = data.poiList.pois; //添加marker + marker1 = new AMap.Marker({ + map: mapp, + position: poiArr[0].location + }); + + mapp.add(marker1); + marker1.setPosition(marker1.getPosition()); + + infoWindow.setContent(createContentt(poiArr[0])); + infoWindow.open(mapp, marker1.getPosition()); + } + + function createContentt(poi) { + console.log(poi); + //信息窗体内容 + $("#endAddress").val(poi.address); + $("#endLon").val(poi.location.lng); + $("#endLat").val(poi.location.lat); + $("#areaCode").val(poi.adcode); + + var ss = []; + ss.push("<b>名称:" + poi.name + "</b>"); + ss.push("地址:" + poi.address); + ss.push("电话:" + poi.tel); + ss.push("类型:" + poi.type); + return ss.join("<br>"); + } +</script> +@} diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tOrderPrivateCar_trajectory.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tOrderPrivateCar_trajectory.html new file mode 100644 index 0000000..a2465eb --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAbnormalPayOrderCar/tOrderPrivateCar_trajectory.html @@ -0,0 +1,57 @@ +@layout("/common/_container.html"){ +<style type="text/css"> + html, body, #container { + height: 100%; + width: 100%; + } + + .input-card .btn{ + margin-right: 1.2rem; + width: 9rem; + } + + .input-card .btn:last-child{ + margin-right: 0; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + <input type="hidden" id="id" name="id" value="${tOrderPrivateCarId}"> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-4"> + <h2 class="h3Class" style="font-weight: 700;">线路轨迹</h2> + </div> + </div> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-10"> + <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> + <div class="input-card" style="margin-left: 50px;"> + <h4>轨迹回放控制</h4> + <div class="input-item"> + <input type="button" class="btn" value="开始动画" id="start" onclick="startAnimation()"/> + <input type="button" class="btn" value="暂停动画" id="pause" onclick="pauseAnimation()"/> + <input type="button" class="btn" value="继续动画" id="resume" onclick="resumeAnimation()"/> + <input type="button" class="btn" value="停止动画" id="stop" onclick="stopAnimation()"/> + </div> + <div class="input-item"> + + </div> + </div> + </div> + </div> + + </div> + + </div> +</div> +<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> +<script type="text/javascript"> + window._AMapSecurityConfig = { + securityJsCode: '44c5ee9ad584605d91ca69bfac32c761', + } +</script> +<script src="https://webapi.amap.com/maps?v=1.4.8&key=d3bde6afb050067e1a765a8d1d1f4c54"></script> +<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> +<script src="${ctxPath}/static/modular/system/tOrderPrivateCar/tOrderPrivateCar_info.js"></script> +@} diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html index e3a09d2..e187ec5 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity.html @@ -73,6 +73,24 @@ <option value="12">取消待支付</option> </#SelectCon> </div> + <div class="col-sm-3"> + <#SelectCon id="abnormal" name="是否异常订单" > + <option value="">全部</option> + <option value="1">否</option> + <option value="2">是</option> + </#SelectCon> + </div> + + <div class="col-sm-3"> + <#SelectCon id="promotion" name="是否推广订单" > + <option value="">全部</option> + <option value="1">否</option> + <option value="2">是</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#NameCon id="promotionUser" name="推广员姓名" /> + </div> <div class="col-sm-3"> <#button name="搜索" icon="fa-search" clickFun="TOrderCrossCity.search()"/> <#button name="重置" icon="fa-trash" clickFun="TOrderCrossCity.resetSearch()" space="true"/> @@ -91,6 +109,8 @@ @if(shiro.hasPermission("/tOrderCrossCity/delete")){ <#button name="删除记录" icon="fa-remove" clickFun="TOrderCrossCity.delete()" space="true"/> @} + + <#button name="导出Excel" icon="fa-remove" clickFun="TOrderCrossCity.exportExcel()()" space="true"/> </div> <#table id="TOrderCrossCityTable"/> </div> diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html index 6cca06d..ef04645 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html @@ -99,6 +99,73 @@ </div> </div> </div> + + + + + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-8"> + <div class="form-group"> + <label class="col-sm-2 control-label">行程录音:</label> + <div class="col-sm-10"> + <audio src="${item.voice}" controls="controls"> + 您的浏览器不支持 audio 标签。 + </audio> + </div> + </div> + </div> + </div> + <!-- 是否异常订单--> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">是否异常订单</h6> + </div> + <div class="col-sm-1"> + @if(item.abnormal == 2){ + <h6 class="h3Class" style="margin-left: 10%">是</h4> + @}else{ + <h6 class="h3Class" style="margin-left: 10%">否</h4> + @} + </div> + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">处理结果</h6> + </div> + <div class="col-sm-1"> + @if(item.responsibilityType == 1){ + <h6 class="h3Class" style="margin-left: 10%">平台全责</h4> + @}else if(item.responsibilityType == 2){ + <h6 class="h3Class" style="margin-left: 10%">司机全责</h4> + @}else if(item.responsibilityType == 3){ + <h6 class="h3Class" style="margin-left: 10%">乘客全责</h4> + @}else if( item.responsibilityType == 4){ + <h6 class="h3Class" style="margin-left: 10%">平台部分</h4> + @} else if( item.responsibilityType == 5){ + <h6 class="h3Class" style="margin-left: 10%">司机部分</h4> + @} + </div> + + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">修改订单价格为:</h6> + </div> + <div class="col-sm-1"> + <h6 class="h3Class" style="margin-left: 10%">${item.responsibilityMoney}</h4> + </div> + + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">是否推广订单</h6> + </div> + <div class="col-sm-1"> + @if(item.promotion == 2){ + <h6 class="h3Class" style="margin-left: 10%">是</h4> + @}else{ + <h6 class="h3Class" style="margin-left: 10%">否</h4> + @} + </div> + </div> + </div> </div> diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html index 94e10fa..4aa90ce 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html @@ -73,7 +73,27 @@ <option value="3">拼车订单</option> </#SelectCon> </div> + + <div class="col-sm-3"> + <#SelectCon id="abnormal" name="是否异常订单" > + <option value="">全部</option> + <option value="1">否</option> + <option value="2">是</option> + </#SelectCon> + </div> + + <div class="col-sm-3"> + <#SelectCon id="promotion" name="是否推广订单" > + <option value="">全部</option> + <option value="1">否</option> + <option value="2">是</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#NameCon id="promotionUser" name="推广员姓名" /> + </div> + <div class="col-sm-3"> <#button name="搜索" icon="fa-search" clickFun="TOrderPrivateCar.search()"/> <#button name="重置" icon="fa-trash" clickFun="TOrderPrivateCar.resetSearch()" space="true"/> </div> @@ -94,6 +114,9 @@ @if(shiro.hasPermission("/tOrderPrivateCar/addOrder")){ <#button name="添加订单" icon="fa-plus" clickFun="TOrderPrivateCar.addOrder()" space="true"/> @} + @if(shiro.hasPermission("/tOrderPrivateCar/addOrder")){ + <#button name="导出Excel" icon="" clickFun="TOrderPrivateCar.exportExcel()" space="true"/> + @} </div> <#table id="TOrderPrivateCarTable"/> </div> diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html index 99d8e6e..601a472 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html @@ -191,6 +191,71 @@ </div> </div> + + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-8"> + <div class="form-group"> + <label class="col-sm-2 control-label">行程录音:</label> + <div class="col-sm-10"> + <audio src="${item.voice}" controls="controls"> + 您的浏览器不支持 audio 标签。 + </audio> + </div> + </div> + </div> + </div> + <!-- 是否异常订单--> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">是否异常订单</h6> + </div> + <div class="col-sm-1"> + @if(item.abnormal == 2){ + <h6 class="h3Class" style="margin-left: 10%">是</h4> + @}else{ + <h6 class="h3Class" style="margin-left: 10%">否</h4> + @} + </div> + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">处理结果</h6> + </div> + <div class="col-sm-1"> + @if(item.responsibilityType == 1){ + <h6 class="h3Class" style="margin-left: 10%">平台全责</h4> + @}else if(item.responsibilityType == 2){ + <h6 class="h3Class" style="margin-left: 10%">司机全责</h4> + @}else if(item.responsibilityType == 3){ + <h6 class="h3Class" style="margin-left: 10%">乘客全责</h4> + @}else if( item.responsibilityType == 4){ + <h6 class="h3Class" style="margin-left: 10%">平台部分</h4> + @} else if( item.responsibilityType == 5){ + <h6 class="h3Class" style="margin-left: 10%">司机部分</h4> + @} + </div> + + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">修改订单价格为:</h6> + </div> + <div class="col-sm-1"> + <h6 class="h3Class" style="margin-left: 10%">${item.responsibilityMoney}</h4> + </div> + + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">是否推广订单</h6> + </div> + <div class="col-sm-1"> + @if(item.promotion == 2){ + <h6 class="h3Class" style="margin-left: 10%">是</h4> + @}else{ + <h6 class="h3Class" style="margin-left: 10%">否</h4> + @} + </div> + </div> + + </div> </div> </div> diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi.html index 3964487..d51b4ca 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi.html +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi.html @@ -58,6 +58,26 @@ <option value="12">取消待支付</option> </#SelectCon> </div> + + <div class="col-sm-3"> + <#SelectCon id="abnormal" name="是否异常订单" > + <option value="">全部</option> + <option value="1">否</option> + <option value="2">是</option> + </#SelectCon> + </div> + + <div class="col-sm-3"> + <#SelectCon id="promotion" name="是否推广订单" > + <option value="">全部</option> + <option value="1">否</option> + <option value="2">是</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#NameCon id="promotionUser" name="推广员姓名" /> + </div> + <div class="col-sm-3"> <#button name="搜索" icon="fa-search" clickFun="TOrderTaxi.search()"/> <#button name="重置" icon="fa-trash" clickFun="TOrderTaxi.resetSearch()" space="true"/> @@ -82,6 +102,8 @@ @if(shiro.hasPermission("/tOrderTaxi/tOrderTaxi_add")){ <#button name="添加订单" icon="fa-plus" clickFun="TOrderTaxi.openAddTOrderTaxi()" space="true"/> @} + + <#button name="导出Excel" icon="" clickFun="TOrderTaxi.exportExcel()" space="true"/> </div> <#table id="TOrderTaxiTable"/> </div> diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html index df104e1..b7dbff0 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html @@ -1,5 +1,5 @@ @layout("/common/_container.html"){ -<style type="text/css"> +<style type="text/css" xmlns="http://www.w3.org/1999/html"> html, body, #container { height: 100%; width: 100%; @@ -126,8 +126,73 @@ </div> </div> + + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-8"> + <div class="form-group"> + <label class="col-sm-2 control-label">行程录音:</label> + <div class="col-sm-10"> + <audio src="${item.voice}" controls="controls"> + 您的浏览器不支持 audio 标签。 + </audio> + </div> + </div> + </div> + </div> + <!-- 是否异常订单--> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">是否异常订单</h6> + </div> + <div class="col-sm-1"> + @if(item.abnormal == 2){ + <h6 class="h3Class" style="margin-left: 10%">是</h4> + @}else{ + <h6 class="h3Class" style="margin-left: 10%">否</h4> + @} + </div> + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">处理结果</h6> + </div> + <div class="col-sm-1"> + @if(item.responsibilityType == 1){ + <h6 class="h3Class" style="margin-left: 10%">平台全责</h4> + @}else if(item.responsibilityType == 2){ + <h6 class="h3Class" style="margin-left: 10%">司机全责</h4> + @}else if(item.responsibilityType == 3){ + <h6 class="h3Class" style="margin-left: 10%">乘客全责</h4> + @}else if( item.responsibilityType == 4){ + <h6 class="h3Class" style="margin-left: 10%">平台部分</h4> + @} else if( item.responsibilityType == 5){ + <h6 class="h3Class" style="margin-left: 10%">司机部分</h4> + @} + </div> + + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">修改订单价格为:</h6> + </div> + <div class="col-sm-1"> + <h6 class="h3Class" style="margin-left: 10%">${item.responsibilityMoney}</h4> + </div> + + + <div class="col-sm-1"> + <h6 class="h3Class" style="font-weight: 700;">是否推广订单</h6> + </div> + <div class="col-sm-1"> + @if(item.promotion == 2){ + <h6 class="h3Class" style="margin-left: 10%">是</h4> + @}else{ + <h6 class="h3Class" style="margin-left: 10%">否</h4> + @} + </div> </div> + +</div> + </div> </div> <script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrder.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrder.js new file mode 100644 index 0000000..cf8c64b --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrder.js @@ -0,0 +1,478 @@ +/** + * 快车订单管理初始化 + */ +var TAbnormalOrder = { + id: "TOrderPrivateCarTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; + +/** + * 初始化表格的列 + */ +TAbnormalOrder.initColumn = function () { + return [ + {field: 'selectItem', radio: true}, + {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '下单时间', 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: '订单编号', 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: 'orderSource', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.orderSource != '' && row.orderSource != null) { + if (row.orderSource == 1){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="APP下单" onfocus="TUser.tooltip()">APP下单</p>'] + } else if (row.orderSource == 2){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="扫码下单" onfocus="TUser.tooltip()">扫码下单</p>'] + } else if (row.orderSource == 3){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="小程序下单" onfocus="TUser.tooltip()">小程序下单</p>'] + } else if (row.orderSource == 4){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="司机下单" onfocus="TUser.tooltip()">司机下单</p>'] + } else if (row.orderSource == 5){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="调度下单" onfocus="TUser.tooltip()">调度下单</p>'] + } + } + return btn; + } + }, + {title: '订单类型', field: 'rideType', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.rideType != '' && row.rideType != null) { + if (row.rideType == 1){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="独享订单" onfocus="TUser.tooltip()">独享订单</p>'] + } else if (row.rideType == 2){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="一口价订单" onfocus="TUser.tooltip()">一口价订单</p>'] + } else if (row.rideType == 3){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="拼车订单" onfocus="TUser.tooltip()">拼车订单</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: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'}, + {title: '下单用<br/>户昵称', field: 'userName', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.userName != '' && row.userName != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userName + '" onfocus="TUser.tooltip()">' + row.userName + '</p>'] + } + return btn; + } + }, + {title: '下单用<br/>户手机', field: 'userPhone', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.userPhone != '' && row.userPhone != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userPhone + '" onfocus="TUser.tooltip()">' + row.userPhone + '</p>'] + } + return btn; + } + }, + {title: '乘车用<br/>户姓名', field: 'passengers', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.passengers != '' && row.passengers != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.passengers + '" onfocus="TUser.tooltip()">' + row.passengers + '</p>'] + } + return btn; + } + }, + {title: '乘车用<br/>户手机', field: 'passengersPhone', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.passengersPhone != '' && row.passengersPhone != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.passengersPhone + '" onfocus="TUser.tooltip()">' + row.passengersPhone + '</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: '选择车型', field: 'serverCarModelName', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.serverCarModelName != '' && row.serverCarModelName != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.serverCarModelName + '" onfocus="TUser.tooltip()">' + row.serverCarModelName + '</p>'] + } + return btn; + } + }, + {title: '接单司机', field: 'driver', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.driver != '' && row.driver != null) { + var driverName1 = row.driver.replace("-","<br>"); + var driverName2 = row.driver.replace("-"," "); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + driverName2 + '" onfocus="TUser.tooltip()">' + driverName1 + '</p>'] + } + return btn; + } + }, + {title: '接单车辆', field: 'car', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.car != '' && row.car != null) { + var car1 = row.car.replace("-","<br>"); + var car2 = row.car.replace("-"," "); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + car2 + '" onfocus="TUser.tooltip()">' + car1 + '</p>'] + } + return btn; + } + }, + {title: '订单金额', field: 'orderMoney', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.orderMoney != '' && row.orderMoney != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.orderMoney + '" onfocus="TUser.tooltip()">' + row.orderMoney + '</p>'] + } + return btn; + } + }, + {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.state != '' && row.state != null) { + if (row.state == 1){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待接单" onfocus="TUser.tooltip()">待接单</p>'] + } else if (row.state == 2){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" 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>'] + } else if (row.state == 6){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="完成服务" onfocus="TUser.tooltip()">完成服务</p>'] + } else if (row.state == 7){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待支付" onfocus="TUser.tooltip()">待支付</p>'] + } else if (row.state == 8){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待评价" onfocus="TUser.tooltip()">待评价</p>'] + } else if (row.state == 9){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已完成" onfocus="TUser.tooltip()">已完成</p>'] + } else if (row.state == 10){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已取消" onfocus="TUser.tooltip()">已取消</p>'] + } else if (row.state == 11){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="改派中" onfocus="TUser.tooltip()">改派中</p>'] + } else if (row.state == 12){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="取消待支付" onfocus="TUser.tooltip()">取消待支付</p>'] + } + } + return btn; + } + }, + {title: '是否异常订单', field: 'abnormal', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '是否推广订单', field: 'promotion', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '推广员姓名', field: 'promotionUser', visible: true, align: 'center', valign: 'middle', + + }, + {title: '推广员电话', field: 'promotionPhone', visible: true, align: 'center', valign: 'middle', + + }, + ]; +}; + +/** + * 检查是否选中 + */ +TAbnormalOrder.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + TAbnormalOrder.seItem = selected[0]; + return true; + } +}; + +/** + * 添加快车订单 + */ +TAbnormalOrder.addOrder =function(){ + var index = layer.open({ + type: 2, + title: '添加快车订单', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_addOrder' + }); + this.layerIndex = index; + +}; + +/** + * 打开查看快车订单详情 + */ +TAbnormalOrder.orderDetail = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: '异常订单详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/abnormal/tOrderPrivateCar_orderDetail?tOrderPrivateCarId=' + TAbnormalOrder.seItem.id+'&type='+$("#type").val() + }); + this.layerIndex = index; + } +}; + + +/** + * 订单轨迹 + */ +TAbnormalOrder.trajectory = function(){ + if (this.check()) { + var index = layer.open({ + type: 2, + title: '快车订单轨迹', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_trajectory/' + TAbnormalOrder.seItem.id + }); + this.layerIndex = index; + } +} + + +/** + * 删除快车订单 + */ +TAbnormalOrder.deleteOrder = function () { + if (this.check()) { + var orderNum = TAbnormalOrder.seItem.orderNum; + if (orderNum == "" || orderNum == null || orderNum == undefined) { + orderNum = "该订单"; + } else { + orderNum = "【" + orderNum + "】"; + } + if (TAbnormalOrder.seItem.state != 10) { + swal("删除失败", "【已取消】状态下才能执行此操作", "warning"); + return; + } + swal({ + title: "您是否确认删除" + orderNum + "?", + text: "请谨慎操作,删除后数据无法恢复!", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "删除", + closeOnConfirm: false + }, function () { + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/delete", function (data) { + swal("删除成功", "您已经删除了" + orderNum + "。", "success"); + TAbnormalOrder.table.refresh(); + }, function (data) { + swal("删除失败", data.responseJSON.message + "!", "warning"); + }); + ajax.set("tOrderPrivateCarId", TAbnormalOrder.seItem.id); + ajax.start(); + }); + } +}; + + + + + +/** + * 查询快车订单列表 + */ +TAbnormalOrder.search = function () { + var queryData = {}; + queryData['insertTime'] = $("#insertTime").val(); + queryData['orderNum'] = $("#orderNum").val(); + queryData['orderSource'] = $("#orderSource").val(); + queryData['userName'] = $("#userName").val(); + queryData['userPhone'] = $("#userPhone").val(); + queryData['passengers'] = $("#passengers").val(); + queryData['passengersPhone'] = $("#passengersPhone").val(); + queryData['serverCarModelId'] = $("#serverCarModelId").val(); + queryData['driver'] = $("#driver").val(); + queryData['state'] = $("#state").val(); + queryData['rideType'] = $('#rideType').val(); + queryData['promotionUser'] = $("#promotionUser").val(); + queryData['abnormal'] = $("#abnormal").val(); + queryData['promotion'] = $("#promotion").val(); + queryData['type'] = $("#type").val(); + queryData['abnormalStatus'] = $("#abnormalStatus").val(); + TAbnormalOrder.table.refresh({query: queryData}); +}; + +TAbnormalOrder.exportExcel=function (){ + let p = ""; + let insertTime = $('#insertTime').val(); + let orderNum = $('#orderNum').val(); + let orderSource = $('#orderSource').val(); + let userName = $('#userName').val(); + let userPhone = $('#userPhone').val(); + let passengers = $('#passengers').val(); + let passengersPhone = $('#passengersPhone').val(); + let serverCarModelId = $('#serverCarModelId').val(); + let driver = $('#driver').val(); + let state = $('#state').val(); + let rideType = $('#rideType').val(); + let promotionUser = $('#promotionUser').val(); + let abnormal = $('#abnormal').val(); + let promotion = $('#promotion').val(); + let type = $('#type').val(); + let abnormalStatus = $('#abnormalStatus').val(); + if(null != insertTime && '' != insertTime){ + p += "insertTime=" + insertTime + "&"; + } + if(null != orderNum && '' != orderNum){ + p += "orderNum=" + orderNum + "&"; + } + if(null != orderSource && '' != orderSource){ + p += "orderSource=" + orderSource + "&"; + } + if(null != userName && '' != userName){ + p += "userName=" + userName + "&" ; + } + if(null != userPhone && '' != userPhone){ + p += "userPhone=" + userPhone + "&" ; + } + if(null != passengers && '' != passengers){ + p += "passengers=" + passengers + "&" ; + } + if(null != passengersPhone && '' != passengersPhone){ + p += "passengersPhone=" + passengersPhone + "&" ; + } + if(null != serverCarModelId && '' != serverCarModelId){ + p += "serverCarModelId=" + serverCarModelId + "&" ; + } + if(null != driver && '' != driver){ + p += "driver=" + driver + "&" ; + } + if(null != rideType && '' != rideType){ + p += "rideType=" + rideType + "&" ; + } + if(null != state && '' != state){ + p += "state=" + state + "&" ; + } + if(null != promotionUser && '' != promotionUser){ + p += "promotionUser=" + promotionUser + "&" ; + } + if(null != abnormal && '' != abnormal){ + p += "abnormal=" + abnormal + "&" ; + } + if(null != promotion && '' != promotion){ + p += "promotion=" + promotion + "&" ; + } + if(null != type && '' != type){ + p += "type=" + type + "&" ; + } + if(null != abnormalStatus && '' != abnormalStatus){ + p += "abnormalStatus=" + abnormalStatus + "&" ; + } + if('' != p){ + p = "?" + p.substring(0, p.length - 1); + } + console.log('p['+p+']') + window.location.href = Feng.ctxPath + '/abnormal/export' + p; +} + + + +TAbnormalOrder.resetSearch = function () { + $("#insertTime").val(""); + $("#orderNum").val(""); + $("#orderSource").val(""); + $("#userName").val(""); + $("#userPhone").val(""); + $("#passengers").val(""); + $("#passengersPhone").val(""); + $("#serverCarModelId").val(""); + $("#driver").val(""); + $("#state").val(""); + $('#rideType').val(''); + $("#promotionUser").val(""); + $("#abnormal").val(""); + $("#promotion").val(""); + $("#type").val("1"); + $("#abnormalStatus").val(""); + TAbnormalOrder.search(); +}; + + + +$(function () { + var defaultColunms = TAbnormalOrder.initColumn(); + var table = new BSTable(TAbnormalOrder.id, "/abnormal/list", defaultColunms); + table.setPaginationType("server"); + TAbnormalOrder.table = table.init(); +}); diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrderCar_info.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrderCar_info.js new file mode 100644 index 0000000..5fdbf49 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalOrderCar/tAbnormalOrderCar_info.js @@ -0,0 +1,312 @@ +/** + * 初始化快车订单详情对话框 + */ +var TOrderPrivateCarInfoDlg = { + tOrderPrivateCarInfoData: {} +}; + +/** + * 清除数据 + */ +TOrderPrivateCarInfoDlg.clearData = function () { + this.tOrderPrivateCarInfoData = {}; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TOrderPrivateCarInfoDlg.set = function (key, val) { + this.tOrderPrivateCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; + return this; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TOrderPrivateCarInfoDlg.get = function (key) { + return $("#" + key).val(); +} + +/** + * 关闭此对话框 + */ +TOrderPrivateCarInfoDlg.close = function () { + parent.layer.close(window.parent.TOrderPrivateCar.layerIndex); +} + +/** + * 收集数据 + */ +TOrderPrivateCarInfoDlg.collectData = function () { + this + .set('id') + .set('type') + .set('userId') + .set('driverId') + .set('carId') + .set('orderNum') + .set('placementLon') + .set('placementLat') + .set('placementAddress') + .set('startLon') + .set('startLat') + .set('endLon') + .set('startAddress') + .set('endLat') + .set('endAddress') + .set('boardingLon') + .set('boardingLat') + .set('boardingAddress') + .set('boardingTime') + .set('getoffLon') + .set('getoffLat') + .set('getoffAddress') + .set('getoffTime') + .set('mileage') + .set('payManner') + .set('payType') + .set('orderMoney') + .set('startMoney') + .set('mileageMoney') + .set('durationMoney') + .set('longDistanceMoney') + .set('parkMoney') + .set('roadTollMoney') + .set('redPacketMoney') + .set('couponMoney') + .set('redPacketId') + .set('couponId') + .set('discount') + .set('discountMoney') + .set('activityId') + .set('companyId') + .set('payMoney') + .set('substitute') + .set('passengers') + .set('passengersPhone') + .set('state') + .set('insertTime') + .set('travelTime') + .set('snatchOrderTime') + .set('setOutTime') + .set('arriveTime') + .set('startServiceTime') + .set('endServiceTime') + .set('orderType') + .set('orderSource') + .set('invoiceId') + .set('isReassign') + .set('reassignNotice') + .set('trackId') + .set('isDelete') + .set('oldState') + .set('telX') + .set('bindId') + .set('serverCarModelId'); +} + +/** + * 提交添加 + */ +TOrderPrivateCarInfoDlg.addSubmit = function () { + + this.clearData(); + this.collectData(); + + if ($("#startAddress").val() === ""){ + Feng.error("请输入起点"); + return false; + } + if ($("#endAddress").val() === ""){ + Feng.error("请输入终点"); + return false; + } + if ($("#travelTime").val() === ""){ + Feng.error("请选择用车时间"); + return false; + } + if ($("#passengers").val() === ""){ + Feng.error("请输入乘车人姓名"); + return false; + } + if ($("#passengersPhone").val() === ""){ + Feng.error("请输入乘车人手机号"); + return false; + } + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/add", function (data) { + Feng.success("添加成功!"); + window.parent.TOrderPrivateCar.table.refresh(); + TOrderPrivateCarInfoDlg.close(); + }, function (data) { + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tOrderPrivateCarInfoData); + ajax.start(); +} +TOrderPrivateCarInfoDlg.save = function (){ + + const selectedBtn = document.querySelector('.duty-btn.active'); + const responsibilityTypeVal = reverseTypeMap[selectedBtn.dataset.type]; + const remark = document.querySelector('textarea[name=handleRemark]').value; + // 取money + const money = document.querySelector('input[name=money]').value; + const type = document.querySelector('input[name=type]').value; + const orderNum = document.querySelector('input[name=orderNum]').value; + + console.log(type,orderNum) + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/abnormal/save", function(data){ + Feng.success("操作成功!"); + },function(data){ + Feng.error("操作失败!"); + }); + ajax.set("responsibilityTypeVal",responsibilityTypeVal); + ajax.set("remark",remark); + ajax.set("money",money); + ajax.set("type",type); + ajax.set("orderNum",orderNum); + ajax.start(); + +} +/** + * 提交修改 + */ +TOrderPrivateCarInfoDlg.editSubmit = function () { + + this.clearData(); + this.collectData(); + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/update", function (data) { + Feng.success("修改成功!"); + window.parent.TOrderPrivateCar.table.refresh(); + TOrderPrivateCarInfoDlg.close(); + }, function (data) { + Feng.error("修改失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tOrderPrivateCarInfoData); + ajax.start(); +} + +var map = new AMap.Map("container", { + resizeEnable: true, + zoom: 14 +}); +$(function () { + var type = $("#type").val(); + if (type != 2) { + getTrajectory(); + } +}); + +function getTrajectory() { + $.ajax({ + url: Feng.ctxPath + '/tOrderPrivateCar/getOrderTrack', + type: 'POST', + data: { + orderDetailId: $("#id").val() + }, + success: function (res) { + if (res.status == 200) { + var data = res.data; + if (data.length > 0) { + orderTrack(data); + } + /*else{ + Feng.error("当前订单没有轨迹"); + }*/ + } else { + Feng.error(res.msg); + } + } + }); +} + +var marker, lineArr = []; + +function orderTrack(data) { + for (var i in data) { + var waypoints = []; + var lon = parseFloat(data[i].lon); + var lat = parseFloat(data[i].lat); + waypoints.push(lon); + waypoints.push(lat); + lineArr.push(waypoints); + } + + marker = new AMap.Marker({ + map: map, + position: lineArr[0], + icon: "https://webapi.amap.com/images/car.png", + offset: new AMap.Pixel(-26, -13), + autoRotation: true, + angle: -90, + }); + + // 绘制轨迹 + var polyline = new AMap.Polyline({ + map: map, + path: lineArr, + showDir: true, + strokeColor: "#28F", //线颜色 + // strokeOpacity: 1, //线透明度 + strokeWeight: 6, //线宽 + // strokeStyle: "solid" //线样式 + }); + + var passedPolyline = new AMap.Polyline({ + map: map, + // path: lineArr, + strokeColor: "#AF5", //线颜色 + // strokeOpacity: 1, //线透明度 + strokeWeight: 6, //线宽 + // strokeStyle: "solid" //线样式 + }); + + + marker.on('moving', function (e) { + passedPolyline.setPath(e.passedPath); + }); + + map.setFitView(); +} + + +function startAnimation() { + marker.moveAlong(lineArr, 200); +} + +function pauseAnimation() { + marker.pauseMove(); +} + +function resumeAnimation() { + marker.resumeMove(); +} + +function stopAnimation() { + marker.stopMove(); +} + +/** + * 选择起点 + */ +TOrderPrivateCarInfoDlg.startAddress = function () { + $("#startAddressModel").show(); +}; + + +/** + * 选择终点 + */ +TOrderPrivateCarInfoDlg.endAddress = function () { + $("#endAddressModel").show(); +}; diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalPayOrderCar/tAbnormalOrder.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalPayOrderCar/tAbnormalOrder.js new file mode 100644 index 0000000..ef9c653 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalPayOrderCar/tAbnormalOrder.js @@ -0,0 +1,264 @@ +/** + * 快车订单管理初始化 + */ +var TAbnormalOrder = { + id: "TOrderPrivateCarTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; + +/** + * 初始化表格的列 + */ +TAbnormalOrder.initColumn = function () { + return [ + {field: 'selectItem', radio: true}, + {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '生成时间', field: 'createTime', visible: true, align: 'center', valign: 'middle',width:'8%', + formatter: function (value, row) { + var btn = ""; + if(row.createTime != '' && row.createTime != null) { + var time = row.createTime.replace(" ",'<br>'); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.createTime + '" onfocus="TUser.tooltip()">' + time + '</p>'] + } + return btn; + } + }, + {title: '关联订单号', field: '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: 'payMoney', visible: true, align: 'center', valign: 'middle', + }, + {title: '支付状态', field: 'payStatus', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1: '未支付', 2: '已支付'}[value]; + } + }, + {title: '支付时间', field: 'payTime', visible: true, align: 'center', valign: 'middle',width:'10%', + formatter: function (value, row) { + var btn = ""; + if(row.payTime != '' && row.payTime != null) { + var time = row.payTime.replace(" ",'<br>'); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.payTime + '" onfocus="TUser.tooltip()">' + time + '</p>'] + } + return btn; + } + }, + {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'}, + {title: '用户昵称', field: 'userName', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.userName != '' && row.userName != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userName + '" onfocus="TUser.tooltip()">' + row.userName + '</p>'] + } + return btn; + } + }, + {title: '联系电话', field: 'userPhone', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.userPhone != '' && row.userPhone != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userPhone + '" onfocus="TUser.tooltip()">' + row.userPhone + '</p>'] + } + return btn; + } + }, + ]; +}; + +/** + * 检查是否选中 + */ +TAbnormalOrder.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + TAbnormalOrder.seItem = selected[0]; + return true; + } +}; + +/** + * 添加快车订单 + */ +TAbnormalOrder.addOrder =function(){ + var index = layer.open({ + type: 2, + title: '添加快车订单', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_addOrder' + }); + this.layerIndex = index; + +}; + +/** + * 打开查看快车订单详情 + */ +TAbnormalOrder.orderDetail = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: '快车订单详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_orderDetail/' + TAbnormalOrder.seItem.id + }); + this.layerIndex = index; + } +}; + + +/** + * 订单轨迹 + */ +TAbnormalOrder.trajectory = function(){ + if (this.check()) { + var index = layer.open({ + type: 2, + title: '快车订单轨迹', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_trajectory/' + TAbnormalOrder.seItem.id + }); + this.layerIndex = index; + } +} + + +/** + * 删除快车订单 + */ +TAbnormalOrder.deleteOrder = function () { + if (this.check()) { + var orderNum = TAbnormalOrder.seItem.orderNum; + if (orderNum == "" || orderNum == null || orderNum == undefined) { + orderNum = "该订单"; + } else { + orderNum = "【" + orderNum + "】"; + } + if (TAbnormalOrder.seItem.state != 10) { + swal("删除失败", "【已取消】状态下才能执行此操作", "warning"); + return; + } + swal({ + title: "您是否确认删除" + orderNum + "?", + text: "请谨慎操作,删除后数据无法恢复!", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "删除", + closeOnConfirm: false + }, function () { + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/delete", function (data) { + swal("删除成功", "您已经删除了" + orderNum + "。", "success"); + TAbnormalOrder.table.refresh(); + }, function (data) { + swal("删除失败", data.responseJSON.message + "!", "warning"); + }); + ajax.set("tOrderPrivateCarId", TAbnormalOrder.seItem.id); + ajax.start(); + }); + } +}; + +/** + * 查询快车订单列表 + */ +TAbnormalOrder.search = function () { + var queryData = {}; + queryData['insertTime'] = $("#insertTime").val(); + queryData['orderNum'] = $("#orderNum").val(); + queryData['orderSource'] = $("#orderSource").val(); + queryData['userName'] = $("#userName").val(); + queryData['userPhone'] = $("#userPhone").val(); + queryData['passengers'] = $("#passengers").val(); + queryData['passengersPhone'] = $("#passengersPhone").val(); + queryData['serverCarModelId'] = $("#serverCarModelId").val(); + queryData['driver'] = $("#driver").val(); + queryData['state'] = $("#state").val(); + queryData['rideType'] = $('#rideType').val(); + queryData['promotionUser'] = $("#promotionUser").val(); + queryData['abnormal'] = $("#abnormal").val(); + queryData['promotion'] = $("#promotion").val(); + queryData['type'] = $("#type").val(); + queryData['abnormalStatus'] = $("#abnormalStatus").val(); + TAbnormalOrder.table.refresh({query: queryData}); +}; + +TAbnormalOrder.resetSearch = function () { + $("#insertTime").val(""); + $("#orderNum").val(""); + $("#orderSource").val(""); + $("#userName").val(""); + $("#userPhone").val(""); + $("#passengers").val(""); + $("#passengersPhone").val(""); + $("#serverCarModelId").val(""); + $("#driver").val(""); + $("#state").val(""); + $('#rideType').val(''); + $("#promotionUser").val(""); + $("#abnormal").val(""); + $("#promotion").val(""); + $("#type").val("1"); + $("#abnormalStatus").val(""); + TAbnormalOrder.search(); +}; + +TAbnormalOrder.excelExport=function (){ + let p = ""; + let insertTime = $('#insertTime').val(); + let orderNum = $('#orderNum').val(); + let userName = $('#userName').val(); + let userPhone = $('#userPhone').val(); + let passengers = $('#passengers').val(); + let passengersPhone = $('#passengersPhone').val(); + let abnormalStatus = $('#abnormalStatus').val(); + if(null != insertTime && '' != insertTime){ + p += "insertTime=" + insertTime + "&"; + } + if(null != orderNum && '' != orderNum){ + p += "orderNum=" + orderNum + "&"; + } + if(null != userName && '' != userName){ + p += "userName=" + userName + "&" ; + } + if(null != userPhone && '' != userPhone){ + p += "userPhone=" + userPhone + "&" ; + } + if(null != passengers && '' != passengers){ + p += "passengers=" + passengers + "&" ; + } + if(null != passengersPhone && '' != passengersPhone){ + p += "passengersPhone=" + passengersPhone + "&" ; + } + if(null != abnormalStatus && '' != abnormalStatus){ + p += "abnormalStatus=" + abnormalStatus + "&" ; + } + if('' != p){ + p = "?" + p.substring(0, p.length - 1); + } + console.log('p['+p+']') + window.location.href = Feng.ctxPath + '/abnormalPay/export' + p; +} + +$(function () { + var defaultColunms = TAbnormalOrder.initColumn(); + var table = new BSTable(TAbnormalOrder.id, "/abnormalPay/list", defaultColunms); + table.setPaginationType("server"); + TAbnormalOrder.table = table.init(); +}); diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalPayOrderCar/tAbnormalOrderCar_info.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalPayOrderCar/tAbnormalOrderCar_info.js new file mode 100644 index 0000000..b26ba58 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tAbnormalPayOrderCar/tAbnormalOrderCar_info.js @@ -0,0 +1,287 @@ +/** + * 初始化快车订单详情对话框 + */ +var TOrderPrivateCarInfoDlg = { + tOrderPrivateCarInfoData: {} +}; + +/** + * 清除数据 + */ +TOrderPrivateCarInfoDlg.clearData = function () { + this.tOrderPrivateCarInfoData = {}; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TOrderPrivateCarInfoDlg.set = function (key, val) { + this.tOrderPrivateCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; + return this; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TOrderPrivateCarInfoDlg.get = function (key) { + return $("#" + key).val(); +} + +/** + * 关闭此对话框 + */ +TOrderPrivateCarInfoDlg.close = function () { + parent.layer.close(window.parent.TOrderPrivateCar.layerIndex); +} + +/** + * 收集数据 + */ +TOrderPrivateCarInfoDlg.collectData = function () { + this + .set('id') + .set('type') + .set('userId') + .set('driverId') + .set('carId') + .set('orderNum') + .set('placementLon') + .set('placementLat') + .set('placementAddress') + .set('startLon') + .set('startLat') + .set('endLon') + .set('startAddress') + .set('endLat') + .set('endAddress') + .set('boardingLon') + .set('boardingLat') + .set('boardingAddress') + .set('boardingTime') + .set('getoffLon') + .set('getoffLat') + .set('getoffAddress') + .set('getoffTime') + .set('mileage') + .set('payManner') + .set('payType') + .set('orderMoney') + .set('startMoney') + .set('mileageMoney') + .set('durationMoney') + .set('longDistanceMoney') + .set('parkMoney') + .set('roadTollMoney') + .set('redPacketMoney') + .set('couponMoney') + .set('redPacketId') + .set('couponId') + .set('discount') + .set('discountMoney') + .set('activityId') + .set('companyId') + .set('payMoney') + .set('substitute') + .set('passengers') + .set('passengersPhone') + .set('state') + .set('insertTime') + .set('travelTime') + .set('snatchOrderTime') + .set('setOutTime') + .set('arriveTime') + .set('startServiceTime') + .set('endServiceTime') + .set('orderType') + .set('orderSource') + .set('invoiceId') + .set('isReassign') + .set('reassignNotice') + .set('trackId') + .set('isDelete') + .set('oldState') + .set('telX') + .set('bindId') + .set('serverCarModelId'); +} + +/** + * 提交添加 + */ +TOrderPrivateCarInfoDlg.addSubmit = function () { + + this.clearData(); + this.collectData(); + + if ($("#startAddress").val() === ""){ + Feng.error("请输入起点"); + return false; + } + if ($("#endAddress").val() === ""){ + Feng.error("请输入终点"); + return false; + } + if ($("#travelTime").val() === ""){ + Feng.error("请选择用车时间"); + return false; + } + if ($("#passengers").val() === ""){ + Feng.error("请输入乘车人姓名"); + return false; + } + if ($("#passengersPhone").val() === ""){ + Feng.error("请输入乘车人手机号"); + return false; + } + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/add", function (data) { + Feng.success("添加成功!"); + window.parent.TOrderPrivateCar.table.refresh(); + TOrderPrivateCarInfoDlg.close(); + }, function (data) { + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tOrderPrivateCarInfoData); + ajax.start(); +} + +/** + * 提交修改 + */ +TOrderPrivateCarInfoDlg.editSubmit = function () { + + this.clearData(); + this.collectData(); + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/update", function (data) { + Feng.success("修改成功!"); + window.parent.TOrderPrivateCar.table.refresh(); + TOrderPrivateCarInfoDlg.close(); + }, function (data) { + Feng.error("修改失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tOrderPrivateCarInfoData); + ajax.start(); +} + +var map = new AMap.Map("container", { + resizeEnable: true, + zoom: 14 +}); +$(function () { + var type = $("#type").val(); + if (type != 2) { + getTrajectory(); + } +}); + +function getTrajectory() { + $.ajax({ + url: Feng.ctxPath + '/tOrderPrivateCar/getOrderTrack', + type: 'POST', + data: { + orderDetailId: $("#id").val() + }, + success: function (res) { + if (res.status == 200) { + var data = res.data; + if (data.length > 0) { + orderTrack(data); + } + /*else{ + Feng.error("当前订单没有轨迹"); + }*/ + } else { + Feng.error(res.msg); + } + } + }); +} + +var marker, lineArr = []; + +function orderTrack(data) { + for (var i in data) { + var waypoints = []; + var lon = parseFloat(data[i].lon); + var lat = parseFloat(data[i].lat); + waypoints.push(lon); + waypoints.push(lat); + lineArr.push(waypoints); + } + + marker = new AMap.Marker({ + map: map, + position: lineArr[0], + icon: "https://webapi.amap.com/images/car.png", + offset: new AMap.Pixel(-26, -13), + autoRotation: true, + angle: -90, + }); + + // 绘制轨迹 + var polyline = new AMap.Polyline({ + map: map, + path: lineArr, + showDir: true, + strokeColor: "#28F", //线颜色 + // strokeOpacity: 1, //线透明度 + strokeWeight: 6, //线宽 + // strokeStyle: "solid" //线样式 + }); + + var passedPolyline = new AMap.Polyline({ + map: map, + // path: lineArr, + strokeColor: "#AF5", //线颜色 + // strokeOpacity: 1, //线透明度 + strokeWeight: 6, //线宽 + // strokeStyle: "solid" //线样式 + }); + + + marker.on('moving', function (e) { + passedPolyline.setPath(e.passedPath); + }); + + map.setFitView(); +} + + +function startAnimation() { + marker.moveAlong(lineArr, 200); +} + +function pauseAnimation() { + marker.pauseMove(); +} + +function resumeAnimation() { + marker.resumeMove(); +} + +function stopAnimation() { + marker.stopMove(); +} + +/** + * 选择起点 + */ +TOrderPrivateCarInfoDlg.startAddress = function () { + $("#startAddressModel").show(); +}; + + +/** + * 选择终点 + */ +TOrderPrivateCarInfoDlg.endAddress = function () { + $("#endAddressModel").show(); +}; diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js index 3b9dd46..53c7c14 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderCrossCity/tOrderCrossCity.js @@ -217,7 +217,23 @@ } return btn; } - } + }, + {title: '是否异常订单', field: 'abnormal', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '是否推广订单', field: 'promotion', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '推广员姓名', field: 'promotionUser', visible: true, align: 'center', valign: 'middle', + + }, + {title: '推广员电话', field: 'promotionPhone', visible: true, align: 'center', valign: 'middle', + + }, ]; }; @@ -362,9 +378,79 @@ queryData['driver'] = $("#driver").val(); queryData['lineId'] = $("#lineId").val(); queryData['state'] = $("#state").val(); + queryData['promotionUser'] = $("#promotionUser").val(); + queryData['abnormal'] = $("#abnormal").val(); + queryData['promotion'] = $("#promotion").val(); + TOrderCrossCity.table.refresh({query: queryData}); }; + + +TOrderCrossCity.exportExcel=function (){ + let p = ""; + let insertTime = $('#insertTime').val(); + let orderNum = $('#orderNum').val(); + let orderSource = $('#orderSource').val(); + let userName = $('#userName').val(); + let userPhone = $('#userPhone').val(); + let passengers = $('#passengers').val(); + let passengersPhone = $('#passengersPhone').val(); + let serverCarModelId = $('#serverCarModelId').val(); + let driver = $('#driver').val(); + let lineId = $('#lineId').val(); + let state = $('#state').val(); + let promotionUser = $('#promotionUser').val(); + let abnormal = $('#abnormal').val(); + let promotion = $('#promotion').val(); + if(null != insertTime && '' != insertTime){ + p += "insertTime=" + insertTime + "&"; + } + if(null != orderNum && '' != orderNum){ + p += "orderNum=" + orderNum + "&"; + } + if(null != orderSource && '' != orderSource){ + p += "orderSource=" + orderSource + "&"; + } + if(null != userName && '' != userName){ + p += "userName=" + userName + "&" ; + } + if(null != userPhone && '' != userPhone){ + p += "userPhone=" + userPhone + "&" ; + } + if(null != passengers && '' != passengers){ + p += "passengers=" + passengers + "&" ; + } + if(null != passengersPhone && '' != passengersPhone){ + p += "passengersPhone=" + passengersPhone + "&" ; + } + if(null != serverCarModelId && '' != serverCarModelId){ + p += "serverCarModelId=" + serverCarModelId + "&" ; + } + if(null != driver && '' != driver){ + p += "driver=" + driver + "&" ; + } + if(null != lineId && '' != lineId){ + p += "lineId=" + lineId + "&" ; + } + if(null != state && '' != state){ + p += "state=" + state + "&" ; + } + if(null != promotionUser && '' != promotionUser){ + p += "promotionUser=" + promotionUser + "&" ; + } + if(null != abnormal && '' != abnormal){ + p += "abnormal=" + abnormal + "&" ; + } + if(null != promotion && '' != promotion){ + p += "promotion=" + promotion + "&" ; + } + if('' != p){ + p = "?" + p.substring(0, p.length - 1); + } + console.log('p['+p+']') + window.location.href = Feng.ctxPath + '/tOrderCrossCity/export' + p; +} TOrderCrossCity.resetSearch = function () { $("#insertTime").val(""); $("#orderNum").val(""); @@ -377,6 +463,9 @@ $("#driver").val(""); $("#lineId").val(""); $("#state").val(""); + $("#promotionUser").val(""); + $("#abnormal").val(""); + $("#promotion").val(""); TOrderCrossCity.search(); }; diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderPrivateCar/tOrderPrivateCar.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderPrivateCar/tOrderPrivateCar.js index 29e168d..607fcbc 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderPrivateCar/tOrderPrivateCar.js +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderPrivateCar/tOrderPrivateCar.js @@ -223,7 +223,23 @@ } return btn; } - } + }, + {title: '是否异常订单', field: 'abnormal', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '是否推广订单', field: 'promotion', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '推广员姓名', field: 'promotionUser', visible: true, align: 'center', valign: 'middle', + + }, + {title: '推广员电话', field: 'promotionPhone', visible: true, align: 'center', valign: 'middle', + + }, ]; }; @@ -386,8 +402,79 @@ queryData['driver'] = $("#driver").val(); queryData['state'] = $("#state").val(); queryData['rideType'] = $('#rideType').val(); + queryData['promotionUser'] = $("#promotionUser").val(); + queryData['abnormal'] = $("#abnormal").val(); + queryData['promotion'] = $("#promotion").val(); TOrderPrivateCar.table.refresh({query: queryData}); }; + + + +TOrderPrivateCar.exportExcel=function (){ + let p = ""; + let insertTime = $('#insertTime').val(); + let orderNum = $('#orderNum').val(); + let orderSource = $('#orderSource').val(); + let userName = $('#userName').val(); + let userPhone = $('#userPhone').val(); + let passengers = $('#passengers').val(); + let passengersPhone = $('#passengersPhone').val(); + let serverCarModelId = $('#serverCarModelId').val(); + let driver = $('#driver').val(); + let rideType = $('#rideType').val(); + let state = $('#state').val(); + let promotionUser = $('#promotionUser').val(); + let abnormal = $('#abnormal').val(); + let promotion = $('#promotion').val(); + if(null != insertTime && '' != insertTime){ + p += "insertTime=" + insertTime + "&"; + } + if(null != orderNum && '' != orderNum){ + p += "orderNum=" + orderNum + "&"; + } + if(null != orderSource && '' != orderSource){ + p += "orderSource=" + orderSource + "&"; + } + if(null != userName && '' != userName){ + p += "userName=" + userName + "&" ; + } + if(null != userPhone && '' != userPhone){ + p += "userPhone=" + userPhone + "&" ; + } + if(null != passengers && '' != passengers){ + p += "passengers=" + passengers + "&" ; + } + if(null != passengersPhone && '' != passengersPhone){ + p += "passengersPhone=" + passengersPhone + "&" ; + } + if(null != serverCarModelId && '' != serverCarModelId){ + p += "serverCarModelId=" + serverCarModelId + "&" ; + } + if(null != driver && '' != driver){ + p += "driver=" + driver + "&" ; + } + if(null != rideType && '' != rideType){ + p += "rideType=" + rideType + "&" ; + } + if(null != state && '' != state){ + p += "state=" + state + "&" ; + } + if(null != promotionUser && '' != promotionUser){ + p += "promotionUser=" + promotionUser + "&" ; + } + if(null != abnormal && '' != abnormal){ + p += "abnormal=" + abnormal + "&" ; + } + if(null != promotion && '' != promotion){ + p += "promotion=" + promotion + "&" ; + } + if('' != p){ + p = "?" + p.substring(0, p.length - 1); + } + console.log('p['+p+']') + window.location.href = Feng.ctxPath + '/tOrderPrivateCar/export' + p; +} + TOrderPrivateCar.resetSearch = function () { $("#insertTime").val(""); @@ -401,6 +488,9 @@ $("#driver").val(""); $("#state").val(""); $('#rideType').val(''); + $("#promotionUser").val(""); + $("#abnormal").val(""); + $("#promotion").val(""); TOrderPrivateCar.search(); }; diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi.js index 67f39e0..143a0d8 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi.js +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi.js @@ -210,7 +210,23 @@ } return btn; } - } + }, + {title: '是否异常订单', field: 'abnormal', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '是否推广订单', field: 'promotion', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '推广员姓名', field: 'promotionUser', visible: true, align: 'center', valign: 'middle', + + }, + {title: '推广员电话', field: 'promotionPhone', visible: true, align: 'center', valign: 'middle', + + }, ]; }; @@ -390,8 +406,72 @@ queryData['passengersPhone'] = $("#passengersPhone").val(); queryData['driver'] = $("#driver").val(); queryData['state'] = $("#state").val(); + queryData['promotionUser'] = $("#promotionUser").val(); + queryData['abnormal'] = $("#abnormal").val(); + queryData['promotion'] = $("#promotion").val(); TOrderTaxi.table.refresh({query: queryData}); }; + + + +TOrderTaxi.exportExcel=function (){ + let p = ""; + let insertTime = $('#insertTime').val(); + let orderNum = $('#orderNum').val(); + let orderSource = $('#orderSource').val(); + let userName = $('#userName').val(); + let userPhone = $('#userPhone').val(); + let passengers = $('#passengers').val(); + let passengersPhone = $('#passengersPhone').val(); + let driver = $('#driver').val(); + let state = $('#state').val(); + let promotionUser = $('#promotionUser').val(); + let abnormal = $('#abnormal').val(); + let promotion = $('#promotion').val(); + if(null != insertTime && '' != insertTime){ + p += "insertTime=" + insertTime + "&"; + } + if(null != orderNum && '' != orderNum){ + p += "orderNum=" + orderNum + "&"; + } + if(null != orderSource && '' != orderSource){ + p += "orderSource=" + orderSource + "&"; + } + if(null != userName && '' != userName){ + p += "userName=" + userName + "&" ; + } + if(null != userPhone && '' != userPhone){ + p += "userPhone=" + userPhone + "&" ; + } + if(null != passengers && '' != passengers){ + p += "passengers=" + passengers + "&" ; + } + if(null != passengersPhone && '' != passengersPhone){ + p += "passengersPhone=" + passengersPhone + "&" ; + } + if(null != driver && '' != driver){ + p += "driver=" + driver + "&" ; + } + if(null != state && '' != state){ + p += "state=" + state + "&" ; + } + if(null != promotionUser && '' != promotionUser){ + p += "promotionUser=" + promotionUser + "&" ; + } + if(null != abnormal && '' != abnormal){ + p += "abnormal=" + abnormal + "&" ; + } + if(null != promotion && '' != promotion){ + p += "promotion=" + promotion + "&" ; + } + if('' != p){ + p = "?" + p.substring(0, p.length - 1); + } + console.log('p['+p+']') + window.location.href = Feng.ctxPath + '/tOrderTaxi/export' + p; +} + + TOrderTaxi.resetSearch = function () { $("#insertTime").val(""); @@ -403,6 +483,9 @@ $("#passengersPhone").val(""); $("#driver").val(""); $("#state").val(""); + $("#promotionUser").val(""); + $("#abnormal").val(""); + $("#promotion").val(""); TOrderTaxi.search(); }; diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/trPrivateOrdeCar/tOrderPrivateCar.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/trPrivateOrdeCar/tOrderPrivateCar.js new file mode 100644 index 0000000..4c748ce --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/trPrivateOrdeCar/tOrderPrivateCar.js @@ -0,0 +1,434 @@ +/** + * 快车订单管理初始化 + */ +var TOrderPrivateCar = { + id: "TOrderPrivateCarTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; + +/** + * 初始化表格的列 + */ +TOrderPrivateCar.initColumn = function () { + return [ + {field: 'selectItem', radio: true}, + {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '下单时间', 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: '订单编号', 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: 'orderSource', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.orderSource != '' && row.orderSource != null) { + if (row.orderSource == 1){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="APP下单" onfocus="TUser.tooltip()">APP下单</p>'] + } else if (row.orderSource == 2){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="扫码下单" onfocus="TUser.tooltip()">扫码下单</p>'] + } else if (row.orderSource == 3){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="小程序下单" onfocus="TUser.tooltip()">小程序下单</p>'] + } else if (row.orderSource == 4){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="司机下单" onfocus="TUser.tooltip()">司机下单</p>'] + } else if (row.orderSource == 5){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="调度下单" onfocus="TUser.tooltip()">调度下单</p>'] + } + } + return btn; + } + }, + {title: '订单类型', field: 'rideType', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.rideType != '' && row.rideType != null) { + if (row.rideType == 1){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="独享订单" onfocus="TUser.tooltip()">独享订单</p>'] + } else if (row.rideType == 2){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="一口价订单" onfocus="TUser.tooltip()">一口价订单</p>'] + } else if (row.rideType == 3){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="拼车订单" onfocus="TUser.tooltip()">拼车订单</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: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'}, + {title: '下单用<br/>户昵称', field: 'userName', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.userName != '' && row.userName != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userName + '" onfocus="TUser.tooltip()">' + row.userName + '</p>'] + } + return btn; + } + }, + {title: '下单用<br/>户手机', field: 'userPhone', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.userPhone != '' && row.userPhone != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userPhone + '" onfocus="TUser.tooltip()">' + row.userPhone + '</p>'] + } + return btn; + } + }, + {title: '乘车用<br/>户姓名', field: 'passengers', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.passengers != '' && row.passengers != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.passengers + '" onfocus="TUser.tooltip()">' + row.passengers + '</p>'] + } + return btn; + } + }, + {title: '乘车用<br/>户手机', field: 'passengersPhone', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.passengersPhone != '' && row.passengersPhone != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.passengersPhone + '" onfocus="TUser.tooltip()">' + row.passengersPhone + '</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: '选择车型', field: 'serverCarModelName', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.serverCarModelName != '' && row.serverCarModelName != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.serverCarModelName + '" onfocus="TUser.tooltip()">' + row.serverCarModelName + '</p>'] + } + return btn; + } + }, + {title: '接单司机', field: 'driver', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.driver != '' && row.driver != null) { + var driverName1 = row.driver.replace("-","<br>"); + var driverName2 = row.driver.replace("-"," "); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + driverName2 + '" onfocus="TUser.tooltip()">' + driverName1 + '</p>'] + } + return btn; + } + }, + {title: '接单车辆', field: 'car', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.car != '' && row.car != null) { + var car1 = row.car.replace("-","<br>"); + var car2 = row.car.replace("-"," "); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + car2 + '" onfocus="TUser.tooltip()">' + car1 + '</p>'] + } + return btn; + } + }, + {title: '订单金额', field: 'orderMoney', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.orderMoney != '' && row.orderMoney != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.orderMoney + '" onfocus="TUser.tooltip()">' + row.orderMoney + '</p>'] + } + return btn; + } + }, + {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.state != '' && row.state != null) { + if (row.state == 1){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待接单" onfocus="TUser.tooltip()">待接单</p>'] + } else if (row.state == 2){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" 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>'] + } else if (row.state == 6){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="完成服务" onfocus="TUser.tooltip()">完成服务</p>'] + } else if (row.state == 7){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待支付" onfocus="TUser.tooltip()">待支付</p>'] + } else if (row.state == 8){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待评价" onfocus="TUser.tooltip()">待评价</p>'] + } else if (row.state == 9){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已完成" onfocus="TUser.tooltip()">已完成</p>'] + } else if (row.state == 10){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已取消" onfocus="TUser.tooltip()">已取消</p>'] + } else if (row.state == 11){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="改派中" onfocus="TUser.tooltip()">改派中</p>'] + } else if (row.state == 12){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="取消待支付" onfocus="TUser.tooltip()">取消待支付</p>'] + } + } + return btn; + } + }, + {title: '是否异常订单', field: 'abnormal', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '是否推广订单', field: 'promotion', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + return {1:"否",2:"是"}[value]; + } + }, + {title: '推广员姓名', field: 'promotionUser', visible: true, align: 'center', valign: 'middle', + + }, + {title: '推广员电话', field: 'promotionPhone', visible: true, align: 'center', valign: 'middle', + + }, + ]; +}; + +/** + * 检查是否选中 + */ +TOrderPrivateCar.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + TOrderPrivateCar.seItem = selected[0]; + return true; + } +}; + +/** + * 添加快车订单 + */ +TOrderPrivateCar.addOrder =function(){ + var index = layer.open({ + type: 2, + title: '添加快车订单', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_addOrder' + }); + this.layerIndex = index; + +}; + +/** + * 打开查看快车订单详情 + */ +TOrderPrivateCar.orderDetail = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: '快车订单详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_orderDetail/' + TOrderPrivateCar.seItem.id + }); + this.layerIndex = index; + } +}; + +/** + * 取消订单 + */ +TOrderPrivateCar.cancelOrder = function(){ + if (this.check()) { + var nickname = TOrderPrivateCar.seItem.orderNum; + if (nickname == "" || nickname == null || nickname == undefined) { + nickname = "该订单"; + } else { + nickname = "【" + nickname + "】"; + } + if (TOrderPrivateCar.seItem.state == 7 || TOrderPrivateCar.seItem.state == 8 || TOrderPrivateCar.seItem.state == 9 || TOrderPrivateCar.seItem.state == 10 ) { + swal("取消失败", "【待评价】【已完成】【已取消】状态下不能执行此操作", "warning"); + return; + } + swal({ + title: "您是否确认取消订单" + nickname + "?", + text: "请谨慎操作,取消后数据无法恢复!", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "取消订单", + closeOnConfirm: false + }, function () { + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/cancel", function (data) { + layer.msg("加载中...",{ + icon:16, + time:-1 + }); + swal("取消订单成功", "您已经成功取消了" + nickname + "。", "success"); + TOrderPrivateCar.table.refresh(); + layer.closeAll() + }, function (data) { + swal("取消订单失败", data.responseJSON.message + "!", "warning"); + layer.closeAll() + }); + ajax.set("tOrderPrivateCarId", TOrderPrivateCar.seItem.id); + ajax.start(); + }); + } +} + +/** + * 订单轨迹 + */ +TOrderPrivateCar.trajectory = function(){ + if (this.check()) { + var index = layer.open({ + type: 2, + title: '快车订单轨迹', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_trajectory/' + TOrderPrivateCar.seItem.id + }); + this.layerIndex = index; + } +} + + +/** + * 删除快车订单 + */ +TOrderPrivateCar.deleteOrder = function () { + if (this.check()) { + var orderNum = TOrderPrivateCar.seItem.orderNum; + if (orderNum == "" || orderNum == null || orderNum == undefined) { + orderNum = "该订单"; + } else { + orderNum = "【" + orderNum + "】"; + } + if (TOrderPrivateCar.seItem.state != 10) { + swal("删除失败", "【已取消】状态下才能执行此操作", "warning"); + return; + } + swal({ + title: "您是否确认删除" + orderNum + "?", + text: "请谨慎操作,删除后数据无法恢复!", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "删除", + closeOnConfirm: false + }, function () { + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/delete", function (data) { + swal("删除成功", "您已经删除了" + orderNum + "。", "success"); + TOrderPrivateCar.table.refresh(); + }, function (data) { + swal("删除失败", data.responseJSON.message + "!", "warning"); + }); + ajax.set("tOrderPrivateCarId", TOrderPrivateCar.seItem.id); + ajax.start(); + }); + } +}; + +/** + * 查询快车订单列表 + */ +TOrderPrivateCar.search = function () { + var queryData = {}; + queryData['insertTime'] = $("#insertTime").val(); + queryData['orderNum'] = $("#orderNum").val(); + queryData['orderSource'] = $("#orderSource").val(); + queryData['userName'] = $("#userName").val(); + queryData['userPhone'] = $("#userPhone").val(); + queryData['passengers'] = $("#passengers").val(); + queryData['passengersPhone'] = $("#passengersPhone").val(); + queryData['serverCarModelId'] = $("#serverCarModelId").val(); + queryData['driver'] = $("#driver").val(); + queryData['state'] = $("#state").val(); + queryData['rideType'] = $('#rideType').val(); + queryData['promotionUser'] = $("#promotionUser").val(); + queryData['abnormal'] = $("#abnormal").val(); + queryData['promotion'] = $("#promotion").val(); + TOrderPrivateCar.table.refresh({query: queryData}); +}; + +TOrderPrivateCar.resetSearch = function () { + $("#insertTime").val(""); + $("#orderNum").val(""); + $("#orderSource").val(""); + $("#userName").val(""); + $("#userPhone").val(""); + $("#passengers").val(""); + $("#passengersPhone").val(""); + $("#serverCarModelId").val(""); + $("#driver").val(""); + $("#state").val(""); + $('#rideType').val(''); + $("#promotionUser").val(""); + $("#abnormal").val(""); + $("#promotion").val(""); + TOrderPrivateCar.search(); +}; + +$(function () { + var defaultColunms = TOrderPrivateCar.initColumn(); + var table = new BSTable(TOrderPrivateCar.id, "/tOrderPrivateCar/list", defaultColunms); + table.setPaginationType("server"); + TOrderPrivateCar.table = table.init(); +}); diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/trPrivateOrdeCar/tOrderPrivateCar_info.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/trPrivateOrdeCar/tOrderPrivateCar_info.js new file mode 100644 index 0000000..b26ba58 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/trPrivateOrdeCar/tOrderPrivateCar_info.js @@ -0,0 +1,287 @@ +/** + * 初始化快车订单详情对话框 + */ +var TOrderPrivateCarInfoDlg = { + tOrderPrivateCarInfoData: {} +}; + +/** + * 清除数据 + */ +TOrderPrivateCarInfoDlg.clearData = function () { + this.tOrderPrivateCarInfoData = {}; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TOrderPrivateCarInfoDlg.set = function (key, val) { + this.tOrderPrivateCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; + return this; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TOrderPrivateCarInfoDlg.get = function (key) { + return $("#" + key).val(); +} + +/** + * 关闭此对话框 + */ +TOrderPrivateCarInfoDlg.close = function () { + parent.layer.close(window.parent.TOrderPrivateCar.layerIndex); +} + +/** + * 收集数据 + */ +TOrderPrivateCarInfoDlg.collectData = function () { + this + .set('id') + .set('type') + .set('userId') + .set('driverId') + .set('carId') + .set('orderNum') + .set('placementLon') + .set('placementLat') + .set('placementAddress') + .set('startLon') + .set('startLat') + .set('endLon') + .set('startAddress') + .set('endLat') + .set('endAddress') + .set('boardingLon') + .set('boardingLat') + .set('boardingAddress') + .set('boardingTime') + .set('getoffLon') + .set('getoffLat') + .set('getoffAddress') + .set('getoffTime') + .set('mileage') + .set('payManner') + .set('payType') + .set('orderMoney') + .set('startMoney') + .set('mileageMoney') + .set('durationMoney') + .set('longDistanceMoney') + .set('parkMoney') + .set('roadTollMoney') + .set('redPacketMoney') + .set('couponMoney') + .set('redPacketId') + .set('couponId') + .set('discount') + .set('discountMoney') + .set('activityId') + .set('companyId') + .set('payMoney') + .set('substitute') + .set('passengers') + .set('passengersPhone') + .set('state') + .set('insertTime') + .set('travelTime') + .set('snatchOrderTime') + .set('setOutTime') + .set('arriveTime') + .set('startServiceTime') + .set('endServiceTime') + .set('orderType') + .set('orderSource') + .set('invoiceId') + .set('isReassign') + .set('reassignNotice') + .set('trackId') + .set('isDelete') + .set('oldState') + .set('telX') + .set('bindId') + .set('serverCarModelId'); +} + +/** + * 提交添加 + */ +TOrderPrivateCarInfoDlg.addSubmit = function () { + + this.clearData(); + this.collectData(); + + if ($("#startAddress").val() === ""){ + Feng.error("请输入起点"); + return false; + } + if ($("#endAddress").val() === ""){ + Feng.error("请输入终点"); + return false; + } + if ($("#travelTime").val() === ""){ + Feng.error("请选择用车时间"); + return false; + } + if ($("#passengers").val() === ""){ + Feng.error("请输入乘车人姓名"); + return false; + } + if ($("#passengersPhone").val() === ""){ + Feng.error("请输入乘车人手机号"); + return false; + } + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/add", function (data) { + Feng.success("添加成功!"); + window.parent.TOrderPrivateCar.table.refresh(); + TOrderPrivateCarInfoDlg.close(); + }, function (data) { + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tOrderPrivateCarInfoData); + ajax.start(); +} + +/** + * 提交修改 + */ +TOrderPrivateCarInfoDlg.editSubmit = function () { + + this.clearData(); + this.collectData(); + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/update", function (data) { + Feng.success("修改成功!"); + window.parent.TOrderPrivateCar.table.refresh(); + TOrderPrivateCarInfoDlg.close(); + }, function (data) { + Feng.error("修改失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tOrderPrivateCarInfoData); + ajax.start(); +} + +var map = new AMap.Map("container", { + resizeEnable: true, + zoom: 14 +}); +$(function () { + var type = $("#type").val(); + if (type != 2) { + getTrajectory(); + } +}); + +function getTrajectory() { + $.ajax({ + url: Feng.ctxPath + '/tOrderPrivateCar/getOrderTrack', + type: 'POST', + data: { + orderDetailId: $("#id").val() + }, + success: function (res) { + if (res.status == 200) { + var data = res.data; + if (data.length > 0) { + orderTrack(data); + } + /*else{ + Feng.error("当前订单没有轨迹"); + }*/ + } else { + Feng.error(res.msg); + } + } + }); +} + +var marker, lineArr = []; + +function orderTrack(data) { + for (var i in data) { + var waypoints = []; + var lon = parseFloat(data[i].lon); + var lat = parseFloat(data[i].lat); + waypoints.push(lon); + waypoints.push(lat); + lineArr.push(waypoints); + } + + marker = new AMap.Marker({ + map: map, + position: lineArr[0], + icon: "https://webapi.amap.com/images/car.png", + offset: new AMap.Pixel(-26, -13), + autoRotation: true, + angle: -90, + }); + + // 绘制轨迹 + var polyline = new AMap.Polyline({ + map: map, + path: lineArr, + showDir: true, + strokeColor: "#28F", //线颜色 + // strokeOpacity: 1, //线透明度 + strokeWeight: 6, //线宽 + // strokeStyle: "solid" //线样式 + }); + + var passedPolyline = new AMap.Polyline({ + map: map, + // path: lineArr, + strokeColor: "#AF5", //线颜色 + // strokeOpacity: 1, //线透明度 + strokeWeight: 6, //线宽 + // strokeStyle: "solid" //线样式 + }); + + + marker.on('moving', function (e) { + passedPolyline.setPath(e.passedPath); + }); + + map.setFitView(); +} + + +function startAnimation() { + marker.moveAlong(lineArr, 200); +} + +function pauseAnimation() { + marker.pauseMove(); +} + +function resumeAnimation() { + marker.resumeMove(); +} + +function stopAnimation() { + marker.stopMove(); +} + +/** + * 选择起点 + */ +TOrderPrivateCarInfoDlg.startAddress = function () { + $("#startAddressModel").show(); +}; + + +/** + * 选择终点 + */ +TOrderPrivateCarInfoDlg.endAddress = function () { + $("#endAddressModel").show(); +}; -- Gitblit v1.7.1