No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 

369 líneas
13 KiB

  1. //蜘蛛班次:
  2. //使用:
  3. /*
  4. html中 <div id="sel_car" class="ub ub-ver select_hei"></div>
  5. */
  6. /*
  7. js
  8. run_list:班次数组
  9. run_date:配合cache_select_data使用 cache_select_data中的key
  10. cache_select_data:缓存对象 格式如下
  11. window.runbus.init({
  12. run_list:js.data.class_station_list,
  13. run_date:"2017-03-08",
  14. cache_select_data:{"2017-03-08":{cache_run_id:2,cache_start_station_id:"2_0",cache_end_station_id:"2_0_2"}}
  15. },function(run,start,end){
  16. console.log(run,start,end);
  17. });
  18. //callback=>班次回调
  19. //callback2=>上车站回调
  20. //callback3=>下车站回调
  21. */
  22. (function($) {
  23. window.runbus = window.runbus || {};
  24. var initData = {};
  25. var cache_select_data = {};
  26. //切换班次信息
  27. var passindex = '';
  28. var selectindex = '';
  29. var runlist = [];
  30. var run_date = "";
  31. //回调出去的参数
  32. var call_run = {};
  33. var call_start_station = {};
  34. var call_end_station = {};
  35. window.runbus.init = function(initData, callback, callback2, callback3) {
  36. runlist = initData['run_list'] ? initData['run_list'] : [];
  37. run_date = initData['run_date'] ? initData['run_date'] : "";
  38. cache_select_data = initData['cache_select_data'] ? initData['cache_select_data'] : {};
  39. showGoInfo(runlist);
  40. //展示去程的站点信息
  41. function showGoInfo(runlist) {
  42. console.log(runlist);
  43. var listHTML = '';
  44. var start_stationHTML = '';
  45. var end_stationHTML = '';
  46. runlist.forEach(function(dict, index) {
  47. //上车站内容
  48. var start_station_list = dict['start_station_list'];
  49. start_stationHTML = getStartHtml(start_station_list);
  50. var end_list = [];
  51. var cache_sel = 'bus_kong';
  52. var t = '';
  53. var temp = '';
  54. if(cache_select_data.hasOwnProperty(run_date)) {
  55. t = cache_select_data[run_date];
  56. if(t.cache_run_id == dict['run_id']) {
  57. cache_sel = 'bus_sel_image';
  58. temp = 'open';
  59. start_station_list.forEach(function(v, i) {
  60. if(v['start_res_id'] == t.cache_start_station_id) {
  61. end_list = v.end_station_list;
  62. }
  63. })
  64. }
  65. }
  66. end_stationHTML = getEndHtml(end_list, false);
  67. var dictstr = JSON.stringify(dict);
  68. // onclick="changeTheBusInfo(this)"
  69. dictstr = dictstr.replace(/"/g, '&quot;');
  70. // var html1 = `<div class="ub ub-ver bor_b_e5">
  71. // <div class="ub ub-ac runbus ${temp}" dict="${dictstr}" >
  72. // <div class="ui_p_t12 ui_p_b12 ui_p_l15 ulev1 text_c_2b" style="padding-right: 0.22rem;" run_time_id="${dict.run_id}">${dict.run_time}</div>
  73. // <div class="ub-f1 text_c_80">余票充足</div>
  74. // <div class="ui_p_r15 ui_p_t10 ui_p_b10 ui_p_l15">
  75. // <div class="${cache_sel} run_bus"></div>
  76. // </div>
  77. // </div>
  78. // <div class="ub ub-ver station" style="background-color: #f6f6f6;display: none;">
  79. // <div class="ub start_station">
  80. // <div class="ulev1 text_c_2b ui_p_l15 ui_p_r15 ui_p_t12">上车站</div>
  81. // <div class="ub ub-ver ub-f1" style="width: 1%;">
  82. // ${start_stationHTML}
  83. // </div>
  84. // </div>
  85. // <div class="ub ">
  86. // <div class="ulev1 text_c_2b ui_p_l15 ui_p_r15 ui_p_t12">下车站</div>
  87. // <div class="ub ub-ver ub-f1 end_station" style="width: 1%;">
  88. // ${end_stationHTML}
  89. // </div>
  90. // </div>
  91. // </div>
  92. // </div>`
  93. var html1 = '<div class="ub ub-ver bor_b_e5">' +
  94. '<div class="ub ub-ac runbus ' + temp + '" dict="' + dictstr + '" >' +
  95. ' <div class="ui_p_t12 ui_p_b12 ui_p_l15 ulev1 text_c_2b" style="padding-right: 0.22rem;" run_time_id="' + dict.run_id + '">' + dict.run_time + '</div>' +
  96. ' <div class="ub-f1 text_c_80">余票充足</div>' +
  97. ' <div class="ui_p_r15 ui_p_t10 ui_p_b10 ui_p_l15">' +
  98. ' <div class="' + cache_sel + ' run_bus"></div>' +
  99. ' </div>' +
  100. '</div>' +
  101. '<div class="ub ub-ver station" style="background-color: #f6f6f6;display: none;">' +
  102. ' <div class="ub start_station">' +
  103. ' <div class="ulev1 text_c_2b ui_p_l15 ui_p_r15 ui_p_t12">上车站</div>' +
  104. ' <div class="ub ub-ver ub-f1" style="width: 1%;">' +
  105. start_stationHTML +
  106. ' </div>' +
  107. ' </div>' +
  108. ' <div class="ub ">' +
  109. ' <div class="ulev1 text_c_2b ui_p_l15 ui_p_r15 ui_p_t12">下车站</div>' +
  110. ' <div class="ub ub-ver ub-f1 end_station" style="width: 1%;">' +
  111. end_stationHTML +
  112. ' </div>' +
  113. ' </div>' +
  114. '</div>' +
  115. '</div>';
  116. listHTML += html1;
  117. })
  118. $('#sel_car').html(listHTML);
  119. $('.runbus').on('click', function(e) {
  120. changeTheBusInfo($(this));
  121. });
  122. $('.start_station_all').on('click', function(e) {
  123. var list = $(this).attr('dict');
  124. list = JSON.parse(list);
  125. changeTheStartStation(list, $(this), true);
  126. })
  127. $('.open').next().slideDown();
  128. var tobj = $('.open').next().find('.sel_station_sigle_start');
  129. passindex = $('.open');
  130. var cstr = $('.open').next().find('.sel_station_sigle_start').attr('dict');
  131. if(cstr) {
  132. var endlist = JSON.parse(cstr);
  133. changeTheStartStation(endlist, tobj, false);
  134. }
  135. }
  136. //得到上车站内容
  137. function getStartHtml(start_station_list) {
  138. var temp_start_stationHTML = '';
  139. var temp_end_stationFirst = '';
  140. start_station_list.forEach(function(start_dict, index) {
  141. var cache_sel = 'select_quan';
  142. var t = '';
  143. var sel_station_sigle_start = '';
  144. if(cache_select_data.hasOwnProperty(run_date)) {
  145. t = cache_select_data[run_date];
  146. if(t.cache_start_station_id == start_dict['start_res_id']) {
  147. cache_sel = 'select_gou';
  148. sel_station_sigle_start = 'sel_station_sigle_start';
  149. }
  150. } else {
  151. if(index == 0) {
  152. cache_sel = 'select_gou';
  153. sel_station_sigle_start = 'sel_station_sigle_start';
  154. }
  155. }
  156. var cstr = JSON.stringify(start_dict['end_station_list']);
  157. cstr = cstr.replace(/"/g, '&quot;');
  158. // onclick="changeTheStartStation(${cstr},this,true)"
  159. var html2 = '<div class="start_station_all ub ub-ac ui_p_t12 ui_p_b12 bor_b_e5 ' + sel_station_sigle_start + '" dict="' + cstr + '" >' +
  160. '<div class="ub-f1 text_c_80 " start_station_id="' + start_dict.start_res_id + '">' + start_dict.start_res_name + '</div>' +
  161. '<div class="ui_p_r15"><div class="start_image ' + cache_sel + '"></div></div>' +
  162. '</div>'
  163. temp_start_stationHTML += html2;
  164. })
  165. return temp_start_stationHTML
  166. }
  167. //得到下车站内容
  168. function getEndHtml(end_station_list, isClick) {
  169. var html = '';
  170. var end_ids = [];
  171. if(end_station_list.length > 0) {
  172. end_ids = end_station_list.map(function(v) { return v['station_id'] });
  173. }
  174. var t = '';
  175. end_station_list.forEach(function(end_dict, index) {
  176. var cache_sel = 'select_quan';
  177. var sel_station_sigle_end = '';
  178. if(isClick == true) {
  179. if(index == 0) {
  180. cache_sel = 'select_gou';
  181. sel_station_sigle_end = 'sel_station_sigle_end';
  182. }
  183. } else {
  184. if(cache_select_data.hasOwnProperty(run_date)) {
  185. t = cache_select_data[run_date];
  186. if($.inArray(t.cache_end_station_id, end_ids) > -1) {
  187. if(t.cache_end_station_id == end_dict['station_id']) {
  188. cache_sel = 'select_gou';
  189. sel_station_sigle_end = 'sel_station_sigle_end';
  190. }
  191. } else {
  192. if(index == 0) {
  193. cache_sel = 'select_gou';
  194. sel_station_sigle_end = 'sel_station_sigle_end';
  195. }
  196. }
  197. } else {
  198. if(index == 0) {
  199. cache_sel = 'select_gou';
  200. sel_station_sigle_end = 'sel_station_sigle_end';
  201. }
  202. }
  203. }
  204. var str = 'bor_b_e5';
  205. if(index == end_station_list.length - 1) {
  206. str = '';
  207. }
  208. // onclick="changeTheEndStation(this)"
  209. var html3 = '<div class="end_station_all ub ub-ac ui_p_t12 ' + sel_station_sigle_end + ' ui_p_b12 '+str+'">' +
  210. ' <div class="ub-f1 text_c_80 " count="' + end_dict.count + '" pro_cate_id="' + end_dict.pro_cate_id + '" end_station_id="' + end_dict.station_id + '">' + end_dict.station_name + '</div>' +
  211. ' <div class="ui_p_r15"><div class="end_image ' + cache_sel + '"></div></div>' +
  212. '</div>';
  213. html += html3;
  214. })
  215. return html;
  216. }
  217. function changeTheBusInfo(obj) {
  218. var cstr = $(obj).attr('dict');
  219. var dict = JSON.parse(cstr);
  220. var tobj = $(obj).next().find('.start_station_all:first');
  221. var endlist = dict.start_station_list[0].end_station_list;
  222. changeTheStartStation(endlist, tobj, true);
  223. var next = $(obj).next();
  224. next.slideToggle();
  225. $(obj).parent().parent().find('.station').not(next).slideUp();
  226. selectindex = obj;
  227. if(selectindex.hasClass('open') && passindex.hasClass('open')) {
  228. $(selectindex).removeClass('open');
  229. $(selectindex).removeClass('bor_b_e5');
  230. $(selectindex).find('.run_bus').removeClass('bus_sel_image');
  231. $(selectindex).find('.run_bus').addClass('bus_kong');
  232. $('#select_run_bus').text('选择乘坐班次');
  233. passindex = '';
  234. } else {
  235. $(passindex).removeClass('open');
  236. $(passindex).removeClass('bor_b_e5');
  237. $(passindex).find('.run_bus').removeClass('bus_sel_image');
  238. $(passindex).find('.run_bus').addClass('bus_kong');
  239. $(selectindex).addClass('open');
  240. $(selectindex).addClass('bor_b_e5');
  241. $(selectindex).find('.run_bus').removeClass('bus_kong');
  242. $(selectindex).find('.run_bus').addClass('bus_sel_image');
  243. var t_text = $(obj).children().eq(0).text();
  244. $('#select_run_bus').text('选择乘坐班次--' + t_text);
  245. passindex = selectindex;
  246. }
  247. $('.open').next().find('.start_station_all').first().addClass('sel_station_sigle_start');
  248. $('.open').next().find('.end_station_all').first().addClass('sel_station_sigle_end');
  249. $('.open').next().find('.start_image').removeClass('select_gou');
  250. $('.open').next().find('.start_image').addClass('select_quan');
  251. $('.open').next().find('.end_image').removeClass('select_gou');
  252. $('.open').next().find('.end_image').addClass('select_quan');
  253. $('.open').next().find('.start_image').first().removeClass('select_quan');
  254. $('.open').next().find('.start_image').first().addClass('select_gou');
  255. $('.open').next().find('.end_image').first().removeClass('select_quan');
  256. $('.open').next().find('.end_image').first().addClass('select_gou');
  257. if(typeof(callback) == 'function') {
  258. var run_id = $('.open').children().eq(0).attr('run_time_id');
  259. var run_time = $('.open').children().eq(0).text();
  260. var count = $('.sel_station_sigle_end').children().eq(0).attr('count');
  261. var pro_cate_id = $('.sel_station_sigle_end').children().eq(0).attr('pro_cate_id');
  262. call_run = {
  263. run_id: run_id,
  264. run_time: run_time,
  265. count: count,
  266. pro_cate_id: pro_cate_id
  267. }
  268. console.log('callback1', call_run);
  269. callback(call_run);
  270. }
  271. }
  272. //切换上车站站点
  273. function changeTheStartStation(cstr, obj, isClick) {
  274. var html = getEndHtml(cstr, isClick);
  275. $(obj).closest('.start_station').next().find('.end_station').html(html);
  276. $('.end_station_all').on('click', function(e) {
  277. changeTheEndStation($(this));
  278. })
  279. $('.start_station_all').find('.start_image').removeClass('select_gou');
  280. $('.start_station_all').find('.start_image').addClass('select_quan');
  281. $(obj).find('.start_image').addClass('select_gou');
  282. $(obj).find('.start_image').removeClass('select_quan');
  283. $('.start_station_all').removeClass('sel_station_sigle_start');
  284. $(obj).addClass('sel_station_sigle_start');
  285. if(typeof(callback2) == 'function') {
  286. var start_station_id = $('.sel_station_sigle_start').children().eq(0).attr('start_station_id');
  287. var start_station_name = $('.sel_station_sigle_start').children().eq(0).text();
  288. var count = $('.sel_station_sigle_end').children().eq(0).attr('count');
  289. var pro_cate_id = $('.sel_station_sigle_end').children().eq(0).attr('pro_cate_id');
  290. call_start_station = {
  291. start_station_id: start_station_id,
  292. start_station_name: start_station_name,
  293. count: count,
  294. pro_cate_id: pro_cate_id
  295. }
  296. console.log('callback2', call_start_station);
  297. callback2(call_start_station);
  298. }
  299. }
  300. //切换下车站站点
  301. function changeTheEndStation(obj) {
  302. $('.end_station_all').removeClass('sel_station_sigle_end');
  303. $(obj).addClass('sel_station_sigle_end');
  304. $('.end_station_all').find('.end_image').removeClass('select_gou');
  305. $('.end_station_all').find('.end_image').addClass('select_quan');
  306. $(obj).find('.end_image').removeClass('select_quan');
  307. $(obj).find('.end_image').addClass('select_gou');
  308. if(typeof(callback3) == 'function') {
  309. var end_station_id = $('.sel_station_sigle_end').children().eq(0).attr('end_station_id');
  310. var end_station_name = $('.sel_station_sigle_end').children().eq(0).text();
  311. var count = $('.sel_station_sigle_end').children().eq(0).attr('count');
  312. var pro_cate_id = $('.sel_station_sigle_end').children().eq(0).attr('pro_cate_id');
  313. call_end_station = {
  314. end_station_id: end_station_id,
  315. end_station_name: end_station_name,
  316. count: count,
  317. pro_cate_id: pro_cate_id
  318. }
  319. console.log('callback3', call_end_station);
  320. callback3(call_end_station);
  321. }
  322. }
  323. }
  324. })(jQuery)