popularProd.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. <!DOCTYPE html>
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
  3. <head>
  4. <th:block th:include="include :: header('今日热门列表')" />
  5. </head>
  6. <body class="gray-bg">
  7. <input type="hidden" id="mercProdId" value=""/>
  8. <input type="hidden" id="sort" value=""/>
  9. <div class="container-div">
  10. <div class="row">
  11. <div class="col-sm-12 search-collapse">
  12. <form id="formPopularProd">
  13. <div class="select-list">
  14. <ul>
  15. <li>
  16. <label>商品名称:</label>
  17. <input type="text" name="prodName"/>
  18. </li>
  19. <li>
  20. <label>属性名称:</label>
  21. <input type="text" name="attrName"/>
  22. </li>
  23. <li>
  24. <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search('formPopularProd','mercProd-table')"><i class="fa fa-search"></i>&nbsp;搜索</a>
  25. <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('formPopularProd','mercProd-table')"><i class="fa fa-refresh"></i>&nbsp;重置</a>
  26. </li>
  27. </ul>
  28. </div>
  29. </form>
  30. </div>
  31. <div class="btn-group-sm" id="toolbar" role="group">
  32. <a class="btn btn-success" onclick="selectMerchantProd()" shiro:hasPermission="business:popularProd:add">
  33. <i class="fa fa-plus"></i> 添加
  34. </a>
  35. <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="business:popularProd:remove">
  36. <i class="fa fa-remove"></i> 删除
  37. </a>
  38. </div>
  39. <div class="col-sm-12 select-table table-striped">
  40. <table id="mercProd-table" data-use-row-attr-func="true" data-reorderable-rows="true">
  41. </table>
  42. </div>
  43. </div>
  44. </div>
  45. <!-- 商品选择区域 -->
  46. <script id="selectMerchantProdDiv" type="text/template">
  47. <div>
  48. <div class="col-sm-12 search-collapse">
  49. <form id="formSelectMerchant">
  50. <div class="select-list" style="margin-left: 20px;">
  51. <ul>
  52. <li>
  53. <label>商户名称:</label>
  54. </li>
  55. <li>
  56. <input type="text" class="form-control" name="mercName"/>
  57. </li>
  58. <li>
  59. <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search('formSelectMerchant', 'merchant-table')"><i class="fa fa-search"></i>&nbsp;搜索</a>
  60. <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('formSelectMerchant', 'merchant-table')"><i class="fa fa-refresh"></i>&nbsp;重置</a>
  61. </li>
  62. </ul>
  63. </div>
  64. </form>
  65. </div>
  66. <div class="btn-group-sm" id="subToolbar" style="display: none">
  67. </div>
  68. <div class="col-sm-11 select-table table-striped">
  69. <table id="merchant-prod-table"></table>
  70. </div>
  71. </div>
  72. </script>
  73. <th:block th:include="include :: footer" />
  74. <th:block th:include="include :: bootstrap-table-reorder-rows-js" />
  75. <script th:inline="javascript">
  76. var editFlag = [[${@permission.hasPermi('business:popularProd:edit')}]];
  77. var removeFlag = [[${@permission.hasPermi('business:popularProd:remove')}]];
  78. var shelfFlags = [[${@dict.getType('shelf_flag')}]];
  79. var prefix = ctx + "business/popularProd";
  80. $(function() {
  81. var options = {
  82. id: "mercProd-table",
  83. url: prefix + "/list",
  84. createUrl: prefix + "/add",
  85. updateUrl: prefix + "/edit/{id}",
  86. removeUrl: prefix + "/remove",
  87. exportUrl: prefix + "/export",
  88. modalName: "今日热门",
  89. onReorderRow: function (dataRows, newRow, oldRow, el) {
  90. var datas = [];
  91. var sort = 1;
  92. dataRows.forEach(row => {
  93. var data= {
  94. "id": row.id,
  95. "sort": sort++,
  96. }
  97. datas.push(data);
  98. });
  99. $.ajax({
  100. url: prefix + "/editSort",
  101. contentType: 'application/json',
  102. data: JSON.stringify(datas),
  103. type: "post",
  104. processData: false,
  105. success: function(result) {
  106. $.operate.successCallback(result);
  107. }
  108. });
  109. $("#" + table.options.id).bootstrapTable('load', {
  110. total: el._xhr.responseJSON.total,
  111. rows: dataRows
  112. });
  113. return false;
  114. },
  115. columns: [
  116. {
  117. checkbox: true
  118. },
  119. {
  120. field: 'id',
  121. title: '主键',
  122. visible: false
  123. },
  124. {
  125. title: '商品名称',
  126. formatter: function (value, row, index) {
  127. return row.prodName + "(" + row.attrName + ")";
  128. }
  129. },
  130. {
  131. field: 'rowIndex',
  132. title: '排序',
  133. formatter: function (value, row, index) {
  134. var sort;
  135. if (!$("#sort").val()) {
  136. sort = 0;
  137. } else {
  138. sort = $("#sort").val()*1;
  139. }
  140. if ((index + 1) >= sort) {
  141. $("#sort").val(index + 1);
  142. }
  143. return index + 1;
  144. }
  145. },
  146. {
  147. title: '操作',
  148. align: 'center',
  149. formatter: function(value, row, index) {
  150. var actions = [];
  151. actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
  152. return actions.join('');
  153. }
  154. }
  155. ]
  156. };
  157. $.table.init(options);
  158. });
  159. function selectMerchantProd() {
  160. var rows = $.map($("#mercProd-table").bootstrapTable('getData'), function (row) {
  161. return $.common.getItemField(row, "mercProdId");
  162. });
  163. var content = $('#selectMerchantProdDiv').html();
  164. layer.open({
  165. type: 1,
  166. fix: false,
  167. maxmin: false,
  168. shade: 0.3,
  169. area: ['800px', '690px'],
  170. title: '选择热门商品',
  171. // 弹层外区域关闭
  172. shadeClose: true,
  173. success: function (layero, index) {
  174. var merchantOptions = {
  175. id: "merchant-prod-table",
  176. formId: "formSelectMerchant",
  177. url: ctx + "master/merchant/prod/list",
  178. modalName: "选择热门商品",
  179. showSearch: false,
  180. showColumns: false,
  181. showRefresh: false,
  182. showExport: false,
  183. showToggle: false,
  184. singleSelect: true,
  185. clickToSelect: true,
  186. toolbar: "subToolbar",
  187. pageSize: 10,
  188. pageList: [10, 20, 50],
  189. queryParams: queryParams,
  190. onCheck: onCheck,
  191. columns: [
  192. {
  193. checkbox: true,
  194. formatter: function (value, row, index) {
  195. var isExists = false;
  196. rows.forEach(prodId => {
  197. if (row.mercProdId === prodId) {
  198. isExists = true;
  199. }
  200. });
  201. if (isExists) {
  202. return {
  203. disabled: true
  204. };
  205. }
  206. }
  207. },
  208. {
  209. field: 'mercName',
  210. title: '商户名称'
  211. },
  212. {
  213. field: 'prodName',
  214. title: '商品名称'
  215. },
  216. {
  217. field: 'attrName',
  218. title: '属性名称'
  219. },
  220. {
  221. field: 'shelfFlag',
  222. title: '上架状态',
  223. formatter: function (value, row, index) {
  224. return $.table.selectDictLabel(shelfFlags, value);
  225. }
  226. },
  227. ]
  228. };
  229. $.table.init(merchantOptions);
  230. },
  231. content: content,
  232. btn: ['<i class="fa fa-check"></i> 确定', '<i class="fa fa-remove"></i> 关闭'],
  233. btn1: function () {
  234. var data = {
  235. "mercProdId": $("#mercProdId").val(),
  236. "sort": $("#sort").val() * 1 + 1,
  237. };
  238. $.ajax({
  239. url: prefix + "/add",
  240. data: data,
  241. type: "post",
  242. success: function(result) {
  243. if (result.code === web_status.SUCCESS) {
  244. $.modal.closeAll();
  245. $.modal.enable();
  246. $.modal.alertSuccess("添加成功。");
  247. refreshTab();
  248. } else if (result.code === web_status.WARNING) {
  249. $.modal.closeAll();
  250. $.modal.enable();
  251. $.modal.alertWarning(result.msg)
  252. } else {
  253. $.modal.closeAll();
  254. $.modal.enable();
  255. $.modal.alertError(result.msg);
  256. }
  257. }
  258. });
  259. }
  260. });
  261. }
  262. function queryParams(params) {
  263. var search = $.table.queryParams(params);
  264. search.shelfFlag = '1';
  265. return search;
  266. }
  267. function onCheck(row) {
  268. $("#mercProdId").val(row.mercProdId);
  269. }
  270. function refreshTab() {
  271. location.reload();
  272. }
  273. </script>
  274. </body>
  275. </html>