itinerary2.0.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. let sessionStorage= window.sessionStorage;
  2. let sessionItinerary= sessionStorage.getItem(sessionStorageList);
  3. $(function() {
  4. //初始化行程单
  5. if(typeof sessionItinerary!=='object'){
  6. sessionItinerary=JSON.parse(sessionItinerary);
  7. buildStrokeTable(sessionItinerary);
  8. fnTotTravelPrice();
  9. buildItineraryProcess(sessionItinerary)
  10. }
  11. // 新增行程
  12. $("a[stroke='addNode']").click(function() {
  13. let sessionItinerary = sessionStorage.getItem(sessionStorageList);
  14. if(typeof sessionItinerary==='object'){
  15. sessionItinerary=[{'0':[]}];
  16. }else{
  17. sessionItinerary=JSON.parse(sessionItinerary);
  18. sessionItinerary.push({[sessionItinerary.length]:[]});
  19. }
  20. sessionStorage.setItem(sessionStorageList,JSON.stringify(sessionItinerary));
  21. //构建行程单
  22. buildStrokeTable(sessionItinerary);
  23. fnTotTravelPrice();
  24. buildItineraryProcess(sessionItinerary)
  25. //计算金额
  26. });
  27. // 移除行程
  28. $("table[stroke]").on("click","a[stroke='delNode']",function(){
  29. let sessionItinerary = sessionStorage.getItem(sessionStorageList);
  30. sessionItinerary=JSON.parse(sessionItinerary);
  31. let dataID=$(this).attr('dataID');
  32. sessionItinerary=sessionItinerary.filter(item=>{
  33. let keyId=Object.keys(item)[0];
  34. console.log(dataID);
  35. if(keyId===dataID){
  36. return false
  37. }else{
  38. return true
  39. }
  40. });
  41. let isIndex=dataID-1;
  42. $('#node_'+dataID).remove();
  43. sessionStorage.setItem(sessionStorageList,JSON.stringify(sessionItinerary));
  44. // 重新计算金额
  45. buildStrokeTable(sessionItinerary);
  46. fnTotTravelPrice();
  47. buildItineraryProcess(sessionItinerary)
  48. });
  49. //打开新建设置的行程单
  50. $("table[stroke]").on("click","a[addStroke]",function(){
  51. districtTop();
  52. districtCityBuild('departurecity','departureprovince');
  53. districtCityBuild('arrivalscity','arrivalsprovince');
  54. //
  55. let dataID=$(this).attr('dataID');
  56. $("input[departuredate]").val('');
  57. $("input[arrivalsdate]").val('');
  58. $("tbody[feeTravelItem]").html('');
  59. let strokeList= sessionStorage.getItem(sessionStorageList);
  60. sessionItinerary=getItineraryData(strokeList,dataID);
  61. if(!(sessionItinerary.length===0)){
  62. let si= sessionItinerary[sessionItinerary.length-1];
  63. let item=`{"departuredate":"","departureprovince":"${si.arrivalsprovince}","departurecity":"${si.arrivalscity.substring(1)}","arrivalsdate":"${si.arrivalsdate}","arrivalsprovince":"","arrivalscity":"","feeTraveItem":[]}`;
  64. districtTop(JSON.parse(item));
  65. districtCityBuild('departurecity','departureprovince',JSON.parse(item));
  66. setDisabled(item);
  67. }else{
  68. setUnDisabled();
  69. }
  70. $("#strokeIndex").val(dataID);
  71. $("a[additinerarybut]").show();
  72. $("a[ediItineraryBut]").hide();
  73. });
  74. //存储新建的行程单
  75. $("a[additinerarybut]").click(function() {
  76. var itinerary=fnGetItineraryData();
  77. let dataID=$("#strokeIndex").val();
  78. let strokeStr = sessionStorage.getItem(sessionStorageList);
  79. let strokeJson=JSON.parse(strokeStr);
  80. sessionItinerary=getItineraryData(strokeStr,dataID);
  81. sessionItinerary.push(itinerary);
  82. strokeJson.forEach(function(value,index){
  83. keyId=Object.keys(value)[0];
  84. if(keyId==dataID){
  85. strokeJson[index][dataID]=sessionItinerary;
  86. }
  87. })
  88. sessionStorage.setItem(sessionStorageList,JSON.stringify(strokeJson));
  89. buildStrokeTable(strokeJson);
  90. fnTotTravelPrice();
  91. //TODO
  92. buildItineraryProcess(strokeJson)
  93. });
  94. //打开编辑的行程单
  95. $("table[stroke]").on("click","a[edistroke]",function(){
  96. let id=$(this).attr('dataId');
  97. let strokeid=$(this).attr('strokeId');
  98. let strokeIndex=$(this).attr('strokeIndex');
  99. $("input[name=ediStrokeId]").val(id);
  100. let strokeStr= sessionStorage.getItem(sessionStorageList);
  101. let strokeJson=JSON.parse(strokeStr);
  102. sessionItinerary=strokeJson[strokeIndex][strokeid];
  103. var storage=window.localStorage;
  104. if(id!=='0'){
  105. sessionItinerary[id].departureprovince=sessionItinerary[id-1].arrivalsprovince;
  106. sessionItinerary[id].departurecity=sessionItinerary[id-1].arrivalscity.substring(1);
  107. }
  108. districtTop(sessionItinerary[id]);
  109. districtCityBuild('departurecity','departureprovince',sessionItinerary[id]);
  110. districtCityBuild('arrivalscity','arrivalsprovince',sessionItinerary[id]);
  111. $("input[arrivalsdate]").val(sessionItinerary[id].arrivalsdate.substring(1));
  112. buildFeeTravelItem(sessionItinerary[id].feeTraveItem);
  113. if(id==='0'){
  114. $("input[departuredate]").val(sessionItinerary[id].departuredate);
  115. setUnDisabled();
  116. }else{
  117. $("input[departuredate]").val(sessionItinerary[id-1].arrivalsdate.substring(1));
  118. setDisabled('');
  119. }
  120. $("#dataId").val(id);
  121. $("#strokeId").val(strokeid);
  122. $("#strokeIndex").val(strokeIndex);
  123. $("a[additinerarybut]").hide();
  124. $("a[ediItineraryBut]").show();
  125. });
  126. //存储编辑行程单
  127. $("a[ediItineraryBut]").click(function() {
  128. var itinerary=fnGetItineraryData();
  129. var siIndex=$("input[name=ediStrokeId]").val();
  130. let strokeid=$("#strokeId").val();
  131. let strokeIndex=$("#strokeIndex").val();
  132. let strokeStr=sessionStorage.getItem(sessionStorageList)
  133. let strokeJson=JSON.parse(strokeStr);
  134. var sessionItinerary =strokeJson[strokeIndex][strokeid];
  135. //var sessionItinerary =JSON.parse(sessionStorage.getItem(sessionStorageList));
  136. sessionItinerary[siIndex]=itinerary;
  137. strokeJson[strokeIndex][strokeid]=sessionItinerary;
  138. let data=JSON.stringify(strokeJson);
  139. sessionStorage.setItem(sessionStorageList,data);
  140. buildStrokeTable(strokeJson);
  141. fnTotTravelPrice();
  142. buildItineraryProcess(strokeJson)
  143. });
  144. //移除行程单item功能
  145. $("table[stroke]").on("click","a[removeitinerary]",function(){
  146. var strokeStr= sessionStorage.getItem(sessionStorageList);
  147. let id=$(this).attr('dataId');
  148. let strokeid=$(this).attr('strokeId');
  149. let strokeIndex=$(this).attr('strokeIndex');
  150. var strokeJson= JSON.parse(strokeStr);
  151. //console.log(strokeJson[strokeIndex][strokeid]);
  152. let sessionItinerary=strokeJson[strokeIndex][strokeid];
  153. sessionItinerary.splice(id,1);
  154. strokeJson[strokeIndex][strokeid]=sessionItinerary;
  155. console.log(strokeJson);
  156. sessionStorage.setItem(sessionStorageList,JSON.stringify(strokeJson));
  157. buildStrokeTable(strokeJson);
  158. //$("#itinerary").val(JSON.stringify(strokeJson));
  159. fnTotTravelPrice();
  160. buildItineraryProcess(strokeJson)
  161. //buildItineraryProcess(sessionItinerary);
  162. });
  163. //编辑行程单内容相关--设置出发城市-设置到达城市
  164. $("select[departureProvince]").change(function() {
  165. districtCityBuild('departurecity','departureprovince');
  166. });
  167. $("select[arrivalsProvince]").change(function() {
  168. districtCityBuild('arrivalscity','arrivalsprovince');
  169. });
  170. //检查行程日期
  171. $("input[departureDate]").change(function() {
  172. let date=$(this).val();
  173. $.ajax({
  174. url : '/api/itinerary/date',
  175. data: {date:date},
  176. type : "post",
  177. cache : false,
  178. dataType : "json",
  179. async:false,
  180. global : true,
  181. success : function(data) {
  182. console.log(data.status);
  183. if(!data.status){
  184. $('input[departureDate]').val('');
  185. $('td[msg]').html('<span class="colRed">日期已被使用过</span>');
  186. }else{
  187. $('td[msg]').html('');
  188. }
  189. },
  190. error : function(err) {}
  191. });
  192. });
  193. $("input[arrivalsDate]").change(function() {
  194. var strokeStr= sessionStorage.getItem(sessionStorageList);
  195. var strokeJson= JSON.parse(strokeStr);
  196. var siIndex=$("input[name=ediStrokeId]").val();
  197. let strokeid=$("#strokeId").val();
  198. let strokeIndex=$("#strokeIndex").val();
  199. let date=$(this).val();
  200. let departuredate=new Date(strokeJson[strokeIndex][strokeid][siIndex].departuredate).getTime();
  201. let arrivalsdate=new Date(date).getTime();
  202. if(departuredate>arrivalsdate){
  203. $('input[arrivalsDate]').val('');
  204. $('td[msg]').html('<span class="colRed">到达日期不能早于出发日期</span>');
  205. return ;
  206. }
  207. $.ajax({
  208. url : '/api/itinerary/date',
  209. data: {date:date},
  210. type : "post",
  211. cache : false,
  212. dataType : "json",
  213. async:false,
  214. global : true,
  215. success : function(data) {
  216. if(!data.status){
  217. $('input[arrivalsDate]').val('');
  218. $('td[msg]').html('<span class="colRed">日期已被使用过</span>');
  219. }else{
  220. $('td[msg]').html('');
  221. }
  222. },
  223. error : function(err) {}
  224. });
  225. });
  226. //添加费用详情列表
  227. $("a[feeTravelItem]").click(function() {
  228. var itemName=$("select[feeTravelItem] option:selected").text();
  229. var itemId=$("select[feeTravelItem] option:selected").val();
  230. var html='<tr class="remove" ><th>'+itemName+'</th>';
  231. html+='<td class="taR"><p>¥<input type="number" itemId_'+itemId+' data="'+itemName+'" dataId="'+itemId+'" value="0" placeholder="输入费用" pattern="[0-9]" step="1" min="0"class="span2"></p>'+
  232. '<p><textarea type="text" itemDetail_'+itemId+' placeholder="填写费用说明" rows="2" style=" width: 350px; margin: 10px 0px 0px 12px; height: 65px;"></textarea></p></td>';
  233. html+='<td><a href="#" removeFeeTravelItem >移除</a></td></tr>';
  234. $("tbody[feeTravelItem]").append(html);
  235. });
  236. $("tbody[feeTravelItem]").on("click","a[removeFeeTravelItem]",function(){
  237. $(this).closest('.remove').remove();
  238. });
  239. })