goods.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  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. statistics_url: 'goods/goods_statistics',
  15. amount_rank_url: 'goods/goods_buy_rank',
  16. order_amount_rank_url: 'goods/order_amount_rank',
  17. order_num_rank_url: 'goods/order_num_rank',
  18. table: 'goods',
  19. }
  20. });
  21. let extend=$.fn.bootstrapTable.defaults.extend
  22. var table = $("#table");
  23. // 初始化表格
  24. table.bootstrapTable({
  25. url: $.fn.bootstrapTable.defaults.extend.index_url,
  26. pk: 'id',
  27. sortName: 'id',
  28. searchFormVisible:true,
  29. columns: [
  30. [
  31. {checkbox: true},
  32. {field: 'id', title: __('Id')},
  33. {field: 'name', title: __('Name')},
  34. {field: 'category.name', title: __('分类'),formatter: Table.api.formatter.label,operate: "like"},
  35. {field: 'brand', title: __('Brand')},
  36. //{field: 'amount', title: __('售价'), operate:'BETWEEN'},
  37. //{field: 'amount_kill', title: __('Amount_kill'), operate:'BETWEEN'},
  38. {field: 'is_hot', title: __('Is_hot'),formatter:Table.api.formatter.label,searchList:{0:'否',1:'是'}},
  39. {field: 'is_kill', title: __('Is_kill'),formatter:Table.api.formatter.label,searchList:{0:'否',1:'是'}},
  40. {field: 'status', title: __('状态'),formatter:Table.api.formatter.label,searchList:goodsStatus},
  41. {field: 'num_sell', title: __('Num_sell')},
  42. {field: 'create_time', title: __('Create_time'),formatter: Table.api.formatter.datetime,addClass:'datetimerange'},
  43. //{field: 'update_time', title: __('Update_time'),formatter: Table.api.formatter.datetime,addClass:'datetimerange'},
  44. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,buttons:[
  45. {
  46. name: 'detail',
  47. text: __('商品组合'),
  48. title: __('商品组合'),
  49. classname: 'btn btn-xs btn-primary btn-dialog',
  50. icon: 'fa',
  51. url: extend.bind_url,
  52. callback: function (data) {
  53. },
  54. visible: function (row) {
  55. return table.data('operate-bind_goods');
  56. }
  57. },
  58. {
  59. name: 'detail',
  60. text: __('数据统计'),
  61. title: __('数据统计'),
  62. classname: 'btn btn-xs btn-info btn-dialog',
  63. icon: 'fa',
  64. url: extend.statistics_url,
  65. extend:`data-area='["800px","80%"]'`,
  66. callback: function (data) {
  67. },
  68. visible: function (row) {
  69. return table.data('operate-buy_rank');
  70. }
  71. },
  72. {
  73. name: 'detail',
  74. text: __('采购金额排名'),
  75. title: __('采购金额排名'),
  76. classname: 'btn btn-xs btn-info btn-dialog',
  77. icon: 'fa',
  78. url: extend.amount_rank_url,
  79. extend:`data-area='["800px","80%"]'`,
  80. callback: function (data) {
  81. },
  82. visible: function (row) {
  83. return table.data('operate-buy_rank');
  84. }
  85. },
  86. {
  87. name: 'detail',
  88. text: __('订单金额排名'),
  89. title: __('订单金额排名'),
  90. classname: 'btn btn-xs btn-info btn-dialog',
  91. icon: 'fa',
  92. url: extend.order_amount_rank_url,
  93. extend:`data-area='["800px","80%"]'`,
  94. callback: function (data) {
  95. },
  96. visible: function (row) {
  97. return table.data('operate-order_amount_rank');
  98. }
  99. },
  100. {
  101. name: 'detail',
  102. text: __('订单笔数排名'),
  103. title: __('订单笔数排名'),
  104. classname: 'btn btn-xs btn-info btn-dialog',
  105. icon: 'fa',
  106. url: extend.order_num_rank_url,
  107. extend:`data-area='["800px","80%"]'`,
  108. callback: function (data) {
  109. },
  110. visible: function (row) {
  111. return table.data('operate-order_num_rank');
  112. }
  113. },
  114. ]}
  115. ]
  116. ],
  117. onLoadSuccess(){
  118. setTimeout(()=>{
  119. $('.btn-editone').attr('data-area','["100%","100%"]')
  120. },100)
  121. }
  122. });
  123. $(document).on('click','.bindGoods',function (){
  124. let id=$(this).data('id')
  125. Fast.api.open(extend.bind_url+`/id/${id}`,'绑定商品')
  126. })
  127. // 为表格绑定事件
  128. Table.api.bindevent(table);
  129. },
  130. add: function () {
  131. this.editor()
  132. Controller.api.bindevent();
  133. },
  134. edit: function () {
  135. this.editor()
  136. Controller.api.bindevent();
  137. },
  138. goods_statistics(){
  139. //Controller.api.bindevent();
  140. Form.events.daterangepicker($('.form'))
  141. $('.doSearch').click(()=>{
  142. layer.load()
  143. })
  144. },
  145. goods_buy_rank(){
  146. Table.api.init()
  147. var table = $("#table");
  148. // 初始化表格
  149. table.bootstrapTable({
  150. url: location.href,
  151. pk: 'id',
  152. sortName: 'id',
  153. searchFormVisible:true,
  154. showExport:false,
  155. commonSearch:true,
  156. search:false,
  157. columns: [
  158. [
  159. {field: 'rank', title: __('排名'),operate:false,},
  160. {field: 'nickname', title: __('用户名'),operate:false,},
  161. {field: 'amount', title: __('金额'),operate:false,},
  162. {field: 'date', title: __('时间'),operate:'range',addClass:'datetimerange',visible:false},
  163. ]
  164. ]
  165. });
  166. Table.api.bindevent(table);
  167. },
  168. order_amount_rank(){
  169. Table.api.init()
  170. var table = $("#table");
  171. // 初始化表格
  172. table.bootstrapTable({
  173. url: location.href,
  174. pk: 'id',
  175. sortName: 'id',
  176. searchFormVisible:false,
  177. showExport:false,
  178. commonSearch:false,
  179. search:false,
  180. columns: [
  181. [
  182. {field: 'rank', title: __('排名')},
  183. {field: 'order_no', title: __('订单号')},
  184. {field: 'nickname', title: __('用户名')},
  185. {field: 'amount', title: __('金额')},
  186. ]
  187. ]
  188. });
  189. Table.api.bindevent(table);
  190. },
  191. order_num_rank(){
  192. Table.api.init()
  193. var table = $("#table");
  194. // 初始化表格
  195. table.bootstrapTable({
  196. url: location.href,
  197. pk: 'id',
  198. sortName: 'id',
  199. searchFormVisible:false,
  200. showExport:false,
  201. commonSearch:false,
  202. search:false,
  203. columns: [
  204. [
  205. {field: 'rank', title: __('排名')},
  206. {field: 'nickname', title: __('用户名')},
  207. {field: 'num', title: __('笔数')},
  208. ]
  209. ]
  210. });
  211. Table.api.bindevent(table);
  212. },
  213. editor(){
  214. $('.btnAddSku').click(function (){
  215. let a=$($('.skuItem')[0].outerHTML),key=Date.now()
  216. a.find('.id').attr('name',`row[sku][${key}][id]`)
  217. a.find('.skuName').attr('name',`row[sku][${key}][name]`)
  218. //a.find('.skuNumStock').attr('name',a.find('.skuNumStock').eq(0).attr('name').replace(/_\d+/,key))
  219. a.find('.skuNumStock').each(function (){
  220. $(this).attr('name',$(this).attr('name').replace(/_\d+/,key))
  221. })
  222. $(this).parent().before(a[0].outerHTML.replace(/value="\S+"/ig,''))
  223. })
  224. $(document).on('click','.delSku,.delDetail',function (){
  225. let className=$(this).parent()[0].className
  226. if($(this).parent().parent().find(`.${className}`).length===1){
  227. return
  228. }
  229. $(this).parent().remove()
  230. })
  231. $('.btnAddDetail').click(function (){
  232. let a=$($(this).parent().prev()[0].outerHTML),key=Date.now(),m=$(this).data('m')
  233. a.find('.id').attr('name',`row[${m}][${key}][id]`)
  234. a.find('.name').attr('name',`row[${m}][${key}][name]`)
  235. a.find('.value').attr('name',`row[${m}][${key}][value]`)
  236. $(this).parent().before(a[0].outerHTML.replace(/value="\S+"/ig,''))
  237. })
  238. },
  239. api: {
  240. bindevent: function () {
  241. Form.api.bindevent($("form[role=form]"));
  242. }
  243. },
  244. bind_goods(){
  245. Controller.api.bindevent();
  246. $('.skuItem input[type=radio]').change(function (){
  247. getGoods(goods.id,this.value)
  248. })
  249. let getGoods=(goods_id,sku_id)=>{
  250. let idx=layer.load()
  251. $.post('',{e:'get',sku_id,goods_id},function (res){
  252. if(res.data.length) {
  253. $('#c-name').val(res.data.join(','))
  254. }else{
  255. $('#c-name').selectPageClear()
  256. }
  257. $('#c-name').selectPageRefresh();
  258. layer.close(idx)
  259. })
  260. }
  261. $('.firstSku').trigger('click')
  262. }
  263. };
  264. return Controller;
  265. });