goods.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. var Controller = {
  3. index: function () {
  4. // 初始化表格参数配置
  5. Table.api.init({
  6. extend: {
  7. index_url: 'goods/index' + location.search,
  8. add_url: 'goods/add',
  9. edit_url: 'goods/edit',
  10. del_url: 'goods/del',
  11. multi_url: 'goods/multi',
  12. import_url: 'goods/import',
  13. bind_url: 'goods/bind_goods',
  14. table: 'goods',
  15. }
  16. });
  17. let extend=$.fn.bootstrapTable.defaults.extend
  18. var table = $("#table");
  19. // 初始化表格
  20. table.bootstrapTable({
  21. url: $.fn.bootstrapTable.defaults.extend.index_url,
  22. pk: 'id',
  23. sortName: 'id',
  24. searchFormVisible:true,
  25. columns: [
  26. [
  27. {checkbox: true},
  28. {field: 'id', title: __('Id')},
  29. {field: 'name', title: __('Name')},
  30. {field: 'category.name', title: __('分类'),formatter: Table.api.formatter.label,operate: "like"},
  31. {field: 'brand', title: __('Brand')},
  32. {field: 'amount', title: __('售价'), operate:'BETWEEN'},
  33. {field: 'amount_kill', title: __('Amount_kill'), operate:'BETWEEN'},
  34. {field: 'is_hot', title: __('Is_hot'),formatter:Table.api.formatter.label,searchList:{0:'否',1:'是'}},
  35. {field: 'is_kill', title: __('Is_kill'),formatter:Table.api.formatter.label,searchList:{0:'否',1:'是'}},
  36. {field: 'status', title: __('状态'),formatter:Table.api.formatter.label,searchList:goodsStatus},
  37. {field: 'num_sell', title: __('Num_sell')},
  38. {field: 'create_time', title: __('Create_time'),formatter: Table.api.formatter.datetime,addClass:'datetimerange'},
  39. //{field: 'update_time', title: __('Update_time'),formatter: Table.api.formatter.datetime,addClass:'datetimerange'},
  40. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,buttons:[
  41. {
  42. name: 'detail',
  43. text: __('商品组合'),
  44. title: __('商品组合'),
  45. classname: 'btn btn-xs btn-primary btn-dialog',
  46. icon: 'fa',
  47. url: extend.bind_url,
  48. callback: function (data) {
  49. },
  50. visible: function (row) {
  51. return true;
  52. }
  53. },
  54. ]}
  55. ]
  56. ],
  57. onLoadSuccess(){
  58. setTimeout(()=>{
  59. $('.btn-editone').attr('data-area','["100%","100%"]')
  60. },100)
  61. }
  62. });
  63. $(document).on('click','.bindGoods',function (){
  64. let id=$(this).data('id')
  65. Fast.api.open(extend.bind_url+`/id/${id}`,'绑定商品')
  66. })
  67. // 为表格绑定事件
  68. Table.api.bindevent(table);
  69. },
  70. add: function () {
  71. this.editor()
  72. Controller.api.bindevent();
  73. },
  74. edit: function () {
  75. this.editor()
  76. Controller.api.bindevent();
  77. },
  78. editor(){
  79. $('.btnAddSku').click(function (){
  80. let a=$($('.skuItem')[0].outerHTML),key=Date.now()
  81. a.find('.id').attr('name',`row[sku][${key}][id]`)
  82. a.find('.skuName').attr('name',`row[sku][${key}][name]`)
  83. a.find('.skuNumStock').attr('name',`row[sku][${key}][num_stock]`)
  84. $(this).parent().before(a[0].outerHTML.replace(/value="\S+"/ig,''))
  85. })
  86. $(document).on('click','.delSku,.delDetail',function (){
  87. let className=$(this).parent()[0].className
  88. if($(this).parent().parent().find(`.${className}`).length===1){
  89. return
  90. }
  91. $(this).parent().remove()
  92. })
  93. $('.btnAddDetail').click(function (){
  94. let a=$($(this).parent().prev()[0].outerHTML),key=Date.now(),m=$(this).data('m')
  95. a.find('.id').attr('name',`row[${m}][${key}][id]`)
  96. a.find('.name').attr('name',`row[${m}][${key}][name]`)
  97. a.find('.value').attr('name',`row[${m}][${key}][value]`)
  98. $(this).parent().before(a[0].outerHTML.replace(/value="\S+"/ig,''))
  99. })
  100. },
  101. api: {
  102. bindevent: function () {
  103. Form.api.bindevent($("form[role=form]"));
  104. }
  105. },
  106. bind_goods(){
  107. Controller.api.bindevent();
  108. $('.skuItem input[type=radio]').change(function (){
  109. getGoods(goods.id,this.value)
  110. })
  111. $('.firstSku').trigger('click')
  112. let getGoods=(goods_id,sku_id)=>{
  113. let idx=layer.load()
  114. $.post('',{e:'get',sku_id,goods_id},function (res){
  115. $('#c-name').selectPageData(res.data)
  116. layer.close(idx)
  117. })
  118. }
  119. }
  120. };
  121. return Controller;
  122. });