goods.old.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  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'),formatter: Table.api.formatter.content,width:200},
  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:'',title:'统计',table: table,events: Table.api.events.operate,formatter: Table.api.formatter.buttons,operate: false,
  45. buttons:[
  46. {
  47. name: 'detail',
  48. text: __('商品组合'),
  49. title: __('商品组合'),
  50. classname: 'btn btn-xs btn-primary btn-dialog',
  51. icon: 'fa',
  52. url: extend.bind_url,
  53. callback: function (data) {
  54. },
  55. visible: function (row) {
  56. return table.data('operate-bind_goods');
  57. }
  58. },
  59. {
  60. name: 'detail',
  61. text: __('数据统计'),
  62. title: __('数据统计'),
  63. classname: 'btn btn-xs btn-info btn-dialog',
  64. icon: 'fa',
  65. url: extend.statistics_url,
  66. extend:`data-area='["800px","80%"]'`,
  67. callback: function (data) {
  68. },
  69. visible: function (row) {
  70. return table.data('operate-buy_rank');
  71. }
  72. },
  73. {
  74. name: 'detail',
  75. text: __('采购金额排名'),
  76. title: __('采购金额排名'),
  77. classname: 'btn btn-xs btn-info btn-dialog',
  78. icon: 'fa',
  79. url: extend.amount_rank_url,
  80. extend:`data-area='["800px","80%"]'`,
  81. callback: function (data) {
  82. },
  83. visible: function (row) {
  84. return table.data('operate-buy_rank');
  85. }
  86. },
  87. {
  88. name: 'detail',
  89. text: __('订单金额排名'),
  90. title: __('订单金额排名'),
  91. classname: 'btn btn-xs btn-info btn-dialog',
  92. icon: 'fa',
  93. url: extend.order_amount_rank_url,
  94. extend:`data-area='["800px","80%"]'`,
  95. callback: function (data) {
  96. },
  97. visible: function (row) {
  98. return table.data('operate-order_amount_rank');
  99. }
  100. },
  101. {
  102. name: 'detail',
  103. text: __('订单笔数排名'),
  104. title: __('订单笔数排名'),
  105. classname: 'btn btn-xs btn-info btn-dialog',
  106. icon: 'fa',
  107. url: extend.order_num_rank_url,
  108. extend:`data-area='["800px","80%"]'`,
  109. callback: function (data) {
  110. },
  111. visible: function (row) {
  112. return table.data('operate-order_num_rank');
  113. }
  114. },
  115. ]},
  116. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate},
  117. ]
  118. ],
  119. onLoadSuccess(){
  120. setTimeout(()=>{
  121. $('.btn-editone').attr('data-area','["100%","100%"]')
  122. },100)
  123. }
  124. });
  125. $(document).on('click','.bindGoods',function (){
  126. let id=$(this).data('id')
  127. Fast.api.open(extend.bind_url+`/id/${id}`,'绑定商品')
  128. })
  129. // 为表格绑定事件
  130. Table.api.bindevent(table);
  131. },
  132. add: function () {
  133. this.editor()
  134. Controller.api.bindevent();
  135. },
  136. edit: function () {
  137. this.editor()
  138. Controller.api.bindevent();
  139. },
  140. goods_statistics(){
  141. //Controller.api.bindevent();
  142. Form.events.daterangepicker($('.form'))
  143. $('.doSearch').click(()=>{
  144. layer.load()
  145. })
  146. },
  147. goods_buy_rank(){
  148. Table.api.init()
  149. var table = $("#table");
  150. // 初始化表格
  151. table.bootstrapTable({
  152. url: location.href,
  153. pk: 'id',
  154. sortName: 'id',
  155. searchFormVisible:true,
  156. showExport:false,
  157. commonSearch:true,
  158. search:false,
  159. columns: [
  160. [
  161. {field: 'rank', title: __('排名'),operate:false,},
  162. {field: 'nickname', title: __('用户名'),operate:false,},
  163. {field: 'amount', title: __('金额'),operate:false,},
  164. {field: 'date', title: __('时间'),operate:'range',addClass:'datetimerange',visible:false},
  165. ]
  166. ]
  167. });
  168. Table.api.bindevent(table);
  169. },
  170. order_amount_rank(){
  171. Table.api.init()
  172. var table = $("#table");
  173. // 初始化表格
  174. table.bootstrapTable({
  175. url: location.href,
  176. pk: 'id',
  177. sortName: 'id',
  178. searchFormVisible:true,
  179. showExport:false,
  180. commonSearch:true,
  181. search:false,
  182. columns: [
  183. [
  184. {field: 'rank', title: __('排名'),operate: false,},
  185. {field: 'order_no', title: __('订单号'),operate: false,},
  186. {field: 'nickname', title: __('用户名'),operate: false,},
  187. {field: 'amount', title: __('金额'),operate: false,},
  188. {field: 'date', title: __('时间'),operate:'range',addClass:'datetimerange',visible:false},
  189. ]
  190. ]
  191. });
  192. Table.api.bindevent(table);
  193. },
  194. order_num_rank(){
  195. Table.api.init()
  196. var table = $("#table");
  197. // 初始化表格
  198. table.bootstrapTable({
  199. url: location.href,
  200. pk: 'id',
  201. sortName: 'id',
  202. searchFormVisible:true,
  203. showExport:false,
  204. commonSearch:true,
  205. search:false,
  206. columns: [
  207. [
  208. {field: 'rank', title: __('排名'),operate: false,},
  209. {field: 'nickname', title: __('用户名'),operate: false,},
  210. {field: 'num', title: __('笔数'),operate: false,},
  211. {field: 'date', title: __('时间'),operate:'range',addClass:'datetimerange',visible:false},
  212. ]
  213. ]
  214. });
  215. Table.api.bindevent(table);
  216. },
  217. editor(){
  218. $('.btnAddSku').click(function (){
  219. let key=Date.now()
  220. let a=$($('.skuItem')[0].outerHTML.replace(/\[_\d+]/g,`[_${key}]`))
  221. $(this).parent().before(a[0].outerHTML.replace(/value="\S+"/ig,''))
  222. //添加价格
  223. let html=$('.amountItem')[0].outerHTML.replace(/\[_\d+]/g,`[_${key}]`)
  224. let item=$(html)
  225. item.find('.itemName').text('')
  226. item.find('.amountItemOne').each(function (idx){
  227. if(idx>0){
  228. $(this).remove()
  229. }
  230. })
  231. $('.amountSet').append(item[0].outerHTML)
  232. item.find('.skuBase').remove()
  233. $('.amountSetKill').append(item[0].outerHTML.replace(/\[amount_ladder]/g,'[amount_kill_ladder]'))
  234. })
  235. $('.btnAddSize').click(function (){
  236. let key=Date.now()
  237. let a=$($('.skuItem')[0].outerHTML.replace(/\[_\d+]/g,`[_${key}]`))
  238. $(this).parent().before(a[0].outerHTML.replace(/value="\S+"/ig,''))
  239. //添加价格
  240. let html=$('.amountItem')[0].outerHTML.replace(/\[_\d+]/g,`[_${key}]`)
  241. let item=$(html)
  242. item.find('.itemName .itemSize').text('')
  243. item.find('.itemName .itemSpec').text('')
  244. item.find('.amountItemOne').each(function (idx){
  245. if(idx>0){
  246. $(this).remove()
  247. }
  248. })
  249. $('.amountSet').append(item[0].outerHTML)
  250. item.find('.skuBase').remove()
  251. $('.amountSetKill').append(item[0].outerHTML.replace(/\[amount_ladder]/g,'[amount_kill_ladder]'))
  252. })
  253. $(document).on('click','.delSku,.delDetail',function (){
  254. let className=$(this).parent()[0].className
  255. if($(this).parent().parent().find(`.${className}`).length===1){
  256. return
  257. }
  258. $('.amountItem').eq($(this).parent().index()).remove()
  259. $(this).parent().remove()
  260. })
  261. $(document).on('click','.delAmountItem',function (){
  262. let className=$(this).parent()[0].className
  263. if($(this).parent().parent().find(`.${className}`).length===1){
  264. return
  265. }
  266. $(this).parent().remove()
  267. })
  268. $('.btnAddDetail').click(function (){
  269. let a=$($(this).parent().prev()[0].outerHTML),key=Date.now(),m=$(this).data('m')
  270. a.find('.id').attr('name',`row[${m}][${key}][id]`)
  271. a.find('.name').attr('name',`row[${m}][${key}][name]`)
  272. a.find('.value').attr('name',`row[${m}][${key}][value]`)
  273. $(this).parent().before(a[0].outerHTML.replace(/value="\S+"/ig,''))
  274. })
  275. $(document).on('input','.skuName',function (){
  276. let val=this.value,idx=$(this).parent().index()
  277. $('.amountSet .amountItem').eq(idx).find('.itemName').text(val)
  278. $('.amountSetKill .amountItem').eq(idx).find('.itemName').text(val)
  279. })
  280. $(document).on('click','.addAmountDetail',function (){
  281. let key=Date.now()
  282. let a=$($(this).prev()[0].outerHTML.replace(/\[__\d+]/g,`[__${key}]`))
  283. $(this).before(a[0].outerHTML.replace(/value="\S+"/ig,''))
  284. })
  285. },
  286. api: {
  287. bindevent: function () {
  288. Form.api.bindevent($("form[role=form]"));
  289. }
  290. },
  291. bind_goods(){
  292. Controller.api.bindevent();
  293. $('.skuItem input[type=radio]').change(function (){
  294. getGoods(goods.id,this.value)
  295. })
  296. let getGoods=(goods_id,sku_id)=>{
  297. let idx=layer.load()
  298. $.post('',{e:'get',sku_id,goods_id},function (res){
  299. if(res.data.length) {
  300. $('#c-name').val(res.data.join(','))
  301. }else{
  302. $('#c-name').selectPageClear()
  303. }
  304. $('#c-name').selectPageRefresh();
  305. layer.close(idx)
  306. })
  307. }
  308. $('.firstSku').trigger('click')
  309. }
  310. };
  311. return Controller;
  312. });