--订车流程梳理
接了这个活,才知道原来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,由逗号拼接。
至此,一个完整的订空车的过程就完成了;天色已晚,改日再续……