defaultcustomgoods.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. var max_goods_count = 6;
  3. $(document).on('click', '.js_add_goods', function () {
  4. selectedIds = getSelectedIds();
  5. if (selectedIds.length >= max_goods_count) {
  6. Layer.alert('最多可以选择' + max_goods_count + '个商品');
  7. return false;
  8. }
  9. _goodsSelectUrl = getGoodsSelectUrl();
  10. Fast.api.open(_goodsSelectUrl, '选择商品', {
  11. callback: function (data) {
  12. createGoodsItem(data[0]);
  13. }
  14. })
  15. });
  16. $(document).on('click', '.js_edit', function () {
  17. $editBtn = $(this);
  18. _goodsSelectUrl = getGoodsSelectUrl();
  19. Fast.api.open(_goodsSelectUrl, '选择商品', {
  20. callback: function (data) {
  21. var goodsItem = data[0];
  22. htmlstr = formatGoodsItem(goodsItem);
  23. $editBtn.parents('.js_goods_item').html(htmlstr);
  24. }
  25. })
  26. });
  27. $(document).on('click', '.js_del', function () {
  28. $delBtn = $(this);
  29. layer.confirm('您确认移除商品吗?', {title: "移除商品"}, function (index) {
  30. layer.close(index);
  31. $delBtn.parents('.js_goods_item').remove();
  32. });
  33. });
  34. /**
  35. * 获取已选中的商品id
  36. * @returns {Array}
  37. */
  38. function getSelectedIds() {
  39. formValueList = $('form').serializeArray();
  40. selectedIds = [];
  41. for (var i = 0; i < formValueList.length; i++) {
  42. var item = formValueList[i];
  43. if (item.name == 'row[goods_id][]') {
  44. selectedIds.push(item.value);
  45. }
  46. }
  47. return selectedIds;
  48. }
  49. /**
  50. * 获取商品选择框的加载列表的API地址
  51. * @returns {string}
  52. */
  53. function getGoodsSelectUrl() {
  54. selectedIds = getSelectedIds();
  55. goodsSelectUrl = 'goods/select?business_line=' + Config.business_line;
  56. if (selectedIds.length > 0) {
  57. goodsSelectUrl += '&selected_ids=' + selectedIds.join('_');
  58. }
  59. return goodsSelectUrl;
  60. }
  61. /**
  62. * 初始化商品列表
  63. * @param list
  64. */
  65. function initGoodsList(list) {
  66. for (i = 0; i < list.length; i++) {
  67. if (Config.business_line == list[i].business_line) {
  68. createGoodsItem(list[i]);
  69. }
  70. }
  71. }
  72. /**
  73. * 格式化商品单元格
  74. * @param goodsItem 商品对象
  75. * @returns {string}
  76. */
  77. function formatGoodsItem(goodsItem) {
  78. var checked = goodsItem.default == '1' ? 'checked' : '';
  79. var htmlstr =
  80. '<div class="recl_info js_edit">' +
  81. '<div class="recl_box">' +
  82. '<div class="recl_mark">' + goodsItem.icon + '</div>' +
  83. '<div class="recl_tit">' + goodsItem.show_type_text + '</div>' +
  84. '<div class="recl_money">' + goodsItem.title + '</div>' +
  85. '<div class="recl_des">' +
  86. '<strong>' + goodsItem.first_description + '</strong>' +
  87. '<span>' + goodsItem.second_description + '</span>' +
  88. '</div></div><input type="hidden" name="row[goods_id][]" value="' + goodsItem.id + '"></div> ' +
  89. '<div class="recl_operate">' +
  90. '<span style="float: left;line-height: 30px;"><input type="radio" name="row[default]" value="'+goodsItem.id+'" '+checked+'>用户默认勾选</span>'+
  91. '<a href="javascript:;" class="btn btn-xs btn-danger btn-delone js_del" title=""' +
  92. 'data-table-id="table" data-field-index="4" data-row-index="0"' +
  93. 'data-button-index="2"><i class="fa fa-trash"></i></a>' +
  94. '<a href="javascript:;" class="btn btn-xs btn-success js_move" title=""' +
  95. 'data-table-id="table" data-field-index="4" data-row-index="0"' +
  96. 'data-button-index="2"><i class="fa fa-arrows"></i></a>' +
  97. '</div>';
  98. return htmlstr;
  99. }
  100. /**
  101. * 创建商品
  102. * @param goodsItem
  103. */
  104. function createGoodsItem(goodsItem) {
  105. htmlstr = formatGoodsItem(goodsItem);
  106. htmlstr = '<li class="js_goods_item" draggable="true">' + htmlstr + '</li>';
  107. $('.js_add_goods_item').before(htmlstr);
  108. }
  109. $(document).delegate('.js_move', 'click', function () {
  110. $(this).closest('.js_goods_item').addClass('js_goods_border');
  111. if ($('.js_goods_border').length == 2) {
  112. var list = $('.js_goods_item').toArray();
  113. var from = $('.js_goods_border').eq(0).index();
  114. var to = $('.js_goods_border').eq(1).index();
  115. var vfrom = list[from]
  116. var vto = list[to]
  117. list.splice(from,1,vto);
  118. list.splice(to,1,vfrom);
  119. $('.js_goods_list').html(list);
  120. $('.js_goods_border').removeClass('js_goods_border');
  121. }
  122. })
  123. customGoodsListStr = Config.customGoodsList;
  124. customGoodsList = JSON.parse(customGoodsListStr);
  125. initGoodsList(customGoodsList);
  126. var Controller = {
  127. index: function () {
  128. }
  129. };
  130. return Controller;
  131. });