记12306货运系统“抢订空车”插件的编写--订车流程梳理

前端之家收集整理的这篇文章主要介绍了记12306货运系统“抢订空车”插件的编写--订车流程梳理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

--订车流程梳理

接了这个活,才知道原来12306网站还有这功能;整个网站还是挺复杂的嘛。整个订车过程跟平时买客运火车票很类似,相当于是各物流公司为自己的货物“抢票”,然后才有资格用货运列车来运送自己的货。

首先来梳理一下整个订车过程:

1、 在12306网站主页点击“货运服务”。

2、 在页面左下角选择物流公司对应铁路局的网站。

图‑1

3、 选“常客户登陆”登入对应网站系统。登录时需要输入验证码。

图‑2

4、 选择“预约”功能

图‑3

5、 点“在线预约”打开预约页面,填入未来数月内需要预约运输的货物的基本信息、收发货信息等,然后保存并提报审核,审核通过之后即可作为一条预约信息。这一步的大概意思是为方便铁路部门调配货运列车,这一步审核通过才说明存在满足运输需求的列车班次,是下一步订空车(抢票)的前提。

图‑4

6、 预约保存并提报审核成功之后,就可以进行下一步了:在左侧菜单中点击“订车”。

7、 在“输入查询关键字”一栏输入关键字或直接点击输入框,可列出符合条件的预约信息。

图‑5

8、 点击其中一条信息,则对应的预约信息自动填入下面的表格中。

9、 对相关信息进行调整之后,点击“保存”,则下方的“未报空车查询结果”列表中会多出一条对应的记录。

图‑6

10、选中该记录并“提报”,如果信息无误,即可完成一次空车的预订,接下来就是等待铁路部门的审批了。

在以上步骤中,除去登录步骤,第5步的预约是可以提前做好的。只要计划充分,甚至可以提前预约后面三个月的计划。所以,每次“抢订”的时候,6—10步是关键的步骤,也是比较耗时的,尤其是第10步提报之前,第7—9步的获取预约信息、保存空车信息这两步其实耗费了很多不必要的时间。因此要加快抢订速度,插件要做的就是要加快这两步的速度,那么就让我们来看一下网站的源代码,来分析一下在这些步骤中,相关代码的大致流程吧。

通过查看源码,可以看到在图-5对应的界面中,页面中间偏右的部分其实是一个iframe;用户点击页面上部的菜单栏时,通过为iframe指定不同的url,来进入不同的功能页面(主要是后面的参数classId不同。图-5对应的子页面的url为站点根路径下的:“/gateway/hydzsw/Dzsw/action/NavigationAction_redirect?classId=684”。当然这只是一个跳转地址,我们在浏览器新窗口中打开该链接,就会发现页面跳转到了另一个地址:“/gateway/hydzsw/Dzsw/action/ZcrbjhAction_initAdd?currentPosition=%E9%A2%84%E7%BA%A6%26nbsp%3B%3E%3E%26nbsp%3B%E8%AE%A2%E7%A9%BA%E8%BD%A6”,如下图所示:

图‑7

查看此页面代码,就可以找出抢订空车所需的所有核心代码了。我们来捋一捋整个订车过程中涉及到的代码

1.【输入查询关键字】,该输入框是autocomplete的,其数据url为"/gateway/hydzsw/Dzsw/action/ZcrbjhAction_getYsxq" ,得到数据后格式化并填充到候选列表中供用户选择。

2.【点击一项候选结果】,则调用resultFunc(item)及createZyz(PZYCFH)方法,将默认数据填入订空车的表单中,其中装车日期、货区货位、到货短信通知、收货人电话这几项可能需要用户调整。

3.【点击保存】,进行停限装校验“/gateway/hydzsw/Dzsw/action/TbInformationRestrictionAction_checkOrder”,事实上,只要ajax请求成功,无论校验成功与否都会进入下一步。

4.【保存订车信息】,调用save()函数,序列化订车信息表单并提交Ajax:"/gateway/hydzsw/Dzsw/action/ZcrbjhAction_add" ,然后调用clearForm();刷新整个页面,此时“未报空车查询结果”列表中出现目前提交过的空车新消息,其中最总要的信息是每一行隐藏域中的uuid值。

5.【提报】,调用 commitAction(); 显示提示注意事项,勾选“同意”按钮之后,调用 showSubmitBtn();显示最终的提报按钮,点击之后调用submitFun();函数,通过Ajax “/gateway/hydzsw/Dzsw/action/ZcrbjhAction_operateZcrbjh”,最重要的参数是uuids,其值为当前提报的所有空车信息的uuid,由逗号拼接。

至此,一个完整的订空车的过程就完成了;天色已晚,改日再续……

猜你在找的Ajax相关文章