一、今日完成任务

退票

改签

二、核心源码:

1)退票:

未支付、已退票、已改签不能点击退票

<c:forEach items="${list}" var="car">
                      <input type="hidden" value="${car.start_date}" id="s_date"/>
                      <input type="hidden" value="${car.start_time}" id="s_time"/>
                      <tr>
                      <td>${car.odate}</td>
                      <td>${car.urealname}</td>
                      <td>二代身份证</td> 
                      <td>${car.ucard}</td>
                      <td>${car.tnum}&nbsp;${car.start_date}&nbsp;${car.start_time}开<br/>
                          ${car.begin_sta}-${car.end_sta}
                      </td>
                      <td>${car.seatnum}</td>
                      <td>${car.oprice}</td>
                      <td><c:if test="${car.state==0}">未支付</c:if>
                          <c:if test="${car.state==1}">已支付</c:if>
                          <c:if test="${car.state==2}">已退票</c:if>
                          <c:if test="${car.state==3}">已改签</c:if>
                      </td>
                      <td><c:if test="${car.state==0||car.state==2||car.state==3}">无操作</c:if>
                          
                          <c:if test="${car.state==1}"><a class=\'yd\' href="javascript:tp(\'refund/${car.oid}\')">退票</a><a href="change/${car.oid}" class="yd" onclick="">改签</a> </c:if>
                      </td>
                  </tr>
                  </c:forEach>

发车前两小时内以及超过发车时间,不能退票

function tp(str){
        var layer;
        layui.use(\'layer\', function(){
            layer = layui.layer;
        });
        //查看是否已经超过发车时间 超过不予退票
        var mydate = new Date();
        
        var s_date=$("#s_date").val();
        var s_time=$("#s_time").val();
        var date2=new Date(s_date);
        if(date2.getTime()<mydate.getTime()){
            layer.alert("发车前两小时内以及超过发车时间,不能退票", {icon: 1,offset:[\'400px\',\'900px\']});
        }
    }
//退票页面
    @RequestMapping("/refund/{oid}")
    public String refund(@PathVariable("oid")int oid,HttpServletRequest request){
        CarTrainOrder selectFkOrder = carSerivce.selectFkOrder(oid);
        request.setAttribute("car", selectFkOrder);
        return "../refund.jsp";
    }
//退票 
    //删除车票信息  
    //更新座位数carinfo中seatnum
    //更新订单表中state=2
    @Delete("delete from ticketinfo where oid=#{oid}")
    public int deleteTicket(int oid);
    
    @Update("update carinfo set snum=snum+1 where cid=#{cid}")
    public int updateCarinfo(int cid);
    
    @Update("update orderinfo set state=2 where oid=#{oid}")
    public int updateOrder(int oid);
    //退票
    @RequestMapping("/confirmRefund")
    @ResponseBody
    public String confirmRefund(int oid,int cid){
        //删除车票信息  
        //更新座位数carinfo中seatnum
        //更新订单表中state=2
        int confirmRefund = carSerivce.confirmRefund(oid, cid);
        if(confirmRefund>0){
            return "true";
        }
        return "false";
    }

页面展示

 

 

 

 

 

 

 (2)改签

1.改签车票时,不能变更出发地、目的地、票种和身份信息

//点击图标显示地址
    $(function(){
        var layer;
        layui.use(\'layer\', function(){
            layer = layui.layer;
        });
        //给文本框赋值 
        $("#begin").val("${car.begin_sta}");
        $("#cf").val("${car.end_sta}");
        //文本框设为只读 
        $("#begin").attr("readonly",true);
        $("#cf").attr("readonly",true);
        $(\'#cf\').removeAttr(\'onclick\');
    });
    //点击日期图标弹出日期框 
    layui.use(\'laydate\', function(){
        var laydate = layui.laydate;
        //常规用法
          laydate.render({
            elem: \'#time\',
            eventElem:"#rq",
            trigger: \'click\',
            min:minDate()
          });
    });
    function minDate() {
         var now = new Date();
         return now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate();
    }

 

三、遇到的问题:

1)业务流程不熟悉,花费时间较多

四、解决的方法:

1)浏览售票网站,参考功能设计

五、项目燃尽图更新:

 

 

版权声明:本文为guotongxue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/guotongxue/archive/2004/01/13/13409979.html