You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

450 regels
16 KiB

  1. /**
  2. * Created by luo on 2017/5/9.
  3. */
  4. var check_box_no = 0;
  5. var action = '';
  6. window.onload = function () {
  7. //获取并替换数据
  8. data();
  9. //选择星期
  10. choose();
  11. // 日期
  12. date();
  13. //分销价;
  14. price();
  15. //提交表单
  16. submit();
  17. //刷新日历
  18. re_date();
  19. $(".li_row_all").click();
  20. };
  21. function re_date() {
  22. $(".form_date").datetimepicker({
  23. format: 'yyyy-mm-dd',
  24. autoclose: true,
  25. minView: 2,
  26. pickerPosition: "bottom-left"
  27. });
  28. }
  29. //替换数据
  30. function data() {
  31. //公共变量
  32. var hotel_name = getPar('hotel_name');
  33. var hotel_id = getPar('hotel_id');
  34. var channel_id = getPar('channel_id');
  35. var channel_name = getPar('channel_name');
  36. var start_date = getPar('start_date');
  37. var end_date = getDateByDay(6, start_date);
  38. var room = getPar('room');
  39. action = getPar('action');
  40. //url太长 导致数据不完整, 解决方法再查一次
  41. var urlapi = base_api;
  42. var param = {
  43. type: "room_DistribChangePrice",
  44. room: room,
  45. hotel_id: hotel_id,
  46. op: 'getName'
  47. };
  48. $.ajax({
  49. url: urlapi,
  50. data: param,
  51. type: 'post',
  52. dataType: 'json',
  53. success: function (res_data) {
  54. $("#hotel_name").text(hotel_name);
  55. $("#hotel_name").attr('hotel_id', hotel_id);
  56. $("#channel_name").text(channel_name);
  57. $("#channel_name").attr('channel_id', channel_id);
  58. $(".start_date_all").val(start_date);
  59. $(".start_date").val(start_date);
  60. $(".end_date_all").val(end_date);
  61. $(".end_date").val(end_date);
  62. //显示房态还是价格
  63. if (action === 'info') {
  64. $(".action-info").removeClass('hidden');
  65. } else {
  66. $(".action-price").removeClass('hidden');
  67. }
  68. var copy_tr = $('.copy_tr_tmp').closest('tr')[0].outerHTML;
  69. var show = '';
  70. // res_data = JSON.parse(res_data);
  71. var room_res = res_data['data'];
  72. var room_arr = room_res.split('**');
  73. for (var i = 0; i < room_arr.length; i++) {
  74. var tmp_copy_tr = copy_tr;
  75. var tmp_room_arr = room_arr[i].split(':');
  76. var tmp_base_room_id = tmp_room_arr[0];
  77. var tmp_room_id = tmp_room_arr[1];
  78. var tmp_room_name = tmp_room_arr[2] + (tmp_room_arr[3] !== '' ? ' | ' + tmp_room_arr[3] : '');
  79. tmp_copy_tr = tmp_copy_tr.replace('[子房型名称]', tmp_room_name);
  80. tmp_copy_tr = tmp_copy_tr.replace('no_display', '');
  81. tmp_copy_tr = tmp_copy_tr.replace('[room_id]', tmp_room_id);
  82. tmp_copy_tr = tmp_copy_tr.replace('[start_date]', start_date);
  83. tmp_copy_tr = tmp_copy_tr.replace('[end_date]', end_date);
  84. tmp_copy_tr = tmp_copy_tr.replace('[data-base-room-id]', tmp_base_room_id);
  85. tmp_copy_tr = tmp_copy_tr.replace('[data-room-id]', tmp_room_id);
  86. tmp_copy_tr = tmp_copy_tr.replace(/overSale\[\d+\]\[\d+\]\[\d+\]/g, 'overSale[' + tmp_base_room_id + '][' + tmp_room_id + '][' + check_box_no + ']');
  87. tmp_copy_tr = tmp_copy_tr.replace('_tmp', '');
  88. show += tmp_copy_tr;
  89. check_box_no++;
  90. }
  91. $('#batch_modify').after(show);
  92. }
  93. })
  94. }
  95. //新增tr
  96. function create_tr(obj) {
  97. var tmp_td = $(obj).closest('tr')[0].outerHTML;
  98. var td_data = $(obj).closest('tr').find('td:first');
  99. var tr_room_name = td_data.text().trim();
  100. //加号变减号
  101. tmp_td = tmp_td.replace('plus', 'minus');
  102. //增加变删除
  103. tmp_td = tmp_td.replace('create', 'delete');
  104. tmp_td = tmp_td.replace('_tmp', '');
  105. tmp_td = tmp_td.replace(tr_room_name, '');
  106. tmp_td = tmp_td.replace(/\]\[\d+\]\"/g, plusOne);
  107. check_box_no++;
  108. $(obj).closest('tr').after(tmp_td);
  109. $("input:checkbox").unbind();
  110. re_date();
  111. choose();
  112. price();
  113. $(".child_cb").trigger("change");
  114. }
  115. //删除tr
  116. function delete_tr(obj) {
  117. $(obj).closest('tr').prop('outerHTML', '');
  118. $(".child_cb").trigger("change");
  119. // $(".distrib_one").trigger("input");
  120. }
  121. //选择星期
  122. function choose() {
  123. $("input[type='checkbox']").bind('change', function () {
  124. //获取到对象class,value,check状态
  125. var obj_class = $(this).attr('class');
  126. var obj_value = $(this).val();
  127. var obj_check = $(this).prop('checked');
  128. var obj_li = $(this).val() - 1;
  129. //li_row_all 为 全选,li_all为 列全选, row_all为 行全选
  130. if (obj_class === 'li_row_all') {
  131. if (obj_check === false) {
  132. $("input[type='checkbox']").prop('checked', false);
  133. } else {
  134. $("input[type='checkbox']").prop('checked', true);
  135. }
  136. } else if (obj_class === 'li_all') {
  137. if (obj_check === false) {
  138. $("input:checkbox[value=" + obj_value + "]").prop('checked', false);
  139. } else {
  140. $("input:checkbox[value=" + obj_value + "]").prop('checked', true);
  141. }
  142. $(".child_cb").trigger("change");
  143. } else if (obj_class === 'raw_all') {
  144. if (obj_check === false) {
  145. $(this).closest("tr").find("input:checkbox").prop('checked', false);
  146. } else {
  147. $(this).closest("tr").find("input:checkbox").prop('checked', true);
  148. }
  149. $(".child_cb").trigger("change");
  150. } else {
  151. //行确认
  152. var all_is_checked = true;
  153. var raw_is_checked = true;
  154. var li_is_checked = true;
  155. $(this).closest("tr").find("input:checkbox[class='child_cb']").each(function (index, element) {
  156. if ($(element).prop('checked') === false) {
  157. raw_is_checked = false;
  158. }
  159. });
  160. if (raw_is_checked === false) {
  161. $(this).closest("tr").find("input:checkbox:first").prop('checked', false);
  162. } else {
  163. $(this).closest("tr").find("input:checkbox:first").prop('checked', true);
  164. }
  165. //列确认
  166. $(this).closest("#main_body").find(".copy_tr").find("input:checkbox[class='child_cb']:eq(" + obj_li + ")").each(function (index, element) {
  167. if ($(element).prop('checked') === false) {
  168. li_is_checked = false;
  169. }
  170. });
  171. if (li_is_checked === false) {
  172. $(this).closest("#main_body").find("tr:first").find("input:checkbox[value=" + obj_value + "]").prop('checked', false);
  173. } else {
  174. $(this).closest("#main_body").find("tr:first").find("input:checkbox[value=" + obj_value + "]").prop('checked', true);
  175. }
  176. //总全选
  177. $(this).closest("#main_body").find(".copy_tr").find("input:checkbox[class='child_cb']").each(function (index, element) {
  178. if ($(element).prop('checked') === false) {
  179. all_is_checked = false;
  180. }
  181. });
  182. if (all_is_checked === false) {
  183. $('.li_row_all').prop('checked', false);
  184. } else {
  185. $('.li_row_all').prop('checked', true);
  186. }
  187. }
  188. })
  189. }
  190. //修改分销价
  191. function price() {
  192. // $(".distrib_all").unbind('input');
  193. // $(".distrib_one").unbind('input');
  194. $("#distrib_all").on('input', function () {
  195. var distrib_value = $("#distrib_all").val();
  196. $(".distrib_one").val(distrib_value);
  197. });
  198. $("#distrib_info_all").on('input', function () {
  199. var distrib_value = $("#distrib_info_all").val();
  200. $(".sale-count").val(distrib_value);
  201. });
  202. $("#patch_select").on('change', function () {
  203. var selected = $("#patch_select").val();
  204. $(".one-run_status").val(selected);
  205. });
  206. $("input[name='overSale']").on('click', function () {
  207. $("input.over-sell[value='" + $("input[name='overSale']:checked").val() + "']").prop("checked", true);
  208. });
  209. }
  210. function date() {
  211. $(".start_date_all").bind('change', function () {
  212. $('.start_date').val($(this).val());
  213. });
  214. $(".end_date_all").bind('change', function () {
  215. $('.end_date').val($(this).val());
  216. });
  217. }
  218. //提交表单,修改房价和房态调用接口不同
  219. function submit() {
  220. $('.submit').bind('click', function () {
  221. loading();
  222. //为0则满足提交条件;
  223. if (action === 'price') {
  224. savePrice();
  225. }
  226. if (action === 'info') {
  227. saveInfo();
  228. }
  229. })
  230. }
  231. //checkbox名称加 1
  232. function plusOne($1) {
  233. return '][' + check_box_no + ']"';
  234. }
  235. function savePrice() {
  236. var commit_flag = 0;
  237. var hotel_id = $("#hotel_name").attr('hotel_id');
  238. var channel_id = $("#channel_name").attr('channel_id');
  239. var room = '';
  240. var price_type = $('input:radio[name="change_price"]:checked').val();
  241. $('.copy_tr').each(function (idx, obj) {
  242. var tp_room = '';
  243. //该tr的基础房型id
  244. var tp_base_room_id = $(obj).find('td:first').attr('data-base-room-id');
  245. //子房型id
  246. var tp_room_id = $(obj).find('td:first').attr('data-room-id');
  247. //开始日期
  248. var tp_start_date = $(obj).find('td').eq(1).find('.start_date').val();
  249. //结束日期
  250. var tp_end_date = $(obj).find('td').eq(1).find('.end_date').val();
  251. //星期
  252. var tp_week = '';
  253. $(obj).find('td').eq(2).find("input:checkbox[class='child_cb']").each(function (idx1, obj1) {
  254. if ($(obj1).is(':checked')) {
  255. tp_week += $(obj1).val()
  256. }
  257. });
  258. //分销价
  259. var tp_operator = $(obj).find('td').find('.select_one').val();
  260. var tp_price = $(obj).find('td').eq(3).find('.distrib_one').val();
  261. if (tp_base_room_id !== undefined && tp_base_room_id !== '[data-base-room-id]') {
  262. tp_room = '{' + hotel_id + ',' + tp_base_room_id + ',' + tp_room_id + ',' + tp_start_date + ',' + tp_end_date + ',' + tp_week + ',' + channel_id + ',' + tp_price;
  263. if (price_type == '2') {
  264. tp_room += ',' + tp_operator;
  265. }
  266. tp_room += '}||';
  267. room += tp_room;
  268. }
  269. if (tp_price < 0 || tp_price === '' || tp_week === '') {
  270. commit_flag = 1;
  271. }
  272. });
  273. if (room.length > 2) {
  274. room = room.substring(0, room.length - 2);
  275. } else {
  276. commit_flag = 1;
  277. }
  278. if (commit_flag === 1) {
  279. ZZAlertInfo('请正确填写价格');
  280. closeLoading();
  281. return false;
  282. }
  283. if (price_type == '2') { //按幅度/比例设价
  284. var param = {
  285. room_info_str: room,
  286. distrib_id: channel_id
  287. };
  288. var cs1_url = cs1_path + '/hotel/run-hotel-distrib/multiple-update-room-price';
  289. $.ajax({
  290. url: cs1_url,
  291. data: param,
  292. type: 'post',
  293. dataType: 'json',
  294. success: function (res) {
  295. if (res['code'] === 0) {
  296. ZZAlertInfo('保存成功');
  297. } else {
  298. ZZAlertInfo('保存失败!!!');
  299. }
  300. closeLoading();
  301. },
  302. error: function (e) {
  303. closeLoading();
  304. console.log(e)
  305. }
  306. })
  307. } else { //直接设价
  308. var urlapi = base_api;
  309. var param = {
  310. type: "room_DistribChangePrice",
  311. room: room,
  312. op: 'price'
  313. };
  314. $.ajax({
  315. url: urlapi,
  316. data: param,
  317. type: 'post',
  318. dataType: 'json',
  319. success: function (res) {
  320. if (res['code'] === 0) {
  321. ZZAlertInfo('保存成功');
  322. } else {
  323. ZZAlertInfo(res['info']);
  324. }
  325. closeLoading();
  326. },
  327. error: function (e) {
  328. closeLoading();
  329. console.log(e)
  330. }
  331. })
  332. }
  333. }
  334. function setPrice() {
  335. $view = '<div class="input-group">' +
  336. ' <input class="form-control distrib_one" placeholder="分销价">\n' +
  337. ' <div class="input-group-addon">元</div>\n' +
  338. ' </div>';
  339. $("#main_body").find('.action-price').html($view);
  340. $("#patch-price").find('input').attr('id', 'distrib_all').removeClass('distrib_one').addClass('distrib distrib_all');
  341. price();
  342. }
  343. function msultipleUpdateRoomPrice() {
  344. $("#main_body").find('.action-price').html("<div class='form-inline'>当前价 <select class='form-control select_one weight' style='width:60px;'><option value='+' class='weight'>+</option><option value='-' class='weight'>-</option><option value='*' class='weight'>×</option><option value='/' class='weight'>÷</option></select>&nbsp;<input type='text' style='width:80px;' class='form-control distrib_one' id='' placeholder='金额'></div>")
  345. $("#patch-price").find('input').attr('id', 'distrib_all').removeClass('distrib_one').addClass('distrib distrib_all');
  346. $("#patch-price").find('select').attr('id', 'select_all').removeClass('select_one').addClass('select_all');
  347. $("#select_all").change(function () {
  348. var val = $(this).val();
  349. $('.select_one option[value="' + val + '"]').attr("selected", true);
  350. });
  351. price();
  352. }
  353. //保存房态
  354. function saveInfo() {
  355. var commit_flag = 0;
  356. var hotel_id = $("#hotel_name").attr('hotel_id');
  357. var channel_id = $("#channel_name").attr('channel_id');
  358. var room = '';
  359. $('.copy_tr').each(function (idx, obj) {
  360. var tp_room = '';
  361. //该tr的基础房型id
  362. var tp_base_room_id = $(obj).find('td:first').attr('data-base-room-id');
  363. //子房型id
  364. var tp_room_id = $(obj).find('td:first').attr('data-room-id');
  365. //开始日期
  366. var tp_start_date = $(obj).find('td').eq(1).find('.start_date').val();
  367. //结束日期
  368. var tp_end_date = $(obj).find('td').eq(1).find('.end_date').val();
  369. //星期
  370. var tp_week = '';
  371. $(obj).find('td').eq(2).find("input:checkbox[class='child_cb']").each(function (idx1, obj1) {
  372. if ($(obj1).is(':checked')) {
  373. tp_week += $(obj1).val()
  374. }
  375. });
  376. //分销价
  377. var td_data = $(obj).find('td').eq(3);
  378. var run_status = td_data.find('select').val();
  379. var number = td_data.find('.sale-count').val();
  380. var overSale = td_data.find('input.over-sell:checked').val();
  381. if (tp_base_room_id !== undefined && tp_base_room_id !== '[data-base-room-id]') {
  382. tp_room = '{' + hotel_id + ',' + tp_base_room_id + ',' + tp_room_id + ',' + tp_start_date + ',' +
  383. tp_end_date + ',' + tp_week + ',' + channel_id + ',' + run_status + ',' + number + ',' + overSale + '}||';
  384. room += tp_room;
  385. }
  386. if (run_status < 0 || number === '' || overSale === '' || tp_week === '') {
  387. commit_flag = 1;
  388. }
  389. });
  390. if (room.length > 2) {
  391. room = room.substring(0, room.length - 2);
  392. } else {
  393. commit_flag = 1;
  394. }
  395. if (commit_flag === 1) {
  396. ZZAlertInfo('请检查数据');
  397. closeLoading();
  398. return false;
  399. }
  400. var urlapi = base_api;
  401. var param = {
  402. type: "room_DistribChangePrice",
  403. room: room,
  404. op: 'info'
  405. };
  406. $.ajax({
  407. url: urlapi,
  408. data: param,
  409. type: 'post',
  410. dataType: 'json',
  411. success: function (res) {
  412. if (res['code'] === 0) {
  413. ZZAlertInfo('保存成功');
  414. } else {
  415. ZZAlertInfo(res['info']);
  416. }
  417. closeLoading();
  418. },
  419. error: function (e) {
  420. closeLoading();
  421. console.log(e)
  422. }
  423. })
  424. }